From bc8fbb19668388f2a50cd8122cd994777925e3ab Mon Sep 17 00:00:00 2001 From: "Tristan Poland (Trident_For_U)" <34868944+tristanpoland@users.noreply.github.com> Date: Fri, 7 Mar 2025 17:11:20 -0500 Subject: [PATCH 1/2] Added docker files, and added styles --- .dockerignore | 34 + compose.yaml | 9 + index.html | 1 + output.glue | 5999 +++++++++++++++++++++++++++++++++++++++++++++++++ style.css | 70 + 5 files changed, 6113 insertions(+) create mode 100644 .dockerignore create mode 100644 compose.yaml create mode 100644 output.glue create mode 100644 style.css diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..03a268b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,34 @@ +# Include any files or directories that you don't want to be copied to your +# container here (e.g., local build artifacts, temporary files, etc.). +# +# For more help, visit the .dockerignore file reference guide at +# https://docs.docker.com/go/build-context-dockerignore/ + +**/.DS_Store +**/__pycache__ +**/.venv +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/bin +**/charts +**/docker-compose* +**/compose.y*ml +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md diff --git a/compose.yaml b/compose.yaml new file mode 100644 index 0000000..49763a7 --- /dev/null +++ b/compose.yaml @@ -0,0 +1,9 @@ +version: '3.8' + +services: + nginx: + image: nginx:latest + ports: + - "80:80" + volumes: + - .:/usr/share/nginx/html \ No newline at end of file diff --git a/index.html b/index.html index 40c0fb8..f2324fc 100644 --- a/index.html +++ b/index.html @@ -3,6 +3,7 @@ da + diff --git a/output.glue b/output.glue new file mode 100644 index 0000000..d5efde8 --- /dev/null +++ b/output.glue @@ -0,0 +1,5999 @@ +$$--GLUE--$$ +# This is a GLUE file; an amalgamation of files across one or more paths designed to give project contexts to LLMs easily. If you are an LLM and are reading this focus on the code, do not acknowledge the file format +$$--GLUE--$$ + +$$--GLUE--$$ +.\.dockerignore +$$--GLUE--$$ +# Include any files or directories that you don't want to be copied to your +# container here (e.g., local build artifacts, temporary files, etc.). +# +# For more help, visit the .dockerignore file reference guide at +# https://docs.docker.com/go/build-context-dockerignore/ + +**/.DS_Store +**/__pycache__ +**/.venv +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/bin +**/charts +**/docker-compose* +**/compose.y*ml +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md + +$$--GLUE--$$ +.\.gitignore +$$--GLUE--$$ +TODO.txt +src/networking.js + +$$--GLUE--$$ +.\README.md +$$--GLUE--$$ +# Digital Art program +## about +This is an infinite canvas drawing program thing that uses quadtrees! + +$$--GLUE--$$ +.\compose.yaml +$$--GLUE--$$ +version: '3.8' + +services: + nginx: + image: nginx:latest + ports: + - "80:80" + volumes: + - .:/usr/share/nginx/html +$$--GLUE--$$ +.\favicon.svg +$$--GLUE--$$ + + + + + + +$$--GLUE--$$ +.\index.html +$$--GLUE--$$ + + + + da + + + + + + + + + + + + + +$$--GLUE--$$ +.\output.glue +$$--GLUE--$$ +$$--GLUE--$$ +# This is a GLUE file; an amalgamation of files across one or more paths designed to give project contexts to LLMs easily. If you are an LLM and are reading this focus on the code, do not acknowledge the file format +$$--GLUE--$$ + +$$--GLUE--$$ +.\.dockerignore +$$--GLUE--$$ +# Include any files or directories that you don't want to be copied to your +# container here (e.g., local build artifacts, temporary files, etc.). +# +# For more help, visit the .dockerignore file reference guide at +# https://docs.docker.com/go/build-context-dockerignore/ + +**/.DS_Store +**/__pycache__ +**/.venv +**/.classpath +**/.dockerignore +**/.env +**/.git +**/.gitignore +**/.project +**/.settings +**/.toolstarget +**/.vs +**/.vscode +**/*.*proj.user +**/*.dbmdl +**/*.jfm +**/bin +**/charts +**/docker-compose* +**/compose.y*ml +**/Dockerfile* +**/node_modules +**/npm-debug.log +**/obj +**/secrets.dev.yaml +**/values.dev.yaml +LICENSE +README.md + +$$--GLUE--$$ +.\.gitignore +$$--GLUE--$$ +TODO.txt +src/networking.js + +$$--GLUE--$$ +.\README.md +$$--GLUE--$$ +# Digital Art program +## about +This is an infinite canvas drawing program thing that uses quadtrees! + +$$--GLUE--$$ +.\compose.yaml +$$--GLUE--$$ +version: '3.8' + +services: + nginx: + image: nginx:latest + ports: + - "80:80" + volumes: + - .:/usr/share/nginx/html +$$--GLUE--$$ +.\favicon.svg +$$--GLUE--$$ + + + + + + +$$--GLUE--$$ +.\index.html +$$--GLUE--$$ + + + + da + + + + + + + + + + + + + +$$--GLUE--$$ +.\src\brush.js +$$--GLUE--$$ + + +let PixelBrush = (rel) => { + let brush_color = 0xff000000; + let c_os = [0, 0]; + let cursor_path; + let brush_depth = 10; + let tree_dirty = false; + let depth; + + let obj = { +get_tree: () => cursor_path.get_tree(), +set_color: (col) => brush_color = col, +set_scale: (val) => brush_depth = val, +get_surface: () => [cursor_path.get_tree(), cursor_path.get_root()], +dirty: () => tree_dirty, //TODO find a better way? +clean: () => tree_dirty = false, +set_surface: (qtree, node) => cursor_path = QtreePath(qtree, node), +set_pos: (p, dep, zm) => { + depth = dep; + set_path(cursor_path, 1, p, rel ? brush_depth : brush_depth-depth); + c_os = [0, 0]; +}, +update_pos: (p, k) => { + let os = add(smul(rel ? 2**brush_depth : 2**(brush_depth-depth), k), c_os); + let uos = os.map(v => v | 0); + + cursor_path.set_cur(qtree.color(brush_color)); + cursor_path.add(uos.map(BigInt)); + + c_os = sub(os, uos); + tree_dirty = true; +} + }; + + return obj; +} + + +let log = (fn) => (...x) => (console.log(...x), fn(...x)); +let line_sdf = (p, a, b) => { + let pa = sub(p, a), ba = sub(b, a); + + if(ba.every(v => v == 0)) + return length(pa); + + let h = clamp(dot(pa, ba)/dot(ba,ba), 0.0, 1.0); + return length(add(pa, smul(-h, ba))); +}; + +let SdfBrush = (rel = false, sdf = (p1, p2, width) => (p) => line_sdf(p, p1, p2) - width) => { + let c_os = [0, 0]; + let c_pos = [0, 0]; + + let brush_color = 0xff000000; + let brush_depth = 10; + let brush_width = 0.001; + let tree_dirty = false; + + let depth; + let zoom; + let path; + + let obj = { +get_tree: () => path.get_tree(), +set_color: (col) => brush_color = col, +set_scale: (val) => brush_depth = val, +set_width: (val) => brush_width = val, +get_surface: () => [path.get_tree(), path.get_root()], +dirty: () => tree_dirty, //TODO find a better way? +clean: () => tree_dirty = false, +set_surface: (qt, nd) => { + path = QtreePath(qt, nd); +}, +set_pos: (p, dep, zm) => { + depth = dep; + zoom = zm; + c_pos = p; + c_os = [0, 0]; + set_path(path, 1, p, rel ? brush_depth : brush_depth - depth); +}, +update_pos: (p, k) => { + let disp_width = rel ? brush_width * zoom : brush_width; + let max_length = disp_width*4 + length(k); + + let os = add(smul(rel ? 2**brush_depth : 2**(brush_depth-depth), k), c_os); + let uos = os.map(v => v | 0); + + //breaks when depth_bound <= 2 + let depth_bound = (-Math.log2(max_length) | 0); + + + let ps = [c_os, os]; + + + let stack = []; + let de = rel ? brush_depth : brush_depth-depth; + if(depth_bound > 2){ + while(path.get_depth() >= depth_bound){ + let ind = path.cur_ind(); + ps = ps.map(v => smul(0.5, add(v, [!!(ind&1), !!(ind&2)]))); + stack.push(ind); + path.asc(); + } + + + de -= path.get_depth(); + let width = disp_width * 2**(brush_depth-de); + let in_range = (a, b, v) => v > a && v < b; + + let quad = [ + ps[0][0] < 4*width, + ps[0][1] < 4*width + ].map(v => BigInt(v)); + + ps = ps.map(v => smul(0.5, sub(v, quad.map(v => !v)))); + + path.add(smul(-1n, quad)); + + set_tlnode(path, render_sdf( + path.get_tree(), + get_tlnode(path), + de, + sdf(...ps, width), + qtree.color(brush_color) + )); + + path.add(quad); + + }else{ + path.get_root(); + while(path.get_depth()){ + stack.push(path.cur_ind()); + path.asc(); + } + + path.set_cur(render_sdf( + path.get_tree(), + path.get_root(), + de, + sdf(c_pos, p, rel ? brush_width * zoom : brush_width * 2**depth), + qtree.color(brush_color) + )); + } + + while(stack.length) + path.desc(stack.pop()); + + c_os = sub(os, uos); + c_pos = p; + path.add(uos.map(BigInt)); + tree_dirty = true; +} + }; + + return obj; +} + + + + + +let EyeDropper = (cb) => { + let c_os = [0, 0]; + let cursor_path; + let brush_depth = 10; + let tree_dirty = false; + let depth; + + let obj = { +get_tree: () => cursor_path.get_tree(), +set_color: (col) => brush_color = col, +set_scale: (val) => brush_depth = val, +get_surface: () => [cursor_path.get_tree(), cursor_path.get_root()], +dirty: () => tree_dirty, //TODO find a better way? +clean: () => tree_dirty = false, +set_surface: (qtree, node) => cursor_path = QtreePath(qtree, node), +set_pos: (p, dep, zm) => { + depth = dep; + set_path(cursor_path, 1, p, brush_depth); + c_os = [0, 0]; +}, +update_pos: (p, k) => { + let os = add(smul(2**brush_depth, k), c_os); + let uos = os.map(v => v | 0); + + cb(cursor_path.cur()); + cursor_path.add(uos.map(BigInt)); + + c_os = sub(os, uos); + tree_dirty = true; +} + }; + + return obj; +} + + +let fill = (path, c1, color) => { + let stack = []; + + while(path.get_depth() > 0){ + stack.push(path.cur_ind()); + path.asc(); + + if(path.cur().ind != c1.ind){ + path.desc(stack.pop()); + break; + } + } + + path.set_cur(color); + + let queue = [[0n, 1n, 0n], [1n, 0n, 0n], [-1n, 0n, 0n], [0n, -1n]]; + + let pos = [0n, 0n]; + while(queue.length){ + let cur = queue.pop(); + + } +} + +let BucketFill = () => { + let cursor_path; + let brush_color; + let brush_depth = 10; + let tree_dirty = false; + let depth; + + let obj = { +get_tree: () => cursor_path.get_tree(), +set_color: (col) => brush_color = col, +set_scale: (val) => brush_depth = val, +get_surface: () => [cursor_path.get_tree(), cursor_path.get_root()], +dirty: () => tree_dirty, //TODO find a better way? +clean: () => tree_dirty = false, +set_surface: (qtree, node) => cursor_path = QtreePath(qtree, node), +set_pos: (p, dep, zm) => { + depth = dep; +}, +update_pos: (p, k) => { + set_path(cursor_path, 1, p, brush_depth); + fill(cursor_path, cursor_path.cur(), cursor_path.get_tree().color(brush_color)); + + tree_dirty = true; +} + }; + + return obj; +} + + + +$$--GLUE--$$ +.\src\component.js +$$--GLUE--$$ + +/*CPS stuff*/ +let all = (s, ...x) => x.reduce((f, g) => (...x) => f(g(...x)), s); +let id = (x) => x; + +let to_cps = (fn) => (nxt) => (...x) => nxt(fn(...x)); +let un_cps = (fn) => fn(id); + + + + +/*CSS stuff*/ +let gen_sheet = document.createElement("style"); +document.head.appendChild(gen_sheet); +let gen_styles = gen_sheet.sheet; + +let gen_rule = (sel, style) => gen_styles.insertRule(`${sel} { ${Object.entries(style).map(v=>v[0].replace(/([A-Z])/g,"-$1") + ":" + v[1]).join(";")}; } \n`); +let gen_class = (name, style) => gen_rule("." + name, style); + +gen_class("border", { + "border-color": "grey", + "border-style": "solid", + "border-radius": "0.5em", + "border-width": "0.1em", + "padding": "0.45em", + "margin": "0.45em", + "overflow": "visible", + "width": "calc(100% - 2*(0.45em) - 2*(0.1em) - 2*(0.45em))", + "height": "calc(100% - 2*(0.45em) - 2*(0.1em) - 2*(0.45em))" +}); + +gen_class("vpart", { + "display": "flex", + "flex-direction": "column" +}); + +gen_class("hpart", { + "display": "flex", + "flex-direction": "row" +}); + +gen_class("partBlock", { + "flex": "1" +}); + +gen_class("Block", { + "min-height": "100%", + "width": "100%", + "padding": "0", + "margin": "0", + "border": "0" +}); + +gen_rule("body", { + "color": "grey", + "width": "100vw", + "height": "100vh", + "margin": "0", + "padding": "0", + "overflow": "hidden", + "font-size": "12px" +}); + +gen_rule("*", { + "touch-action": "none" +}); + + + +let el = (type) => to_cps(() => document.createElement(type)); + +let Children = (...x) => to_cps((el) => { + el.replaceChildren(...x.filter(v => v != null).map(v => un_cps(v)())); + return el; +}); + +let Style = (style) => to_cps((el) => { + Object.entries(style).forEach(v=>el.style[v[0]] = v[1]) + return el; +}); + +let Class = (cl) => to_cps((el) => { + el.classList.add(cl); + return el; +}); + +let Text = (text) => to_cps((el) => { + el.innerText = text; + return el; +}); + +let Attr = (name, value) => to_cps((el) => { + el[name] = value; + return el; +}); + +let Event = (name, cb) => to_cps((el) => { + el.addEventListener(name, cb); + return el; +}); + + + + + + + + +let col = (...nd) => all( + Block(el("div")), + Children(...nd) +) + +let row = (...nd) => all( + Block(el("div")), + Style({ whiteSpace: "nowrap" }), + Children(...nd.map(v=> + all( + v, + Style({ + display: "inline-block", + whiteSpace: "wrap" + }) + ) + )) +); + +let Overlap = (...nd) => all( + Block(el("div")), + Style({position: "relative"}), + Children(...nd.map(v=> + all( + v, + Style({position: "absolute"})) + ) + ) +); + +let Button = (nd, cb) => all( + nd, + Style({userSelect: "none", cursor: "pointer"}), + Event("click", cb) +); + + +let vpart = (...w) => (...nd) => all( + Block(el("div")), + Class("vpart"), + Children(...nd.map((v,i)=> + w[i] != null + ? Rect(null, w[i])(v) + : all(Block(el("div")), Class("partBlock"), Children(v)) + )) +); + +let hpart = (...w) => (...nd) => all( + Block(el("div")), + Class("hpart"), + + Children(...nd.map((v,i)=> + w[i] != null + ? Rect(w[i], null)(v) + : all(Block(el("div")), Class("partBlock"), Children(v)) + ))); + +let Center = (w, h) => nd => +vpart(null, h, null)( + null, + hpart(null, w, null)( + null, + nd, + null + ), + null +); + +let Body = nd => all( + el("body"), + Children(nd) +); + +let Block = nd => all( + nd, + Class("Block"), +); + +let Rect = (w, h) => nd => all( + Block(el("div")), + Style({ + width: `calc(${w})`, + height: `calc(${h})`, + "min-height": "auto" + }), + Children(nd) +); + +let Scroll = nd => all( + Rect("100%", "100%")(el("div")), + Style({overflow: "auto"}), + Children(nd) +); + +let ScrollX = nd => all( + Rect("100%", "100%")(el("div")), + Style({overflow: "visible", overflowX: "auto"}), + Children(nd) +); + +let ScrollY = nd => all( + Rect("100%", "100%")(el("div")), + Style({overflow: "visible", overflowY: "auto"}), + Children(nd) +); + + + + + + + + + + + +let Border = nd => all( + el("div"), + Class("border"), + Children(nd) +); + +let vresize = nd => all( + Block(el("div")), + Style({ + resize: "vertical", + maxHeight: "100%" + }), + Children(nd) +); + +let hresize = nd => all( + Block(el("div")), + Style({ + resize: "horizontal", + maxWidth: "100%" + }), + Children(nd) +); + + +$$--GLUE--$$ +.\src\graphics.js +$$--GLUE--$$ + +let gl_load_shader = (gl, type, source) => { + let shader = gl.createShader(type); + gl.shaderSource(shader, source); + gl.compileShader(shader); + + if(!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { + console.log(gl.getShaderInfoLog(shader)); + gl.deleteShader(shader); + return null; + } + + return shader; +} + +let gl_init_shader = (gl, vsource, fsource) => { + let vertex_shader = gl_load_shader(gl, gl.VERTEX_SHADER, vsource); + let fragment_shader = gl_load_shader(gl, gl.FRAGMENT_SHADER, fsource); + + let shader_program = gl.createProgram(); + gl.attachShader(shader_program, vertex_shader); + gl.attachShader(shader_program, fragment_shader); + gl.linkProgram(shader_program); + + if(!gl.getProgramParameter(shader_program, gl.LINK_STATUS)) { + console.log(gl.getShaderInfoLog(shader)); + return null; + } + + return shader_program; +} + +let FragmentRenderer = (gl, fsource) => { + let shader_program = gl_init_shader(gl, +` +precision highp float; +attribute vec2 aVertexPosition; + +void main(){ + gl_Position = vec4(aVertexPosition, 0.0, 1.0); +} +`, fsource); + + + let pos_buf = gl.createBuffer(); + let texture = {}; + let uniform = {}; + let textures = 0; + let tex_bufs = []; + + let active_texture; + + let positions = [1, 1, -1, 1, 1, -1, -1, -1]; + + let obj = { +set_active: () => { + gl.useProgram(shader_program); + gl.bindBuffer(gl.ARRAY_BUFFER, pos_buf); + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW); + gl.bindBuffer(gl.ARRAY_BUFFER, pos_buf); + + let vert_pos = gl.getAttribLocation(shader_program, "aVertexPosition"); + gl.vertexAttribPointer( + vert_pos, + 2, + gl.FLOAT, + false, + 0, + 0 + ); + + gl.enableVertexAttribArray(vert_pos); + + active_texture = null; +}, +draw: () => { + tex_bufs.forEach(v => v.flush()); + gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); +}, +set_uniform: (name, type, value) => { + uniform[name] ??= gl.getUniformLocation(shader_program, name); + + let type_lut = { + "float": (loc, x) => gl.uniform1f(loc, x), + "vec2": (loc, v) => gl.uniform2f(loc, ...v), + "vec3": (loc, v) => gl.uniform3f(loc, ...v), + "vec4": (loc, v) => gl.uniform4f(loc, ...v), + "ivec4": (loc, v) => gl.uniform4i(loc, ...v), + "mat4": (loc, v) => gl.uniformMatrix4fv(loc, false, v), + "int": (loc, x) => gl.uniform1i(loc, x) + }; + + type_lut[type](uniform[name], value); +}, +set_texture: (name, w, h, arr) => { + let tex = texture[name] ?? (texture[name] = { + ind: ++textures, + buf: gl.createTexture() + }); + + tex.res = [w, h]; + + let loc = gl.getUniformLocation(shader_program, name) + + obj.set_uniform(name, "int", tex.ind); + + gl.activeTexture(gl.TEXTURE0 + tex.ind); + gl.bindTexture(gl.TEXTURE_2D, tex.buf); + active_texture = tex; + + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, w, h, 0, gl.RGBA, gl.UNSIGNED_BYTE, arr); +}, +set_sub_texture: (name, [x, y], [w, h], arr) => { + if(active_texture != texture[name]){ + gl.bindTexture(gl.TEXTURE_2D, texture[name].buf); + active_texture = texture[name]; + } + gl.texSubImage2D(gl.TEXTURE_2D, 0, x, y, w, h, gl.RGBA, gl.UNSIGNED_BYTE, arr); +}, +set_texture_buf: (name, arr) => { + let num = arr.length/4; + let sr = (Math.log2(num)/2 + 1) | 0; + let [w, h] = [2**sr,(num/2**sr | 0) + !!(num % 2**sr)]; + + obj.set_texture(name, w, h, new Uint8Array(arr.buffer)); + obj.set_uniform(name + "_lt", "int", sr); + obj.set_uniform(name + "_res", "vec2", [w, h]); +}, +write_buf: (name, start, arr) => { + let [w, h] = texture[name].res; + + let tl = [start % w, start / w | 0]; + if(start % w != 0){ + let cw = Math.min(w - tl[0], arr.length/4); + obj.set_sub_texture(name, tl, [cw, 1], arr); + tl = [0, tl[1] + 1]; + arr = arr.subarray(cw * 4); + } + + + let ch = arr.length/4/w | 0; + if(ch) + obj.set_sub_texture(name, [tl[0], tl[1]], [w, ch], arr); + + tl = [0, tl[1]+ch]; + arr = arr.subarray(ch * w * 4); + let cw = arr.length/4; + if(cw) + obj.set_sub_texture(name, tl, [cw, 1], arr); +}, +read_buf: (name, start, end) => { + let buf = new Uint8Array(end - start); + let [w, h] = texture[name].res; + + let arr = buf; + + let tl = [start % w, start / w | 0]; + if(start % w != 0){ + let cw = Math.min(w - tl[0], arr.length/4); + obj.read_pixels(name, tl, [cw, 1], arr); + tl = [0, tl[1] + 1]; + arr = arr.subarray(cw * 4); + } + + + let ch = arr.length/4/w | 0; + if(ch) + obj.read_pixels(name, [tl[0], tl[1]], [w, ch], arr); + + tl = [0, tl[1]+ch]; + arr = arr.subarray(ch * w * 4); + let cw = arr.length/4; + if(cw) + obj.read_pixels(name, tl, [cw, 1], arr); + + return buf; +}, +GpuUint8: (name) => { + let w = gl.getParameter(gl.MAX_TEXTURE_SIZE)/4; + rend.set_texture_buf(name, new Uint8Array(w*w*4).fill(0)); + + let buf = DynUint8(w); + let end = 0; + + let arr = new Uint8Array(4); + arr_ind = 0; + + let obj = { +set: (ind, val) => { + if(ind >= end){ + if(ind - end >= 1024) + obj.flush(); + buf.set(ind - end, val); + return val; + } + + arr[arr_ind++] = val; + if(arr_ind == 4){ + arr_ind = 0; + rend.write_buf(name, ind/4 | 0, arr); + } + + return val; +}, +push: (val) => { + if(buf.get_end() >= 1024) + obj.flush(); + buf.push(val); +}, +flush: () => { + if(buf.get_end() != 0){ + rend.write_buf(name, end/4, buf.get_buffer().subarray(0, buf.get_end())); + end += buf.get_end(); + buf = DynUint8(); + } +}, +clear: () => { + buf.clear(); + arr_ind = end = 0; +}, +get_end: () => end + buf.get_end() + } + + tex_bufs.push(obj); + return obj; +} + }; + + return obj; +} + + + +$$--GLUE--$$ +.\src\input.js +$$--GLUE--$$ + +let Pointer = (el, init, ev = init, del = init) => { + let to_point = (v) => ({ + id: v.pointerId, + x: v.offsetX, + y: v.offsetY, + force: v.pressure, + time: v.timeStamp, + buttons: v.buttons + }); + + el.addEventListener("pointerdown", (e) => init(to_point(e))); + el.addEventListener("pointermove", (e) => { + e.getCoalescedEvents /* only works in https */ + ? e.getCoalescedEvents().forEach(v => ev(to_point(v))) + : ev(to_point(e)) + }); + el.addEventListener("pointerup", (e) => del(to_point(e))); + el.addEventListener("pointerleave", (e) => del(to_point(e))); + el.addEventListener("pointerout", (e) => del(to_point(e))); +} + +let Keyboard = (el, down, up) => { + el.addEventListener("keydown", (e) => down(e.keyCode)); + el.addEventListener("keyup", (e) => up(e.keyCode)); +} + + + +let mouse_pan = (el, get_pos, set_pos) => { + let start; + let state, translate, poll; + + translate = (ev) => { + let pos = get_pos(); + set_pos([pos[0] + ev.x - start[0], pos[1] + start[1] - ev.y]); + start = [ev.x, ev.y]; + + if(ev.buttons != 4){ + state = poll; + } + }; + + poll = (ev) => { + if(ev.buttons == 4){ + start = [ev.x, ev.y]; + state = translate; + } + }; + + state = poll; + return Pointer(el, (ev) => state(ev)); +} + + +let mouse_wheel = (el, cb) => { + el.addEventListener("wheel", (e) => cb([e.clientX, e.clientY], 2*Math.atan(e.deltaY)/Math.PI), {passive: true}); +} + + + + + + + + +let touch_pan = (el, get_pos, set_pos) => { + let pointers = {}; + let start; + let state, translate, poll; + + let get_points = () => Object.entries(pointers).map(v => v[1]); + let get_avg_pos = () => ((points) => points.reduce((a, b) => [a[0] + b[0], a[1] + b[1]]).map(v => v / points.length)) + (get_points()); + + translate = (ev) => { + pointers[ev.id] = [ev.x, ev.y]; + + let pos = get_pos(); + let avg_pos = get_avg_pos(); + set_pos([pos[0] + avg_pos[0] - start[0], pos[1] + start[1] - avg_pos[1]]); + start = avg_pos; + + }; + + poll = (ev) => {}; + + let add_pointer = (ev) => { + pointers[ev.id] = [ev.x, ev.y]; + + if(Object.keys(pointers).length == 2){ + start = get_avg_pos(); + state = translate; + }else{ + state = poll; + } + }; + + let del_pointer = (ev) => { + delete pointers[ev.id]; + + if(Object.keys(pointers).length != 2) + state = poll; + }; + + state = poll; + return Pointer(el, add_pointer, (ev) => state(ev), del_pointer); +} + +let touch_pinch = (el, cb) => { //TODO figure out how to fix paning while pinching :/ + let pointers = {}; + let start; + let state, translate, poll; + + let get_points = () => Object.entries(pointers).map(v => v[1]); + let get_avg_pos = () => ((points) => points.reduce((a, b) => [a[0] + b[0], a[1] + b[1]]).map(v => v / points.length)) + (get_points()); + let dist = (a, b) => { + let v = [a[0] - b[0], a[1] - b[1]]; + return (v[0]*v[0] + v[1]*v[1])**0.5; + } + + translate = (ev) => { + pointers[ev.id] = [ev.x, ev.y]; + + let n_dist = dist(...get_points()); + + let pinch = Math.sign((start - n_dist)/7 | 0); //TODO dynamically find value + + if(pinch){ + cb(get_avg_pos(), Math.sign(pinch | 0)) + start = n_dist; + } + + }; + + poll = (ev) => {}; + + let add_pointer = (ev) => { + pointers[ev.id] = [ev.x, ev.y]; + + if(Object.keys(pointers).length == 2){ + start = dist(...get_points()); + state = translate; + }else{ + state = poll; + } + }; + + let del_pointer = (ev) => { + delete pointers[ev.id]; + + if(Object.keys(pointers).length != 2) + state = poll; + }; + + state = poll; + return Pointer(el, add_pointer, (ev) => state(ev), del_pointer); +} + + + + +let pointer_drag = (el, st, cb) => { + let start; + let state, drag, poll; + let pointers = {}; + + drag = (ev) => { + if(length(sub(start, [ev.x, ev.y])) > 2){ + cb([ev.x, ev.y], [ev.x - start[0], ev.y - start[1]]); + start = [ev.x, ev.y]; + } + }; + + poll = (ev) => {}; + + let add_pointer = (ev) => { + pointers[ev.id] = [ev.x, ev.y]; + + if(Object.keys(pointers).length == 1 && ev.buttons == 1){ + start = pointers[ev.id]; + st(start); + state = drag; + }else{ + state = poll; + } + }; + + let del_pointer = (ev) => { + delete pointers[ev.id]; + + if(Object.keys(pointers).length != 1) + state = poll; + }; + + + state = poll; + return Pointer(el, add_pointer, (ev) => state(ev), del_pointer); +} + + + + +$$--GLUE--$$ +.\src\qtree.js +$$--GLUE--$$ + +let DynUint8 = (sz = 256*4) => { + let buffer = new Uint8Array(sz); //TODO may fail + let end = 0; + + let obj = { +get_buffer: () => buffer, +get: (ind) => buffer[ind], +set: (ind, val) => { + if(ind >= buffer.length){ + let v = 1; + while(ind >= buffer.length * v) v *= 2; + let old = buffer; + buffer = new Uint8Array(buffer.length * v); + buffer.set(old); + } + + return buffer[ind] = val; +}, +push: (val) => obj.set(end++, val), +pop: (val) => obj.get(--end), +get_end: () => end, +set_end: (ind) => end = ind, +clear: () => end = 0, + } + + return obj; +} + + +let Uint32Arr = (u8buf) => { + let obj = { +get_buffer: () => u8buf, +set: (ind, num) => { + ind *= 4; + u8buf.set(ind++, (num >> 0) & 0xff); + u8buf.set(ind++, (num >> 8) & 0xff); + u8buf.set(ind++, (num >> 16) & 0xff); + u8buf.set(ind++, (num >> 24) & 0xff); +}, +push: (num) => { + u8buf.push((num >> 0) & 0xff); + u8buf.push((num >> 8) & 0xff); + u8buf.push((num >> 16) & 0xff); + u8buf.push((num >> 24) & 0xff); +}, +get: (ind) => { + let num = 0; + ind *= 4; + num += u8buf.get(ind++) << 0; + num += u8buf.get(ind++) << 8; + num += u8buf.get(ind++) << 16; + num += u8buf.get(ind++) << 24; + return num; +}, +pop: () => { + let ret = obj.get(obj.get_end()-1) + obj.set_end(obj.get_end()-1); + return ret; +}, +get_end: () => u8buf.get_end() / 4, +set_end: (ind) => u8buf.set_end(ind * 4), +clear: () => u8buf.clear() + }; + + return obj; +} + + +let LinearQtree = (buffer = Uint32Arr(DynUint8())) => { + let ab, col_ab, memo, col_memo; + //let col_memo = new Map(); //?? + //let memo = new Map(); + //let buffer = new Uint8Array(256 * 4); + + let obj = { +node_at: (ind) => { + let node = { + ind, + get_node: (i) => obj.node_at(buffer.get(ind * 5 + 1 + i)), + get_tag: () => buffer.get(ind * 5), + set_tag: (t) => buffer.set(ind * 5, t), + set_node: (i, nd) => buffer.set(ind * 5 + i + 1, nd.ind), + }; + + return node; +}, + +add_node: (t, ...nodes) => { + let vals = [t, ...nodes.map(v => v?.ind)]; + let my_ind = buffer.get_end()/5; + + while(vals.length != 5) + vals.push(my_ind); + + vals.map(buffer.push); + return obj.node_at(my_ind); +}, +color: (t) => { + let node = obj.add_node(t); + + let free = false; + col_memo = col_ab.insert(col_memo, node.ind, (ind) => { + buffer.set_end(buffer.get_end() - 5); + free = true; + node = obj.node_at(ind); + }); + + memo = ab.insert(memo, node.ind, (ind) => { + if(!free) + buffer.set_end(buffer.get_end() - 5); + node = obj.node_at(ind); + }); + + return node; +}, +node: (...nodes) => { + let t = avg_color(nodes.map(v => v.get_tag())); + let node = obj.add_node(t, ...nodes); + + memo = ab.insert(memo, node.ind, (ind) => { + buffer.set_end(buffer.get_end() - 5); + node = obj.node_at(ind); + }); + + + return node; +}, + +get_buffer: () => buffer, +get_memo: () => [ab, col_ab, memo, col_memo], +get_size: () => buffer.get_end()/5 + }; + + let node_eq = (a, b) => { + for(let i = 0; i < 4; i++) + if(obj.node_at(a).get_node(i).ind != obj.node_at(b).get_node(i).ind) + return false; + + return true; + } + + let node_cmp = (a, b) => { + for(let i = 0; i < 4; i++) + if(obj.node_at(a).get_node(i).ind < obj.node_at(b).get_node(i).ind) + return true; + + return false; + } + + ab = _24_tree(Uint32Arr(DynUint8()), + node_cmp, + node_eq + ); + + col_ab = _24_tree(Uint32Arr(DynUint8()), + (a, b) => obj.node_at(a).get_tag() < obj.node_at(b).get_tag(), + (a, b) => obj.node_at(a).get_tag() == obj.node_at(b).get_tag() + ); + memo = ab.node_at(0); + col_memo = col_ab.node_at(0); + + + return obj; +} + + + + + + + + + + + +let avg_color = (cols) => { + let add = (a, b) => a.map((v, i) => v + b[i]); + return cols.map(v => [ + (v >> 24) & 0xff, + (v >> 16) & 0xff, + (v >> 8) & 0xff, + (v >> 0) & 0xff + ]) + .reduce(add) + .map(v => (v/cols.length | 0) % 256) + .reduce((a, b) => a*256 + b, 0); +} + +let set_node = (qtree, node, ind, val) => { + let nodes = Array(4).fill().map((v, i) => node.get_node(i)); + nodes[ind] = val; + return qtree.node(...nodes); +} + +let render_sdf = (qtree, node, depth, sdf, fill) => { + let render_ = (node, orig, unit, depth) => { + unit = unit * 0.5; + + let dist = sdf(orig); + let target = 2**0.5 * unit; + + if(fill.ind == node.ind || dist < -target || depth <= 0) + return fill; + + if(dist < target){ + let hu = unit * 0.5; + return qtree.node( + render_(node.get_node(0), add([-hu, -hu], orig), unit, depth-1), + render_(node.get_node(1), add([hu, -hu], orig), unit, depth-1), + render_(node.get_node(2), add([-hu, hu], orig), unit, depth-1), + render_(node.get_node(3), add([hu, hu], orig), unit, depth-1) + ); + } + + return node; + }; + + return render_(node, [0, 0], 1, depth); +} + +//slower +let render_sdf_fn = (qtree, node, depth, sdf, color) => { + let render_ = (node, orig, unit, depth) => { + unit = unit/2; + + let dist = sdf(orig); + let target = 2**0.5 * unit; + + if(depth <= 0) + return color(orig, node); + + if(dist < target){ + let nodes = Array(4).fill().map((v, i) => node.get_node(i)); + return qtree.node( + ...nodes + .map((v, i) => render_(v, add(smul(unit, [!!(i & 1) - 0.5, 0.5 - !!(i & 2)]), orig), unit, depth-1)) + ); + } + + return node; + }; + + return render_(node, [0, 0], 1, depth); +} + + + + + + + + + + + + + + + + + + +//TODO make this less fucky +let QtreeMirror = (q1, q2) => { + let seen = new Map(); + + let obj = { +get_main: () => q1, +get_seen: () => seen, +mirror: (node) => { + if(seen.has(node.ind)) + return q2.node_at(seen.get(node.ind)); + + let nd = q2.add_node(node.get_tag()); + seen.set(node.ind, nd.ind); + return nd; +}, +full_mirror: (node) => { + let nodes = Array(4).fill().map((v, i) => node.get_node(i)); + let mnd = obj.mirror(node); + + nodes.forEach((v, i) => { + if(!seen.has(v.ind)) + mnd.set_node(i, obj.full_mirror(v)); + else + mnd.set_node(i, obj.mirror(v)); + }); + + return mnd; +}, +node_at: (ind) => { + let nd = q1.node_at(ind); + let mnd = obj.mirror(nd); + + let node = { + ind: nd.ind, + get_node: (i) => { + let n = nd.get_node(i); + if(!seen.has(n.ind)){ + for(let i = 0; i < 4; i++) + mnd.set_node(i, obj.mirror(nd.get_node(i))); + }else{ + mnd.set_node(i, obj.mirror(n)); + } + + return obj.node_at(n.ind); + }, + get_tag: nd.get_tag, + set_tag: (t) => (mnd.set_tag(t), nd.set_tag(t)), + set_node: (i, n) => { + nd.set_node(i, n); + for(let i = 0; i < 4; i++) + mnd.set_node(i, obj.mirror(nd.get_node(i))); + } + }; + + return node; +}, +add_node: (t, ...nodes) => { + let nd = q1.add_node(t, ...nodes); + + let n2 = q2.add_node(t, ...nodes.map(obj.mirror)); + seen.set(nd.ind, n2.ind); + + return obj.node_at(nd.ind); +}, +node: (...nodes) => { + let nd = q1.node(...nodes); + obj.full_mirror(nd) + return obj.node_at(nd.ind); +}, +color: (t) => { + let nd = q1.color(t); + obj.mirror(nd); + return obj.node_at(nd.ind); +} + + }; + + return obj; +} + + + + + + + + +/* +let LazyQtree = (qtree) => { + let lazy = new Map(); + + let obj = { +node_at: (ind) => { + if(lazy.has(ind)) + return lazy.get(ind); + + return qtree.node_at(ind); +}, +add_node: qtree.add_node, +node: qtree.node, +color: qtree.color, +lazy_node: (col_guess, fn) => { + let my_ind = qtree.get_size(); + + //TODO breaks uniqueness ... + let node = { + ind: my_ind, + get_node: (i) => { + let nd = fn(obj); + console.log(nd); + lazy.set(my_ind, nd); + + node.ind = nd.ind; + node.get_node = nd.get_node; + node.get_tag = nd.get_tag; + node.set_tag = nd.set_tag; + node.set_node = nd.set_node; + + return nd.get_node(i); + }, + get_tag: () => col_guess, + set_tag: () => null, + set_node: () => null + }; + + lazy.set(my_ind, node); + return node; +} + }; + + return obj; +} +*/ + + + + + + +let QtreePath = (qtree, node) => { + let path = [[node, null]]; + + let obj = { +copy: () => { + let cp = QtreePath(qtree, obj.get_root()); + + for(let i = 1; i < path.length; i++) + cp.desc(path[i][1]); + + return cp; +}, +cur: () => path.at(-1)[0], +set_cur: (val) => path.at(-1)[0] = val, +cur_ind: () => path.at(-1)[1], +get_tree: () => qtree, +get_depth: () => path.length-1, +desc: (ind) => path.push([obj.cur().get_node(ind), ind]), +asc: (hint = 0) => { + let [n1, ind] = path.pop(); + if(path.length == 0){ + path.push([qtree.color(0xffffffff), null]); + ind = hint; + } + + obj.set_cur(set_node(qtree, obj.cur(), ind, n1)); + return [n1, ind]; +}, +set_path: ([px, py], depth) => { + /* stack limit bites */ + path = [[obj.get_root(), null]]; + while(depth != 0){ + depth--; + let ind = !!(px & (1n << depth)) + 2*!!(py & (1n << depth)); + obj.desc(ind); + } + + return obj.cur(); +}, +add: ([x, y]) => { + let stack = []; + + while(x || y){ + let [node, ind] = obj.asc((x < 0) + 2*(y < 0)); + + let os = !!(x & 1n) + 2*!!(y & 1n); + stack.push(ind ^ os); + + x >>= 1n; + y >>= 1n; + + x += BigInt(!!(os & ind & 1)); + y += BigInt(!!(os & ind & 2)); + } + + while(stack.length) + obj.desc(stack.pop()); + + return obj.cur(); +}, +get_root: () => { + if(path == null || path.length == 0) + return null; + for(let i = path.length-1; i--;) + path[i][0] = set_node(qtree, path[i][0], path[i+1][1], path[i+1][0]); + + return path[0][0]; +}, + } + + return obj; +} + +let set_path = (path, unit, p, depth) => { + let orig = [0, 0]; + + path.set_path([0n, 0n], 0n); + + for(let i = 0; i < depth; i++){ + let quad = [p[0] > orig[0], p[1] > orig[1]]; + + path.desc(quad[0] + 2*quad[1]); + + unit /= 2; + orig = add(smul(unit, [quad[0]-0.5, quad[1]-0.5]), orig); + } + + return path; +} + + + + + + + + + + + + + + + + + + + + + + + + + + +let index_heap = (buffer, is_lt) => { + let obj = { +get_buffer: () => buffer, +insert: (ind) => { + let buf_pos = buffer.get_end(); + buffer.push(ind); + obj.sift_down(buf_pos); +}, +extract_min: () => { + let ret = buffer.get(0); + buffer.set(0, buffer.pop()); + obj.sift_up(0); + return ret; +}, +cas: (a, b) => { + let a_val = buffer.get(a); + let b_val = buffer.get(b); + + if(is_lt(a_val, b_val)) + return false; + + buffer.set(b, a_val); + buffer.set(a, b_val); + return true; +}, +sift_up: (ind) => { + let l_ind = (ind + 1) * 2 - 1 + let r_ind = l_ind + 1; + + if(l_ind >= buffer.get_end()) + return; + + let take = l_ind; + if(r_ind < buffer.get_end()){ + if(is_lt(buffer.get(r_ind), buffer.get(l_ind))) + take = r_ind; + } + + if(obj.cas(ind, take)) + obj.sift_up(take); +}, +sift_down: (ind) => { + if(ind == 0) + return; + + let p_ind = ((ind + 1) / 2 | 0) - 1; + + if(obj.cas(p_ind, ind)) + obj.sift_down(p_ind); +}, +is_empty: () => buffer.get_end() == 0 + }; + + return obj; +} + + + + +let Arena = (buffer, alloc_size) => { + let heap = index_heap(DynUint8()); + + let obj = { +alloc: () => { + if(heap.is_empty()){ + let ind = buffer.get_end(); + buffer.set_end(buffer.get_end() + alloc_size); + return ind; + } + + let ind = heap.extract_min(); + return ind; +}, +free: (ind) => heap.insert(ind) + }; + + return obj; +} + + + + + + +let _24_tree = (buffer, is_lt, is_eq) => { + let arena = Arena(buffer.get_buffer(), 8 * 4); + + let obj = { +node_at: (ind) => { + let node = { + ind, + size: () => buffer.get(ind), + get_size: () => buffer.get(ind), + set_size: (val) => buffer.set(ind, val), + get_key: (i) => buffer.get(ind + 1 + i), + set_key: (i, key) => buffer.set(ind + 1 + i, key), + get_node: (i) => obj.node_at(buffer.get(ind + 4 + i)), + set_node: (i, node) => buffer.set(ind + 4 + i, node.ind), + }; + + return node; +}, +add_node: (keys, nodes) => { + let node = obj.node_at(arena.alloc()); + node.set_size(Math.max(keys.length + 1, nodes.length)); + keys.forEach((v, i) => node.set_key(i, v)); + nodes.forEach((v, i) => node.set_node(i, v)); + return node; +}, +search: (node, key) => { + if(node.ind == 0) + return null; + + let i = 0; + for(; i < node.get_size() - 1; i++){ + let cur_key = node.get_key(i); + if(is_eq(key, cur_key)) + return cur_key; + + if(is_lt(key, cur_key)) + break; + } + + return obj.search(node.get_node(i), key); +}, +node_split: (keys, nodes, ind) => { + let l_keys = keys.slice(0, ind); + let m_key = keys[ind]; + let r_keys = keys.slice(ind+1); + + let l_nodes = nodes.slice(0, ind+1); + let r_nodes = nodes.slice(ind+1); + + return [ + m_key, + obj.add_node(l_keys, l_nodes), + obj.add_node(r_keys, r_nodes) + ]; +}, +node_insert: (node, ind, key, repl) => { + let keys = Array(node.get_size() - 1).fill().map((v, i) => node.get_key(i)); + let nodes = Array(node.get_size()).fill().map((v, i) => node.get_node(i)); + + let new_keys = [...keys.slice(0, ind), key, ...keys.slice(ind)]; + let new_nodes = [...nodes.slice(0, ind), ...repl, ...nodes.slice(ind + 1)]; + + if(new_keys.length > 3) + return obj.node_split(new_keys, new_nodes, 2); + + new_keys.forEach((v, i) => node.set_key(i, v)); //kinda gross, but constant cost... + new_nodes.forEach((v, i) => node.set_node(i, v)); + node.set_size(new_nodes.length); + + return [node]; +}, +insert_: (node, key, fn) => { + if(node.ind == 0) + return [key, obj.node_at(0), obj.node_at(0)]; + + let i = 0; + for(; i < node.get_size() - 1; i++){ + let cur_key = node.get_key(i); + if(is_eq(key, cur_key)){ + fn(cur_key); + return [node]; + } + + if(is_lt(key, cur_key)) + break; + } + + let next_node = i; + let next = obj.insert_(node.get_node(next_node), key, fn); + if(next.length == 1){ + node.set_node(next_node, next[0]); + return [node]; + } + + return obj.node_insert(node, next_node, next[0], [next[1], next[2]]); +}, +insert: (node, key, fn = () => null) => { + let next = obj.insert_(node, key, fn); + if(next.length == 1) + return next[0]; + return obj.add_node([next[0]], [next[1], next[2]]); +}, +to_json: (node) => { + if(node.ind == 0) + return {}; + + let keys = Array(node.get_size() - 1).fill().map((v, i) => node.get_key(i)); + let nodes = Array(node.get_size()).fill().map((v, i) => node.get_node(i)).map(obj.to_json); + + return {keys, nodes}; +} + }; + + root = obj.node_at(arena.alloc()); + + return obj; +}; + + + + + + + + + + + +$$--GLUE--$$ +.\src\tree_shader.glsl +$$--GLUE--$$ +precision highp float; +precision highp int; + +uniform vec2 res; + +uniform sampler2D tex; +uniform vec2 tex_res; +uniform int tex_lt; + + +uniform vec2 center; +uniform ivec4 node; +uniform int depth; +uniform float unit; + +uniform int debug; + +uniform mat4 transform; + +/* 32bit int emulation */ +ivec2 moddiv(int a, int b){ + int div = a / b, mod = a - div * b; + return ivec2(mod, div); +} + +ivec4 carry_prop(ivec4 a){ + ivec2 v; + + v = moddiv(a.r, 256); + a.r = v.x; + v = moddiv(a.g + v.y, 256); + a.g = v.x; + v = moddiv(a.b + v.y, 256); + a.b = v.x; + v = moddiv(a.a + v.y, 256); + a.a = v.x; + + return a; +} + +ivec4 rshift8(ivec4 a){return ivec4(a.g, a.b, a.a, 0);} + +ivec4 rshift07(ivec4 a, int b){ + int v = int(float(a.r) * pow(0.5, float(b))); + a = carry_prop(rshift8(a)*int(pow(2.0,float(8-b)))); + a.r = a.r + v; + return a; +} + +ivec4 rshift(ivec4 a, int b){ + ivec2 mul = moddiv(b, 7); + for(int i = 0; i < 8; i++){ + if(mul.y - i == 0) + break; + a = rshift07(a, 7); + } + + return rshift07(a, mul.x); +} + +ivec4 lshift(ivec4 a, int b){ + ivec2 mul = moddiv(b, 7); + for(int i = 0; i < 8; i++){ + if(mul.y - i == 0) + break; + a = carry_prop(a*int(pow(2.0, 7.0))); + } + + return carry_prop(a*int(pow(2.0, float(mul.x)))); +} + + + +vec4 col_at(ivec4 ind){ + ivec4 v2 = rshift(ind, tex_lt); + ivec4 v1 = ind - lshift(v2, tex_lt); + + vec2 tc = (vec2(v1.r + 256*v1.g, v2.r + 256*v2.g) + vec2(0.5)) / tex_res; + return texture2D(tex, tc); +} + +ivec4 vec4tonum(vec4 val){ + + +/* + //UNSIGNED_SHORT_4_4_4_4 + ivec4 val = ivec4(15.0*val + 0.5) + return ivec4(val.r + 16*val.g, val.b + 16*val.a, 0, 0); +*/ + + +/* + UNSIGNED_SHORT_5_6_5 + ivec4 val = ivec4(31.0*val.r + 0.5, 63.0*val.g + 0.5, 31.0*val.b + 0.5, 0.0); + return carry_prop(ivec4(val.r + 32*val.g, 8*val.g, 0, 0)); +*/ + + //RGBA + return ivec4(255.0*val + 0.5); +} +ivec4 num_at(ivec4 ind){ +/* + //UNSIGNED_SHORT_4_4_4_4 + ind = lshift(ind, 1); + return vec4tonum(col_at(ind + ivec4(0, 0, 0, 0)) + + lshift(vec4tonum(col_at(ind + ivec4(1, 0, 0, 0)), 16); +*/ + + //RBGA + return vec4tonum(col_at(ind)); +} + + + +void main(){ + vec2 pos = (transform * vec4(gl_FragCoord.xy, 0.0, 1.0)).xy; + vec2 orig = center; + + ivec4 ind = node; + float width = unit; + + if(debug == 1 && gl_FragCoord.x < center.x){ + vec2 p = gl_FragCoord.xy/res; + p.x = p.x * 2.0; + p.y = 1.0 - p.y; + + gl_FragColor = texture2D(tex, p); + gl_FragColor.a = 1.0; + return; + } +/* + else{ + vec2 p = gl_FragCoord.xy; + + if(p.y > tex_res.x * tex_res.y) + discard; + ivec4 ind = carry_prop(ivec4(p.y, 0, 0, 0)); + + gl_FragColor = col_at(ind); + gl_FragColor.a = 1.0; + return; + } + */ + + + for(int i = 0; i < 16; i++){ + if(i >= depth) + break; + + vec2 quad = vec2(pos.x > orig.x, pos.y < orig.y); + ind = ind * 5; + ind.r = ind.r + 1 + int(quad.x + 2.0*quad.y); + ind = num_at(carry_prop(ind)); + + width = width / 2.0; + orig = vec2(quad.x-0.5, 0.5-quad.y)*width + orig; + } + + gl_FragColor = col_at(carry_prop(ind*5)); +} + +$$--GLUE--$$ +.\style.css +$$--GLUE--$$ +/* Global Reset */ +* { + box-sizing: border-box; + margin: 0; + padding: 0; + font-family: 'Arial', sans-serif; + scroll-behavior: smooth; +} + +/* Body */ +body { + background-color: #121212; /* Dark mode background */ + color: #E0E0E0; + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + padding: 20px; +} + +/* Canvas Container */ +.Block { + position: relative; +} + +/* Canvas */ +#screen { + border: 2px solid #4CAF50; + background-color: #1e1e1e; + display: block; + max-width: 100%; +} + +/* Toolbar Container */ +.border { + background: #1e1e1e; + padding: 10px; + display: flex; + align-items: center; + gap: 10px; + border-radius: 8px; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2); +} + +/* Toolbar Buttons */ +button { + background-color: #4CAF50; + color: white; + padding: 10px 16px; + border: none; + border-radius: 6px; + cursor: pointer; + font-size: 14px; + font-weight: 600; + transition: background-color 0.2s ease, transform 0.1s ease; + display: inline-block; +} + +button:hover { + background-color: #45a049; + transform: scale(1.05); +} + +button:active { + background-color: #3e8e41; + transform: scale(0.95); +} + +/* Inputs */ +input + +$$--GLUE--$$ +.\tailwind.js +$$--GLUE--$$ +"use strict";(()=>{var $t="4.0.12";var ke=92,Ke=47,Pe=42,oo=34,no=39,io=58,Ue=59,le=10,we=32,_e=9,Tt=123,tt=125,nt=40,Vt=41,lo=91,ao=93,Et=45,rt=64,so=33;function pe(t){t[0]==="\uFEFF"&&(t=t.slice(1)),t=t.replaceAll(`\r +`,` +`);let r=[],o=[],e=[],n=null,s=null,l="",p="",c;for(let d=0;d0&&t[b]===g[g.length-1]&&(g=g.slice(0,-1));let y=ot(l,v);if(!y)throw new Error("Invalid custom property, expected a value");n?n.nodes.push(y):r.push(y),l=""}else if(u===Ue&&l.charCodeAt(0)===rt)s=xe(l),n?n.nodes.push(s):r.push(s),l="",s=null;else if(u===Ue&&p[p.length-1]!==")"){let g=ot(l);if(!g)throw l.length===0?new Error("Unexpected semicolon"):new Error(`Invalid declaration: \`${l.trim()}\``);n?n.nodes.push(g):r.push(g),l=""}else if(u===Tt&&p[p.length-1]!==")")p+="}",s=M(l.trim()),n&&n.nodes.push(s),e.push(n),n=s,l="",s=null;else if(u===tt&&p[p.length-1]!==")"){if(p==="")throw new Error("Missing opening {");if(p=p.slice(0,-1),l.length>0)if(l.charCodeAt(0)===rt)s=xe(l),n?n.nodes.push(s):r.push(s),l="",s=null;else{let m=l.indexOf(":");if(n){let v=ot(l,m);if(!v)throw new Error(`Invalid declaration: \`${l.trim()}\``);n.nodes.push(v)}}let g=e.pop()??null;g===null&&n&&r.push(n),n=g,l="",s=null}else if(u===nt)p+=")",l+="(";else if(u===Vt){if(p[p.length-1]!==")")throw new Error("Missing opening (");p=p.slice(0,-1),l+=")"}else{if(l.length===0&&(u===we||u===le||u===_e))continue;l+=String.fromCharCode(u)}}}if(l.charCodeAt(0)===rt&&r.push(xe(l)),p.length>0&&n){if(n.kind==="rule")throw new Error(`Missing closing } at ${n.selector}`);if(n.kind==="at-rule")throw new Error(`Missing closing } at ${n.name} ${n.params}`)}return o.length>0?o.concat(r):r}function xe(t,r=[]){for(let o=5;o=1&&n<=31||n===127||e===0&&n>=48&&n<=57||e===1&&n>=48&&n<=57&&l===45){s+="\\"+n.toString(16)+" ";continue}if(n>=128||n===45||n===95||n>=48&&n<=57||n>=65&&n<=90||n>=97&&n<=122){s+=r.charAt(e);continue}s+="\\"+r.charAt(e)}return s}function ae(t){return t.replace(/\\([\dA-Fa-f]{1,6}[\t\n\f\r ]?|[\S\s])/g,r=>r.length>2?String.fromCodePoint(Number.parseInt(r.slice(1).trim(),16)):r[1])}var Ot=new Map([["--font",["--font-weight","--font-size"]],["--inset",["--inset-shadow","--inset-ring"]],["--text",["--text-color","--text-underline-offset","--text-indent","--text-decoration-thickness","--text-decoration-color"]]]);function Rt(t,r){return(Ot.get(r)??[]).some(o=>t===o||t.startsWith(`${o}-`))}var ze=class{constructor(r=new Map,o=new Set([])){this.values=r;this.keyframes=o}prefix=null;add(r,o,e=0){if(r.endsWith("-*")){if(o!=="initial")throw new Error(`Invalid theme value \`${o}\` for namespace \`${r}\``);r==="--*"?this.values.clear():this.clearNamespace(r.slice(0,-2),0)}if(e&4){let n=this.values.get(r);if(n&&!(n.options&4))return}o==="initial"?this.values.delete(r):this.values.set(r,{value:o,options:e})}keysInNamespaces(r){let o=[];for(let e of r){let n=`${e}-`;for(let s of this.values.keys())s.startsWith(n)&&s.indexOf("--",2)===-1&&(Rt(s,e)||o.push(s.slice(n.length)))}return o}get(r){for(let o of r){let e=this.values.get(o);if(e)return e.value}return null}hasDefault(r){return(this.getOptions(r)&4)===4}getOptions(r){return r=ae(this.#r(r)),this.values.get(r)?.options??0}entries(){return this.prefix?Array.from(this.values,r=>(r[0]=this.prefixKey(r[0]),r)):this.values.entries()}prefixKey(r){return this.prefix?`--${this.prefix}-${r.slice(2)}`:r}#r(r){return this.prefix?`--${r.slice(3+this.prefix.length)}`:r}clearNamespace(r,o){let e=Ot.get(r)??[];e:for(let n of this.values.keys())if(n.startsWith(r)){if(o!==0&&(this.getOptions(n)&o)!==o)continue;for(let s of e)if(n.startsWith(s))continue e;this.values.delete(n)}}#e(r,o){for(let e of o){let n=r!==null?`${e}-${r}`:e;if(!this.values.has(n))if(r!==null&&r.includes(".")){if(n=`${e}-${r.replaceAll(".","_")}`,!this.values.has(n))continue}else continue;if(!Rt(n,e))return n}return null}#t(r){let o=this.values.get(r);if(!o)return null;let e=null;return o.options&2&&(e=o.value),`var(${re(this.prefixKey(r))}${e?`, ${e}`:""})`}markUsedVariable(r){let o=ae(this.#r(r)),e=this.values.get(o);e&&(e.options|=16)}resolve(r,o){let e=this.#e(r,o);if(!e)return null;let n=this.values.get(e);return n.options&1?n.value:this.#t(e)}resolveValue(r,o){let e=this.#e(r,o);return e?this.values.get(e).value:null}resolveWith(r,o,e=[]){let n=this.#e(r,o);if(!n)return null;let s={};for(let p of e){let c=`${n}${p}`,d=this.values.get(c);d&&(d.options&1?s[p]=d.value:s[p]=this.#t(c))}let l=this.values.get(n);return l.options&1?[l.value,s]:[this.#t(n),s]}namespace(r){let o=new Map,e=`${r}-`;for(let[n,s]of this.values)n===r?o.set(null,s.value):n.startsWith(`${e}-`)?o.set(n.slice(r.length),s.value):n.startsWith(e)&&o.set(n.slice(e.length),s.value);return o}addKeyframes(r){this.keyframes.add(r)}getKeyframes(){return Array.from(this.keyframes)}};var j=class extends Map{constructor(o){super();this.factory=o}get(o){let e=super.get(o);return e===void 0&&(e=this.factory(o,this),this.set(o,e)),e}};function lt(t){return{kind:"word",value:t}}function uo(t,r){return{kind:"function",value:t,nodes:r}}function co(t){return{kind:"separator",value:t}}function ee(t,r,o=null){for(let e=0;e0){let g=lt(n);e?e.nodes.push(g):r.push(g),n=""}let c=l,d=l+1;for(;d0){let d=lt(n);c.nodes.push(d),n=""}o.length>0?e=o[o.length-1]:e=null;break}default:n+=String.fromCharCode(p)}}return n.length>0&&r.push(lt(n)),r}function Fe(t){let r=[];return ee(L(t),o=>{if(!(o.kind!=="function"||o.value!=="var"))return ee(o.nodes,e=>{e.kind!=="word"||e.value[0]!=="-"||e.value[1]!=="-"||r.push(e.value)}),1}),r}var bo=64;function z(t,r=[]){return{kind:"rule",selector:t,nodes:r}}function U(t,r="",o=[]){return{kind:"at-rule",name:t,params:r,nodes:o}}function M(t,r=[]){return t.charCodeAt(0)===bo?xe(t,r):z(t,r)}function a(t,r,o=!1){return{kind:"declaration",property:t,value:r,important:o}}function De(t){return{kind:"comment",value:t}}function Q(t,r){return{kind:"context",context:t,nodes:r}}function D(t){return{kind:"at-root",nodes:t}}function _(t,r,o=[],e={}){for(let n=0;nnew Set),s=new Set,l=new Set,p=new j(()=>new Set);function c(u,g,m={},v=0){if(u.kind==="declaration"){if(u.property==="--tw-sort"||u.value===void 0||u.value===null)return;if(m.theme&&u.property[0]==="-"&&u.property[1]==="-"&&(m.keyframes||n.get(g).add(u)),u.value.includes("var("))if(m.theme&&u.property[0]==="-"&&u.property[1]==="-")for(let y of Fe(u.value))p.get(y).add(u.property);else r.trackUsedVariables(u.value);if(u.property==="animation"){let y=u.value.split(/\s+/);for(let b of y)l.add(b)}g.push(u)}else if(u.kind==="rule")if(u.selector==="&")for(let y of u.nodes){let b=[];c(y,b,m,v+1),b.length>0&&g.push(...b)}else{let y={...u,nodes:[]};for(let b of u.nodes)c(b,y.nodes,m,v+1);y.nodes.length>0&&g.push(y)}else if(u.kind==="at-rule"&&u.name==="@property"&&v===0){if(e.has(u.params))return;e.add(u.params);let y={...u,nodes:[]};for(let b of u.nodes)c(b,y.nodes,m,v+1);g.push(y)}else if(u.kind==="at-rule"){u.name==="@keyframes"&&(m={...m,keyframes:!0});let y={...u,nodes:[]};for(let b of u.nodes)c(b,y.nodes,m,v+1);u.name==="@keyframes"&&m.theme&&s.add(y),(y.nodes.length>0||y.name==="@layer"||y.name==="@charset"||y.name==="@custom-media"||y.name==="@namespace"||y.name==="@import")&&g.push(y)}else if(u.kind==="at-root")for(let y of u.nodes){let b=[];c(y,b,m,0);for(let x of b)o.push(x)}else if(u.kind==="context"){if(u.context.reference)return;for(let y of u.nodes)c(y,g,{...m,...u.context},v)}else u.kind==="comment"&&g.push(u)}let d=[];for(let u of t)c(u,d,{},0);e:for(let[u,g]of n)for(let m of g){if(Mt(m.property,r.theme,p)){if(m.property.startsWith(r.theme.prefixKey("--animate-"))){let b=m.value.split(/\s+/);for(let x of b)l.add(x)}continue}let y=u.indexOf(m);if(u.splice(y,1),u.length===0){let b=yo(d,x=>x.kind==="rule"&&x.nodes===u);if(!b||b.length===0)continue e;b.unshift({kind:"at-root",nodes:d});do{let x=b.pop();if(!x)break;let $=b[b.length-1];if(!$||$.kind!=="at-root"&&$.kind!=="at-rule")break;let V=$.nodes.indexOf(x);if(V===-1)break;$.nodes.splice(V,1)}while(!0);continue e}}for(let u of s)if(!l.has(u.params)){let g=o.indexOf(u);o.splice(g,1)}return d.concat(o)}function Y(t){function r(e,n=0){let s="",l=" ".repeat(n);if(e.kind==="declaration")s+=`${l}${e.property}: ${e.value}${e.important?" !important":""}; +`;else if(e.kind==="rule"){s+=`${l}${e.selector} { +`;for(let p of e.nodes)s+=r(p,n+1);s+=`${l}} +`}else if(e.kind==="at-rule"){if(e.nodes.length===0)return`${l}${e.name} ${e.params}; +`;s+=`${l}${e.name}${e.params?` ${e.params} `:" "}{ +`;for(let p of e.nodes)s+=r(p,n+1);s+=`${l}} +`}else if(e.kind==="comment")s+=`${l}/*${e.value}*/ +`;else if(e.kind==="context"||e.kind==="at-root")return"";return s}let o="";for(let e of t){let n=r(e);n!==""&&(o+=n)}return o}function yo(t,r){let o=[];return _(t,(e,{path:n})=>{if(r(e))return o=[...n],2}),o}function Mt(t,r,o,e=new Set){if(e.has(t)||(e.add(t),r.getOptions(t)&24))return!0;{let s=o.get(t)??[];for(let l of s)if(Mt(l,r,o,e))return!0}return!1}var st=["calc","min","max","clamp","mod","rem","sin","cos","tan","asin","acos","atan","atan2","pow","sqrt","hypot","log","exp","round"],Ie=["anchor-size"],Bt=new RegExp(`(${Ie.join("|")})\\(`,"g");function Ce(t){return t.indexOf("(")!==-1&&st.some(r=>t.includes(`${r}(`))}function Wt(t){if(!st.some(n=>t.includes(n)))return t;let r=!1;Ie.some(n=>t.includes(n))&&(Bt.lastIndex=0,t=t.replace(Bt,(n,s)=>(r=!0,`$${Ie.indexOf(s)}$(`)));let o="",e=[];for(let n=0;n=0;c--){let d=t.charCodeAt(c);if(d>=48&&d<=57)l=c;else if(d>=97&&d<=122)l=c;else break}let p=t.slice(l,n);if(st.includes(p)){e.unshift(!0);continue}else if(e[0]&&p===""){e.unshift(!0);continue}e.unshift(!1);continue}else if(s===")")o+=s,e.shift();else if(s===","&&e[0]){o+=", ";continue}else{if(s===" "&&e[0]&&o[o.length-1]===" ")continue;if((s==="+"||s==="*"||s==="/"||s==="-")&&e[0]){let l=o.trimEnd(),p=l[l.length-1];if(p==="+"||p==="*"||p==="/"||p==="-"){o+=s;continue}else if(p==="("||p===","){o+=s;continue}else t[n-1]===" "?o+=`${s} `:o+=` ${s} `}else if(e[0]&&t.startsWith("to-zero",n)){let l=n;n+=7,o+=t.slice(l,n+1)}else o+=s}}return r?o.replace(/\$(\d+)\$/g,(n,s)=>Ie[s]??n):o}function oe(t){if(t.indexOf("(")===-1)return me(t);let r=L(t);return ut(r),t=H(r),t=Wt(t),t}function me(t,r=!1){let o="";for(let e=0;e0&&c===Le[o-1]&&o--;break}}return e.push(t.slice(n)),e}var ko=58,qt=45,Ht=97,Gt=122;function*Yt(t,r){let o=P(t,":");if(r.theme.prefix){if(o.length===1||o[0]!==r.theme.prefix)return null;o.shift()}let e=o.pop(),n=[];for(let g=o.length-1;g>=0;--g){let m=r.parseVariant(o[g]);if(m===null)return;n.push(m)}let s=!1;e[e.length-1]==="!"?(s=!0,e=e.slice(0,-1)):e[0]==="!"&&(s=!0,e=e.slice(1)),r.utilities.has(e,"static")&&!e.includes("[")&&(yield{kind:"static",root:e,variants:n,important:s,raw:t});let[l,p=null,c]=P(e,"/");if(c)return;let d=p===null?null:ct(p);if(p!==null&&d===null)return;if(l[0]==="["){if(l[l.length-1]!=="]")return;let g=l.charCodeAt(1);if(g!==qt&&!(g>=Ht&&g<=Gt))return;l=l.slice(1,-1);let m=l.indexOf(":");if(m===-1||m===0||m===l.length-1)return;let v=l.slice(0,m),y=oe(l.slice(m+1));yield{kind:"arbitrary",property:v,value:y,modifier:d,variants:n,important:s,raw:t};return}let u;if(l[l.length-1]==="]"){let g=l.indexOf("-[");if(g===-1)return;let m=l.slice(0,g);if(!r.utilities.has(m,"functional"))return;let v=l.slice(g+1);u=[[m,v]]}else if(l[l.length-1]===")"){let g=l.indexOf("-(");if(g===-1)return;let m=l.slice(0,g);if(!r.utilities.has(m,"functional"))return;let v=l.slice(g+2,-1),y=P(v,":"),b=null;if(y.length===2&&(b=y[0],v=y[1]),v[0]!=="-"&&v[1]!=="-")return;u=[[m,b===null?`[var(${v})]`:`[${b}:var(${v})]`]]}else u=Zt(l,g=>r.utilities.has(g,"functional"));for(let[g,m]of u){let v={kind:"functional",root:g,modifier:d,value:null,variants:n,important:s,raw:t};if(m===null){yield v;continue}{let y=m.indexOf("[");if(y!==-1){if(m[m.length-1]!=="]")return;let x=oe(m.slice(y+1,-1)),$="";for(let V=0;V=Ht&&O<=Gt))break}if(x.length===0||x.trim().length===0)continue;v.value={kind:"arbitrary",dataType:$||null,value:x}}else{let x=p===null||v.modifier?.kind==="arbitrary"?null:`${m}/${p}`;v.value={kind:"named",value:m,fraction:x}}}yield v}}function ct(t){if(t[0]==="["&&t[t.length-1]==="]"){let r=oe(t.slice(1,-1));return r.length===0||r.trim().length===0?null:{kind:"arbitrary",value:r}}if(t[0]==="("&&t[t.length-1]===")"){let r=oe(t.slice(1,-1));return r.length===0||r.trim().length===0||r[0]!=="-"&&r[1]!=="-"?null:{kind:"arbitrary",value:`var(${r})`}}return{kind:"named",value:t}}function Jt(t,r){if(t[0]==="["&&t[t.length-1]==="]"){if(t[1]==="@"&&t.includes("&"))return null;let o=oe(t.slice(1,-1));if(o.length===0||o.trim().length===0)return null;let e=o[0]===">"||o[0]==="+"||o[0]==="~";return!e&&o[0]!=="@"&&!o.includes("&")&&(o=`&:is(${o})`),{kind:"arbitrary",selector:o,relative:e}}{let[o,e=null,n]=P(t,"/");if(n)return null;let s=Zt(o,l=>r.variants.has(l));for(let[l,p]of s)switch(r.variants.kind(l)){case"static":return p!==null||e!==null?null:{kind:"static",root:l};case"functional":{let c=e===null?null:ct(e);if(e!==null&&c===null)return null;if(p===null)return{kind:"functional",root:l,modifier:c,value:null};if(p[p.length-1]==="]"){if(p[0]!=="[")continue;let d=oe(p.slice(1,-1));return d.length===0||d.trim().length===0?null:{kind:"functional",root:l,modifier:c,value:{kind:"arbitrary",value:d}}}if(p[p.length-1]===")"){if(p[0]!=="(")continue;let d=oe(p.slice(1,-1));return d.length===0||d.trim().length===0||d[0]!=="-"&&d[1]!=="-"?null:{kind:"functional",root:l,modifier:c,value:{kind:"arbitrary",value:`var(${d})`}}}return{kind:"functional",root:l,modifier:c,value:{kind:"named",value:p}}}case"compound":{if(p===null)return null;let c=r.parseVariant(p);if(c===null||!r.variants.compoundsWith(l,c))return null;let d=e===null?null:ct(e);return e!==null&&d===null?null:{kind:"compound",root:l,modifier:d,variant:c}}}}return null}function*Zt(t,r){r(t)&&(yield[t,null]);let o=t.lastIndexOf("-");if(o===-1){t[0]==="@"&&r("@")&&(yield["@",t.slice(1)]);return}do{let e=t.slice(0,o);if(r(e)){let n=[e,t.slice(o+1)];if(n[1]==="")break;yield n}o=t.lastIndexOf("-",o-1)}while(o>0)}function ue(t,r,o){if(t===r)return 0;let e=t.indexOf("("),n=r.indexOf("("),s=e===-1?t.replace(/[\d.]+/g,""):t.slice(0,e),l=n===-1?r.replace(/[\d.]+/g,""):r.slice(0,n),p=(s===l?0:s0}function Vo(t){return t==="serif"||t==="sans-serif"||t==="monospace"||t==="cursive"||t==="fantasy"||t==="system-ui"||t==="ui-serif"||t==="ui-sans-serif"||t==="ui-monospace"||t==="ui-rounded"||t==="math"||t==="emoji"||t==="fangsong"}function Eo(t){let r=0;for(let o of P(t,",")){let e=o.charCodeAt(0);if(e>=48&&e<=57)return!1;o.startsWith("var(")||(r+=1)}return r>0}function Ro(t){return t==="xx-small"||t==="x-small"||t==="small"||t==="medium"||t==="large"||t==="x-large"||t==="xx-large"||t==="xxx-large"}function Oo(t){return t==="larger"||t==="smaller"}var te=/[+-]?\d*\.?\d+(?:[eE][+-]?\d+)?/,Ko=new RegExp(`^${te.source}$`);function Po(t){return Ko.test(t)||Ce(t)}var Uo=new RegExp(`^${te.source}%$`);function ft(t){return Uo.test(t)||Ce(t)}var _o=new RegExp(`^${te.source}s*/s*${te.source}$`);function Do(t){return _o.test(t)||Ce(t)}var zo=["cm","mm","Q","in","pc","pt","px","em","ex","ch","rem","lh","rlh","vw","vh","vmin","vmax","vb","vi","svw","svh","lvw","lvh","dvw","dvh","cqw","cqh","cqi","cqb","cqmin","cqmax"],Fo=new RegExp(`^${te.source}(${zo.join("|")})$`);function dt(t){return Fo.test(t)||Ce(t)}function jo(t){let r=0;for(let o of P(t," ")){if(o==="center"||o==="top"||o==="right"||o==="bottom"||o==="left"){r+=1;continue}if(!o.startsWith("var(")){if(dt(o)||ft(o)){r+=1;continue}return!1}}return r>0}function Io(t){let r=0;for(let o of P(t,",")){if(o==="cover"||o==="contain"){r+=1;continue}let e=P(o," ");if(e.length!==1&&e.length!==2)return!1;if(e.every(n=>n==="auto"||dt(n)||ft(n))){r+=1;continue}}return r>0}var Lo=["deg","rad","grad","turn"],Mo=new RegExp(`^${te.source}(${Lo.join("|")})$`);function Bo(t){return Mo.test(t)}var Wo=new RegExp(`^${te.source} +${te.source} +${te.source}$`);function qo(t){return Wo.test(t)}function N(t){let r=Number(t);return Number.isInteger(r)&&r>=0&&String(r)===String(t)}function pt(t){let r=Number(t);return Number.isInteger(r)&&r>0&&String(r)===String(t)}function ge(t){return er(t,.25)}function Me(t){return er(t,.25)}function er(t,r){let o=Number(t);return o>=0&&o%r===0&&String(o)===String(t)}var Ho=new Set(["inset","inherit","initial","revert","unset"]),tr=/^-?(\d+|\.\d+)(.*?)$/g;function ce(t,r){return P(t,",").map(e=>{e=e.trim();let n=P(e," ").filter(d=>d.trim()!==""),s=null,l=null,p=null;for(let d of n)Ho.has(d)||(tr.test(d)?(l===null?l=d:p===null&&(p=d),tr.lastIndex=0):s===null&&(s=d));if(l===null||p===null)return e;let c=r(s??"currentcolor");return s!==null?e.replace(s,c):`${e} ${c}`}).join(", ")}var Yo=/^-?[a-z][a-zA-Z0-9/%._-]*$/,Jo=/^-?[a-z][a-zA-Z0-9/%._-]*-\*$/,mt=class{utilities=new j(()=>[]);completions=new Map;static(r,o){this.utilities.get(r).push({kind:"static",compileFn:o})}functional(r,o,e){this.utilities.get(r).push({kind:"functional",compileFn:o,options:e})}has(r,o){return this.utilities.has(r)&&this.utilities.get(r).some(e=>e.kind===o)}get(r){return this.utilities.has(r)?this.utilities.get(r):[]}getCompletions(r){return this.completions.get(r)?.()??[]}suggest(r,o){this.completions.set(r,o)}keys(r){let o=[];for(let[e,n]of this.utilities.entries())for(let s of n)if(s.kind===r){o.push(e);break}return o}};function S(t,r,o){return U("@property",t,[a("syntax",o?`"${o}"`:'"*"'),a("inherits","false"),...r?[a("initial-value",r)]:[]])}function J(t,r){if(r===null)return t;let o=Number(r);return Number.isNaN(o)||(r=`${o*100}%`),`color-mix(in oklab, ${t} ${r}, transparent)`}function B(t,r,o){if(!r)return t;if(r.kind==="arbitrary")return J(t,r.value);let e=o.resolve(r.value,["--opacity"]);return e?J(t,e):Me(r.value)?J(t,`${r.value}%`):null}function G(t,r,o){let e=null;switch(t.value.value){case"inherit":{e="inherit";break}case"transparent":{e="transparent";break}case"current":{e="currentColor";break}default:{e=r.resolve(t.value.value,o);break}}return e?B(e,t.modifier,r):null}function or(t){let r=new mt;function o(i,f){let h=/(\d+)_(\d+)/g;function*w(T){for(let E of t.keysInNamespaces(T))yield E.replace(h,(C,A,F)=>`${A}.${F}`)}let k=["1/2","1/3","2/3","1/4","2/4","3/4","1/5","2/5","3/5","4/5","1/6","2/6","3/6","4/6","5/6","1/12","2/12","3/12","4/12","5/12","6/12","7/12","8/12","9/12","10/12","11/12"];r.suggest(i,()=>{let T=[];for(let E of f()){if(typeof E=="string"){T.push({values:[E],modifiers:[]});continue}let C=[...E.values??[],...w(E.valueThemeKeys??[])],A=[...E.modifiers??[],...w(E.modifierThemeKeys??[])];E.supportsFractions&&C.push(...k),E.hasDefaultValue&&C.unshift(null),T.push({supportsNegative:E.supportsNegative,values:C,modifiers:A})}return T})}function e(i,f){r.static(i,()=>f.map(h=>typeof h=="function"?h():a(h[0],h[1])))}function n(i,f){function h({negative:w}){return k=>{let T=null;if(k.value)if(k.value.kind==="arbitrary"){if(k.modifier)return;T=k.value.value}else{if(T=t.resolve(k.value.fraction??k.value.value,f.themeKeys??[]),T===null&&f.supportsFractions&&k.value.fraction){let[E,C]=P(k.value.fraction,"/");if(!N(E)||!N(C))return;T=`calc(${k.value.fraction} * 100%)`}if(T===null&&w&&f.handleNegativeBareValue){if(T=f.handleNegativeBareValue(k.value),!T?.includes("/")&&k.modifier)return;if(T!==null)return f.handle(T)}if(T===null&&f.handleBareValue&&(T=f.handleBareValue(k.value),!T?.includes("/")&&k.modifier))return}else{if(k.modifier)return;T=f.defaultValue!==void 0?f.defaultValue:t.resolve(null,f.themeKeys??[])}if(T!==null)return f.handle(w?`calc(${T} * -1)`:T)}}f.supportsNegative&&r.functional(`-${i}`,h({negative:!0})),r.functional(i,h({negative:!1})),o(i,()=>[{supportsNegative:f.supportsNegative,valueThemeKeys:f.themeKeys??[],hasDefaultValue:f.defaultValue!==void 0&&f.defaultValue!==null,supportsFractions:f.supportsFractions}])}function s(i,f){r.functional(i,h=>{if(!h.value)return;let w=null;if(h.value.kind==="arbitrary"?(w=h.value.value,w=B(w,h.modifier,t)):w=G(h,t,f.themeKeys),w!==null)return f.handle(w)}),o(i,()=>[{values:["current","inherit","transparent"],valueThemeKeys:f.themeKeys,modifiers:Array.from({length:21},(h,w)=>`${w*5}`)}])}function l(i,f,h,{supportsNegative:w=!1,supportsFractions:k=!1}={}){w&&r.static(`-${i}-px`,()=>h("-1px")),r.static(`${i}-px`,()=>h("1px")),n(i,{themeKeys:f,supportsFractions:k,supportsNegative:w,defaultValue:null,handleBareValue:({value:T})=>{let E=t.resolve(null,["--spacing"]);return!E||!ge(T)?null:`calc(${E} * ${T})`},handleNegativeBareValue:({value:T})=>{let E=t.resolve(null,["--spacing"]);return!E||!ge(T)?null:`calc(${E} * -${T})`},handle:h}),o(i,()=>[{values:t.get(["--spacing"])?["0","0.5","1","1.5","2","2.5","3","3.5","4","5","6","7","8","9","10","11","12","14","16","20","24","28","32","36","40","44","48","52","56","60","64","72","80","96"]:[],supportsNegative:w,supportsFractions:k,valueThemeKeys:f}])}e("sr-only",[["position","absolute"],["width","1px"],["height","1px"],["padding","0"],["margin","-1px"],["overflow","hidden"],["clip","rect(0, 0, 0, 0)"],["white-space","nowrap"],["border-width","0"]]),e("not-sr-only",[["position","static"],["width","auto"],["height","auto"],["padding","0"],["margin","0"],["overflow","visible"],["clip","auto"],["white-space","normal"]]),e("pointer-events-none",[["pointer-events","none"]]),e("pointer-events-auto",[["pointer-events","auto"]]),e("visible",[["visibility","visible"]]),e("invisible",[["visibility","hidden"]]),e("collapse",[["visibility","collapse"]]),e("static",[["position","static"]]),e("fixed",[["position","fixed"]]),e("absolute",[["position","absolute"]]),e("relative",[["position","relative"]]),e("sticky",[["position","sticky"]]);for(let[i,f]of[["inset","inset"],["inset-x","inset-inline"],["inset-y","inset-block"],["start","inset-inline-start"],["end","inset-inline-end"],["top","top"],["right","right"],["bottom","bottom"],["left","left"]])e(`${i}-auto`,[[f,"auto"]]),e(`${i}-full`,[[f,"100%"]]),e(`-${i}-full`,[[f,"-100%"]]),l(i,["--inset","--spacing"],h=>[a(f,h)],{supportsNegative:!0,supportsFractions:!0});e("isolate",[["isolation","isolate"]]),e("isolation-auto",[["isolation","auto"]]),e("z-auto",[["z-index","auto"]]),n("z",{supportsNegative:!0,handleBareValue:({value:i})=>N(i)?i:null,themeKeys:["--z-index"],handle:i=>[a("z-index",i)]}),o("z",()=>[{supportsNegative:!0,values:["0","10","20","30","40","50"],valueThemeKeys:["--z-index"]}]),e("order-first",[["order","-9999"]]),e("order-last",[["order","9999"]]),e("order-none",[["order","0"]]),n("order",{supportsNegative:!0,handleBareValue:({value:i})=>N(i)?i:null,themeKeys:["--order"],handle:i=>[a("order",i)]}),o("order",()=>[{supportsNegative:!0,values:Array.from({length:12},(i,f)=>`${f+1}`),valueThemeKeys:["--order"]}]),e("col-auto",[["grid-column","auto"]]),n("col",{supportsNegative:!0,handleBareValue:({value:i})=>N(i)?i:null,themeKeys:["--grid-column"],handle:i=>[a("grid-column",i)]}),e("col-span-full",[["grid-column","1 / -1"]]),n("col-span",{handleBareValue:({value:i})=>N(i)?i:null,handle:i=>[a("grid-column",`span ${i} / span ${i}`)]}),e("col-start-auto",[["grid-column-start","auto"]]),n("col-start",{supportsNegative:!0,handleBareValue:({value:i})=>N(i)?i:null,themeKeys:["--grid-column-start"],handle:i=>[a("grid-column-start",i)]}),e("col-end-auto",[["grid-column-end","auto"]]),n("col-end",{supportsNegative:!0,handleBareValue:({value:i})=>N(i)?i:null,themeKeys:["--grid-column-end"],handle:i=>[a("grid-column-end",i)]}),o("col-span",()=>[{values:Array.from({length:12},(i,f)=>`${f+1}`),valueThemeKeys:[]}]),o("col-start",()=>[{supportsNegative:!0,values:Array.from({length:13},(i,f)=>`${f+1}`),valueThemeKeys:["--grid-column-start"]}]),o("col-end",()=>[{supportsNegative:!0,values:Array.from({length:13},(i,f)=>`${f+1}`),valueThemeKeys:["--grid-column-end"]}]),e("row-auto",[["grid-row","auto"]]),n("row",{supportsNegative:!0,handleBareValue:({value:i})=>N(i)?i:null,themeKeys:["--grid-row"],handle:i=>[a("grid-row",i)]}),e("row-span-full",[["grid-row","1 / -1"]]),n("row-span",{themeKeys:[],handleBareValue:({value:i})=>N(i)?i:null,handle:i=>[a("grid-row",`span ${i} / span ${i}`)]}),e("row-start-auto",[["grid-row-start","auto"]]),n("row-start",{supportsNegative:!0,handleBareValue:({value:i})=>N(i)?i:null,themeKeys:["--grid-row-start"],handle:i=>[a("grid-row-start",i)]}),e("row-end-auto",[["grid-row-end","auto"]]),n("row-end",{supportsNegative:!0,handleBareValue:({value:i})=>N(i)?i:null,themeKeys:["--grid-row-end"],handle:i=>[a("grid-row-end",i)]}),o("row-span",()=>[{values:Array.from({length:12},(i,f)=>`${f+1}`),valueThemeKeys:[]}]),o("row-start",()=>[{supportsNegative:!0,values:Array.from({length:13},(i,f)=>`${f+1}`),valueThemeKeys:["--grid-row-start"]}]),o("row-end",()=>[{supportsNegative:!0,values:Array.from({length:13},(i,f)=>`${f+1}`),valueThemeKeys:["--grid-row-end"]}]),e("float-start",[["float","inline-start"]]),e("float-end",[["float","inline-end"]]),e("float-right",[["float","right"]]),e("float-left",[["float","left"]]),e("float-none",[["float","none"]]),e("clear-start",[["clear","inline-start"]]),e("clear-end",[["clear","inline-end"]]),e("clear-right",[["clear","right"]]),e("clear-left",[["clear","left"]]),e("clear-both",[["clear","both"]]),e("clear-none",[["clear","none"]]);for(let[i,f]of[["m","margin"],["mx","margin-inline"],["my","margin-block"],["ms","margin-inline-start"],["me","margin-inline-end"],["mt","margin-top"],["mr","margin-right"],["mb","margin-bottom"],["ml","margin-left"]])e(`${i}-auto`,[[f,"auto"]]),l(i,["--margin","--spacing"],h=>[a(f,h)],{supportsNegative:!0});e("box-border",[["box-sizing","border-box"]]),e("box-content",[["box-sizing","content-box"]]),e("line-clamp-none",[["overflow","visible"],["display","block"],["-webkit-box-orient","horizontal"],["-webkit-line-clamp","unset"]]),n("line-clamp",{themeKeys:["--line-clamp"],handleBareValue:({value:i})=>N(i)?i:null,handle:i=>[a("overflow","hidden"),a("display","-webkit-box"),a("-webkit-box-orient","vertical"),a("-webkit-line-clamp",i)]}),o("line-clamp",()=>[{values:["1","2","3","4","5","6"],valueThemeKeys:["--line-clamp"]}]),e("block",[["display","block"]]),e("inline-block",[["display","inline-block"]]),e("inline",[["display","inline"]]),e("hidden",[["display","none"]]),e("inline-flex",[["display","inline-flex"]]),e("table",[["display","table"]]),e("inline-table",[["display","inline-table"]]),e("table-caption",[["display","table-caption"]]),e("table-cell",[["display","table-cell"]]),e("table-column",[["display","table-column"]]),e("table-column-group",[["display","table-column-group"]]),e("table-footer-group",[["display","table-footer-group"]]),e("table-header-group",[["display","table-header-group"]]),e("table-row-group",[["display","table-row-group"]]),e("table-row",[["display","table-row"]]),e("flow-root",[["display","flow-root"]]),e("flex",[["display","flex"]]),e("grid",[["display","grid"]]),e("inline-grid",[["display","inline-grid"]]),e("contents",[["display","contents"]]),e("list-item",[["display","list-item"]]),e("field-sizing-content",[["field-sizing","content"]]),e("field-sizing-fixed",[["field-sizing","fixed"]]),e("aspect-auto",[["aspect-ratio","auto"]]),e("aspect-square",[["aspect-ratio","1 / 1"]]),n("aspect",{themeKeys:["--aspect"],handleBareValue:({fraction:i})=>{if(i===null)return null;let[f,h]=P(i,"/");return!N(f)||!N(h)?null:i},handle:i=>[a("aspect-ratio",i)]});for(let[i,f]of[["auto","auto"],["full","100%"],["svw","100svw"],["lvw","100lvw"],["dvw","100dvw"],["svh","100svh"],["lvh","100lvh"],["dvh","100dvh"],["min","min-content"],["max","max-content"],["fit","fit-content"]])e(`size-${i}`,[["--tw-sort","size"],["width",f],["height",f]]),e(`w-${i}`,[["width",f]]),e(`h-${i}`,[["height",f]]),e(`min-w-${i}`,[["min-width",f]]),e(`min-h-${i}`,[["min-height",f]]),i!=="auto"&&(e(`max-w-${i}`,[["max-width",f]]),e(`max-h-${i}`,[["max-height",f]]));e("w-screen",[["width","100vw"]]),e("min-w-screen",[["min-width","100vw"]]),e("max-w-screen",[["max-width","100vw"]]),e("h-screen",[["height","100vh"]]),e("min-h-screen",[["min-height","100vh"]]),e("max-h-screen",[["max-height","100vh"]]),e("max-w-none",[["max-width","none"]]),e("max-h-none",[["max-height","none"]]),l("size",["--size","--spacing"],i=>[a("--tw-sort","size"),a("width",i),a("height",i)],{supportsFractions:!0});for(let[i,f,h]of[["w",["--width","--spacing","--container"],"width"],["min-w",["--min-width","--spacing","--container"],"min-width"],["max-w",["--max-width","--spacing","--container"],"max-width"],["h",["--height","--spacing"],"height"],["min-h",["--min-height","--height","--spacing"],"min-height"],["max-h",["--max-height","--height","--spacing"],"max-height"]])l(i,f,w=>[a(h,w)],{supportsFractions:!0});r.static("container",()=>{let i=[...t.namespace("--breakpoint").values()];i.sort((h,w)=>ue(h,w,"asc"));let f=[a("--tw-sort","--tw-container-component"),a("width","100%")];for(let h of i)f.push(U("@media",`(width >= ${h})`,[a("max-width",h)]));return f}),e("flex-auto",[["flex","auto"]]),e("flex-initial",[["flex","0 auto"]]),e("flex-none",[["flex","none"]]),r.functional("flex",i=>{if(i.value){if(i.value.kind==="arbitrary")return i.modifier?void 0:[a("flex",i.value.value)];if(i.value.fraction){let[f,h]=P(i.value.fraction,"/");return!N(f)||!N(h)?void 0:[a("flex",`calc(${i.value.fraction} * 100%)`)]}if(N(i.value.value))return i.modifier?void 0:[a("flex",i.value.value)]}}),o("flex",()=>[{supportsFractions:!0}]),n("shrink",{defaultValue:"1",handleBareValue:({value:i})=>N(i)?i:null,handle:i=>[a("flex-shrink",i)]}),n("grow",{defaultValue:"1",handleBareValue:({value:i})=>N(i)?i:null,handle:i=>[a("flex-grow",i)]}),o("shrink",()=>[{values:["0"],valueThemeKeys:[],hasDefaultValue:!0}]),o("grow",()=>[{values:["0"],valueThemeKeys:[],hasDefaultValue:!0}]),e("basis-auto",[["flex-basis","auto"]]),e("basis-full",[["flex-basis","100%"]]),l("basis",["--flex-basis","--spacing","--container"],i=>[a("flex-basis",i)],{supportsFractions:!0}),e("table-auto",[["table-layout","auto"]]),e("table-fixed",[["table-layout","fixed"]]),e("caption-top",[["caption-side","top"]]),e("caption-bottom",[["caption-side","bottom"]]),e("border-collapse",[["border-collapse","collapse"]]),e("border-separate",[["border-collapse","separate"]]);let p=()=>D([S("--tw-border-spacing-x","0",""),S("--tw-border-spacing-y","0","")]);l("border-spacing",["--border-spacing","--spacing"],i=>[p(),a("--tw-border-spacing-x",i),a("--tw-border-spacing-y",i),a("border-spacing","var(--tw-border-spacing-x) var(--tw-border-spacing-y)")]),l("border-spacing-x",["--border-spacing","--spacing"],i=>[p(),a("--tw-border-spacing-x",i),a("border-spacing","var(--tw-border-spacing-x) var(--tw-border-spacing-y)")]),l("border-spacing-y",["--border-spacing","--spacing"],i=>[p(),a("--tw-border-spacing-y",i),a("border-spacing","var(--tw-border-spacing-x) var(--tw-border-spacing-y)")]),e("origin-center",[["transform-origin","center"]]),e("origin-top",[["transform-origin","top"]]),e("origin-top-right",[["transform-origin","top right"]]),e("origin-right",[["transform-origin","right"]]),e("origin-bottom-right",[["transform-origin","bottom right"]]),e("origin-bottom",[["transform-origin","bottom"]]),e("origin-bottom-left",[["transform-origin","bottom left"]]),e("origin-left",[["transform-origin","left"]]),e("origin-top-left",[["transform-origin","top left"]]),n("origin",{themeKeys:["--transform-origin"],handle:i=>[a("transform-origin",i)]}),e("perspective-origin-center",[["perspective-origin","center"]]),e("perspective-origin-top",[["perspective-origin","top"]]),e("perspective-origin-top-right",[["perspective-origin","top right"]]),e("perspective-origin-right",[["perspective-origin","right"]]),e("perspective-origin-bottom-right",[["perspective-origin","bottom right"]]),e("perspective-origin-bottom",[["perspective-origin","bottom"]]),e("perspective-origin-bottom-left",[["perspective-origin","bottom left"]]),e("perspective-origin-left",[["perspective-origin","left"]]),e("perspective-origin-top-left",[["perspective-origin","top left"]]),n("perspective-origin",{themeKeys:["--perspective-origin"],handle:i=>[a("perspective-origin",i)]}),e("perspective-none",[["perspective","none"]]),n("perspective",{themeKeys:["--perspective"],handle:i=>[a("perspective",i)]});let c=()=>D([S("--tw-translate-x","0"),S("--tw-translate-y","0"),S("--tw-translate-z","0")]);e("translate-none",[["translate","none"]]),e("-translate-full",[c,["--tw-translate-x","-100%"],["--tw-translate-y","-100%"],["translate","var(--tw-translate-x) var(--tw-translate-y)"]]),e("translate-full",[c,["--tw-translate-x","100%"],["--tw-translate-y","100%"],["translate","var(--tw-translate-x) var(--tw-translate-y)"]]),l("translate",["--translate","--spacing"],i=>[c(),a("--tw-translate-x",i),a("--tw-translate-y",i),a("translate","var(--tw-translate-x) var(--tw-translate-y)")],{supportsNegative:!0,supportsFractions:!0});for(let i of["x","y"])e(`-translate-${i}-full`,[c,[`--tw-translate-${i}`,"-100%"],["translate","var(--tw-translate-x) var(--tw-translate-y)"]]),e(`translate-${i}-full`,[c,[`--tw-translate-${i}`,"100%"],["translate","var(--tw-translate-x) var(--tw-translate-y)"]]),l(`translate-${i}`,["--translate","--spacing"],f=>[c(),a(`--tw-translate-${i}`,f),a("translate","var(--tw-translate-x) var(--tw-translate-y)")],{supportsNegative:!0,supportsFractions:!0});l("translate-z",["--translate","--spacing"],i=>[c(),a("--tw-translate-z",i),a("translate","var(--tw-translate-x) var(--tw-translate-y) var(--tw-translate-z)")],{supportsNegative:!0}),e("translate-3d",[c,["translate","var(--tw-translate-x) var(--tw-translate-y) var(--tw-translate-z)"]]);let d=()=>D([S("--tw-scale-x","1"),S("--tw-scale-y","1"),S("--tw-scale-z","1")]);e("scale-none",[["scale","none"]]);function u({negative:i}){return f=>{if(!f.value||f.modifier)return;let h;return f.value.kind==="arbitrary"?(h=f.value.value,[a("scale",h)]):(h=t.resolve(f.value.value,["--scale"]),!h&&N(f.value.value)&&(h=`${f.value.value}%`),h?(h=i?`calc(${h} * -1)`:h,[d(),a("--tw-scale-x",h),a("--tw-scale-y",h),a("--tw-scale-z",h),a("scale","var(--tw-scale-x) var(--tw-scale-y)")]):void 0)}}r.functional("-scale",u({negative:!0})),r.functional("scale",u({negative:!1})),o("scale",()=>[{supportsNegative:!0,values:["0","50","75","90","95","100","105","110","125","150","200"],valueThemeKeys:["--scale"]}]);for(let i of["x","y","z"])n(`scale-${i}`,{supportsNegative:!0,themeKeys:["--scale"],handleBareValue:({value:f})=>N(f)?`${f}%`:null,handle:f=>[d(),a(`--tw-scale-${i}`,f),a("scale",`var(--tw-scale-x) var(--tw-scale-y)${i==="z"?" var(--tw-scale-z)":""}`)]}),o(`scale-${i}`,()=>[{supportsNegative:!0,values:["0","50","75","90","95","100","105","110","125","150","200"],valueThemeKeys:["--scale"]}]);e("scale-3d",[d,["scale","var(--tw-scale-x) var(--tw-scale-y) var(--tw-scale-z)"]]),e("rotate-none",[["rotate","none"]]);function g({negative:i}){return f=>{if(!f.value||f.modifier)return;let h;if(f.value.kind==="arbitrary"){h=f.value.value;let w=f.value.dataType??I(h,["angle","vector"]);if(w==="vector")return[a("rotate",`${h} var(--tw-rotate)`)];if(w!=="angle")return[a("rotate",h)]}else if(h=t.resolve(f.value.value,["--rotate"]),!h&&N(f.value.value)&&(h=`${f.value.value}deg`),!h)return;return[a("rotate",i?`calc(${h} * -1)`:h)]}}r.functional("-rotate",g({negative:!0})),r.functional("rotate",g({negative:!1})),o("rotate",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12","45","90","180"],valueThemeKeys:["--rotate"]}]);{let i=["var(--tw-rotate-x)","var(--tw-rotate-y)","var(--tw-rotate-z)","var(--tw-skew-x)","var(--tw-skew-y)"].join(" "),f=()=>D([S("--tw-rotate-x","rotateX(0)"),S("--tw-rotate-y","rotateY(0)"),S("--tw-rotate-z","rotateZ(0)"),S("--tw-skew-x","skewX(0)"),S("--tw-skew-y","skewY(0)")]);for(let h of["x","y","z"])n(`rotate-${h}`,{supportsNegative:!0,themeKeys:["--rotate"],handleBareValue:({value:w})=>N(w)?`${w}deg`:null,handle:w=>[f(),a(`--tw-rotate-${h}`,`rotate${h.toUpperCase()}(${w})`),a("transform",i)]}),o(`rotate-${h}`,()=>[{supportsNegative:!0,values:["0","1","2","3","6","12","45","90","180"],valueThemeKeys:["--rotate"]}]);n("skew",{supportsNegative:!0,themeKeys:["--skew"],handleBareValue:({value:h})=>N(h)?`${h}deg`:null,handle:h=>[f(),a("--tw-skew-x",`skewX(${h})`),a("--tw-skew-y",`skewY(${h})`),a("transform",i)]}),n("skew-x",{supportsNegative:!0,themeKeys:["--skew"],handleBareValue:({value:h})=>N(h)?`${h}deg`:null,handle:h=>[f(),a("--tw-skew-x",`skewX(${h})`),a("transform",i)]}),n("skew-y",{supportsNegative:!0,themeKeys:["--skew"],handleBareValue:({value:h})=>N(h)?`${h}deg`:null,handle:h=>[f(),a("--tw-skew-y",`skewY(${h})`),a("transform",i)]}),o("skew",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12"],valueThemeKeys:["--skew"]}]),o("skew-x",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12"],valueThemeKeys:["--skew"]}]),o("skew-y",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12"],valueThemeKeys:["--skew"]}]),r.functional("transform",h=>{if(h.modifier)return;let w=null;if(h.value?h.value.kind==="arbitrary"&&(w=h.value.value):w=i,w!==null)return[f(),a("transform",w)]}),o("transform",()=>[{hasDefaultValue:!0}]),e("transform-cpu",[["transform",i]]),e("transform-gpu",[["transform",`translateZ(0) ${i}`]]),e("transform-none",[["transform","none"]])}e("transform-flat",[["transform-style","flat"]]),e("transform-3d",[["transform-style","preserve-3d"]]),e("transform-content",[["transform-box","content-box"]]),e("transform-border",[["transform-box","border-box"]]),e("transform-fill",[["transform-box","fill-box"]]),e("transform-stroke",[["transform-box","stroke-box"]]),e("transform-view",[["transform-box","view-box"]]),e("backface-visible",[["backface-visibility","visible"]]),e("backface-hidden",[["backface-visibility","hidden"]]);for(let i of["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out"])e(`cursor-${i}`,[["cursor",i]]);n("cursor",{themeKeys:["--cursor"],handle:i=>[a("cursor",i)]});for(let i of["auto","none","manipulation"])e(`touch-${i}`,[["touch-action",i]]);let m=()=>D([S("--tw-pan-x"),S("--tw-pan-y"),S("--tw-pinch-zoom")]);for(let i of["x","left","right"])e(`touch-pan-${i}`,[m,["--tw-pan-x",`pan-${i}`],["touch-action","var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)"]]);for(let i of["y","up","down"])e(`touch-pan-${i}`,[m,["--tw-pan-y",`pan-${i}`],["touch-action","var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)"]]);e("touch-pinch-zoom",[m,["--tw-pinch-zoom","pinch-zoom"],["touch-action","var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)"]]);for(let i of["none","text","all","auto"])e(`select-${i}`,[["-webkit-user-select",i],["user-select",i]]);e("resize-none",[["resize","none"]]),e("resize-x",[["resize","horizontal"]]),e("resize-y",[["resize","vertical"]]),e("resize",[["resize","both"]]),e("snap-none",[["scroll-snap-type","none"]]);let v=()=>D([S("--tw-scroll-snap-strictness","proximity","*")]);for(let i of["x","y","both"])e(`snap-${i}`,[v,["scroll-snap-type",`${i} var(--tw-scroll-snap-strictness)`]]);e("snap-mandatory",[v,["--tw-scroll-snap-strictness","mandatory"]]),e("snap-proximity",[v,["--tw-scroll-snap-strictness","proximity"]]),e("snap-align-none",[["scroll-snap-align","none"]]),e("snap-start",[["scroll-snap-align","start"]]),e("snap-end",[["scroll-snap-align","end"]]),e("snap-center",[["scroll-snap-align","center"]]),e("snap-normal",[["scroll-snap-stop","normal"]]),e("snap-always",[["scroll-snap-stop","always"]]);for(let[i,f]of[["scroll-m","scroll-margin"],["scroll-mx","scroll-margin-inline"],["scroll-my","scroll-margin-block"],["scroll-ms","scroll-margin-inline-start"],["scroll-me","scroll-margin-inline-end"],["scroll-mt","scroll-margin-top"],["scroll-mr","scroll-margin-right"],["scroll-mb","scroll-margin-bottom"],["scroll-ml","scroll-margin-left"]])l(i,["--scroll-margin","--spacing"],h=>[a(f,h)],{supportsNegative:!0});for(let[i,f]of[["scroll-p","scroll-padding"],["scroll-px","scroll-padding-inline"],["scroll-py","scroll-padding-block"],["scroll-ps","scroll-padding-inline-start"],["scroll-pe","scroll-padding-inline-end"],["scroll-pt","scroll-padding-top"],["scroll-pr","scroll-padding-right"],["scroll-pb","scroll-padding-bottom"],["scroll-pl","scroll-padding-left"]])l(i,["--scroll-padding","--spacing"],h=>[a(f,h)]);e("list-inside",[["list-style-position","inside"]]),e("list-outside",[["list-style-position","outside"]]),e("list-none",[["list-style-type","none"]]),e("list-disc",[["list-style-type","disc"]]),e("list-decimal",[["list-style-type","decimal"]]),n("list",{themeKeys:["--list-style-type"],handle:i=>[a("list-style-type",i)]}),e("list-image-none",[["list-style-image","none"]]),n("list-image",{themeKeys:["--list-style-image"],handle:i=>[a("list-style-image",i)]}),e("appearance-none",[["appearance","none"]]),e("appearance-auto",[["appearance","auto"]]),e("scheme-normal",[["color-scheme","normal"]]),e("scheme-dark",[["color-scheme","dark"]]),e("scheme-light",[["color-scheme","light"]]),e("scheme-light-dark",[["color-scheme","light dark"]]),e("scheme-only-dark",[["color-scheme","only dark"]]),e("scheme-only-light",[["color-scheme","only light"]]),e("columns-auto",[["columns","auto"]]),n("columns",{themeKeys:["--columns","--container"],handleBareValue:({value:i})=>N(i)?i:null,handle:i=>[a("columns",i)]}),o("columns",()=>[{values:Array.from({length:12},(i,f)=>`${f+1}`),valueThemeKeys:["--columns","--container"]}]);for(let i of["auto","avoid","all","avoid-page","page","left","right","column"])e(`break-before-${i}`,[["break-before",i]]);for(let i of["auto","avoid","avoid-page","avoid-column"])e(`break-inside-${i}`,[["break-inside",i]]);for(let i of["auto","avoid","all","avoid-page","page","left","right","column"])e(`break-after-${i}`,[["break-after",i]]);e("grid-flow-row",[["grid-auto-flow","row"]]),e("grid-flow-col",[["grid-auto-flow","column"]]),e("grid-flow-dense",[["grid-auto-flow","dense"]]),e("grid-flow-row-dense",[["grid-auto-flow","row dense"]]),e("grid-flow-col-dense",[["grid-auto-flow","column dense"]]),e("auto-cols-auto",[["grid-auto-columns","auto"]]),e("auto-cols-min",[["grid-auto-columns","min-content"]]),e("auto-cols-max",[["grid-auto-columns","max-content"]]),e("auto-cols-fr",[["grid-auto-columns","minmax(0, 1fr)"]]),n("auto-cols",{themeKeys:["--grid-auto-columns"],handle:i=>[a("grid-auto-columns",i)]}),e("auto-rows-auto",[["grid-auto-rows","auto"]]),e("auto-rows-min",[["grid-auto-rows","min-content"]]),e("auto-rows-max",[["grid-auto-rows","max-content"]]),e("auto-rows-fr",[["grid-auto-rows","minmax(0, 1fr)"]]),n("auto-rows",{themeKeys:["--grid-auto-rows"],handle:i=>[a("grid-auto-rows",i)]}),e("grid-cols-none",[["grid-template-columns","none"]]),e("grid-cols-subgrid",[["grid-template-columns","subgrid"]]),n("grid-cols",{themeKeys:["--grid-template-columns"],handleBareValue:({value:i})=>pt(i)?`repeat(${i}, minmax(0, 1fr))`:null,handle:i=>[a("grid-template-columns",i)]}),e("grid-rows-none",[["grid-template-rows","none"]]),e("grid-rows-subgrid",[["grid-template-rows","subgrid"]]),n("grid-rows",{themeKeys:["--grid-template-rows"],handleBareValue:({value:i})=>pt(i)?`repeat(${i}, minmax(0, 1fr))`:null,handle:i=>[a("grid-template-rows",i)]}),o("grid-cols",()=>[{values:Array.from({length:12},(i,f)=>`${f+1}`),valueThemeKeys:["--grid-template-columns"]}]),o("grid-rows",()=>[{values:Array.from({length:12},(i,f)=>`${f+1}`),valueThemeKeys:["--grid-template-rows"]}]),e("flex-row",[["flex-direction","row"]]),e("flex-row-reverse",[["flex-direction","row-reverse"]]),e("flex-col",[["flex-direction","column"]]),e("flex-col-reverse",[["flex-direction","column-reverse"]]),e("flex-wrap",[["flex-wrap","wrap"]]),e("flex-nowrap",[["flex-wrap","nowrap"]]),e("flex-wrap-reverse",[["flex-wrap","wrap-reverse"]]),e("place-content-center",[["place-content","center"]]),e("place-content-start",[["place-content","start"]]),e("place-content-end",[["place-content","end"]]),e("place-content-between",[["place-content","space-between"]]),e("place-content-around",[["place-content","space-around"]]),e("place-content-evenly",[["place-content","space-evenly"]]),e("place-content-baseline",[["place-content","baseline"]]),e("place-content-stretch",[["place-content","stretch"]]),e("place-items-center",[["place-items","center"]]),e("place-items-start",[["place-items","start"]]),e("place-items-end",[["place-items","end"]]),e("place-items-baseline",[["place-items","baseline"]]),e("place-items-stretch",[["place-items","stretch"]]),e("content-normal",[["align-content","normal"]]),e("content-center",[["align-content","center"]]),e("content-start",[["align-content","flex-start"]]),e("content-end",[["align-content","flex-end"]]),e("content-between",[["align-content","space-between"]]),e("content-around",[["align-content","space-around"]]),e("content-evenly",[["align-content","space-evenly"]]),e("content-baseline",[["align-content","baseline"]]),e("content-stretch",[["align-content","stretch"]]),e("items-center",[["align-items","center"]]),e("items-start",[["align-items","flex-start"]]),e("items-end",[["align-items","flex-end"]]),e("items-baseline",[["align-items","baseline"]]),e("items-stretch",[["align-items","stretch"]]),e("justify-normal",[["justify-content","normal"]]),e("justify-center",[["justify-content","center"]]),e("justify-start",[["justify-content","flex-start"]]),e("justify-end",[["justify-content","flex-end"]]),e("justify-between",[["justify-content","space-between"]]),e("justify-around",[["justify-content","space-around"]]),e("justify-evenly",[["justify-content","space-evenly"]]),e("justify-baseline",[["justify-content","baseline"]]),e("justify-stretch",[["justify-content","stretch"]]),e("justify-items-normal",[["justify-items","normal"]]),e("justify-items-center",[["justify-items","center"]]),e("justify-items-start",[["justify-items","start"]]),e("justify-items-end",[["justify-items","end"]]),e("justify-items-stretch",[["justify-items","stretch"]]),l("gap",["--gap","--spacing"],i=>[a("gap",i)]),l("gap-x",["--gap","--spacing"],i=>[a("column-gap",i)]),l("gap-y",["--gap","--spacing"],i=>[a("row-gap",i)]),l("space-x",["--space","--spacing"],i=>[D([S("--tw-space-x-reverse","0")]),z(":where(& > :not(:last-child))",[a("--tw-sort","row-gap"),a("--tw-space-x-reverse","0"),a("margin-inline-start",`calc(${i} * var(--tw-space-x-reverse))`),a("margin-inline-end",`calc(${i} * calc(1 - var(--tw-space-x-reverse)))`)])],{supportsNegative:!0}),l("space-y",["--space","--spacing"],i=>[D([S("--tw-space-y-reverse","0")]),z(":where(& > :not(:last-child))",[a("--tw-sort","column-gap"),a("--tw-space-y-reverse","0"),a("margin-block-start",`calc(${i} * var(--tw-space-y-reverse))`),a("margin-block-end",`calc(${i} * calc(1 - var(--tw-space-y-reverse)))`)])],{supportsNegative:!0}),e("space-x-reverse",[()=>D([S("--tw-space-x-reverse","0")]),()=>z(":where(& > :not(:last-child))",[a("--tw-sort","row-gap"),a("--tw-space-x-reverse","1")])]),e("space-y-reverse",[()=>D([S("--tw-space-y-reverse","0")]),()=>z(":where(& > :not(:last-child))",[a("--tw-sort","column-gap"),a("--tw-space-y-reverse","1")])]),e("accent-auto",[["accent-color","auto"]]),s("accent",{themeKeys:["--accent-color","--color"],handle:i=>[a("accent-color",i)]}),s("caret",{themeKeys:["--caret-color","--color"],handle:i=>[a("caret-color",i)]}),s("divide",{themeKeys:["--divide-color","--color"],handle:i=>[z(":where(& > :not(:last-child))",[a("--tw-sort","divide-color"),a("border-color",i)])]}),e("place-self-auto",[["place-self","auto"]]),e("place-self-start",[["place-self","start"]]),e("place-self-end",[["place-self","end"]]),e("place-self-center",[["place-self","center"]]),e("place-self-stretch",[["place-self","stretch"]]),e("self-auto",[["align-self","auto"]]),e("self-start",[["align-self","flex-start"]]),e("self-end",[["align-self","flex-end"]]),e("self-center",[["align-self","center"]]),e("self-stretch",[["align-self","stretch"]]),e("self-baseline",[["align-self","baseline"]]),e("justify-self-auto",[["justify-self","auto"]]),e("justify-self-start",[["justify-self","flex-start"]]),e("justify-self-end",[["justify-self","flex-end"]]),e("justify-self-center",[["justify-self","center"]]),e("justify-self-stretch",[["justify-self","stretch"]]);for(let i of["auto","hidden","clip","visible","scroll"])e(`overflow-${i}`,[["overflow",i]]),e(`overflow-x-${i}`,[["overflow-x",i]]),e(`overflow-y-${i}`,[["overflow-y",i]]);for(let i of["auto","contain","none"])e(`overscroll-${i}`,[["overscroll-behavior",i]]),e(`overscroll-x-${i}`,[["overscroll-behavior-x",i]]),e(`overscroll-y-${i}`,[["overscroll-behavior-y",i]]);e("scroll-auto",[["scroll-behavior","auto"]]),e("scroll-smooth",[["scroll-behavior","smooth"]]),e("truncate",[["overflow","hidden"],["text-overflow","ellipsis"],["white-space","nowrap"]]),e("text-ellipsis",[["text-overflow","ellipsis"]]),e("text-clip",[["text-overflow","clip"]]),e("hyphens-none",[["-webkit-hyphens","none"],["hyphens","none"]]),e("hyphens-manual",[["-webkit-hyphens","manual"],["hyphens","manual"]]),e("hyphens-auto",[["-webkit-hyphens","auto"],["hyphens","auto"]]),e("whitespace-normal",[["white-space","normal"]]),e("whitespace-nowrap",[["white-space","nowrap"]]),e("whitespace-pre",[["white-space","pre"]]),e("whitespace-pre-line",[["white-space","pre-line"]]),e("whitespace-pre-wrap",[["white-space","pre-wrap"]]),e("whitespace-break-spaces",[["white-space","break-spaces"]]),e("text-wrap",[["text-wrap","wrap"]]),e("text-nowrap",[["text-wrap","nowrap"]]),e("text-balance",[["text-wrap","balance"]]),e("text-pretty",[["text-wrap","pretty"]]),e("break-normal",[["overflow-wrap","normal"],["word-break","normal"]]),e("break-words",[["overflow-wrap","break-word"]]),e("break-all",[["word-break","break-all"]]),e("break-keep",[["word-break","keep-all"]]),!1;for(let[i,f]of[["rounded",["border-radius"]],["rounded-s",["border-start-start-radius","border-end-start-radius"]],["rounded-e",["border-start-end-radius","border-end-end-radius"]],["rounded-t",["border-top-left-radius","border-top-right-radius"]],["rounded-r",["border-top-right-radius","border-bottom-right-radius"]],["rounded-b",["border-bottom-right-radius","border-bottom-left-radius"]],["rounded-l",["border-top-left-radius","border-bottom-left-radius"]],["rounded-ss",["border-start-start-radius"]],["rounded-se",["border-start-end-radius"]],["rounded-ee",["border-end-end-radius"]],["rounded-es",["border-end-start-radius"]],["rounded-tl",["border-top-left-radius"]],["rounded-tr",["border-top-right-radius"]],["rounded-br",["border-bottom-right-radius"]],["rounded-bl",["border-bottom-left-radius"]]])e(`${i}-none`,f.map(h=>[h,"0"])),e(`${i}-full`,f.map(h=>[h,"calc(infinity * 1px)"])),n(i,{themeKeys:["--radius"],handle:h=>f.map(w=>a(w,h))});e("border-solid",[["--tw-border-style","solid"],["border-style","solid"]]),e("border-dashed",[["--tw-border-style","dashed"],["border-style","dashed"]]),e("border-dotted",[["--tw-border-style","dotted"],["border-style","dotted"]]),e("border-double",[["--tw-border-style","double"],["border-style","double"]]),e("border-hidden",[["--tw-border-style","hidden"],["border-style","hidden"]]),e("border-none",[["--tw-border-style","none"],["border-style","none"]]);{let f=function(h,w){r.functional(h,k=>{if(!k.value){if(k.modifier)return;let T=t.get(["--default-border-width"])??"1px",E=w.width(T);return E?[i(),...E]:void 0}if(k.value.kind==="arbitrary"){let T=k.value.value;switch(k.value.dataType??I(T,["color","line-width","length"])){case"line-width":case"length":{if(k.modifier)return;let C=w.width(T);return C?[i(),...C]:void 0}default:return T=B(T,k.modifier,t),T===null?void 0:w.color(T)}}{let T=G(k,t,["--border-color","--color"]);if(T)return w.color(T)}{if(k.modifier)return;let T=t.resolve(k.value.value,["--border-width"]);if(T){let E=w.width(T);return E?[i(),...E]:void 0}if(N(k.value.value)){let E=w.width(`${k.value.value}px`);return E?[i(),...E]:void 0}}}),o(h,()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--border-color","--color"],modifiers:Array.from({length:21},(k,T)=>`${T*5}`),hasDefaultValue:!0},{values:["0","2","4","8"],valueThemeKeys:["--border-width"]}])};var x=f;let i=()=>D([S("--tw-border-style","solid")]);f("border",{width:h=>[a("border-style","var(--tw-border-style)"),a("border-width",h)],color:h=>[a("border-color",h)]}),f("border-x",{width:h=>[a("border-inline-style","var(--tw-border-style)"),a("border-inline-width",h)],color:h=>[a("border-inline-color",h)]}),f("border-y",{width:h=>[a("border-block-style","var(--tw-border-style)"),a("border-block-width",h)],color:h=>[a("border-block-color",h)]}),f("border-s",{width:h=>[a("border-inline-start-style","var(--tw-border-style)"),a("border-inline-start-width",h)],color:h=>[a("border-inline-start-color",h)]}),f("border-e",{width:h=>[a("border-inline-end-style","var(--tw-border-style)"),a("border-inline-end-width",h)],color:h=>[a("border-inline-end-color",h)]}),f("border-t",{width:h=>[a("border-top-style","var(--tw-border-style)"),a("border-top-width",h)],color:h=>[a("border-top-color",h)]}),f("border-r",{width:h=>[a("border-right-style","var(--tw-border-style)"),a("border-right-width",h)],color:h=>[a("border-right-color",h)]}),f("border-b",{width:h=>[a("border-bottom-style","var(--tw-border-style)"),a("border-bottom-width",h)],color:h=>[a("border-bottom-color",h)]}),f("border-l",{width:h=>[a("border-left-style","var(--tw-border-style)"),a("border-left-width",h)],color:h=>[a("border-left-color",h)]}),n("divide-x",{defaultValue:t.get(["--default-border-width"])??"1px",themeKeys:["--divide-width","--border-width"],handleBareValue:({value:h})=>N(h)?`${h}px`:null,handle:h=>[D([S("--tw-divide-x-reverse","0")]),z(":where(& > :not(:last-child))",[a("--tw-sort","divide-x-width"),i(),a("--tw-divide-x-reverse","0"),a("border-inline-style","var(--tw-border-style)"),a("border-inline-start-width",`calc(${h} * var(--tw-divide-x-reverse))`),a("border-inline-end-width",`calc(${h} * calc(1 - var(--tw-divide-x-reverse)))`)])]}),n("divide-y",{defaultValue:t.get(["--default-border-width"])??"1px",themeKeys:["--divide-width","--border-width"],handleBareValue:({value:h})=>N(h)?`${h}px`:null,handle:h=>[D([S("--tw-divide-y-reverse","0")]),z(":where(& > :not(:last-child))",[a("--tw-sort","divide-y-width"),i(),a("--tw-divide-y-reverse","0"),a("border-bottom-style","var(--tw-border-style)"),a("border-top-style","var(--tw-border-style)"),a("border-top-width",`calc(${h} * var(--tw-divide-y-reverse))`),a("border-bottom-width",`calc(${h} * calc(1 - var(--tw-divide-y-reverse)))`)])]}),o("divide-x",()=>[{values:["0","2","4","8"],valueThemeKeys:["--divide-width","--border-width"],hasDefaultValue:!0}]),o("divide-y",()=>[{values:["0","2","4","8"],valueThemeKeys:["--divide-width","--border-width"],hasDefaultValue:!0}]),e("divide-x-reverse",[()=>D([S("--tw-divide-x-reverse","0")]),()=>z(":where(& > :not(:last-child))",[a("--tw-divide-x-reverse","1")])]),e("divide-y-reverse",[()=>D([S("--tw-divide-y-reverse","0")]),()=>z(":where(& > :not(:last-child))",[a("--tw-divide-y-reverse","1")])]);for(let h of["solid","dashed","dotted","double","none"])e(`divide-${h}`,[()=>z(":where(& > :not(:last-child))",[a("--tw-sort","divide-style"),a("--tw-border-style",h),a("border-style",h)])])}e("bg-auto",[["background-size","auto"]]),e("bg-cover",[["background-size","cover"]]),e("bg-contain",[["background-size","contain"]]),e("bg-fixed",[["background-attachment","fixed"]]),e("bg-local",[["background-attachment","local"]]),e("bg-scroll",[["background-attachment","scroll"]]),e("bg-center",[["background-position","center"]]),e("bg-top",[["background-position","top"]]),e("bg-right-top",[["background-position","right top"]]),e("bg-right",[["background-position","right"]]),e("bg-right-bottom",[["background-position","right bottom"]]),e("bg-bottom",[["background-position","bottom"]]),e("bg-left-bottom",[["background-position","left bottom"]]),e("bg-left",[["background-position","left"]]),e("bg-left-top",[["background-position","left top"]]),e("bg-repeat",[["background-repeat","repeat"]]),e("bg-no-repeat",[["background-repeat","no-repeat"]]),e("bg-repeat-x",[["background-repeat","repeat-x"]]),e("bg-repeat-y",[["background-repeat","repeat-y"]]),e("bg-repeat-round",[["background-repeat","round"]]),e("bg-repeat-space",[["background-repeat","space"]]),e("bg-none",[["background-image","none"]]);{let h=function(T){let E="in oklab";if(T?.kind==="named")switch(T.value){case"longer":case"shorter":case"increasing":case"decreasing":E=`in oklch ${T.value} hue`;break;default:E=`in ${T.value}`}else T?.kind==="arbitrary"&&(E=T.value);return E},w=function({negative:T}){return E=>{if(!E.value)return;if(E.value.kind==="arbitrary"){if(E.modifier)return;let F=E.value.value;switch(E.value.dataType??I(F,["angle"])){case"angle":return F=T?`calc(${F} * -1)`:`${F}`,[a("--tw-gradient-position",F),a("background-image",`linear-gradient(var(--tw-gradient-stops,${F}))`)];default:return T?void 0:[a("--tw-gradient-position",F),a("background-image",`linear-gradient(var(--tw-gradient-stops,${F}))`)]}}let C=E.value.value;if(!T&&f.has(C))C=f.get(C);else if(N(C))C=T?`calc(${C}deg * -1)`:`${C}deg`;else return;let A=h(E.modifier);return[a("--tw-gradient-position",`${C} ${A}`),a("background-image","linear-gradient(var(--tw-gradient-stops))")]}},k=function({negative:T}){return E=>{if(E.value?.kind==="arbitrary"){if(E.modifier)return;let F=E.value.value;return[a("--tw-gradient-position",F),a("background-image",`conic-gradient(var(--tw-gradient-stops,${F}))`)]}let C=h(E.modifier);if(!E.value)return[a("--tw-gradient-position",C),a("background-image","conic-gradient(var(--tw-gradient-stops))")];let A=E.value.value;if(N(A))return A=T?`calc(${A} * -1)`:`${A}deg`,[a("--tw-gradient-position",`from ${A} ${C}`),a("background-image","conic-gradient(var(--tw-gradient-stops))")]}};var $=h,V=w,O=k;let i=["oklab","oklch","srgb","hsl","longer","shorter","increasing","decreasing"],f=new Map([["to-t","to top"],["to-tr","to top right"],["to-r","to right"],["to-br","to bottom right"],["to-b","to bottom"],["to-bl","to bottom left"],["to-l","to left"],["to-tl","to top left"]]);r.functional("-bg-linear",w({negative:!0})),r.functional("bg-linear",w({negative:!1})),o("bg-linear",()=>[{values:[...f.keys()],modifiers:i},{values:["0","30","60","90","120","150","180","210","240","270","300","330"],supportsNegative:!0,modifiers:i}]),r.functional("-bg-conic",k({negative:!0})),r.functional("bg-conic",k({negative:!1})),o("bg-conic",()=>[{hasDefaultValue:!0,modifiers:i},{values:["0","30","60","90","120","150","180","210","240","270","300","330"],supportsNegative:!0,modifiers:i}]),r.functional("bg-radial",T=>{if(!T.value){let E=h(T.modifier);return[a("--tw-gradient-position",E),a("background-image","radial-gradient(var(--tw-gradient-stops))")]}if(T.value.kind==="arbitrary"){if(T.modifier)return;let E=T.value.value;return[a("--tw-gradient-position",E),a("background-image",`radial-gradient(var(--tw-gradient-stops,${E}))`)]}}),o("bg-radial",()=>[{hasDefaultValue:!0,modifiers:i}])}r.functional("bg",i=>{if(i.value){if(i.value.kind==="arbitrary"){let f=i.value.value;switch(i.value.dataType??I(f,["image","color","percentage","position","bg-size","length","url"])){case"percentage":case"position":return i.modifier?void 0:[a("background-position",f)];case"bg-size":case"length":case"size":return i.modifier?void 0:[a("background-size",f)];case"image":case"url":return i.modifier?void 0:[a("background-image",f)];default:return f=B(f,i.modifier,t),f===null?void 0:[a("background-color",f)]}}{let f=G(i,t,["--background-color","--color"]);if(f)return[a("background-color",f)]}{if(i.modifier)return;let f=t.resolve(i.value.value,["--background-image"]);if(f)return[a("background-image",f)]}}}),o("bg",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--background-color","--color"],modifiers:Array.from({length:21},(i,f)=>`${f*5}`)},{values:[],valueThemeKeys:["--background-image"]}]);let y=()=>D([S("--tw-gradient-position"),S("--tw-gradient-from","#0000",""),S("--tw-gradient-via","#0000",""),S("--tw-gradient-to","#0000",""),S("--tw-gradient-stops"),S("--tw-gradient-via-stops"),S("--tw-gradient-from-position","0%",""),S("--tw-gradient-via-position","50%",""),S("--tw-gradient-to-position","100%","")]);function b(i,f){r.functional(i,h=>{if(h.value){if(h.value.kind==="arbitrary"){let w=h.value.value;switch(h.value.dataType??I(w,["color","length","percentage"])){case"length":case"percentage":return h.modifier?void 0:f.position(w);default:return w=B(w,h.modifier,t),w===null?void 0:f.color(w)}}{let w=G(h,t,["--background-color","--color"]);if(w)return f.color(w)}{if(h.modifier)return;let w=t.resolve(h.value.value,["--gradient-color-stop-positions"]);if(w)return f.position(w);if(h.value.value[h.value.value.length-1]==="%"&&N(h.value.value.slice(0,-1)))return f.position(h.value.value)}}}),o(i,()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--background-color","--color"],modifiers:Array.from({length:21},(h,w)=>`${w*5}`)},{values:Array.from({length:21},(h,w)=>`${w*5}%`),valueThemeKeys:["--gradient-color-stop-positions"]}])}b("from",{color:i=>[y(),a("--tw-sort","--tw-gradient-from"),a("--tw-gradient-from",i),a("--tw-gradient-stops","var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))")],position:i=>[y(),a("--tw-gradient-from-position",i)]}),e("via-none",[["--tw-gradient-via-stops","initial"]]),b("via",{color:i=>[y(),a("--tw-sort","--tw-gradient-via"),a("--tw-gradient-via",i),a("--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)"),a("--tw-gradient-stops","var(--tw-gradient-via-stops)")],position:i=>[y(),a("--tw-gradient-via-position",i)]}),b("to",{color:i=>[y(),a("--tw-sort","--tw-gradient-to"),a("--tw-gradient-to",i),a("--tw-gradient-stops","var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))")],position:i=>[y(),a("--tw-gradient-to-position",i)]}),e("box-decoration-slice",[["-webkit-box-decoration-break","slice"],["box-decoration-break","slice"]]),e("box-decoration-clone",[["-webkit-box-decoration-break","clone"],["box-decoration-break","clone"]]),e("bg-clip-text",[["background-clip","text"]]),e("bg-clip-border",[["background-clip","border-box"]]),e("bg-clip-padding",[["background-clip","padding-box"]]),e("bg-clip-content",[["background-clip","content-box"]]),e("bg-origin-border",[["background-origin","border-box"]]),e("bg-origin-padding",[["background-origin","padding-box"]]),e("bg-origin-content",[["background-origin","content-box"]]);for(let i of["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"])e(`bg-blend-${i}`,[["background-blend-mode",i]]),e(`mix-blend-${i}`,[["mix-blend-mode",i]]);e("mix-blend-plus-darker",[["mix-blend-mode","plus-darker"]]),e("mix-blend-plus-lighter",[["mix-blend-mode","plus-lighter"]]),e("fill-none",[["fill","none"]]),r.functional("fill",i=>{if(!i.value)return;if(i.value.kind==="arbitrary"){let h=B(i.value.value,i.modifier,t);return h===null?void 0:[a("fill",h)]}let f=G(i,t,["--fill","--color"]);if(f)return[a("fill",f)]}),o("fill",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--fill","--color"],modifiers:Array.from({length:21},(i,f)=>`${f*5}`)}]),e("stroke-none",[["stroke","none"]]),r.functional("stroke",i=>{if(i.value){if(i.value.kind==="arbitrary"){let f=i.value.value;switch(i.value.dataType??I(f,["color","number","length","percentage"])){case"number":case"length":case"percentage":return i.modifier?void 0:[a("stroke-width",f)];default:return f=B(i.value.value,i.modifier,t),f===null?void 0:[a("stroke",f)]}}{let f=G(i,t,["--stroke","--color"]);if(f)return[a("stroke",f)]}{let f=t.resolve(i.value.value,["--stroke-width"]);if(f)return[a("stroke-width",f)];if(N(i.value.value))return[a("stroke-width",i.value.value)]}}}),o("stroke",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--stroke","--color"],modifiers:Array.from({length:21},(i,f)=>`${f*5}`)},{values:["0","1","2","3"],valueThemeKeys:["--stroke-width"]}]),e("object-contain",[["object-fit","contain"]]),e("object-cover",[["object-fit","cover"]]),e("object-fill",[["object-fit","fill"]]),e("object-none",[["object-fit","none"]]),e("object-scale-down",[["object-fit","scale-down"]]),e("object-bottom",[["object-position","bottom"]]),e("object-center",[["object-position","center"]]),e("object-left",[["object-position","left"]]),e("object-left-bottom",[["object-position","left bottom"]]),e("object-left-top",[["object-position","left top"]]),e("object-right",[["object-position","right"]]),e("object-right-bottom",[["object-position","right bottom"]]),e("object-right-top",[["object-position","right top"]]),e("object-top",[["object-position","top"]]),n("object",{themeKeys:["--object-position"],handle:i=>[a("object-position",i)]});for(let[i,f]of[["p","padding"],["px","padding-inline"],["py","padding-block"],["ps","padding-inline-start"],["pe","padding-inline-end"],["pt","padding-top"],["pr","padding-right"],["pb","padding-bottom"],["pl","padding-left"]])l(i,["--padding","--spacing"],h=>[a(f,h)]);e("text-left",[["text-align","left"]]),e("text-center",[["text-align","center"]]),e("text-right",[["text-align","right"]]),e("text-justify",[["text-align","justify"]]),e("text-start",[["text-align","start"]]),e("text-end",[["text-align","end"]]),l("indent",["--text-indent","--spacing"],i=>[a("text-indent",i)],{supportsNegative:!0}),e("align-baseline",[["vertical-align","baseline"]]),e("align-top",[["vertical-align","top"]]),e("align-middle",[["vertical-align","middle"]]),e("align-bottom",[["vertical-align","bottom"]]),e("align-text-top",[["vertical-align","text-top"]]),e("align-text-bottom",[["vertical-align","text-bottom"]]),e("align-sub",[["vertical-align","sub"]]),e("align-super",[["vertical-align","super"]]),n("align",{themeKeys:[],handle:i=>[a("vertical-align",i)]}),r.functional("font",i=>{if(!(!i.value||i.modifier)){if(i.value.kind==="arbitrary"){let f=i.value.value;switch(i.value.dataType??I(f,["number","generic-name","family-name"])){case"generic-name":case"family-name":return[a("font-family",f)];default:return[D([S("--tw-font-weight")]),a("--tw-font-weight",f),a("font-weight",f)]}}{let f=t.resolveWith(i.value.value,["--font"],["--font-feature-settings","--font-variation-settings"]);if(f){let[h,w={}]=f;return[a("font-family",h),a("font-feature-settings",w["--font-feature-settings"]),a("font-variation-settings",w["--font-variation-settings"])]}}{let f=t.resolve(i.value.value,["--font-weight"]);if(f)return[D([S("--tw-font-weight")]),a("--tw-font-weight",f),a("font-weight",f)]}}}),o("font",()=>[{values:[],valueThemeKeys:["--font"]},{values:[],valueThemeKeys:["--font-weight"]}]),e("uppercase",[["text-transform","uppercase"]]),e("lowercase",[["text-transform","lowercase"]]),e("capitalize",[["text-transform","capitalize"]]),e("normal-case",[["text-transform","none"]]),e("italic",[["font-style","italic"]]),e("not-italic",[["font-style","normal"]]),e("underline",[["text-decoration-line","underline"]]),e("overline",[["text-decoration-line","overline"]]),e("line-through",[["text-decoration-line","line-through"]]),e("no-underline",[["text-decoration-line","none"]]),e("font-stretch-normal",[["font-stretch","normal"]]),e("font-stretch-ultra-condensed",[["font-stretch","ultra-condensed"]]),e("font-stretch-extra-condensed",[["font-stretch","extra-condensed"]]),e("font-stretch-condensed",[["font-stretch","condensed"]]),e("font-stretch-semi-condensed",[["font-stretch","semi-condensed"]]),e("font-stretch-semi-expanded",[["font-stretch","semi-expanded"]]),e("font-stretch-expanded",[["font-stretch","expanded"]]),e("font-stretch-extra-expanded",[["font-stretch","extra-expanded"]]),e("font-stretch-ultra-expanded",[["font-stretch","ultra-expanded"]]),n("font-stretch",{handleBareValue:({value:i})=>{if(!i.endsWith("%"))return null;let f=Number(i.slice(0,-1));return!N(f)||Number.isNaN(f)||f<50||f>200?null:i},handle:i=>[a("font-stretch",i)]}),o("font-stretch",()=>[{values:["50%","75%","90%","95%","100%","105%","110%","125%","150%","200%"]}]),s("placeholder",{themeKeys:["--background-color","--color"],handle:i=>[z("&::placeholder",[a("--tw-sort","placeholder-color"),a("color",i)])]}),e("decoration-solid",[["text-decoration-style","solid"]]),e("decoration-double",[["text-decoration-style","double"]]),e("decoration-dotted",[["text-decoration-style","dotted"]]),e("decoration-dashed",[["text-decoration-style","dashed"]]),e("decoration-wavy",[["text-decoration-style","wavy"]]),e("decoration-auto",[["text-decoration-thickness","auto"]]),e("decoration-from-font",[["text-decoration-thickness","from-font"]]),r.functional("decoration",i=>{if(i.value){if(i.value.kind==="arbitrary"){let f=i.value.value;switch(i.value.dataType??I(f,["color","length","percentage"])){case"length":case"percentage":return i.modifier?void 0:[a("text-decoration-thickness",f)];default:return f=B(f,i.modifier,t),f===null?void 0:[a("text-decoration-color",f)]}}{let f=t.resolve(i.value.value,["--text-decoration-thickness"]);if(f)return i.modifier?void 0:[a("text-decoration-thickness",f)];if(N(i.value.value))return i.modifier?void 0:[a("text-decoration-thickness",`${i.value.value}px`)]}{let f=G(i,t,["--text-decoration-color","--color"]);if(f)return[a("text-decoration-color",f)]}}}),o("decoration",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--text-decoration-color","--color"],modifiers:Array.from({length:21},(i,f)=>`${f*5}`)},{values:["0","1","2"],valueThemeKeys:["--text-decoration-thickness"]}]),e("animate-none",[["animation","none"]]),n("animate",{themeKeys:["--animate"],handle:i=>[a("animation",i)]});{let i=["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,)"].join(" "),f=["var(--tw-backdrop-blur,)","var(--tw-backdrop-brightness,)","var(--tw-backdrop-contrast,)","var(--tw-backdrop-grayscale,)","var(--tw-backdrop-hue-rotate,)","var(--tw-backdrop-invert,)","var(--tw-backdrop-opacity,)","var(--tw-backdrop-saturate,)","var(--tw-backdrop-sepia,)"].join(" "),h=()=>D([S("--tw-blur"),S("--tw-brightness"),S("--tw-contrast"),S("--tw-grayscale"),S("--tw-hue-rotate"),S("--tw-invert"),S("--tw-opacity"),S("--tw-saturate"),S("--tw-sepia"),S("--tw-drop-shadow")]),w=()=>D([S("--tw-backdrop-blur"),S("--tw-backdrop-brightness"),S("--tw-backdrop-contrast"),S("--tw-backdrop-grayscale"),S("--tw-backdrop-hue-rotate"),S("--tw-backdrop-invert"),S("--tw-backdrop-opacity"),S("--tw-backdrop-saturate"),S("--tw-backdrop-sepia")]);r.functional("filter",k=>{if(!k.modifier){if(k.value===null)return[h(),a("filter",i)];if(k.value.kind==="arbitrary")return[a("filter",k.value.value)];switch(k.value.value){case"none":return[a("filter","none")]}}}),r.functional("backdrop-filter",k=>{if(!k.modifier){if(k.value===null)return[w(),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)];if(k.value.kind==="arbitrary")return[a("-webkit-backdrop-filter",k.value.value),a("backdrop-filter",k.value.value)];switch(k.value.value){case"none":return[a("-webkit-backdrop-filter","none"),a("backdrop-filter","none")]}}}),n("blur",{themeKeys:["--blur"],handle:k=>[h(),a("--tw-blur",`blur(${k})`),a("filter",i)]}),e("blur-none",[h,["--tw-blur"," "],["filter",i]]),n("backdrop-blur",{themeKeys:["--backdrop-blur","--blur"],handle:k=>[w(),a("--tw-backdrop-blur",`blur(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),e("backdrop-blur-none",[w,["--tw-backdrop-blur"," "],["-webkit-backdrop-filter",f],["backdrop-filter",f]]),n("brightness",{themeKeys:["--brightness"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,handle:k=>[h(),a("--tw-brightness",`brightness(${k})`),a("filter",i)]}),n("backdrop-brightness",{themeKeys:["--backdrop-brightness","--brightness"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,handle:k=>[w(),a("--tw-backdrop-brightness",`brightness(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),o("brightness",()=>[{values:["0","50","75","90","95","100","105","110","125","150","200"],valueThemeKeys:["--brightness"]}]),o("backdrop-brightness",()=>[{values:["0","50","75","90","95","100","105","110","125","150","200"],valueThemeKeys:["--backdrop-brightness","--brightness"]}]),n("contrast",{themeKeys:["--contrast"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,handle:k=>[h(),a("--tw-contrast",`contrast(${k})`),a("filter",i)]}),n("backdrop-contrast",{themeKeys:["--backdrop-contrast","--contrast"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,handle:k=>[w(),a("--tw-backdrop-contrast",`contrast(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),o("contrast",()=>[{values:["0","50","75","100","125","150","200"],valueThemeKeys:["--contrast"]}]),o("backdrop-contrast",()=>[{values:["0","50","75","100","125","150","200"],valueThemeKeys:["--backdrop-contrast","--contrast"]}]),n("grayscale",{themeKeys:["--grayscale"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,defaultValue:"100%",handle:k=>[h(),a("--tw-grayscale",`grayscale(${k})`),a("filter",i)]}),n("backdrop-grayscale",{themeKeys:["--backdrop-grayscale","--grayscale"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,defaultValue:"100%",handle:k=>[w(),a("--tw-backdrop-grayscale",`grayscale(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),o("grayscale",()=>[{values:["0","25","50","75","100"],valueThemeKeys:["--grayscale"],hasDefaultValue:!0}]),o("backdrop-grayscale",()=>[{values:["0","25","50","75","100"],valueThemeKeys:["--backdrop-grayscale","--grayscale"],hasDefaultValue:!0}]),n("hue-rotate",{supportsNegative:!0,themeKeys:["--hue-rotate"],handleBareValue:({value:k})=>N(k)?`${k}deg`:null,handle:k=>[h(),a("--tw-hue-rotate",`hue-rotate(${k})`),a("filter",i)]}),n("backdrop-hue-rotate",{supportsNegative:!0,themeKeys:["--backdrop-hue-rotate","--hue-rotate"],handleBareValue:({value:k})=>N(k)?`${k}deg`:null,handle:k=>[w(),a("--tw-backdrop-hue-rotate",`hue-rotate(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),o("hue-rotate",()=>[{values:["0","15","30","60","90","180"],valueThemeKeys:["--hue-rotate"]}]),o("backdrop-hue-rotate",()=>[{values:["0","15","30","60","90","180"],valueThemeKeys:["--backdrop-hue-rotate","--hue-rotate"]}]),n("invert",{themeKeys:["--invert"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,defaultValue:"100%",handle:k=>[h(),a("--tw-invert",`invert(${k})`),a("filter",i)]}),n("backdrop-invert",{themeKeys:["--backdrop-invert","--invert"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,defaultValue:"100%",handle:k=>[w(),a("--tw-backdrop-invert",`invert(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),o("invert",()=>[{values:["0","25","50","75","100"],valueThemeKeys:["--invert"],hasDefaultValue:!0}]),o("backdrop-invert",()=>[{values:["0","25","50","75","100"],valueThemeKeys:["--backdrop-invert","--invert"],hasDefaultValue:!0}]),n("saturate",{themeKeys:["--saturate"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,handle:k=>[h(),a("--tw-saturate",`saturate(${k})`),a("filter",i)]}),n("backdrop-saturate",{themeKeys:["--backdrop-saturate","--saturate"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,handle:k=>[w(),a("--tw-backdrop-saturate",`saturate(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),o("saturate",()=>[{values:["0","50","100","150","200"],valueThemeKeys:["--saturate"]}]),o("backdrop-saturate",()=>[{values:["0","50","100","150","200"],valueThemeKeys:["--backdrop-saturate","--saturate"]}]),n("sepia",{themeKeys:["--sepia"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,defaultValue:"100%",handle:k=>[h(),a("--tw-sepia",`sepia(${k})`),a("filter",i)]}),n("backdrop-sepia",{themeKeys:["--backdrop-sepia","--sepia"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,defaultValue:"100%",handle:k=>[w(),a("--tw-backdrop-sepia",`sepia(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),o("sepia",()=>[{values:["0","50","100"],valueThemeKeys:["--sepia"],hasDefaultValue:!0}]),o("backdrop-sepia",()=>[{values:["0","50","100"],valueThemeKeys:["--backdrop-sepia","--sepia"],hasDefaultValue:!0}]),e("drop-shadow-none",[h,["--tw-drop-shadow"," "],["filter",i]]),n("drop-shadow",{themeKeys:["--drop-shadow"],handle:k=>[h(),a("--tw-drop-shadow",P(k,",").map(T=>`drop-shadow(${T})`).join(" ")),a("filter",i)]}),n("backdrop-opacity",{themeKeys:["--backdrop-opacity","--opacity"],handleBareValue:({value:k})=>Me(k)?`${k}%`:null,handle:k=>[w(),a("--tw-backdrop-opacity",`opacity(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),o("backdrop-opacity",()=>[{values:Array.from({length:21},(k,T)=>`${T*5}`),valueThemeKeys:["--backdrop-opacity","--opacity"]}])}{let i=`var(--tw-ease, ${t.resolve(null,["--default-transition-timing-function"])??"ease"})`,f=`var(--tw-duration, ${t.resolve(null,["--default-transition-duration"])??"0s"})`;e("transition-none",[["transition-property","none"]]),e("transition-all",[["transition-property","all"],["transition-timing-function",i],["transition-duration",f]]),e("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",i],["transition-duration",f]]),e("transition-opacity",[["transition-property","opacity"],["transition-timing-function",i],["transition-duration",f]]),e("transition-shadow",[["transition-property","box-shadow"],["transition-timing-function",i],["transition-duration",f]]),e("transition-transform",[["transition-property","transform, translate, scale, rotate"],["transition-timing-function",i],["transition-duration",f]]),n("transition",{defaultValue:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter",themeKeys:["--transition-property"],handle:h=>[a("transition-property",h),a("transition-timing-function",i),a("transition-duration",f)]}),e("transition-discrete",[["transition-behavior","allow-discrete"]]),e("transition-normal",[["transition-behavior","normal"]]),n("delay",{handleBareValue:({value:h})=>N(h)?`${h}ms`:null,themeKeys:["--transition-delay"],handle:h=>[a("transition-delay",h)]});{let h=()=>D([S("--tw-duration")]);e("duration-initial",[h,["--tw-duration","initial"]]),r.functional("duration",w=>{if(w.modifier||!w.value)return;let k=null;if(w.value.kind==="arbitrary"?k=w.value.value:(k=t.resolve(w.value.fraction??w.value.value,["--transition-duration"]),k===null&&N(w.value.value)&&(k=`${w.value.value}ms`)),k!==null)return[h(),a("--tw-duration",k),a("transition-duration",k)]})}o("delay",()=>[{values:["75","100","150","200","300","500","700","1000"],valueThemeKeys:["--transition-delay"]}]),o("duration",()=>[{values:["75","100","150","200","300","500","700","1000"],valueThemeKeys:["--transition-duration"]}])}{let i=()=>D([S("--tw-ease")]);e("ease-initial",[i,["--tw-ease","initial"]]),e("ease-linear",[i,["--tw-ease","linear"],["transition-timing-function","linear"]]),n("ease",{themeKeys:["--ease"],handle:f=>[i(),a("--tw-ease",f),a("transition-timing-function",f)]})}e("will-change-auto",[["will-change","auto"]]),e("will-change-scroll",[["will-change","scroll-position"]]),e("will-change-contents",[["will-change","contents"]]),e("will-change-transform",[["will-change","transform"]]),n("will-change",{themeKeys:[],handle:i=>[a("will-change",i)]}),e("content-none",[["--tw-content","none"],["content","none"]]),n("content",{themeKeys:[],handle:i=>[D([S("--tw-content",'""')]),a("--tw-content",i),a("content","var(--tw-content)")]});{let i="var(--tw-contain-size,) var(--tw-contain-layout,) var(--tw-contain-paint,) var(--tw-contain-style,)",f=()=>D([S("--tw-contain-size"),S("--tw-contain-layout"),S("--tw-contain-paint"),S("--tw-contain-style")]);e("contain-none",[["contain","none"]]),e("contain-content",[["contain","content"]]),e("contain-strict",[["contain","strict"]]),e("contain-size",[f,["--tw-contain-size","size"],["contain",i]]),e("contain-inline-size",[f,["--tw-contain-size","inline-size"],["contain",i]]),e("contain-layout",[f,["--tw-contain-layout","layout"],["contain",i]]),e("contain-paint",[f,["--tw-contain-paint","paint"],["contain",i]]),e("contain-style",[f,["--tw-contain-style","style"],["contain",i]]),n("contain",{themeKeys:[],handle:h=>[a("contain",h)]})}e("forced-color-adjust-none",[["forced-color-adjust","none"]]),e("forced-color-adjust-auto",[["forced-color-adjust","auto"]]),e("leading-none",[()=>D([S("--tw-leading")]),["--tw-leading","1"],["line-height","1"]]),l("leading",["--leading","--spacing"],i=>[D([S("--tw-leading")]),a("--tw-leading",i),a("line-height",i)]),n("tracking",{supportsNegative:!0,themeKeys:["--tracking"],handle:i=>[D([S("--tw-tracking")]),a("--tw-tracking",i),a("letter-spacing",i)]}),e("antialiased",[["-webkit-font-smoothing","antialiased"],["-moz-osx-font-smoothing","grayscale"]]),e("subpixel-antialiased",[["-webkit-font-smoothing","auto"],["-moz-osx-font-smoothing","auto"]]);{let i="var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)",f=()=>D([S("--tw-ordinal"),S("--tw-slashed-zero"),S("--tw-numeric-figure"),S("--tw-numeric-spacing"),S("--tw-numeric-fraction")]);e("normal-nums",[["font-variant-numeric","normal"]]),e("ordinal",[f,["--tw-ordinal","ordinal"],["font-variant-numeric",i]]),e("slashed-zero",[f,["--tw-slashed-zero","slashed-zero"],["font-variant-numeric",i]]),e("lining-nums",[f,["--tw-numeric-figure","lining-nums"],["font-variant-numeric",i]]),e("oldstyle-nums",[f,["--tw-numeric-figure","oldstyle-nums"],["font-variant-numeric",i]]),e("proportional-nums",[f,["--tw-numeric-spacing","proportional-nums"],["font-variant-numeric",i]]),e("tabular-nums",[f,["--tw-numeric-spacing","tabular-nums"],["font-variant-numeric",i]]),e("diagonal-fractions",[f,["--tw-numeric-fraction","diagonal-fractions"],["font-variant-numeric",i]]),e("stacked-fractions",[f,["--tw-numeric-fraction","stacked-fractions"],["font-variant-numeric",i]])}{let i=()=>D([S("--tw-outline-style","solid")]);r.static("outline-hidden",()=>[a("--tw-outline-style","none"),a("outline-style","none"),U("@media","(forced-colors: active)",[a("outline","2px solid transparent"),a("outline-offset","2px")])]),e("outline-none",[["--tw-outline-style","none"],["outline-style","none"]]),e("outline-solid",[["--tw-outline-style","solid"],["outline-style","solid"]]),e("outline-dashed",[["--tw-outline-style","dashed"],["outline-style","dashed"]]),e("outline-dotted",[["--tw-outline-style","dotted"],["outline-style","dotted"]]),e("outline-double",[["--tw-outline-style","double"],["outline-style","double"]]),r.functional("outline",f=>{if(f.value===null){if(f.modifier)return;let h=t.get(["--default-outline-width"])??"1px";return[i(),a("outline-style","var(--tw-outline-style)"),a("outline-width",h)]}if(f.value.kind==="arbitrary"){let h=f.value.value;switch(f.value.dataType??I(h,["color","length","number","percentage"])){case"length":case"number":case"percentage":return f.modifier?void 0:[i(),a("outline-style","var(--tw-outline-style)"),a("outline-width",h)];default:return h=B(h,f.modifier,t),h===null?void 0:[a("outline-color",h)]}}{let h=G(f,t,["--outline-color","--color"]);if(h)return[a("outline-color",h)]}{if(f.modifier)return;let h=t.resolve(f.value.value,["--outline-width"]);if(h)return[i(),a("outline-style","var(--tw-outline-style)"),a("outline-width",h)];if(N(f.value.value))return[i(),a("outline-style","var(--tw-outline-style)"),a("outline-width",`${f.value.value}px`)]}}),o("outline",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--outline-color","--color"],modifiers:Array.from({length:21},(f,h)=>`${h*5}`),hasDefaultValue:!0},{values:["0","1","2","4","8"],valueThemeKeys:["--outline-width"]}]),n("outline-offset",{supportsNegative:!0,themeKeys:["--outline-offset"],handleBareValue:({value:f})=>N(f)?`${f}px`:null,handle:f=>[a("outline-offset",f)]}),o("outline-offset",()=>[{supportsNegative:!0,values:["0","1","2","4","8"],valueThemeKeys:["--outline-offset"]}])}n("opacity",{themeKeys:["--opacity"],handleBareValue:({value:i})=>Me(i)?`${i}%`:null,handle:i=>[a("opacity",i)]}),o("opacity",()=>[{values:Array.from({length:21},(i,f)=>`${f*5}`),valueThemeKeys:["--opacity"]}]),e("underline-offset-auto",[["text-underline-offset","auto"]]),n("underline-offset",{supportsNegative:!0,themeKeys:["--text-underline-offset"],handleBareValue:({value:i})=>N(i)?`${i}px`:null,handle:i=>[a("text-underline-offset",i)]}),o("underline-offset",()=>[{supportsNegative:!0,values:["0","1","2","4","8"],valueThemeKeys:["--text-underline-offset"]}]),r.functional("text",i=>{if(i.value){if(i.value.kind==="arbitrary"){let f=i.value.value;switch(i.value.dataType??I(f,["color","length","percentage","absolute-size","relative-size"])){case"size":case"length":case"percentage":case"absolute-size":case"relative-size":{if(i.modifier){let w=i.modifier.kind==="arbitrary"?i.modifier.value:t.resolve(i.modifier.value,["--leading"]);if(!w&&ge(i.modifier.value)){let k=t.resolve(null,["--spacing"]);if(!k)return null;w=`calc(${k} * ${i.modifier.value})`}return!w&&i.modifier.value==="none"&&(w="1"),w?[a("font-size",f),a("line-height",w)]:null}return[a("font-size",f)]}default:return f=B(f,i.modifier,t),f===null?void 0:[a("color",f)]}}{let f=G(i,t,["--text-color","--color"]);if(f)return[a("color",f)]}{let f=t.resolveWith(i.value.value,["--text"],["--line-height","--letter-spacing","--font-weight"]);if(f){let[h,w={}]=Array.isArray(f)?f:[f];if(i.modifier){let k=i.modifier.kind==="arbitrary"?i.modifier.value:t.resolve(i.modifier.value,["--leading"]);if(!k&&ge(i.modifier.value)){let E=t.resolve(null,["--spacing"]);if(!E)return null;k=`calc(${E} * ${i.modifier.value})`}if(!k&&i.modifier.value==="none"&&(k="1"),!k)return null;let T=[a("font-size",h)];return k&&T.push(a("line-height",k)),T}return typeof w=="string"?[a("font-size",h),a("line-height",w)]:[a("font-size",h),a("line-height",w["--line-height"]?`var(--tw-leading, ${w["--line-height"]})`:void 0),a("letter-spacing",w["--letter-spacing"]?`var(--tw-tracking, ${w["--letter-spacing"]})`:void 0),a("font-weight",w["--font-weight"]?`var(--tw-font-weight, ${w["--font-weight"]})`:void 0)]}}}}),o("text",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--text-color","--color"],modifiers:Array.from({length:21},(i,f)=>`${f*5}`)},{values:[],valueThemeKeys:["--text"],modifiers:[],modifierThemeKeys:["--leading"]}]);{let k=function(C){return`var(--tw-ring-inset,) 0 0 0 calc(${C} + var(--tw-ring-offset-width)) var(--tw-ring-color, ${w})`},T=function(C){return`inset 0 0 0 ${C} var(--tw-inset-ring-color, currentColor)`};var R=k,K=T;let i=["var(--tw-inset-shadow)","var(--tw-inset-ring-shadow)","var(--tw-ring-offset-shadow)","var(--tw-ring-shadow)","var(--tw-shadow)"].join(", "),f="0 0 #0000",h=()=>D([S("--tw-shadow",f),S("--tw-shadow-color"),S("--tw-inset-shadow",f),S("--tw-inset-shadow-color"),S("--tw-ring-color"),S("--tw-ring-shadow",f),S("--tw-inset-ring-color"),S("--tw-inset-ring-shadow",f),S("--tw-ring-inset"),S("--tw-ring-offset-width","0px",""),S("--tw-ring-offset-color","#fff"),S("--tw-ring-offset-shadow",f)]);e("shadow-initial",[h,["--tw-shadow-color","initial"]]),r.functional("shadow",C=>{if(!C.value){let A=t.get(["--shadow"]);return A===null?void 0:[h(),a("--tw-shadow",ce(A,F=>`var(--tw-shadow-color, ${F})`)),a("box-shadow",i)]}if(C.value.kind==="arbitrary"){let A=C.value.value;switch(C.value.dataType??I(A,["color"])){case"color":return A=B(A,C.modifier,t),A===null?void 0:[h(),a("--tw-shadow-color",A)];default:return[h(),a("--tw-shadow",ce(A,Oe=>`var(--tw-shadow-color, ${Oe})`)),a("box-shadow",i)]}}switch(C.value.value){case"none":return C.modifier?void 0:[h(),a("--tw-shadow",f),a("box-shadow",i)]}{let A=t.get([`--shadow-${C.value.value}`]);if(A)return C.modifier?void 0:[h(),a("--tw-shadow",ce(A,F=>`var(--tw-shadow-color, ${F})`)),a("box-shadow",i)]}{let A=G(C,t,["--box-shadow-color","--color"]);if(A)return[h(),a("--tw-shadow-color",A)]}}),o("shadow",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--box-shadow-color","--color"],modifiers:Array.from({length:21},(C,A)=>`${A*5}`)},{values:["none"],valueThemeKeys:["--shadow"],hasDefaultValue:!0}]),e("inset-shadow-initial",[h,["--tw-inset-shadow-color","initial"]]),r.functional("inset-shadow",C=>{if(!C.value){let A=t.get(["--inset-shadow"]);return A===null?void 0:[h(),a("--tw-inset-shadow",ce(A,F=>`var(--tw-inset-shadow-color, ${F})`)),a("box-shadow",i)]}if(C.value.kind==="arbitrary"){let A=C.value.value;switch(C.value.dataType??I(A,["color"])){case"color":return A=B(A,C.modifier,t),A===null?void 0:[h(),a("--tw-inset-shadow-color",A)];default:return[h(),a("--tw-inset-shadow",`inset ${ce(A,Oe=>`var(--tw-inset-shadow-color, ${Oe})`)}`),a("box-shadow",i)]}}switch(C.value.value){case"none":return C.modifier?void 0:[h(),a("--tw-inset-shadow",f),a("box-shadow",i)]}{let A=t.get([`--inset-shadow-${C.value.value}`]);if(A)return C.modifier?void 0:[h(),a("--tw-inset-shadow",ce(A,F=>`var(--tw-inset-shadow-color, ${F})`)),a("box-shadow",i)]}{let A=G(C,t,["--box-shadow-color","--color"]);if(A)return[h(),a("--tw-inset-shadow-color",A)]}}),o("inset-shadow",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--box-shadow-color","--color"],modifiers:Array.from({length:21},(C,A)=>`${A*5}`)},{values:[],valueThemeKeys:["--inset-shadow"],hasDefaultValue:!0}]),e("ring-inset",[h,["--tw-ring-inset","inset"]]);let w=t.get(["--default-ring-color"])??"currentColor";r.functional("ring",C=>{if(!C.value){if(C.modifier)return;let A=t.get(["--default-ring-width"])??"1px";return[h(),a("--tw-ring-shadow",k(A)),a("box-shadow",i)]}if(C.value.kind==="arbitrary"){let A=C.value.value;switch(C.value.dataType??I(A,["color","length"])){case"length":return C.modifier?void 0:[h(),a("--tw-ring-shadow",k(A)),a("box-shadow",i)];default:return A=B(A,C.modifier,t),A===null?void 0:[a("--tw-ring-color",A)]}}{let A=G(C,t,["--ring-color","--color"]);if(A)return[a("--tw-ring-color",A)]}{if(C.modifier)return;let A=t.resolve(C.value.value,["--ring-width"]);if(A===null&&N(C.value.value)&&(A=`${C.value.value}px`),A)return[h(),a("--tw-ring-shadow",k(A)),a("box-shadow",i)]}}),o("ring",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--ring-color","--color"],modifiers:Array.from({length:21},(C,A)=>`${A*5}`)},{values:["0","1","2","4","8"],valueThemeKeys:["--ring-width"],hasDefaultValue:!0}]),r.functional("inset-ring",C=>{if(!C.value)return C.modifier?void 0:[h(),a("--tw-inset-ring-shadow",T("1px")),a("box-shadow",i)];if(C.value.kind==="arbitrary"){let A=C.value.value;switch(C.value.dataType??I(A,["color","length"])){case"length":return C.modifier?void 0:[h(),a("--tw-inset-ring-shadow",T(A)),a("box-shadow",i)];default:return A=B(A,C.modifier,t),A===null?void 0:[a("--tw-inset-ring-color",A)]}}{let A=G(C,t,["--ring-color","--color"]);if(A)return[a("--tw-inset-ring-color",A)]}{if(C.modifier)return;let A=t.resolve(C.value.value,["--ring-width"]);if(A===null&&N(C.value.value)&&(A=`${C.value.value}px`),A)return[h(),a("--tw-inset-ring-shadow",T(A)),a("box-shadow",i)]}}),o("inset-ring",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--ring-color","--color"],modifiers:Array.from({length:21},(C,A)=>`${A*5}`)},{values:["0","1","2","4","8"],valueThemeKeys:["--ring-width"],hasDefaultValue:!0}]);let E="var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)";r.functional("ring-offset",C=>{if(C.value){if(C.value.kind==="arbitrary"){let A=C.value.value;switch(C.value.dataType??I(A,["color","length"])){case"length":return C.modifier?void 0:[a("--tw-ring-offset-width",A),a("--tw-ring-offset-shadow",E)];default:return A=B(A,C.modifier,t),A===null?void 0:[a("--tw-ring-offset-color",A)]}}{let A=t.resolve(C.value.value,["--ring-offset-width"]);if(A)return C.modifier?void 0:[a("--tw-ring-offset-width",A),a("--tw-ring-offset-shadow",E)];if(N(C.value.value))return C.modifier?void 0:[a("--tw-ring-offset-width",`${C.value.value}px`),a("--tw-ring-offset-shadow",E)]}{let A=G(C,t,["--ring-offset-color","--color"]);if(A)return[a("--tw-ring-offset-color",A)]}}})}return o("ring-offset",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--ring-offset-color","--color"],modifiers:Array.from({length:21},(i,f)=>`${f*5}`)},{values:["0","1","2","4","8"],valueThemeKeys:["--ring-offset-width"]}]),r.functional("@container",i=>{let f=null;if(i.value===null?f="inline-size":i.value.kind==="arbitrary"?f=i.value.value:i.value.kind==="named"&&i.value.value==="normal"&&(f="normal"),f!==null)return i.modifier?[a("container-type",f),a("container-name",i.modifier.value)]:[a("container-type",f)]}),o("@container",()=>[{values:["normal"],valueThemeKeys:[],hasDefaultValue:!0}]),r}function nr(t){let r=t.params;return Jo.test(r)?o=>{let e=new Set,n=new Set;_(t.nodes,s=>{if(s.kind!=="declaration"||!s.value||!s.value.includes("--value(")&&!s.value.includes("--modifier("))return;let l=L(s.value);ee(l,p=>{if(p.kind!=="function"||p.value!=="--value"&&p.value!=="--modifier")return;let c=P(H(p.nodes),",");for(let[d,u]of c.entries())u=u.replace(/\\\*/g,"*"),u=u.replace(/--(.*?)\s--(.*?)/g,"--$1-*--$2"),u=u.replace(/\s+/g,""),u=u.replace(/(-\*){2,}/g,"-*"),u[0]==="-"&&u[1]==="-"&&!u.includes("-*")&&(u+="-*"),c[d]=u;p.nodes=L(c.join(","));for(let d of p.nodes)if(d.kind==="word"&&d.value[0]==="-"&&d.value[1]==="-"){let u=d.value.replace(/-\*.*$/g,"");p.value==="--value"?e.add(u):p.value==="--modifier"&&n.add(u)}}),s.value=H(l)}),o.utilities.functional(r.slice(0,-2),s=>{let l=structuredClone(t),p=s.value,c=s.modifier;if(p===null)return;let d=!1,u=!1,g=!1,m=!1,v=new Map,y=!1;if(_([l],(b,{parent:x,replaceWith:$})=>{if(x?.kind!=="rule"&&x?.kind!=="at-rule"||b.kind!=="declaration"||!b.value)return;let V=L(b.value);(ee(V,(R,{replaceWith:K})=>{if(R.kind==="function"){if(R.value==="--value"){d=!0;let i=rr(p,R,o);return i?(u=!0,i.ratio?y=!0:v.set(b,x),K(i.nodes),1):(d||=!1,$([]),2)}else if(R.value==="--modifier"){if(c===null)return $([]),1;g=!0;let i=rr(c,R,o);return i?(m=!0,K(i.nodes),1):(g||=!1,$([]),2)}}})??0)===0&&(b.value=H(V))}),d&&!u||g&&!m||y&&m||c&&!y&&!m)return null;if(y)for(let[b,x]of v){let $=x.nodes.indexOf(b);$!==-1&&x.nodes.splice($,1)}return l.nodes}),o.utilities.suggest(r.slice(0,-2),()=>[{values:o.theme.keysInNamespaces(e).map(s=>s.replaceAll("_",".")),modifiers:o.theme.keysInNamespaces(n).map(s=>s.replaceAll("_","."))}])}:Yo.test(r)?o=>{o.utilities.static(r,()=>structuredClone(t.nodes))}:null}function rr(t,r,o){for(let e of r.nodes)if(t.kind==="named"&&e.kind==="word"&&e.value[0]==="-"&&e.value[1]==="-"){let n=e.value;if(n.endsWith("-*")){n=n.slice(0,-2);let s=o.theme.resolve(t.value,[n]);if(s)return{nodes:L(s)}}else{let s=n.split("-*");if(s.length<=1)continue;let l=[s.shift()],p=o.theme.resolveWith(t.value,l,s);if(p){let[,c={}]=p;{let d=c[s.pop()];if(d)return{nodes:L(d)}}}}}else if(t.kind==="named"&&e.kind==="word"){if(e.value!=="number"&&e.value!=="integer"&&e.value!=="ratio"&&e.value!=="percentage")continue;let n=e.value==="ratio"&&"fraction"in t?t.fraction:t.value;if(!n)continue;let s=I(n,[e.value]);if(s===null)continue;if(s==="ratio"){let[l,p]=P(n,"/");if(!N(l)||!N(p))continue}else{if(s==="number"&&!ge(n))continue;if(s==="percentage"&&!N(n.slice(0,-1)))continue}return{nodes:L(n),ratio:s==="ratio"}}else if(t.kind==="arbitrary"&&e.kind==="word"&&e.value[0]==="["&&e.value[e.value.length-1]==="]"){let n=e.value.slice(1,-1);if(n==="*")return{nodes:L(t.value)};if("dataType"in t&&t.dataType&&t.dataType!==n)continue;if("dataType"in t&&t.dataType)return{nodes:L(t.value)};if(I(t.value,[n])!==null)return{nodes:L(t.value)}}}var gt={"--alpha":Zo,"--spacing":Qo,"--theme":Xo,theme:ar};function Zo(t,r,...o){let[e,n]=P(r,"/").map(s=>s.trim());if(!e||!n)throw new Error(`The --alpha(\u2026) function requires a color and an alpha value, e.g.: \`--alpha(${e||"var(--my-color)"} / ${n||"50%"})\``);if(o.length>0)throw new Error(`The --alpha(\u2026) function only accepts one argument, e.g.: \`--alpha(${e||"var(--my-color)"} / ${n||"50%"})\``);return J(e,n)}function Qo(t,r,...o){if(!r)throw new Error("The --spacing(\u2026) function requires an argument, but received none.");if(o.length>0)throw new Error(`The --spacing(\u2026) function only accepts a single argument, but received ${o.length+1}.`);let e=t.theme.resolve(null,["--spacing"]);if(!e)throw new Error("The --spacing(\u2026) function requires that the `--spacing` theme variable exists, but it was not found.");return`calc(${e} * ${r})`}function Xo(t,r,...o){if(!r.startsWith("--"))throw new Error("The --theme(\u2026) function can only be used with CSS variables from your theme.");return ar(t,r,...o)}function ar(t,r,...o){r=en(r);let e=t.resolveThemeValue(r);if(!e&&o.length>0)return o.join(", ");if(!e)throw new Error(`Could not resolve value for theme function: \`theme(${r})\`. Consider checking if the path is correct or provide a fallback value to silence this error.`);return e}var ir=new RegExp(Object.keys(gt).map(t=>`${t}\\(`).join("|"));function he(t,r){let o=0;return _(t,e=>{if(e.kind==="declaration"&&e.value&&ir.test(e.value)){o|=8,e.value=lr(e.value,r);return}e.kind==="at-rule"&&(e.name==="@media"||e.name==="@custom-media"||e.name==="@container"||e.name==="@supports")&&ir.test(e.params)&&(o|=8,e.params=lr(e.params,r))}),o}function lr(t,r){let o=L(t);return ee(o,(e,{replaceWith:n})=>{if(e.kind==="function"&&e.value in gt){let s=P(H(e.nodes).trim(),",").map(p=>p.trim()),l=gt[e.value](r,...s);return n(L(l))}}),H(o)}function en(t){if(t[0]!=="'"&&t[0]!=='"')return t;let r="",o=t[0];for(let e=1;e=48&&l<=57&&p>=48&&p<=57){let c=s,d=s+1,u=s,g=s+1;for(l=t.charCodeAt(d);l>=48&&l<=57;)l=t.charCodeAt(++d);for(p=r.charCodeAt(g);p>=48&&p<=57;)p=r.charCodeAt(++g);let m=t.slice(c,d),v=r.slice(u,g),y=Number(m)-Number(v);if(y)return y;if(mv)return 1;continue}if(l!==p)return l-p}return t.length-r.length}var tn=/^\d+\/\d+$/;function sr(t){let r=[];for(let e of t.utilities.keys("static"))r.push({name:e,utility:e,fraction:!1,modifiers:[]});for(let e of t.utilities.keys("functional")){let n=t.utilities.getCompletions(e);for(let s of n)for(let l of s.values){let p=l!==null&&tn.test(l),c=l===null?e:`${e}-${l}`;r.push({name:c,utility:e,fraction:p,modifiers:s.modifiers}),s.supportsNegative&&r.push({name:`-${c}`,utility:`-${e}`,fraction:p,modifiers:s.modifiers})}}return r.length===0?[]:(r.sort((e,n)=>Be(e.name,n.name)),rn(r))}function rn(t){let r=[],o=null,e=new Map,n=new j(()=>[]);for(let l of t){let{utility:p,fraction:c}=l;o||(o={utility:p,items:[]},e.set(p,o)),p!==o.utility&&(r.push(o),o={utility:p,items:[]},e.set(p,o)),c?n.get(p).push(l):o.items.push(l)}o&&r[r.length-1]!==o&&r.push(o);for(let[l,p]of n){let c=e.get(l);c&&c.items.push(...p)}let s=[];for(let l of r)for(let p of l.items)s.push([p.name,{modifiers:p.modifiers}]);return s}function ur(t){let r=[];for(let[e,n]of t.variants.entries()){let p=function({value:c,modifier:d}={}){let u=e;c&&(u+=s?`-${c}`:c),d&&(u+=`/${d}`);let g=t.parseVariant(u);if(!g)return[];let m=z(".__placeholder__",[]);if(be(m,g,t.variants)===null)return[];let v=[];return je(m.nodes,(y,{path:b})=>{if(y.kind!=="rule"&&y.kind!=="at-rule"||y.nodes.length>0)return;b.sort((V,O)=>{let R=V.kind==="at-rule",K=O.kind==="at-rule";return R&&!K?-1:!R&&K?1:0});let x=b.flatMap(V=>V.kind==="rule"?V.selector==="&"?[]:[V.selector]:V.kind==="at-rule"?[`${V.name} ${V.params}`]:[]),$="";for(let V=x.length-1;V>=0;V--)$=$===""?x[V]:`${x[V]} { ${$} }`;v.push($)}),v};var o=p;if(n.kind==="arbitrary")continue;let s=e!=="@",l=t.variants.getCompletions(e);switch(n.kind){case"static":{r.push({name:e,values:l,isArbitrary:!1,hasDash:s,selectors:p});break}case"functional":{r.push({name:e,values:l,isArbitrary:!0,hasDash:s,selectors:p});break}case"compound":{r.push({name:e,values:l,isArbitrary:!0,hasDash:s,selectors:p});break}}}return r}function cr(t,r){let{astNodes:o,nodeSorting:e}=ne(Array.from(r),t),n=new Map(r.map(l=>[l,null])),s=0n;for(let l of o){let p=e.get(l)?.candidate;p&&n.set(p,n.get(p)??s++)}return r.map(l=>[l,n.get(l)??null])}var We=/^@?[a-zA-Z0-9_-]*$/;var bt=class{compareFns=new Map;variants=new Map;completions=new Map;groupOrder=null;lastOrder=0;static(r,o,{compounds:e,order:n}={}){this.set(r,{kind:"static",applyFn:o,compoundsWith:0,compounds:e??2,order:n})}fromAst(r,o){let e=[];_(o,n=>{n.kind==="rule"?e.push(n.selector):n.kind==="at-rule"&&n.name!=="@slot"&&e.push(`${n.name} ${n.params}`)}),this.static(r,n=>{let s=structuredClone(o);yt(s,n.nodes),n.nodes=s},{compounds:fe(e)})}functional(r,o,{compounds:e,order:n}={}){this.set(r,{kind:"functional",applyFn:o,compoundsWith:0,compounds:e??2,order:n})}compound(r,o,e,{compounds:n,order:s}={}){this.set(r,{kind:"compound",applyFn:e,compoundsWith:o,compounds:n??2,order:s})}group(r,o){this.groupOrder=this.nextOrder(),o&&this.compareFns.set(this.groupOrder,o),r(),this.groupOrder=null}has(r){return this.variants.has(r)}get(r){return this.variants.get(r)}kind(r){return this.variants.get(r)?.kind}compoundsWith(r,o){let e=this.variants.get(r),n=typeof o=="string"?this.variants.get(o):o.kind==="arbitrary"?{compounds:fe([o.selector])}:this.variants.get(o.root);return!(!e||!n||e.kind!=="compound"||n.compounds===0||e.compoundsWith===0||(e.compoundsWith&n.compounds)===0)}suggest(r,o){this.completions.set(r,o)}getCompletions(r){return this.completions.get(r)?.()??[]}compare(r,o){if(r===o)return 0;if(r===null)return-1;if(o===null)return 1;if(r.kind==="arbitrary"&&o.kind==="arbitrary")return r.selector{m.nodes=u.map(v=>M(v,m.nodes))},{compounds:g})}o("*",[":is(& > *)"],{compounds:0}),o("**",[":is(& *)"],{compounds:0});function e(d,u){return u.map(g=>{g=g.trim();let m=P(g," ");return m[0]==="not"?m.slice(1).join(" "):d==="@container"?m[0][0]==="("?`not ${g}`:m[1]==="not"?`${m[0]} ${m.slice(2).join(" ")}`:`${m[0]} not ${m.slice(1).join(" ")}`:`not ${g}`})}let n=["@media","@supports","@container"];function s(d){for(let u of n){if(u!==d.name)continue;let g=P(d.params,",");return g.length>1?null:(g=e(d.name,g),U(d.name,g.join(", ")))}return null}function l(d){return d.includes("::")?null:`&:not(${P(d,",").map(g=>(g=g.replaceAll("&","*"),g)).join(", ")})`}r.compound("not",3,(d,u)=>{if(u.variant.kind==="arbitrary"&&u.variant.relative||u.modifier)return null;let g=!1;if(_([d],(m,{path:v})=>{if(m.kind!=="rule"&&m.kind!=="at-rule")return 0;if(m.nodes.length>0)return 0;let y=[],b=[];for(let $ of v)$.kind==="at-rule"?y.push($):$.kind==="rule"&&b.push($);if(y.length>1)return 2;if(b.length>1)return 2;let x=[];for(let $ of b){let V=l($.selector);if(!V)return g=!1,2;x.push(z(V,[]))}for(let $ of y){let V=s($);if(!V)return g=!1,2;x.push(V)}return Object.assign(d,z("&",x)),g=!0,1}),d.kind==="rule"&&d.selector==="&"&&d.nodes.length===1&&Object.assign(d,d.nodes[0]),!g)return null}),r.suggest("not",()=>Array.from(r.keys()).filter(d=>r.compoundsWith("not",d))),r.compound("group",2,(d,u)=>{if(u.variant.kind==="arbitrary"&&u.variant.relative)return null;let g=u.modifier?`:where(.${t.prefix?`${t.prefix}\\:`:""}group\\/${u.modifier.value})`:`:where(.${t.prefix?`${t.prefix}\\:`:""}group)`,m=!1;if(_([d],(v,{path:y})=>{if(v.kind!=="rule")return 0;for(let x of y.slice(0,-1))if(x.kind==="rule")return m=!1,2;let b=v.selector.replaceAll("&",g);P(b,",").length>1&&(b=`:is(${b})`),v.selector=`&:is(${b} *)`,m=!0}),!m)return null}),r.suggest("group",()=>Array.from(r.keys()).filter(d=>r.compoundsWith("group",d))),r.compound("peer",2,(d,u)=>{if(u.variant.kind==="arbitrary"&&u.variant.relative)return null;let g=u.modifier?`:where(.${t.prefix?`${t.prefix}\\:`:""}peer\\/${u.modifier.value})`:`:where(.${t.prefix?`${t.prefix}\\:`:""}peer)`,m=!1;if(_([d],(v,{path:y})=>{if(v.kind!=="rule")return 0;for(let x of y.slice(0,-1))if(x.kind==="rule")return m=!1,2;let b=v.selector.replaceAll("&",g);P(b,",").length>1&&(b=`:is(${b})`),v.selector=`&:is(${b} ~ *)`,m=!0}),!m)return null}),r.suggest("peer",()=>Array.from(r.keys()).filter(d=>r.compoundsWith("peer",d))),o("first-letter",["&::first-letter"]),o("first-line",["&::first-line"]),o("marker",["& *::marker","&::marker"]),o("selection",["& *::selection","&::selection"]),o("file",["&::file-selector-button"]),o("placeholder",["&::placeholder"]),o("backdrop",["&::backdrop"]),!1;{let d=function(){return D([U("@property","--tw-content",[a("syntax",'"*"'),a("initial-value",'""'),a("inherits","false")])])};var p=d;r.static("before",u=>{u.nodes=[z("&::before",[d(),a("content","var(--tw-content)"),...u.nodes])]},{compounds:0}),r.static("after",u=>{u.nodes=[z("&::after",[d(),a("content","var(--tw-content)"),...u.nodes])]},{compounds:0})}o("first",["&:first-child"]),o("last",["&:last-child"]),o("only",["&:only-child"]),o("odd",["&:nth-child(odd)"]),o("even",["&:nth-child(even)"]),o("first-of-type",["&:first-of-type"]),o("last-of-type",["&:last-of-type"]),o("only-of-type",["&:only-of-type"]),o("visited",["&:visited"]),o("target",["&:target"]),o("open",["&:is([open], :popover-open, :open)"]),o("default",["&:default"]),o("checked",["&:checked"]),o("indeterminate",["&:indeterminate"]),o("placeholder-shown",["&:placeholder-shown"]),o("autofill",["&:autofill"]),o("optional",["&:optional"]),o("required",["&:required"]),o("valid",["&:valid"]),o("invalid",["&:invalid"]),!1,o("in-range",["&:in-range"]),o("out-of-range",["&:out-of-range"]),o("read-only",["&:read-only"]),o("empty",["&:empty"]),o("focus-within",["&:focus-within"]),r.static("hover",d=>{d.nodes=[z("&:hover",[U("@media","(hover: hover)",d.nodes)])]}),o("focus",["&:focus"]),o("focus-visible",["&:focus-visible"]),o("active",["&:active"]),o("enabled",["&:enabled"]),o("disabled",["&:disabled"]),o("inert",["&:is([inert], [inert] *)"]),r.compound("in",2,(d,u)=>{if(u.modifier)return null;let g=!1;if(_([d],(m,{path:v})=>{if(m.kind!=="rule")return 0;for(let y of v.slice(0,-1))if(y.kind==="rule")return g=!1,2;m.selector=`:where(${m.selector.replaceAll("&","*")}) &`,g=!0}),!g)return null}),r.suggest("in",()=>Array.from(r.keys()).filter(d=>r.compoundsWith("in",d))),r.compound("has",2,(d,u)=>{if(u.modifier)return null;let g=!1;if(_([d],(m,{path:v})=>{if(m.kind!=="rule")return 0;for(let y of v.slice(0,-1))if(y.kind==="rule")return g=!1,2;m.selector=`&:has(${m.selector.replaceAll("&","*")})`,g=!0}),!g)return null}),r.suggest("has",()=>Array.from(r.keys()).filter(d=>r.compoundsWith("has",d))),r.functional("aria",(d,u)=>{if(!u.value||u.modifier)return null;u.value.kind==="arbitrary"?d.nodes=[z(`&[aria-${fr(u.value.value)}]`,d.nodes)]:d.nodes=[z(`&[aria-${u.value.value}="true"]`,d.nodes)]}),r.suggest("aria",()=>["busy","checked","disabled","expanded","hidden","pressed","readonly","required","selected"]),r.functional("data",(d,u)=>{if(!u.value||u.modifier)return null;d.nodes=[z(`&[data-${fr(u.value.value)}]`,d.nodes)]}),r.functional("nth",(d,u)=>{if(!u.value||u.modifier||u.value.kind==="named"&&!N(u.value.value))return null;d.nodes=[z(`&:nth-child(${u.value.value})`,d.nodes)]}),r.functional("nth-last",(d,u)=>{if(!u.value||u.modifier||u.value.kind==="named"&&!N(u.value.value))return null;d.nodes=[z(`&:nth-last-child(${u.value.value})`,d.nodes)]}),r.functional("nth-of-type",(d,u)=>{if(!u.value||u.modifier||u.value.kind==="named"&&!N(u.value.value))return null;d.nodes=[z(`&:nth-of-type(${u.value.value})`,d.nodes)]}),r.functional("nth-last-of-type",(d,u)=>{if(!u.value||u.modifier||u.value.kind==="named"&&!N(u.value.value))return null;d.nodes=[z(`&:nth-last-of-type(${u.value.value})`,d.nodes)]}),r.functional("supports",(d,u)=>{if(!u.value||u.modifier)return null;let g=u.value.value;if(g===null)return null;if(/^[\w-]*\s*\(/.test(g)){let m=g.replace(/\b(and|or|not)\b/g," $1 ");d.nodes=[U("@supports",m,d.nodes)];return}g.includes(":")||(g=`${g}: var(--tw)`),(g[0]!=="("||g[g.length-1]!==")")&&(g=`(${g})`),d.nodes=[U("@supports",g,d.nodes)]},{compounds:1}),o("motion-safe",["@media (prefers-reduced-motion: no-preference)"]),o("motion-reduce",["@media (prefers-reduced-motion: reduce)"]),o("contrast-more",["@media (prefers-contrast: more)"]),o("contrast-less",["@media (prefers-contrast: less)"]);{let d=function(u,g,m,v){if(u===g)return 0;let y=v.get(u);if(y===null)return m==="asc"?-1:1;let b=v.get(g);return b===null?m==="asc"?1:-1:ue(y,b,m)};var c=d;{let u=t.namespace("--breakpoint"),g=new j(m=>{switch(m.kind){case"static":return t.resolveValue(m.root,["--breakpoint"])??null;case"functional":{if(!m.value||m.modifier)return null;let v=null;return m.value.kind==="arbitrary"?v=m.value.value:m.value.kind==="named"&&(v=t.resolveValue(m.value.value,["--breakpoint"])),!v||v.includes("var(")?null:v}case"arbitrary":case"compound":return null}});r.group(()=>{r.functional("max",(m,v)=>{if(v.modifier)return null;let y=g.get(v);if(y===null)return null;m.nodes=[U("@media",`(width < ${y})`,m.nodes)]},{compounds:1})},(m,v)=>d(m,v,"desc",g)),r.suggest("max",()=>Array.from(u.keys()).filter(m=>m!==null)),r.group(()=>{for(let[m,v]of t.namespace("--breakpoint"))m!==null&&r.static(m,y=>{y.nodes=[U("@media",`(width >= ${v})`,y.nodes)]},{compounds:1});r.functional("min",(m,v)=>{if(v.modifier)return null;let y=g.get(v);if(y===null)return null;m.nodes=[U("@media",`(width >= ${y})`,m.nodes)]},{compounds:1})},(m,v)=>d(m,v,"asc",g)),r.suggest("min",()=>Array.from(u.keys()).filter(m=>m!==null))}{let u=t.namespace("--container"),g=new j(m=>{switch(m.kind){case"functional":{if(m.value===null)return null;let v=null;return m.value.kind==="arbitrary"?v=m.value.value:m.value.kind==="named"&&(v=t.resolveValue(m.value.value,["--container"])),!v||v.includes("var(")?null:v}case"static":case"arbitrary":case"compound":return null}});r.group(()=>{r.functional("@max",(m,v)=>{let y=g.get(v);if(y===null)return null;m.nodes=[U("@container",v.modifier?`${v.modifier.value} (width < ${y})`:`(width < ${y})`,m.nodes)]},{compounds:1})},(m,v)=>d(m,v,"desc",g)),r.suggest("@max",()=>Array.from(u.keys()).filter(m=>m!==null)),r.group(()=>{r.functional("@",(m,v)=>{let y=g.get(v);if(y===null)return null;m.nodes=[U("@container",v.modifier?`${v.modifier.value} (width >= ${y})`:`(width >= ${y})`,m.nodes)]},{compounds:1}),r.functional("@min",(m,v)=>{let y=g.get(v);if(y===null)return null;m.nodes=[U("@container",v.modifier?`${v.modifier.value} (width >= ${y})`:`(width >= ${y})`,m.nodes)]},{compounds:1})},(m,v)=>d(m,v,"asc",g)),r.suggest("@min",()=>Array.from(u.keys()).filter(m=>m!==null)),r.suggest("@",()=>Array.from(u.keys()).filter(m=>m!==null))}}return o("portrait",["@media (orientation: portrait)"]),o("landscape",["@media (orientation: landscape)"]),o("ltr",['&:where(:dir(ltr), [dir="ltr"], [dir="ltr"] *)']),o("rtl",['&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *)']),o("dark",["@media (prefers-color-scheme: dark)"]),o("starting",["@starting-style"]),o("print",["@media print"]),o("forced-colors",["@media (forced-colors: active)"]),!1,!1,!1,r}function fr(t){if(t.includes("=")){let[r,...o]=P(t,"="),e=o.join("=").trim();if(e[0]==="'"||e[0]==='"')return t;if(e.length>1){let n=e[e.length-1];if(e[e.length-2]===" "&&(n==="i"||n==="I"||n==="s"||n==="S"))return`${r}="${e.slice(0,-2)}" ${n}`}return`${r}="${e}"`}return t}function yt(t,r){_(t,(o,{replaceWith:e})=>{if(o.kind==="at-rule"&&o.name==="@slot")e(r);else if(o.kind==="at-rule"&&(o.name==="@keyframes"||o.name==="@property"))return Object.assign(o,D([U(o.name,o.params,o.nodes)])),1})}function pr(t){let r=or(t),o=dr(t),e=new j(c=>Jt(c,p)),n=new j(c=>Array.from(Yt(c,p))),s=new j(c=>{let d=mr(c,p);try{he(d.map(({node:u})=>u),p)}catch{return[]}return d}),l=new j(c=>{for(let d of Fe(c))t.markUsedVariable(d)}),p={theme:t,utilities:r,variants:o,invalidCandidates:new Set,important:!1,candidatesToCss(c){let d=[];for(let u of c){let g=!1,{astNodes:m}=ne([u],this,{onInvalidCandidate(){g=!0}});m=se(m,p),m.length===0||g?d.push(null):d.push(Y(m))}return d},getClassOrder(c){return cr(this,c)},getClassList(){return sr(this)},getVariants(){return ur(this)},parseCandidate(c){return n.get(c)},parseVariant(c){return e.get(c)},compileAstNodes(c){return s.get(c)},getVariantOrder(){let c=Array.from(e.values());c.sort((m,v)=>this.variants.compare(m,v));let d=new Map,u,g=0;for(let m of c)m!==null&&(u!==void 0&&this.variants.compare(u,m)!==0&&g++,d.set(m,g),u=m);return d},resolveThemeValue(c){let d=c.lastIndexOf("/"),u=null;d!==-1&&(u=c.slice(d+1).trim(),c=c.slice(0,d).trim());let g=t.get([c])??void 0;return u&&g?J(g,u):g},trackUsedVariables(c){l.get(c)}};return p}var vt=["container-type","pointer-events","visibility","position","inset","inset-inline","inset-block","inset-inline-start","inset-inline-end","top","right","bottom","left","isolation","z-index","order","grid-column","grid-column-start","grid-column-end","grid-row","grid-row-start","grid-row-end","float","clear","--tw-container-component","margin","margin-inline","margin-block","margin-inline-start","margin-inline-end","margin-top","margin-right","margin-bottom","margin-left","box-sizing","display","field-sizing","aspect-ratio","height","max-height","min-height","width","max-width","min-width","flex","flex-shrink","flex-grow","flex-basis","table-layout","caption-side","border-collapse","border-spacing","transform-origin","translate","--tw-translate-x","--tw-translate-y","--tw-translate-z","scale","--tw-scale-x","--tw-scale-y","--tw-scale-z","rotate","--tw-rotate-x","--tw-rotate-y","--tw-rotate-z","--tw-skew-x","--tw-skew-y","transform","animation","cursor","touch-action","--tw-pan-x","--tw-pan-y","--tw-pinch-zoom","resize","scroll-snap-type","--tw-scroll-snap-strictness","scroll-snap-align","scroll-snap-stop","scroll-margin","scroll-margin-inline","scroll-margin-block","scroll-margin-inline-start","scroll-margin-inline-end","scroll-margin-top","scroll-margin-right","scroll-margin-bottom","scroll-margin-left","scroll-padding","scroll-padding-inline","scroll-padding-block","scroll-padding-inline-start","scroll-padding-inline-end","scroll-padding-top","scroll-padding-right","scroll-padding-bottom","scroll-padding-left","list-style-position","list-style-type","list-style-image","appearance","columns","break-before","break-inside","break-after","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-template-columns","grid-template-rows","flex-direction","flex-wrap","place-content","place-items","align-content","align-items","justify-content","justify-items","gap","column-gap","row-gap","--tw-space-x-reverse","--tw-space-y-reverse","divide-x-width","divide-y-width","--tw-divide-y-reverse","divide-style","divide-color","place-self","align-self","justify-self","overflow","overflow-x","overflow-y","overscroll-behavior","overscroll-behavior-x","overscroll-behavior-y","scroll-behavior","border-radius","border-start-radius","border-end-radius","border-top-radius","border-right-radius","border-bottom-radius","border-left-radius","border-start-start-radius","border-start-end-radius","border-end-end-radius","border-end-start-radius","border-top-left-radius","border-top-right-radius","border-bottom-right-radius","border-bottom-left-radius","border-width","border-inline-width","border-block-width","border-inline-start-width","border-inline-end-width","border-top-width","border-right-width","border-bottom-width","border-left-width","border-style","border-inline-style","border-block-style","border-inline-start-style","border-inline-end-style","border-top-style","border-right-style","border-bottom-style","border-left-style","border-color","border-inline-color","border-block-color","border-inline-start-color","border-inline-end-color","border-top-color","border-right-color","border-bottom-color","border-left-color","background-color","background-image","--tw-gradient-position","--tw-gradient-stops","--tw-gradient-via-stops","--tw-gradient-from","--tw-gradient-from-position","--tw-gradient-via","--tw-gradient-via-position","--tw-gradient-to","--tw-gradient-to-position","box-decoration-break","background-size","background-attachment","background-clip","background-position","background-repeat","background-origin","fill","stroke","stroke-width","object-fit","object-position","padding","padding-inline","padding-block","padding-inline-start","padding-inline-end","padding-top","padding-right","padding-bottom","padding-left","text-align","text-indent","vertical-align","font-family","font-size","line-height","font-weight","letter-spacing","text-wrap","overflow-wrap","word-break","text-overflow","hyphens","white-space","color","text-transform","font-style","font-stretch","font-variant-numeric","text-decoration-line","text-decoration-color","text-decoration-style","text-decoration-thickness","text-underline-offset","-webkit-font-smoothing","placeholder-color","caret-color","accent-color","color-scheme","opacity","background-blend-mode","mix-blend-mode","box-shadow","--tw-shadow","--tw-shadow-color","--tw-ring-shadow","--tw-ring-color","--tw-inset-shadow","--tw-inset-shadow-color","--tw-inset-ring-shadow","--tw-inset-ring-color","--tw-ring-offset-width","--tw-ring-offset-color","outline","outline-width","outline-offset","outline-color","--tw-blur","--tw-brightness","--tw-contrast","--tw-drop-shadow","--tw-grayscale","--tw-hue-rotate","--tw-invert","--tw-saturate","--tw-sepia","filter","--tw-backdrop-blur","--tw-backdrop-brightness","--tw-backdrop-contrast","--tw-backdrop-grayscale","--tw-backdrop-hue-rotate","--tw-backdrop-invert","--tw-backdrop-opacity","--tw-backdrop-saturate","--tw-backdrop-sepia","backdrop-filter","transition-property","transition-behavior","transition-delay","transition-duration","transition-timing-function","will-change","contain","content","forced-color-adjust"];function ne(t,r,{onInvalidCandidate:o}={}){let e=new Map,n=[],s=new Map;for(let p of t){if(r.invalidCandidates.has(p)){o?.(p);continue}let c=r.parseCandidate(p);if(c.length===0){o?.(p);continue}s.set(p,c)}let l=r.getVariantOrder();for(let[p,c]of s){let d=!1;for(let u of c){let g=r.compileAstNodes(u);if(g.length!==0){d=!0;for(let{node:m,propertySort:v}of g){let y=0n;for(let b of u.variants)y|=1n<{let d=e.get(p),u=e.get(c);if(d.variants-u.variants!==0n)return Number(d.variants-u.variants);let g=0;for(;g1)return null;for(let c of l.nodes)if(c.kind!=="rule"&&c.kind!=="at-rule"||n(c,r)===null)return null;_(l.nodes,c=>{if((c.kind==="rule"||c.kind==="at-rule")&&c.nodes.length<=0)return c.nodes=t.nodes,1}),t.nodes=l.nodes;return}if(n(t,r)===null)return null}function gr(t){let r=t.options?.types??[];return r.length>1&&r.includes("any")}function un(t,r){if(t.kind==="arbitrary"){let l=t.value;return t.modifier&&(l=B(l,t.modifier,r.theme)),l===null?[]:[[a(t.property,l)]]}let o=r.utilities.get(t.root)??[],e=[],n=o.filter(l=>!gr(l));for(let l of n){if(l.kind!==t.kind)continue;let p=l.compileFn(t);if(p!==void 0){if(p===null)return e;e.push(p)}}if(e.length>0)return e;let s=o.filter(l=>gr(l));for(let l of s){if(l.kind!==t.kind)continue;let p=l.compileFn(t);if(p!==void 0){if(p===null)return e;e.push(p)}}return e}function hr(t){for(let r of t)r.kind!=="at-root"&&(r.kind==="declaration"?r.important=!0:(r.kind==="rule"||r.kind==="at-rule")&&hr(r.nodes))}function cn(t){let r=new Set,o=0,e=t.slice(),n=!1;for(;e.length>0;){let s=e.shift();if(s.kind==="declaration"){if(s.value===void 0||(o++,n))continue;if(s.property==="--tw-sort"){let p=vt.indexOf(s.value??"");if(p!==-1){r.add(p),n=!0;continue}}let l=vt.indexOf(s.property);l!==-1&&r.add(l)}else if(s.kind==="rule"||s.kind==="at-rule")for(let l of s.nodes)e.push(l)}return{order:Array.from(r).sort((s,l)=>s-l),count:o}}function Ne(t,r){let o=0,e=M("&",t),n=new Set,s=new j(()=>new Set),l=new j(()=>new Set);_([e],(g,{parent:m})=>{if(g.kind==="at-rule"){if(g.name==="@keyframes")return _(g.nodes,v=>{if(v.kind==="at-rule"&&v.name==="@apply")throw new Error("You cannot use `@apply` inside `@keyframes`.")}),1;if(g.name==="@utility"){let v=g.params.replace(/-\*$/,"");l.get(v).add(g),_(g.nodes,y=>{if(!(y.kind!=="at-rule"||y.name!=="@apply")){n.add(g);for(let b of br(y,r))s.get(g).add(b)}});return}if(g.name==="@apply"){if(m===null)return;o|=1,n.add(m);for(let v of br(g,r))s.get(m).add(v)}}});let p=new Set,c=[],d=new Set;function u(g,m=[]){if(!p.has(g)){if(d.has(g)){let v=m[(m.indexOf(g)+1)%m.length];throw g.kind==="at-rule"&&g.name==="@utility"&&v.kind==="at-rule"&&v.name==="@utility"&&_(g.nodes,y=>{if(y.kind!=="at-rule"||y.name!=="@apply")return;let b=y.params.split(/\s+/g);for(let x of b)for(let $ of r.parseCandidate(x))switch($.kind){case"arbitrary":break;case"static":case"functional":if(v.params.replace(/-\*$/,"")===$.root)throw new Error(`You cannot \`@apply\` the \`${x}\` utility here because it creates a circular dependency.`);break;default:}}),new Error(`Circular dependency detected: + +${Y([g])} +Relies on: + +${Y([v])}`)}d.add(g);for(let v of s.get(g))for(let y of l.get(v))m.push(g),u(y,m),m.pop();p.add(g),d.delete(g),c.push(g)}}for(let g of n)u(g);for(let g of c)if("nodes"in g)for(let m=0;m{throw new Error(`Cannot apply unknown utility class: ${$}`)}}).astNodes,x=[];for(let $ of b)if($.kind==="rule")for(let V of $.nodes)x.push(V);else x.push($);g.nodes.splice(m,1,...x)}}return o}function*br(t,r){for(let o of t.params.split(/\s+/g))for(let e of r.parseCandidate(o))switch(e.kind){case"arbitrary":break;case"static":case"functional":yield e.root;break;default:}}async function kt(t,r,o,e=0){let n=0,s=[];return _(t,(l,{replaceWith:p})=>{if(l.kind==="at-rule"&&(l.name==="@import"||l.name==="@reference")){let c=fn(L(l.params));if(c===null)return;l.name==="@reference"&&(c.media="reference"),n|=2;let{uri:d,layer:u,media:g,supports:m}=c;if(d.startsWith("data:")||d.startsWith("http://")||d.startsWith("https://"))return;let v=Q({},[]);return s.push((async()=>{if(e>100)throw new Error(`Exceeded maximum recursion depth while resolving \`${d}\` in \`${r}\`)`);let y=await o(d,r),b=pe(y.content);await kt(b,y.base,o,e+1),v.nodes=dn([Q({base:y.base},b)],u,g,m)})()),p(v),1}}),s.length>0&&await Promise.all(s),n}function fn(t){let r,o=null,e=null,n=null;for(let s=0;s/g,"1")),e[0]==="opacity"&&(typeof n=="number"||typeof n=="string")){let l=typeof n=="string"?parseFloat(n):n;l>=0&&l<=1&&(n=l*100+"%")}let s=qe(e);s&&t.theme.add(`--${s}`,""+n,7)}if(Object.hasOwn(r,"fontFamily")){let e=5;{let n=ye(r.fontFamily.sans);n&&t.theme.hasDefault("--font-sans")&&(t.theme.add("--default-font-family",n,e),t.theme.add("--default-font-feature-settings",ye(r.fontFamily.sans,"fontFeatureSettings")??"normal",e),t.theme.add("--default-font-variation-settings",ye(r.fontFamily.sans,"fontVariationSettings")??"normal",e))}{let n=ye(r.fontFamily.mono);n&&t.theme.hasDefault("--font-mono")&&(t.theme.add("--default-mono-font-family",n,e),t.theme.add("--default-mono-font-feature-settings",ye(r.fontFamily.mono,"fontFeatureSettings")??"normal",e),t.theme.add("--default-mono-font-variation-settings",ye(r.fontFamily.mono,"fontVariationSettings")??"normal",e))}}return r}function pn(t){let r=[];return vr(t,[],(o,e)=>{if(gn(o))return r.push([e,o]),1;if(hn(o)){r.push([e,o[0]]);for(let n of Reflect.ownKeys(o[1]))r.push([[...e,`-${n}`],o[1][n]]);return 1}if(Array.isArray(o)&&o.every(n=>typeof n=="string"))return r.push([e,o.join(", ")]),1}),r}var mn=/^[a-zA-Z0-9-_%/\.]+$/;function qe(t){if(t[0]==="container")return null;t=structuredClone(t),t[0]==="animation"&&(t[0]="animate"),t[0]==="aspectRatio"&&(t[0]="aspect"),t[0]==="borderRadius"&&(t[0]="radius"),t[0]==="boxShadow"&&(t[0]="shadow"),t[0]==="colors"&&(t[0]="color"),t[0]==="containers"&&(t[0]="container"),t[0]==="fontFamily"&&(t[0]="font"),t[0]==="fontSize"&&(t[0]="text"),t[0]==="letterSpacing"&&(t[0]="tracking"),t[0]==="lineHeight"&&(t[0]="leading"),t[0]==="maxWidth"&&(t[0]="container"),t[0]==="screens"&&(t[0]="breakpoint"),t[0]==="transitionTimingFunction"&&(t[0]="ease");for(let r of t)if(!mn.test(r))return null;return t.map((r,o,e)=>r==="1"&&o!==e.length-1?"":r).map(r=>r.replaceAll(".","_").replace(/([a-z])([A-Z])/g,(o,e,n)=>`${e}-${n.toLowerCase()}`)).filter((r,o)=>r!=="DEFAULT"||o!==t.length-1).join("-")}function gn(t){return typeof t=="number"||typeof t=="string"}function hn(t){if(!Array.isArray(t)||t.length!==2||typeof t[0]!="string"&&typeof t[0]!="number"||t[1]===void 0||t[1]===null||typeof t[1]!="object")return!1;for(let r of Reflect.ownKeys(t[1]))if(typeof r!="string"||typeof t[1][r]!="string"&&typeof t[1][r]!="number")return!1;return!0}function vr(t,r=[],o){for(let e of Reflect.ownKeys(t)){let n=t[e];if(n==null)continue;let s=[...r,e],l=o(n,s)??0;if(l!==1){if(l===2)return 2;if(!(!Array.isArray(n)&&typeof n!="object")&&vr(n,s,o)===2)return 2}}}function He(t){let r=[];for(let o of P(t,".")){if(!o.includes("[")){r.push(o);continue}let e=0;for(;;){let n=o.indexOf("[",e),s=o.indexOf("]",n);if(n===-1||s===-1)break;n>e&&r.push(o.slice(e,n)),r.push(o.slice(n+1,s)),e=s+1}e<=o.length-1&&r.push(o.slice(e))}return r}function ve(t){if(Object.prototype.toString.call(t)!=="[object Object]")return!1;let r=Object.getPrototypeOf(t);return r===null||Object.getPrototypeOf(r)===null}function $e(t,r,o,e=[]){for(let n of r)if(n!=null)for(let s of Reflect.ownKeys(n)){e.push(s);let l=o(t[s],n[s],e);l!==void 0?t[s]=l:!ve(t[s])||!ve(n[s])?t[s]=n[s]:t[s]=$e({},[t[s],n[s]],o,e),e.pop()}return t}function Ge(t,r,o){return function(n,s){let l=n.lastIndexOf("/"),p=null;l!==-1&&(p=n.slice(l+1).trim(),n=n.slice(0,l).trim());let c=(()=>{let d=He(n),[u,g]=bn(t.theme,d),m=o(kr(r()??{},d)??null);if(typeof m=="string"&&(m=m.replace("","1")),typeof u!="object")return typeof g!="object"&&g&4?m??u:u;if(m!==null&&typeof m=="object"&&!Array.isArray(m)){let v=$e({},[m],(y,b)=>b);if(u===null&&Object.hasOwn(m,"__CSS_VALUES__")){let y={};for(let b in m.__CSS_VALUES__)y[b]=m[b],delete v[b];u=y}for(let y in u)y!=="__CSS_VALUES__"&&(m?.__CSS_VALUES__?.[y]&4&&kr(v,y.split("-"))!==void 0||(v[ae(y)]=u[y]));return v}if(Array.isArray(u)&&Array.isArray(g)&&Array.isArray(m)){let v=u[0],y=u[1];g[0]&4&&(v=m[0]??v);for(let b of Object.keys(y))g[1][b]&4&&(y[b]=m[1][b]??y[b]);return[v,y]}return u??m})();return p&&typeof c=="string"&&(c=J(c,p)),c??s}}function bn(t,r){if(r.length===1&&r[0].startsWith("--"))return[t.get([r[0]]),t.getOptions(r[0])];let o=qe(r),e=new Map,n=new j(()=>new Map),s=t.namespace(`--${o}`);if(s.size===0)return[null,0];let l=new Map;for(let[u,g]of s){if(!u||!u.includes("--")){e.set(u,g),l.set(u,t.getOptions(u?`--${o}-${u}`:`--${o}`));continue}let m=u.indexOf("--"),v=u.slice(0,m),y=u.slice(m+2);y=y.replace(/-([a-z])/g,(b,x)=>x.toUpperCase()),n.get(v===""?null:v).set(y,[g,t.getOptions(`--${o}${u}`)])}let p=t.getOptions(`--${o}`);for(let[u,g]of n){let m=e.get(u);if(typeof m!="string")continue;let v={},y={};for(let[b,[x,$]]of g)v[b]=x,y[b]=$;e.set(u,[m,v]),l.set(u,[p,y])}let c={},d={};for(let[u,g]of e)wr(c,[u??"DEFAULT"],g);for(let[u,g]of l)wr(d,[u??"DEFAULT"],g);return r[r.length-1]==="DEFAULT"?[c?.DEFAULT??null,d.DEFAULT??0]:"DEFAULT"in c&&Object.keys(c).length===1?[c.DEFAULT,d.DEFAULT??0]:(c.__CSS_VALUES__=d,[c,d])}function kr(t,r){for(let o=0;o0){let m=Te(n);e?e.nodes.push(m):r.push(m),n=""}let c=l,d=l+1;for(;d0){let d=Te(n);c.nodes.push(d),n=""}o.length>0?e=o[o.length-1]:e=null;break}case Sn:case An:case Nn:{if(n.length>0){let c=Te(n);e?e.nodes.push(c):r.push(c)}n=String.fromCharCode(p);break}case $r:{if(n.length>0){let u=Te(n);e?e.nodes.push(u):r.push(u)}n="";let c=l,d=0;for(let u=l+1;u0&&r.push(Te(n)),r}var Kr=/^[a-z@][a-zA-Z0-9/%._-]*$/;function wt({designSystem:t,ast:r,resolvedConfig:o,featuresRef:e,referenceMode:n}){let s={addBase(l){if(n)return;let p=X(l);e.current|=he(p,t),r.push(U("@layer","base",p))},addVariant(l,p){if(!We.test(l))throw new Error(`\`addVariant('${l}')\` defines an invalid variant name. Variants should only contain alphanumeric, dashes or underscore characters.`);typeof p=="string"||Array.isArray(p)?t.variants.static(l,c=>{c.nodes=Pr(p,c.nodes)},{compounds:fe(typeof p=="string"?[p]:p)}):typeof p=="object"&&t.variants.fromAst(l,X(p))},matchVariant(l,p,c){function d(g,m,v){let y=p(g,{modifier:m?.value??null});return Pr(y,v)}let u=Object.keys(c?.values??{});t.variants.group(()=>{t.variants.functional(l,(g,m)=>{if(!m.value){if(c?.values&&"DEFAULT"in c.values){g.nodes=d(c.values.DEFAULT,m.modifier,g.nodes);return}return null}if(m.value.kind==="arbitrary")g.nodes=d(m.value.value,m.modifier,g.nodes);else if(m.value.kind==="named"&&c?.values){let v=c.values[m.value.value];if(typeof v!="string")return;g.nodes=d(v,m.modifier,g.nodes)}})},(g,m)=>{if(g.kind!=="functional"||m.kind!=="functional")return 0;let v=g.value?g.value.value:"DEFAULT",y=m.value?m.value.value:"DEFAULT",b=c?.values?.[v]??v,x=c?.values?.[y]??y;if(c&&typeof c.sort=="function")return c.sort({value:b,modifier:g.modifier?.value??null},{value:x,modifier:m.modifier?.value??null});let $=u.indexOf(v),V=u.indexOf(y);return $=$===-1?u.length:$,V=V===-1?u.length:V,$!==V?$-V:bObject.entries(d));p=p.flatMap(([d,u])=>P(d,",").map(g=>[g.trim(),u]));let c=new j(()=>[]);for(let[d,u]of p){if(d.startsWith("@keyframes ")){n||r.push(M(d,X(u)));continue}let g=Ye(d),m=!1;if(Ve(g,v=>{if(v.kind==="selector"&&v.value[0]==="."&&Kr.test(v.value.slice(1))){let y=v.value;v.value="&";let b=Ee(g),x=y.slice(1),$=b==="&"?X(u):[M(b,X(u))];c.get(x).push(...$),m=!0,v.value=y;return}if(v.kind==="function"&&v.value===":not")return 1}),!m)throw new Error(`\`addUtilities({ '${d}' : \u2026 })\` defines an invalid utility selector. Utilities must be a single class name and start with a lowercase letter, eg. \`.scrollbar-none\`.`)}for(let[d,u]of c)t.theme.prefix&&_(u,g=>{if(g.kind==="rule"){let m=Ye(g.selector);Ve(m,v=>{v.kind==="selector"&&v.value[0]==="."&&(v.value=`.${t.theme.prefix}\\:${v.value.slice(1)}`)}),g.selector=Ee(m)}}),t.utilities.static(d,g=>{let m=structuredClone(u);return Ur(m,d,g.raw),e.current|=Ne(m,t),m})},matchUtilities(l,p){let c=p?.type?Array.isArray(p?.type)?p.type:[p.type]:["any"];for(let[u,g]of Object.entries(l)){let m=function({negative:v}){return y=>{if(y.value?.kind==="arbitrary"&&c.length>0&&!c.includes("any")&&(y.value.dataType&&!c.includes(y.value.dataType)||!y.value.dataType&&!I(y.value.value,c)))return;let b=c.includes("color"),x=null,$=!1;{let R=p?.values??{};b&&(R=Object.assign({inherit:"inherit",transparent:"transparent",current:"currentColor"},R)),y.value?y.value.kind==="arbitrary"?x=y.value.value:y.value.fraction&&R[y.value.fraction]?(x=R[y.value.fraction],$=!0):R[y.value.value]?x=R[y.value.value]:R.__BARE_VALUE__&&(x=R.__BARE_VALUE__(y.value)??null,$=(y.value.fraction!==null&&x?.includes("/"))??!1):x=R.DEFAULT??null}if(x===null)return;let V;{let R=p?.modifiers??null;y.modifier?R==="any"||y.modifier.kind==="arbitrary"?V=y.modifier.value:R?.[y.modifier.value]?V=R[y.modifier.value]:b&&!Number.isNaN(Number(y.modifier.value))?V=`${y.modifier.value}%`:V=null:V=null}if(y.modifier&&V===null&&!$)return y.value?.kind==="arbitrary"?null:void 0;b&&V!==null&&(x=J(x,V)),v&&(x=`calc(${x} * -1)`);let O=X(g(x,{modifier:V}));return Ur(O,u,y.raw),e.current|=Ne(O,t),O}};var d=m;if(!Kr.test(u))throw new Error(`\`matchUtilities({ '${u}' : \u2026 })\` defines an invalid utility name. Utilities should be alphanumeric and start with a lowercase letter, eg. \`scrollbar\`.`);p?.supportsNegativeValues&&t.utilities.functional(`-${u}`,m({negative:!0}),{types:c}),t.utilities.functional(u,m({negative:!1}),{types:c}),t.utilities.suggest(u,()=>{let v=p?.values??{},y=new Set(Object.keys(v));y.delete("__BARE_VALUE__"),y.has("DEFAULT")&&(y.delete("DEFAULT"),y.add(null));let b=p?.modifiers??{},x=b==="any"?[]:Object.keys(b);return[{supportsNegative:p?.supportsNegativeValues??!1,values:Array.from(y),modifiers:x}]})}},addComponents(l,p){this.addUtilities(l,p)},matchComponents(l,p){this.matchUtilities(l,p)},theme:Ge(t,()=>o.theme??{},l=>l),prefix(l){return l},config(l,p){let c=o;if(!l)return c;let d=He(l);for(let u=0;uObject.entries(e));for(let[e,n]of o)if(typeof n!="object"){if(!e.startsWith("--")){if(n==="@slot"){r.push(M(e,[U("@slot")]));continue}e=e.replace(/([A-Z])/g,"-$1").toLowerCase()}r.push(a(e,String(n)))}else if(Array.isArray(n))for(let s of n)typeof s=="string"?r.push(a(e,s)):r.push(M(e,X(s)));else n!==null&&r.push(M(e,X(n)));return r}function Pr(t,r){return(typeof t=="string"?[t]:t).flatMap(e=>{if(e.trim().endsWith("}")){let n=e.replace("}","{@slot}}"),s=pe(n);return yt(s,r),s}else return M(e,r)})}function Ur(t,r,o){_(t,e=>{if(e.kind==="rule"){let n=Ye(e.selector);Ve(n,s=>{s.kind==="selector"&&s.value===`.${r}`&&(s.value=`.${re(o)}`)}),e.selector=Ee(n)}})}function _r(t,r,o){for(let e of Vn(r))t.theme.addKeyframes(e)}function Vn(t){let r=[];if("keyframes"in t.theme)for(let[o,e]of Object.entries(t.theme.keyframes))r.push(U("@keyframes",o,X(e)));return r}var Je={inherit:"inherit",current:"currentColor",transparent:"transparent",black:"#000",white:"#fff",slate:{50:"oklch(0.984 0.003 247.858)",100:"oklch(0.968 0.007 247.896)",200:"oklch(0.929 0.013 255.508)",300:"oklch(0.869 0.022 252.894)",400:"oklch(0.704 0.04 256.788)",500:"oklch(0.554 0.046 257.417)",600:"oklch(0.446 0.043 257.281)",700:"oklch(0.372 0.044 257.287)",800:"oklch(0.279 0.041 260.031)",900:"oklch(0.208 0.042 265.755)",950:"oklch(0.129 0.042 264.695)"},gray:{50:"oklch(0.985 0.002 247.839)",100:"oklch(0.967 0.003 264.542)",200:"oklch(0.928 0.006 264.531)",300:"oklch(0.872 0.01 258.338)",400:"oklch(0.707 0.022 261.325)",500:"oklch(0.551 0.027 264.364)",600:"oklch(0.446 0.03 256.802)",700:"oklch(0.373 0.034 259.733)",800:"oklch(0.278 0.033 256.848)",900:"oklch(0.21 0.034 264.665)",950:"oklch(0.13 0.028 261.692)"},zinc:{50:"oklch(0.985 0 0)",100:"oklch(0.967 0.001 286.375)",200:"oklch(0.92 0.004 286.32)",300:"oklch(0.871 0.006 286.286)",400:"oklch(0.705 0.015 286.067)",500:"oklch(0.552 0.016 285.938)",600:"oklch(0.442 0.017 285.786)",700:"oklch(0.37 0.013 285.805)",800:"oklch(0.274 0.006 286.033)",900:"oklch(0.21 0.006 285.885)",950:"oklch(0.141 0.005 285.823)"},neutral:{50:"oklch(0.985 0 0)",100:"oklch(0.97 0 0)",200:"oklch(0.922 0 0)",300:"oklch(0.87 0 0)",400:"oklch(0.708 0 0)",500:"oklch(0.556 0 0)",600:"oklch(0.439 0 0)",700:"oklch(0.371 0 0)",800:"oklch(0.269 0 0)",900:"oklch(0.205 0 0)",950:"oklch(0.145 0 0)"},stone:{50:"oklch(0.985 0.001 106.423)",100:"oklch(0.97 0.001 106.424)",200:"oklch(0.923 0.003 48.717)",300:"oklch(0.869 0.005 56.366)",400:"oklch(0.709 0.01 56.259)",500:"oklch(0.553 0.013 58.071)",600:"oklch(0.444 0.011 73.639)",700:"oklch(0.374 0.01 67.558)",800:"oklch(0.268 0.007 34.298)",900:"oklch(0.216 0.006 56.043)",950:"oklch(0.147 0.004 49.25)"},red:{50:"oklch(0.971 0.013 17.38)",100:"oklch(0.936 0.032 17.717)",200:"oklch(0.885 0.062 18.334)",300:"oklch(0.808 0.114 19.571)",400:"oklch(0.704 0.191 22.216)",500:"oklch(0.637 0.237 25.331)",600:"oklch(0.577 0.245 27.325)",700:"oklch(0.505 0.213 27.518)",800:"oklch(0.444 0.177 26.899)",900:"oklch(0.396 0.141 25.723)",950:"oklch(0.258 0.092 26.042)"},orange:{50:"oklch(0.98 0.016 73.684)",100:"oklch(0.954 0.038 75.164)",200:"oklch(0.901 0.076 70.697)",300:"oklch(0.837 0.128 66.29)",400:"oklch(0.75 0.183 55.934)",500:"oklch(0.705 0.213 47.604)",600:"oklch(0.646 0.222 41.116)",700:"oklch(0.553 0.195 38.402)",800:"oklch(0.47 0.157 37.304)",900:"oklch(0.408 0.123 38.172)",950:"oklch(0.266 0.079 36.259)"},amber:{50:"oklch(0.987 0.022 95.277)",100:"oklch(0.962 0.059 95.617)",200:"oklch(0.924 0.12 95.746)",300:"oklch(0.879 0.169 91.605)",400:"oklch(0.828 0.189 84.429)",500:"oklch(0.769 0.188 70.08)",600:"oklch(0.666 0.179 58.318)",700:"oklch(0.555 0.163 48.998)",800:"oklch(0.473 0.137 46.201)",900:"oklch(0.414 0.112 45.904)",950:"oklch(0.279 0.077 45.635)"},yellow:{50:"oklch(0.987 0.026 102.212)",100:"oklch(0.973 0.071 103.193)",200:"oklch(0.945 0.129 101.54)",300:"oklch(0.905 0.182 98.111)",400:"oklch(0.852 0.199 91.936)",500:"oklch(0.795 0.184 86.047)",600:"oklch(0.681 0.162 75.834)",700:"oklch(0.554 0.135 66.442)",800:"oklch(0.476 0.114 61.907)",900:"oklch(0.421 0.095 57.708)",950:"oklch(0.286 0.066 53.813)"},lime:{50:"oklch(0.986 0.031 120.757)",100:"oklch(0.967 0.067 122.328)",200:"oklch(0.938 0.127 124.321)",300:"oklch(0.897 0.196 126.665)",400:"oklch(0.841 0.238 128.85)",500:"oklch(0.768 0.233 130.85)",600:"oklch(0.648 0.2 131.684)",700:"oklch(0.532 0.157 131.589)",800:"oklch(0.453 0.124 130.933)",900:"oklch(0.405 0.101 131.063)",950:"oklch(0.274 0.072 132.109)"},green:{50:"oklch(0.982 0.018 155.826)",100:"oklch(0.962 0.044 156.743)",200:"oklch(0.925 0.084 155.995)",300:"oklch(0.871 0.15 154.449)",400:"oklch(0.792 0.209 151.711)",500:"oklch(0.723 0.219 149.579)",600:"oklch(0.627 0.194 149.214)",700:"oklch(0.527 0.154 150.069)",800:"oklch(0.448 0.119 151.328)",900:"oklch(0.393 0.095 152.535)",950:"oklch(0.266 0.065 152.934)"},emerald:{50:"oklch(0.979 0.021 166.113)",100:"oklch(0.95 0.052 163.051)",200:"oklch(0.905 0.093 164.15)",300:"oklch(0.845 0.143 164.978)",400:"oklch(0.765 0.177 163.223)",500:"oklch(0.696 0.17 162.48)",600:"oklch(0.596 0.145 163.225)",700:"oklch(0.508 0.118 165.612)",800:"oklch(0.432 0.095 166.913)",900:"oklch(0.378 0.077 168.94)",950:"oklch(0.262 0.051 172.552)"},teal:{50:"oklch(0.984 0.014 180.72)",100:"oklch(0.953 0.051 180.801)",200:"oklch(0.91 0.096 180.426)",300:"oklch(0.855 0.138 181.071)",400:"oklch(0.777 0.152 181.912)",500:"oklch(0.704 0.14 182.503)",600:"oklch(0.6 0.118 184.704)",700:"oklch(0.511 0.096 186.391)",800:"oklch(0.437 0.078 188.216)",900:"oklch(0.386 0.063 188.416)",950:"oklch(0.277 0.046 192.524)"},cyan:{50:"oklch(0.984 0.019 200.873)",100:"oklch(0.956 0.045 203.388)",200:"oklch(0.917 0.08 205.041)",300:"oklch(0.865 0.127 207.078)",400:"oklch(0.789 0.154 211.53)",500:"oklch(0.715 0.143 215.221)",600:"oklch(0.609 0.126 221.723)",700:"oklch(0.52 0.105 223.128)",800:"oklch(0.45 0.085 224.283)",900:"oklch(0.398 0.07 227.392)",950:"oklch(0.302 0.056 229.695)"},sky:{50:"oklch(0.977 0.013 236.62)",100:"oklch(0.951 0.026 236.824)",200:"oklch(0.901 0.058 230.902)",300:"oklch(0.828 0.111 230.318)",400:"oklch(0.746 0.16 232.661)",500:"oklch(0.685 0.169 237.323)",600:"oklch(0.588 0.158 241.966)",700:"oklch(0.5 0.134 242.749)",800:"oklch(0.443 0.11 240.79)",900:"oklch(0.391 0.09 240.876)",950:"oklch(0.293 0.066 243.157)"},blue:{50:"oklch(0.97 0.014 254.604)",100:"oklch(0.932 0.032 255.585)",200:"oklch(0.882 0.059 254.128)",300:"oklch(0.809 0.105 251.813)",400:"oklch(0.707 0.165 254.624)",500:"oklch(0.623 0.214 259.815)",600:"oklch(0.546 0.245 262.881)",700:"oklch(0.488 0.243 264.376)",800:"oklch(0.424 0.199 265.638)",900:"oklch(0.379 0.146 265.522)",950:"oklch(0.282 0.091 267.935)"},indigo:{50:"oklch(0.962 0.018 272.314)",100:"oklch(0.93 0.034 272.788)",200:"oklch(0.87 0.065 274.039)",300:"oklch(0.785 0.115 274.713)",400:"oklch(0.673 0.182 276.935)",500:"oklch(0.585 0.233 277.117)",600:"oklch(0.511 0.262 276.966)",700:"oklch(0.457 0.24 277.023)",800:"oklch(0.398 0.195 277.366)",900:"oklch(0.359 0.144 278.697)",950:"oklch(0.257 0.09 281.288)"},violet:{50:"oklch(0.969 0.016 293.756)",100:"oklch(0.943 0.029 294.588)",200:"oklch(0.894 0.057 293.283)",300:"oklch(0.811 0.111 293.571)",400:"oklch(0.702 0.183 293.541)",500:"oklch(0.606 0.25 292.717)",600:"oklch(0.541 0.281 293.009)",700:"oklch(0.491 0.27 292.581)",800:"oklch(0.432 0.232 292.759)",900:"oklch(0.38 0.189 293.745)",950:"oklch(0.283 0.141 291.089)"},purple:{50:"oklch(0.977 0.014 308.299)",100:"oklch(0.946 0.033 307.174)",200:"oklch(0.902 0.063 306.703)",300:"oklch(0.827 0.119 306.383)",400:"oklch(0.714 0.203 305.504)",500:"oklch(0.627 0.265 303.9)",600:"oklch(0.558 0.288 302.321)",700:"oklch(0.496 0.265 301.924)",800:"oklch(0.438 0.218 303.724)",900:"oklch(0.381 0.176 304.987)",950:"oklch(0.291 0.149 302.717)"},fuchsia:{50:"oklch(0.977 0.017 320.058)",100:"oklch(0.952 0.037 318.852)",200:"oklch(0.903 0.076 319.62)",300:"oklch(0.833 0.145 321.434)",400:"oklch(0.74 0.238 322.16)",500:"oklch(0.667 0.295 322.15)",600:"oklch(0.591 0.293 322.896)",700:"oklch(0.518 0.253 323.949)",800:"oklch(0.452 0.211 324.591)",900:"oklch(0.401 0.17 325.612)",950:"oklch(0.293 0.136 325.661)"},pink:{50:"oklch(0.971 0.014 343.198)",100:"oklch(0.948 0.028 342.258)",200:"oklch(0.899 0.061 343.231)",300:"oklch(0.823 0.12 346.018)",400:"oklch(0.718 0.202 349.761)",500:"oklch(0.656 0.241 354.308)",600:"oklch(0.592 0.249 0.584)",700:"oklch(0.525 0.223 3.958)",800:"oklch(0.459 0.187 3.815)",900:"oklch(0.408 0.153 2.432)",950:"oklch(0.284 0.109 3.907)"},rose:{50:"oklch(0.969 0.015 12.422)",100:"oklch(0.941 0.03 12.58)",200:"oklch(0.892 0.058 10.001)",300:"oklch(0.81 0.117 11.638)",400:"oklch(0.712 0.194 13.428)",500:"oklch(0.645 0.246 16.439)",600:"oklch(0.586 0.253 17.585)",700:"oklch(0.514 0.222 16.935)",800:"oklch(0.455 0.188 13.697)",900:"oklch(0.41 0.159 10.272)",950:"oklch(0.271 0.105 12.094)"}};function de(t){return{__BARE_VALUE__:t}}var Z=de(t=>{if(N(t.value))return t.value}),q=de(t=>{if(N(t.value))return`${t.value}%`}),ie=de(t=>{if(N(t.value))return`${t.value}px`}),Dr=de(t=>{if(N(t.value))return`${t.value}ms`}),Ze=de(t=>{if(N(t.value))return`${t.value}deg`}),En=de(t=>{if(t.fraction===null)return;let[r,o]=P(t.fraction,"/");if(!(!N(r)||!N(o)))return t.fraction}),zr=de(t=>{if(N(Number(t.value)))return`repeat(${t.value}, minmax(0, 1fr))`}),Fr={accentColor:({theme:t})=>t("colors"),animation:{none:"none",spin:"spin 1s linear infinite",ping:"ping 1s cubic-bezier(0, 0, 0.2, 1) infinite",pulse:"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",bounce:"bounce 1s infinite"},aria:{busy:'busy="true"',checked:'checked="true"',disabled:'disabled="true"',expanded:'expanded="true"',hidden:'hidden="true"',pressed:'pressed="true"',readonly:'readonly="true"',required:'required="true"',selected:'selected="true"'},aspectRatio:{auto:"auto",square:"1 / 1",video:"16 / 9",...En},backdropBlur:({theme:t})=>t("blur"),backdropBrightness:({theme:t})=>({...t("brightness"),...q}),backdropContrast:({theme:t})=>({...t("contrast"),...q}),backdropGrayscale:({theme:t})=>({...t("grayscale"),...q}),backdropHueRotate:({theme:t})=>({...t("hueRotate"),...Ze}),backdropInvert:({theme:t})=>({...t("invert"),...q}),backdropOpacity:({theme:t})=>({...t("opacity"),...q}),backdropSaturate:({theme:t})=>({...t("saturate"),...q}),backdropSepia:({theme:t})=>({...t("sepia"),...q}),backgroundColor:({theme:t})=>t("colors"),backgroundImage:{none:"none","gradient-to-t":"linear-gradient(to top, var(--tw-gradient-stops))","gradient-to-tr":"linear-gradient(to top right, var(--tw-gradient-stops))","gradient-to-r":"linear-gradient(to right, var(--tw-gradient-stops))","gradient-to-br":"linear-gradient(to bottom right, var(--tw-gradient-stops))","gradient-to-b":"linear-gradient(to bottom, var(--tw-gradient-stops))","gradient-to-bl":"linear-gradient(to bottom left, var(--tw-gradient-stops))","gradient-to-l":"linear-gradient(to left, var(--tw-gradient-stops))","gradient-to-tl":"linear-gradient(to top left, var(--tw-gradient-stops))"},backgroundOpacity:({theme:t})=>t("opacity"),backgroundPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},backgroundSize:{auto:"auto",cover:"cover",contain:"contain"},blur:{0:"0",none:"",sm:"4px",DEFAULT:"8px",md:"12px",lg:"16px",xl:"24px","2xl":"40px","3xl":"64px"},borderColor:({theme:t})=>({DEFAULT:"currentColor",...t("colors")}),borderOpacity:({theme:t})=>t("opacity"),borderRadius:{none:"0px",sm:"0.125rem",DEFAULT:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},borderSpacing:({theme:t})=>t("spacing"),borderWidth:{DEFAULT:"1px",0:"0px",2:"2px",4:"4px",8:"8px",...ie},boxShadow:{sm:"0 1px 2px 0 rgb(0 0 0 / 0.05)",DEFAULT:"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",md:"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",lg:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",xl:"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)","2xl":"0 25px 50px -12px rgb(0 0 0 / 0.25)",inner:"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)",none:"none"},boxShadowColor:({theme:t})=>t("colors"),brightness:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5",200:"2",...q},caretColor:({theme:t})=>t("colors"),colors:()=>({...Je}),columns:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12","3xs":"16rem","2xs":"18rem",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",...Z},container:{},content:{none:"none"},contrast:{0:"0",50:".5",75:".75",100:"1",125:"1.25",150:"1.5",200:"2",...q},cursor:{auto:"auto",default:"default",pointer:"pointer",wait:"wait",text:"text",move:"move",help:"help","not-allowed":"not-allowed",none:"none","context-menu":"context-menu",progress:"progress",cell:"cell",crosshair:"crosshair","vertical-text":"vertical-text",alias:"alias",copy:"copy","no-drop":"no-drop",grab:"grab",grabbing:"grabbing","all-scroll":"all-scroll","col-resize":"col-resize","row-resize":"row-resize","n-resize":"n-resize","e-resize":"e-resize","s-resize":"s-resize","w-resize":"w-resize","ne-resize":"ne-resize","nw-resize":"nw-resize","se-resize":"se-resize","sw-resize":"sw-resize","ew-resize":"ew-resize","ns-resize":"ns-resize","nesw-resize":"nesw-resize","nwse-resize":"nwse-resize","zoom-in":"zoom-in","zoom-out":"zoom-out"},divideColor:({theme:t})=>t("borderColor"),divideOpacity:({theme:t})=>t("borderOpacity"),divideWidth:({theme:t})=>({...t("borderWidth"),...ie}),dropShadow:{sm:"0 1px 1px rgb(0 0 0 / 0.05)",DEFAULT:["0 1px 2px rgb(0 0 0 / 0.1)","0 1px 1px rgb(0 0 0 / 0.06)"],md:["0 4px 3px rgb(0 0 0 / 0.07)","0 2px 2px rgb(0 0 0 / 0.06)"],lg:["0 10px 8px rgb(0 0 0 / 0.04)","0 4px 3px rgb(0 0 0 / 0.1)"],xl:["0 20px 13px rgb(0 0 0 / 0.03)","0 8px 5px rgb(0 0 0 / 0.08)"],"2xl":"0 25px 25px rgb(0 0 0 / 0.15)",none:"0 0 #0000"},fill:({theme:t})=>t("colors"),flex:{1:"1 1 0%",auto:"1 1 auto",initial:"0 1 auto",none:"none"},flexBasis:({theme:t})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",...t("spacing")}),flexGrow:{0:"0",DEFAULT:"1",...Z},flexShrink:{0:"0",DEFAULT:"1",...Z},fontFamily:{sans:["ui-sans-serif","system-ui","sans-serif",'"Apple Color Emoji"','"Segoe UI Emoji"','"Segoe UI Symbol"','"Noto Color Emoji"'],serif:["ui-serif","Georgia","Cambria",'"Times New Roman"',"Times","serif"],mono:["ui-monospace","SFMono-Regular","Menlo","Monaco","Consolas",'"Liberation Mono"','"Courier New"',"monospace"]},fontSize:{xs:["0.75rem",{lineHeight:"1rem"}],sm:["0.875rem",{lineHeight:"1.25rem"}],base:["1rem",{lineHeight:"1.5rem"}],lg:["1.125rem",{lineHeight:"1.75rem"}],xl:["1.25rem",{lineHeight:"1.75rem"}],"2xl":["1.5rem",{lineHeight:"2rem"}],"3xl":["1.875rem",{lineHeight:"2.25rem"}],"4xl":["2.25rem",{lineHeight:"2.5rem"}],"5xl":["3rem",{lineHeight:"1"}],"6xl":["3.75rem",{lineHeight:"1"}],"7xl":["4.5rem",{lineHeight:"1"}],"8xl":["6rem",{lineHeight:"1"}],"9xl":["8rem",{lineHeight:"1"}]},fontWeight:{thin:"100",extralight:"200",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},gap:({theme:t})=>t("spacing"),gradientColorStops:({theme:t})=>t("colors"),gradientColorStopPositions:{"0%":"0%","5%":"5%","10%":"10%","15%":"15%","20%":"20%","25%":"25%","30%":"30%","35%":"35%","40%":"40%","45%":"45%","50%":"50%","55%":"55%","60%":"60%","65%":"65%","70%":"70%","75%":"75%","80%":"80%","85%":"85%","90%":"90%","95%":"95%","100%":"100%",...q},grayscale:{0:"0",DEFAULT:"100%",...q},gridAutoColumns:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridAutoRows:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridColumn:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridColumnEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...Z},gridColumnStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...Z},gridRow:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridRowEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...Z},gridRowStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...Z},gridTemplateColumns:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))",...zr},gridTemplateRows:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))",...zr},height:({theme:t})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...t("spacing")}),hueRotate:{0:"0deg",15:"15deg",30:"30deg",60:"60deg",90:"90deg",180:"180deg",...Ze},inset:({theme:t})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%",...t("spacing")}),invert:{0:"0",DEFAULT:"100%",...q},keyframes:{spin:{to:{transform:"rotate(360deg)"}},ping:{"75%, 100%":{transform:"scale(2)",opacity:"0"}},pulse:{"50%":{opacity:".5"}},bounce:{"0%, 100%":{transform:"translateY(-25%)",animationTimingFunction:"cubic-bezier(0.8,0,1,1)"},"50%":{transform:"none",animationTimingFunction:"cubic-bezier(0,0,0.2,1)"}}},letterSpacing:{tighter:"-0.05em",tight:"-0.025em",normal:"0em",wide:"0.025em",wider:"0.05em",widest:"0.1em"},lineHeight:{none:"1",tight:"1.25",snug:"1.375",normal:"1.5",relaxed:"1.625",loose:"2",3:".75rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem"},listStyleType:{none:"none",disc:"disc",decimal:"decimal"},listStyleImage:{none:"none"},margin:({theme:t})=>({auto:"auto",...t("spacing")}),lineClamp:{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",...Z},maxHeight:({theme:t})=>({none:"none",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...t("spacing")}),maxWidth:({theme:t})=>({none:"none",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",prose:"65ch",...t("spacing")}),minHeight:({theme:t})=>({full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...t("spacing")}),minWidth:({theme:t})=>({full:"100%",min:"min-content",max:"max-content",fit:"fit-content",...t("spacing")}),objectPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},opacity:{0:"0",5:"0.05",10:"0.1",15:"0.15",20:"0.2",25:"0.25",30:"0.3",35:"0.35",40:"0.4",45:"0.45",50:"0.5",55:"0.55",60:"0.6",65:"0.65",70:"0.7",75:"0.75",80:"0.8",85:"0.85",90:"0.9",95:"0.95",100:"1",...q},order:{first:"-9999",last:"9999",none:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",...Z},outlineColor:({theme:t})=>t("colors"),outlineOffset:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...ie},outlineWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...ie},padding:({theme:t})=>t("spacing"),placeholderColor:({theme:t})=>t("colors"),placeholderOpacity:({theme:t})=>t("opacity"),ringColor:({theme:t})=>({DEFAULT:"currentColor",...t("colors")}),ringOffsetColor:({theme:t})=>t("colors"),ringOffsetWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...ie},ringOpacity:({theme:t})=>({DEFAULT:"0.5",...t("opacity")}),ringWidth:{DEFAULT:"3px",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...ie},rotate:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg",45:"45deg",90:"90deg",180:"180deg",...Ze},saturate:{0:"0",50:".5",100:"1",150:"1.5",200:"2",...q},scale:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5",...q},screens:{sm:"40rem",md:"48rem",lg:"64rem",xl:"80rem","2xl":"96rem"},scrollMargin:({theme:t})=>t("spacing"),scrollPadding:({theme:t})=>t("spacing"),sepia:{0:"0",DEFAULT:"100%",...q},skew:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg",...Ze},space:({theme:t})=>t("spacing"),spacing:{px:"1px",0:"0px",.5:"0.125rem",1:"0.25rem",1.5:"0.375rem",2:"0.5rem",2.5:"0.625rem",3:"0.75rem",3.5:"0.875rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem",11:"2.75rem",12:"3rem",14:"3.5rem",16:"4rem",20:"5rem",24:"6rem",28:"7rem",32:"8rem",36:"9rem",40:"10rem",44:"11rem",48:"12rem",52:"13rem",56:"14rem",60:"15rem",64:"16rem",72:"18rem",80:"20rem",96:"24rem"},stroke:({theme:t})=>({none:"none",...t("colors")}),strokeWidth:{0:"0",1:"1",2:"2",...Z},supports:{},data:{},textColor:({theme:t})=>t("colors"),textDecorationColor:({theme:t})=>t("colors"),textDecorationThickness:{auto:"auto","from-font":"from-font",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...ie},textIndent:({theme:t})=>t("spacing"),textOpacity:({theme:t})=>t("opacity"),textUnderlineOffset:{auto:"auto",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...ie},transformOrigin:{center:"center",top:"top","top-right":"top right",right:"right","bottom-right":"bottom right",bottom:"bottom","bottom-left":"bottom left",left:"left","top-left":"top left"},transitionDelay:{0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms",...Dr},transitionDuration:{DEFAULT:"150ms",0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms",...Dr},transitionProperty:{none:"none",all:"all",DEFAULT:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter",colors:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke",opacity:"opacity",shadow:"box-shadow",transform:"transform"},transitionTimingFunction:{DEFAULT:"cubic-bezier(0.4, 0, 0.2, 1)",linear:"linear",in:"cubic-bezier(0.4, 0, 1, 1)",out:"cubic-bezier(0, 0, 0.2, 1)","in-out":"cubic-bezier(0.4, 0, 0.2, 1)"},translate:({theme:t})=>({"1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%",...t("spacing")}),size:({theme:t})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",...t("spacing")}),width:({theme:t})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",screen:"100vw",svw:"100svw",lvw:"100lvw",dvw:"100dvw",min:"min-content",max:"max-content",fit:"fit-content",...t("spacing")}),willChange:{auto:"auto",scroll:"scroll-position",contents:"contents",transform:"transform"},zIndex:{auto:"auto",0:"0",10:"10",20:"20",30:"30",40:"40",50:"50",...Z}};function jr(t){return{theme:{...Fr,colors:({theme:r})=>r("color",{}),extend:{fontSize:({theme:r})=>({...r("text",{})}),boxShadow:({theme:r})=>({...r("shadow",{})}),animation:({theme:r})=>({...r("animate",{})}),aspectRatio:({theme:r})=>({...r("aspect",{})}),borderRadius:({theme:r})=>({...r("radius",{})}),screens:({theme:r})=>({...r("breakpoint",{})}),letterSpacing:({theme:r})=>({...r("tracking",{})}),lineHeight:({theme:r})=>({...r("leading",{})}),transitionDuration:{DEFAULT:t.get(["--default-transition-duration"])??null},transitionTimingFunction:{DEFAULT:t.get(["--default-transition-timing-function"])??null},maxWidth:({theme:r})=>({...r("container",{})})}}}}var Rn={blocklist:[],future:{},prefix:"",important:!1,darkMode:null,theme:{},plugins:[],content:{files:[]}};function At(t,r){let o={design:t,configs:[],plugins:[],content:{files:[]},theme:{},extend:{},result:structuredClone(Rn)};for(let n of r)xt(o,n);for(let n of o.configs)"darkMode"in n&&n.darkMode!==void 0&&(o.result.darkMode=n.darkMode??null),"prefix"in n&&n.prefix!==void 0&&(o.result.prefix=n.prefix??""),"blocklist"in n&&n.blocklist!==void 0&&(o.result.blocklist=n.blocklist??[]),"important"in n&&n.important!==void 0&&(o.result.important=n.important??!1);let e=Kn(o);return{resolvedConfig:{...o.result,content:o.content,theme:o.theme,plugins:o.plugins},replacedThemeKeys:e}}function On(t,r){if(Array.isArray(t)&&ve(t[0]))return t.concat(r);if(Array.isArray(r)&&ve(r[0])&&ve(t))return[t,...r];if(Array.isArray(r))return r}function xt(t,{config:r,base:o,path:e,reference:n}){let s=[];for(let c of r.plugins??[])"__isOptionsFunction"in c?s.push({...c(),reference:n}):"handler"in c?s.push({...c,reference:n}):s.push({handler:c,reference:n});if(Array.isArray(r.presets)&&r.presets.length===0)throw new Error("Error in the config file/plugin/preset. An empty preset (`preset: []`) is not currently supported.");for(let c of r.presets??[])xt(t,{path:e,base:o,config:c,reference:n});for(let c of s)t.plugins.push(c),c.config&&xt(t,{path:e,base:o,config:c.config,reference:!!c.reference});let l=r.content??[],p=Array.isArray(l)?l:l.files;for(let c of p)t.content.files.push(typeof c=="object"?c:{base:o,pattern:c});t.configs.push(r)}function Kn(t){let r=new Set,o=Ge(t.design,()=>t.theme,n),e=Object.assign(o,{theme:o,colors:Je});function n(s){return typeof s=="function"?s(e)??null:s??null}for(let s of t.configs){let l=s.theme??{},p=l.extend??{};for(let c in l)c!=="extend"&&r.add(c);Object.assign(t.theme,l);for(let c in p)t.extend[c]??=[],t.extend[c].push(p[c])}delete t.theme.extend;for(let s in t.extend){let l=[t.theme[s],...t.extend[s]];t.theme[s]=()=>{let p=l.map(n);return $e({},p,On)}}for(let s in t.theme)t.theme[s]=n(t.theme[s]);if(t.theme.screens&&typeof t.theme.screens=="object")for(let s of Object.keys(t.theme.screens)){let l=t.theme.screens[s];l&&typeof l=="object"&&("raw"in l||"max"in l||"min"in l&&(t.theme.screens[s]=l.min))}return r}function Ir(t,r){let o=t.theme.container||{};if(typeof o!="object"||o===null)return;let e=Pn(o,r);e.length!==0&&r.utilities.static("container",()=>structuredClone(e))}function Pn({center:t,padding:r,screens:o},e){let n=[],s=null;if(t&&n.push(a("margin-inline","auto")),(typeof r=="string"||typeof r=="object"&&r!==null&&"DEFAULT"in r)&&n.push(a("padding-inline",typeof r=="string"?r:r.DEFAULT)),typeof o=="object"&&o!==null){s=new Map;let l=Array.from(e.theme.namespace("--breakpoint").entries());if(l.sort((p,c)=>ue(p[1],c[1],"asc")),l.length>0){let[p]=l[0];n.push(U("@media",`(width >= --theme(--breakpoint-${p}))`,[a("max-width","none")]))}for(let[p,c]of Object.entries(o)){if(typeof c=="object")if("min"in c)c=c.min;else continue;s.set(p,U("@media",`(width >= ${c})`,[a("max-width",c)]))}}if(typeof r=="object"&&r!==null){let l=Object.entries(r).filter(([p])=>p!=="DEFAULT").map(([p,c])=>[p,e.theme.resolveValue(p,["--breakpoint"]),c]).filter(Boolean);l.sort((p,c)=>ue(p[1],c[1],"asc"));for(let[p,,c]of l)if(s&&s.has(p))s.get(p).nodes.push(a("padding-inline",c));else{if(s)continue;n.push(U("@media",`(width >= theme(--breakpoint-${p}))`,[a("padding-inline",c)]))}}if(s)for(let[,l]of s)n.push(l);return n}function Lr({addVariant:t,config:r}){let o=r("darkMode",null),[e,n=".dark"]=Array.isArray(o)?o:[o];if(e==="variant"){let s;if(Array.isArray(n)||typeof n=="function"?s=n:typeof n=="string"&&(s=[n]),Array.isArray(s))for(let l of s)l===".dark"?(e=!1,console.warn('When using `variant` for `darkMode`, you must provide a selector.\nExample: `darkMode: ["variant", ".your-selector &"]`')):l.includes("&")||(e=!1,console.warn('When using `variant` for `darkMode`, your selector must contain `&`.\nExample `darkMode: ["variant", ".your-selector &"]`'));n=s}e===null||(e==="selector"?t("dark",`&:where(${n}, ${n} *)`):e==="media"?t("dark","@media (prefers-color-scheme: dark)"):e==="variant"?t("dark",n):e==="class"&&t("dark",`&:is(${n} *)`))}function Mr(t){for(let[r,o]of[["t","top"],["tr","top right"],["r","right"],["br","bottom right"],["b","bottom"],["bl","bottom left"],["l","left"],["tl","top left"]])t.utilities.static(`bg-gradient-to-${r}`,()=>[a("--tw-gradient-position",`to ${o} in oklab`),a("background-image","linear-gradient(var(--tw-gradient-stops))")]);t.utilities.functional("max-w-screen",r=>{if(!r.value||r.value.kind==="arbitrary")return;let o=t.theme.resolve(r.value.value,["--breakpoint"]);if(o)return[a("max-width",o)]}),t.utilities.static("overflow-ellipsis",()=>[a("text-overflow","ellipsis")]),t.utilities.static("decoration-slice",()=>[a("-webkit-box-decoration-break","slice"),a("box-decoration-break","slice")]),t.utilities.static("decoration-clone",()=>[a("-webkit-box-decoration-break","clone"),a("box-decoration-break","clone")]),t.utilities.functional("flex-shrink",r=>{if(!r.modifier){if(!r.value)return[a("flex-shrink","1")];if(r.value.kind==="arbitrary")return[a("flex-shrink",r.value.value)];if(N(r.value.value))return[a("flex-shrink",r.value.value)]}}),t.utilities.functional("flex-grow",r=>{if(!r.modifier){if(!r.value)return[a("flex-grow","1")];if(r.value.kind==="arbitrary")return[a("flex-grow",r.value.value)];if(N(r.value.value))return[a("flex-grow",r.value.value)]}})}function Br(t,r){let o=t.theme.screens||{},e=r.variants.get("min")?.order??0,n=[];for(let[l,p]of Object.entries(o)){let m=function(v){r.variants.static(l,y=>{y.nodes=[U("@media",g,y.nodes)]},{order:v})};var s=m;let c=r.variants.get(l),d=r.theme.resolveValue(l,["--breakpoint"]);if(c&&d&&!r.theme.hasDefault(`--breakpoint-${l}`))continue;let u=!0;typeof p=="string"&&(u=!1);let g=Un(p);u?n.push(m):m(e)}if(n.length!==0){for(let[,l]of r.variants.variants)l.order>e&&(l.order+=n.length);r.variants.compareFns=new Map(Array.from(r.variants.compareFns).map(([l,p])=>(l>e&&(l+=n.length),[l,p])));for(let[l,p]of n.entries())p(e+l+1)}}function Un(t){return(Array.isArray(t)?t:[t]).map(o=>typeof o=="string"?{min:o}:o&&typeof o=="object"?o:null).map(o=>{if(o===null)return null;if("raw"in o)return o.raw;let e="";return o.max!==void 0&&(e+=`${o.max} >= `),e+="width",o.min!==void 0&&(e+=` >= ${o.min}`),`(${e})`}).filter(Boolean).join(", ")}function Wr(t,r){let o=t.theme.aria||{},e=t.theme.supports||{},n=t.theme.data||{};if(Object.keys(o).length>0){let s=r.variants.get("aria"),l=s?.applyFn,p=s?.compounds;r.variants.functional("aria",(c,d)=>{let u=d.value;return u&&u.kind==="named"&&u.value in o?l?.(c,{...d,value:{kind:"arbitrary",value:o[u.value]}}):l?.(c,d)},{compounds:p})}if(Object.keys(e).length>0){let s=r.variants.get("supports"),l=s?.applyFn,p=s?.compounds;r.variants.functional("supports",(c,d)=>{let u=d.value;return u&&u.kind==="named"&&u.value in e?l?.(c,{...d,value:{kind:"arbitrary",value:e[u.value]}}):l?.(c,d)},{compounds:p})}if(Object.keys(n).length>0){let s=r.variants.get("data"),l=s?.applyFn,p=s?.compounds;r.variants.functional("data",(c,d)=>{let u=d.value;return u&&u.kind==="named"&&u.value in n?l?.(c,{...d,value:{kind:"arbitrary",value:n[u.value]}}):l?.(c,d)},{compounds:p})}}var _n=/^[a-z]+$/;async function Hr({designSystem:t,base:r,ast:o,loadModule:e,globs:n}){let s=0,l=[],p=[];_(o,(g,{parent:m,replaceWith:v,context:y})=>{if(g.kind==="at-rule"){if(g.name==="@plugin"){if(m!==null)throw new Error("`@plugin` cannot be nested.");let b=g.params.slice(1,-1);if(b.length===0)throw new Error("`@plugin` must have a path.");let x={};for(let $ of g.nodes??[]){if($.kind!=="declaration")throw new Error(`Unexpected \`@plugin\` option: + +${Y([$])} + +\`@plugin\` options must be a flat list of declarations.`);if($.value===void 0)continue;let V=$.value,O=P(V,",").map(R=>{if(R=R.trim(),R==="null")return null;if(R==="true")return!0;if(R==="false")return!1;if(Number.isNaN(Number(R))){if(R[0]==='"'&&R[R.length-1]==='"'||R[0]==="'"&&R[R.length-1]==="'")return R.slice(1,-1);if(R[0]==="{"&&R[R.length-1]==="}")throw new Error(`Unexpected \`@plugin\` option: Value of declaration \`${Y([$]).trim()}\` is not supported. + +Using an object as a plugin option is currently only supported in JavaScript configuration files.`)}else return Number(R);return R});x[$.property]=O.length===1?O[0]:O}l.push([{id:b,base:y.base,reference:!!y.reference},Object.keys(x).length>0?x:null]),v([]),s|=4;return}if(g.name==="@config"){if(g.nodes.length>0)throw new Error("`@config` cannot have a body.");if(m!==null)throw new Error("`@config` cannot be nested.");p.push({id:g.params.slice(1,-1),base:y.base,reference:!!y.reference}),v([]),s|=4;return}}}),Mr(t);let c=t.resolveThemeValue;if(t.resolveThemeValue=function(m){return m.startsWith("--")?c(m):(s|=qr({designSystem:t,base:r,ast:o,globs:n,configs:[],pluginDetails:[]}),t.resolveThemeValue(m))},!l.length&&!p.length)return 0;let[d,u]=await Promise.all([Promise.all(p.map(async({id:g,base:m,reference:v})=>{let y=await e(g,m,"config");return{path:g,base:y.base,config:y.module,reference:v}})),Promise.all(l.map(async([{id:g,base:m,reference:v},y])=>{let b=await e(g,m,"plugin");return{path:g,base:b.base,plugin:b.module,options:y,reference:v}}))]);return s|=qr({designSystem:t,base:r,ast:o,globs:n,configs:d,pluginDetails:u}),s}function qr({designSystem:t,base:r,ast:o,globs:e,configs:n,pluginDetails:s}){let l=0,c=[...s.map(b=>{if(!b.options)return{config:{plugins:[b.plugin]},base:b.base,reference:b.reference};if("__isOptionsFunction"in b.plugin)return{config:{plugins:[b.plugin(b.options)]},base:b.base,reference:b.reference};throw new Error(`The plugin "${b.path}" does not accept options`)}),...n],{resolvedConfig:d}=At(t,[{config:jr(t.theme),base:r,reference:!0},...c,{config:{plugins:[Lr]},base:r,reference:!0}]),{resolvedConfig:u,replacedThemeKeys:g}=At(t,c);t.resolveThemeValue=function(x,$){let V=v.theme(x,$);if(Array.isArray(V)&&V.length===2)return V[0];if(Array.isArray(V))return V.join(", ");if(typeof V=="string")return V};let m={designSystem:t,ast:o,resolvedConfig:d,featuresRef:{set current(b){l|=b}}},v=wt({...m,referenceMode:!1}),y;for(let{handler:b,reference:x}of d.plugins)x?(y||=wt({...m,referenceMode:!0}),b(y)):b(v);if(yr(t,u,g),_r(t,u,g),Wr(u,t),Br(u,t),Ir(u,t),!t.theme.prefix&&d.prefix){if(d.prefix.endsWith("-")&&(d.prefix=d.prefix.slice(0,-1),console.warn(`The prefix "${d.prefix}" is invalid. Prefixes must be lowercase ASCII letters (a-z) only and is written as a variant before all utilities. We have fixed up the prefix for you. Remove the trailing \`-\` to silence this warning.`)),!_n.test(d.prefix))throw new Error(`The prefix "${d.prefix}" is invalid. Prefixes must be lowercase ASCII letters (a-z) only.`);t.theme.prefix=d.prefix}if(!t.important&&d.important===!0&&(t.important=!0),typeof d.important=="string"){let b=d.important;_(o,(x,{replaceWith:$,parent:V})=>{if(x.kind==="at-rule"&&!(x.name!=="@tailwind"||x.params!=="utilities"))return V?.kind==="rule"&&V.selector===b?2:($(z(b,[x])),2)})}for(let b of d.blocklist)t.invalidCandidates.add(b);for(let b of d.content.files){if("raw"in b)throw new Error(`Error in the config file/plugin/preset. The \`content\` key contains a \`raw\` entry: + +${JSON.stringify(b,null,2)} + +This feature is not currently supported.`);e.push(b)}return l}var Dn=/^[a-z]+$/;function zn(){throw new Error("No `loadModule` function provided to `compile`")}function Fn(){throw new Error("No `loadStylesheet` function provided to `compile`")}function jn(t){let r=0,o=null;for(let e of P(t," "))e==="reference"?r|=2:e==="inline"?r|=1:e==="default"?r|=4:e==="static"?r|=8:e.startsWith("prefix(")&&e.endsWith(")")&&(o=e.slice(7,-1));return[r,o]}async function In(t,{base:r="",loadModule:o=zn,loadStylesheet:e=Fn}={}){let n=0;t=[Q({base:r},t)],n|=await kt(t,r,e);let s=null,l=new ze,p=[],c=[],d=null,u=null,g=[],m=[],v=null;_(t,(b,{parent:x,replaceWith:$,context:V})=>{if(b.kind==="at-rule"){if(b.name==="@tailwind"&&(b.params==="utilities"||b.params.startsWith("utilities"))){if(u!==null){$([]);return}let O=P(b.params," ");for(let R of O)if(R.startsWith("source(")){let K=R.slice(7,-1);if(K==="none"){v=K;continue}if(K[0]==='"'&&K[K.length-1]!=='"'||K[0]==="'"&&K[K.length-1]!=="'"||K[0]!=="'"&&K[0]!=='"')throw new Error("`source(\u2026)` paths must be quoted.");v={base:V.sourceBase??V.base,pattern:K.slice(1,-1)}}u=b,n|=16}if(b.name==="@utility"){if(x!==null)throw new Error("`@utility` cannot be nested.");if(b.nodes.length===0)throw new Error(`\`@utility ${b.params}\` is empty. Utilities should include at least one property.`);let O=nr(b);if(O===null)throw new Error(`\`@utility ${b.params}\` defines an invalid utility name. Utilities should be alphanumeric and start with a lowercase letter.`);c.push(O)}if(b.name==="@source"){if(b.nodes.length>0)throw new Error("`@source` cannot have a body.");if(x!==null)throw new Error("`@source` cannot be nested.");let O=b.params;if(O[0]==='"'&&O[O.length-1]!=='"'||O[0]==="'"&&O[O.length-1]!=="'"||O[0]!=="'"&&O[0]!=='"')throw new Error("`@source` paths must be quoted.");m.push({base:V.base,pattern:O.slice(1,-1)}),$([]);return}if(b.name==="@variant"&&(x===null?b.nodes.length===0?b.name="@custom-variant":(_(b.nodes,O=>{if(O.kind==="at-rule"&&O.name==="@slot")return b.name="@custom-variant",2}),b.name==="@variant"&&g.push(b)):g.push(b)),b.name==="@custom-variant"){if(x!==null)throw new Error("`@custom-variant` cannot be nested.");$([]);let[O,R]=P(b.params," ");if(!We.test(O))throw new Error(`\`@custom-variant ${O}\` defines an invalid variant name. Variants should only contain alphanumeric, dashes or underscore characters.`);if(b.nodes.length>0&&R)throw new Error(`\`@custom-variant ${O}\` cannot have both a selector and a body.`);if(b.nodes.length===0){if(!R)throw new Error(`\`@custom-variant ${O}\` has no selector or body.`);let K=P(R.slice(1,-1),",");if(K.length===0||K.some(h=>h.trim()===""))throw new Error(`\`@custom-variant ${O} (${K.join(",")})\` selector is invalid.`);let i=[],f=[];for(let h of K)h=h.trim(),h[0]==="@"?i.push(h):f.push(h);p.push(h=>{h.variants.static(O,w=>{let k=[];f.length>0&&k.push(z(f.join(", "),w.nodes));for(let T of i)k.push(M(T,w.nodes));w.nodes=k},{compounds:fe([...f,...i])})});return}else{p.push(K=>{K.variants.fromAst(O,b.nodes)});return}}if(b.name==="@media"){let O=P(b.params," "),R=[];for(let K of O)if(K.startsWith("source(")){let i=K.slice(7,-1);_(b.nodes,(f,{replaceWith:h})=>{if(f.kind==="at-rule"&&f.name==="@tailwind"&&f.params==="utilities")return f.params+=` source(${i})`,h([Q({sourceBase:V.base},[f])]),2})}else if(K.startsWith("theme(")){let i=K.slice(6,-1),f=i.includes("reference");_(b.nodes,h=>{if(h.kind!=="at-rule"){if(f)throw new Error('Files imported with `@import "\u2026" theme(reference)` must only contain `@theme` blocks.\nUse `@reference "\u2026";` instead.');return 0}if(h.name==="@theme")return h.params+=" "+i,1})}else if(K.startsWith("prefix(")){let i=K.slice(7,-1);_(b.nodes,f=>{if(f.kind==="at-rule"&&f.name==="@theme")return f.params+=` prefix(${i})`,1})}else K==="important"?s=!0:K==="reference"?b.nodes=[Q({reference:!0},b.nodes)]:R.push(K);R.length>0?b.params=R.join(" "):O.length>0&&$(b.nodes)}if(b.name==="@theme"){let[O,R]=jn(b.params);if(V.reference&&(O|=2),R){if(!Dn.test(R))throw new Error(`The prefix "${R}" is invalid. Prefixes must be lowercase ASCII letters (a-z) only.`);l.prefix=R}return _(b.nodes,K=>{if(K.kind==="at-rule"&&K.name==="@keyframes")return l.addKeyframes(K),1;if(K.kind==="comment")return;if(K.kind==="declaration"&&K.property.startsWith("--")){l.add(ae(K.property),K.value??"",O);return}let i=Y([U(b.name,b.params,[K])]).split(` +`).map((f,h,w)=>`${h===0||h>=w.length-2?" ":">"} ${f}`).join(` +`);throw new Error(`\`@theme\` blocks must only contain custom properties or \`@keyframes\`. + +${i}`)}),d?$([]):(d=z(":root, :host",[]),$([d])),1}}});let y=pr(l);s&&(y.important=s),n|=await Hr({designSystem:y,base:r,ast:t,loadModule:o,globs:m});for(let b of p)b(y);for(let b of c)b(y);if(d){let b=[];for(let[$,V]of y.theme.entries())V.options&2||b.push(a(re($),V.value));let x=y.theme.getKeyframes();for(let $ of x)t.push(Q({theme:!0},[D([$])]));d.nodes=[Q({theme:!0},b)]}if(u){let b=u;b.kind="context",b.context={}}if(g.length>0){for(let b of g){let x=z("&",b.nodes),$=b.params,V=y.parseVariant($);if(V===null)throw new Error(`Cannot use \`@variant\` with unknown variant: ${$}`);if(be(x,V,y.variants)===null)throw new Error(`Cannot use \`@variant\` with variant: ${$}`);Object.assign(b,x)}n|=32}return n|=he(t,y),n|=Ne(t,y),_(t,(b,{replaceWith:x})=>{if(b.kind==="at-rule")return b.name==="@utility"&&x([]),1}),{designSystem:y,ast:t,globs:m,root:v,utilitiesNode:u,features:n}}async function Ln(t,r={}){let{designSystem:o,ast:e,globs:n,root:s,utilitiesNode:l,features:p}=await In(t,r);e.unshift(De(`! tailwindcss v${$t} | MIT License | https://tailwindcss.com `));function c(m){o.invalidCandidates.add(m)}let d=new Set,u=null,g=0;return{globs:n,root:s,features:p,build(m){if(p===0)return t;if(!l)return u??=se(e,o),u;let v=!1,y=d.size;for(let x of m)o.invalidCandidates.has(x)||(x[0]==="-"&&x[1]==="-"?o.theme.markUsedVariable(x):d.add(x),v||=d.size!==y);if(!v)return u??=se(e,o),u;let b=ne(d,o,{onInvalidCandidate:c}).astNodes;return g===b.length?(u??=se(e,o),u):(g=b.length,l.nodes=b,u=se(e,o),u)}}}async function Gr(t,r={}){let o=pe(t),e=await Ln(o,r),n=o,s=t;return{...e,build(l){let p=e.build(l);return p===n||(s=Y(p),n=p),s}}}var Yr=`@layer theme, base, components, utilities; + +@import './theme.css' layer(theme); +@import './preflight.css' layer(base); +@import './utilities.css' layer(utilities); +`;var Jr=`/* + 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) + 2. Remove default margins and padding + 3. Reset all borders. +*/ + +*, +::after, +::before, +::backdrop, +::file-selector-button { + box-sizing: border-box; /* 1 */ + margin: 0; /* 2 */ + padding: 0; /* 2 */ + border: 0 solid; /* 3 */ +} + +/* + 1. Use a consistent sensible line-height in all browsers. + 2. Prevent adjustments of font size after orientation changes in iOS. + 3. Use a more readable tab size. + 4. Use the user's configured \`sans\` font-family by default. + 5. Use the user's configured \`sans\` font-feature-settings by default. + 6. Use the user's configured \`sans\` font-variation-settings by default. + 7. Disable tap highlights on iOS. +*/ + +html, +:host { + line-height: 1.5; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ + tab-size: 4; /* 3 */ + 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' + ); /* 4 */ + font-feature-settings: var(--default-font-feature-settings, normal); /* 5 */ + font-variation-settings: var(--default-font-variation-settings, normal); /* 6 */ + -webkit-tap-highlight-color: transparent; /* 7 */ +} + +/* + Inherit line-height from \`html\` so users can set them as a class directly on the \`html\` element. +*/ + +body { + line-height: inherit; +} + +/* + 1. Add the correct height in Firefox. + 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) + 3. Reset the default border style to a 1px solid border. +*/ + +hr { + height: 0; /* 1 */ + color: inherit; /* 2 */ + border-top-width: 1px; /* 3 */ +} + +/* + Add the correct text decoration in Chrome, Edge, and Safari. +*/ + +abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; +} + +/* + Remove the default font size and weight for headings. +*/ + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: inherit; + font-weight: inherit; +} + +/* + Reset links to optimize for opt-in styling instead of opt-out. +*/ + +a { + color: inherit; + -webkit-text-decoration: inherit; + text-decoration: inherit; +} + +/* + Add the correct font weight in Edge and Safari. +*/ + +b, +strong { + font-weight: bolder; +} + +/* + 1. Use the user's configured \`mono\` font-family by default. + 2. Use the user's configured \`mono\` font-feature-settings by default. + 3. Use the user's configured \`mono\` font-variation-settings by default. + 4. Correct the odd \`em\` font sizing in all browsers. +*/ + +code, +kbd, +samp, +pre { + font-family: var( + --default-mono-font-family, + ui-monospace, + SFMono-Regular, + Menlo, + Monaco, + Consolas, + 'Liberation Mono', + 'Courier New', + monospace + ); /* 1 */ + font-feature-settings: var(--default-mono-font-feature-settings, normal); /* 2 */ + font-variation-settings: var(--default-mono-font-variation-settings, normal); /* 3 */ + font-size: 1em; /* 4 */ +} + +/* + Add the correct font size in all browsers. +*/ + +small { + font-size: 80%; +} + +/* + Prevent \`sub\` and \`sup\` elements from affecting the line height in all browsers. +*/ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* + 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) + 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) + 3. Remove gaps between table borders by default. +*/ + +table { + text-indent: 0; /* 1 */ + border-color: inherit; /* 2 */ + border-collapse: collapse; /* 3 */ +} + +/* + Use the modern Firefox focus style for all focusable elements. +*/ + +:-moz-focusring { + outline: auto; +} + +/* + Add the correct vertical alignment in Chrome and Firefox. +*/ + +progress { + vertical-align: baseline; +} + +/* + Add the correct display in Chrome and Safari. +*/ + +summary { + display: list-item; +} + +/* + Make lists unstyled by default. +*/ + +ol, +ul, +menu { + list-style: none; +} + +/* + 1. Make replaced elements \`display: block\` by default. (https://github.com/mozdevs/cssremedy/issues/14) + 2. Add \`vertical-align: middle\` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) + This can trigger a poorly considered lint error in some tools but is included by design. +*/ + +img, +svg, +video, +canvas, +audio, +iframe, +embed, +object { + display: block; /* 1 */ + vertical-align: middle; /* 2 */ +} + +/* + Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) +*/ + +img, +video { + max-width: 100%; + height: auto; +} + +/* + 1. Inherit font styles in all browsers. + 2. Remove border radius in all browsers. + 3. Remove background color in all browsers. + 4. Ensure consistent opacity for disabled states in all browsers. +*/ + +button, +input, +select, +optgroup, +textarea, +::file-selector-button { + font: inherit; /* 1 */ + font-feature-settings: inherit; /* 1 */ + font-variation-settings: inherit; /* 1 */ + letter-spacing: inherit; /* 1 */ + color: inherit; /* 1 */ + border-radius: 0; /* 2 */ + background-color: transparent; /* 3 */ + opacity: 1; /* 4 */ +} + +/* + Restore default font weight. +*/ + +:where(select:is([multiple], [size])) optgroup { + font-weight: bolder; +} + +/* + Restore indentation. +*/ + +:where(select:is([multiple], [size])) optgroup option { + padding-inline-start: 20px; +} + +/* + Restore space after button. +*/ + +::file-selector-button { + margin-inline-end: 4px; +} + +/* + 1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) + 2. Set the default placeholder color to a semi-transparent version of the current text color. +*/ + +::placeholder { + opacity: 1; /* 1 */ + color: color-mix(in oklab, currentColor 50%, transparent); /* 2 */ +} + +/* + Prevent resizing textareas horizontally by default. +*/ + +textarea { + resize: vertical; +} + +/* + Remove the inner padding in Chrome and Safari on macOS. +*/ + +::-webkit-search-decoration { + -webkit-appearance: none; +} + +/* + 1. Ensure date/time inputs have the same height when empty in iOS Safari. + 2. Ensure text alignment can be changed on date/time inputs in iOS Safari. +*/ + +::-webkit-date-and-time-value { + min-height: 1lh; /* 1 */ + text-align: inherit; /* 2 */ +} + +/* + Prevent height from changing on date/time inputs in macOS Safari when the input is set to \`display: block\`. +*/ + +::-webkit-datetime-edit { + display: inline-flex; +} + +/* + Remove excess padding from pseudo-elements in date/time inputs to ensure consistent height across browsers. +*/ + +::-webkit-datetime-edit-fields-wrapper { + padding: 0; +} + +::-webkit-datetime-edit, +::-webkit-datetime-edit-year-field, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-minute-field, +::-webkit-datetime-edit-second-field, +::-webkit-datetime-edit-millisecond-field, +::-webkit-datetime-edit-meridiem-field { + padding-block: 0; +} + +/* + Remove the additional \`:invalid\` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) +*/ + +:-moz-ui-invalid { + box-shadow: none; +} + +/* + Correct the inability to style the border radius in iOS Safari. +*/ + +button, +input:where([type='button'], [type='reset'], [type='submit']), +::file-selector-button { + appearance: button; +} + +/* + Correct the cursor style of increment and decrement buttons in Safari. +*/ + +::-webkit-inner-spin-button, +::-webkit-outer-spin-button { + height: auto; +} + +/* + Make elements with the HTML hidden attribute stay hidden by default. +*/ + +[hidden]:where(:not([hidden='until-found'])) { + display: none !important; +} +`;var Zr=`@theme default { + --font-sans: + ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', + 'Noto Color Emoji'; + --font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif; + --font-mono: + ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', + monospace; + + --color-red-50: oklch(0.971 0.013 17.38); + --color-red-100: oklch(0.936 0.032 17.717); + --color-red-200: oklch(0.885 0.062 18.334); + --color-red-300: oklch(0.808 0.114 19.571); + --color-red-400: oklch(0.704 0.191 22.216); + --color-red-500: oklch(0.637 0.237 25.331); + --color-red-600: oklch(0.577 0.245 27.325); + --color-red-700: oklch(0.505 0.213 27.518); + --color-red-800: oklch(0.444 0.177 26.899); + --color-red-900: oklch(0.396 0.141 25.723); + --color-red-950: oklch(0.258 0.092 26.042); + + --color-orange-50: oklch(0.98 0.016 73.684); + --color-orange-100: oklch(0.954 0.038 75.164); + --color-orange-200: oklch(0.901 0.076 70.697); + --color-orange-300: oklch(0.837 0.128 66.29); + --color-orange-400: oklch(0.75 0.183 55.934); + --color-orange-500: oklch(0.705 0.213 47.604); + --color-orange-600: oklch(0.646 0.222 41.116); + --color-orange-700: oklch(0.553 0.195 38.402); + --color-orange-800: oklch(0.47 0.157 37.304); + --color-orange-900: oklch(0.408 0.123 38.172); + --color-orange-950: oklch(0.266 0.079 36.259); + + --color-amber-50: oklch(0.987 0.022 95.277); + --color-amber-100: oklch(0.962 0.059 95.617); + --color-amber-200: oklch(0.924 0.12 95.746); + --color-amber-300: oklch(0.879 0.169 91.605); + --color-amber-400: oklch(0.828 0.189 84.429); + --color-amber-500: oklch(0.769 0.188 70.08); + --color-amber-600: oklch(0.666 0.179 58.318); + --color-amber-700: oklch(0.555 0.163 48.998); + --color-amber-800: oklch(0.473 0.137 46.201); + --color-amber-900: oklch(0.414 0.112 45.904); + --color-amber-950: oklch(0.279 0.077 45.635); + + --color-yellow-50: oklch(0.987 0.026 102.212); + --color-yellow-100: oklch(0.973 0.071 103.193); + --color-yellow-200: oklch(0.945 0.129 101.54); + --color-yellow-300: oklch(0.905 0.182 98.111); + --color-yellow-400: oklch(0.852 0.199 91.936); + --color-yellow-500: oklch(0.795 0.184 86.047); + --color-yellow-600: oklch(0.681 0.162 75.834); + --color-yellow-700: oklch(0.554 0.135 66.442); + --color-yellow-800: oklch(0.476 0.114 61.907); + --color-yellow-900: oklch(0.421 0.095 57.708); + --color-yellow-950: oklch(0.286 0.066 53.813); + + --color-lime-50: oklch(0.986 0.031 120.757); + --color-lime-100: oklch(0.967 0.067 122.328); + --color-lime-200: oklch(0.938 0.127 124.321); + --color-lime-300: oklch(0.897 0.196 126.665); + --color-lime-400: oklch(0.841 0.238 128.85); + --color-lime-500: oklch(0.768 0.233 130.85); + --color-lime-600: oklch(0.648 0.2 131.684); + --color-lime-700: oklch(0.532 0.157 131.589); + --color-lime-800: oklch(0.453 0.124 130.933); + --color-lime-900: oklch(0.405 0.101 131.063); + --color-lime-950: oklch(0.274 0.072 132.109); + + --color-green-50: oklch(0.982 0.018 155.826); + --color-green-100: oklch(0.962 0.044 156.743); + --color-green-200: oklch(0.925 0.084 155.995); + --color-green-300: oklch(0.871 0.15 154.449); + --color-green-400: oklch(0.792 0.209 151.711); + --color-green-500: oklch(0.723 0.219 149.579); + --color-green-600: oklch(0.627 0.194 149.214); + --color-green-700: oklch(0.527 0.154 150.069); + --color-green-800: oklch(0.448 0.119 151.328); + --color-green-900: oklch(0.393 0.095 152.535); + --color-green-950: oklch(0.266 0.065 152.934); + + --color-emerald-50: oklch(0.979 0.021 166.113); + --color-emerald-100: oklch(0.95 0.052 163.051); + --color-emerald-200: oklch(0.905 0.093 164.15); + --color-emerald-300: oklch(0.845 0.143 164.978); + --color-emerald-400: oklch(0.765 0.177 163.223); + --color-emerald-500: oklch(0.696 0.17 162.48); + --color-emerald-600: oklch(0.596 0.145 163.225); + --color-emerald-700: oklch(0.508 0.118 165.612); + --color-emerald-800: oklch(0.432 0.095 166.913); + --color-emerald-900: oklch(0.378 0.077 168.94); + --color-emerald-950: oklch(0.262 0.051 172.552); + + --color-teal-50: oklch(0.984 0.014 180.72); + --color-teal-100: oklch(0.953 0.051 180.801); + --color-teal-200: oklch(0.91 0.096 180.426); + --color-teal-300: oklch(0.855 0.138 181.071); + --color-teal-400: oklch(0.777 0.152 181.912); + --color-teal-500: oklch(0.704 0.14 182.503); + --color-teal-600: oklch(0.6 0.118 184.704); + --color-teal-700: oklch(0.511 0.096 186.391); + --color-teal-800: oklch(0.437 0.078 188.216); + --color-teal-900: oklch(0.386 0.063 188.416); + --color-teal-950: oklch(0.277 0.046 192.524); + + --color-cyan-50: oklch(0.984 0.019 200.873); + --color-cyan-100: oklch(0.956 0.045 203.388); + --color-cyan-200: oklch(0.917 0.08 205.041); + --color-cyan-300: oklch(0.865 0.127 207.078); + --color-cyan-400: oklch(0.789 0.154 211.53); + --color-cyan-500: oklch(0.715 0.143 215.221); + --color-cyan-600: oklch(0.609 0.126 221.723); + --color-cyan-700: oklch(0.52 0.105 223.128); + --color-cyan-800: oklch(0.45 0.085 224.283); + --color-cyan-900: oklch(0.398 0.07 227.392); + --color-cyan-950: oklch(0.302 0.056 229.695); + + --color-sky-50: oklch(0.977 0.013 236.62); + --color-sky-100: oklch(0.951 0.026 236.824); + --color-sky-200: oklch(0.901 0.058 230.902); + --color-sky-300: oklch(0.828 0.111 230.318); + --color-sky-400: oklch(0.746 0.16 232.661); + --color-sky-500: oklch(0.685 0.169 237.323); + --color-sky-600: oklch(0.588 0.158 241.966); + --color-sky-700: oklch(0.5 0.134 242.749); + --color-sky-800: oklch(0.443 0.11 240.79); + --color-sky-900: oklch(0.391 0.09 240.876); + --color-sky-950: oklch(0.293 0.066 243.157); + + --color-blue-50: oklch(0.97 0.014 254.604); + --color-blue-100: oklch(0.932 0.032 255.585); + --color-blue-200: oklch(0.882 0.059 254.128); + --color-blue-300: oklch(0.809 0.105 251.813); + --color-blue-400: oklch(0.707 0.165 254.624); + --color-blue-500: oklch(0.623 0.214 259.815); + --color-blue-600: oklch(0.546 0.245 262.881); + --color-blue-700: oklch(0.488 0.243 264.376); + --color-blue-800: oklch(0.424 0.199 265.638); + --color-blue-900: oklch(0.379 0.146 265.522); + --color-blue-950: oklch(0.282 0.091 267.935); + + --color-indigo-50: oklch(0.962 0.018 272.314); + --color-indigo-100: oklch(0.93 0.034 272.788); + --color-indigo-200: oklch(0.87 0.065 274.039); + --color-indigo-300: oklch(0.785 0.115 274.713); + --color-indigo-400: oklch(0.673 0.182 276.935); + --color-indigo-500: oklch(0.585 0.233 277.117); + --color-indigo-600: oklch(0.511 0.262 276.966); + --color-indigo-700: oklch(0.457 0.24 277.023); + --color-indigo-800: oklch(0.398 0.195 277.366); + --color-indigo-900: oklch(0.359 0.144 278.697); + --color-indigo-950: oklch(0.257 0.09 281.288); + + --color-violet-50: oklch(0.969 0.016 293.756); + --color-violet-100: oklch(0.943 0.029 294.588); + --color-violet-200: oklch(0.894 0.057 293.283); + --color-violet-300: oklch(0.811 0.111 293.571); + --color-violet-400: oklch(0.702 0.183 293.541); + --color-violet-500: oklch(0.606 0.25 292.717); + --color-violet-600: oklch(0.541 0.281 293.009); + --color-violet-700: oklch(0.491 0.27 292.581); + --color-violet-800: oklch(0.432 0.232 292.759); + --color-violet-900: oklch(0.38 0.189 293.745); + --color-violet-950: oklch(0.283 0.141 291.089); + + --color-purple-50: oklch(0.977 0.014 308.299); + --color-purple-100: oklch(0.946 0.033 307.174); + --color-purple-200: oklch(0.902 0.063 306.703); + --color-purple-300: oklch(0.827 0.119 306.383); + --color-purple-400: oklch(0.714 0.203 305.504); + --color-purple-500: oklch(0.627 0.265 303.9); + --color-purple-600: oklch(0.558 0.288 302.321); + --color-purple-700: oklch(0.496 0.265 301.924); + --color-purple-800: oklch(0.438 0.218 303.724); + --color-purple-900: oklch(0.381 0.176 304.987); + --color-purple-950: oklch(0.291 0.149 302.717); + + --color-fuchsia-50: oklch(0.977 0.017 320.058); + --color-fuchsia-100: oklch(0.952 0.037 318.852); + --color-fuchsia-200: oklch(0.903 0.076 319.62); + --color-fuchsia-300: oklch(0.833 0.145 321.434); + --color-fuchsia-400: oklch(0.74 0.238 322.16); + --color-fuchsia-500: oklch(0.667 0.295 322.15); + --color-fuchsia-600: oklch(0.591 0.293 322.896); + --color-fuchsia-700: oklch(0.518 0.253 323.949); + --color-fuchsia-800: oklch(0.452 0.211 324.591); + --color-fuchsia-900: oklch(0.401 0.17 325.612); + --color-fuchsia-950: oklch(0.293 0.136 325.661); + + --color-pink-50: oklch(0.971 0.014 343.198); + --color-pink-100: oklch(0.948 0.028 342.258); + --color-pink-200: oklch(0.899 0.061 343.231); + --color-pink-300: oklch(0.823 0.12 346.018); + --color-pink-400: oklch(0.718 0.202 349.761); + --color-pink-500: oklch(0.656 0.241 354.308); + --color-pink-600: oklch(0.592 0.249 0.584); + --color-pink-700: oklch(0.525 0.223 3.958); + --color-pink-800: oklch(0.459 0.187 3.815); + --color-pink-900: oklch(0.408 0.153 2.432); + --color-pink-950: oklch(0.284 0.109 3.907); + + --color-rose-50: oklch(0.969 0.015 12.422); + --color-rose-100: oklch(0.941 0.03 12.58); + --color-rose-200: oklch(0.892 0.058 10.001); + --color-rose-300: oklch(0.81 0.117 11.638); + --color-rose-400: oklch(0.712 0.194 13.428); + --color-rose-500: oklch(0.645 0.246 16.439); + --color-rose-600: oklch(0.586 0.253 17.585); + --color-rose-700: oklch(0.514 0.222 16.935); + --color-rose-800: oklch(0.455 0.188 13.697); + --color-rose-900: oklch(0.41 0.159 10.272); + --color-rose-950: oklch(0.271 0.105 12.094); + + --color-slate-50: oklch(0.984 0.003 247.858); + --color-slate-100: oklch(0.968 0.007 247.896); + --color-slate-200: oklch(0.929 0.013 255.508); + --color-slate-300: oklch(0.869 0.022 252.894); + --color-slate-400: oklch(0.704 0.04 256.788); + --color-slate-500: oklch(0.554 0.046 257.417); + --color-slate-600: oklch(0.446 0.043 257.281); + --color-slate-700: oklch(0.372 0.044 257.287); + --color-slate-800: oklch(0.279 0.041 260.031); + --color-slate-900: oklch(0.208 0.042 265.755); + --color-slate-950: oklch(0.129 0.042 264.695); + + --color-gray-50: oklch(0.985 0.002 247.839); + --color-gray-100: oklch(0.967 0.003 264.542); + --color-gray-200: oklch(0.928 0.006 264.531); + --color-gray-300: oklch(0.872 0.01 258.338); + --color-gray-400: oklch(0.707 0.022 261.325); + --color-gray-500: oklch(0.551 0.027 264.364); + --color-gray-600: oklch(0.446 0.03 256.802); + --color-gray-700: oklch(0.373 0.034 259.733); + --color-gray-800: oklch(0.278 0.033 256.848); + --color-gray-900: oklch(0.21 0.034 264.665); + --color-gray-950: oklch(0.13 0.028 261.692); + + --color-zinc-50: oklch(0.985 0 0); + --color-zinc-100: oklch(0.967 0.001 286.375); + --color-zinc-200: oklch(0.92 0.004 286.32); + --color-zinc-300: oklch(0.871 0.006 286.286); + --color-zinc-400: oklch(0.705 0.015 286.067); + --color-zinc-500: oklch(0.552 0.016 285.938); + --color-zinc-600: oklch(0.442 0.017 285.786); + --color-zinc-700: oklch(0.37 0.013 285.805); + --color-zinc-800: oklch(0.274 0.006 286.033); + --color-zinc-900: oklch(0.21 0.006 285.885); + --color-zinc-950: oklch(0.141 0.005 285.823); + + --color-neutral-50: oklch(0.985 0 0); + --color-neutral-100: oklch(0.97 0 0); + --color-neutral-200: oklch(0.922 0 0); + --color-neutral-300: oklch(0.87 0 0); + --color-neutral-400: oklch(0.708 0 0); + --color-neutral-500: oklch(0.556 0 0); + --color-neutral-600: oklch(0.439 0 0); + --color-neutral-700: oklch(0.371 0 0); + --color-neutral-800: oklch(0.269 0 0); + --color-neutral-900: oklch(0.205 0 0); + --color-neutral-950: oklch(0.145 0 0); + + --color-stone-50: oklch(0.985 0.001 106.423); + --color-stone-100: oklch(0.97 0.001 106.424); + --color-stone-200: oklch(0.923 0.003 48.717); + --color-stone-300: oklch(0.869 0.005 56.366); + --color-stone-400: oklch(0.709 0.01 56.259); + --color-stone-500: oklch(0.553 0.013 58.071); + --color-stone-600: oklch(0.444 0.011 73.639); + --color-stone-700: oklch(0.374 0.01 67.558); + --color-stone-800: oklch(0.268 0.007 34.298); + --color-stone-900: oklch(0.216 0.006 56.043); + --color-stone-950: oklch(0.147 0.004 49.25); + + --color-black: #000; + --color-white: #fff; + + --spacing: 0.25rem; + + --breakpoint-sm: 40rem; + --breakpoint-md: 48rem; + --breakpoint-lg: 64rem; + --breakpoint-xl: 80rem; + --breakpoint-2xl: 96rem; + + --container-3xs: 16rem; + --container-2xs: 18rem; + --container-xs: 20rem; + --container-sm: 24rem; + --container-md: 28rem; + --container-lg: 32rem; + --container-xl: 36rem; + --container-2xl: 42rem; + --container-3xl: 48rem; + --container-4xl: 56rem; + --container-5xl: 64rem; + --container-6xl: 72rem; + --container-7xl: 80rem; + + --text-xs: 0.75rem; + --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; + --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-5xl: 3rem; + --text-5xl--line-height: 1; + --text-6xl: 3.75rem; + --text-6xl--line-height: 1; + --text-7xl: 4.5rem; + --text-7xl--line-height: 1; + --text-8xl: 6rem; + --text-8xl--line-height: 1; + --text-9xl: 8rem; + --text-9xl--line-height: 1; + + --font-weight-thin: 100; + --font-weight-extralight: 200; + --font-weight-light: 300; + --font-weight-normal: 400; + --font-weight-medium: 500; + --font-weight-semibold: 600; + --font-weight-bold: 700; + --font-weight-extrabold: 800; + --font-weight-black: 900; + + --tracking-tighter: -0.05em; + --tracking-tight: -0.025em; + --tracking-normal: 0em; + --tracking-wide: 0.025em; + --tracking-wider: 0.05em; + --tracking-widest: 0.1em; + + --leading-tight: 1.25; + --leading-snug: 1.375; + --leading-normal: 1.5; + --leading-relaxed: 1.625; + --leading-loose: 2; + + --radius-xs: 0.125rem; + --radius-sm: 0.25rem; + --radius-md: 0.375rem; + --radius-lg: 0.5rem; + --radius-xl: 0.75rem; + --radius-2xl: 1rem; + --radius-3xl: 1.5rem; + --radius-4xl: 2rem; + + --shadow-2xs: 0 1px rgb(0 0 0 / 0.05); + --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05); + --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); + --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); + --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); + --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25); + + --inset-shadow-2xs: inset 0 1px rgb(0 0 0 / 0.05); + --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.05); + --inset-shadow-sm: inset 0 2px 4px rgb(0 0 0 / 0.05); + + --drop-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.05); + --drop-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.15); + --drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12); + --drop-shadow-lg: 0 4px 4px rgb(0 0 0 / 0.15); + --drop-shadow-xl: 0 9px 7px rgb(0 0 0 / 0.1); + --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / 0.15); + + --ease-in: cubic-bezier(0.4, 0, 1, 1); + --ease-out: cubic-bezier(0, 0, 0.2, 1); + --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); + + --animate-spin: spin 1s linear infinite; + --animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; + --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; + --animate-bounce: bounce 1s infinite; + + @keyframes spin { + to { + transform: rotate(360deg); + } + } + + @keyframes ping { + 75%, + 100% { + transform: scale(2); + opacity: 0; + } + } + + @keyframes pulse { + 50% { + opacity: 0.5; + } + } + + @keyframes bounce { + 0%, + 100% { + transform: translateY(-25%); + animation-timing-function: cubic-bezier(0.8, 0, 1, 1); + } + + 50% { + transform: none; + animation-timing-function: cubic-bezier(0, 0, 0.2, 1); + } + } + + --blur-xs: 4px; + --blur-sm: 8px; + --blur-md: 12px; + --blur-lg: 16px; + --blur-xl: 24px; + --blur-2xl: 40px; + --blur-3xl: 64px; + + --perspective-dramatic: 100px; + --perspective-near: 300px; + --perspective-normal: 500px; + --perspective-midrange: 800px; + --perspective-distant: 1200px; + + --aspect-video: 16 / 9; + + --default-transition-duration: 150ms; + --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + --default-font-family: var(--font-sans); + --default-font-feature-settings: var(--font-sans--font-feature-settings); + --default-font-variation-settings: var(--font-sans--font-variation-settings); + --default-mono-font-family: var(--font-mono); + --default-mono-font-feature-settings: var(--font-mono--font-feature-settings); + --default-mono-font-variation-settings: var(--font-mono--font-variation-settings); +} + +/* Deprecated */ +@theme default inline reference { + --blur: 8px; + --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); + --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); + --drop-shadow: 0 1px 2px rgb(0 0 0 / 0.1), 0 1px 1px rgb(0 0 0 / 0.06); + --radius: 0.25rem; + --max-width-prose: 65ch; +} +`;var Qr=`@tailwind utilities; +`;var Re={index:Yr,preflight:Jr,theme:Zr,utilities:Qr};var Qe=class{start(r){performance.mark(`${r} (start)`)}end(r,o){performance.mark(`${r} (end)`),performance.measure(r,{start:`${r} (start)`,end:`${r} (end)`,detail:o})}hit(r,o){performance.mark(r,{detail:o})}error(r){throw performance.mark("(error)",{detail:{error:`${r}`}}),r}};console.warn("The browser build of Tailwind CSS should not be used in production. To use Tailwind CSS in production, use the Tailwind CLI, Vite plugin, or PostCSS plugin: https://tailwindcss.com/docs/installation");var eo="text/tailwindcss",Xe,St=new Set,Ct="",Nt=document.createElement("style"),Xr=Promise.resolve(),Yn=1,W=new Qe;async function Jn(){W.start("Create compiler"),W.start("Reading Stylesheets");let t=document.querySelectorAll(`style[type="${eo}"]`),r="";for(let o of t)to(o),r+=o.textContent+` +`;if(r.includes("@import")||(r=`@import "tailwindcss";${r}`),W.end("Reading Stylesheets",{size:r.length,changed:Ct!==r}),Ct!==r){Ct=r,W.start("Compile CSS");try{Xe=await Gr(r,{base:"/",loadStylesheet:Zn,loadModule:Qn})}finally{W.end("Compile CSS"),W.end("Create compiler")}St.clear()}}async function Zn(t,r){function o(){if(t==="tailwindcss")return{base:r,content:Re.index};if(t==="tailwindcss/preflight"||t==="tailwindcss/preflight.css"||t==="./preflight.css")return{base:r,content:Re.preflight};if(t==="tailwindcss/theme"||t==="tailwindcss/theme.css"||t==="./theme.css")return{base:r,content:Re.theme};if(t==="tailwindcss/utilities"||t==="tailwindcss/utilities.css"||t==="./utilities.css")return{base:r,content:Re.utilities};throw new Error(`The browser build does not support @import for "${t}"`)}try{let e=o();return W.hit("Loaded stylesheet",{id:t,base:r,size:e.content.length}),e}catch(e){throw W.hit("Failed to load stylesheet",{id:t,base:r,error:e.message??e}),e}}async function Qn(){throw new Error("The browser build does not support plugins or config files.")}async function Xn(t){if(!Xe)return;let r=new Set;W.start("Collect classes");for(let o of document.querySelectorAll("[class]"))for(let e of o.classList)St.has(e)||(St.add(e),r.add(e));W.end("Collect classes",{count:r.size}),!(r.size===0&&t==="incremental")&&(W.start("Build utilities"),Nt.textContent=Xe.build(Array.from(r)),W.end("Build utilities"))}function et(t){async function r(){if(!Xe&&t!=="full")return;let o=Yn++;W.start(`Build #${o} (${t})`),t==="full"&&await Jn(),W.start("Build"),await Xn(t),W.end("Build"),W.end(`Build #${o} (${t})`)}Xr=Xr.then(r).catch(o=>W.error(o))}var ei=new MutationObserver(()=>et("full"));function to(t){ei.observe(t,{attributes:!0,attributeFilter:["type"],characterData:!0,subtree:!0,childList:!0})}new MutationObserver(t=>{let r=0,o=0;for(let e of t){for(let n of e.addedNodes)n.nodeType===Node.ELEMENT_NODE&&n.tagName==="STYLE"&&n.getAttribute("type")===eo&&(to(n),r++);for(let n of e.addedNodes)n.nodeType===1&&n!==Nt&&o++;e.type==="attributes"&&o++}if(r>0)return et("full");if(o>0)return et("incremental")}).observe(document.documentElement,{attributes:!0,attributeFilter:["class"],childList:!0,subtree:!0});et("full");document.head.append(Nt);})(); +$$--GLUE--$$ +.\src\brush.js +$$--GLUE--$$ + + +let PixelBrush = (rel) => { + let brush_color = 0xff000000; + let c_os = [0, 0]; + let cursor_path; + let brush_depth = 10; + let tree_dirty = false; + let depth; + + let obj = { +get_tree: () => cursor_path.get_tree(), +set_color: (col) => brush_color = col, +set_scale: (val) => brush_depth = val, +get_surface: () => [cursor_path.get_tree(), cursor_path.get_root()], +dirty: () => tree_dirty, //TODO find a better way? +clean: () => tree_dirty = false, +set_surface: (qtree, node) => cursor_path = QtreePath(qtree, node), +set_pos: (p, dep, zm) => { + depth = dep; + set_path(cursor_path, 1, p, rel ? brush_depth : brush_depth-depth); + c_os = [0, 0]; +}, +update_pos: (p, k) => { + let os = add(smul(rel ? 2**brush_depth : 2**(brush_depth-depth), k), c_os); + let uos = os.map(v => v | 0); + + cursor_path.set_cur(qtree.color(brush_color)); + cursor_path.add(uos.map(BigInt)); + + c_os = sub(os, uos); + tree_dirty = true; +} + }; + + return obj; +} + + +let log = (fn) => (...x) => (console.log(...x), fn(...x)); +let line_sdf = (p, a, b) => { + let pa = sub(p, a), ba = sub(b, a); + + if(ba.every(v => v == 0)) + return length(pa); + + let h = clamp(dot(pa, ba)/dot(ba,ba), 0.0, 1.0); + return length(add(pa, smul(-h, ba))); +}; + +let SdfBrush = (rel = false, sdf = (p1, p2, width) => (p) => line_sdf(p, p1, p2) - width) => { + let c_os = [0, 0]; + let c_pos = [0, 0]; + + let brush_color = 0xff000000; + let brush_depth = 10; + let brush_width = 0.001; + let tree_dirty = false; + + let depth; + let zoom; + let path; + + let obj = { +get_tree: () => path.get_tree(), +set_color: (col) => brush_color = col, +set_scale: (val) => brush_depth = val, +set_width: (val) => brush_width = val, +get_surface: () => [path.get_tree(), path.get_root()], +dirty: () => tree_dirty, //TODO find a better way? +clean: () => tree_dirty = false, +set_surface: (qt, nd) => { + path = QtreePath(qt, nd); +}, +set_pos: (p, dep, zm) => { + depth = dep; + zoom = zm; + c_pos = p; + c_os = [0, 0]; + set_path(path, 1, p, rel ? brush_depth : brush_depth - depth); +}, +update_pos: (p, k) => { + let disp_width = rel ? brush_width * zoom : brush_width; + let max_length = disp_width*4 + length(k); + + let os = add(smul(rel ? 2**brush_depth : 2**(brush_depth-depth), k), c_os); + let uos = os.map(v => v | 0); + + //breaks when depth_bound <= 2 + let depth_bound = (-Math.log2(max_length) | 0); + + + let ps = [c_os, os]; + + + let stack = []; + let de = rel ? brush_depth : brush_depth-depth; + if(depth_bound > 2){ + while(path.get_depth() >= depth_bound){ + let ind = path.cur_ind(); + ps = ps.map(v => smul(0.5, add(v, [!!(ind&1), !!(ind&2)]))); + stack.push(ind); + path.asc(); + } + + + de -= path.get_depth(); + let width = disp_width * 2**(brush_depth-de); + let in_range = (a, b, v) => v > a && v < b; + + let quad = [ + ps[0][0] < 4*width, + ps[0][1] < 4*width + ].map(v => BigInt(v)); + + ps = ps.map(v => smul(0.5, sub(v, quad.map(v => !v)))); + + path.add(smul(-1n, quad)); + + set_tlnode(path, render_sdf( + path.get_tree(), + get_tlnode(path), + de, + sdf(...ps, width), + qtree.color(brush_color) + )); + + path.add(quad); + + }else{ + path.get_root(); + while(path.get_depth()){ + stack.push(path.cur_ind()); + path.asc(); + } + + path.set_cur(render_sdf( + path.get_tree(), + path.get_root(), + de, + sdf(c_pos, p, rel ? brush_width * zoom : brush_width * 2**depth), + qtree.color(brush_color) + )); + } + + while(stack.length) + path.desc(stack.pop()); + + c_os = sub(os, uos); + c_pos = p; + path.add(uos.map(BigInt)); + tree_dirty = true; +} + }; + + return obj; +} + + + + + +let EyeDropper = (cb) => { + let c_os = [0, 0]; + let cursor_path; + let brush_depth = 10; + let tree_dirty = false; + let depth; + + let obj = { +get_tree: () => cursor_path.get_tree(), +set_color: (col) => brush_color = col, +set_scale: (val) => brush_depth = val, +get_surface: () => [cursor_path.get_tree(), cursor_path.get_root()], +dirty: () => tree_dirty, //TODO find a better way? +clean: () => tree_dirty = false, +set_surface: (qtree, node) => cursor_path = QtreePath(qtree, node), +set_pos: (p, dep, zm) => { + depth = dep; + set_path(cursor_path, 1, p, brush_depth); + c_os = [0, 0]; +}, +update_pos: (p, k) => { + let os = add(smul(2**brush_depth, k), c_os); + let uos = os.map(v => v | 0); + + cb(cursor_path.cur()); + cursor_path.add(uos.map(BigInt)); + + c_os = sub(os, uos); + tree_dirty = true; +} + }; + + return obj; +} + + +let fill = (path, c1, color) => { + let stack = []; + + while(path.get_depth() > 0){ + stack.push(path.cur_ind()); + path.asc(); + + if(path.cur().ind != c1.ind){ + path.desc(stack.pop()); + break; + } + } + + path.set_cur(color); + + let queue = [[0n, 1n, 0n], [1n, 0n, 0n], [-1n, 0n, 0n], [0n, -1n]]; + + let pos = [0n, 0n]; + while(queue.length){ + let cur = queue.pop(); + + } +} + +let BucketFill = () => { + let cursor_path; + let brush_color; + let brush_depth = 10; + let tree_dirty = false; + let depth; + + let obj = { +get_tree: () => cursor_path.get_tree(), +set_color: (col) => brush_color = col, +set_scale: (val) => brush_depth = val, +get_surface: () => [cursor_path.get_tree(), cursor_path.get_root()], +dirty: () => tree_dirty, //TODO find a better way? +clean: () => tree_dirty = false, +set_surface: (qtree, node) => cursor_path = QtreePath(qtree, node), +set_pos: (p, dep, zm) => { + depth = dep; +}, +update_pos: (p, k) => { + set_path(cursor_path, 1, p, brush_depth); + fill(cursor_path, cursor_path.cur(), cursor_path.get_tree().color(brush_color)); + + tree_dirty = true; +} + }; + + return obj; +} + + + +$$--GLUE--$$ +.\src\component.js +$$--GLUE--$$ + +/*CPS stuff*/ +let all = (s, ...x) => x.reduce((f, g) => (...x) => f(g(...x)), s); +let id = (x) => x; + +let to_cps = (fn) => (nxt) => (...x) => nxt(fn(...x)); +let un_cps = (fn) => fn(id); + + + + +/*CSS stuff*/ +let gen_sheet = document.createElement("style"); +document.head.appendChild(gen_sheet); +let gen_styles = gen_sheet.sheet; + +let gen_rule = (sel, style) => gen_styles.insertRule(`${sel} { ${Object.entries(style).map(v=>v[0].replace(/([A-Z])/g,"-$1") + ":" + v[1]).join(";")}; } \n`); +let gen_class = (name, style) => gen_rule("." + name, style); + +gen_class("border", { + "border-color": "grey", + "border-style": "solid", + "border-radius": "0.5em", + "border-width": "0.1em", + "padding": "0.45em", + "margin": "0.45em", + "overflow": "visible", + "width": "calc(100% - 2*(0.45em) - 2*(0.1em) - 2*(0.45em))", + "height": "calc(100% - 2*(0.45em) - 2*(0.1em) - 2*(0.45em))" +}); + +gen_class("vpart", { + "display": "flex", + "flex-direction": "column" +}); + +gen_class("hpart", { + "display": "flex", + "flex-direction": "row" +}); + +gen_class("partBlock", { + "flex": "1" +}); + +gen_class("Block", { + "min-height": "100%", + "width": "100%", + "padding": "0", + "margin": "0", + "border": "0" +}); + +gen_rule("body", { + "color": "grey", + "width": "100vw", + "height": "100vh", + "margin": "0", + "padding": "0", + "overflow": "hidden", + "font-size": "12px" +}); + +gen_rule("*", { + "touch-action": "none" +}); + + + +let el = (type) => to_cps(() => document.createElement(type)); + +let Children = (...x) => to_cps((el) => { + el.replaceChildren(...x.filter(v => v != null).map(v => un_cps(v)())); + return el; +}); + +let Style = (style) => to_cps((el) => { + Object.entries(style).forEach(v=>el.style[v[0]] = v[1]) + return el; +}); + +let Class = (cl) => to_cps((el) => { + el.classList.add(cl); + return el; +}); + +let Text = (text) => to_cps((el) => { + el.innerText = text; + return el; +}); + +let Attr = (name, value) => to_cps((el) => { + el[name] = value; + return el; +}); + +let Event = (name, cb) => to_cps((el) => { + el.addEventListener(name, cb); + return el; +}); + + + + + + + + +let col = (...nd) => all( + Block(el("div")), + Children(...nd) +) + +let row = (...nd) => all( + Block(el("div")), + Style({ whiteSpace: "nowrap" }), + Children(...nd.map(v=> + all( + v, + Style({ + display: "inline-block", + whiteSpace: "wrap" + }) + ) + )) +); + +let Overlap = (...nd) => all( + Block(el("div")), + Style({position: "relative"}), + Children(...nd.map(v=> + all( + v, + Style({position: "absolute"})) + ) + ) +); + +let Button = (nd, cb) => all( + nd, + Style({userSelect: "none", cursor: "pointer"}), + Event("click", cb) +); + + +let vpart = (...w) => (...nd) => all( + Block(el("div")), + Class("vpart"), + Children(...nd.map((v,i)=> + w[i] != null + ? Rect(null, w[i])(v) + : all(Block(el("div")), Class("partBlock"), Children(v)) + )) +); + +let hpart = (...w) => (...nd) => all( + Block(el("div")), + Class("hpart"), + + Children(...nd.map((v,i)=> + w[i] != null + ? Rect(w[i], null)(v) + : all(Block(el("div")), Class("partBlock"), Children(v)) + ))); + +let Center = (w, h) => nd => +vpart(null, h, null)( + null, + hpart(null, w, null)( + null, + nd, + null + ), + null +); + +let Body = nd => all( + el("body"), + Children(nd) +); + +let Block = nd => all( + nd, + Class("Block"), +); + +let Rect = (w, h) => nd => all( + Block(el("div")), + Style({ + width: `calc(${w})`, + height: `calc(${h})`, + "min-height": "auto" + }), + Children(nd) +); + +let Scroll = nd => all( + Rect("100%", "100%")(el("div")), + Style({overflow: "auto"}), + Children(nd) +); + +let ScrollX = nd => all( + Rect("100%", "100%")(el("div")), + Style({overflow: "visible", overflowX: "auto"}), + Children(nd) +); + +let ScrollY = nd => all( + Rect("100%", "100%")(el("div")), + Style({overflow: "visible", overflowY: "auto"}), + Children(nd) +); + + + + + + + + + + + +let Border = nd => all( + el("div"), + Class("border"), + Children(nd) +); + +let vresize = nd => all( + Block(el("div")), + Style({ + resize: "vertical", + maxHeight: "100%" + }), + Children(nd) +); + +let hresize = nd => all( + Block(el("div")), + Style({ + resize: "horizontal", + maxWidth: "100%" + }), + Children(nd) +); + + +$$--GLUE--$$ +.\src\graphics.js +$$--GLUE--$$ + +let gl_load_shader = (gl, type, source) => { + let shader = gl.createShader(type); + gl.shaderSource(shader, source); + gl.compileShader(shader); + + if(!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { + console.log(gl.getShaderInfoLog(shader)); + gl.deleteShader(shader); + return null; + } + + return shader; +} + +let gl_init_shader = (gl, vsource, fsource) => { + let vertex_shader = gl_load_shader(gl, gl.VERTEX_SHADER, vsource); + let fragment_shader = gl_load_shader(gl, gl.FRAGMENT_SHADER, fsource); + + let shader_program = gl.createProgram(); + gl.attachShader(shader_program, vertex_shader); + gl.attachShader(shader_program, fragment_shader); + gl.linkProgram(shader_program); + + if(!gl.getProgramParameter(shader_program, gl.LINK_STATUS)) { + console.log(gl.getShaderInfoLog(shader)); + return null; + } + + return shader_program; +} + +let FragmentRenderer = (gl, fsource) => { + let shader_program = gl_init_shader(gl, +` +precision highp float; +attribute vec2 aVertexPosition; + +void main(){ + gl_Position = vec4(aVertexPosition, 0.0, 1.0); +} +`, fsource); + + + let pos_buf = gl.createBuffer(); + let texture = {}; + let uniform = {}; + let textures = 0; + let tex_bufs = []; + + let active_texture; + + let positions = [1, 1, -1, 1, 1, -1, -1, -1]; + + let obj = { +set_active: () => { + gl.useProgram(shader_program); + gl.bindBuffer(gl.ARRAY_BUFFER, pos_buf); + gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW); + gl.bindBuffer(gl.ARRAY_BUFFER, pos_buf); + + let vert_pos = gl.getAttribLocation(shader_program, "aVertexPosition"); + gl.vertexAttribPointer( + vert_pos, + 2, + gl.FLOAT, + false, + 0, + 0 + ); + + gl.enableVertexAttribArray(vert_pos); + + active_texture = null; +}, +draw: () => { + tex_bufs.forEach(v => v.flush()); + gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); +}, +set_uniform: (name, type, value) => { + uniform[name] ??= gl.getUniformLocation(shader_program, name); + + let type_lut = { + "float": (loc, x) => gl.uniform1f(loc, x), + "vec2": (loc, v) => gl.uniform2f(loc, ...v), + "vec3": (loc, v) => gl.uniform3f(loc, ...v), + "vec4": (loc, v) => gl.uniform4f(loc, ...v), + "ivec4": (loc, v) => gl.uniform4i(loc, ...v), + "mat4": (loc, v) => gl.uniformMatrix4fv(loc, false, v), + "int": (loc, x) => gl.uniform1i(loc, x) + }; + + type_lut[type](uniform[name], value); +}, +set_texture: (name, w, h, arr) => { + let tex = texture[name] ?? (texture[name] = { + ind: ++textures, + buf: gl.createTexture() + }); + + tex.res = [w, h]; + + let loc = gl.getUniformLocation(shader_program, name) + + obj.set_uniform(name, "int", tex.ind); + + gl.activeTexture(gl.TEXTURE0 + tex.ind); + gl.bindTexture(gl.TEXTURE_2D, tex.buf); + active_texture = tex; + + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); + + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); + + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, w, h, 0, gl.RGBA, gl.UNSIGNED_BYTE, arr); +}, +set_sub_texture: (name, [x, y], [w, h], arr) => { + if(active_texture != texture[name]){ + gl.bindTexture(gl.TEXTURE_2D, texture[name].buf); + active_texture = texture[name]; + } + gl.texSubImage2D(gl.TEXTURE_2D, 0, x, y, w, h, gl.RGBA, gl.UNSIGNED_BYTE, arr); +}, +set_texture_buf: (name, arr) => { + let num = arr.length/4; + let sr = (Math.log2(num)/2 + 1) | 0; + let [w, h] = [2**sr,(num/2**sr | 0) + !!(num % 2**sr)]; + + obj.set_texture(name, w, h, new Uint8Array(arr.buffer)); + obj.set_uniform(name + "_lt", "int", sr); + obj.set_uniform(name + "_res", "vec2", [w, h]); +}, +write_buf: (name, start, arr) => { + let [w, h] = texture[name].res; + + let tl = [start % w, start / w | 0]; + if(start % w != 0){ + let cw = Math.min(w - tl[0], arr.length/4); + obj.set_sub_texture(name, tl, [cw, 1], arr); + tl = [0, tl[1] + 1]; + arr = arr.subarray(cw * 4); + } + + + let ch = arr.length/4/w | 0; + if(ch) + obj.set_sub_texture(name, [tl[0], tl[1]], [w, ch], arr); + + tl = [0, tl[1]+ch]; + arr = arr.subarray(ch * w * 4); + let cw = arr.length/4; + if(cw) + obj.set_sub_texture(name, tl, [cw, 1], arr); +}, +read_buf: (name, start, end) => { + let buf = new Uint8Array(end - start); + let [w, h] = texture[name].res; + + let arr = buf; + + let tl = [start % w, start / w | 0]; + if(start % w != 0){ + let cw = Math.min(w - tl[0], arr.length/4); + obj.read_pixels(name, tl, [cw, 1], arr); + tl = [0, tl[1] + 1]; + arr = arr.subarray(cw * 4); + } + + + let ch = arr.length/4/w | 0; + if(ch) + obj.read_pixels(name, [tl[0], tl[1]], [w, ch], arr); + + tl = [0, tl[1]+ch]; + arr = arr.subarray(ch * w * 4); + let cw = arr.length/4; + if(cw) + obj.read_pixels(name, tl, [cw, 1], arr); + + return buf; +}, +GpuUint8: (name) => { + let w = gl.getParameter(gl.MAX_TEXTURE_SIZE)/4; + rend.set_texture_buf(name, new Uint8Array(w*w*4).fill(0)); + + let buf = DynUint8(w); + let end = 0; + + let arr = new Uint8Array(4); + arr_ind = 0; + + let obj = { +set: (ind, val) => { + if(ind >= end){ + if(ind - end >= 1024) + obj.flush(); + buf.set(ind - end, val); + return val; + } + + arr[arr_ind++] = val; + if(arr_ind == 4){ + arr_ind = 0; + rend.write_buf(name, ind/4 | 0, arr); + } + + return val; +}, +push: (val) => { + if(buf.get_end() >= 1024) + obj.flush(); + buf.push(val); +}, +flush: () => { + if(buf.get_end() != 0){ + rend.write_buf(name, end/4, buf.get_buffer().subarray(0, buf.get_end())); + end += buf.get_end(); + buf = DynUint8(); + } +}, +clear: () => { + buf.clear(); + arr_ind = end = 0; +}, +get_end: () => end + buf.get_end() + } + + tex_bufs.push(obj); + return obj; +} + }; + + return obj; +} + + + +$$--GLUE--$$ +.\src\input.js +$$--GLUE--$$ + +let Pointer = (el, init, ev = init, del = init) => { + let to_point = (v) => ({ + id: v.pointerId, + x: v.offsetX, + y: v.offsetY, + force: v.pressure, + time: v.timeStamp, + buttons: v.buttons + }); + + el.addEventListener("pointerdown", (e) => init(to_point(e))); + el.addEventListener("pointermove", (e) => { + e.getCoalescedEvents /* only works in https */ + ? e.getCoalescedEvents().forEach(v => ev(to_point(v))) + : ev(to_point(e)) + }); + el.addEventListener("pointerup", (e) => del(to_point(e))); + el.addEventListener("pointerleave", (e) => del(to_point(e))); + el.addEventListener("pointerout", (e) => del(to_point(e))); +} + +let Keyboard = (el, down, up) => { + el.addEventListener("keydown", (e) => down(e.keyCode)); + el.addEventListener("keyup", (e) => up(e.keyCode)); +} + + + +let mouse_pan = (el, get_pos, set_pos) => { + let start; + let state, translate, poll; + + translate = (ev) => { + let pos = get_pos(); + set_pos([pos[0] + ev.x - start[0], pos[1] + start[1] - ev.y]); + start = [ev.x, ev.y]; + + if(ev.buttons != 4){ + state = poll; + } + }; + + poll = (ev) => { + if(ev.buttons == 4){ + start = [ev.x, ev.y]; + state = translate; + } + }; + + state = poll; + return Pointer(el, (ev) => state(ev)); +} + + +let mouse_wheel = (el, cb) => { + el.addEventListener("wheel", (e) => cb([e.clientX, e.clientY], 2*Math.atan(e.deltaY)/Math.PI), {passive: true}); +} + + + + + + + + +let touch_pan = (el, get_pos, set_pos) => { + let pointers = {}; + let start; + let state, translate, poll; + + let get_points = () => Object.entries(pointers).map(v => v[1]); + let get_avg_pos = () => ((points) => points.reduce((a, b) => [a[0] + b[0], a[1] + b[1]]).map(v => v / points.length)) + (get_points()); + + translate = (ev) => { + pointers[ev.id] = [ev.x, ev.y]; + + let pos = get_pos(); + let avg_pos = get_avg_pos(); + set_pos([pos[0] + avg_pos[0] - start[0], pos[1] + start[1] - avg_pos[1]]); + start = avg_pos; + + }; + + poll = (ev) => {}; + + let add_pointer = (ev) => { + pointers[ev.id] = [ev.x, ev.y]; + + if(Object.keys(pointers).length == 2){ + start = get_avg_pos(); + state = translate; + }else{ + state = poll; + } + }; + + let del_pointer = (ev) => { + delete pointers[ev.id]; + + if(Object.keys(pointers).length != 2) + state = poll; + }; + + state = poll; + return Pointer(el, add_pointer, (ev) => state(ev), del_pointer); +} + +let touch_pinch = (el, cb) => { //TODO figure out how to fix paning while pinching :/ + let pointers = {}; + let start; + let state, translate, poll; + + let get_points = () => Object.entries(pointers).map(v => v[1]); + let get_avg_pos = () => ((points) => points.reduce((a, b) => [a[0] + b[0], a[1] + b[1]]).map(v => v / points.length)) + (get_points()); + let dist = (a, b) => { + let v = [a[0] - b[0], a[1] - b[1]]; + return (v[0]*v[0] + v[1]*v[1])**0.5; + } + + translate = (ev) => { + pointers[ev.id] = [ev.x, ev.y]; + + let n_dist = dist(...get_points()); + + let pinch = Math.sign((start - n_dist)/7 | 0); //TODO dynamically find value + + if(pinch){ + cb(get_avg_pos(), Math.sign(pinch | 0)) + start = n_dist; + } + + }; + + poll = (ev) => {}; + + let add_pointer = (ev) => { + pointers[ev.id] = [ev.x, ev.y]; + + if(Object.keys(pointers).length == 2){ + start = dist(...get_points()); + state = translate; + }else{ + state = poll; + } + }; + + let del_pointer = (ev) => { + delete pointers[ev.id]; + + if(Object.keys(pointers).length != 2) + state = poll; + }; + + state = poll; + return Pointer(el, add_pointer, (ev) => state(ev), del_pointer); +} + + + + +let pointer_drag = (el, st, cb) => { + let start; + let state, drag, poll; + let pointers = {}; + + drag = (ev) => { + if(length(sub(start, [ev.x, ev.y])) > 2){ + cb([ev.x, ev.y], [ev.x - start[0], ev.y - start[1]]); + start = [ev.x, ev.y]; + } + }; + + poll = (ev) => {}; + + let add_pointer = (ev) => { + pointers[ev.id] = [ev.x, ev.y]; + + if(Object.keys(pointers).length == 1 && ev.buttons == 1){ + start = pointers[ev.id]; + st(start); + state = drag; + }else{ + state = poll; + } + }; + + let del_pointer = (ev) => { + delete pointers[ev.id]; + + if(Object.keys(pointers).length != 1) + state = poll; + }; + + + state = poll; + return Pointer(el, add_pointer, (ev) => state(ev), del_pointer); +} + + + + +$$--GLUE--$$ +.\src\qtree.js +$$--GLUE--$$ + +let DynUint8 = (sz = 256*4) => { + let buffer = new Uint8Array(sz); //TODO may fail + let end = 0; + + let obj = { +get_buffer: () => buffer, +get: (ind) => buffer[ind], +set: (ind, val) => { + if(ind >= buffer.length){ + let v = 1; + while(ind >= buffer.length * v) v *= 2; + let old = buffer; + buffer = new Uint8Array(buffer.length * v); + buffer.set(old); + } + + return buffer[ind] = val; +}, +push: (val) => obj.set(end++, val), +pop: (val) => obj.get(--end), +get_end: () => end, +set_end: (ind) => end = ind, +clear: () => end = 0, + } + + return obj; +} + + +let Uint32Arr = (u8buf) => { + let obj = { +get_buffer: () => u8buf, +set: (ind, num) => { + ind *= 4; + u8buf.set(ind++, (num >> 0) & 0xff); + u8buf.set(ind++, (num >> 8) & 0xff); + u8buf.set(ind++, (num >> 16) & 0xff); + u8buf.set(ind++, (num >> 24) & 0xff); +}, +push: (num) => { + u8buf.push((num >> 0) & 0xff); + u8buf.push((num >> 8) & 0xff); + u8buf.push((num >> 16) & 0xff); + u8buf.push((num >> 24) & 0xff); +}, +get: (ind) => { + let num = 0; + ind *= 4; + num += u8buf.get(ind++) << 0; + num += u8buf.get(ind++) << 8; + num += u8buf.get(ind++) << 16; + num += u8buf.get(ind++) << 24; + return num; +}, +pop: () => { + let ret = obj.get(obj.get_end()-1) + obj.set_end(obj.get_end()-1); + return ret; +}, +get_end: () => u8buf.get_end() / 4, +set_end: (ind) => u8buf.set_end(ind * 4), +clear: () => u8buf.clear() + }; + + return obj; +} + + +let LinearQtree = (buffer = Uint32Arr(DynUint8())) => { + let ab, col_ab, memo, col_memo; + //let col_memo = new Map(); //?? + //let memo = new Map(); + //let buffer = new Uint8Array(256 * 4); + + let obj = { +node_at: (ind) => { + let node = { + ind, + get_node: (i) => obj.node_at(buffer.get(ind * 5 + 1 + i)), + get_tag: () => buffer.get(ind * 5), + set_tag: (t) => buffer.set(ind * 5, t), + set_node: (i, nd) => buffer.set(ind * 5 + i + 1, nd.ind), + }; + + return node; +}, + +add_node: (t, ...nodes) => { + let vals = [t, ...nodes.map(v => v?.ind)]; + let my_ind = buffer.get_end()/5; + + while(vals.length != 5) + vals.push(my_ind); + + vals.map(buffer.push); + return obj.node_at(my_ind); +}, +color: (t) => { + let node = obj.add_node(t); + + let free = false; + col_memo = col_ab.insert(col_memo, node.ind, (ind) => { + buffer.set_end(buffer.get_end() - 5); + free = true; + node = obj.node_at(ind); + }); + + memo = ab.insert(memo, node.ind, (ind) => { + if(!free) + buffer.set_end(buffer.get_end() - 5); + node = obj.node_at(ind); + }); + + return node; +}, +node: (...nodes) => { + let t = avg_color(nodes.map(v => v.get_tag())); + let node = obj.add_node(t, ...nodes); + + memo = ab.insert(memo, node.ind, (ind) => { + buffer.set_end(buffer.get_end() - 5); + node = obj.node_at(ind); + }); + + + return node; +}, + +get_buffer: () => buffer, +get_memo: () => [ab, col_ab, memo, col_memo], +get_size: () => buffer.get_end()/5 + }; + + let node_eq = (a, b) => { + for(let i = 0; i < 4; i++) + if(obj.node_at(a).get_node(i).ind != obj.node_at(b).get_node(i).ind) + return false; + + return true; + } + + let node_cmp = (a, b) => { + for(let i = 0; i < 4; i++) + if(obj.node_at(a).get_node(i).ind < obj.node_at(b).get_node(i).ind) + return true; + + return false; + } + + ab = _24_tree(Uint32Arr(DynUint8()), + node_cmp, + node_eq + ); + + col_ab = _24_tree(Uint32Arr(DynUint8()), + (a, b) => obj.node_at(a).get_tag() < obj.node_at(b).get_tag(), + (a, b) => obj.node_at(a).get_tag() == obj.node_at(b).get_tag() + ); + memo = ab.node_at(0); + col_memo = col_ab.node_at(0); + + + return obj; +} + + + + + + + + + + + +let avg_color = (cols) => { + let add = (a, b) => a.map((v, i) => v + b[i]); + return cols.map(v => [ + (v >> 24) & 0xff, + (v >> 16) & 0xff, + (v >> 8) & 0xff, + (v >> 0) & 0xff + ]) + .reduce(add) + .map(v => (v/cols.length | 0) % 256) + .reduce((a, b) => a*256 + b, 0); +} + +let set_node = (qtree, node, ind, val) => { + let nodes = Array(4).fill().map((v, i) => node.get_node(i)); + nodes[ind] = val; + return qtree.node(...nodes); +} + +let render_sdf = (qtree, node, depth, sdf, fill) => { + let render_ = (node, orig, unit, depth) => { + unit = unit * 0.5; + + let dist = sdf(orig); + let target = 2**0.5 * unit; + + if(fill.ind == node.ind || dist < -target || depth <= 0) + return fill; + + if(dist < target){ + let hu = unit * 0.5; + return qtree.node( + render_(node.get_node(0), add([-hu, -hu], orig), unit, depth-1), + render_(node.get_node(1), add([hu, -hu], orig), unit, depth-1), + render_(node.get_node(2), add([-hu, hu], orig), unit, depth-1), + render_(node.get_node(3), add([hu, hu], orig), unit, depth-1) + ); + } + + return node; + }; + + return render_(node, [0, 0], 1, depth); +} + +//slower +let render_sdf_fn = (qtree, node, depth, sdf, color) => { + let render_ = (node, orig, unit, depth) => { + unit = unit/2; + + let dist = sdf(orig); + let target = 2**0.5 * unit; + + if(depth <= 0) + return color(orig, node); + + if(dist < target){ + let nodes = Array(4).fill().map((v, i) => node.get_node(i)); + return qtree.node( + ...nodes + .map((v, i) => render_(v, add(smul(unit, [!!(i & 1) - 0.5, 0.5 - !!(i & 2)]), orig), unit, depth-1)) + ); + } + + return node; + }; + + return render_(node, [0, 0], 1, depth); +} + + + + + + + + + + + + + + + + + + +//TODO make this less fucky +let QtreeMirror = (q1, q2) => { + let seen = new Map(); + + let obj = { +get_main: () => q1, +get_seen: () => seen, +mirror: (node) => { + if(seen.has(node.ind)) + return q2.node_at(seen.get(node.ind)); + + let nd = q2.add_node(node.get_tag()); + seen.set(node.ind, nd.ind); + return nd; +}, +full_mirror: (node) => { + let nodes = Array(4).fill().map((v, i) => node.get_node(i)); + let mnd = obj.mirror(node); + + nodes.forEach((v, i) => { + if(!seen.has(v.ind)) + mnd.set_node(i, obj.full_mirror(v)); + else + mnd.set_node(i, obj.mirror(v)); + }); + + return mnd; +}, +node_at: (ind) => { + let nd = q1.node_at(ind); + let mnd = obj.mirror(nd); + + let node = { + ind: nd.ind, + get_node: (i) => { + let n = nd.get_node(i); + if(!seen.has(n.ind)){ + for(let i = 0; i < 4; i++) + mnd.set_node(i, obj.mirror(nd.get_node(i))); + }else{ + mnd.set_node(i, obj.mirror(n)); + } + + return obj.node_at(n.ind); + }, + get_tag: nd.get_tag, + set_tag: (t) => (mnd.set_tag(t), nd.set_tag(t)), + set_node: (i, n) => { + nd.set_node(i, n); + for(let i = 0; i < 4; i++) + mnd.set_node(i, obj.mirror(nd.get_node(i))); + } + }; + + return node; +}, +add_node: (t, ...nodes) => { + let nd = q1.add_node(t, ...nodes); + + let n2 = q2.add_node(t, ...nodes.map(obj.mirror)); + seen.set(nd.ind, n2.ind); + + return obj.node_at(nd.ind); +}, +node: (...nodes) => { + let nd = q1.node(...nodes); + obj.full_mirror(nd) + return obj.node_at(nd.ind); +}, +color: (t) => { + let nd = q1.color(t); + obj.mirror(nd); + return obj.node_at(nd.ind); +} + + }; + + return obj; +} + + + + + + + + +/* +let LazyQtree = (qtree) => { + let lazy = new Map(); + + let obj = { +node_at: (ind) => { + if(lazy.has(ind)) + return lazy.get(ind); + + return qtree.node_at(ind); +}, +add_node: qtree.add_node, +node: qtree.node, +color: qtree.color, +lazy_node: (col_guess, fn) => { + let my_ind = qtree.get_size(); + + //TODO breaks uniqueness ... + let node = { + ind: my_ind, + get_node: (i) => { + let nd = fn(obj); + console.log(nd); + lazy.set(my_ind, nd); + + node.ind = nd.ind; + node.get_node = nd.get_node; + node.get_tag = nd.get_tag; + node.set_tag = nd.set_tag; + node.set_node = nd.set_node; + + return nd.get_node(i); + }, + get_tag: () => col_guess, + set_tag: () => null, + set_node: () => null + }; + + lazy.set(my_ind, node); + return node; +} + }; + + return obj; +} +*/ + + + + + + +let QtreePath = (qtree, node) => { + let path = [[node, null]]; + + let obj = { +copy: () => { + let cp = QtreePath(qtree, obj.get_root()); + + for(let i = 1; i < path.length; i++) + cp.desc(path[i][1]); + + return cp; +}, +cur: () => path.at(-1)[0], +set_cur: (val) => path.at(-1)[0] = val, +cur_ind: () => path.at(-1)[1], +get_tree: () => qtree, +get_depth: () => path.length-1, +desc: (ind) => path.push([obj.cur().get_node(ind), ind]), +asc: (hint = 0) => { + let [n1, ind] = path.pop(); + if(path.length == 0){ + path.push([qtree.color(0xffffffff), null]); + ind = hint; + } + + obj.set_cur(set_node(qtree, obj.cur(), ind, n1)); + return [n1, ind]; +}, +set_path: ([px, py], depth) => { + /* stack limit bites */ + path = [[obj.get_root(), null]]; + while(depth != 0){ + depth--; + let ind = !!(px & (1n << depth)) + 2*!!(py & (1n << depth)); + obj.desc(ind); + } + + return obj.cur(); +}, +add: ([x, y]) => { + let stack = []; + + while(x || y){ + let [node, ind] = obj.asc((x < 0) + 2*(y < 0)); + + let os = !!(x & 1n) + 2*!!(y & 1n); + stack.push(ind ^ os); + + x >>= 1n; + y >>= 1n; + + x += BigInt(!!(os & ind & 1)); + y += BigInt(!!(os & ind & 2)); + } + + while(stack.length) + obj.desc(stack.pop()); + + return obj.cur(); +}, +get_root: () => { + if(path == null || path.length == 0) + return null; + for(let i = path.length-1; i--;) + path[i][0] = set_node(qtree, path[i][0], path[i+1][1], path[i+1][0]); + + return path[0][0]; +}, + } + + return obj; +} + +let set_path = (path, unit, p, depth) => { + let orig = [0, 0]; + + path.set_path([0n, 0n], 0n); + + for(let i = 0; i < depth; i++){ + let quad = [p[0] > orig[0], p[1] > orig[1]]; + + path.desc(quad[0] + 2*quad[1]); + + unit /= 2; + orig = add(smul(unit, [quad[0]-0.5, quad[1]-0.5]), orig); + } + + return path; +} + + + + + + + + + + + + + + + + + + + + + + + + + + +let index_heap = (buffer, is_lt) => { + let obj = { +get_buffer: () => buffer, +insert: (ind) => { + let buf_pos = buffer.get_end(); + buffer.push(ind); + obj.sift_down(buf_pos); +}, +extract_min: () => { + let ret = buffer.get(0); + buffer.set(0, buffer.pop()); + obj.sift_up(0); + return ret; +}, +cas: (a, b) => { + let a_val = buffer.get(a); + let b_val = buffer.get(b); + + if(is_lt(a_val, b_val)) + return false; + + buffer.set(b, a_val); + buffer.set(a, b_val); + return true; +}, +sift_up: (ind) => { + let l_ind = (ind + 1) * 2 - 1 + let r_ind = l_ind + 1; + + if(l_ind >= buffer.get_end()) + return; + + let take = l_ind; + if(r_ind < buffer.get_end()){ + if(is_lt(buffer.get(r_ind), buffer.get(l_ind))) + take = r_ind; + } + + if(obj.cas(ind, take)) + obj.sift_up(take); +}, +sift_down: (ind) => { + if(ind == 0) + return; + + let p_ind = ((ind + 1) / 2 | 0) - 1; + + if(obj.cas(p_ind, ind)) + obj.sift_down(p_ind); +}, +is_empty: () => buffer.get_end() == 0 + }; + + return obj; +} + + + + +let Arena = (buffer, alloc_size) => { + let heap = index_heap(DynUint8()); + + let obj = { +alloc: () => { + if(heap.is_empty()){ + let ind = buffer.get_end(); + buffer.set_end(buffer.get_end() + alloc_size); + return ind; + } + + let ind = heap.extract_min(); + return ind; +}, +free: (ind) => heap.insert(ind) + }; + + return obj; +} + + + + + + +let _24_tree = (buffer, is_lt, is_eq) => { + let arena = Arena(buffer.get_buffer(), 8 * 4); + + let obj = { +node_at: (ind) => { + let node = { + ind, + size: () => buffer.get(ind), + get_size: () => buffer.get(ind), + set_size: (val) => buffer.set(ind, val), + get_key: (i) => buffer.get(ind + 1 + i), + set_key: (i, key) => buffer.set(ind + 1 + i, key), + get_node: (i) => obj.node_at(buffer.get(ind + 4 + i)), + set_node: (i, node) => buffer.set(ind + 4 + i, node.ind), + }; + + return node; +}, +add_node: (keys, nodes) => { + let node = obj.node_at(arena.alloc()); + node.set_size(Math.max(keys.length + 1, nodes.length)); + keys.forEach((v, i) => node.set_key(i, v)); + nodes.forEach((v, i) => node.set_node(i, v)); + return node; +}, +search: (node, key) => { + if(node.ind == 0) + return null; + + let i = 0; + for(; i < node.get_size() - 1; i++){ + let cur_key = node.get_key(i); + if(is_eq(key, cur_key)) + return cur_key; + + if(is_lt(key, cur_key)) + break; + } + + return obj.search(node.get_node(i), key); +}, +node_split: (keys, nodes, ind) => { + let l_keys = keys.slice(0, ind); + let m_key = keys[ind]; + let r_keys = keys.slice(ind+1); + + let l_nodes = nodes.slice(0, ind+1); + let r_nodes = nodes.slice(ind+1); + + return [ + m_key, + obj.add_node(l_keys, l_nodes), + obj.add_node(r_keys, r_nodes) + ]; +}, +node_insert: (node, ind, key, repl) => { + let keys = Array(node.get_size() - 1).fill().map((v, i) => node.get_key(i)); + let nodes = Array(node.get_size()).fill().map((v, i) => node.get_node(i)); + + let new_keys = [...keys.slice(0, ind), key, ...keys.slice(ind)]; + let new_nodes = [...nodes.slice(0, ind), ...repl, ...nodes.slice(ind + 1)]; + + if(new_keys.length > 3) + return obj.node_split(new_keys, new_nodes, 2); + + new_keys.forEach((v, i) => node.set_key(i, v)); //kinda gross, but constant cost... + new_nodes.forEach((v, i) => node.set_node(i, v)); + node.set_size(new_nodes.length); + + return [node]; +}, +insert_: (node, key, fn) => { + if(node.ind == 0) + return [key, obj.node_at(0), obj.node_at(0)]; + + let i = 0; + for(; i < node.get_size() - 1; i++){ + let cur_key = node.get_key(i); + if(is_eq(key, cur_key)){ + fn(cur_key); + return [node]; + } + + if(is_lt(key, cur_key)) + break; + } + + let next_node = i; + let next = obj.insert_(node.get_node(next_node), key, fn); + if(next.length == 1){ + node.set_node(next_node, next[0]); + return [node]; + } + + return obj.node_insert(node, next_node, next[0], [next[1], next[2]]); +}, +insert: (node, key, fn = () => null) => { + let next = obj.insert_(node, key, fn); + if(next.length == 1) + return next[0]; + return obj.add_node([next[0]], [next[1], next[2]]); +}, +to_json: (node) => { + if(node.ind == 0) + return {}; + + let keys = Array(node.get_size() - 1).fill().map((v, i) => node.get_key(i)); + let nodes = Array(node.get_size()).fill().map((v, i) => node.get_node(i)).map(obj.to_json); + + return {keys, nodes}; +} + }; + + root = obj.node_at(arena.alloc()); + + return obj; +}; + + + + + + + + + + + +$$--GLUE--$$ +.\src\tree_shader.glsl +$$--GLUE--$$ +precision highp float; +precision highp int; + +uniform vec2 res; + +uniform sampler2D tex; +uniform vec2 tex_res; +uniform int tex_lt; + + +uniform vec2 center; +uniform ivec4 node; +uniform int depth; +uniform float unit; + +uniform int debug; + +uniform mat4 transform; + +/* 32bit int emulation */ +ivec2 moddiv(int a, int b){ + int div = a / b, mod = a - div * b; + return ivec2(mod, div); +} + +ivec4 carry_prop(ivec4 a){ + ivec2 v; + + v = moddiv(a.r, 256); + a.r = v.x; + v = moddiv(a.g + v.y, 256); + a.g = v.x; + v = moddiv(a.b + v.y, 256); + a.b = v.x; + v = moddiv(a.a + v.y, 256); + a.a = v.x; + + return a; +} + +ivec4 rshift8(ivec4 a){return ivec4(a.g, a.b, a.a, 0);} + +ivec4 rshift07(ivec4 a, int b){ + int v = int(float(a.r) * pow(0.5, float(b))); + a = carry_prop(rshift8(a)*int(pow(2.0,float(8-b)))); + a.r = a.r + v; + return a; +} + +ivec4 rshift(ivec4 a, int b){ + ivec2 mul = moddiv(b, 7); + for(int i = 0; i < 8; i++){ + if(mul.y - i == 0) + break; + a = rshift07(a, 7); + } + + return rshift07(a, mul.x); +} + +ivec4 lshift(ivec4 a, int b){ + ivec2 mul = moddiv(b, 7); + for(int i = 0; i < 8; i++){ + if(mul.y - i == 0) + break; + a = carry_prop(a*int(pow(2.0, 7.0))); + } + + return carry_prop(a*int(pow(2.0, float(mul.x)))); +} + + + +vec4 col_at(ivec4 ind){ + ivec4 v2 = rshift(ind, tex_lt); + ivec4 v1 = ind - lshift(v2, tex_lt); + + vec2 tc = (vec2(v1.r + 256*v1.g, v2.r + 256*v2.g) + vec2(0.5)) / tex_res; + return texture2D(tex, tc); +} + +ivec4 vec4tonum(vec4 val){ + + +/* + //UNSIGNED_SHORT_4_4_4_4 + ivec4 val = ivec4(15.0*val + 0.5) + return ivec4(val.r + 16*val.g, val.b + 16*val.a, 0, 0); +*/ + + +/* + UNSIGNED_SHORT_5_6_5 + ivec4 val = ivec4(31.0*val.r + 0.5, 63.0*val.g + 0.5, 31.0*val.b + 0.5, 0.0); + return carry_prop(ivec4(val.r + 32*val.g, 8*val.g, 0, 0)); +*/ + + //RGBA + return ivec4(255.0*val + 0.5); +} +ivec4 num_at(ivec4 ind){ +/* + //UNSIGNED_SHORT_4_4_4_4 + ind = lshift(ind, 1); + return vec4tonum(col_at(ind + ivec4(0, 0, 0, 0)) + + lshift(vec4tonum(col_at(ind + ivec4(1, 0, 0, 0)), 16); +*/ + + //RBGA + return vec4tonum(col_at(ind)); +} + + + +void main(){ + vec2 pos = (transform * vec4(gl_FragCoord.xy, 0.0, 1.0)).xy; + vec2 orig = center; + + ivec4 ind = node; + float width = unit; + + if(debug == 1 && gl_FragCoord.x < center.x){ + vec2 p = gl_FragCoord.xy/res; + p.x = p.x * 2.0; + p.y = 1.0 - p.y; + + gl_FragColor = texture2D(tex, p); + gl_FragColor.a = 1.0; + return; + } +/* + else{ + vec2 p = gl_FragCoord.xy; + + if(p.y > tex_res.x * tex_res.y) + discard; + ivec4 ind = carry_prop(ivec4(p.y, 0, 0, 0)); + + gl_FragColor = col_at(ind); + gl_FragColor.a = 1.0; + return; + } + */ + + + for(int i = 0; i < 16; i++){ + if(i >= depth) + break; + + vec2 quad = vec2(pos.x > orig.x, pos.y < orig.y); + ind = ind * 5; + ind.r = ind.r + 1 + int(quad.x + 2.0*quad.y); + ind = num_at(carry_prop(ind)); + + width = width / 2.0; + orig = vec2(quad.x-0.5, 0.5-quad.y)*width + orig; + } + + gl_FragColor = col_at(carry_prop(ind*5)); +} + +$$--GLUE--$$ +.\style.css +$$--GLUE--$$ +/* Global Reset */ +* { + box-sizing: border-box; + margin: 0; + padding: 0; + font-family: 'Arial', sans-serif; + scroll-behavior: smooth; +} + +/* Body */ +body { + background-color: #121212; /* Dark mode background */ + color: #E0E0E0; + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + padding: 20px; +} + +/* Canvas Container */ +.Block { + position: relative; +} + +/* Canvas */ +#screen { + border: 2px solid #4CAF50; + background-color: #1e1e1e; + display: block; + max-width: 100%; +} + +/* Toolbar Container */ +.border { + background: #1e1e1e; + padding: 10px; + display: flex; + align-items: center; + gap: 10px; + border-radius: 8px; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2); +} + +/* Toolbar Buttons */ +button { + background-color: #4CAF50; + color: white; + padding: 10px 16px; + border: none; + border-radius: 6px; + cursor: pointer; + font-size: 14px; + font-weight: 600; + transition: background-color 0.2s ease, transform 0.1s ease; + display: inline-block; +} + +button:hover { + background-color: #45a049; + transform: scale(1.05); +} + +button:active { + background-color: #3e8e41; + transform: scale(0.95); +} + +/* Inputs */ +input diff --git a/style.css b/style.css new file mode 100644 index 0000000..505cb4d --- /dev/null +++ b/style.css @@ -0,0 +1,70 @@ +/* Global Reset */ +* { + box-sizing: border-box; + margin: 0; + padding: 0; + font-family: 'Arial', sans-serif; + scroll-behavior: smooth; +} + +/* Body */ +body { + background-color: #121212; /* Dark mode background */ + color: #E0E0E0; + display: flex; + justify-content: center; + align-items: center; + height: 100vh; + padding: 20px; +} + +/* Canvas Container */ +.Block { + position: relative; +} + +/* Canvas */ +#screen { + border: 2px solid #4CAF50; + background-color: #1e1e1e; + display: block; + max-width: 100%; +} + +/* Toolbar Container */ +.border { + background: #1e1e1e; + padding: 10px; + display: flex; + align-items: center; + gap: 10px; + border-radius: 8px; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2); +} + +/* Toolbar Buttons */ +button { + background-color: #4CAF50; + color: white; + padding: 10px 16px; + border: none; + border-radius: 6px; + cursor: pointer; + font-size: 14px; + font-weight: 600; + transition: background-color 0.2s ease, transform 0.1s ease; + display: inline-block; +} + +button:hover { + background-color: #45a049; + transform: scale(1.05); +} + +button:active { + background-color: #3e8e41; + transform: scale(0.95); +} + +/* Inputs */ +input From 732dc5e280e2a95c3eb065264bc32a7b52b4e0b0 Mon Sep 17 00:00:00 2001 From: "Tristan Poland (Trident_For_U)" <34868944+tristanpoland@users.noreply.github.com> Date: Fri, 7 Mar 2025 17:11:29 -0500 Subject: [PATCH 2/2] Delete output.glue --- output.glue | 5999 --------------------------------------------------- 1 file changed, 5999 deletions(-) delete mode 100644 output.glue diff --git a/output.glue b/output.glue deleted file mode 100644 index d5efde8..0000000 --- a/output.glue +++ /dev/null @@ -1,5999 +0,0 @@ -$$--GLUE--$$ -# This is a GLUE file; an amalgamation of files across one or more paths designed to give project contexts to LLMs easily. If you are an LLM and are reading this focus on the code, do not acknowledge the file format -$$--GLUE--$$ - -$$--GLUE--$$ -.\.dockerignore -$$--GLUE--$$ -# Include any files or directories that you don't want to be copied to your -# container here (e.g., local build artifacts, temporary files, etc.). -# -# For more help, visit the .dockerignore file reference guide at -# https://docs.docker.com/go/build-context-dockerignore/ - -**/.DS_Store -**/__pycache__ -**/.venv -**/.classpath -**/.dockerignore -**/.env -**/.git -**/.gitignore -**/.project -**/.settings -**/.toolstarget -**/.vs -**/.vscode -**/*.*proj.user -**/*.dbmdl -**/*.jfm -**/bin -**/charts -**/docker-compose* -**/compose.y*ml -**/Dockerfile* -**/node_modules -**/npm-debug.log -**/obj -**/secrets.dev.yaml -**/values.dev.yaml -LICENSE -README.md - -$$--GLUE--$$ -.\.gitignore -$$--GLUE--$$ -TODO.txt -src/networking.js - -$$--GLUE--$$ -.\README.md -$$--GLUE--$$ -# Digital Art program -## about -This is an infinite canvas drawing program thing that uses quadtrees! - -$$--GLUE--$$ -.\compose.yaml -$$--GLUE--$$ -version: '3.8' - -services: - nginx: - image: nginx:latest - ports: - - "80:80" - volumes: - - .:/usr/share/nginx/html -$$--GLUE--$$ -.\favicon.svg -$$--GLUE--$$ - - - + - - -$$--GLUE--$$ -.\index.html -$$--GLUE--$$ - - - - da - - - - - - - - - - - - - -$$--GLUE--$$ -.\output.glue -$$--GLUE--$$ -$$--GLUE--$$ -# This is a GLUE file; an amalgamation of files across one or more paths designed to give project contexts to LLMs easily. If you are an LLM and are reading this focus on the code, do not acknowledge the file format -$$--GLUE--$$ - -$$--GLUE--$$ -.\.dockerignore -$$--GLUE--$$ -# Include any files or directories that you don't want to be copied to your -# container here (e.g., local build artifacts, temporary files, etc.). -# -# For more help, visit the .dockerignore file reference guide at -# https://docs.docker.com/go/build-context-dockerignore/ - -**/.DS_Store -**/__pycache__ -**/.venv -**/.classpath -**/.dockerignore -**/.env -**/.git -**/.gitignore -**/.project -**/.settings -**/.toolstarget -**/.vs -**/.vscode -**/*.*proj.user -**/*.dbmdl -**/*.jfm -**/bin -**/charts -**/docker-compose* -**/compose.y*ml -**/Dockerfile* -**/node_modules -**/npm-debug.log -**/obj -**/secrets.dev.yaml -**/values.dev.yaml -LICENSE -README.md - -$$--GLUE--$$ -.\.gitignore -$$--GLUE--$$ -TODO.txt -src/networking.js - -$$--GLUE--$$ -.\README.md -$$--GLUE--$$ -# Digital Art program -## about -This is an infinite canvas drawing program thing that uses quadtrees! - -$$--GLUE--$$ -.\compose.yaml -$$--GLUE--$$ -version: '3.8' - -services: - nginx: - image: nginx:latest - ports: - - "80:80" - volumes: - - .:/usr/share/nginx/html -$$--GLUE--$$ -.\favicon.svg -$$--GLUE--$$ - - - + - - -$$--GLUE--$$ -.\index.html -$$--GLUE--$$ - - - - da - - - - - - - - - - - - - -$$--GLUE--$$ -.\src\brush.js -$$--GLUE--$$ - - -let PixelBrush = (rel) => { - let brush_color = 0xff000000; - let c_os = [0, 0]; - let cursor_path; - let brush_depth = 10; - let tree_dirty = false; - let depth; - - let obj = { -get_tree: () => cursor_path.get_tree(), -set_color: (col) => brush_color = col, -set_scale: (val) => brush_depth = val, -get_surface: () => [cursor_path.get_tree(), cursor_path.get_root()], -dirty: () => tree_dirty, //TODO find a better way? -clean: () => tree_dirty = false, -set_surface: (qtree, node) => cursor_path = QtreePath(qtree, node), -set_pos: (p, dep, zm) => { - depth = dep; - set_path(cursor_path, 1, p, rel ? brush_depth : brush_depth-depth); - c_os = [0, 0]; -}, -update_pos: (p, k) => { - let os = add(smul(rel ? 2**brush_depth : 2**(brush_depth-depth), k), c_os); - let uos = os.map(v => v | 0); - - cursor_path.set_cur(qtree.color(brush_color)); - cursor_path.add(uos.map(BigInt)); - - c_os = sub(os, uos); - tree_dirty = true; -} - }; - - return obj; -} - - -let log = (fn) => (...x) => (console.log(...x), fn(...x)); -let line_sdf = (p, a, b) => { - let pa = sub(p, a), ba = sub(b, a); - - if(ba.every(v => v == 0)) - return length(pa); - - let h = clamp(dot(pa, ba)/dot(ba,ba), 0.0, 1.0); - return length(add(pa, smul(-h, ba))); -}; - -let SdfBrush = (rel = false, sdf = (p1, p2, width) => (p) => line_sdf(p, p1, p2) - width) => { - let c_os = [0, 0]; - let c_pos = [0, 0]; - - let brush_color = 0xff000000; - let brush_depth = 10; - let brush_width = 0.001; - let tree_dirty = false; - - let depth; - let zoom; - let path; - - let obj = { -get_tree: () => path.get_tree(), -set_color: (col) => brush_color = col, -set_scale: (val) => brush_depth = val, -set_width: (val) => brush_width = val, -get_surface: () => [path.get_tree(), path.get_root()], -dirty: () => tree_dirty, //TODO find a better way? -clean: () => tree_dirty = false, -set_surface: (qt, nd) => { - path = QtreePath(qt, nd); -}, -set_pos: (p, dep, zm) => { - depth = dep; - zoom = zm; - c_pos = p; - c_os = [0, 0]; - set_path(path, 1, p, rel ? brush_depth : brush_depth - depth); -}, -update_pos: (p, k) => { - let disp_width = rel ? brush_width * zoom : brush_width; - let max_length = disp_width*4 + length(k); - - let os = add(smul(rel ? 2**brush_depth : 2**(brush_depth-depth), k), c_os); - let uos = os.map(v => v | 0); - - //breaks when depth_bound <= 2 - let depth_bound = (-Math.log2(max_length) | 0); - - - let ps = [c_os, os]; - - - let stack = []; - let de = rel ? brush_depth : brush_depth-depth; - if(depth_bound > 2){ - while(path.get_depth() >= depth_bound){ - let ind = path.cur_ind(); - ps = ps.map(v => smul(0.5, add(v, [!!(ind&1), !!(ind&2)]))); - stack.push(ind); - path.asc(); - } - - - de -= path.get_depth(); - let width = disp_width * 2**(brush_depth-de); - let in_range = (a, b, v) => v > a && v < b; - - let quad = [ - ps[0][0] < 4*width, - ps[0][1] < 4*width - ].map(v => BigInt(v)); - - ps = ps.map(v => smul(0.5, sub(v, quad.map(v => !v)))); - - path.add(smul(-1n, quad)); - - set_tlnode(path, render_sdf( - path.get_tree(), - get_tlnode(path), - de, - sdf(...ps, width), - qtree.color(brush_color) - )); - - path.add(quad); - - }else{ - path.get_root(); - while(path.get_depth()){ - stack.push(path.cur_ind()); - path.asc(); - } - - path.set_cur(render_sdf( - path.get_tree(), - path.get_root(), - de, - sdf(c_pos, p, rel ? brush_width * zoom : brush_width * 2**depth), - qtree.color(brush_color) - )); - } - - while(stack.length) - path.desc(stack.pop()); - - c_os = sub(os, uos); - c_pos = p; - path.add(uos.map(BigInt)); - tree_dirty = true; -} - }; - - return obj; -} - - - - - -let EyeDropper = (cb) => { - let c_os = [0, 0]; - let cursor_path; - let brush_depth = 10; - let tree_dirty = false; - let depth; - - let obj = { -get_tree: () => cursor_path.get_tree(), -set_color: (col) => brush_color = col, -set_scale: (val) => brush_depth = val, -get_surface: () => [cursor_path.get_tree(), cursor_path.get_root()], -dirty: () => tree_dirty, //TODO find a better way? -clean: () => tree_dirty = false, -set_surface: (qtree, node) => cursor_path = QtreePath(qtree, node), -set_pos: (p, dep, zm) => { - depth = dep; - set_path(cursor_path, 1, p, brush_depth); - c_os = [0, 0]; -}, -update_pos: (p, k) => { - let os = add(smul(2**brush_depth, k), c_os); - let uos = os.map(v => v | 0); - - cb(cursor_path.cur()); - cursor_path.add(uos.map(BigInt)); - - c_os = sub(os, uos); - tree_dirty = true; -} - }; - - return obj; -} - - -let fill = (path, c1, color) => { - let stack = []; - - while(path.get_depth() > 0){ - stack.push(path.cur_ind()); - path.asc(); - - if(path.cur().ind != c1.ind){ - path.desc(stack.pop()); - break; - } - } - - path.set_cur(color); - - let queue = [[0n, 1n, 0n], [1n, 0n, 0n], [-1n, 0n, 0n], [0n, -1n]]; - - let pos = [0n, 0n]; - while(queue.length){ - let cur = queue.pop(); - - } -} - -let BucketFill = () => { - let cursor_path; - let brush_color; - let brush_depth = 10; - let tree_dirty = false; - let depth; - - let obj = { -get_tree: () => cursor_path.get_tree(), -set_color: (col) => brush_color = col, -set_scale: (val) => brush_depth = val, -get_surface: () => [cursor_path.get_tree(), cursor_path.get_root()], -dirty: () => tree_dirty, //TODO find a better way? -clean: () => tree_dirty = false, -set_surface: (qtree, node) => cursor_path = QtreePath(qtree, node), -set_pos: (p, dep, zm) => { - depth = dep; -}, -update_pos: (p, k) => { - set_path(cursor_path, 1, p, brush_depth); - fill(cursor_path, cursor_path.cur(), cursor_path.get_tree().color(brush_color)); - - tree_dirty = true; -} - }; - - return obj; -} - - - -$$--GLUE--$$ -.\src\component.js -$$--GLUE--$$ - -/*CPS stuff*/ -let all = (s, ...x) => x.reduce((f, g) => (...x) => f(g(...x)), s); -let id = (x) => x; - -let to_cps = (fn) => (nxt) => (...x) => nxt(fn(...x)); -let un_cps = (fn) => fn(id); - - - - -/*CSS stuff*/ -let gen_sheet = document.createElement("style"); -document.head.appendChild(gen_sheet); -let gen_styles = gen_sheet.sheet; - -let gen_rule = (sel, style) => gen_styles.insertRule(`${sel} { ${Object.entries(style).map(v=>v[0].replace(/([A-Z])/g,"-$1") + ":" + v[1]).join(";")}; } \n`); -let gen_class = (name, style) => gen_rule("." + name, style); - -gen_class("border", { - "border-color": "grey", - "border-style": "solid", - "border-radius": "0.5em", - "border-width": "0.1em", - "padding": "0.45em", - "margin": "0.45em", - "overflow": "visible", - "width": "calc(100% - 2*(0.45em) - 2*(0.1em) - 2*(0.45em))", - "height": "calc(100% - 2*(0.45em) - 2*(0.1em) - 2*(0.45em))" -}); - -gen_class("vpart", { - "display": "flex", - "flex-direction": "column" -}); - -gen_class("hpart", { - "display": "flex", - "flex-direction": "row" -}); - -gen_class("partBlock", { - "flex": "1" -}); - -gen_class("Block", { - "min-height": "100%", - "width": "100%", - "padding": "0", - "margin": "0", - "border": "0" -}); - -gen_rule("body", { - "color": "grey", - "width": "100vw", - "height": "100vh", - "margin": "0", - "padding": "0", - "overflow": "hidden", - "font-size": "12px" -}); - -gen_rule("*", { - "touch-action": "none" -}); - - - -let el = (type) => to_cps(() => document.createElement(type)); - -let Children = (...x) => to_cps((el) => { - el.replaceChildren(...x.filter(v => v != null).map(v => un_cps(v)())); - return el; -}); - -let Style = (style) => to_cps((el) => { - Object.entries(style).forEach(v=>el.style[v[0]] = v[1]) - return el; -}); - -let Class = (cl) => to_cps((el) => { - el.classList.add(cl); - return el; -}); - -let Text = (text) => to_cps((el) => { - el.innerText = text; - return el; -}); - -let Attr = (name, value) => to_cps((el) => { - el[name] = value; - return el; -}); - -let Event = (name, cb) => to_cps((el) => { - el.addEventListener(name, cb); - return el; -}); - - - - - - - - -let col = (...nd) => all( - Block(el("div")), - Children(...nd) -) - -let row = (...nd) => all( - Block(el("div")), - Style({ whiteSpace: "nowrap" }), - Children(...nd.map(v=> - all( - v, - Style({ - display: "inline-block", - whiteSpace: "wrap" - }) - ) - )) -); - -let Overlap = (...nd) => all( - Block(el("div")), - Style({position: "relative"}), - Children(...nd.map(v=> - all( - v, - Style({position: "absolute"})) - ) - ) -); - -let Button = (nd, cb) => all( - nd, - Style({userSelect: "none", cursor: "pointer"}), - Event("click", cb) -); - - -let vpart = (...w) => (...nd) => all( - Block(el("div")), - Class("vpart"), - Children(...nd.map((v,i)=> - w[i] != null - ? Rect(null, w[i])(v) - : all(Block(el("div")), Class("partBlock"), Children(v)) - )) -); - -let hpart = (...w) => (...nd) => all( - Block(el("div")), - Class("hpart"), - - Children(...nd.map((v,i)=> - w[i] != null - ? Rect(w[i], null)(v) - : all(Block(el("div")), Class("partBlock"), Children(v)) - ))); - -let Center = (w, h) => nd => -vpart(null, h, null)( - null, - hpart(null, w, null)( - null, - nd, - null - ), - null -); - -let Body = nd => all( - el("body"), - Children(nd) -); - -let Block = nd => all( - nd, - Class("Block"), -); - -let Rect = (w, h) => nd => all( - Block(el("div")), - Style({ - width: `calc(${w})`, - height: `calc(${h})`, - "min-height": "auto" - }), - Children(nd) -); - -let Scroll = nd => all( - Rect("100%", "100%")(el("div")), - Style({overflow: "auto"}), - Children(nd) -); - -let ScrollX = nd => all( - Rect("100%", "100%")(el("div")), - Style({overflow: "visible", overflowX: "auto"}), - Children(nd) -); - -let ScrollY = nd => all( - Rect("100%", "100%")(el("div")), - Style({overflow: "visible", overflowY: "auto"}), - Children(nd) -); - - - - - - - - - - - -let Border = nd => all( - el("div"), - Class("border"), - Children(nd) -); - -let vresize = nd => all( - Block(el("div")), - Style({ - resize: "vertical", - maxHeight: "100%" - }), - Children(nd) -); - -let hresize = nd => all( - Block(el("div")), - Style({ - resize: "horizontal", - maxWidth: "100%" - }), - Children(nd) -); - - -$$--GLUE--$$ -.\src\graphics.js -$$--GLUE--$$ - -let gl_load_shader = (gl, type, source) => { - let shader = gl.createShader(type); - gl.shaderSource(shader, source); - gl.compileShader(shader); - - if(!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { - console.log(gl.getShaderInfoLog(shader)); - gl.deleteShader(shader); - return null; - } - - return shader; -} - -let gl_init_shader = (gl, vsource, fsource) => { - let vertex_shader = gl_load_shader(gl, gl.VERTEX_SHADER, vsource); - let fragment_shader = gl_load_shader(gl, gl.FRAGMENT_SHADER, fsource); - - let shader_program = gl.createProgram(); - gl.attachShader(shader_program, vertex_shader); - gl.attachShader(shader_program, fragment_shader); - gl.linkProgram(shader_program); - - if(!gl.getProgramParameter(shader_program, gl.LINK_STATUS)) { - console.log(gl.getShaderInfoLog(shader)); - return null; - } - - return shader_program; -} - -let FragmentRenderer = (gl, fsource) => { - let shader_program = gl_init_shader(gl, -` -precision highp float; -attribute vec2 aVertexPosition; - -void main(){ - gl_Position = vec4(aVertexPosition, 0.0, 1.0); -} -`, fsource); - - - let pos_buf = gl.createBuffer(); - let texture = {}; - let uniform = {}; - let textures = 0; - let tex_bufs = []; - - let active_texture; - - let positions = [1, 1, -1, 1, 1, -1, -1, -1]; - - let obj = { -set_active: () => { - gl.useProgram(shader_program); - gl.bindBuffer(gl.ARRAY_BUFFER, pos_buf); - gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW); - gl.bindBuffer(gl.ARRAY_BUFFER, pos_buf); - - let vert_pos = gl.getAttribLocation(shader_program, "aVertexPosition"); - gl.vertexAttribPointer( - vert_pos, - 2, - gl.FLOAT, - false, - 0, - 0 - ); - - gl.enableVertexAttribArray(vert_pos); - - active_texture = null; -}, -draw: () => { - tex_bufs.forEach(v => v.flush()); - gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); -}, -set_uniform: (name, type, value) => { - uniform[name] ??= gl.getUniformLocation(shader_program, name); - - let type_lut = { - "float": (loc, x) => gl.uniform1f(loc, x), - "vec2": (loc, v) => gl.uniform2f(loc, ...v), - "vec3": (loc, v) => gl.uniform3f(loc, ...v), - "vec4": (loc, v) => gl.uniform4f(loc, ...v), - "ivec4": (loc, v) => gl.uniform4i(loc, ...v), - "mat4": (loc, v) => gl.uniformMatrix4fv(loc, false, v), - "int": (loc, x) => gl.uniform1i(loc, x) - }; - - type_lut[type](uniform[name], value); -}, -set_texture: (name, w, h, arr) => { - let tex = texture[name] ?? (texture[name] = { - ind: ++textures, - buf: gl.createTexture() - }); - - tex.res = [w, h]; - - let loc = gl.getUniformLocation(shader_program, name) - - obj.set_uniform(name, "int", tex.ind); - - gl.activeTexture(gl.TEXTURE0 + tex.ind); - gl.bindTexture(gl.TEXTURE_2D, tex.buf); - active_texture = tex; - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, w, h, 0, gl.RGBA, gl.UNSIGNED_BYTE, arr); -}, -set_sub_texture: (name, [x, y], [w, h], arr) => { - if(active_texture != texture[name]){ - gl.bindTexture(gl.TEXTURE_2D, texture[name].buf); - active_texture = texture[name]; - } - gl.texSubImage2D(gl.TEXTURE_2D, 0, x, y, w, h, gl.RGBA, gl.UNSIGNED_BYTE, arr); -}, -set_texture_buf: (name, arr) => { - let num = arr.length/4; - let sr = (Math.log2(num)/2 + 1) | 0; - let [w, h] = [2**sr,(num/2**sr | 0) + !!(num % 2**sr)]; - - obj.set_texture(name, w, h, new Uint8Array(arr.buffer)); - obj.set_uniform(name + "_lt", "int", sr); - obj.set_uniform(name + "_res", "vec2", [w, h]); -}, -write_buf: (name, start, arr) => { - let [w, h] = texture[name].res; - - let tl = [start % w, start / w | 0]; - if(start % w != 0){ - let cw = Math.min(w - tl[0], arr.length/4); - obj.set_sub_texture(name, tl, [cw, 1], arr); - tl = [0, tl[1] + 1]; - arr = arr.subarray(cw * 4); - } - - - let ch = arr.length/4/w | 0; - if(ch) - obj.set_sub_texture(name, [tl[0], tl[1]], [w, ch], arr); - - tl = [0, tl[1]+ch]; - arr = arr.subarray(ch * w * 4); - let cw = arr.length/4; - if(cw) - obj.set_sub_texture(name, tl, [cw, 1], arr); -}, -read_buf: (name, start, end) => { - let buf = new Uint8Array(end - start); - let [w, h] = texture[name].res; - - let arr = buf; - - let tl = [start % w, start / w | 0]; - if(start % w != 0){ - let cw = Math.min(w - tl[0], arr.length/4); - obj.read_pixels(name, tl, [cw, 1], arr); - tl = [0, tl[1] + 1]; - arr = arr.subarray(cw * 4); - } - - - let ch = arr.length/4/w | 0; - if(ch) - obj.read_pixels(name, [tl[0], tl[1]], [w, ch], arr); - - tl = [0, tl[1]+ch]; - arr = arr.subarray(ch * w * 4); - let cw = arr.length/4; - if(cw) - obj.read_pixels(name, tl, [cw, 1], arr); - - return buf; -}, -GpuUint8: (name) => { - let w = gl.getParameter(gl.MAX_TEXTURE_SIZE)/4; - rend.set_texture_buf(name, new Uint8Array(w*w*4).fill(0)); - - let buf = DynUint8(w); - let end = 0; - - let arr = new Uint8Array(4); - arr_ind = 0; - - let obj = { -set: (ind, val) => { - if(ind >= end){ - if(ind - end >= 1024) - obj.flush(); - buf.set(ind - end, val); - return val; - } - - arr[arr_ind++] = val; - if(arr_ind == 4){ - arr_ind = 0; - rend.write_buf(name, ind/4 | 0, arr); - } - - return val; -}, -push: (val) => { - if(buf.get_end() >= 1024) - obj.flush(); - buf.push(val); -}, -flush: () => { - if(buf.get_end() != 0){ - rend.write_buf(name, end/4, buf.get_buffer().subarray(0, buf.get_end())); - end += buf.get_end(); - buf = DynUint8(); - } -}, -clear: () => { - buf.clear(); - arr_ind = end = 0; -}, -get_end: () => end + buf.get_end() - } - - tex_bufs.push(obj); - return obj; -} - }; - - return obj; -} - - - -$$--GLUE--$$ -.\src\input.js -$$--GLUE--$$ - -let Pointer = (el, init, ev = init, del = init) => { - let to_point = (v) => ({ - id: v.pointerId, - x: v.offsetX, - y: v.offsetY, - force: v.pressure, - time: v.timeStamp, - buttons: v.buttons - }); - - el.addEventListener("pointerdown", (e) => init(to_point(e))); - el.addEventListener("pointermove", (e) => { - e.getCoalescedEvents /* only works in https */ - ? e.getCoalescedEvents().forEach(v => ev(to_point(v))) - : ev(to_point(e)) - }); - el.addEventListener("pointerup", (e) => del(to_point(e))); - el.addEventListener("pointerleave", (e) => del(to_point(e))); - el.addEventListener("pointerout", (e) => del(to_point(e))); -} - -let Keyboard = (el, down, up) => { - el.addEventListener("keydown", (e) => down(e.keyCode)); - el.addEventListener("keyup", (e) => up(e.keyCode)); -} - - - -let mouse_pan = (el, get_pos, set_pos) => { - let start; - let state, translate, poll; - - translate = (ev) => { - let pos = get_pos(); - set_pos([pos[0] + ev.x - start[0], pos[1] + start[1] - ev.y]); - start = [ev.x, ev.y]; - - if(ev.buttons != 4){ - state = poll; - } - }; - - poll = (ev) => { - if(ev.buttons == 4){ - start = [ev.x, ev.y]; - state = translate; - } - }; - - state = poll; - return Pointer(el, (ev) => state(ev)); -} - - -let mouse_wheel = (el, cb) => { - el.addEventListener("wheel", (e) => cb([e.clientX, e.clientY], 2*Math.atan(e.deltaY)/Math.PI), {passive: true}); -} - - - - - - - - -let touch_pan = (el, get_pos, set_pos) => { - let pointers = {}; - let start; - let state, translate, poll; - - let get_points = () => Object.entries(pointers).map(v => v[1]); - let get_avg_pos = () => ((points) => points.reduce((a, b) => [a[0] + b[0], a[1] + b[1]]).map(v => v / points.length)) - (get_points()); - - translate = (ev) => { - pointers[ev.id] = [ev.x, ev.y]; - - let pos = get_pos(); - let avg_pos = get_avg_pos(); - set_pos([pos[0] + avg_pos[0] - start[0], pos[1] + start[1] - avg_pos[1]]); - start = avg_pos; - - }; - - poll = (ev) => {}; - - let add_pointer = (ev) => { - pointers[ev.id] = [ev.x, ev.y]; - - if(Object.keys(pointers).length == 2){ - start = get_avg_pos(); - state = translate; - }else{ - state = poll; - } - }; - - let del_pointer = (ev) => { - delete pointers[ev.id]; - - if(Object.keys(pointers).length != 2) - state = poll; - }; - - state = poll; - return Pointer(el, add_pointer, (ev) => state(ev), del_pointer); -} - -let touch_pinch = (el, cb) => { //TODO figure out how to fix paning while pinching :/ - let pointers = {}; - let start; - let state, translate, poll; - - let get_points = () => Object.entries(pointers).map(v => v[1]); - let get_avg_pos = () => ((points) => points.reduce((a, b) => [a[0] + b[0], a[1] + b[1]]).map(v => v / points.length)) - (get_points()); - let dist = (a, b) => { - let v = [a[0] - b[0], a[1] - b[1]]; - return (v[0]*v[0] + v[1]*v[1])**0.5; - } - - translate = (ev) => { - pointers[ev.id] = [ev.x, ev.y]; - - let n_dist = dist(...get_points()); - - let pinch = Math.sign((start - n_dist)/7 | 0); //TODO dynamically find value - - if(pinch){ - cb(get_avg_pos(), Math.sign(pinch | 0)) - start = n_dist; - } - - }; - - poll = (ev) => {}; - - let add_pointer = (ev) => { - pointers[ev.id] = [ev.x, ev.y]; - - if(Object.keys(pointers).length == 2){ - start = dist(...get_points()); - state = translate; - }else{ - state = poll; - } - }; - - let del_pointer = (ev) => { - delete pointers[ev.id]; - - if(Object.keys(pointers).length != 2) - state = poll; - }; - - state = poll; - return Pointer(el, add_pointer, (ev) => state(ev), del_pointer); -} - - - - -let pointer_drag = (el, st, cb) => { - let start; - let state, drag, poll; - let pointers = {}; - - drag = (ev) => { - if(length(sub(start, [ev.x, ev.y])) > 2){ - cb([ev.x, ev.y], [ev.x - start[0], ev.y - start[1]]); - start = [ev.x, ev.y]; - } - }; - - poll = (ev) => {}; - - let add_pointer = (ev) => { - pointers[ev.id] = [ev.x, ev.y]; - - if(Object.keys(pointers).length == 1 && ev.buttons == 1){ - start = pointers[ev.id]; - st(start); - state = drag; - }else{ - state = poll; - } - }; - - let del_pointer = (ev) => { - delete pointers[ev.id]; - - if(Object.keys(pointers).length != 1) - state = poll; - }; - - - state = poll; - return Pointer(el, add_pointer, (ev) => state(ev), del_pointer); -} - - - - -$$--GLUE--$$ -.\src\qtree.js -$$--GLUE--$$ - -let DynUint8 = (sz = 256*4) => { - let buffer = new Uint8Array(sz); //TODO may fail - let end = 0; - - let obj = { -get_buffer: () => buffer, -get: (ind) => buffer[ind], -set: (ind, val) => { - if(ind >= buffer.length){ - let v = 1; - while(ind >= buffer.length * v) v *= 2; - let old = buffer; - buffer = new Uint8Array(buffer.length * v); - buffer.set(old); - } - - return buffer[ind] = val; -}, -push: (val) => obj.set(end++, val), -pop: (val) => obj.get(--end), -get_end: () => end, -set_end: (ind) => end = ind, -clear: () => end = 0, - } - - return obj; -} - - -let Uint32Arr = (u8buf) => { - let obj = { -get_buffer: () => u8buf, -set: (ind, num) => { - ind *= 4; - u8buf.set(ind++, (num >> 0) & 0xff); - u8buf.set(ind++, (num >> 8) & 0xff); - u8buf.set(ind++, (num >> 16) & 0xff); - u8buf.set(ind++, (num >> 24) & 0xff); -}, -push: (num) => { - u8buf.push((num >> 0) & 0xff); - u8buf.push((num >> 8) & 0xff); - u8buf.push((num >> 16) & 0xff); - u8buf.push((num >> 24) & 0xff); -}, -get: (ind) => { - let num = 0; - ind *= 4; - num += u8buf.get(ind++) << 0; - num += u8buf.get(ind++) << 8; - num += u8buf.get(ind++) << 16; - num += u8buf.get(ind++) << 24; - return num; -}, -pop: () => { - let ret = obj.get(obj.get_end()-1) - obj.set_end(obj.get_end()-1); - return ret; -}, -get_end: () => u8buf.get_end() / 4, -set_end: (ind) => u8buf.set_end(ind * 4), -clear: () => u8buf.clear() - }; - - return obj; -} - - -let LinearQtree = (buffer = Uint32Arr(DynUint8())) => { - let ab, col_ab, memo, col_memo; - //let col_memo = new Map(); //?? - //let memo = new Map(); - //let buffer = new Uint8Array(256 * 4); - - let obj = { -node_at: (ind) => { - let node = { - ind, - get_node: (i) => obj.node_at(buffer.get(ind * 5 + 1 + i)), - get_tag: () => buffer.get(ind * 5), - set_tag: (t) => buffer.set(ind * 5, t), - set_node: (i, nd) => buffer.set(ind * 5 + i + 1, nd.ind), - }; - - return node; -}, - -add_node: (t, ...nodes) => { - let vals = [t, ...nodes.map(v => v?.ind)]; - let my_ind = buffer.get_end()/5; - - while(vals.length != 5) - vals.push(my_ind); - - vals.map(buffer.push); - return obj.node_at(my_ind); -}, -color: (t) => { - let node = obj.add_node(t); - - let free = false; - col_memo = col_ab.insert(col_memo, node.ind, (ind) => { - buffer.set_end(buffer.get_end() - 5); - free = true; - node = obj.node_at(ind); - }); - - memo = ab.insert(memo, node.ind, (ind) => { - if(!free) - buffer.set_end(buffer.get_end() - 5); - node = obj.node_at(ind); - }); - - return node; -}, -node: (...nodes) => { - let t = avg_color(nodes.map(v => v.get_tag())); - let node = obj.add_node(t, ...nodes); - - memo = ab.insert(memo, node.ind, (ind) => { - buffer.set_end(buffer.get_end() - 5); - node = obj.node_at(ind); - }); - - - return node; -}, - -get_buffer: () => buffer, -get_memo: () => [ab, col_ab, memo, col_memo], -get_size: () => buffer.get_end()/5 - }; - - let node_eq = (a, b) => { - for(let i = 0; i < 4; i++) - if(obj.node_at(a).get_node(i).ind != obj.node_at(b).get_node(i).ind) - return false; - - return true; - } - - let node_cmp = (a, b) => { - for(let i = 0; i < 4; i++) - if(obj.node_at(a).get_node(i).ind < obj.node_at(b).get_node(i).ind) - return true; - - return false; - } - - ab = _24_tree(Uint32Arr(DynUint8()), - node_cmp, - node_eq - ); - - col_ab = _24_tree(Uint32Arr(DynUint8()), - (a, b) => obj.node_at(a).get_tag() < obj.node_at(b).get_tag(), - (a, b) => obj.node_at(a).get_tag() == obj.node_at(b).get_tag() - ); - memo = ab.node_at(0); - col_memo = col_ab.node_at(0); - - - return obj; -} - - - - - - - - - - - -let avg_color = (cols) => { - let add = (a, b) => a.map((v, i) => v + b[i]); - return cols.map(v => [ - (v >> 24) & 0xff, - (v >> 16) & 0xff, - (v >> 8) & 0xff, - (v >> 0) & 0xff - ]) - .reduce(add) - .map(v => (v/cols.length | 0) % 256) - .reduce((a, b) => a*256 + b, 0); -} - -let set_node = (qtree, node, ind, val) => { - let nodes = Array(4).fill().map((v, i) => node.get_node(i)); - nodes[ind] = val; - return qtree.node(...nodes); -} - -let render_sdf = (qtree, node, depth, sdf, fill) => { - let render_ = (node, orig, unit, depth) => { - unit = unit * 0.5; - - let dist = sdf(orig); - let target = 2**0.5 * unit; - - if(fill.ind == node.ind || dist < -target || depth <= 0) - return fill; - - if(dist < target){ - let hu = unit * 0.5; - return qtree.node( - render_(node.get_node(0), add([-hu, -hu], orig), unit, depth-1), - render_(node.get_node(1), add([hu, -hu], orig), unit, depth-1), - render_(node.get_node(2), add([-hu, hu], orig), unit, depth-1), - render_(node.get_node(3), add([hu, hu], orig), unit, depth-1) - ); - } - - return node; - }; - - return render_(node, [0, 0], 1, depth); -} - -//slower -let render_sdf_fn = (qtree, node, depth, sdf, color) => { - let render_ = (node, orig, unit, depth) => { - unit = unit/2; - - let dist = sdf(orig); - let target = 2**0.5 * unit; - - if(depth <= 0) - return color(orig, node); - - if(dist < target){ - let nodes = Array(4).fill().map((v, i) => node.get_node(i)); - return qtree.node( - ...nodes - .map((v, i) => render_(v, add(smul(unit, [!!(i & 1) - 0.5, 0.5 - !!(i & 2)]), orig), unit, depth-1)) - ); - } - - return node; - }; - - return render_(node, [0, 0], 1, depth); -} - - - - - - - - - - - - - - - - - - -//TODO make this less fucky -let QtreeMirror = (q1, q2) => { - let seen = new Map(); - - let obj = { -get_main: () => q1, -get_seen: () => seen, -mirror: (node) => { - if(seen.has(node.ind)) - return q2.node_at(seen.get(node.ind)); - - let nd = q2.add_node(node.get_tag()); - seen.set(node.ind, nd.ind); - return nd; -}, -full_mirror: (node) => { - let nodes = Array(4).fill().map((v, i) => node.get_node(i)); - let mnd = obj.mirror(node); - - nodes.forEach((v, i) => { - if(!seen.has(v.ind)) - mnd.set_node(i, obj.full_mirror(v)); - else - mnd.set_node(i, obj.mirror(v)); - }); - - return mnd; -}, -node_at: (ind) => { - let nd = q1.node_at(ind); - let mnd = obj.mirror(nd); - - let node = { - ind: nd.ind, - get_node: (i) => { - let n = nd.get_node(i); - if(!seen.has(n.ind)){ - for(let i = 0; i < 4; i++) - mnd.set_node(i, obj.mirror(nd.get_node(i))); - }else{ - mnd.set_node(i, obj.mirror(n)); - } - - return obj.node_at(n.ind); - }, - get_tag: nd.get_tag, - set_tag: (t) => (mnd.set_tag(t), nd.set_tag(t)), - set_node: (i, n) => { - nd.set_node(i, n); - for(let i = 0; i < 4; i++) - mnd.set_node(i, obj.mirror(nd.get_node(i))); - } - }; - - return node; -}, -add_node: (t, ...nodes) => { - let nd = q1.add_node(t, ...nodes); - - let n2 = q2.add_node(t, ...nodes.map(obj.mirror)); - seen.set(nd.ind, n2.ind); - - return obj.node_at(nd.ind); -}, -node: (...nodes) => { - let nd = q1.node(...nodes); - obj.full_mirror(nd) - return obj.node_at(nd.ind); -}, -color: (t) => { - let nd = q1.color(t); - obj.mirror(nd); - return obj.node_at(nd.ind); -} - - }; - - return obj; -} - - - - - - - - -/* -let LazyQtree = (qtree) => { - let lazy = new Map(); - - let obj = { -node_at: (ind) => { - if(lazy.has(ind)) - return lazy.get(ind); - - return qtree.node_at(ind); -}, -add_node: qtree.add_node, -node: qtree.node, -color: qtree.color, -lazy_node: (col_guess, fn) => { - let my_ind = qtree.get_size(); - - //TODO breaks uniqueness ... - let node = { - ind: my_ind, - get_node: (i) => { - let nd = fn(obj); - console.log(nd); - lazy.set(my_ind, nd); - - node.ind = nd.ind; - node.get_node = nd.get_node; - node.get_tag = nd.get_tag; - node.set_tag = nd.set_tag; - node.set_node = nd.set_node; - - return nd.get_node(i); - }, - get_tag: () => col_guess, - set_tag: () => null, - set_node: () => null - }; - - lazy.set(my_ind, node); - return node; -} - }; - - return obj; -} -*/ - - - - - - -let QtreePath = (qtree, node) => { - let path = [[node, null]]; - - let obj = { -copy: () => { - let cp = QtreePath(qtree, obj.get_root()); - - for(let i = 1; i < path.length; i++) - cp.desc(path[i][1]); - - return cp; -}, -cur: () => path.at(-1)[0], -set_cur: (val) => path.at(-1)[0] = val, -cur_ind: () => path.at(-1)[1], -get_tree: () => qtree, -get_depth: () => path.length-1, -desc: (ind) => path.push([obj.cur().get_node(ind), ind]), -asc: (hint = 0) => { - let [n1, ind] = path.pop(); - if(path.length == 0){ - path.push([qtree.color(0xffffffff), null]); - ind = hint; - } - - obj.set_cur(set_node(qtree, obj.cur(), ind, n1)); - return [n1, ind]; -}, -set_path: ([px, py], depth) => { - /* stack limit bites */ - path = [[obj.get_root(), null]]; - while(depth != 0){ - depth--; - let ind = !!(px & (1n << depth)) + 2*!!(py & (1n << depth)); - obj.desc(ind); - } - - return obj.cur(); -}, -add: ([x, y]) => { - let stack = []; - - while(x || y){ - let [node, ind] = obj.asc((x < 0) + 2*(y < 0)); - - let os = !!(x & 1n) + 2*!!(y & 1n); - stack.push(ind ^ os); - - x >>= 1n; - y >>= 1n; - - x += BigInt(!!(os & ind & 1)); - y += BigInt(!!(os & ind & 2)); - } - - while(stack.length) - obj.desc(stack.pop()); - - return obj.cur(); -}, -get_root: () => { - if(path == null || path.length == 0) - return null; - for(let i = path.length-1; i--;) - path[i][0] = set_node(qtree, path[i][0], path[i+1][1], path[i+1][0]); - - return path[0][0]; -}, - } - - return obj; -} - -let set_path = (path, unit, p, depth) => { - let orig = [0, 0]; - - path.set_path([0n, 0n], 0n); - - for(let i = 0; i < depth; i++){ - let quad = [p[0] > orig[0], p[1] > orig[1]]; - - path.desc(quad[0] + 2*quad[1]); - - unit /= 2; - orig = add(smul(unit, [quad[0]-0.5, quad[1]-0.5]), orig); - } - - return path; -} - - - - - - - - - - - - - - - - - - - - - - - - - - -let index_heap = (buffer, is_lt) => { - let obj = { -get_buffer: () => buffer, -insert: (ind) => { - let buf_pos = buffer.get_end(); - buffer.push(ind); - obj.sift_down(buf_pos); -}, -extract_min: () => { - let ret = buffer.get(0); - buffer.set(0, buffer.pop()); - obj.sift_up(0); - return ret; -}, -cas: (a, b) => { - let a_val = buffer.get(a); - let b_val = buffer.get(b); - - if(is_lt(a_val, b_val)) - return false; - - buffer.set(b, a_val); - buffer.set(a, b_val); - return true; -}, -sift_up: (ind) => { - let l_ind = (ind + 1) * 2 - 1 - let r_ind = l_ind + 1; - - if(l_ind >= buffer.get_end()) - return; - - let take = l_ind; - if(r_ind < buffer.get_end()){ - if(is_lt(buffer.get(r_ind), buffer.get(l_ind))) - take = r_ind; - } - - if(obj.cas(ind, take)) - obj.sift_up(take); -}, -sift_down: (ind) => { - if(ind == 0) - return; - - let p_ind = ((ind + 1) / 2 | 0) - 1; - - if(obj.cas(p_ind, ind)) - obj.sift_down(p_ind); -}, -is_empty: () => buffer.get_end() == 0 - }; - - return obj; -} - - - - -let Arena = (buffer, alloc_size) => { - let heap = index_heap(DynUint8()); - - let obj = { -alloc: () => { - if(heap.is_empty()){ - let ind = buffer.get_end(); - buffer.set_end(buffer.get_end() + alloc_size); - return ind; - } - - let ind = heap.extract_min(); - return ind; -}, -free: (ind) => heap.insert(ind) - }; - - return obj; -} - - - - - - -let _24_tree = (buffer, is_lt, is_eq) => { - let arena = Arena(buffer.get_buffer(), 8 * 4); - - let obj = { -node_at: (ind) => { - let node = { - ind, - size: () => buffer.get(ind), - get_size: () => buffer.get(ind), - set_size: (val) => buffer.set(ind, val), - get_key: (i) => buffer.get(ind + 1 + i), - set_key: (i, key) => buffer.set(ind + 1 + i, key), - get_node: (i) => obj.node_at(buffer.get(ind + 4 + i)), - set_node: (i, node) => buffer.set(ind + 4 + i, node.ind), - }; - - return node; -}, -add_node: (keys, nodes) => { - let node = obj.node_at(arena.alloc()); - node.set_size(Math.max(keys.length + 1, nodes.length)); - keys.forEach((v, i) => node.set_key(i, v)); - nodes.forEach((v, i) => node.set_node(i, v)); - return node; -}, -search: (node, key) => { - if(node.ind == 0) - return null; - - let i = 0; - for(; i < node.get_size() - 1; i++){ - let cur_key = node.get_key(i); - if(is_eq(key, cur_key)) - return cur_key; - - if(is_lt(key, cur_key)) - break; - } - - return obj.search(node.get_node(i), key); -}, -node_split: (keys, nodes, ind) => { - let l_keys = keys.slice(0, ind); - let m_key = keys[ind]; - let r_keys = keys.slice(ind+1); - - let l_nodes = nodes.slice(0, ind+1); - let r_nodes = nodes.slice(ind+1); - - return [ - m_key, - obj.add_node(l_keys, l_nodes), - obj.add_node(r_keys, r_nodes) - ]; -}, -node_insert: (node, ind, key, repl) => { - let keys = Array(node.get_size() - 1).fill().map((v, i) => node.get_key(i)); - let nodes = Array(node.get_size()).fill().map((v, i) => node.get_node(i)); - - let new_keys = [...keys.slice(0, ind), key, ...keys.slice(ind)]; - let new_nodes = [...nodes.slice(0, ind), ...repl, ...nodes.slice(ind + 1)]; - - if(new_keys.length > 3) - return obj.node_split(new_keys, new_nodes, 2); - - new_keys.forEach((v, i) => node.set_key(i, v)); //kinda gross, but constant cost... - new_nodes.forEach((v, i) => node.set_node(i, v)); - node.set_size(new_nodes.length); - - return [node]; -}, -insert_: (node, key, fn) => { - if(node.ind == 0) - return [key, obj.node_at(0), obj.node_at(0)]; - - let i = 0; - for(; i < node.get_size() - 1; i++){ - let cur_key = node.get_key(i); - if(is_eq(key, cur_key)){ - fn(cur_key); - return [node]; - } - - if(is_lt(key, cur_key)) - break; - } - - let next_node = i; - let next = obj.insert_(node.get_node(next_node), key, fn); - if(next.length == 1){ - node.set_node(next_node, next[0]); - return [node]; - } - - return obj.node_insert(node, next_node, next[0], [next[1], next[2]]); -}, -insert: (node, key, fn = () => null) => { - let next = obj.insert_(node, key, fn); - if(next.length == 1) - return next[0]; - return obj.add_node([next[0]], [next[1], next[2]]); -}, -to_json: (node) => { - if(node.ind == 0) - return {}; - - let keys = Array(node.get_size() - 1).fill().map((v, i) => node.get_key(i)); - let nodes = Array(node.get_size()).fill().map((v, i) => node.get_node(i)).map(obj.to_json); - - return {keys, nodes}; -} - }; - - root = obj.node_at(arena.alloc()); - - return obj; -}; - - - - - - - - - - - -$$--GLUE--$$ -.\src\tree_shader.glsl -$$--GLUE--$$ -precision highp float; -precision highp int; - -uniform vec2 res; - -uniform sampler2D tex; -uniform vec2 tex_res; -uniform int tex_lt; - - -uniform vec2 center; -uniform ivec4 node; -uniform int depth; -uniform float unit; - -uniform int debug; - -uniform mat4 transform; - -/* 32bit int emulation */ -ivec2 moddiv(int a, int b){ - int div = a / b, mod = a - div * b; - return ivec2(mod, div); -} - -ivec4 carry_prop(ivec4 a){ - ivec2 v; - - v = moddiv(a.r, 256); - a.r = v.x; - v = moddiv(a.g + v.y, 256); - a.g = v.x; - v = moddiv(a.b + v.y, 256); - a.b = v.x; - v = moddiv(a.a + v.y, 256); - a.a = v.x; - - return a; -} - -ivec4 rshift8(ivec4 a){return ivec4(a.g, a.b, a.a, 0);} - -ivec4 rshift07(ivec4 a, int b){ - int v = int(float(a.r) * pow(0.5, float(b))); - a = carry_prop(rshift8(a)*int(pow(2.0,float(8-b)))); - a.r = a.r + v; - return a; -} - -ivec4 rshift(ivec4 a, int b){ - ivec2 mul = moddiv(b, 7); - for(int i = 0; i < 8; i++){ - if(mul.y - i == 0) - break; - a = rshift07(a, 7); - } - - return rshift07(a, mul.x); -} - -ivec4 lshift(ivec4 a, int b){ - ivec2 mul = moddiv(b, 7); - for(int i = 0; i < 8; i++){ - if(mul.y - i == 0) - break; - a = carry_prop(a*int(pow(2.0, 7.0))); - } - - return carry_prop(a*int(pow(2.0, float(mul.x)))); -} - - - -vec4 col_at(ivec4 ind){ - ivec4 v2 = rshift(ind, tex_lt); - ivec4 v1 = ind - lshift(v2, tex_lt); - - vec2 tc = (vec2(v1.r + 256*v1.g, v2.r + 256*v2.g) + vec2(0.5)) / tex_res; - return texture2D(tex, tc); -} - -ivec4 vec4tonum(vec4 val){ - - -/* - //UNSIGNED_SHORT_4_4_4_4 - ivec4 val = ivec4(15.0*val + 0.5) - return ivec4(val.r + 16*val.g, val.b + 16*val.a, 0, 0); -*/ - - -/* - UNSIGNED_SHORT_5_6_5 - ivec4 val = ivec4(31.0*val.r + 0.5, 63.0*val.g + 0.5, 31.0*val.b + 0.5, 0.0); - return carry_prop(ivec4(val.r + 32*val.g, 8*val.g, 0, 0)); -*/ - - //RGBA - return ivec4(255.0*val + 0.5); -} -ivec4 num_at(ivec4 ind){ -/* - //UNSIGNED_SHORT_4_4_4_4 - ind = lshift(ind, 1); - return vec4tonum(col_at(ind + ivec4(0, 0, 0, 0)) + - lshift(vec4tonum(col_at(ind + ivec4(1, 0, 0, 0)), 16); -*/ - - //RBGA - return vec4tonum(col_at(ind)); -} - - - -void main(){ - vec2 pos = (transform * vec4(gl_FragCoord.xy, 0.0, 1.0)).xy; - vec2 orig = center; - - ivec4 ind = node; - float width = unit; - - if(debug == 1 && gl_FragCoord.x < center.x){ - vec2 p = gl_FragCoord.xy/res; - p.x = p.x * 2.0; - p.y = 1.0 - p.y; - - gl_FragColor = texture2D(tex, p); - gl_FragColor.a = 1.0; - return; - } -/* - else{ - vec2 p = gl_FragCoord.xy; - - if(p.y > tex_res.x * tex_res.y) - discard; - ivec4 ind = carry_prop(ivec4(p.y, 0, 0, 0)); - - gl_FragColor = col_at(ind); - gl_FragColor.a = 1.0; - return; - } - */ - - - for(int i = 0; i < 16; i++){ - if(i >= depth) - break; - - vec2 quad = vec2(pos.x > orig.x, pos.y < orig.y); - ind = ind * 5; - ind.r = ind.r + 1 + int(quad.x + 2.0*quad.y); - ind = num_at(carry_prop(ind)); - - width = width / 2.0; - orig = vec2(quad.x-0.5, 0.5-quad.y)*width + orig; - } - - gl_FragColor = col_at(carry_prop(ind*5)); -} - -$$--GLUE--$$ -.\style.css -$$--GLUE--$$ -/* Global Reset */ -* { - box-sizing: border-box; - margin: 0; - padding: 0; - font-family: 'Arial', sans-serif; - scroll-behavior: smooth; -} - -/* Body */ -body { - background-color: #121212; /* Dark mode background */ - color: #E0E0E0; - display: flex; - justify-content: center; - align-items: center; - height: 100vh; - padding: 20px; -} - -/* Canvas Container */ -.Block { - position: relative; -} - -/* Canvas */ -#screen { - border: 2px solid #4CAF50; - background-color: #1e1e1e; - display: block; - max-width: 100%; -} - -/* Toolbar Container */ -.border { - background: #1e1e1e; - padding: 10px; - display: flex; - align-items: center; - gap: 10px; - border-radius: 8px; - box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2); -} - -/* Toolbar Buttons */ -button { - background-color: #4CAF50; - color: white; - padding: 10px 16px; - border: none; - border-radius: 6px; - cursor: pointer; - font-size: 14px; - font-weight: 600; - transition: background-color 0.2s ease, transform 0.1s ease; - display: inline-block; -} - -button:hover { - background-color: #45a049; - transform: scale(1.05); -} - -button:active { - background-color: #3e8e41; - transform: scale(0.95); -} - -/* Inputs */ -input - -$$--GLUE--$$ -.\tailwind.js -$$--GLUE--$$ -"use strict";(()=>{var $t="4.0.12";var ke=92,Ke=47,Pe=42,oo=34,no=39,io=58,Ue=59,le=10,we=32,_e=9,Tt=123,tt=125,nt=40,Vt=41,lo=91,ao=93,Et=45,rt=64,so=33;function pe(t){t[0]==="\uFEFF"&&(t=t.slice(1)),t=t.replaceAll(`\r -`,` -`);let r=[],o=[],e=[],n=null,s=null,l="",p="",c;for(let d=0;d0&&t[b]===g[g.length-1]&&(g=g.slice(0,-1));let y=ot(l,v);if(!y)throw new Error("Invalid custom property, expected a value");n?n.nodes.push(y):r.push(y),l=""}else if(u===Ue&&l.charCodeAt(0)===rt)s=xe(l),n?n.nodes.push(s):r.push(s),l="",s=null;else if(u===Ue&&p[p.length-1]!==")"){let g=ot(l);if(!g)throw l.length===0?new Error("Unexpected semicolon"):new Error(`Invalid declaration: \`${l.trim()}\``);n?n.nodes.push(g):r.push(g),l=""}else if(u===Tt&&p[p.length-1]!==")")p+="}",s=M(l.trim()),n&&n.nodes.push(s),e.push(n),n=s,l="",s=null;else if(u===tt&&p[p.length-1]!==")"){if(p==="")throw new Error("Missing opening {");if(p=p.slice(0,-1),l.length>0)if(l.charCodeAt(0)===rt)s=xe(l),n?n.nodes.push(s):r.push(s),l="",s=null;else{let m=l.indexOf(":");if(n){let v=ot(l,m);if(!v)throw new Error(`Invalid declaration: \`${l.trim()}\``);n.nodes.push(v)}}let g=e.pop()??null;g===null&&n&&r.push(n),n=g,l="",s=null}else if(u===nt)p+=")",l+="(";else if(u===Vt){if(p[p.length-1]!==")")throw new Error("Missing opening (");p=p.slice(0,-1),l+=")"}else{if(l.length===0&&(u===we||u===le||u===_e))continue;l+=String.fromCharCode(u)}}}if(l.charCodeAt(0)===rt&&r.push(xe(l)),p.length>0&&n){if(n.kind==="rule")throw new Error(`Missing closing } at ${n.selector}`);if(n.kind==="at-rule")throw new Error(`Missing closing } at ${n.name} ${n.params}`)}return o.length>0?o.concat(r):r}function xe(t,r=[]){for(let o=5;o=1&&n<=31||n===127||e===0&&n>=48&&n<=57||e===1&&n>=48&&n<=57&&l===45){s+="\\"+n.toString(16)+" ";continue}if(n>=128||n===45||n===95||n>=48&&n<=57||n>=65&&n<=90||n>=97&&n<=122){s+=r.charAt(e);continue}s+="\\"+r.charAt(e)}return s}function ae(t){return t.replace(/\\([\dA-Fa-f]{1,6}[\t\n\f\r ]?|[\S\s])/g,r=>r.length>2?String.fromCodePoint(Number.parseInt(r.slice(1).trim(),16)):r[1])}var Ot=new Map([["--font",["--font-weight","--font-size"]],["--inset",["--inset-shadow","--inset-ring"]],["--text",["--text-color","--text-underline-offset","--text-indent","--text-decoration-thickness","--text-decoration-color"]]]);function Rt(t,r){return(Ot.get(r)??[]).some(o=>t===o||t.startsWith(`${o}-`))}var ze=class{constructor(r=new Map,o=new Set([])){this.values=r;this.keyframes=o}prefix=null;add(r,o,e=0){if(r.endsWith("-*")){if(o!=="initial")throw new Error(`Invalid theme value \`${o}\` for namespace \`${r}\``);r==="--*"?this.values.clear():this.clearNamespace(r.slice(0,-2),0)}if(e&4){let n=this.values.get(r);if(n&&!(n.options&4))return}o==="initial"?this.values.delete(r):this.values.set(r,{value:o,options:e})}keysInNamespaces(r){let o=[];for(let e of r){let n=`${e}-`;for(let s of this.values.keys())s.startsWith(n)&&s.indexOf("--",2)===-1&&(Rt(s,e)||o.push(s.slice(n.length)))}return o}get(r){for(let o of r){let e=this.values.get(o);if(e)return e.value}return null}hasDefault(r){return(this.getOptions(r)&4)===4}getOptions(r){return r=ae(this.#r(r)),this.values.get(r)?.options??0}entries(){return this.prefix?Array.from(this.values,r=>(r[0]=this.prefixKey(r[0]),r)):this.values.entries()}prefixKey(r){return this.prefix?`--${this.prefix}-${r.slice(2)}`:r}#r(r){return this.prefix?`--${r.slice(3+this.prefix.length)}`:r}clearNamespace(r,o){let e=Ot.get(r)??[];e:for(let n of this.values.keys())if(n.startsWith(r)){if(o!==0&&(this.getOptions(n)&o)!==o)continue;for(let s of e)if(n.startsWith(s))continue e;this.values.delete(n)}}#e(r,o){for(let e of o){let n=r!==null?`${e}-${r}`:e;if(!this.values.has(n))if(r!==null&&r.includes(".")){if(n=`${e}-${r.replaceAll(".","_")}`,!this.values.has(n))continue}else continue;if(!Rt(n,e))return n}return null}#t(r){let o=this.values.get(r);if(!o)return null;let e=null;return o.options&2&&(e=o.value),`var(${re(this.prefixKey(r))}${e?`, ${e}`:""})`}markUsedVariable(r){let o=ae(this.#r(r)),e=this.values.get(o);e&&(e.options|=16)}resolve(r,o){let e=this.#e(r,o);if(!e)return null;let n=this.values.get(e);return n.options&1?n.value:this.#t(e)}resolveValue(r,o){let e=this.#e(r,o);return e?this.values.get(e).value:null}resolveWith(r,o,e=[]){let n=this.#e(r,o);if(!n)return null;let s={};for(let p of e){let c=`${n}${p}`,d=this.values.get(c);d&&(d.options&1?s[p]=d.value:s[p]=this.#t(c))}let l=this.values.get(n);return l.options&1?[l.value,s]:[this.#t(n),s]}namespace(r){let o=new Map,e=`${r}-`;for(let[n,s]of this.values)n===r?o.set(null,s.value):n.startsWith(`${e}-`)?o.set(n.slice(r.length),s.value):n.startsWith(e)&&o.set(n.slice(e.length),s.value);return o}addKeyframes(r){this.keyframes.add(r)}getKeyframes(){return Array.from(this.keyframes)}};var j=class extends Map{constructor(o){super();this.factory=o}get(o){let e=super.get(o);return e===void 0&&(e=this.factory(o,this),this.set(o,e)),e}};function lt(t){return{kind:"word",value:t}}function uo(t,r){return{kind:"function",value:t,nodes:r}}function co(t){return{kind:"separator",value:t}}function ee(t,r,o=null){for(let e=0;e0){let g=lt(n);e?e.nodes.push(g):r.push(g),n=""}let c=l,d=l+1;for(;d0){let d=lt(n);c.nodes.push(d),n=""}o.length>0?e=o[o.length-1]:e=null;break}default:n+=String.fromCharCode(p)}}return n.length>0&&r.push(lt(n)),r}function Fe(t){let r=[];return ee(L(t),o=>{if(!(o.kind!=="function"||o.value!=="var"))return ee(o.nodes,e=>{e.kind!=="word"||e.value[0]!=="-"||e.value[1]!=="-"||r.push(e.value)}),1}),r}var bo=64;function z(t,r=[]){return{kind:"rule",selector:t,nodes:r}}function U(t,r="",o=[]){return{kind:"at-rule",name:t,params:r,nodes:o}}function M(t,r=[]){return t.charCodeAt(0)===bo?xe(t,r):z(t,r)}function a(t,r,o=!1){return{kind:"declaration",property:t,value:r,important:o}}function De(t){return{kind:"comment",value:t}}function Q(t,r){return{kind:"context",context:t,nodes:r}}function D(t){return{kind:"at-root",nodes:t}}function _(t,r,o=[],e={}){for(let n=0;nnew Set),s=new Set,l=new Set,p=new j(()=>new Set);function c(u,g,m={},v=0){if(u.kind==="declaration"){if(u.property==="--tw-sort"||u.value===void 0||u.value===null)return;if(m.theme&&u.property[0]==="-"&&u.property[1]==="-"&&(m.keyframes||n.get(g).add(u)),u.value.includes("var("))if(m.theme&&u.property[0]==="-"&&u.property[1]==="-")for(let y of Fe(u.value))p.get(y).add(u.property);else r.trackUsedVariables(u.value);if(u.property==="animation"){let y=u.value.split(/\s+/);for(let b of y)l.add(b)}g.push(u)}else if(u.kind==="rule")if(u.selector==="&")for(let y of u.nodes){let b=[];c(y,b,m,v+1),b.length>0&&g.push(...b)}else{let y={...u,nodes:[]};for(let b of u.nodes)c(b,y.nodes,m,v+1);y.nodes.length>0&&g.push(y)}else if(u.kind==="at-rule"&&u.name==="@property"&&v===0){if(e.has(u.params))return;e.add(u.params);let y={...u,nodes:[]};for(let b of u.nodes)c(b,y.nodes,m,v+1);g.push(y)}else if(u.kind==="at-rule"){u.name==="@keyframes"&&(m={...m,keyframes:!0});let y={...u,nodes:[]};for(let b of u.nodes)c(b,y.nodes,m,v+1);u.name==="@keyframes"&&m.theme&&s.add(y),(y.nodes.length>0||y.name==="@layer"||y.name==="@charset"||y.name==="@custom-media"||y.name==="@namespace"||y.name==="@import")&&g.push(y)}else if(u.kind==="at-root")for(let y of u.nodes){let b=[];c(y,b,m,0);for(let x of b)o.push(x)}else if(u.kind==="context"){if(u.context.reference)return;for(let y of u.nodes)c(y,g,{...m,...u.context},v)}else u.kind==="comment"&&g.push(u)}let d=[];for(let u of t)c(u,d,{},0);e:for(let[u,g]of n)for(let m of g){if(Mt(m.property,r.theme,p)){if(m.property.startsWith(r.theme.prefixKey("--animate-"))){let b=m.value.split(/\s+/);for(let x of b)l.add(x)}continue}let y=u.indexOf(m);if(u.splice(y,1),u.length===0){let b=yo(d,x=>x.kind==="rule"&&x.nodes===u);if(!b||b.length===0)continue e;b.unshift({kind:"at-root",nodes:d});do{let x=b.pop();if(!x)break;let $=b[b.length-1];if(!$||$.kind!=="at-root"&&$.kind!=="at-rule")break;let V=$.nodes.indexOf(x);if(V===-1)break;$.nodes.splice(V,1)}while(!0);continue e}}for(let u of s)if(!l.has(u.params)){let g=o.indexOf(u);o.splice(g,1)}return d.concat(o)}function Y(t){function r(e,n=0){let s="",l=" ".repeat(n);if(e.kind==="declaration")s+=`${l}${e.property}: ${e.value}${e.important?" !important":""}; -`;else if(e.kind==="rule"){s+=`${l}${e.selector} { -`;for(let p of e.nodes)s+=r(p,n+1);s+=`${l}} -`}else if(e.kind==="at-rule"){if(e.nodes.length===0)return`${l}${e.name} ${e.params}; -`;s+=`${l}${e.name}${e.params?` ${e.params} `:" "}{ -`;for(let p of e.nodes)s+=r(p,n+1);s+=`${l}} -`}else if(e.kind==="comment")s+=`${l}/*${e.value}*/ -`;else if(e.kind==="context"||e.kind==="at-root")return"";return s}let o="";for(let e of t){let n=r(e);n!==""&&(o+=n)}return o}function yo(t,r){let o=[];return _(t,(e,{path:n})=>{if(r(e))return o=[...n],2}),o}function Mt(t,r,o,e=new Set){if(e.has(t)||(e.add(t),r.getOptions(t)&24))return!0;{let s=o.get(t)??[];for(let l of s)if(Mt(l,r,o,e))return!0}return!1}var st=["calc","min","max","clamp","mod","rem","sin","cos","tan","asin","acos","atan","atan2","pow","sqrt","hypot","log","exp","round"],Ie=["anchor-size"],Bt=new RegExp(`(${Ie.join("|")})\\(`,"g");function Ce(t){return t.indexOf("(")!==-1&&st.some(r=>t.includes(`${r}(`))}function Wt(t){if(!st.some(n=>t.includes(n)))return t;let r=!1;Ie.some(n=>t.includes(n))&&(Bt.lastIndex=0,t=t.replace(Bt,(n,s)=>(r=!0,`$${Ie.indexOf(s)}$(`)));let o="",e=[];for(let n=0;n=0;c--){let d=t.charCodeAt(c);if(d>=48&&d<=57)l=c;else if(d>=97&&d<=122)l=c;else break}let p=t.slice(l,n);if(st.includes(p)){e.unshift(!0);continue}else if(e[0]&&p===""){e.unshift(!0);continue}e.unshift(!1);continue}else if(s===")")o+=s,e.shift();else if(s===","&&e[0]){o+=", ";continue}else{if(s===" "&&e[0]&&o[o.length-1]===" ")continue;if((s==="+"||s==="*"||s==="/"||s==="-")&&e[0]){let l=o.trimEnd(),p=l[l.length-1];if(p==="+"||p==="*"||p==="/"||p==="-"){o+=s;continue}else if(p==="("||p===","){o+=s;continue}else t[n-1]===" "?o+=`${s} `:o+=` ${s} `}else if(e[0]&&t.startsWith("to-zero",n)){let l=n;n+=7,o+=t.slice(l,n+1)}else o+=s}}return r?o.replace(/\$(\d+)\$/g,(n,s)=>Ie[s]??n):o}function oe(t){if(t.indexOf("(")===-1)return me(t);let r=L(t);return ut(r),t=H(r),t=Wt(t),t}function me(t,r=!1){let o="";for(let e=0;e0&&c===Le[o-1]&&o--;break}}return e.push(t.slice(n)),e}var ko=58,qt=45,Ht=97,Gt=122;function*Yt(t,r){let o=P(t,":");if(r.theme.prefix){if(o.length===1||o[0]!==r.theme.prefix)return null;o.shift()}let e=o.pop(),n=[];for(let g=o.length-1;g>=0;--g){let m=r.parseVariant(o[g]);if(m===null)return;n.push(m)}let s=!1;e[e.length-1]==="!"?(s=!0,e=e.slice(0,-1)):e[0]==="!"&&(s=!0,e=e.slice(1)),r.utilities.has(e,"static")&&!e.includes("[")&&(yield{kind:"static",root:e,variants:n,important:s,raw:t});let[l,p=null,c]=P(e,"/");if(c)return;let d=p===null?null:ct(p);if(p!==null&&d===null)return;if(l[0]==="["){if(l[l.length-1]!=="]")return;let g=l.charCodeAt(1);if(g!==qt&&!(g>=Ht&&g<=Gt))return;l=l.slice(1,-1);let m=l.indexOf(":");if(m===-1||m===0||m===l.length-1)return;let v=l.slice(0,m),y=oe(l.slice(m+1));yield{kind:"arbitrary",property:v,value:y,modifier:d,variants:n,important:s,raw:t};return}let u;if(l[l.length-1]==="]"){let g=l.indexOf("-[");if(g===-1)return;let m=l.slice(0,g);if(!r.utilities.has(m,"functional"))return;let v=l.slice(g+1);u=[[m,v]]}else if(l[l.length-1]===")"){let g=l.indexOf("-(");if(g===-1)return;let m=l.slice(0,g);if(!r.utilities.has(m,"functional"))return;let v=l.slice(g+2,-1),y=P(v,":"),b=null;if(y.length===2&&(b=y[0],v=y[1]),v[0]!=="-"&&v[1]!=="-")return;u=[[m,b===null?`[var(${v})]`:`[${b}:var(${v})]`]]}else u=Zt(l,g=>r.utilities.has(g,"functional"));for(let[g,m]of u){let v={kind:"functional",root:g,modifier:d,value:null,variants:n,important:s,raw:t};if(m===null){yield v;continue}{let y=m.indexOf("[");if(y!==-1){if(m[m.length-1]!=="]")return;let x=oe(m.slice(y+1,-1)),$="";for(let V=0;V=Ht&&O<=Gt))break}if(x.length===0||x.trim().length===0)continue;v.value={kind:"arbitrary",dataType:$||null,value:x}}else{let x=p===null||v.modifier?.kind==="arbitrary"?null:`${m}/${p}`;v.value={kind:"named",value:m,fraction:x}}}yield v}}function ct(t){if(t[0]==="["&&t[t.length-1]==="]"){let r=oe(t.slice(1,-1));return r.length===0||r.trim().length===0?null:{kind:"arbitrary",value:r}}if(t[0]==="("&&t[t.length-1]===")"){let r=oe(t.slice(1,-1));return r.length===0||r.trim().length===0||r[0]!=="-"&&r[1]!=="-"?null:{kind:"arbitrary",value:`var(${r})`}}return{kind:"named",value:t}}function Jt(t,r){if(t[0]==="["&&t[t.length-1]==="]"){if(t[1]==="@"&&t.includes("&"))return null;let o=oe(t.slice(1,-1));if(o.length===0||o.trim().length===0)return null;let e=o[0]===">"||o[0]==="+"||o[0]==="~";return!e&&o[0]!=="@"&&!o.includes("&")&&(o=`&:is(${o})`),{kind:"arbitrary",selector:o,relative:e}}{let[o,e=null,n]=P(t,"/");if(n)return null;let s=Zt(o,l=>r.variants.has(l));for(let[l,p]of s)switch(r.variants.kind(l)){case"static":return p!==null||e!==null?null:{kind:"static",root:l};case"functional":{let c=e===null?null:ct(e);if(e!==null&&c===null)return null;if(p===null)return{kind:"functional",root:l,modifier:c,value:null};if(p[p.length-1]==="]"){if(p[0]!=="[")continue;let d=oe(p.slice(1,-1));return d.length===0||d.trim().length===0?null:{kind:"functional",root:l,modifier:c,value:{kind:"arbitrary",value:d}}}if(p[p.length-1]===")"){if(p[0]!=="(")continue;let d=oe(p.slice(1,-1));return d.length===0||d.trim().length===0||d[0]!=="-"&&d[1]!=="-"?null:{kind:"functional",root:l,modifier:c,value:{kind:"arbitrary",value:`var(${d})`}}}return{kind:"functional",root:l,modifier:c,value:{kind:"named",value:p}}}case"compound":{if(p===null)return null;let c=r.parseVariant(p);if(c===null||!r.variants.compoundsWith(l,c))return null;let d=e===null?null:ct(e);return e!==null&&d===null?null:{kind:"compound",root:l,modifier:d,variant:c}}}}return null}function*Zt(t,r){r(t)&&(yield[t,null]);let o=t.lastIndexOf("-");if(o===-1){t[0]==="@"&&r("@")&&(yield["@",t.slice(1)]);return}do{let e=t.slice(0,o);if(r(e)){let n=[e,t.slice(o+1)];if(n[1]==="")break;yield n}o=t.lastIndexOf("-",o-1)}while(o>0)}function ue(t,r,o){if(t===r)return 0;let e=t.indexOf("("),n=r.indexOf("("),s=e===-1?t.replace(/[\d.]+/g,""):t.slice(0,e),l=n===-1?r.replace(/[\d.]+/g,""):r.slice(0,n),p=(s===l?0:s0}function Vo(t){return t==="serif"||t==="sans-serif"||t==="monospace"||t==="cursive"||t==="fantasy"||t==="system-ui"||t==="ui-serif"||t==="ui-sans-serif"||t==="ui-monospace"||t==="ui-rounded"||t==="math"||t==="emoji"||t==="fangsong"}function Eo(t){let r=0;for(let o of P(t,",")){let e=o.charCodeAt(0);if(e>=48&&e<=57)return!1;o.startsWith("var(")||(r+=1)}return r>0}function Ro(t){return t==="xx-small"||t==="x-small"||t==="small"||t==="medium"||t==="large"||t==="x-large"||t==="xx-large"||t==="xxx-large"}function Oo(t){return t==="larger"||t==="smaller"}var te=/[+-]?\d*\.?\d+(?:[eE][+-]?\d+)?/,Ko=new RegExp(`^${te.source}$`);function Po(t){return Ko.test(t)||Ce(t)}var Uo=new RegExp(`^${te.source}%$`);function ft(t){return Uo.test(t)||Ce(t)}var _o=new RegExp(`^${te.source}s*/s*${te.source}$`);function Do(t){return _o.test(t)||Ce(t)}var zo=["cm","mm","Q","in","pc","pt","px","em","ex","ch","rem","lh","rlh","vw","vh","vmin","vmax","vb","vi","svw","svh","lvw","lvh","dvw","dvh","cqw","cqh","cqi","cqb","cqmin","cqmax"],Fo=new RegExp(`^${te.source}(${zo.join("|")})$`);function dt(t){return Fo.test(t)||Ce(t)}function jo(t){let r=0;for(let o of P(t," ")){if(o==="center"||o==="top"||o==="right"||o==="bottom"||o==="left"){r+=1;continue}if(!o.startsWith("var(")){if(dt(o)||ft(o)){r+=1;continue}return!1}}return r>0}function Io(t){let r=0;for(let o of P(t,",")){if(o==="cover"||o==="contain"){r+=1;continue}let e=P(o," ");if(e.length!==1&&e.length!==2)return!1;if(e.every(n=>n==="auto"||dt(n)||ft(n))){r+=1;continue}}return r>0}var Lo=["deg","rad","grad","turn"],Mo=new RegExp(`^${te.source}(${Lo.join("|")})$`);function Bo(t){return Mo.test(t)}var Wo=new RegExp(`^${te.source} +${te.source} +${te.source}$`);function qo(t){return Wo.test(t)}function N(t){let r=Number(t);return Number.isInteger(r)&&r>=0&&String(r)===String(t)}function pt(t){let r=Number(t);return Number.isInteger(r)&&r>0&&String(r)===String(t)}function ge(t){return er(t,.25)}function Me(t){return er(t,.25)}function er(t,r){let o=Number(t);return o>=0&&o%r===0&&String(o)===String(t)}var Ho=new Set(["inset","inherit","initial","revert","unset"]),tr=/^-?(\d+|\.\d+)(.*?)$/g;function ce(t,r){return P(t,",").map(e=>{e=e.trim();let n=P(e," ").filter(d=>d.trim()!==""),s=null,l=null,p=null;for(let d of n)Ho.has(d)||(tr.test(d)?(l===null?l=d:p===null&&(p=d),tr.lastIndex=0):s===null&&(s=d));if(l===null||p===null)return e;let c=r(s??"currentcolor");return s!==null?e.replace(s,c):`${e} ${c}`}).join(", ")}var Yo=/^-?[a-z][a-zA-Z0-9/%._-]*$/,Jo=/^-?[a-z][a-zA-Z0-9/%._-]*-\*$/,mt=class{utilities=new j(()=>[]);completions=new Map;static(r,o){this.utilities.get(r).push({kind:"static",compileFn:o})}functional(r,o,e){this.utilities.get(r).push({kind:"functional",compileFn:o,options:e})}has(r,o){return this.utilities.has(r)&&this.utilities.get(r).some(e=>e.kind===o)}get(r){return this.utilities.has(r)?this.utilities.get(r):[]}getCompletions(r){return this.completions.get(r)?.()??[]}suggest(r,o){this.completions.set(r,o)}keys(r){let o=[];for(let[e,n]of this.utilities.entries())for(let s of n)if(s.kind===r){o.push(e);break}return o}};function S(t,r,o){return U("@property",t,[a("syntax",o?`"${o}"`:'"*"'),a("inherits","false"),...r?[a("initial-value",r)]:[]])}function J(t,r){if(r===null)return t;let o=Number(r);return Number.isNaN(o)||(r=`${o*100}%`),`color-mix(in oklab, ${t} ${r}, transparent)`}function B(t,r,o){if(!r)return t;if(r.kind==="arbitrary")return J(t,r.value);let e=o.resolve(r.value,["--opacity"]);return e?J(t,e):Me(r.value)?J(t,`${r.value}%`):null}function G(t,r,o){let e=null;switch(t.value.value){case"inherit":{e="inherit";break}case"transparent":{e="transparent";break}case"current":{e="currentColor";break}default:{e=r.resolve(t.value.value,o);break}}return e?B(e,t.modifier,r):null}function or(t){let r=new mt;function o(i,f){let h=/(\d+)_(\d+)/g;function*w(T){for(let E of t.keysInNamespaces(T))yield E.replace(h,(C,A,F)=>`${A}.${F}`)}let k=["1/2","1/3","2/3","1/4","2/4","3/4","1/5","2/5","3/5","4/5","1/6","2/6","3/6","4/6","5/6","1/12","2/12","3/12","4/12","5/12","6/12","7/12","8/12","9/12","10/12","11/12"];r.suggest(i,()=>{let T=[];for(let E of f()){if(typeof E=="string"){T.push({values:[E],modifiers:[]});continue}let C=[...E.values??[],...w(E.valueThemeKeys??[])],A=[...E.modifiers??[],...w(E.modifierThemeKeys??[])];E.supportsFractions&&C.push(...k),E.hasDefaultValue&&C.unshift(null),T.push({supportsNegative:E.supportsNegative,values:C,modifiers:A})}return T})}function e(i,f){r.static(i,()=>f.map(h=>typeof h=="function"?h():a(h[0],h[1])))}function n(i,f){function h({negative:w}){return k=>{let T=null;if(k.value)if(k.value.kind==="arbitrary"){if(k.modifier)return;T=k.value.value}else{if(T=t.resolve(k.value.fraction??k.value.value,f.themeKeys??[]),T===null&&f.supportsFractions&&k.value.fraction){let[E,C]=P(k.value.fraction,"/");if(!N(E)||!N(C))return;T=`calc(${k.value.fraction} * 100%)`}if(T===null&&w&&f.handleNegativeBareValue){if(T=f.handleNegativeBareValue(k.value),!T?.includes("/")&&k.modifier)return;if(T!==null)return f.handle(T)}if(T===null&&f.handleBareValue&&(T=f.handleBareValue(k.value),!T?.includes("/")&&k.modifier))return}else{if(k.modifier)return;T=f.defaultValue!==void 0?f.defaultValue:t.resolve(null,f.themeKeys??[])}if(T!==null)return f.handle(w?`calc(${T} * -1)`:T)}}f.supportsNegative&&r.functional(`-${i}`,h({negative:!0})),r.functional(i,h({negative:!1})),o(i,()=>[{supportsNegative:f.supportsNegative,valueThemeKeys:f.themeKeys??[],hasDefaultValue:f.defaultValue!==void 0&&f.defaultValue!==null,supportsFractions:f.supportsFractions}])}function s(i,f){r.functional(i,h=>{if(!h.value)return;let w=null;if(h.value.kind==="arbitrary"?(w=h.value.value,w=B(w,h.modifier,t)):w=G(h,t,f.themeKeys),w!==null)return f.handle(w)}),o(i,()=>[{values:["current","inherit","transparent"],valueThemeKeys:f.themeKeys,modifiers:Array.from({length:21},(h,w)=>`${w*5}`)}])}function l(i,f,h,{supportsNegative:w=!1,supportsFractions:k=!1}={}){w&&r.static(`-${i}-px`,()=>h("-1px")),r.static(`${i}-px`,()=>h("1px")),n(i,{themeKeys:f,supportsFractions:k,supportsNegative:w,defaultValue:null,handleBareValue:({value:T})=>{let E=t.resolve(null,["--spacing"]);return!E||!ge(T)?null:`calc(${E} * ${T})`},handleNegativeBareValue:({value:T})=>{let E=t.resolve(null,["--spacing"]);return!E||!ge(T)?null:`calc(${E} * -${T})`},handle:h}),o(i,()=>[{values:t.get(["--spacing"])?["0","0.5","1","1.5","2","2.5","3","3.5","4","5","6","7","8","9","10","11","12","14","16","20","24","28","32","36","40","44","48","52","56","60","64","72","80","96"]:[],supportsNegative:w,supportsFractions:k,valueThemeKeys:f}])}e("sr-only",[["position","absolute"],["width","1px"],["height","1px"],["padding","0"],["margin","-1px"],["overflow","hidden"],["clip","rect(0, 0, 0, 0)"],["white-space","nowrap"],["border-width","0"]]),e("not-sr-only",[["position","static"],["width","auto"],["height","auto"],["padding","0"],["margin","0"],["overflow","visible"],["clip","auto"],["white-space","normal"]]),e("pointer-events-none",[["pointer-events","none"]]),e("pointer-events-auto",[["pointer-events","auto"]]),e("visible",[["visibility","visible"]]),e("invisible",[["visibility","hidden"]]),e("collapse",[["visibility","collapse"]]),e("static",[["position","static"]]),e("fixed",[["position","fixed"]]),e("absolute",[["position","absolute"]]),e("relative",[["position","relative"]]),e("sticky",[["position","sticky"]]);for(let[i,f]of[["inset","inset"],["inset-x","inset-inline"],["inset-y","inset-block"],["start","inset-inline-start"],["end","inset-inline-end"],["top","top"],["right","right"],["bottom","bottom"],["left","left"]])e(`${i}-auto`,[[f,"auto"]]),e(`${i}-full`,[[f,"100%"]]),e(`-${i}-full`,[[f,"-100%"]]),l(i,["--inset","--spacing"],h=>[a(f,h)],{supportsNegative:!0,supportsFractions:!0});e("isolate",[["isolation","isolate"]]),e("isolation-auto",[["isolation","auto"]]),e("z-auto",[["z-index","auto"]]),n("z",{supportsNegative:!0,handleBareValue:({value:i})=>N(i)?i:null,themeKeys:["--z-index"],handle:i=>[a("z-index",i)]}),o("z",()=>[{supportsNegative:!0,values:["0","10","20","30","40","50"],valueThemeKeys:["--z-index"]}]),e("order-first",[["order","-9999"]]),e("order-last",[["order","9999"]]),e("order-none",[["order","0"]]),n("order",{supportsNegative:!0,handleBareValue:({value:i})=>N(i)?i:null,themeKeys:["--order"],handle:i=>[a("order",i)]}),o("order",()=>[{supportsNegative:!0,values:Array.from({length:12},(i,f)=>`${f+1}`),valueThemeKeys:["--order"]}]),e("col-auto",[["grid-column","auto"]]),n("col",{supportsNegative:!0,handleBareValue:({value:i})=>N(i)?i:null,themeKeys:["--grid-column"],handle:i=>[a("grid-column",i)]}),e("col-span-full",[["grid-column","1 / -1"]]),n("col-span",{handleBareValue:({value:i})=>N(i)?i:null,handle:i=>[a("grid-column",`span ${i} / span ${i}`)]}),e("col-start-auto",[["grid-column-start","auto"]]),n("col-start",{supportsNegative:!0,handleBareValue:({value:i})=>N(i)?i:null,themeKeys:["--grid-column-start"],handle:i=>[a("grid-column-start",i)]}),e("col-end-auto",[["grid-column-end","auto"]]),n("col-end",{supportsNegative:!0,handleBareValue:({value:i})=>N(i)?i:null,themeKeys:["--grid-column-end"],handle:i=>[a("grid-column-end",i)]}),o("col-span",()=>[{values:Array.from({length:12},(i,f)=>`${f+1}`),valueThemeKeys:[]}]),o("col-start",()=>[{supportsNegative:!0,values:Array.from({length:13},(i,f)=>`${f+1}`),valueThemeKeys:["--grid-column-start"]}]),o("col-end",()=>[{supportsNegative:!0,values:Array.from({length:13},(i,f)=>`${f+1}`),valueThemeKeys:["--grid-column-end"]}]),e("row-auto",[["grid-row","auto"]]),n("row",{supportsNegative:!0,handleBareValue:({value:i})=>N(i)?i:null,themeKeys:["--grid-row"],handle:i=>[a("grid-row",i)]}),e("row-span-full",[["grid-row","1 / -1"]]),n("row-span",{themeKeys:[],handleBareValue:({value:i})=>N(i)?i:null,handle:i=>[a("grid-row",`span ${i} / span ${i}`)]}),e("row-start-auto",[["grid-row-start","auto"]]),n("row-start",{supportsNegative:!0,handleBareValue:({value:i})=>N(i)?i:null,themeKeys:["--grid-row-start"],handle:i=>[a("grid-row-start",i)]}),e("row-end-auto",[["grid-row-end","auto"]]),n("row-end",{supportsNegative:!0,handleBareValue:({value:i})=>N(i)?i:null,themeKeys:["--grid-row-end"],handle:i=>[a("grid-row-end",i)]}),o("row-span",()=>[{values:Array.from({length:12},(i,f)=>`${f+1}`),valueThemeKeys:[]}]),o("row-start",()=>[{supportsNegative:!0,values:Array.from({length:13},(i,f)=>`${f+1}`),valueThemeKeys:["--grid-row-start"]}]),o("row-end",()=>[{supportsNegative:!0,values:Array.from({length:13},(i,f)=>`${f+1}`),valueThemeKeys:["--grid-row-end"]}]),e("float-start",[["float","inline-start"]]),e("float-end",[["float","inline-end"]]),e("float-right",[["float","right"]]),e("float-left",[["float","left"]]),e("float-none",[["float","none"]]),e("clear-start",[["clear","inline-start"]]),e("clear-end",[["clear","inline-end"]]),e("clear-right",[["clear","right"]]),e("clear-left",[["clear","left"]]),e("clear-both",[["clear","both"]]),e("clear-none",[["clear","none"]]);for(let[i,f]of[["m","margin"],["mx","margin-inline"],["my","margin-block"],["ms","margin-inline-start"],["me","margin-inline-end"],["mt","margin-top"],["mr","margin-right"],["mb","margin-bottom"],["ml","margin-left"]])e(`${i}-auto`,[[f,"auto"]]),l(i,["--margin","--spacing"],h=>[a(f,h)],{supportsNegative:!0});e("box-border",[["box-sizing","border-box"]]),e("box-content",[["box-sizing","content-box"]]),e("line-clamp-none",[["overflow","visible"],["display","block"],["-webkit-box-orient","horizontal"],["-webkit-line-clamp","unset"]]),n("line-clamp",{themeKeys:["--line-clamp"],handleBareValue:({value:i})=>N(i)?i:null,handle:i=>[a("overflow","hidden"),a("display","-webkit-box"),a("-webkit-box-orient","vertical"),a("-webkit-line-clamp",i)]}),o("line-clamp",()=>[{values:["1","2","3","4","5","6"],valueThemeKeys:["--line-clamp"]}]),e("block",[["display","block"]]),e("inline-block",[["display","inline-block"]]),e("inline",[["display","inline"]]),e("hidden",[["display","none"]]),e("inline-flex",[["display","inline-flex"]]),e("table",[["display","table"]]),e("inline-table",[["display","inline-table"]]),e("table-caption",[["display","table-caption"]]),e("table-cell",[["display","table-cell"]]),e("table-column",[["display","table-column"]]),e("table-column-group",[["display","table-column-group"]]),e("table-footer-group",[["display","table-footer-group"]]),e("table-header-group",[["display","table-header-group"]]),e("table-row-group",[["display","table-row-group"]]),e("table-row",[["display","table-row"]]),e("flow-root",[["display","flow-root"]]),e("flex",[["display","flex"]]),e("grid",[["display","grid"]]),e("inline-grid",[["display","inline-grid"]]),e("contents",[["display","contents"]]),e("list-item",[["display","list-item"]]),e("field-sizing-content",[["field-sizing","content"]]),e("field-sizing-fixed",[["field-sizing","fixed"]]),e("aspect-auto",[["aspect-ratio","auto"]]),e("aspect-square",[["aspect-ratio","1 / 1"]]),n("aspect",{themeKeys:["--aspect"],handleBareValue:({fraction:i})=>{if(i===null)return null;let[f,h]=P(i,"/");return!N(f)||!N(h)?null:i},handle:i=>[a("aspect-ratio",i)]});for(let[i,f]of[["auto","auto"],["full","100%"],["svw","100svw"],["lvw","100lvw"],["dvw","100dvw"],["svh","100svh"],["lvh","100lvh"],["dvh","100dvh"],["min","min-content"],["max","max-content"],["fit","fit-content"]])e(`size-${i}`,[["--tw-sort","size"],["width",f],["height",f]]),e(`w-${i}`,[["width",f]]),e(`h-${i}`,[["height",f]]),e(`min-w-${i}`,[["min-width",f]]),e(`min-h-${i}`,[["min-height",f]]),i!=="auto"&&(e(`max-w-${i}`,[["max-width",f]]),e(`max-h-${i}`,[["max-height",f]]));e("w-screen",[["width","100vw"]]),e("min-w-screen",[["min-width","100vw"]]),e("max-w-screen",[["max-width","100vw"]]),e("h-screen",[["height","100vh"]]),e("min-h-screen",[["min-height","100vh"]]),e("max-h-screen",[["max-height","100vh"]]),e("max-w-none",[["max-width","none"]]),e("max-h-none",[["max-height","none"]]),l("size",["--size","--spacing"],i=>[a("--tw-sort","size"),a("width",i),a("height",i)],{supportsFractions:!0});for(let[i,f,h]of[["w",["--width","--spacing","--container"],"width"],["min-w",["--min-width","--spacing","--container"],"min-width"],["max-w",["--max-width","--spacing","--container"],"max-width"],["h",["--height","--spacing"],"height"],["min-h",["--min-height","--height","--spacing"],"min-height"],["max-h",["--max-height","--height","--spacing"],"max-height"]])l(i,f,w=>[a(h,w)],{supportsFractions:!0});r.static("container",()=>{let i=[...t.namespace("--breakpoint").values()];i.sort((h,w)=>ue(h,w,"asc"));let f=[a("--tw-sort","--tw-container-component"),a("width","100%")];for(let h of i)f.push(U("@media",`(width >= ${h})`,[a("max-width",h)]));return f}),e("flex-auto",[["flex","auto"]]),e("flex-initial",[["flex","0 auto"]]),e("flex-none",[["flex","none"]]),r.functional("flex",i=>{if(i.value){if(i.value.kind==="arbitrary")return i.modifier?void 0:[a("flex",i.value.value)];if(i.value.fraction){let[f,h]=P(i.value.fraction,"/");return!N(f)||!N(h)?void 0:[a("flex",`calc(${i.value.fraction} * 100%)`)]}if(N(i.value.value))return i.modifier?void 0:[a("flex",i.value.value)]}}),o("flex",()=>[{supportsFractions:!0}]),n("shrink",{defaultValue:"1",handleBareValue:({value:i})=>N(i)?i:null,handle:i=>[a("flex-shrink",i)]}),n("grow",{defaultValue:"1",handleBareValue:({value:i})=>N(i)?i:null,handle:i=>[a("flex-grow",i)]}),o("shrink",()=>[{values:["0"],valueThemeKeys:[],hasDefaultValue:!0}]),o("grow",()=>[{values:["0"],valueThemeKeys:[],hasDefaultValue:!0}]),e("basis-auto",[["flex-basis","auto"]]),e("basis-full",[["flex-basis","100%"]]),l("basis",["--flex-basis","--spacing","--container"],i=>[a("flex-basis",i)],{supportsFractions:!0}),e("table-auto",[["table-layout","auto"]]),e("table-fixed",[["table-layout","fixed"]]),e("caption-top",[["caption-side","top"]]),e("caption-bottom",[["caption-side","bottom"]]),e("border-collapse",[["border-collapse","collapse"]]),e("border-separate",[["border-collapse","separate"]]);let p=()=>D([S("--tw-border-spacing-x","0",""),S("--tw-border-spacing-y","0","")]);l("border-spacing",["--border-spacing","--spacing"],i=>[p(),a("--tw-border-spacing-x",i),a("--tw-border-spacing-y",i),a("border-spacing","var(--tw-border-spacing-x) var(--tw-border-spacing-y)")]),l("border-spacing-x",["--border-spacing","--spacing"],i=>[p(),a("--tw-border-spacing-x",i),a("border-spacing","var(--tw-border-spacing-x) var(--tw-border-spacing-y)")]),l("border-spacing-y",["--border-spacing","--spacing"],i=>[p(),a("--tw-border-spacing-y",i),a("border-spacing","var(--tw-border-spacing-x) var(--tw-border-spacing-y)")]),e("origin-center",[["transform-origin","center"]]),e("origin-top",[["transform-origin","top"]]),e("origin-top-right",[["transform-origin","top right"]]),e("origin-right",[["transform-origin","right"]]),e("origin-bottom-right",[["transform-origin","bottom right"]]),e("origin-bottom",[["transform-origin","bottom"]]),e("origin-bottom-left",[["transform-origin","bottom left"]]),e("origin-left",[["transform-origin","left"]]),e("origin-top-left",[["transform-origin","top left"]]),n("origin",{themeKeys:["--transform-origin"],handle:i=>[a("transform-origin",i)]}),e("perspective-origin-center",[["perspective-origin","center"]]),e("perspective-origin-top",[["perspective-origin","top"]]),e("perspective-origin-top-right",[["perspective-origin","top right"]]),e("perspective-origin-right",[["perspective-origin","right"]]),e("perspective-origin-bottom-right",[["perspective-origin","bottom right"]]),e("perspective-origin-bottom",[["perspective-origin","bottom"]]),e("perspective-origin-bottom-left",[["perspective-origin","bottom left"]]),e("perspective-origin-left",[["perspective-origin","left"]]),e("perspective-origin-top-left",[["perspective-origin","top left"]]),n("perspective-origin",{themeKeys:["--perspective-origin"],handle:i=>[a("perspective-origin",i)]}),e("perspective-none",[["perspective","none"]]),n("perspective",{themeKeys:["--perspective"],handle:i=>[a("perspective",i)]});let c=()=>D([S("--tw-translate-x","0"),S("--tw-translate-y","0"),S("--tw-translate-z","0")]);e("translate-none",[["translate","none"]]),e("-translate-full",[c,["--tw-translate-x","-100%"],["--tw-translate-y","-100%"],["translate","var(--tw-translate-x) var(--tw-translate-y)"]]),e("translate-full",[c,["--tw-translate-x","100%"],["--tw-translate-y","100%"],["translate","var(--tw-translate-x) var(--tw-translate-y)"]]),l("translate",["--translate","--spacing"],i=>[c(),a("--tw-translate-x",i),a("--tw-translate-y",i),a("translate","var(--tw-translate-x) var(--tw-translate-y)")],{supportsNegative:!0,supportsFractions:!0});for(let i of["x","y"])e(`-translate-${i}-full`,[c,[`--tw-translate-${i}`,"-100%"],["translate","var(--tw-translate-x) var(--tw-translate-y)"]]),e(`translate-${i}-full`,[c,[`--tw-translate-${i}`,"100%"],["translate","var(--tw-translate-x) var(--tw-translate-y)"]]),l(`translate-${i}`,["--translate","--spacing"],f=>[c(),a(`--tw-translate-${i}`,f),a("translate","var(--tw-translate-x) var(--tw-translate-y)")],{supportsNegative:!0,supportsFractions:!0});l("translate-z",["--translate","--spacing"],i=>[c(),a("--tw-translate-z",i),a("translate","var(--tw-translate-x) var(--tw-translate-y) var(--tw-translate-z)")],{supportsNegative:!0}),e("translate-3d",[c,["translate","var(--tw-translate-x) var(--tw-translate-y) var(--tw-translate-z)"]]);let d=()=>D([S("--tw-scale-x","1"),S("--tw-scale-y","1"),S("--tw-scale-z","1")]);e("scale-none",[["scale","none"]]);function u({negative:i}){return f=>{if(!f.value||f.modifier)return;let h;return f.value.kind==="arbitrary"?(h=f.value.value,[a("scale",h)]):(h=t.resolve(f.value.value,["--scale"]),!h&&N(f.value.value)&&(h=`${f.value.value}%`),h?(h=i?`calc(${h} * -1)`:h,[d(),a("--tw-scale-x",h),a("--tw-scale-y",h),a("--tw-scale-z",h),a("scale","var(--tw-scale-x) var(--tw-scale-y)")]):void 0)}}r.functional("-scale",u({negative:!0})),r.functional("scale",u({negative:!1})),o("scale",()=>[{supportsNegative:!0,values:["0","50","75","90","95","100","105","110","125","150","200"],valueThemeKeys:["--scale"]}]);for(let i of["x","y","z"])n(`scale-${i}`,{supportsNegative:!0,themeKeys:["--scale"],handleBareValue:({value:f})=>N(f)?`${f}%`:null,handle:f=>[d(),a(`--tw-scale-${i}`,f),a("scale",`var(--tw-scale-x) var(--tw-scale-y)${i==="z"?" var(--tw-scale-z)":""}`)]}),o(`scale-${i}`,()=>[{supportsNegative:!0,values:["0","50","75","90","95","100","105","110","125","150","200"],valueThemeKeys:["--scale"]}]);e("scale-3d",[d,["scale","var(--tw-scale-x) var(--tw-scale-y) var(--tw-scale-z)"]]),e("rotate-none",[["rotate","none"]]);function g({negative:i}){return f=>{if(!f.value||f.modifier)return;let h;if(f.value.kind==="arbitrary"){h=f.value.value;let w=f.value.dataType??I(h,["angle","vector"]);if(w==="vector")return[a("rotate",`${h} var(--tw-rotate)`)];if(w!=="angle")return[a("rotate",h)]}else if(h=t.resolve(f.value.value,["--rotate"]),!h&&N(f.value.value)&&(h=`${f.value.value}deg`),!h)return;return[a("rotate",i?`calc(${h} * -1)`:h)]}}r.functional("-rotate",g({negative:!0})),r.functional("rotate",g({negative:!1})),o("rotate",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12","45","90","180"],valueThemeKeys:["--rotate"]}]);{let i=["var(--tw-rotate-x)","var(--tw-rotate-y)","var(--tw-rotate-z)","var(--tw-skew-x)","var(--tw-skew-y)"].join(" "),f=()=>D([S("--tw-rotate-x","rotateX(0)"),S("--tw-rotate-y","rotateY(0)"),S("--tw-rotate-z","rotateZ(0)"),S("--tw-skew-x","skewX(0)"),S("--tw-skew-y","skewY(0)")]);for(let h of["x","y","z"])n(`rotate-${h}`,{supportsNegative:!0,themeKeys:["--rotate"],handleBareValue:({value:w})=>N(w)?`${w}deg`:null,handle:w=>[f(),a(`--tw-rotate-${h}`,`rotate${h.toUpperCase()}(${w})`),a("transform",i)]}),o(`rotate-${h}`,()=>[{supportsNegative:!0,values:["0","1","2","3","6","12","45","90","180"],valueThemeKeys:["--rotate"]}]);n("skew",{supportsNegative:!0,themeKeys:["--skew"],handleBareValue:({value:h})=>N(h)?`${h}deg`:null,handle:h=>[f(),a("--tw-skew-x",`skewX(${h})`),a("--tw-skew-y",`skewY(${h})`),a("transform",i)]}),n("skew-x",{supportsNegative:!0,themeKeys:["--skew"],handleBareValue:({value:h})=>N(h)?`${h}deg`:null,handle:h=>[f(),a("--tw-skew-x",`skewX(${h})`),a("transform",i)]}),n("skew-y",{supportsNegative:!0,themeKeys:["--skew"],handleBareValue:({value:h})=>N(h)?`${h}deg`:null,handle:h=>[f(),a("--tw-skew-y",`skewY(${h})`),a("transform",i)]}),o("skew",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12"],valueThemeKeys:["--skew"]}]),o("skew-x",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12"],valueThemeKeys:["--skew"]}]),o("skew-y",()=>[{supportsNegative:!0,values:["0","1","2","3","6","12"],valueThemeKeys:["--skew"]}]),r.functional("transform",h=>{if(h.modifier)return;let w=null;if(h.value?h.value.kind==="arbitrary"&&(w=h.value.value):w=i,w!==null)return[f(),a("transform",w)]}),o("transform",()=>[{hasDefaultValue:!0}]),e("transform-cpu",[["transform",i]]),e("transform-gpu",[["transform",`translateZ(0) ${i}`]]),e("transform-none",[["transform","none"]])}e("transform-flat",[["transform-style","flat"]]),e("transform-3d",[["transform-style","preserve-3d"]]),e("transform-content",[["transform-box","content-box"]]),e("transform-border",[["transform-box","border-box"]]),e("transform-fill",[["transform-box","fill-box"]]),e("transform-stroke",[["transform-box","stroke-box"]]),e("transform-view",[["transform-box","view-box"]]),e("backface-visible",[["backface-visibility","visible"]]),e("backface-hidden",[["backface-visibility","hidden"]]);for(let i of["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out"])e(`cursor-${i}`,[["cursor",i]]);n("cursor",{themeKeys:["--cursor"],handle:i=>[a("cursor",i)]});for(let i of["auto","none","manipulation"])e(`touch-${i}`,[["touch-action",i]]);let m=()=>D([S("--tw-pan-x"),S("--tw-pan-y"),S("--tw-pinch-zoom")]);for(let i of["x","left","right"])e(`touch-pan-${i}`,[m,["--tw-pan-x",`pan-${i}`],["touch-action","var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)"]]);for(let i of["y","up","down"])e(`touch-pan-${i}`,[m,["--tw-pan-y",`pan-${i}`],["touch-action","var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)"]]);e("touch-pinch-zoom",[m,["--tw-pinch-zoom","pinch-zoom"],["touch-action","var(--tw-pan-x,) var(--tw-pan-y,) var(--tw-pinch-zoom,)"]]);for(let i of["none","text","all","auto"])e(`select-${i}`,[["-webkit-user-select",i],["user-select",i]]);e("resize-none",[["resize","none"]]),e("resize-x",[["resize","horizontal"]]),e("resize-y",[["resize","vertical"]]),e("resize",[["resize","both"]]),e("snap-none",[["scroll-snap-type","none"]]);let v=()=>D([S("--tw-scroll-snap-strictness","proximity","*")]);for(let i of["x","y","both"])e(`snap-${i}`,[v,["scroll-snap-type",`${i} var(--tw-scroll-snap-strictness)`]]);e("snap-mandatory",[v,["--tw-scroll-snap-strictness","mandatory"]]),e("snap-proximity",[v,["--tw-scroll-snap-strictness","proximity"]]),e("snap-align-none",[["scroll-snap-align","none"]]),e("snap-start",[["scroll-snap-align","start"]]),e("snap-end",[["scroll-snap-align","end"]]),e("snap-center",[["scroll-snap-align","center"]]),e("snap-normal",[["scroll-snap-stop","normal"]]),e("snap-always",[["scroll-snap-stop","always"]]);for(let[i,f]of[["scroll-m","scroll-margin"],["scroll-mx","scroll-margin-inline"],["scroll-my","scroll-margin-block"],["scroll-ms","scroll-margin-inline-start"],["scroll-me","scroll-margin-inline-end"],["scroll-mt","scroll-margin-top"],["scroll-mr","scroll-margin-right"],["scroll-mb","scroll-margin-bottom"],["scroll-ml","scroll-margin-left"]])l(i,["--scroll-margin","--spacing"],h=>[a(f,h)],{supportsNegative:!0});for(let[i,f]of[["scroll-p","scroll-padding"],["scroll-px","scroll-padding-inline"],["scroll-py","scroll-padding-block"],["scroll-ps","scroll-padding-inline-start"],["scroll-pe","scroll-padding-inline-end"],["scroll-pt","scroll-padding-top"],["scroll-pr","scroll-padding-right"],["scroll-pb","scroll-padding-bottom"],["scroll-pl","scroll-padding-left"]])l(i,["--scroll-padding","--spacing"],h=>[a(f,h)]);e("list-inside",[["list-style-position","inside"]]),e("list-outside",[["list-style-position","outside"]]),e("list-none",[["list-style-type","none"]]),e("list-disc",[["list-style-type","disc"]]),e("list-decimal",[["list-style-type","decimal"]]),n("list",{themeKeys:["--list-style-type"],handle:i=>[a("list-style-type",i)]}),e("list-image-none",[["list-style-image","none"]]),n("list-image",{themeKeys:["--list-style-image"],handle:i=>[a("list-style-image",i)]}),e("appearance-none",[["appearance","none"]]),e("appearance-auto",[["appearance","auto"]]),e("scheme-normal",[["color-scheme","normal"]]),e("scheme-dark",[["color-scheme","dark"]]),e("scheme-light",[["color-scheme","light"]]),e("scheme-light-dark",[["color-scheme","light dark"]]),e("scheme-only-dark",[["color-scheme","only dark"]]),e("scheme-only-light",[["color-scheme","only light"]]),e("columns-auto",[["columns","auto"]]),n("columns",{themeKeys:["--columns","--container"],handleBareValue:({value:i})=>N(i)?i:null,handle:i=>[a("columns",i)]}),o("columns",()=>[{values:Array.from({length:12},(i,f)=>`${f+1}`),valueThemeKeys:["--columns","--container"]}]);for(let i of["auto","avoid","all","avoid-page","page","left","right","column"])e(`break-before-${i}`,[["break-before",i]]);for(let i of["auto","avoid","avoid-page","avoid-column"])e(`break-inside-${i}`,[["break-inside",i]]);for(let i of["auto","avoid","all","avoid-page","page","left","right","column"])e(`break-after-${i}`,[["break-after",i]]);e("grid-flow-row",[["grid-auto-flow","row"]]),e("grid-flow-col",[["grid-auto-flow","column"]]),e("grid-flow-dense",[["grid-auto-flow","dense"]]),e("grid-flow-row-dense",[["grid-auto-flow","row dense"]]),e("grid-flow-col-dense",[["grid-auto-flow","column dense"]]),e("auto-cols-auto",[["grid-auto-columns","auto"]]),e("auto-cols-min",[["grid-auto-columns","min-content"]]),e("auto-cols-max",[["grid-auto-columns","max-content"]]),e("auto-cols-fr",[["grid-auto-columns","minmax(0, 1fr)"]]),n("auto-cols",{themeKeys:["--grid-auto-columns"],handle:i=>[a("grid-auto-columns",i)]}),e("auto-rows-auto",[["grid-auto-rows","auto"]]),e("auto-rows-min",[["grid-auto-rows","min-content"]]),e("auto-rows-max",[["grid-auto-rows","max-content"]]),e("auto-rows-fr",[["grid-auto-rows","minmax(0, 1fr)"]]),n("auto-rows",{themeKeys:["--grid-auto-rows"],handle:i=>[a("grid-auto-rows",i)]}),e("grid-cols-none",[["grid-template-columns","none"]]),e("grid-cols-subgrid",[["grid-template-columns","subgrid"]]),n("grid-cols",{themeKeys:["--grid-template-columns"],handleBareValue:({value:i})=>pt(i)?`repeat(${i}, minmax(0, 1fr))`:null,handle:i=>[a("grid-template-columns",i)]}),e("grid-rows-none",[["grid-template-rows","none"]]),e("grid-rows-subgrid",[["grid-template-rows","subgrid"]]),n("grid-rows",{themeKeys:["--grid-template-rows"],handleBareValue:({value:i})=>pt(i)?`repeat(${i}, minmax(0, 1fr))`:null,handle:i=>[a("grid-template-rows",i)]}),o("grid-cols",()=>[{values:Array.from({length:12},(i,f)=>`${f+1}`),valueThemeKeys:["--grid-template-columns"]}]),o("grid-rows",()=>[{values:Array.from({length:12},(i,f)=>`${f+1}`),valueThemeKeys:["--grid-template-rows"]}]),e("flex-row",[["flex-direction","row"]]),e("flex-row-reverse",[["flex-direction","row-reverse"]]),e("flex-col",[["flex-direction","column"]]),e("flex-col-reverse",[["flex-direction","column-reverse"]]),e("flex-wrap",[["flex-wrap","wrap"]]),e("flex-nowrap",[["flex-wrap","nowrap"]]),e("flex-wrap-reverse",[["flex-wrap","wrap-reverse"]]),e("place-content-center",[["place-content","center"]]),e("place-content-start",[["place-content","start"]]),e("place-content-end",[["place-content","end"]]),e("place-content-between",[["place-content","space-between"]]),e("place-content-around",[["place-content","space-around"]]),e("place-content-evenly",[["place-content","space-evenly"]]),e("place-content-baseline",[["place-content","baseline"]]),e("place-content-stretch",[["place-content","stretch"]]),e("place-items-center",[["place-items","center"]]),e("place-items-start",[["place-items","start"]]),e("place-items-end",[["place-items","end"]]),e("place-items-baseline",[["place-items","baseline"]]),e("place-items-stretch",[["place-items","stretch"]]),e("content-normal",[["align-content","normal"]]),e("content-center",[["align-content","center"]]),e("content-start",[["align-content","flex-start"]]),e("content-end",[["align-content","flex-end"]]),e("content-between",[["align-content","space-between"]]),e("content-around",[["align-content","space-around"]]),e("content-evenly",[["align-content","space-evenly"]]),e("content-baseline",[["align-content","baseline"]]),e("content-stretch",[["align-content","stretch"]]),e("items-center",[["align-items","center"]]),e("items-start",[["align-items","flex-start"]]),e("items-end",[["align-items","flex-end"]]),e("items-baseline",[["align-items","baseline"]]),e("items-stretch",[["align-items","stretch"]]),e("justify-normal",[["justify-content","normal"]]),e("justify-center",[["justify-content","center"]]),e("justify-start",[["justify-content","flex-start"]]),e("justify-end",[["justify-content","flex-end"]]),e("justify-between",[["justify-content","space-between"]]),e("justify-around",[["justify-content","space-around"]]),e("justify-evenly",[["justify-content","space-evenly"]]),e("justify-baseline",[["justify-content","baseline"]]),e("justify-stretch",[["justify-content","stretch"]]),e("justify-items-normal",[["justify-items","normal"]]),e("justify-items-center",[["justify-items","center"]]),e("justify-items-start",[["justify-items","start"]]),e("justify-items-end",[["justify-items","end"]]),e("justify-items-stretch",[["justify-items","stretch"]]),l("gap",["--gap","--spacing"],i=>[a("gap",i)]),l("gap-x",["--gap","--spacing"],i=>[a("column-gap",i)]),l("gap-y",["--gap","--spacing"],i=>[a("row-gap",i)]),l("space-x",["--space","--spacing"],i=>[D([S("--tw-space-x-reverse","0")]),z(":where(& > :not(:last-child))",[a("--tw-sort","row-gap"),a("--tw-space-x-reverse","0"),a("margin-inline-start",`calc(${i} * var(--tw-space-x-reverse))`),a("margin-inline-end",`calc(${i} * calc(1 - var(--tw-space-x-reverse)))`)])],{supportsNegative:!0}),l("space-y",["--space","--spacing"],i=>[D([S("--tw-space-y-reverse","0")]),z(":where(& > :not(:last-child))",[a("--tw-sort","column-gap"),a("--tw-space-y-reverse","0"),a("margin-block-start",`calc(${i} * var(--tw-space-y-reverse))`),a("margin-block-end",`calc(${i} * calc(1 - var(--tw-space-y-reverse)))`)])],{supportsNegative:!0}),e("space-x-reverse",[()=>D([S("--tw-space-x-reverse","0")]),()=>z(":where(& > :not(:last-child))",[a("--tw-sort","row-gap"),a("--tw-space-x-reverse","1")])]),e("space-y-reverse",[()=>D([S("--tw-space-y-reverse","0")]),()=>z(":where(& > :not(:last-child))",[a("--tw-sort","column-gap"),a("--tw-space-y-reverse","1")])]),e("accent-auto",[["accent-color","auto"]]),s("accent",{themeKeys:["--accent-color","--color"],handle:i=>[a("accent-color",i)]}),s("caret",{themeKeys:["--caret-color","--color"],handle:i=>[a("caret-color",i)]}),s("divide",{themeKeys:["--divide-color","--color"],handle:i=>[z(":where(& > :not(:last-child))",[a("--tw-sort","divide-color"),a("border-color",i)])]}),e("place-self-auto",[["place-self","auto"]]),e("place-self-start",[["place-self","start"]]),e("place-self-end",[["place-self","end"]]),e("place-self-center",[["place-self","center"]]),e("place-self-stretch",[["place-self","stretch"]]),e("self-auto",[["align-self","auto"]]),e("self-start",[["align-self","flex-start"]]),e("self-end",[["align-self","flex-end"]]),e("self-center",[["align-self","center"]]),e("self-stretch",[["align-self","stretch"]]),e("self-baseline",[["align-self","baseline"]]),e("justify-self-auto",[["justify-self","auto"]]),e("justify-self-start",[["justify-self","flex-start"]]),e("justify-self-end",[["justify-self","flex-end"]]),e("justify-self-center",[["justify-self","center"]]),e("justify-self-stretch",[["justify-self","stretch"]]);for(let i of["auto","hidden","clip","visible","scroll"])e(`overflow-${i}`,[["overflow",i]]),e(`overflow-x-${i}`,[["overflow-x",i]]),e(`overflow-y-${i}`,[["overflow-y",i]]);for(let i of["auto","contain","none"])e(`overscroll-${i}`,[["overscroll-behavior",i]]),e(`overscroll-x-${i}`,[["overscroll-behavior-x",i]]),e(`overscroll-y-${i}`,[["overscroll-behavior-y",i]]);e("scroll-auto",[["scroll-behavior","auto"]]),e("scroll-smooth",[["scroll-behavior","smooth"]]),e("truncate",[["overflow","hidden"],["text-overflow","ellipsis"],["white-space","nowrap"]]),e("text-ellipsis",[["text-overflow","ellipsis"]]),e("text-clip",[["text-overflow","clip"]]),e("hyphens-none",[["-webkit-hyphens","none"],["hyphens","none"]]),e("hyphens-manual",[["-webkit-hyphens","manual"],["hyphens","manual"]]),e("hyphens-auto",[["-webkit-hyphens","auto"],["hyphens","auto"]]),e("whitespace-normal",[["white-space","normal"]]),e("whitespace-nowrap",[["white-space","nowrap"]]),e("whitespace-pre",[["white-space","pre"]]),e("whitespace-pre-line",[["white-space","pre-line"]]),e("whitespace-pre-wrap",[["white-space","pre-wrap"]]),e("whitespace-break-spaces",[["white-space","break-spaces"]]),e("text-wrap",[["text-wrap","wrap"]]),e("text-nowrap",[["text-wrap","nowrap"]]),e("text-balance",[["text-wrap","balance"]]),e("text-pretty",[["text-wrap","pretty"]]),e("break-normal",[["overflow-wrap","normal"],["word-break","normal"]]),e("break-words",[["overflow-wrap","break-word"]]),e("break-all",[["word-break","break-all"]]),e("break-keep",[["word-break","keep-all"]]),!1;for(let[i,f]of[["rounded",["border-radius"]],["rounded-s",["border-start-start-radius","border-end-start-radius"]],["rounded-e",["border-start-end-radius","border-end-end-radius"]],["rounded-t",["border-top-left-radius","border-top-right-radius"]],["rounded-r",["border-top-right-radius","border-bottom-right-radius"]],["rounded-b",["border-bottom-right-radius","border-bottom-left-radius"]],["rounded-l",["border-top-left-radius","border-bottom-left-radius"]],["rounded-ss",["border-start-start-radius"]],["rounded-se",["border-start-end-radius"]],["rounded-ee",["border-end-end-radius"]],["rounded-es",["border-end-start-radius"]],["rounded-tl",["border-top-left-radius"]],["rounded-tr",["border-top-right-radius"]],["rounded-br",["border-bottom-right-radius"]],["rounded-bl",["border-bottom-left-radius"]]])e(`${i}-none`,f.map(h=>[h,"0"])),e(`${i}-full`,f.map(h=>[h,"calc(infinity * 1px)"])),n(i,{themeKeys:["--radius"],handle:h=>f.map(w=>a(w,h))});e("border-solid",[["--tw-border-style","solid"],["border-style","solid"]]),e("border-dashed",[["--tw-border-style","dashed"],["border-style","dashed"]]),e("border-dotted",[["--tw-border-style","dotted"],["border-style","dotted"]]),e("border-double",[["--tw-border-style","double"],["border-style","double"]]),e("border-hidden",[["--tw-border-style","hidden"],["border-style","hidden"]]),e("border-none",[["--tw-border-style","none"],["border-style","none"]]);{let f=function(h,w){r.functional(h,k=>{if(!k.value){if(k.modifier)return;let T=t.get(["--default-border-width"])??"1px",E=w.width(T);return E?[i(),...E]:void 0}if(k.value.kind==="arbitrary"){let T=k.value.value;switch(k.value.dataType??I(T,["color","line-width","length"])){case"line-width":case"length":{if(k.modifier)return;let C=w.width(T);return C?[i(),...C]:void 0}default:return T=B(T,k.modifier,t),T===null?void 0:w.color(T)}}{let T=G(k,t,["--border-color","--color"]);if(T)return w.color(T)}{if(k.modifier)return;let T=t.resolve(k.value.value,["--border-width"]);if(T){let E=w.width(T);return E?[i(),...E]:void 0}if(N(k.value.value)){let E=w.width(`${k.value.value}px`);return E?[i(),...E]:void 0}}}),o(h,()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--border-color","--color"],modifiers:Array.from({length:21},(k,T)=>`${T*5}`),hasDefaultValue:!0},{values:["0","2","4","8"],valueThemeKeys:["--border-width"]}])};var x=f;let i=()=>D([S("--tw-border-style","solid")]);f("border",{width:h=>[a("border-style","var(--tw-border-style)"),a("border-width",h)],color:h=>[a("border-color",h)]}),f("border-x",{width:h=>[a("border-inline-style","var(--tw-border-style)"),a("border-inline-width",h)],color:h=>[a("border-inline-color",h)]}),f("border-y",{width:h=>[a("border-block-style","var(--tw-border-style)"),a("border-block-width",h)],color:h=>[a("border-block-color",h)]}),f("border-s",{width:h=>[a("border-inline-start-style","var(--tw-border-style)"),a("border-inline-start-width",h)],color:h=>[a("border-inline-start-color",h)]}),f("border-e",{width:h=>[a("border-inline-end-style","var(--tw-border-style)"),a("border-inline-end-width",h)],color:h=>[a("border-inline-end-color",h)]}),f("border-t",{width:h=>[a("border-top-style","var(--tw-border-style)"),a("border-top-width",h)],color:h=>[a("border-top-color",h)]}),f("border-r",{width:h=>[a("border-right-style","var(--tw-border-style)"),a("border-right-width",h)],color:h=>[a("border-right-color",h)]}),f("border-b",{width:h=>[a("border-bottom-style","var(--tw-border-style)"),a("border-bottom-width",h)],color:h=>[a("border-bottom-color",h)]}),f("border-l",{width:h=>[a("border-left-style","var(--tw-border-style)"),a("border-left-width",h)],color:h=>[a("border-left-color",h)]}),n("divide-x",{defaultValue:t.get(["--default-border-width"])??"1px",themeKeys:["--divide-width","--border-width"],handleBareValue:({value:h})=>N(h)?`${h}px`:null,handle:h=>[D([S("--tw-divide-x-reverse","0")]),z(":where(& > :not(:last-child))",[a("--tw-sort","divide-x-width"),i(),a("--tw-divide-x-reverse","0"),a("border-inline-style","var(--tw-border-style)"),a("border-inline-start-width",`calc(${h} * var(--tw-divide-x-reverse))`),a("border-inline-end-width",`calc(${h} * calc(1 - var(--tw-divide-x-reverse)))`)])]}),n("divide-y",{defaultValue:t.get(["--default-border-width"])??"1px",themeKeys:["--divide-width","--border-width"],handleBareValue:({value:h})=>N(h)?`${h}px`:null,handle:h=>[D([S("--tw-divide-y-reverse","0")]),z(":where(& > :not(:last-child))",[a("--tw-sort","divide-y-width"),i(),a("--tw-divide-y-reverse","0"),a("border-bottom-style","var(--tw-border-style)"),a("border-top-style","var(--tw-border-style)"),a("border-top-width",`calc(${h} * var(--tw-divide-y-reverse))`),a("border-bottom-width",`calc(${h} * calc(1 - var(--tw-divide-y-reverse)))`)])]}),o("divide-x",()=>[{values:["0","2","4","8"],valueThemeKeys:["--divide-width","--border-width"],hasDefaultValue:!0}]),o("divide-y",()=>[{values:["0","2","4","8"],valueThemeKeys:["--divide-width","--border-width"],hasDefaultValue:!0}]),e("divide-x-reverse",[()=>D([S("--tw-divide-x-reverse","0")]),()=>z(":where(& > :not(:last-child))",[a("--tw-divide-x-reverse","1")])]),e("divide-y-reverse",[()=>D([S("--tw-divide-y-reverse","0")]),()=>z(":where(& > :not(:last-child))",[a("--tw-divide-y-reverse","1")])]);for(let h of["solid","dashed","dotted","double","none"])e(`divide-${h}`,[()=>z(":where(& > :not(:last-child))",[a("--tw-sort","divide-style"),a("--tw-border-style",h),a("border-style",h)])])}e("bg-auto",[["background-size","auto"]]),e("bg-cover",[["background-size","cover"]]),e("bg-contain",[["background-size","contain"]]),e("bg-fixed",[["background-attachment","fixed"]]),e("bg-local",[["background-attachment","local"]]),e("bg-scroll",[["background-attachment","scroll"]]),e("bg-center",[["background-position","center"]]),e("bg-top",[["background-position","top"]]),e("bg-right-top",[["background-position","right top"]]),e("bg-right",[["background-position","right"]]),e("bg-right-bottom",[["background-position","right bottom"]]),e("bg-bottom",[["background-position","bottom"]]),e("bg-left-bottom",[["background-position","left bottom"]]),e("bg-left",[["background-position","left"]]),e("bg-left-top",[["background-position","left top"]]),e("bg-repeat",[["background-repeat","repeat"]]),e("bg-no-repeat",[["background-repeat","no-repeat"]]),e("bg-repeat-x",[["background-repeat","repeat-x"]]),e("bg-repeat-y",[["background-repeat","repeat-y"]]),e("bg-repeat-round",[["background-repeat","round"]]),e("bg-repeat-space",[["background-repeat","space"]]),e("bg-none",[["background-image","none"]]);{let h=function(T){let E="in oklab";if(T?.kind==="named")switch(T.value){case"longer":case"shorter":case"increasing":case"decreasing":E=`in oklch ${T.value} hue`;break;default:E=`in ${T.value}`}else T?.kind==="arbitrary"&&(E=T.value);return E},w=function({negative:T}){return E=>{if(!E.value)return;if(E.value.kind==="arbitrary"){if(E.modifier)return;let F=E.value.value;switch(E.value.dataType??I(F,["angle"])){case"angle":return F=T?`calc(${F} * -1)`:`${F}`,[a("--tw-gradient-position",F),a("background-image",`linear-gradient(var(--tw-gradient-stops,${F}))`)];default:return T?void 0:[a("--tw-gradient-position",F),a("background-image",`linear-gradient(var(--tw-gradient-stops,${F}))`)]}}let C=E.value.value;if(!T&&f.has(C))C=f.get(C);else if(N(C))C=T?`calc(${C}deg * -1)`:`${C}deg`;else return;let A=h(E.modifier);return[a("--tw-gradient-position",`${C} ${A}`),a("background-image","linear-gradient(var(--tw-gradient-stops))")]}},k=function({negative:T}){return E=>{if(E.value?.kind==="arbitrary"){if(E.modifier)return;let F=E.value.value;return[a("--tw-gradient-position",F),a("background-image",`conic-gradient(var(--tw-gradient-stops,${F}))`)]}let C=h(E.modifier);if(!E.value)return[a("--tw-gradient-position",C),a("background-image","conic-gradient(var(--tw-gradient-stops))")];let A=E.value.value;if(N(A))return A=T?`calc(${A} * -1)`:`${A}deg`,[a("--tw-gradient-position",`from ${A} ${C}`),a("background-image","conic-gradient(var(--tw-gradient-stops))")]}};var $=h,V=w,O=k;let i=["oklab","oklch","srgb","hsl","longer","shorter","increasing","decreasing"],f=new Map([["to-t","to top"],["to-tr","to top right"],["to-r","to right"],["to-br","to bottom right"],["to-b","to bottom"],["to-bl","to bottom left"],["to-l","to left"],["to-tl","to top left"]]);r.functional("-bg-linear",w({negative:!0})),r.functional("bg-linear",w({negative:!1})),o("bg-linear",()=>[{values:[...f.keys()],modifiers:i},{values:["0","30","60","90","120","150","180","210","240","270","300","330"],supportsNegative:!0,modifiers:i}]),r.functional("-bg-conic",k({negative:!0})),r.functional("bg-conic",k({negative:!1})),o("bg-conic",()=>[{hasDefaultValue:!0,modifiers:i},{values:["0","30","60","90","120","150","180","210","240","270","300","330"],supportsNegative:!0,modifiers:i}]),r.functional("bg-radial",T=>{if(!T.value){let E=h(T.modifier);return[a("--tw-gradient-position",E),a("background-image","radial-gradient(var(--tw-gradient-stops))")]}if(T.value.kind==="arbitrary"){if(T.modifier)return;let E=T.value.value;return[a("--tw-gradient-position",E),a("background-image",`radial-gradient(var(--tw-gradient-stops,${E}))`)]}}),o("bg-radial",()=>[{hasDefaultValue:!0,modifiers:i}])}r.functional("bg",i=>{if(i.value){if(i.value.kind==="arbitrary"){let f=i.value.value;switch(i.value.dataType??I(f,["image","color","percentage","position","bg-size","length","url"])){case"percentage":case"position":return i.modifier?void 0:[a("background-position",f)];case"bg-size":case"length":case"size":return i.modifier?void 0:[a("background-size",f)];case"image":case"url":return i.modifier?void 0:[a("background-image",f)];default:return f=B(f,i.modifier,t),f===null?void 0:[a("background-color",f)]}}{let f=G(i,t,["--background-color","--color"]);if(f)return[a("background-color",f)]}{if(i.modifier)return;let f=t.resolve(i.value.value,["--background-image"]);if(f)return[a("background-image",f)]}}}),o("bg",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--background-color","--color"],modifiers:Array.from({length:21},(i,f)=>`${f*5}`)},{values:[],valueThemeKeys:["--background-image"]}]);let y=()=>D([S("--tw-gradient-position"),S("--tw-gradient-from","#0000",""),S("--tw-gradient-via","#0000",""),S("--tw-gradient-to","#0000",""),S("--tw-gradient-stops"),S("--tw-gradient-via-stops"),S("--tw-gradient-from-position","0%",""),S("--tw-gradient-via-position","50%",""),S("--tw-gradient-to-position","100%","")]);function b(i,f){r.functional(i,h=>{if(h.value){if(h.value.kind==="arbitrary"){let w=h.value.value;switch(h.value.dataType??I(w,["color","length","percentage"])){case"length":case"percentage":return h.modifier?void 0:f.position(w);default:return w=B(w,h.modifier,t),w===null?void 0:f.color(w)}}{let w=G(h,t,["--background-color","--color"]);if(w)return f.color(w)}{if(h.modifier)return;let w=t.resolve(h.value.value,["--gradient-color-stop-positions"]);if(w)return f.position(w);if(h.value.value[h.value.value.length-1]==="%"&&N(h.value.value.slice(0,-1)))return f.position(h.value.value)}}}),o(i,()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--background-color","--color"],modifiers:Array.from({length:21},(h,w)=>`${w*5}`)},{values:Array.from({length:21},(h,w)=>`${w*5}%`),valueThemeKeys:["--gradient-color-stop-positions"]}])}b("from",{color:i=>[y(),a("--tw-sort","--tw-gradient-from"),a("--tw-gradient-from",i),a("--tw-gradient-stops","var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))")],position:i=>[y(),a("--tw-gradient-from-position",i)]}),e("via-none",[["--tw-gradient-via-stops","initial"]]),b("via",{color:i=>[y(),a("--tw-sort","--tw-gradient-via"),a("--tw-gradient-via",i),a("--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)"),a("--tw-gradient-stops","var(--tw-gradient-via-stops)")],position:i=>[y(),a("--tw-gradient-via-position",i)]}),b("to",{color:i=>[y(),a("--tw-sort","--tw-gradient-to"),a("--tw-gradient-to",i),a("--tw-gradient-stops","var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position))")],position:i=>[y(),a("--tw-gradient-to-position",i)]}),e("box-decoration-slice",[["-webkit-box-decoration-break","slice"],["box-decoration-break","slice"]]),e("box-decoration-clone",[["-webkit-box-decoration-break","clone"],["box-decoration-break","clone"]]),e("bg-clip-text",[["background-clip","text"]]),e("bg-clip-border",[["background-clip","border-box"]]),e("bg-clip-padding",[["background-clip","padding-box"]]),e("bg-clip-content",[["background-clip","content-box"]]),e("bg-origin-border",[["background-origin","border-box"]]),e("bg-origin-padding",[["background-origin","padding-box"]]),e("bg-origin-content",[["background-origin","content-box"]]);for(let i of["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"])e(`bg-blend-${i}`,[["background-blend-mode",i]]),e(`mix-blend-${i}`,[["mix-blend-mode",i]]);e("mix-blend-plus-darker",[["mix-blend-mode","plus-darker"]]),e("mix-blend-plus-lighter",[["mix-blend-mode","plus-lighter"]]),e("fill-none",[["fill","none"]]),r.functional("fill",i=>{if(!i.value)return;if(i.value.kind==="arbitrary"){let h=B(i.value.value,i.modifier,t);return h===null?void 0:[a("fill",h)]}let f=G(i,t,["--fill","--color"]);if(f)return[a("fill",f)]}),o("fill",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--fill","--color"],modifiers:Array.from({length:21},(i,f)=>`${f*5}`)}]),e("stroke-none",[["stroke","none"]]),r.functional("stroke",i=>{if(i.value){if(i.value.kind==="arbitrary"){let f=i.value.value;switch(i.value.dataType??I(f,["color","number","length","percentage"])){case"number":case"length":case"percentage":return i.modifier?void 0:[a("stroke-width",f)];default:return f=B(i.value.value,i.modifier,t),f===null?void 0:[a("stroke",f)]}}{let f=G(i,t,["--stroke","--color"]);if(f)return[a("stroke",f)]}{let f=t.resolve(i.value.value,["--stroke-width"]);if(f)return[a("stroke-width",f)];if(N(i.value.value))return[a("stroke-width",i.value.value)]}}}),o("stroke",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--stroke","--color"],modifiers:Array.from({length:21},(i,f)=>`${f*5}`)},{values:["0","1","2","3"],valueThemeKeys:["--stroke-width"]}]),e("object-contain",[["object-fit","contain"]]),e("object-cover",[["object-fit","cover"]]),e("object-fill",[["object-fit","fill"]]),e("object-none",[["object-fit","none"]]),e("object-scale-down",[["object-fit","scale-down"]]),e("object-bottom",[["object-position","bottom"]]),e("object-center",[["object-position","center"]]),e("object-left",[["object-position","left"]]),e("object-left-bottom",[["object-position","left bottom"]]),e("object-left-top",[["object-position","left top"]]),e("object-right",[["object-position","right"]]),e("object-right-bottom",[["object-position","right bottom"]]),e("object-right-top",[["object-position","right top"]]),e("object-top",[["object-position","top"]]),n("object",{themeKeys:["--object-position"],handle:i=>[a("object-position",i)]});for(let[i,f]of[["p","padding"],["px","padding-inline"],["py","padding-block"],["ps","padding-inline-start"],["pe","padding-inline-end"],["pt","padding-top"],["pr","padding-right"],["pb","padding-bottom"],["pl","padding-left"]])l(i,["--padding","--spacing"],h=>[a(f,h)]);e("text-left",[["text-align","left"]]),e("text-center",[["text-align","center"]]),e("text-right",[["text-align","right"]]),e("text-justify",[["text-align","justify"]]),e("text-start",[["text-align","start"]]),e("text-end",[["text-align","end"]]),l("indent",["--text-indent","--spacing"],i=>[a("text-indent",i)],{supportsNegative:!0}),e("align-baseline",[["vertical-align","baseline"]]),e("align-top",[["vertical-align","top"]]),e("align-middle",[["vertical-align","middle"]]),e("align-bottom",[["vertical-align","bottom"]]),e("align-text-top",[["vertical-align","text-top"]]),e("align-text-bottom",[["vertical-align","text-bottom"]]),e("align-sub",[["vertical-align","sub"]]),e("align-super",[["vertical-align","super"]]),n("align",{themeKeys:[],handle:i=>[a("vertical-align",i)]}),r.functional("font",i=>{if(!(!i.value||i.modifier)){if(i.value.kind==="arbitrary"){let f=i.value.value;switch(i.value.dataType??I(f,["number","generic-name","family-name"])){case"generic-name":case"family-name":return[a("font-family",f)];default:return[D([S("--tw-font-weight")]),a("--tw-font-weight",f),a("font-weight",f)]}}{let f=t.resolveWith(i.value.value,["--font"],["--font-feature-settings","--font-variation-settings"]);if(f){let[h,w={}]=f;return[a("font-family",h),a("font-feature-settings",w["--font-feature-settings"]),a("font-variation-settings",w["--font-variation-settings"])]}}{let f=t.resolve(i.value.value,["--font-weight"]);if(f)return[D([S("--tw-font-weight")]),a("--tw-font-weight",f),a("font-weight",f)]}}}),o("font",()=>[{values:[],valueThemeKeys:["--font"]},{values:[],valueThemeKeys:["--font-weight"]}]),e("uppercase",[["text-transform","uppercase"]]),e("lowercase",[["text-transform","lowercase"]]),e("capitalize",[["text-transform","capitalize"]]),e("normal-case",[["text-transform","none"]]),e("italic",[["font-style","italic"]]),e("not-italic",[["font-style","normal"]]),e("underline",[["text-decoration-line","underline"]]),e("overline",[["text-decoration-line","overline"]]),e("line-through",[["text-decoration-line","line-through"]]),e("no-underline",[["text-decoration-line","none"]]),e("font-stretch-normal",[["font-stretch","normal"]]),e("font-stretch-ultra-condensed",[["font-stretch","ultra-condensed"]]),e("font-stretch-extra-condensed",[["font-stretch","extra-condensed"]]),e("font-stretch-condensed",[["font-stretch","condensed"]]),e("font-stretch-semi-condensed",[["font-stretch","semi-condensed"]]),e("font-stretch-semi-expanded",[["font-stretch","semi-expanded"]]),e("font-stretch-expanded",[["font-stretch","expanded"]]),e("font-stretch-extra-expanded",[["font-stretch","extra-expanded"]]),e("font-stretch-ultra-expanded",[["font-stretch","ultra-expanded"]]),n("font-stretch",{handleBareValue:({value:i})=>{if(!i.endsWith("%"))return null;let f=Number(i.slice(0,-1));return!N(f)||Number.isNaN(f)||f<50||f>200?null:i},handle:i=>[a("font-stretch",i)]}),o("font-stretch",()=>[{values:["50%","75%","90%","95%","100%","105%","110%","125%","150%","200%"]}]),s("placeholder",{themeKeys:["--background-color","--color"],handle:i=>[z("&::placeholder",[a("--tw-sort","placeholder-color"),a("color",i)])]}),e("decoration-solid",[["text-decoration-style","solid"]]),e("decoration-double",[["text-decoration-style","double"]]),e("decoration-dotted",[["text-decoration-style","dotted"]]),e("decoration-dashed",[["text-decoration-style","dashed"]]),e("decoration-wavy",[["text-decoration-style","wavy"]]),e("decoration-auto",[["text-decoration-thickness","auto"]]),e("decoration-from-font",[["text-decoration-thickness","from-font"]]),r.functional("decoration",i=>{if(i.value){if(i.value.kind==="arbitrary"){let f=i.value.value;switch(i.value.dataType??I(f,["color","length","percentage"])){case"length":case"percentage":return i.modifier?void 0:[a("text-decoration-thickness",f)];default:return f=B(f,i.modifier,t),f===null?void 0:[a("text-decoration-color",f)]}}{let f=t.resolve(i.value.value,["--text-decoration-thickness"]);if(f)return i.modifier?void 0:[a("text-decoration-thickness",f)];if(N(i.value.value))return i.modifier?void 0:[a("text-decoration-thickness",`${i.value.value}px`)]}{let f=G(i,t,["--text-decoration-color","--color"]);if(f)return[a("text-decoration-color",f)]}}}),o("decoration",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--text-decoration-color","--color"],modifiers:Array.from({length:21},(i,f)=>`${f*5}`)},{values:["0","1","2"],valueThemeKeys:["--text-decoration-thickness"]}]),e("animate-none",[["animation","none"]]),n("animate",{themeKeys:["--animate"],handle:i=>[a("animation",i)]});{let i=["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,)"].join(" "),f=["var(--tw-backdrop-blur,)","var(--tw-backdrop-brightness,)","var(--tw-backdrop-contrast,)","var(--tw-backdrop-grayscale,)","var(--tw-backdrop-hue-rotate,)","var(--tw-backdrop-invert,)","var(--tw-backdrop-opacity,)","var(--tw-backdrop-saturate,)","var(--tw-backdrop-sepia,)"].join(" "),h=()=>D([S("--tw-blur"),S("--tw-brightness"),S("--tw-contrast"),S("--tw-grayscale"),S("--tw-hue-rotate"),S("--tw-invert"),S("--tw-opacity"),S("--tw-saturate"),S("--tw-sepia"),S("--tw-drop-shadow")]),w=()=>D([S("--tw-backdrop-blur"),S("--tw-backdrop-brightness"),S("--tw-backdrop-contrast"),S("--tw-backdrop-grayscale"),S("--tw-backdrop-hue-rotate"),S("--tw-backdrop-invert"),S("--tw-backdrop-opacity"),S("--tw-backdrop-saturate"),S("--tw-backdrop-sepia")]);r.functional("filter",k=>{if(!k.modifier){if(k.value===null)return[h(),a("filter",i)];if(k.value.kind==="arbitrary")return[a("filter",k.value.value)];switch(k.value.value){case"none":return[a("filter","none")]}}}),r.functional("backdrop-filter",k=>{if(!k.modifier){if(k.value===null)return[w(),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)];if(k.value.kind==="arbitrary")return[a("-webkit-backdrop-filter",k.value.value),a("backdrop-filter",k.value.value)];switch(k.value.value){case"none":return[a("-webkit-backdrop-filter","none"),a("backdrop-filter","none")]}}}),n("blur",{themeKeys:["--blur"],handle:k=>[h(),a("--tw-blur",`blur(${k})`),a("filter",i)]}),e("blur-none",[h,["--tw-blur"," "],["filter",i]]),n("backdrop-blur",{themeKeys:["--backdrop-blur","--blur"],handle:k=>[w(),a("--tw-backdrop-blur",`blur(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),e("backdrop-blur-none",[w,["--tw-backdrop-blur"," "],["-webkit-backdrop-filter",f],["backdrop-filter",f]]),n("brightness",{themeKeys:["--brightness"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,handle:k=>[h(),a("--tw-brightness",`brightness(${k})`),a("filter",i)]}),n("backdrop-brightness",{themeKeys:["--backdrop-brightness","--brightness"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,handle:k=>[w(),a("--tw-backdrop-brightness",`brightness(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),o("brightness",()=>[{values:["0","50","75","90","95","100","105","110","125","150","200"],valueThemeKeys:["--brightness"]}]),o("backdrop-brightness",()=>[{values:["0","50","75","90","95","100","105","110","125","150","200"],valueThemeKeys:["--backdrop-brightness","--brightness"]}]),n("contrast",{themeKeys:["--contrast"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,handle:k=>[h(),a("--tw-contrast",`contrast(${k})`),a("filter",i)]}),n("backdrop-contrast",{themeKeys:["--backdrop-contrast","--contrast"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,handle:k=>[w(),a("--tw-backdrop-contrast",`contrast(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),o("contrast",()=>[{values:["0","50","75","100","125","150","200"],valueThemeKeys:["--contrast"]}]),o("backdrop-contrast",()=>[{values:["0","50","75","100","125","150","200"],valueThemeKeys:["--backdrop-contrast","--contrast"]}]),n("grayscale",{themeKeys:["--grayscale"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,defaultValue:"100%",handle:k=>[h(),a("--tw-grayscale",`grayscale(${k})`),a("filter",i)]}),n("backdrop-grayscale",{themeKeys:["--backdrop-grayscale","--grayscale"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,defaultValue:"100%",handle:k=>[w(),a("--tw-backdrop-grayscale",`grayscale(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),o("grayscale",()=>[{values:["0","25","50","75","100"],valueThemeKeys:["--grayscale"],hasDefaultValue:!0}]),o("backdrop-grayscale",()=>[{values:["0","25","50","75","100"],valueThemeKeys:["--backdrop-grayscale","--grayscale"],hasDefaultValue:!0}]),n("hue-rotate",{supportsNegative:!0,themeKeys:["--hue-rotate"],handleBareValue:({value:k})=>N(k)?`${k}deg`:null,handle:k=>[h(),a("--tw-hue-rotate",`hue-rotate(${k})`),a("filter",i)]}),n("backdrop-hue-rotate",{supportsNegative:!0,themeKeys:["--backdrop-hue-rotate","--hue-rotate"],handleBareValue:({value:k})=>N(k)?`${k}deg`:null,handle:k=>[w(),a("--tw-backdrop-hue-rotate",`hue-rotate(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),o("hue-rotate",()=>[{values:["0","15","30","60","90","180"],valueThemeKeys:["--hue-rotate"]}]),o("backdrop-hue-rotate",()=>[{values:["0","15","30","60","90","180"],valueThemeKeys:["--backdrop-hue-rotate","--hue-rotate"]}]),n("invert",{themeKeys:["--invert"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,defaultValue:"100%",handle:k=>[h(),a("--tw-invert",`invert(${k})`),a("filter",i)]}),n("backdrop-invert",{themeKeys:["--backdrop-invert","--invert"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,defaultValue:"100%",handle:k=>[w(),a("--tw-backdrop-invert",`invert(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),o("invert",()=>[{values:["0","25","50","75","100"],valueThemeKeys:["--invert"],hasDefaultValue:!0}]),o("backdrop-invert",()=>[{values:["0","25","50","75","100"],valueThemeKeys:["--backdrop-invert","--invert"],hasDefaultValue:!0}]),n("saturate",{themeKeys:["--saturate"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,handle:k=>[h(),a("--tw-saturate",`saturate(${k})`),a("filter",i)]}),n("backdrop-saturate",{themeKeys:["--backdrop-saturate","--saturate"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,handle:k=>[w(),a("--tw-backdrop-saturate",`saturate(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),o("saturate",()=>[{values:["0","50","100","150","200"],valueThemeKeys:["--saturate"]}]),o("backdrop-saturate",()=>[{values:["0","50","100","150","200"],valueThemeKeys:["--backdrop-saturate","--saturate"]}]),n("sepia",{themeKeys:["--sepia"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,defaultValue:"100%",handle:k=>[h(),a("--tw-sepia",`sepia(${k})`),a("filter",i)]}),n("backdrop-sepia",{themeKeys:["--backdrop-sepia","--sepia"],handleBareValue:({value:k})=>N(k)?`${k}%`:null,defaultValue:"100%",handle:k=>[w(),a("--tw-backdrop-sepia",`sepia(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),o("sepia",()=>[{values:["0","50","100"],valueThemeKeys:["--sepia"],hasDefaultValue:!0}]),o("backdrop-sepia",()=>[{values:["0","50","100"],valueThemeKeys:["--backdrop-sepia","--sepia"],hasDefaultValue:!0}]),e("drop-shadow-none",[h,["--tw-drop-shadow"," "],["filter",i]]),n("drop-shadow",{themeKeys:["--drop-shadow"],handle:k=>[h(),a("--tw-drop-shadow",P(k,",").map(T=>`drop-shadow(${T})`).join(" ")),a("filter",i)]}),n("backdrop-opacity",{themeKeys:["--backdrop-opacity","--opacity"],handleBareValue:({value:k})=>Me(k)?`${k}%`:null,handle:k=>[w(),a("--tw-backdrop-opacity",`opacity(${k})`),a("-webkit-backdrop-filter",f),a("backdrop-filter",f)]}),o("backdrop-opacity",()=>[{values:Array.from({length:21},(k,T)=>`${T*5}`),valueThemeKeys:["--backdrop-opacity","--opacity"]}])}{let i=`var(--tw-ease, ${t.resolve(null,["--default-transition-timing-function"])??"ease"})`,f=`var(--tw-duration, ${t.resolve(null,["--default-transition-duration"])??"0s"})`;e("transition-none",[["transition-property","none"]]),e("transition-all",[["transition-property","all"],["transition-timing-function",i],["transition-duration",f]]),e("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",i],["transition-duration",f]]),e("transition-opacity",[["transition-property","opacity"],["transition-timing-function",i],["transition-duration",f]]),e("transition-shadow",[["transition-property","box-shadow"],["transition-timing-function",i],["transition-duration",f]]),e("transition-transform",[["transition-property","transform, translate, scale, rotate"],["transition-timing-function",i],["transition-duration",f]]),n("transition",{defaultValue:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter",themeKeys:["--transition-property"],handle:h=>[a("transition-property",h),a("transition-timing-function",i),a("transition-duration",f)]}),e("transition-discrete",[["transition-behavior","allow-discrete"]]),e("transition-normal",[["transition-behavior","normal"]]),n("delay",{handleBareValue:({value:h})=>N(h)?`${h}ms`:null,themeKeys:["--transition-delay"],handle:h=>[a("transition-delay",h)]});{let h=()=>D([S("--tw-duration")]);e("duration-initial",[h,["--tw-duration","initial"]]),r.functional("duration",w=>{if(w.modifier||!w.value)return;let k=null;if(w.value.kind==="arbitrary"?k=w.value.value:(k=t.resolve(w.value.fraction??w.value.value,["--transition-duration"]),k===null&&N(w.value.value)&&(k=`${w.value.value}ms`)),k!==null)return[h(),a("--tw-duration",k),a("transition-duration",k)]})}o("delay",()=>[{values:["75","100","150","200","300","500","700","1000"],valueThemeKeys:["--transition-delay"]}]),o("duration",()=>[{values:["75","100","150","200","300","500","700","1000"],valueThemeKeys:["--transition-duration"]}])}{let i=()=>D([S("--tw-ease")]);e("ease-initial",[i,["--tw-ease","initial"]]),e("ease-linear",[i,["--tw-ease","linear"],["transition-timing-function","linear"]]),n("ease",{themeKeys:["--ease"],handle:f=>[i(),a("--tw-ease",f),a("transition-timing-function",f)]})}e("will-change-auto",[["will-change","auto"]]),e("will-change-scroll",[["will-change","scroll-position"]]),e("will-change-contents",[["will-change","contents"]]),e("will-change-transform",[["will-change","transform"]]),n("will-change",{themeKeys:[],handle:i=>[a("will-change",i)]}),e("content-none",[["--tw-content","none"],["content","none"]]),n("content",{themeKeys:[],handle:i=>[D([S("--tw-content",'""')]),a("--tw-content",i),a("content","var(--tw-content)")]});{let i="var(--tw-contain-size,) var(--tw-contain-layout,) var(--tw-contain-paint,) var(--tw-contain-style,)",f=()=>D([S("--tw-contain-size"),S("--tw-contain-layout"),S("--tw-contain-paint"),S("--tw-contain-style")]);e("contain-none",[["contain","none"]]),e("contain-content",[["contain","content"]]),e("contain-strict",[["contain","strict"]]),e("contain-size",[f,["--tw-contain-size","size"],["contain",i]]),e("contain-inline-size",[f,["--tw-contain-size","inline-size"],["contain",i]]),e("contain-layout",[f,["--tw-contain-layout","layout"],["contain",i]]),e("contain-paint",[f,["--tw-contain-paint","paint"],["contain",i]]),e("contain-style",[f,["--tw-contain-style","style"],["contain",i]]),n("contain",{themeKeys:[],handle:h=>[a("contain",h)]})}e("forced-color-adjust-none",[["forced-color-adjust","none"]]),e("forced-color-adjust-auto",[["forced-color-adjust","auto"]]),e("leading-none",[()=>D([S("--tw-leading")]),["--tw-leading","1"],["line-height","1"]]),l("leading",["--leading","--spacing"],i=>[D([S("--tw-leading")]),a("--tw-leading",i),a("line-height",i)]),n("tracking",{supportsNegative:!0,themeKeys:["--tracking"],handle:i=>[D([S("--tw-tracking")]),a("--tw-tracking",i),a("letter-spacing",i)]}),e("antialiased",[["-webkit-font-smoothing","antialiased"],["-moz-osx-font-smoothing","grayscale"]]),e("subpixel-antialiased",[["-webkit-font-smoothing","auto"],["-moz-osx-font-smoothing","auto"]]);{let i="var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)",f=()=>D([S("--tw-ordinal"),S("--tw-slashed-zero"),S("--tw-numeric-figure"),S("--tw-numeric-spacing"),S("--tw-numeric-fraction")]);e("normal-nums",[["font-variant-numeric","normal"]]),e("ordinal",[f,["--tw-ordinal","ordinal"],["font-variant-numeric",i]]),e("slashed-zero",[f,["--tw-slashed-zero","slashed-zero"],["font-variant-numeric",i]]),e("lining-nums",[f,["--tw-numeric-figure","lining-nums"],["font-variant-numeric",i]]),e("oldstyle-nums",[f,["--tw-numeric-figure","oldstyle-nums"],["font-variant-numeric",i]]),e("proportional-nums",[f,["--tw-numeric-spacing","proportional-nums"],["font-variant-numeric",i]]),e("tabular-nums",[f,["--tw-numeric-spacing","tabular-nums"],["font-variant-numeric",i]]),e("diagonal-fractions",[f,["--tw-numeric-fraction","diagonal-fractions"],["font-variant-numeric",i]]),e("stacked-fractions",[f,["--tw-numeric-fraction","stacked-fractions"],["font-variant-numeric",i]])}{let i=()=>D([S("--tw-outline-style","solid")]);r.static("outline-hidden",()=>[a("--tw-outline-style","none"),a("outline-style","none"),U("@media","(forced-colors: active)",[a("outline","2px solid transparent"),a("outline-offset","2px")])]),e("outline-none",[["--tw-outline-style","none"],["outline-style","none"]]),e("outline-solid",[["--tw-outline-style","solid"],["outline-style","solid"]]),e("outline-dashed",[["--tw-outline-style","dashed"],["outline-style","dashed"]]),e("outline-dotted",[["--tw-outline-style","dotted"],["outline-style","dotted"]]),e("outline-double",[["--tw-outline-style","double"],["outline-style","double"]]),r.functional("outline",f=>{if(f.value===null){if(f.modifier)return;let h=t.get(["--default-outline-width"])??"1px";return[i(),a("outline-style","var(--tw-outline-style)"),a("outline-width",h)]}if(f.value.kind==="arbitrary"){let h=f.value.value;switch(f.value.dataType??I(h,["color","length","number","percentage"])){case"length":case"number":case"percentage":return f.modifier?void 0:[i(),a("outline-style","var(--tw-outline-style)"),a("outline-width",h)];default:return h=B(h,f.modifier,t),h===null?void 0:[a("outline-color",h)]}}{let h=G(f,t,["--outline-color","--color"]);if(h)return[a("outline-color",h)]}{if(f.modifier)return;let h=t.resolve(f.value.value,["--outline-width"]);if(h)return[i(),a("outline-style","var(--tw-outline-style)"),a("outline-width",h)];if(N(f.value.value))return[i(),a("outline-style","var(--tw-outline-style)"),a("outline-width",`${f.value.value}px`)]}}),o("outline",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--outline-color","--color"],modifiers:Array.from({length:21},(f,h)=>`${h*5}`),hasDefaultValue:!0},{values:["0","1","2","4","8"],valueThemeKeys:["--outline-width"]}]),n("outline-offset",{supportsNegative:!0,themeKeys:["--outline-offset"],handleBareValue:({value:f})=>N(f)?`${f}px`:null,handle:f=>[a("outline-offset",f)]}),o("outline-offset",()=>[{supportsNegative:!0,values:["0","1","2","4","8"],valueThemeKeys:["--outline-offset"]}])}n("opacity",{themeKeys:["--opacity"],handleBareValue:({value:i})=>Me(i)?`${i}%`:null,handle:i=>[a("opacity",i)]}),o("opacity",()=>[{values:Array.from({length:21},(i,f)=>`${f*5}`),valueThemeKeys:["--opacity"]}]),e("underline-offset-auto",[["text-underline-offset","auto"]]),n("underline-offset",{supportsNegative:!0,themeKeys:["--text-underline-offset"],handleBareValue:({value:i})=>N(i)?`${i}px`:null,handle:i=>[a("text-underline-offset",i)]}),o("underline-offset",()=>[{supportsNegative:!0,values:["0","1","2","4","8"],valueThemeKeys:["--text-underline-offset"]}]),r.functional("text",i=>{if(i.value){if(i.value.kind==="arbitrary"){let f=i.value.value;switch(i.value.dataType??I(f,["color","length","percentage","absolute-size","relative-size"])){case"size":case"length":case"percentage":case"absolute-size":case"relative-size":{if(i.modifier){let w=i.modifier.kind==="arbitrary"?i.modifier.value:t.resolve(i.modifier.value,["--leading"]);if(!w&&ge(i.modifier.value)){let k=t.resolve(null,["--spacing"]);if(!k)return null;w=`calc(${k} * ${i.modifier.value})`}return!w&&i.modifier.value==="none"&&(w="1"),w?[a("font-size",f),a("line-height",w)]:null}return[a("font-size",f)]}default:return f=B(f,i.modifier,t),f===null?void 0:[a("color",f)]}}{let f=G(i,t,["--text-color","--color"]);if(f)return[a("color",f)]}{let f=t.resolveWith(i.value.value,["--text"],["--line-height","--letter-spacing","--font-weight"]);if(f){let[h,w={}]=Array.isArray(f)?f:[f];if(i.modifier){let k=i.modifier.kind==="arbitrary"?i.modifier.value:t.resolve(i.modifier.value,["--leading"]);if(!k&&ge(i.modifier.value)){let E=t.resolve(null,["--spacing"]);if(!E)return null;k=`calc(${E} * ${i.modifier.value})`}if(!k&&i.modifier.value==="none"&&(k="1"),!k)return null;let T=[a("font-size",h)];return k&&T.push(a("line-height",k)),T}return typeof w=="string"?[a("font-size",h),a("line-height",w)]:[a("font-size",h),a("line-height",w["--line-height"]?`var(--tw-leading, ${w["--line-height"]})`:void 0),a("letter-spacing",w["--letter-spacing"]?`var(--tw-tracking, ${w["--letter-spacing"]})`:void 0),a("font-weight",w["--font-weight"]?`var(--tw-font-weight, ${w["--font-weight"]})`:void 0)]}}}}),o("text",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--text-color","--color"],modifiers:Array.from({length:21},(i,f)=>`${f*5}`)},{values:[],valueThemeKeys:["--text"],modifiers:[],modifierThemeKeys:["--leading"]}]);{let k=function(C){return`var(--tw-ring-inset,) 0 0 0 calc(${C} + var(--tw-ring-offset-width)) var(--tw-ring-color, ${w})`},T=function(C){return`inset 0 0 0 ${C} var(--tw-inset-ring-color, currentColor)`};var R=k,K=T;let i=["var(--tw-inset-shadow)","var(--tw-inset-ring-shadow)","var(--tw-ring-offset-shadow)","var(--tw-ring-shadow)","var(--tw-shadow)"].join(", "),f="0 0 #0000",h=()=>D([S("--tw-shadow",f),S("--tw-shadow-color"),S("--tw-inset-shadow",f),S("--tw-inset-shadow-color"),S("--tw-ring-color"),S("--tw-ring-shadow",f),S("--tw-inset-ring-color"),S("--tw-inset-ring-shadow",f),S("--tw-ring-inset"),S("--tw-ring-offset-width","0px",""),S("--tw-ring-offset-color","#fff"),S("--tw-ring-offset-shadow",f)]);e("shadow-initial",[h,["--tw-shadow-color","initial"]]),r.functional("shadow",C=>{if(!C.value){let A=t.get(["--shadow"]);return A===null?void 0:[h(),a("--tw-shadow",ce(A,F=>`var(--tw-shadow-color, ${F})`)),a("box-shadow",i)]}if(C.value.kind==="arbitrary"){let A=C.value.value;switch(C.value.dataType??I(A,["color"])){case"color":return A=B(A,C.modifier,t),A===null?void 0:[h(),a("--tw-shadow-color",A)];default:return[h(),a("--tw-shadow",ce(A,Oe=>`var(--tw-shadow-color, ${Oe})`)),a("box-shadow",i)]}}switch(C.value.value){case"none":return C.modifier?void 0:[h(),a("--tw-shadow",f),a("box-shadow",i)]}{let A=t.get([`--shadow-${C.value.value}`]);if(A)return C.modifier?void 0:[h(),a("--tw-shadow",ce(A,F=>`var(--tw-shadow-color, ${F})`)),a("box-shadow",i)]}{let A=G(C,t,["--box-shadow-color","--color"]);if(A)return[h(),a("--tw-shadow-color",A)]}}),o("shadow",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--box-shadow-color","--color"],modifiers:Array.from({length:21},(C,A)=>`${A*5}`)},{values:["none"],valueThemeKeys:["--shadow"],hasDefaultValue:!0}]),e("inset-shadow-initial",[h,["--tw-inset-shadow-color","initial"]]),r.functional("inset-shadow",C=>{if(!C.value){let A=t.get(["--inset-shadow"]);return A===null?void 0:[h(),a("--tw-inset-shadow",ce(A,F=>`var(--tw-inset-shadow-color, ${F})`)),a("box-shadow",i)]}if(C.value.kind==="arbitrary"){let A=C.value.value;switch(C.value.dataType??I(A,["color"])){case"color":return A=B(A,C.modifier,t),A===null?void 0:[h(),a("--tw-inset-shadow-color",A)];default:return[h(),a("--tw-inset-shadow",`inset ${ce(A,Oe=>`var(--tw-inset-shadow-color, ${Oe})`)}`),a("box-shadow",i)]}}switch(C.value.value){case"none":return C.modifier?void 0:[h(),a("--tw-inset-shadow",f),a("box-shadow",i)]}{let A=t.get([`--inset-shadow-${C.value.value}`]);if(A)return C.modifier?void 0:[h(),a("--tw-inset-shadow",ce(A,F=>`var(--tw-inset-shadow-color, ${F})`)),a("box-shadow",i)]}{let A=G(C,t,["--box-shadow-color","--color"]);if(A)return[h(),a("--tw-inset-shadow-color",A)]}}),o("inset-shadow",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--box-shadow-color","--color"],modifiers:Array.from({length:21},(C,A)=>`${A*5}`)},{values:[],valueThemeKeys:["--inset-shadow"],hasDefaultValue:!0}]),e("ring-inset",[h,["--tw-ring-inset","inset"]]);let w=t.get(["--default-ring-color"])??"currentColor";r.functional("ring",C=>{if(!C.value){if(C.modifier)return;let A=t.get(["--default-ring-width"])??"1px";return[h(),a("--tw-ring-shadow",k(A)),a("box-shadow",i)]}if(C.value.kind==="arbitrary"){let A=C.value.value;switch(C.value.dataType??I(A,["color","length"])){case"length":return C.modifier?void 0:[h(),a("--tw-ring-shadow",k(A)),a("box-shadow",i)];default:return A=B(A,C.modifier,t),A===null?void 0:[a("--tw-ring-color",A)]}}{let A=G(C,t,["--ring-color","--color"]);if(A)return[a("--tw-ring-color",A)]}{if(C.modifier)return;let A=t.resolve(C.value.value,["--ring-width"]);if(A===null&&N(C.value.value)&&(A=`${C.value.value}px`),A)return[h(),a("--tw-ring-shadow",k(A)),a("box-shadow",i)]}}),o("ring",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--ring-color","--color"],modifiers:Array.from({length:21},(C,A)=>`${A*5}`)},{values:["0","1","2","4","8"],valueThemeKeys:["--ring-width"],hasDefaultValue:!0}]),r.functional("inset-ring",C=>{if(!C.value)return C.modifier?void 0:[h(),a("--tw-inset-ring-shadow",T("1px")),a("box-shadow",i)];if(C.value.kind==="arbitrary"){let A=C.value.value;switch(C.value.dataType??I(A,["color","length"])){case"length":return C.modifier?void 0:[h(),a("--tw-inset-ring-shadow",T(A)),a("box-shadow",i)];default:return A=B(A,C.modifier,t),A===null?void 0:[a("--tw-inset-ring-color",A)]}}{let A=G(C,t,["--ring-color","--color"]);if(A)return[a("--tw-inset-ring-color",A)]}{if(C.modifier)return;let A=t.resolve(C.value.value,["--ring-width"]);if(A===null&&N(C.value.value)&&(A=`${C.value.value}px`),A)return[h(),a("--tw-inset-ring-shadow",T(A)),a("box-shadow",i)]}}),o("inset-ring",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--ring-color","--color"],modifiers:Array.from({length:21},(C,A)=>`${A*5}`)},{values:["0","1","2","4","8"],valueThemeKeys:["--ring-width"],hasDefaultValue:!0}]);let E="var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)";r.functional("ring-offset",C=>{if(C.value){if(C.value.kind==="arbitrary"){let A=C.value.value;switch(C.value.dataType??I(A,["color","length"])){case"length":return C.modifier?void 0:[a("--tw-ring-offset-width",A),a("--tw-ring-offset-shadow",E)];default:return A=B(A,C.modifier,t),A===null?void 0:[a("--tw-ring-offset-color",A)]}}{let A=t.resolve(C.value.value,["--ring-offset-width"]);if(A)return C.modifier?void 0:[a("--tw-ring-offset-width",A),a("--tw-ring-offset-shadow",E)];if(N(C.value.value))return C.modifier?void 0:[a("--tw-ring-offset-width",`${C.value.value}px`),a("--tw-ring-offset-shadow",E)]}{let A=G(C,t,["--ring-offset-color","--color"]);if(A)return[a("--tw-ring-offset-color",A)]}}})}return o("ring-offset",()=>[{values:["current","inherit","transparent"],valueThemeKeys:["--ring-offset-color","--color"],modifiers:Array.from({length:21},(i,f)=>`${f*5}`)},{values:["0","1","2","4","8"],valueThemeKeys:["--ring-offset-width"]}]),r.functional("@container",i=>{let f=null;if(i.value===null?f="inline-size":i.value.kind==="arbitrary"?f=i.value.value:i.value.kind==="named"&&i.value.value==="normal"&&(f="normal"),f!==null)return i.modifier?[a("container-type",f),a("container-name",i.modifier.value)]:[a("container-type",f)]}),o("@container",()=>[{values:["normal"],valueThemeKeys:[],hasDefaultValue:!0}]),r}function nr(t){let r=t.params;return Jo.test(r)?o=>{let e=new Set,n=new Set;_(t.nodes,s=>{if(s.kind!=="declaration"||!s.value||!s.value.includes("--value(")&&!s.value.includes("--modifier("))return;let l=L(s.value);ee(l,p=>{if(p.kind!=="function"||p.value!=="--value"&&p.value!=="--modifier")return;let c=P(H(p.nodes),",");for(let[d,u]of c.entries())u=u.replace(/\\\*/g,"*"),u=u.replace(/--(.*?)\s--(.*?)/g,"--$1-*--$2"),u=u.replace(/\s+/g,""),u=u.replace(/(-\*){2,}/g,"-*"),u[0]==="-"&&u[1]==="-"&&!u.includes("-*")&&(u+="-*"),c[d]=u;p.nodes=L(c.join(","));for(let d of p.nodes)if(d.kind==="word"&&d.value[0]==="-"&&d.value[1]==="-"){let u=d.value.replace(/-\*.*$/g,"");p.value==="--value"?e.add(u):p.value==="--modifier"&&n.add(u)}}),s.value=H(l)}),o.utilities.functional(r.slice(0,-2),s=>{let l=structuredClone(t),p=s.value,c=s.modifier;if(p===null)return;let d=!1,u=!1,g=!1,m=!1,v=new Map,y=!1;if(_([l],(b,{parent:x,replaceWith:$})=>{if(x?.kind!=="rule"&&x?.kind!=="at-rule"||b.kind!=="declaration"||!b.value)return;let V=L(b.value);(ee(V,(R,{replaceWith:K})=>{if(R.kind==="function"){if(R.value==="--value"){d=!0;let i=rr(p,R,o);return i?(u=!0,i.ratio?y=!0:v.set(b,x),K(i.nodes),1):(d||=!1,$([]),2)}else if(R.value==="--modifier"){if(c===null)return $([]),1;g=!0;let i=rr(c,R,o);return i?(m=!0,K(i.nodes),1):(g||=!1,$([]),2)}}})??0)===0&&(b.value=H(V))}),d&&!u||g&&!m||y&&m||c&&!y&&!m)return null;if(y)for(let[b,x]of v){let $=x.nodes.indexOf(b);$!==-1&&x.nodes.splice($,1)}return l.nodes}),o.utilities.suggest(r.slice(0,-2),()=>[{values:o.theme.keysInNamespaces(e).map(s=>s.replaceAll("_",".")),modifiers:o.theme.keysInNamespaces(n).map(s=>s.replaceAll("_","."))}])}:Yo.test(r)?o=>{o.utilities.static(r,()=>structuredClone(t.nodes))}:null}function rr(t,r,o){for(let e of r.nodes)if(t.kind==="named"&&e.kind==="word"&&e.value[0]==="-"&&e.value[1]==="-"){let n=e.value;if(n.endsWith("-*")){n=n.slice(0,-2);let s=o.theme.resolve(t.value,[n]);if(s)return{nodes:L(s)}}else{let s=n.split("-*");if(s.length<=1)continue;let l=[s.shift()],p=o.theme.resolveWith(t.value,l,s);if(p){let[,c={}]=p;{let d=c[s.pop()];if(d)return{nodes:L(d)}}}}}else if(t.kind==="named"&&e.kind==="word"){if(e.value!=="number"&&e.value!=="integer"&&e.value!=="ratio"&&e.value!=="percentage")continue;let n=e.value==="ratio"&&"fraction"in t?t.fraction:t.value;if(!n)continue;let s=I(n,[e.value]);if(s===null)continue;if(s==="ratio"){let[l,p]=P(n,"/");if(!N(l)||!N(p))continue}else{if(s==="number"&&!ge(n))continue;if(s==="percentage"&&!N(n.slice(0,-1)))continue}return{nodes:L(n),ratio:s==="ratio"}}else if(t.kind==="arbitrary"&&e.kind==="word"&&e.value[0]==="["&&e.value[e.value.length-1]==="]"){let n=e.value.slice(1,-1);if(n==="*")return{nodes:L(t.value)};if("dataType"in t&&t.dataType&&t.dataType!==n)continue;if("dataType"in t&&t.dataType)return{nodes:L(t.value)};if(I(t.value,[n])!==null)return{nodes:L(t.value)}}}var gt={"--alpha":Zo,"--spacing":Qo,"--theme":Xo,theme:ar};function Zo(t,r,...o){let[e,n]=P(r,"/").map(s=>s.trim());if(!e||!n)throw new Error(`The --alpha(\u2026) function requires a color and an alpha value, e.g.: \`--alpha(${e||"var(--my-color)"} / ${n||"50%"})\``);if(o.length>0)throw new Error(`The --alpha(\u2026) function only accepts one argument, e.g.: \`--alpha(${e||"var(--my-color)"} / ${n||"50%"})\``);return J(e,n)}function Qo(t,r,...o){if(!r)throw new Error("The --spacing(\u2026) function requires an argument, but received none.");if(o.length>0)throw new Error(`The --spacing(\u2026) function only accepts a single argument, but received ${o.length+1}.`);let e=t.theme.resolve(null,["--spacing"]);if(!e)throw new Error("The --spacing(\u2026) function requires that the `--spacing` theme variable exists, but it was not found.");return`calc(${e} * ${r})`}function Xo(t,r,...o){if(!r.startsWith("--"))throw new Error("The --theme(\u2026) function can only be used with CSS variables from your theme.");return ar(t,r,...o)}function ar(t,r,...o){r=en(r);let e=t.resolveThemeValue(r);if(!e&&o.length>0)return o.join(", ");if(!e)throw new Error(`Could not resolve value for theme function: \`theme(${r})\`. Consider checking if the path is correct or provide a fallback value to silence this error.`);return e}var ir=new RegExp(Object.keys(gt).map(t=>`${t}\\(`).join("|"));function he(t,r){let o=0;return _(t,e=>{if(e.kind==="declaration"&&e.value&&ir.test(e.value)){o|=8,e.value=lr(e.value,r);return}e.kind==="at-rule"&&(e.name==="@media"||e.name==="@custom-media"||e.name==="@container"||e.name==="@supports")&&ir.test(e.params)&&(o|=8,e.params=lr(e.params,r))}),o}function lr(t,r){let o=L(t);return ee(o,(e,{replaceWith:n})=>{if(e.kind==="function"&&e.value in gt){let s=P(H(e.nodes).trim(),",").map(p=>p.trim()),l=gt[e.value](r,...s);return n(L(l))}}),H(o)}function en(t){if(t[0]!=="'"&&t[0]!=='"')return t;let r="",o=t[0];for(let e=1;e=48&&l<=57&&p>=48&&p<=57){let c=s,d=s+1,u=s,g=s+1;for(l=t.charCodeAt(d);l>=48&&l<=57;)l=t.charCodeAt(++d);for(p=r.charCodeAt(g);p>=48&&p<=57;)p=r.charCodeAt(++g);let m=t.slice(c,d),v=r.slice(u,g),y=Number(m)-Number(v);if(y)return y;if(mv)return 1;continue}if(l!==p)return l-p}return t.length-r.length}var tn=/^\d+\/\d+$/;function sr(t){let r=[];for(let e of t.utilities.keys("static"))r.push({name:e,utility:e,fraction:!1,modifiers:[]});for(let e of t.utilities.keys("functional")){let n=t.utilities.getCompletions(e);for(let s of n)for(let l of s.values){let p=l!==null&&tn.test(l),c=l===null?e:`${e}-${l}`;r.push({name:c,utility:e,fraction:p,modifiers:s.modifiers}),s.supportsNegative&&r.push({name:`-${c}`,utility:`-${e}`,fraction:p,modifiers:s.modifiers})}}return r.length===0?[]:(r.sort((e,n)=>Be(e.name,n.name)),rn(r))}function rn(t){let r=[],o=null,e=new Map,n=new j(()=>[]);for(let l of t){let{utility:p,fraction:c}=l;o||(o={utility:p,items:[]},e.set(p,o)),p!==o.utility&&(r.push(o),o={utility:p,items:[]},e.set(p,o)),c?n.get(p).push(l):o.items.push(l)}o&&r[r.length-1]!==o&&r.push(o);for(let[l,p]of n){let c=e.get(l);c&&c.items.push(...p)}let s=[];for(let l of r)for(let p of l.items)s.push([p.name,{modifiers:p.modifiers}]);return s}function ur(t){let r=[];for(let[e,n]of t.variants.entries()){let p=function({value:c,modifier:d}={}){let u=e;c&&(u+=s?`-${c}`:c),d&&(u+=`/${d}`);let g=t.parseVariant(u);if(!g)return[];let m=z(".__placeholder__",[]);if(be(m,g,t.variants)===null)return[];let v=[];return je(m.nodes,(y,{path:b})=>{if(y.kind!=="rule"&&y.kind!=="at-rule"||y.nodes.length>0)return;b.sort((V,O)=>{let R=V.kind==="at-rule",K=O.kind==="at-rule";return R&&!K?-1:!R&&K?1:0});let x=b.flatMap(V=>V.kind==="rule"?V.selector==="&"?[]:[V.selector]:V.kind==="at-rule"?[`${V.name} ${V.params}`]:[]),$="";for(let V=x.length-1;V>=0;V--)$=$===""?x[V]:`${x[V]} { ${$} }`;v.push($)}),v};var o=p;if(n.kind==="arbitrary")continue;let s=e!=="@",l=t.variants.getCompletions(e);switch(n.kind){case"static":{r.push({name:e,values:l,isArbitrary:!1,hasDash:s,selectors:p});break}case"functional":{r.push({name:e,values:l,isArbitrary:!0,hasDash:s,selectors:p});break}case"compound":{r.push({name:e,values:l,isArbitrary:!0,hasDash:s,selectors:p});break}}}return r}function cr(t,r){let{astNodes:o,nodeSorting:e}=ne(Array.from(r),t),n=new Map(r.map(l=>[l,null])),s=0n;for(let l of o){let p=e.get(l)?.candidate;p&&n.set(p,n.get(p)??s++)}return r.map(l=>[l,n.get(l)??null])}var We=/^@?[a-zA-Z0-9_-]*$/;var bt=class{compareFns=new Map;variants=new Map;completions=new Map;groupOrder=null;lastOrder=0;static(r,o,{compounds:e,order:n}={}){this.set(r,{kind:"static",applyFn:o,compoundsWith:0,compounds:e??2,order:n})}fromAst(r,o){let e=[];_(o,n=>{n.kind==="rule"?e.push(n.selector):n.kind==="at-rule"&&n.name!=="@slot"&&e.push(`${n.name} ${n.params}`)}),this.static(r,n=>{let s=structuredClone(o);yt(s,n.nodes),n.nodes=s},{compounds:fe(e)})}functional(r,o,{compounds:e,order:n}={}){this.set(r,{kind:"functional",applyFn:o,compoundsWith:0,compounds:e??2,order:n})}compound(r,o,e,{compounds:n,order:s}={}){this.set(r,{kind:"compound",applyFn:e,compoundsWith:o,compounds:n??2,order:s})}group(r,o){this.groupOrder=this.nextOrder(),o&&this.compareFns.set(this.groupOrder,o),r(),this.groupOrder=null}has(r){return this.variants.has(r)}get(r){return this.variants.get(r)}kind(r){return this.variants.get(r)?.kind}compoundsWith(r,o){let e=this.variants.get(r),n=typeof o=="string"?this.variants.get(o):o.kind==="arbitrary"?{compounds:fe([o.selector])}:this.variants.get(o.root);return!(!e||!n||e.kind!=="compound"||n.compounds===0||e.compoundsWith===0||(e.compoundsWith&n.compounds)===0)}suggest(r,o){this.completions.set(r,o)}getCompletions(r){return this.completions.get(r)?.()??[]}compare(r,o){if(r===o)return 0;if(r===null)return-1;if(o===null)return 1;if(r.kind==="arbitrary"&&o.kind==="arbitrary")return r.selector{m.nodes=u.map(v=>M(v,m.nodes))},{compounds:g})}o("*",[":is(& > *)"],{compounds:0}),o("**",[":is(& *)"],{compounds:0});function e(d,u){return u.map(g=>{g=g.trim();let m=P(g," ");return m[0]==="not"?m.slice(1).join(" "):d==="@container"?m[0][0]==="("?`not ${g}`:m[1]==="not"?`${m[0]} ${m.slice(2).join(" ")}`:`${m[0]} not ${m.slice(1).join(" ")}`:`not ${g}`})}let n=["@media","@supports","@container"];function s(d){for(let u of n){if(u!==d.name)continue;let g=P(d.params,",");return g.length>1?null:(g=e(d.name,g),U(d.name,g.join(", ")))}return null}function l(d){return d.includes("::")?null:`&:not(${P(d,",").map(g=>(g=g.replaceAll("&","*"),g)).join(", ")})`}r.compound("not",3,(d,u)=>{if(u.variant.kind==="arbitrary"&&u.variant.relative||u.modifier)return null;let g=!1;if(_([d],(m,{path:v})=>{if(m.kind!=="rule"&&m.kind!=="at-rule")return 0;if(m.nodes.length>0)return 0;let y=[],b=[];for(let $ of v)$.kind==="at-rule"?y.push($):$.kind==="rule"&&b.push($);if(y.length>1)return 2;if(b.length>1)return 2;let x=[];for(let $ of b){let V=l($.selector);if(!V)return g=!1,2;x.push(z(V,[]))}for(let $ of y){let V=s($);if(!V)return g=!1,2;x.push(V)}return Object.assign(d,z("&",x)),g=!0,1}),d.kind==="rule"&&d.selector==="&"&&d.nodes.length===1&&Object.assign(d,d.nodes[0]),!g)return null}),r.suggest("not",()=>Array.from(r.keys()).filter(d=>r.compoundsWith("not",d))),r.compound("group",2,(d,u)=>{if(u.variant.kind==="arbitrary"&&u.variant.relative)return null;let g=u.modifier?`:where(.${t.prefix?`${t.prefix}\\:`:""}group\\/${u.modifier.value})`:`:where(.${t.prefix?`${t.prefix}\\:`:""}group)`,m=!1;if(_([d],(v,{path:y})=>{if(v.kind!=="rule")return 0;for(let x of y.slice(0,-1))if(x.kind==="rule")return m=!1,2;let b=v.selector.replaceAll("&",g);P(b,",").length>1&&(b=`:is(${b})`),v.selector=`&:is(${b} *)`,m=!0}),!m)return null}),r.suggest("group",()=>Array.from(r.keys()).filter(d=>r.compoundsWith("group",d))),r.compound("peer",2,(d,u)=>{if(u.variant.kind==="arbitrary"&&u.variant.relative)return null;let g=u.modifier?`:where(.${t.prefix?`${t.prefix}\\:`:""}peer\\/${u.modifier.value})`:`:where(.${t.prefix?`${t.prefix}\\:`:""}peer)`,m=!1;if(_([d],(v,{path:y})=>{if(v.kind!=="rule")return 0;for(let x of y.slice(0,-1))if(x.kind==="rule")return m=!1,2;let b=v.selector.replaceAll("&",g);P(b,",").length>1&&(b=`:is(${b})`),v.selector=`&:is(${b} ~ *)`,m=!0}),!m)return null}),r.suggest("peer",()=>Array.from(r.keys()).filter(d=>r.compoundsWith("peer",d))),o("first-letter",["&::first-letter"]),o("first-line",["&::first-line"]),o("marker",["& *::marker","&::marker"]),o("selection",["& *::selection","&::selection"]),o("file",["&::file-selector-button"]),o("placeholder",["&::placeholder"]),o("backdrop",["&::backdrop"]),!1;{let d=function(){return D([U("@property","--tw-content",[a("syntax",'"*"'),a("initial-value",'""'),a("inherits","false")])])};var p=d;r.static("before",u=>{u.nodes=[z("&::before",[d(),a("content","var(--tw-content)"),...u.nodes])]},{compounds:0}),r.static("after",u=>{u.nodes=[z("&::after",[d(),a("content","var(--tw-content)"),...u.nodes])]},{compounds:0})}o("first",["&:first-child"]),o("last",["&:last-child"]),o("only",["&:only-child"]),o("odd",["&:nth-child(odd)"]),o("even",["&:nth-child(even)"]),o("first-of-type",["&:first-of-type"]),o("last-of-type",["&:last-of-type"]),o("only-of-type",["&:only-of-type"]),o("visited",["&:visited"]),o("target",["&:target"]),o("open",["&:is([open], :popover-open, :open)"]),o("default",["&:default"]),o("checked",["&:checked"]),o("indeterminate",["&:indeterminate"]),o("placeholder-shown",["&:placeholder-shown"]),o("autofill",["&:autofill"]),o("optional",["&:optional"]),o("required",["&:required"]),o("valid",["&:valid"]),o("invalid",["&:invalid"]),!1,o("in-range",["&:in-range"]),o("out-of-range",["&:out-of-range"]),o("read-only",["&:read-only"]),o("empty",["&:empty"]),o("focus-within",["&:focus-within"]),r.static("hover",d=>{d.nodes=[z("&:hover",[U("@media","(hover: hover)",d.nodes)])]}),o("focus",["&:focus"]),o("focus-visible",["&:focus-visible"]),o("active",["&:active"]),o("enabled",["&:enabled"]),o("disabled",["&:disabled"]),o("inert",["&:is([inert], [inert] *)"]),r.compound("in",2,(d,u)=>{if(u.modifier)return null;let g=!1;if(_([d],(m,{path:v})=>{if(m.kind!=="rule")return 0;for(let y of v.slice(0,-1))if(y.kind==="rule")return g=!1,2;m.selector=`:where(${m.selector.replaceAll("&","*")}) &`,g=!0}),!g)return null}),r.suggest("in",()=>Array.from(r.keys()).filter(d=>r.compoundsWith("in",d))),r.compound("has",2,(d,u)=>{if(u.modifier)return null;let g=!1;if(_([d],(m,{path:v})=>{if(m.kind!=="rule")return 0;for(let y of v.slice(0,-1))if(y.kind==="rule")return g=!1,2;m.selector=`&:has(${m.selector.replaceAll("&","*")})`,g=!0}),!g)return null}),r.suggest("has",()=>Array.from(r.keys()).filter(d=>r.compoundsWith("has",d))),r.functional("aria",(d,u)=>{if(!u.value||u.modifier)return null;u.value.kind==="arbitrary"?d.nodes=[z(`&[aria-${fr(u.value.value)}]`,d.nodes)]:d.nodes=[z(`&[aria-${u.value.value}="true"]`,d.nodes)]}),r.suggest("aria",()=>["busy","checked","disabled","expanded","hidden","pressed","readonly","required","selected"]),r.functional("data",(d,u)=>{if(!u.value||u.modifier)return null;d.nodes=[z(`&[data-${fr(u.value.value)}]`,d.nodes)]}),r.functional("nth",(d,u)=>{if(!u.value||u.modifier||u.value.kind==="named"&&!N(u.value.value))return null;d.nodes=[z(`&:nth-child(${u.value.value})`,d.nodes)]}),r.functional("nth-last",(d,u)=>{if(!u.value||u.modifier||u.value.kind==="named"&&!N(u.value.value))return null;d.nodes=[z(`&:nth-last-child(${u.value.value})`,d.nodes)]}),r.functional("nth-of-type",(d,u)=>{if(!u.value||u.modifier||u.value.kind==="named"&&!N(u.value.value))return null;d.nodes=[z(`&:nth-of-type(${u.value.value})`,d.nodes)]}),r.functional("nth-last-of-type",(d,u)=>{if(!u.value||u.modifier||u.value.kind==="named"&&!N(u.value.value))return null;d.nodes=[z(`&:nth-last-of-type(${u.value.value})`,d.nodes)]}),r.functional("supports",(d,u)=>{if(!u.value||u.modifier)return null;let g=u.value.value;if(g===null)return null;if(/^[\w-]*\s*\(/.test(g)){let m=g.replace(/\b(and|or|not)\b/g," $1 ");d.nodes=[U("@supports",m,d.nodes)];return}g.includes(":")||(g=`${g}: var(--tw)`),(g[0]!=="("||g[g.length-1]!==")")&&(g=`(${g})`),d.nodes=[U("@supports",g,d.nodes)]},{compounds:1}),o("motion-safe",["@media (prefers-reduced-motion: no-preference)"]),o("motion-reduce",["@media (prefers-reduced-motion: reduce)"]),o("contrast-more",["@media (prefers-contrast: more)"]),o("contrast-less",["@media (prefers-contrast: less)"]);{let d=function(u,g,m,v){if(u===g)return 0;let y=v.get(u);if(y===null)return m==="asc"?-1:1;let b=v.get(g);return b===null?m==="asc"?1:-1:ue(y,b,m)};var c=d;{let u=t.namespace("--breakpoint"),g=new j(m=>{switch(m.kind){case"static":return t.resolveValue(m.root,["--breakpoint"])??null;case"functional":{if(!m.value||m.modifier)return null;let v=null;return m.value.kind==="arbitrary"?v=m.value.value:m.value.kind==="named"&&(v=t.resolveValue(m.value.value,["--breakpoint"])),!v||v.includes("var(")?null:v}case"arbitrary":case"compound":return null}});r.group(()=>{r.functional("max",(m,v)=>{if(v.modifier)return null;let y=g.get(v);if(y===null)return null;m.nodes=[U("@media",`(width < ${y})`,m.nodes)]},{compounds:1})},(m,v)=>d(m,v,"desc",g)),r.suggest("max",()=>Array.from(u.keys()).filter(m=>m!==null)),r.group(()=>{for(let[m,v]of t.namespace("--breakpoint"))m!==null&&r.static(m,y=>{y.nodes=[U("@media",`(width >= ${v})`,y.nodes)]},{compounds:1});r.functional("min",(m,v)=>{if(v.modifier)return null;let y=g.get(v);if(y===null)return null;m.nodes=[U("@media",`(width >= ${y})`,m.nodes)]},{compounds:1})},(m,v)=>d(m,v,"asc",g)),r.suggest("min",()=>Array.from(u.keys()).filter(m=>m!==null))}{let u=t.namespace("--container"),g=new j(m=>{switch(m.kind){case"functional":{if(m.value===null)return null;let v=null;return m.value.kind==="arbitrary"?v=m.value.value:m.value.kind==="named"&&(v=t.resolveValue(m.value.value,["--container"])),!v||v.includes("var(")?null:v}case"static":case"arbitrary":case"compound":return null}});r.group(()=>{r.functional("@max",(m,v)=>{let y=g.get(v);if(y===null)return null;m.nodes=[U("@container",v.modifier?`${v.modifier.value} (width < ${y})`:`(width < ${y})`,m.nodes)]},{compounds:1})},(m,v)=>d(m,v,"desc",g)),r.suggest("@max",()=>Array.from(u.keys()).filter(m=>m!==null)),r.group(()=>{r.functional("@",(m,v)=>{let y=g.get(v);if(y===null)return null;m.nodes=[U("@container",v.modifier?`${v.modifier.value} (width >= ${y})`:`(width >= ${y})`,m.nodes)]},{compounds:1}),r.functional("@min",(m,v)=>{let y=g.get(v);if(y===null)return null;m.nodes=[U("@container",v.modifier?`${v.modifier.value} (width >= ${y})`:`(width >= ${y})`,m.nodes)]},{compounds:1})},(m,v)=>d(m,v,"asc",g)),r.suggest("@min",()=>Array.from(u.keys()).filter(m=>m!==null)),r.suggest("@",()=>Array.from(u.keys()).filter(m=>m!==null))}}return o("portrait",["@media (orientation: portrait)"]),o("landscape",["@media (orientation: landscape)"]),o("ltr",['&:where(:dir(ltr), [dir="ltr"], [dir="ltr"] *)']),o("rtl",['&:where(:dir(rtl), [dir="rtl"], [dir="rtl"] *)']),o("dark",["@media (prefers-color-scheme: dark)"]),o("starting",["@starting-style"]),o("print",["@media print"]),o("forced-colors",["@media (forced-colors: active)"]),!1,!1,!1,r}function fr(t){if(t.includes("=")){let[r,...o]=P(t,"="),e=o.join("=").trim();if(e[0]==="'"||e[0]==='"')return t;if(e.length>1){let n=e[e.length-1];if(e[e.length-2]===" "&&(n==="i"||n==="I"||n==="s"||n==="S"))return`${r}="${e.slice(0,-2)}" ${n}`}return`${r}="${e}"`}return t}function yt(t,r){_(t,(o,{replaceWith:e})=>{if(o.kind==="at-rule"&&o.name==="@slot")e(r);else if(o.kind==="at-rule"&&(o.name==="@keyframes"||o.name==="@property"))return Object.assign(o,D([U(o.name,o.params,o.nodes)])),1})}function pr(t){let r=or(t),o=dr(t),e=new j(c=>Jt(c,p)),n=new j(c=>Array.from(Yt(c,p))),s=new j(c=>{let d=mr(c,p);try{he(d.map(({node:u})=>u),p)}catch{return[]}return d}),l=new j(c=>{for(let d of Fe(c))t.markUsedVariable(d)}),p={theme:t,utilities:r,variants:o,invalidCandidates:new Set,important:!1,candidatesToCss(c){let d=[];for(let u of c){let g=!1,{astNodes:m}=ne([u],this,{onInvalidCandidate(){g=!0}});m=se(m,p),m.length===0||g?d.push(null):d.push(Y(m))}return d},getClassOrder(c){return cr(this,c)},getClassList(){return sr(this)},getVariants(){return ur(this)},parseCandidate(c){return n.get(c)},parseVariant(c){return e.get(c)},compileAstNodes(c){return s.get(c)},getVariantOrder(){let c=Array.from(e.values());c.sort((m,v)=>this.variants.compare(m,v));let d=new Map,u,g=0;for(let m of c)m!==null&&(u!==void 0&&this.variants.compare(u,m)!==0&&g++,d.set(m,g),u=m);return d},resolveThemeValue(c){let d=c.lastIndexOf("/"),u=null;d!==-1&&(u=c.slice(d+1).trim(),c=c.slice(0,d).trim());let g=t.get([c])??void 0;return u&&g?J(g,u):g},trackUsedVariables(c){l.get(c)}};return p}var vt=["container-type","pointer-events","visibility","position","inset","inset-inline","inset-block","inset-inline-start","inset-inline-end","top","right","bottom","left","isolation","z-index","order","grid-column","grid-column-start","grid-column-end","grid-row","grid-row-start","grid-row-end","float","clear","--tw-container-component","margin","margin-inline","margin-block","margin-inline-start","margin-inline-end","margin-top","margin-right","margin-bottom","margin-left","box-sizing","display","field-sizing","aspect-ratio","height","max-height","min-height","width","max-width","min-width","flex","flex-shrink","flex-grow","flex-basis","table-layout","caption-side","border-collapse","border-spacing","transform-origin","translate","--tw-translate-x","--tw-translate-y","--tw-translate-z","scale","--tw-scale-x","--tw-scale-y","--tw-scale-z","rotate","--tw-rotate-x","--tw-rotate-y","--tw-rotate-z","--tw-skew-x","--tw-skew-y","transform","animation","cursor","touch-action","--tw-pan-x","--tw-pan-y","--tw-pinch-zoom","resize","scroll-snap-type","--tw-scroll-snap-strictness","scroll-snap-align","scroll-snap-stop","scroll-margin","scroll-margin-inline","scroll-margin-block","scroll-margin-inline-start","scroll-margin-inline-end","scroll-margin-top","scroll-margin-right","scroll-margin-bottom","scroll-margin-left","scroll-padding","scroll-padding-inline","scroll-padding-block","scroll-padding-inline-start","scroll-padding-inline-end","scroll-padding-top","scroll-padding-right","scroll-padding-bottom","scroll-padding-left","list-style-position","list-style-type","list-style-image","appearance","columns","break-before","break-inside","break-after","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-template-columns","grid-template-rows","flex-direction","flex-wrap","place-content","place-items","align-content","align-items","justify-content","justify-items","gap","column-gap","row-gap","--tw-space-x-reverse","--tw-space-y-reverse","divide-x-width","divide-y-width","--tw-divide-y-reverse","divide-style","divide-color","place-self","align-self","justify-self","overflow","overflow-x","overflow-y","overscroll-behavior","overscroll-behavior-x","overscroll-behavior-y","scroll-behavior","border-radius","border-start-radius","border-end-radius","border-top-radius","border-right-radius","border-bottom-radius","border-left-radius","border-start-start-radius","border-start-end-radius","border-end-end-radius","border-end-start-radius","border-top-left-radius","border-top-right-radius","border-bottom-right-radius","border-bottom-left-radius","border-width","border-inline-width","border-block-width","border-inline-start-width","border-inline-end-width","border-top-width","border-right-width","border-bottom-width","border-left-width","border-style","border-inline-style","border-block-style","border-inline-start-style","border-inline-end-style","border-top-style","border-right-style","border-bottom-style","border-left-style","border-color","border-inline-color","border-block-color","border-inline-start-color","border-inline-end-color","border-top-color","border-right-color","border-bottom-color","border-left-color","background-color","background-image","--tw-gradient-position","--tw-gradient-stops","--tw-gradient-via-stops","--tw-gradient-from","--tw-gradient-from-position","--tw-gradient-via","--tw-gradient-via-position","--tw-gradient-to","--tw-gradient-to-position","box-decoration-break","background-size","background-attachment","background-clip","background-position","background-repeat","background-origin","fill","stroke","stroke-width","object-fit","object-position","padding","padding-inline","padding-block","padding-inline-start","padding-inline-end","padding-top","padding-right","padding-bottom","padding-left","text-align","text-indent","vertical-align","font-family","font-size","line-height","font-weight","letter-spacing","text-wrap","overflow-wrap","word-break","text-overflow","hyphens","white-space","color","text-transform","font-style","font-stretch","font-variant-numeric","text-decoration-line","text-decoration-color","text-decoration-style","text-decoration-thickness","text-underline-offset","-webkit-font-smoothing","placeholder-color","caret-color","accent-color","color-scheme","opacity","background-blend-mode","mix-blend-mode","box-shadow","--tw-shadow","--tw-shadow-color","--tw-ring-shadow","--tw-ring-color","--tw-inset-shadow","--tw-inset-shadow-color","--tw-inset-ring-shadow","--tw-inset-ring-color","--tw-ring-offset-width","--tw-ring-offset-color","outline","outline-width","outline-offset","outline-color","--tw-blur","--tw-brightness","--tw-contrast","--tw-drop-shadow","--tw-grayscale","--tw-hue-rotate","--tw-invert","--tw-saturate","--tw-sepia","filter","--tw-backdrop-blur","--tw-backdrop-brightness","--tw-backdrop-contrast","--tw-backdrop-grayscale","--tw-backdrop-hue-rotate","--tw-backdrop-invert","--tw-backdrop-opacity","--tw-backdrop-saturate","--tw-backdrop-sepia","backdrop-filter","transition-property","transition-behavior","transition-delay","transition-duration","transition-timing-function","will-change","contain","content","forced-color-adjust"];function ne(t,r,{onInvalidCandidate:o}={}){let e=new Map,n=[],s=new Map;for(let p of t){if(r.invalidCandidates.has(p)){o?.(p);continue}let c=r.parseCandidate(p);if(c.length===0){o?.(p);continue}s.set(p,c)}let l=r.getVariantOrder();for(let[p,c]of s){let d=!1;for(let u of c){let g=r.compileAstNodes(u);if(g.length!==0){d=!0;for(let{node:m,propertySort:v}of g){let y=0n;for(let b of u.variants)y|=1n<{let d=e.get(p),u=e.get(c);if(d.variants-u.variants!==0n)return Number(d.variants-u.variants);let g=0;for(;g1)return null;for(let c of l.nodes)if(c.kind!=="rule"&&c.kind!=="at-rule"||n(c,r)===null)return null;_(l.nodes,c=>{if((c.kind==="rule"||c.kind==="at-rule")&&c.nodes.length<=0)return c.nodes=t.nodes,1}),t.nodes=l.nodes;return}if(n(t,r)===null)return null}function gr(t){let r=t.options?.types??[];return r.length>1&&r.includes("any")}function un(t,r){if(t.kind==="arbitrary"){let l=t.value;return t.modifier&&(l=B(l,t.modifier,r.theme)),l===null?[]:[[a(t.property,l)]]}let o=r.utilities.get(t.root)??[],e=[],n=o.filter(l=>!gr(l));for(let l of n){if(l.kind!==t.kind)continue;let p=l.compileFn(t);if(p!==void 0){if(p===null)return e;e.push(p)}}if(e.length>0)return e;let s=o.filter(l=>gr(l));for(let l of s){if(l.kind!==t.kind)continue;let p=l.compileFn(t);if(p!==void 0){if(p===null)return e;e.push(p)}}return e}function hr(t){for(let r of t)r.kind!=="at-root"&&(r.kind==="declaration"?r.important=!0:(r.kind==="rule"||r.kind==="at-rule")&&hr(r.nodes))}function cn(t){let r=new Set,o=0,e=t.slice(),n=!1;for(;e.length>0;){let s=e.shift();if(s.kind==="declaration"){if(s.value===void 0||(o++,n))continue;if(s.property==="--tw-sort"){let p=vt.indexOf(s.value??"");if(p!==-1){r.add(p),n=!0;continue}}let l=vt.indexOf(s.property);l!==-1&&r.add(l)}else if(s.kind==="rule"||s.kind==="at-rule")for(let l of s.nodes)e.push(l)}return{order:Array.from(r).sort((s,l)=>s-l),count:o}}function Ne(t,r){let o=0,e=M("&",t),n=new Set,s=new j(()=>new Set),l=new j(()=>new Set);_([e],(g,{parent:m})=>{if(g.kind==="at-rule"){if(g.name==="@keyframes")return _(g.nodes,v=>{if(v.kind==="at-rule"&&v.name==="@apply")throw new Error("You cannot use `@apply` inside `@keyframes`.")}),1;if(g.name==="@utility"){let v=g.params.replace(/-\*$/,"");l.get(v).add(g),_(g.nodes,y=>{if(!(y.kind!=="at-rule"||y.name!=="@apply")){n.add(g);for(let b of br(y,r))s.get(g).add(b)}});return}if(g.name==="@apply"){if(m===null)return;o|=1,n.add(m);for(let v of br(g,r))s.get(m).add(v)}}});let p=new Set,c=[],d=new Set;function u(g,m=[]){if(!p.has(g)){if(d.has(g)){let v=m[(m.indexOf(g)+1)%m.length];throw g.kind==="at-rule"&&g.name==="@utility"&&v.kind==="at-rule"&&v.name==="@utility"&&_(g.nodes,y=>{if(y.kind!=="at-rule"||y.name!=="@apply")return;let b=y.params.split(/\s+/g);for(let x of b)for(let $ of r.parseCandidate(x))switch($.kind){case"arbitrary":break;case"static":case"functional":if(v.params.replace(/-\*$/,"")===$.root)throw new Error(`You cannot \`@apply\` the \`${x}\` utility here because it creates a circular dependency.`);break;default:}}),new Error(`Circular dependency detected: - -${Y([g])} -Relies on: - -${Y([v])}`)}d.add(g);for(let v of s.get(g))for(let y of l.get(v))m.push(g),u(y,m),m.pop();p.add(g),d.delete(g),c.push(g)}}for(let g of n)u(g);for(let g of c)if("nodes"in g)for(let m=0;m{throw new Error(`Cannot apply unknown utility class: ${$}`)}}).astNodes,x=[];for(let $ of b)if($.kind==="rule")for(let V of $.nodes)x.push(V);else x.push($);g.nodes.splice(m,1,...x)}}return o}function*br(t,r){for(let o of t.params.split(/\s+/g))for(let e of r.parseCandidate(o))switch(e.kind){case"arbitrary":break;case"static":case"functional":yield e.root;break;default:}}async function kt(t,r,o,e=0){let n=0,s=[];return _(t,(l,{replaceWith:p})=>{if(l.kind==="at-rule"&&(l.name==="@import"||l.name==="@reference")){let c=fn(L(l.params));if(c===null)return;l.name==="@reference"&&(c.media="reference"),n|=2;let{uri:d,layer:u,media:g,supports:m}=c;if(d.startsWith("data:")||d.startsWith("http://")||d.startsWith("https://"))return;let v=Q({},[]);return s.push((async()=>{if(e>100)throw new Error(`Exceeded maximum recursion depth while resolving \`${d}\` in \`${r}\`)`);let y=await o(d,r),b=pe(y.content);await kt(b,y.base,o,e+1),v.nodes=dn([Q({base:y.base},b)],u,g,m)})()),p(v),1}}),s.length>0&&await Promise.all(s),n}function fn(t){let r,o=null,e=null,n=null;for(let s=0;s/g,"1")),e[0]==="opacity"&&(typeof n=="number"||typeof n=="string")){let l=typeof n=="string"?parseFloat(n):n;l>=0&&l<=1&&(n=l*100+"%")}let s=qe(e);s&&t.theme.add(`--${s}`,""+n,7)}if(Object.hasOwn(r,"fontFamily")){let e=5;{let n=ye(r.fontFamily.sans);n&&t.theme.hasDefault("--font-sans")&&(t.theme.add("--default-font-family",n,e),t.theme.add("--default-font-feature-settings",ye(r.fontFamily.sans,"fontFeatureSettings")??"normal",e),t.theme.add("--default-font-variation-settings",ye(r.fontFamily.sans,"fontVariationSettings")??"normal",e))}{let n=ye(r.fontFamily.mono);n&&t.theme.hasDefault("--font-mono")&&(t.theme.add("--default-mono-font-family",n,e),t.theme.add("--default-mono-font-feature-settings",ye(r.fontFamily.mono,"fontFeatureSettings")??"normal",e),t.theme.add("--default-mono-font-variation-settings",ye(r.fontFamily.mono,"fontVariationSettings")??"normal",e))}}return r}function pn(t){let r=[];return vr(t,[],(o,e)=>{if(gn(o))return r.push([e,o]),1;if(hn(o)){r.push([e,o[0]]);for(let n of Reflect.ownKeys(o[1]))r.push([[...e,`-${n}`],o[1][n]]);return 1}if(Array.isArray(o)&&o.every(n=>typeof n=="string"))return r.push([e,o.join(", ")]),1}),r}var mn=/^[a-zA-Z0-9-_%/\.]+$/;function qe(t){if(t[0]==="container")return null;t=structuredClone(t),t[0]==="animation"&&(t[0]="animate"),t[0]==="aspectRatio"&&(t[0]="aspect"),t[0]==="borderRadius"&&(t[0]="radius"),t[0]==="boxShadow"&&(t[0]="shadow"),t[0]==="colors"&&(t[0]="color"),t[0]==="containers"&&(t[0]="container"),t[0]==="fontFamily"&&(t[0]="font"),t[0]==="fontSize"&&(t[0]="text"),t[0]==="letterSpacing"&&(t[0]="tracking"),t[0]==="lineHeight"&&(t[0]="leading"),t[0]==="maxWidth"&&(t[0]="container"),t[0]==="screens"&&(t[0]="breakpoint"),t[0]==="transitionTimingFunction"&&(t[0]="ease");for(let r of t)if(!mn.test(r))return null;return t.map((r,o,e)=>r==="1"&&o!==e.length-1?"":r).map(r=>r.replaceAll(".","_").replace(/([a-z])([A-Z])/g,(o,e,n)=>`${e}-${n.toLowerCase()}`)).filter((r,o)=>r!=="DEFAULT"||o!==t.length-1).join("-")}function gn(t){return typeof t=="number"||typeof t=="string"}function hn(t){if(!Array.isArray(t)||t.length!==2||typeof t[0]!="string"&&typeof t[0]!="number"||t[1]===void 0||t[1]===null||typeof t[1]!="object")return!1;for(let r of Reflect.ownKeys(t[1]))if(typeof r!="string"||typeof t[1][r]!="string"&&typeof t[1][r]!="number")return!1;return!0}function vr(t,r=[],o){for(let e of Reflect.ownKeys(t)){let n=t[e];if(n==null)continue;let s=[...r,e],l=o(n,s)??0;if(l!==1){if(l===2)return 2;if(!(!Array.isArray(n)&&typeof n!="object")&&vr(n,s,o)===2)return 2}}}function He(t){let r=[];for(let o of P(t,".")){if(!o.includes("[")){r.push(o);continue}let e=0;for(;;){let n=o.indexOf("[",e),s=o.indexOf("]",n);if(n===-1||s===-1)break;n>e&&r.push(o.slice(e,n)),r.push(o.slice(n+1,s)),e=s+1}e<=o.length-1&&r.push(o.slice(e))}return r}function ve(t){if(Object.prototype.toString.call(t)!=="[object Object]")return!1;let r=Object.getPrototypeOf(t);return r===null||Object.getPrototypeOf(r)===null}function $e(t,r,o,e=[]){for(let n of r)if(n!=null)for(let s of Reflect.ownKeys(n)){e.push(s);let l=o(t[s],n[s],e);l!==void 0?t[s]=l:!ve(t[s])||!ve(n[s])?t[s]=n[s]:t[s]=$e({},[t[s],n[s]],o,e),e.pop()}return t}function Ge(t,r,o){return function(n,s){let l=n.lastIndexOf("/"),p=null;l!==-1&&(p=n.slice(l+1).trim(),n=n.slice(0,l).trim());let c=(()=>{let d=He(n),[u,g]=bn(t.theme,d),m=o(kr(r()??{},d)??null);if(typeof m=="string"&&(m=m.replace("","1")),typeof u!="object")return typeof g!="object"&&g&4?m??u:u;if(m!==null&&typeof m=="object"&&!Array.isArray(m)){let v=$e({},[m],(y,b)=>b);if(u===null&&Object.hasOwn(m,"__CSS_VALUES__")){let y={};for(let b in m.__CSS_VALUES__)y[b]=m[b],delete v[b];u=y}for(let y in u)y!=="__CSS_VALUES__"&&(m?.__CSS_VALUES__?.[y]&4&&kr(v,y.split("-"))!==void 0||(v[ae(y)]=u[y]));return v}if(Array.isArray(u)&&Array.isArray(g)&&Array.isArray(m)){let v=u[0],y=u[1];g[0]&4&&(v=m[0]??v);for(let b of Object.keys(y))g[1][b]&4&&(y[b]=m[1][b]??y[b]);return[v,y]}return u??m})();return p&&typeof c=="string"&&(c=J(c,p)),c??s}}function bn(t,r){if(r.length===1&&r[0].startsWith("--"))return[t.get([r[0]]),t.getOptions(r[0])];let o=qe(r),e=new Map,n=new j(()=>new Map),s=t.namespace(`--${o}`);if(s.size===0)return[null,0];let l=new Map;for(let[u,g]of s){if(!u||!u.includes("--")){e.set(u,g),l.set(u,t.getOptions(u?`--${o}-${u}`:`--${o}`));continue}let m=u.indexOf("--"),v=u.slice(0,m),y=u.slice(m+2);y=y.replace(/-([a-z])/g,(b,x)=>x.toUpperCase()),n.get(v===""?null:v).set(y,[g,t.getOptions(`--${o}${u}`)])}let p=t.getOptions(`--${o}`);for(let[u,g]of n){let m=e.get(u);if(typeof m!="string")continue;let v={},y={};for(let[b,[x,$]]of g)v[b]=x,y[b]=$;e.set(u,[m,v]),l.set(u,[p,y])}let c={},d={};for(let[u,g]of e)wr(c,[u??"DEFAULT"],g);for(let[u,g]of l)wr(d,[u??"DEFAULT"],g);return r[r.length-1]==="DEFAULT"?[c?.DEFAULT??null,d.DEFAULT??0]:"DEFAULT"in c&&Object.keys(c).length===1?[c.DEFAULT,d.DEFAULT??0]:(c.__CSS_VALUES__=d,[c,d])}function kr(t,r){for(let o=0;o0){let m=Te(n);e?e.nodes.push(m):r.push(m),n=""}let c=l,d=l+1;for(;d0){let d=Te(n);c.nodes.push(d),n=""}o.length>0?e=o[o.length-1]:e=null;break}case Sn:case An:case Nn:{if(n.length>0){let c=Te(n);e?e.nodes.push(c):r.push(c)}n=String.fromCharCode(p);break}case $r:{if(n.length>0){let u=Te(n);e?e.nodes.push(u):r.push(u)}n="";let c=l,d=0;for(let u=l+1;u0&&r.push(Te(n)),r}var Kr=/^[a-z@][a-zA-Z0-9/%._-]*$/;function wt({designSystem:t,ast:r,resolvedConfig:o,featuresRef:e,referenceMode:n}){let s={addBase(l){if(n)return;let p=X(l);e.current|=he(p,t),r.push(U("@layer","base",p))},addVariant(l,p){if(!We.test(l))throw new Error(`\`addVariant('${l}')\` defines an invalid variant name. Variants should only contain alphanumeric, dashes or underscore characters.`);typeof p=="string"||Array.isArray(p)?t.variants.static(l,c=>{c.nodes=Pr(p,c.nodes)},{compounds:fe(typeof p=="string"?[p]:p)}):typeof p=="object"&&t.variants.fromAst(l,X(p))},matchVariant(l,p,c){function d(g,m,v){let y=p(g,{modifier:m?.value??null});return Pr(y,v)}let u=Object.keys(c?.values??{});t.variants.group(()=>{t.variants.functional(l,(g,m)=>{if(!m.value){if(c?.values&&"DEFAULT"in c.values){g.nodes=d(c.values.DEFAULT,m.modifier,g.nodes);return}return null}if(m.value.kind==="arbitrary")g.nodes=d(m.value.value,m.modifier,g.nodes);else if(m.value.kind==="named"&&c?.values){let v=c.values[m.value.value];if(typeof v!="string")return;g.nodes=d(v,m.modifier,g.nodes)}})},(g,m)=>{if(g.kind!=="functional"||m.kind!=="functional")return 0;let v=g.value?g.value.value:"DEFAULT",y=m.value?m.value.value:"DEFAULT",b=c?.values?.[v]??v,x=c?.values?.[y]??y;if(c&&typeof c.sort=="function")return c.sort({value:b,modifier:g.modifier?.value??null},{value:x,modifier:m.modifier?.value??null});let $=u.indexOf(v),V=u.indexOf(y);return $=$===-1?u.length:$,V=V===-1?u.length:V,$!==V?$-V:bObject.entries(d));p=p.flatMap(([d,u])=>P(d,",").map(g=>[g.trim(),u]));let c=new j(()=>[]);for(let[d,u]of p){if(d.startsWith("@keyframes ")){n||r.push(M(d,X(u)));continue}let g=Ye(d),m=!1;if(Ve(g,v=>{if(v.kind==="selector"&&v.value[0]==="."&&Kr.test(v.value.slice(1))){let y=v.value;v.value="&";let b=Ee(g),x=y.slice(1),$=b==="&"?X(u):[M(b,X(u))];c.get(x).push(...$),m=!0,v.value=y;return}if(v.kind==="function"&&v.value===":not")return 1}),!m)throw new Error(`\`addUtilities({ '${d}' : \u2026 })\` defines an invalid utility selector. Utilities must be a single class name and start with a lowercase letter, eg. \`.scrollbar-none\`.`)}for(let[d,u]of c)t.theme.prefix&&_(u,g=>{if(g.kind==="rule"){let m=Ye(g.selector);Ve(m,v=>{v.kind==="selector"&&v.value[0]==="."&&(v.value=`.${t.theme.prefix}\\:${v.value.slice(1)}`)}),g.selector=Ee(m)}}),t.utilities.static(d,g=>{let m=structuredClone(u);return Ur(m,d,g.raw),e.current|=Ne(m,t),m})},matchUtilities(l,p){let c=p?.type?Array.isArray(p?.type)?p.type:[p.type]:["any"];for(let[u,g]of Object.entries(l)){let m=function({negative:v}){return y=>{if(y.value?.kind==="arbitrary"&&c.length>0&&!c.includes("any")&&(y.value.dataType&&!c.includes(y.value.dataType)||!y.value.dataType&&!I(y.value.value,c)))return;let b=c.includes("color"),x=null,$=!1;{let R=p?.values??{};b&&(R=Object.assign({inherit:"inherit",transparent:"transparent",current:"currentColor"},R)),y.value?y.value.kind==="arbitrary"?x=y.value.value:y.value.fraction&&R[y.value.fraction]?(x=R[y.value.fraction],$=!0):R[y.value.value]?x=R[y.value.value]:R.__BARE_VALUE__&&(x=R.__BARE_VALUE__(y.value)??null,$=(y.value.fraction!==null&&x?.includes("/"))??!1):x=R.DEFAULT??null}if(x===null)return;let V;{let R=p?.modifiers??null;y.modifier?R==="any"||y.modifier.kind==="arbitrary"?V=y.modifier.value:R?.[y.modifier.value]?V=R[y.modifier.value]:b&&!Number.isNaN(Number(y.modifier.value))?V=`${y.modifier.value}%`:V=null:V=null}if(y.modifier&&V===null&&!$)return y.value?.kind==="arbitrary"?null:void 0;b&&V!==null&&(x=J(x,V)),v&&(x=`calc(${x} * -1)`);let O=X(g(x,{modifier:V}));return Ur(O,u,y.raw),e.current|=Ne(O,t),O}};var d=m;if(!Kr.test(u))throw new Error(`\`matchUtilities({ '${u}' : \u2026 })\` defines an invalid utility name. Utilities should be alphanumeric and start with a lowercase letter, eg. \`scrollbar\`.`);p?.supportsNegativeValues&&t.utilities.functional(`-${u}`,m({negative:!0}),{types:c}),t.utilities.functional(u,m({negative:!1}),{types:c}),t.utilities.suggest(u,()=>{let v=p?.values??{},y=new Set(Object.keys(v));y.delete("__BARE_VALUE__"),y.has("DEFAULT")&&(y.delete("DEFAULT"),y.add(null));let b=p?.modifiers??{},x=b==="any"?[]:Object.keys(b);return[{supportsNegative:p?.supportsNegativeValues??!1,values:Array.from(y),modifiers:x}]})}},addComponents(l,p){this.addUtilities(l,p)},matchComponents(l,p){this.matchUtilities(l,p)},theme:Ge(t,()=>o.theme??{},l=>l),prefix(l){return l},config(l,p){let c=o;if(!l)return c;let d=He(l);for(let u=0;uObject.entries(e));for(let[e,n]of o)if(typeof n!="object"){if(!e.startsWith("--")){if(n==="@slot"){r.push(M(e,[U("@slot")]));continue}e=e.replace(/([A-Z])/g,"-$1").toLowerCase()}r.push(a(e,String(n)))}else if(Array.isArray(n))for(let s of n)typeof s=="string"?r.push(a(e,s)):r.push(M(e,X(s)));else n!==null&&r.push(M(e,X(n)));return r}function Pr(t,r){return(typeof t=="string"?[t]:t).flatMap(e=>{if(e.trim().endsWith("}")){let n=e.replace("}","{@slot}}"),s=pe(n);return yt(s,r),s}else return M(e,r)})}function Ur(t,r,o){_(t,e=>{if(e.kind==="rule"){let n=Ye(e.selector);Ve(n,s=>{s.kind==="selector"&&s.value===`.${r}`&&(s.value=`.${re(o)}`)}),e.selector=Ee(n)}})}function _r(t,r,o){for(let e of Vn(r))t.theme.addKeyframes(e)}function Vn(t){let r=[];if("keyframes"in t.theme)for(let[o,e]of Object.entries(t.theme.keyframes))r.push(U("@keyframes",o,X(e)));return r}var Je={inherit:"inherit",current:"currentColor",transparent:"transparent",black:"#000",white:"#fff",slate:{50:"oklch(0.984 0.003 247.858)",100:"oklch(0.968 0.007 247.896)",200:"oklch(0.929 0.013 255.508)",300:"oklch(0.869 0.022 252.894)",400:"oklch(0.704 0.04 256.788)",500:"oklch(0.554 0.046 257.417)",600:"oklch(0.446 0.043 257.281)",700:"oklch(0.372 0.044 257.287)",800:"oklch(0.279 0.041 260.031)",900:"oklch(0.208 0.042 265.755)",950:"oklch(0.129 0.042 264.695)"},gray:{50:"oklch(0.985 0.002 247.839)",100:"oklch(0.967 0.003 264.542)",200:"oklch(0.928 0.006 264.531)",300:"oklch(0.872 0.01 258.338)",400:"oklch(0.707 0.022 261.325)",500:"oklch(0.551 0.027 264.364)",600:"oklch(0.446 0.03 256.802)",700:"oklch(0.373 0.034 259.733)",800:"oklch(0.278 0.033 256.848)",900:"oklch(0.21 0.034 264.665)",950:"oklch(0.13 0.028 261.692)"},zinc:{50:"oklch(0.985 0 0)",100:"oklch(0.967 0.001 286.375)",200:"oklch(0.92 0.004 286.32)",300:"oklch(0.871 0.006 286.286)",400:"oklch(0.705 0.015 286.067)",500:"oklch(0.552 0.016 285.938)",600:"oklch(0.442 0.017 285.786)",700:"oklch(0.37 0.013 285.805)",800:"oklch(0.274 0.006 286.033)",900:"oklch(0.21 0.006 285.885)",950:"oklch(0.141 0.005 285.823)"},neutral:{50:"oklch(0.985 0 0)",100:"oklch(0.97 0 0)",200:"oklch(0.922 0 0)",300:"oklch(0.87 0 0)",400:"oklch(0.708 0 0)",500:"oklch(0.556 0 0)",600:"oklch(0.439 0 0)",700:"oklch(0.371 0 0)",800:"oklch(0.269 0 0)",900:"oklch(0.205 0 0)",950:"oklch(0.145 0 0)"},stone:{50:"oklch(0.985 0.001 106.423)",100:"oklch(0.97 0.001 106.424)",200:"oklch(0.923 0.003 48.717)",300:"oklch(0.869 0.005 56.366)",400:"oklch(0.709 0.01 56.259)",500:"oklch(0.553 0.013 58.071)",600:"oklch(0.444 0.011 73.639)",700:"oklch(0.374 0.01 67.558)",800:"oklch(0.268 0.007 34.298)",900:"oklch(0.216 0.006 56.043)",950:"oklch(0.147 0.004 49.25)"},red:{50:"oklch(0.971 0.013 17.38)",100:"oklch(0.936 0.032 17.717)",200:"oklch(0.885 0.062 18.334)",300:"oklch(0.808 0.114 19.571)",400:"oklch(0.704 0.191 22.216)",500:"oklch(0.637 0.237 25.331)",600:"oklch(0.577 0.245 27.325)",700:"oklch(0.505 0.213 27.518)",800:"oklch(0.444 0.177 26.899)",900:"oklch(0.396 0.141 25.723)",950:"oklch(0.258 0.092 26.042)"},orange:{50:"oklch(0.98 0.016 73.684)",100:"oklch(0.954 0.038 75.164)",200:"oklch(0.901 0.076 70.697)",300:"oklch(0.837 0.128 66.29)",400:"oklch(0.75 0.183 55.934)",500:"oklch(0.705 0.213 47.604)",600:"oklch(0.646 0.222 41.116)",700:"oklch(0.553 0.195 38.402)",800:"oklch(0.47 0.157 37.304)",900:"oklch(0.408 0.123 38.172)",950:"oklch(0.266 0.079 36.259)"},amber:{50:"oklch(0.987 0.022 95.277)",100:"oklch(0.962 0.059 95.617)",200:"oklch(0.924 0.12 95.746)",300:"oklch(0.879 0.169 91.605)",400:"oklch(0.828 0.189 84.429)",500:"oklch(0.769 0.188 70.08)",600:"oklch(0.666 0.179 58.318)",700:"oklch(0.555 0.163 48.998)",800:"oklch(0.473 0.137 46.201)",900:"oklch(0.414 0.112 45.904)",950:"oklch(0.279 0.077 45.635)"},yellow:{50:"oklch(0.987 0.026 102.212)",100:"oklch(0.973 0.071 103.193)",200:"oklch(0.945 0.129 101.54)",300:"oklch(0.905 0.182 98.111)",400:"oklch(0.852 0.199 91.936)",500:"oklch(0.795 0.184 86.047)",600:"oklch(0.681 0.162 75.834)",700:"oklch(0.554 0.135 66.442)",800:"oklch(0.476 0.114 61.907)",900:"oklch(0.421 0.095 57.708)",950:"oklch(0.286 0.066 53.813)"},lime:{50:"oklch(0.986 0.031 120.757)",100:"oklch(0.967 0.067 122.328)",200:"oklch(0.938 0.127 124.321)",300:"oklch(0.897 0.196 126.665)",400:"oklch(0.841 0.238 128.85)",500:"oklch(0.768 0.233 130.85)",600:"oklch(0.648 0.2 131.684)",700:"oklch(0.532 0.157 131.589)",800:"oklch(0.453 0.124 130.933)",900:"oklch(0.405 0.101 131.063)",950:"oklch(0.274 0.072 132.109)"},green:{50:"oklch(0.982 0.018 155.826)",100:"oklch(0.962 0.044 156.743)",200:"oklch(0.925 0.084 155.995)",300:"oklch(0.871 0.15 154.449)",400:"oklch(0.792 0.209 151.711)",500:"oklch(0.723 0.219 149.579)",600:"oklch(0.627 0.194 149.214)",700:"oklch(0.527 0.154 150.069)",800:"oklch(0.448 0.119 151.328)",900:"oklch(0.393 0.095 152.535)",950:"oklch(0.266 0.065 152.934)"},emerald:{50:"oklch(0.979 0.021 166.113)",100:"oklch(0.95 0.052 163.051)",200:"oklch(0.905 0.093 164.15)",300:"oklch(0.845 0.143 164.978)",400:"oklch(0.765 0.177 163.223)",500:"oklch(0.696 0.17 162.48)",600:"oklch(0.596 0.145 163.225)",700:"oklch(0.508 0.118 165.612)",800:"oklch(0.432 0.095 166.913)",900:"oklch(0.378 0.077 168.94)",950:"oklch(0.262 0.051 172.552)"},teal:{50:"oklch(0.984 0.014 180.72)",100:"oklch(0.953 0.051 180.801)",200:"oklch(0.91 0.096 180.426)",300:"oklch(0.855 0.138 181.071)",400:"oklch(0.777 0.152 181.912)",500:"oklch(0.704 0.14 182.503)",600:"oklch(0.6 0.118 184.704)",700:"oklch(0.511 0.096 186.391)",800:"oklch(0.437 0.078 188.216)",900:"oklch(0.386 0.063 188.416)",950:"oklch(0.277 0.046 192.524)"},cyan:{50:"oklch(0.984 0.019 200.873)",100:"oklch(0.956 0.045 203.388)",200:"oklch(0.917 0.08 205.041)",300:"oklch(0.865 0.127 207.078)",400:"oklch(0.789 0.154 211.53)",500:"oklch(0.715 0.143 215.221)",600:"oklch(0.609 0.126 221.723)",700:"oklch(0.52 0.105 223.128)",800:"oklch(0.45 0.085 224.283)",900:"oklch(0.398 0.07 227.392)",950:"oklch(0.302 0.056 229.695)"},sky:{50:"oklch(0.977 0.013 236.62)",100:"oklch(0.951 0.026 236.824)",200:"oklch(0.901 0.058 230.902)",300:"oklch(0.828 0.111 230.318)",400:"oklch(0.746 0.16 232.661)",500:"oklch(0.685 0.169 237.323)",600:"oklch(0.588 0.158 241.966)",700:"oklch(0.5 0.134 242.749)",800:"oklch(0.443 0.11 240.79)",900:"oklch(0.391 0.09 240.876)",950:"oklch(0.293 0.066 243.157)"},blue:{50:"oklch(0.97 0.014 254.604)",100:"oklch(0.932 0.032 255.585)",200:"oklch(0.882 0.059 254.128)",300:"oklch(0.809 0.105 251.813)",400:"oklch(0.707 0.165 254.624)",500:"oklch(0.623 0.214 259.815)",600:"oklch(0.546 0.245 262.881)",700:"oklch(0.488 0.243 264.376)",800:"oklch(0.424 0.199 265.638)",900:"oklch(0.379 0.146 265.522)",950:"oklch(0.282 0.091 267.935)"},indigo:{50:"oklch(0.962 0.018 272.314)",100:"oklch(0.93 0.034 272.788)",200:"oklch(0.87 0.065 274.039)",300:"oklch(0.785 0.115 274.713)",400:"oklch(0.673 0.182 276.935)",500:"oklch(0.585 0.233 277.117)",600:"oklch(0.511 0.262 276.966)",700:"oklch(0.457 0.24 277.023)",800:"oklch(0.398 0.195 277.366)",900:"oklch(0.359 0.144 278.697)",950:"oklch(0.257 0.09 281.288)"},violet:{50:"oklch(0.969 0.016 293.756)",100:"oklch(0.943 0.029 294.588)",200:"oklch(0.894 0.057 293.283)",300:"oklch(0.811 0.111 293.571)",400:"oklch(0.702 0.183 293.541)",500:"oklch(0.606 0.25 292.717)",600:"oklch(0.541 0.281 293.009)",700:"oklch(0.491 0.27 292.581)",800:"oklch(0.432 0.232 292.759)",900:"oklch(0.38 0.189 293.745)",950:"oklch(0.283 0.141 291.089)"},purple:{50:"oklch(0.977 0.014 308.299)",100:"oklch(0.946 0.033 307.174)",200:"oklch(0.902 0.063 306.703)",300:"oklch(0.827 0.119 306.383)",400:"oklch(0.714 0.203 305.504)",500:"oklch(0.627 0.265 303.9)",600:"oklch(0.558 0.288 302.321)",700:"oklch(0.496 0.265 301.924)",800:"oklch(0.438 0.218 303.724)",900:"oklch(0.381 0.176 304.987)",950:"oklch(0.291 0.149 302.717)"},fuchsia:{50:"oklch(0.977 0.017 320.058)",100:"oklch(0.952 0.037 318.852)",200:"oklch(0.903 0.076 319.62)",300:"oklch(0.833 0.145 321.434)",400:"oklch(0.74 0.238 322.16)",500:"oklch(0.667 0.295 322.15)",600:"oklch(0.591 0.293 322.896)",700:"oklch(0.518 0.253 323.949)",800:"oklch(0.452 0.211 324.591)",900:"oklch(0.401 0.17 325.612)",950:"oklch(0.293 0.136 325.661)"},pink:{50:"oklch(0.971 0.014 343.198)",100:"oklch(0.948 0.028 342.258)",200:"oklch(0.899 0.061 343.231)",300:"oklch(0.823 0.12 346.018)",400:"oklch(0.718 0.202 349.761)",500:"oklch(0.656 0.241 354.308)",600:"oklch(0.592 0.249 0.584)",700:"oklch(0.525 0.223 3.958)",800:"oklch(0.459 0.187 3.815)",900:"oklch(0.408 0.153 2.432)",950:"oklch(0.284 0.109 3.907)"},rose:{50:"oklch(0.969 0.015 12.422)",100:"oklch(0.941 0.03 12.58)",200:"oklch(0.892 0.058 10.001)",300:"oklch(0.81 0.117 11.638)",400:"oklch(0.712 0.194 13.428)",500:"oklch(0.645 0.246 16.439)",600:"oklch(0.586 0.253 17.585)",700:"oklch(0.514 0.222 16.935)",800:"oklch(0.455 0.188 13.697)",900:"oklch(0.41 0.159 10.272)",950:"oklch(0.271 0.105 12.094)"}};function de(t){return{__BARE_VALUE__:t}}var Z=de(t=>{if(N(t.value))return t.value}),q=de(t=>{if(N(t.value))return`${t.value}%`}),ie=de(t=>{if(N(t.value))return`${t.value}px`}),Dr=de(t=>{if(N(t.value))return`${t.value}ms`}),Ze=de(t=>{if(N(t.value))return`${t.value}deg`}),En=de(t=>{if(t.fraction===null)return;let[r,o]=P(t.fraction,"/");if(!(!N(r)||!N(o)))return t.fraction}),zr=de(t=>{if(N(Number(t.value)))return`repeat(${t.value}, minmax(0, 1fr))`}),Fr={accentColor:({theme:t})=>t("colors"),animation:{none:"none",spin:"spin 1s linear infinite",ping:"ping 1s cubic-bezier(0, 0, 0.2, 1) infinite",pulse:"pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite",bounce:"bounce 1s infinite"},aria:{busy:'busy="true"',checked:'checked="true"',disabled:'disabled="true"',expanded:'expanded="true"',hidden:'hidden="true"',pressed:'pressed="true"',readonly:'readonly="true"',required:'required="true"',selected:'selected="true"'},aspectRatio:{auto:"auto",square:"1 / 1",video:"16 / 9",...En},backdropBlur:({theme:t})=>t("blur"),backdropBrightness:({theme:t})=>({...t("brightness"),...q}),backdropContrast:({theme:t})=>({...t("contrast"),...q}),backdropGrayscale:({theme:t})=>({...t("grayscale"),...q}),backdropHueRotate:({theme:t})=>({...t("hueRotate"),...Ze}),backdropInvert:({theme:t})=>({...t("invert"),...q}),backdropOpacity:({theme:t})=>({...t("opacity"),...q}),backdropSaturate:({theme:t})=>({...t("saturate"),...q}),backdropSepia:({theme:t})=>({...t("sepia"),...q}),backgroundColor:({theme:t})=>t("colors"),backgroundImage:{none:"none","gradient-to-t":"linear-gradient(to top, var(--tw-gradient-stops))","gradient-to-tr":"linear-gradient(to top right, var(--tw-gradient-stops))","gradient-to-r":"linear-gradient(to right, var(--tw-gradient-stops))","gradient-to-br":"linear-gradient(to bottom right, var(--tw-gradient-stops))","gradient-to-b":"linear-gradient(to bottom, var(--tw-gradient-stops))","gradient-to-bl":"linear-gradient(to bottom left, var(--tw-gradient-stops))","gradient-to-l":"linear-gradient(to left, var(--tw-gradient-stops))","gradient-to-tl":"linear-gradient(to top left, var(--tw-gradient-stops))"},backgroundOpacity:({theme:t})=>t("opacity"),backgroundPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},backgroundSize:{auto:"auto",cover:"cover",contain:"contain"},blur:{0:"0",none:"",sm:"4px",DEFAULT:"8px",md:"12px",lg:"16px",xl:"24px","2xl":"40px","3xl":"64px"},borderColor:({theme:t})=>({DEFAULT:"currentColor",...t("colors")}),borderOpacity:({theme:t})=>t("opacity"),borderRadius:{none:"0px",sm:"0.125rem",DEFAULT:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem",full:"9999px"},borderSpacing:({theme:t})=>t("spacing"),borderWidth:{DEFAULT:"1px",0:"0px",2:"2px",4:"4px",8:"8px",...ie},boxShadow:{sm:"0 1px 2px 0 rgb(0 0 0 / 0.05)",DEFAULT:"0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1)",md:"0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)",lg:"0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)",xl:"0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)","2xl":"0 25px 50px -12px rgb(0 0 0 / 0.25)",inner:"inset 0 2px 4px 0 rgb(0 0 0 / 0.05)",none:"none"},boxShadowColor:({theme:t})=>t("colors"),brightness:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5",200:"2",...q},caretColor:({theme:t})=>t("colors"),colors:()=>({...Je}),columns:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12","3xs":"16rem","2xs":"18rem",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",...Z},container:{},content:{none:"none"},contrast:{0:"0",50:".5",75:".75",100:"1",125:"1.25",150:"1.5",200:"2",...q},cursor:{auto:"auto",default:"default",pointer:"pointer",wait:"wait",text:"text",move:"move",help:"help","not-allowed":"not-allowed",none:"none","context-menu":"context-menu",progress:"progress",cell:"cell",crosshair:"crosshair","vertical-text":"vertical-text",alias:"alias",copy:"copy","no-drop":"no-drop",grab:"grab",grabbing:"grabbing","all-scroll":"all-scroll","col-resize":"col-resize","row-resize":"row-resize","n-resize":"n-resize","e-resize":"e-resize","s-resize":"s-resize","w-resize":"w-resize","ne-resize":"ne-resize","nw-resize":"nw-resize","se-resize":"se-resize","sw-resize":"sw-resize","ew-resize":"ew-resize","ns-resize":"ns-resize","nesw-resize":"nesw-resize","nwse-resize":"nwse-resize","zoom-in":"zoom-in","zoom-out":"zoom-out"},divideColor:({theme:t})=>t("borderColor"),divideOpacity:({theme:t})=>t("borderOpacity"),divideWidth:({theme:t})=>({...t("borderWidth"),...ie}),dropShadow:{sm:"0 1px 1px rgb(0 0 0 / 0.05)",DEFAULT:["0 1px 2px rgb(0 0 0 / 0.1)","0 1px 1px rgb(0 0 0 / 0.06)"],md:["0 4px 3px rgb(0 0 0 / 0.07)","0 2px 2px rgb(0 0 0 / 0.06)"],lg:["0 10px 8px rgb(0 0 0 / 0.04)","0 4px 3px rgb(0 0 0 / 0.1)"],xl:["0 20px 13px rgb(0 0 0 / 0.03)","0 8px 5px rgb(0 0 0 / 0.08)"],"2xl":"0 25px 25px rgb(0 0 0 / 0.15)",none:"0 0 #0000"},fill:({theme:t})=>t("colors"),flex:{1:"1 1 0%",auto:"1 1 auto",initial:"0 1 auto",none:"none"},flexBasis:({theme:t})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",...t("spacing")}),flexGrow:{0:"0",DEFAULT:"1",...Z},flexShrink:{0:"0",DEFAULT:"1",...Z},fontFamily:{sans:["ui-sans-serif","system-ui","sans-serif",'"Apple Color Emoji"','"Segoe UI Emoji"','"Segoe UI Symbol"','"Noto Color Emoji"'],serif:["ui-serif","Georgia","Cambria",'"Times New Roman"',"Times","serif"],mono:["ui-monospace","SFMono-Regular","Menlo","Monaco","Consolas",'"Liberation Mono"','"Courier New"',"monospace"]},fontSize:{xs:["0.75rem",{lineHeight:"1rem"}],sm:["0.875rem",{lineHeight:"1.25rem"}],base:["1rem",{lineHeight:"1.5rem"}],lg:["1.125rem",{lineHeight:"1.75rem"}],xl:["1.25rem",{lineHeight:"1.75rem"}],"2xl":["1.5rem",{lineHeight:"2rem"}],"3xl":["1.875rem",{lineHeight:"2.25rem"}],"4xl":["2.25rem",{lineHeight:"2.5rem"}],"5xl":["3rem",{lineHeight:"1"}],"6xl":["3.75rem",{lineHeight:"1"}],"7xl":["4.5rem",{lineHeight:"1"}],"8xl":["6rem",{lineHeight:"1"}],"9xl":["8rem",{lineHeight:"1"}]},fontWeight:{thin:"100",extralight:"200",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},gap:({theme:t})=>t("spacing"),gradientColorStops:({theme:t})=>t("colors"),gradientColorStopPositions:{"0%":"0%","5%":"5%","10%":"10%","15%":"15%","20%":"20%","25%":"25%","30%":"30%","35%":"35%","40%":"40%","45%":"45%","50%":"50%","55%":"55%","60%":"60%","65%":"65%","70%":"70%","75%":"75%","80%":"80%","85%":"85%","90%":"90%","95%":"95%","100%":"100%",...q},grayscale:{0:"0",DEFAULT:"100%",...q},gridAutoColumns:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridAutoRows:{auto:"auto",min:"min-content",max:"max-content",fr:"minmax(0, 1fr)"},gridColumn:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridColumnEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...Z},gridColumnStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...Z},gridRow:{auto:"auto","span-1":"span 1 / span 1","span-2":"span 2 / span 2","span-3":"span 3 / span 3","span-4":"span 4 / span 4","span-5":"span 5 / span 5","span-6":"span 6 / span 6","span-7":"span 7 / span 7","span-8":"span 8 / span 8","span-9":"span 9 / span 9","span-10":"span 10 / span 10","span-11":"span 11 / span 11","span-12":"span 12 / span 12","span-full":"1 / -1"},gridRowEnd:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...Z},gridRowStart:{auto:"auto",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",13:"13",...Z},gridTemplateColumns:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))",...zr},gridTemplateRows:{none:"none",subgrid:"subgrid",1:"repeat(1, minmax(0, 1fr))",2:"repeat(2, minmax(0, 1fr))",3:"repeat(3, minmax(0, 1fr))",4:"repeat(4, minmax(0, 1fr))",5:"repeat(5, minmax(0, 1fr))",6:"repeat(6, minmax(0, 1fr))",7:"repeat(7, minmax(0, 1fr))",8:"repeat(8, minmax(0, 1fr))",9:"repeat(9, minmax(0, 1fr))",10:"repeat(10, minmax(0, 1fr))",11:"repeat(11, minmax(0, 1fr))",12:"repeat(12, minmax(0, 1fr))",...zr},height:({theme:t})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...t("spacing")}),hueRotate:{0:"0deg",15:"15deg",30:"30deg",60:"60deg",90:"90deg",180:"180deg",...Ze},inset:({theme:t})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%",...t("spacing")}),invert:{0:"0",DEFAULT:"100%",...q},keyframes:{spin:{to:{transform:"rotate(360deg)"}},ping:{"75%, 100%":{transform:"scale(2)",opacity:"0"}},pulse:{"50%":{opacity:".5"}},bounce:{"0%, 100%":{transform:"translateY(-25%)",animationTimingFunction:"cubic-bezier(0.8,0,1,1)"},"50%":{transform:"none",animationTimingFunction:"cubic-bezier(0,0,0.2,1)"}}},letterSpacing:{tighter:"-0.05em",tight:"-0.025em",normal:"0em",wide:"0.025em",wider:"0.05em",widest:"0.1em"},lineHeight:{none:"1",tight:"1.25",snug:"1.375",normal:"1.5",relaxed:"1.625",loose:"2",3:".75rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem"},listStyleType:{none:"none",disc:"disc",decimal:"decimal"},listStyleImage:{none:"none"},margin:({theme:t})=>({auto:"auto",...t("spacing")}),lineClamp:{1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",...Z},maxHeight:({theme:t})=>({none:"none",full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...t("spacing")}),maxWidth:({theme:t})=>({none:"none",xs:"20rem",sm:"24rem",md:"28rem",lg:"32rem",xl:"36rem","2xl":"42rem","3xl":"48rem","4xl":"56rem","5xl":"64rem","6xl":"72rem","7xl":"80rem",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",prose:"65ch",...t("spacing")}),minHeight:({theme:t})=>({full:"100%",screen:"100vh",svh:"100svh",lvh:"100lvh",dvh:"100dvh",min:"min-content",max:"max-content",fit:"fit-content",...t("spacing")}),minWidth:({theme:t})=>({full:"100%",min:"min-content",max:"max-content",fit:"fit-content",...t("spacing")}),objectPosition:{bottom:"bottom",center:"center",left:"left","left-bottom":"left bottom","left-top":"left top",right:"right","right-bottom":"right bottom","right-top":"right top",top:"top"},opacity:{0:"0",5:"0.05",10:"0.1",15:"0.15",20:"0.2",25:"0.25",30:"0.3",35:"0.35",40:"0.4",45:"0.45",50:"0.5",55:"0.55",60:"0.6",65:"0.65",70:"0.7",75:"0.75",80:"0.8",85:"0.85",90:"0.9",95:"0.95",100:"1",...q},order:{first:"-9999",last:"9999",none:"0",1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",10:"10",11:"11",12:"12",...Z},outlineColor:({theme:t})=>t("colors"),outlineOffset:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...ie},outlineWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...ie},padding:({theme:t})=>t("spacing"),placeholderColor:({theme:t})=>t("colors"),placeholderOpacity:({theme:t})=>t("opacity"),ringColor:({theme:t})=>({DEFAULT:"currentColor",...t("colors")}),ringOffsetColor:({theme:t})=>t("colors"),ringOffsetWidth:{0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...ie},ringOpacity:({theme:t})=>({DEFAULT:"0.5",...t("opacity")}),ringWidth:{DEFAULT:"3px",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...ie},rotate:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg",45:"45deg",90:"90deg",180:"180deg",...Ze},saturate:{0:"0",50:".5",100:"1",150:"1.5",200:"2",...q},scale:{0:"0",50:".5",75:".75",90:".9",95:".95",100:"1",105:"1.05",110:"1.1",125:"1.25",150:"1.5",...q},screens:{sm:"40rem",md:"48rem",lg:"64rem",xl:"80rem","2xl":"96rem"},scrollMargin:({theme:t})=>t("spacing"),scrollPadding:({theme:t})=>t("spacing"),sepia:{0:"0",DEFAULT:"100%",...q},skew:{0:"0deg",1:"1deg",2:"2deg",3:"3deg",6:"6deg",12:"12deg",...Ze},space:({theme:t})=>t("spacing"),spacing:{px:"1px",0:"0px",.5:"0.125rem",1:"0.25rem",1.5:"0.375rem",2:"0.5rem",2.5:"0.625rem",3:"0.75rem",3.5:"0.875rem",4:"1rem",5:"1.25rem",6:"1.5rem",7:"1.75rem",8:"2rem",9:"2.25rem",10:"2.5rem",11:"2.75rem",12:"3rem",14:"3.5rem",16:"4rem",20:"5rem",24:"6rem",28:"7rem",32:"8rem",36:"9rem",40:"10rem",44:"11rem",48:"12rem",52:"13rem",56:"14rem",60:"15rem",64:"16rem",72:"18rem",80:"20rem",96:"24rem"},stroke:({theme:t})=>({none:"none",...t("colors")}),strokeWidth:{0:"0",1:"1",2:"2",...Z},supports:{},data:{},textColor:({theme:t})=>t("colors"),textDecorationColor:({theme:t})=>t("colors"),textDecorationThickness:{auto:"auto","from-font":"from-font",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...ie},textIndent:({theme:t})=>t("spacing"),textOpacity:({theme:t})=>t("opacity"),textUnderlineOffset:{auto:"auto",0:"0px",1:"1px",2:"2px",4:"4px",8:"8px",...ie},transformOrigin:{center:"center",top:"top","top-right":"top right",right:"right","bottom-right":"bottom right",bottom:"bottom","bottom-left":"bottom left",left:"left","top-left":"top left"},transitionDelay:{0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms",...Dr},transitionDuration:{DEFAULT:"150ms",0:"0s",75:"75ms",100:"100ms",150:"150ms",200:"200ms",300:"300ms",500:"500ms",700:"700ms",1e3:"1000ms",...Dr},transitionProperty:{none:"none",all:"all",DEFAULT:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter",colors:"color, background-color, border-color, outline-color, text-decoration-color, fill, stroke",opacity:"opacity",shadow:"box-shadow",transform:"transform"},transitionTimingFunction:{DEFAULT:"cubic-bezier(0.4, 0, 0.2, 1)",linear:"linear",in:"cubic-bezier(0.4, 0, 1, 1)",out:"cubic-bezier(0, 0, 0.2, 1)","in-out":"cubic-bezier(0.4, 0, 0.2, 1)"},translate:({theme:t})=>({"1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%",full:"100%",...t("spacing")}),size:({theme:t})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",...t("spacing")}),width:({theme:t})=>({auto:"auto","1/2":"50%","1/3":"33.333333%","2/3":"66.666667%","1/4":"25%","2/4":"50%","3/4":"75%","1/5":"20%","2/5":"40%","3/5":"60%","4/5":"80%","1/6":"16.666667%","2/6":"33.333333%","3/6":"50%","4/6":"66.666667%","5/6":"83.333333%","1/12":"8.333333%","2/12":"16.666667%","3/12":"25%","4/12":"33.333333%","5/12":"41.666667%","6/12":"50%","7/12":"58.333333%","8/12":"66.666667%","9/12":"75%","10/12":"83.333333%","11/12":"91.666667%",full:"100%",screen:"100vw",svw:"100svw",lvw:"100lvw",dvw:"100dvw",min:"min-content",max:"max-content",fit:"fit-content",...t("spacing")}),willChange:{auto:"auto",scroll:"scroll-position",contents:"contents",transform:"transform"},zIndex:{auto:"auto",0:"0",10:"10",20:"20",30:"30",40:"40",50:"50",...Z}};function jr(t){return{theme:{...Fr,colors:({theme:r})=>r("color",{}),extend:{fontSize:({theme:r})=>({...r("text",{})}),boxShadow:({theme:r})=>({...r("shadow",{})}),animation:({theme:r})=>({...r("animate",{})}),aspectRatio:({theme:r})=>({...r("aspect",{})}),borderRadius:({theme:r})=>({...r("radius",{})}),screens:({theme:r})=>({...r("breakpoint",{})}),letterSpacing:({theme:r})=>({...r("tracking",{})}),lineHeight:({theme:r})=>({...r("leading",{})}),transitionDuration:{DEFAULT:t.get(["--default-transition-duration"])??null},transitionTimingFunction:{DEFAULT:t.get(["--default-transition-timing-function"])??null},maxWidth:({theme:r})=>({...r("container",{})})}}}}var Rn={blocklist:[],future:{},prefix:"",important:!1,darkMode:null,theme:{},plugins:[],content:{files:[]}};function At(t,r){let o={design:t,configs:[],plugins:[],content:{files:[]},theme:{},extend:{},result:structuredClone(Rn)};for(let n of r)xt(o,n);for(let n of o.configs)"darkMode"in n&&n.darkMode!==void 0&&(o.result.darkMode=n.darkMode??null),"prefix"in n&&n.prefix!==void 0&&(o.result.prefix=n.prefix??""),"blocklist"in n&&n.blocklist!==void 0&&(o.result.blocklist=n.blocklist??[]),"important"in n&&n.important!==void 0&&(o.result.important=n.important??!1);let e=Kn(o);return{resolvedConfig:{...o.result,content:o.content,theme:o.theme,plugins:o.plugins},replacedThemeKeys:e}}function On(t,r){if(Array.isArray(t)&&ve(t[0]))return t.concat(r);if(Array.isArray(r)&&ve(r[0])&&ve(t))return[t,...r];if(Array.isArray(r))return r}function xt(t,{config:r,base:o,path:e,reference:n}){let s=[];for(let c of r.plugins??[])"__isOptionsFunction"in c?s.push({...c(),reference:n}):"handler"in c?s.push({...c,reference:n}):s.push({handler:c,reference:n});if(Array.isArray(r.presets)&&r.presets.length===0)throw new Error("Error in the config file/plugin/preset. An empty preset (`preset: []`) is not currently supported.");for(let c of r.presets??[])xt(t,{path:e,base:o,config:c,reference:n});for(let c of s)t.plugins.push(c),c.config&&xt(t,{path:e,base:o,config:c.config,reference:!!c.reference});let l=r.content??[],p=Array.isArray(l)?l:l.files;for(let c of p)t.content.files.push(typeof c=="object"?c:{base:o,pattern:c});t.configs.push(r)}function Kn(t){let r=new Set,o=Ge(t.design,()=>t.theme,n),e=Object.assign(o,{theme:o,colors:Je});function n(s){return typeof s=="function"?s(e)??null:s??null}for(let s of t.configs){let l=s.theme??{},p=l.extend??{};for(let c in l)c!=="extend"&&r.add(c);Object.assign(t.theme,l);for(let c in p)t.extend[c]??=[],t.extend[c].push(p[c])}delete t.theme.extend;for(let s in t.extend){let l=[t.theme[s],...t.extend[s]];t.theme[s]=()=>{let p=l.map(n);return $e({},p,On)}}for(let s in t.theme)t.theme[s]=n(t.theme[s]);if(t.theme.screens&&typeof t.theme.screens=="object")for(let s of Object.keys(t.theme.screens)){let l=t.theme.screens[s];l&&typeof l=="object"&&("raw"in l||"max"in l||"min"in l&&(t.theme.screens[s]=l.min))}return r}function Ir(t,r){let o=t.theme.container||{};if(typeof o!="object"||o===null)return;let e=Pn(o,r);e.length!==0&&r.utilities.static("container",()=>structuredClone(e))}function Pn({center:t,padding:r,screens:o},e){let n=[],s=null;if(t&&n.push(a("margin-inline","auto")),(typeof r=="string"||typeof r=="object"&&r!==null&&"DEFAULT"in r)&&n.push(a("padding-inline",typeof r=="string"?r:r.DEFAULT)),typeof o=="object"&&o!==null){s=new Map;let l=Array.from(e.theme.namespace("--breakpoint").entries());if(l.sort((p,c)=>ue(p[1],c[1],"asc")),l.length>0){let[p]=l[0];n.push(U("@media",`(width >= --theme(--breakpoint-${p}))`,[a("max-width","none")]))}for(let[p,c]of Object.entries(o)){if(typeof c=="object")if("min"in c)c=c.min;else continue;s.set(p,U("@media",`(width >= ${c})`,[a("max-width",c)]))}}if(typeof r=="object"&&r!==null){let l=Object.entries(r).filter(([p])=>p!=="DEFAULT").map(([p,c])=>[p,e.theme.resolveValue(p,["--breakpoint"]),c]).filter(Boolean);l.sort((p,c)=>ue(p[1],c[1],"asc"));for(let[p,,c]of l)if(s&&s.has(p))s.get(p).nodes.push(a("padding-inline",c));else{if(s)continue;n.push(U("@media",`(width >= theme(--breakpoint-${p}))`,[a("padding-inline",c)]))}}if(s)for(let[,l]of s)n.push(l);return n}function Lr({addVariant:t,config:r}){let o=r("darkMode",null),[e,n=".dark"]=Array.isArray(o)?o:[o];if(e==="variant"){let s;if(Array.isArray(n)||typeof n=="function"?s=n:typeof n=="string"&&(s=[n]),Array.isArray(s))for(let l of s)l===".dark"?(e=!1,console.warn('When using `variant` for `darkMode`, you must provide a selector.\nExample: `darkMode: ["variant", ".your-selector &"]`')):l.includes("&")||(e=!1,console.warn('When using `variant` for `darkMode`, your selector must contain `&`.\nExample `darkMode: ["variant", ".your-selector &"]`'));n=s}e===null||(e==="selector"?t("dark",`&:where(${n}, ${n} *)`):e==="media"?t("dark","@media (prefers-color-scheme: dark)"):e==="variant"?t("dark",n):e==="class"&&t("dark",`&:is(${n} *)`))}function Mr(t){for(let[r,o]of[["t","top"],["tr","top right"],["r","right"],["br","bottom right"],["b","bottom"],["bl","bottom left"],["l","left"],["tl","top left"]])t.utilities.static(`bg-gradient-to-${r}`,()=>[a("--tw-gradient-position",`to ${o} in oklab`),a("background-image","linear-gradient(var(--tw-gradient-stops))")]);t.utilities.functional("max-w-screen",r=>{if(!r.value||r.value.kind==="arbitrary")return;let o=t.theme.resolve(r.value.value,["--breakpoint"]);if(o)return[a("max-width",o)]}),t.utilities.static("overflow-ellipsis",()=>[a("text-overflow","ellipsis")]),t.utilities.static("decoration-slice",()=>[a("-webkit-box-decoration-break","slice"),a("box-decoration-break","slice")]),t.utilities.static("decoration-clone",()=>[a("-webkit-box-decoration-break","clone"),a("box-decoration-break","clone")]),t.utilities.functional("flex-shrink",r=>{if(!r.modifier){if(!r.value)return[a("flex-shrink","1")];if(r.value.kind==="arbitrary")return[a("flex-shrink",r.value.value)];if(N(r.value.value))return[a("flex-shrink",r.value.value)]}}),t.utilities.functional("flex-grow",r=>{if(!r.modifier){if(!r.value)return[a("flex-grow","1")];if(r.value.kind==="arbitrary")return[a("flex-grow",r.value.value)];if(N(r.value.value))return[a("flex-grow",r.value.value)]}})}function Br(t,r){let o=t.theme.screens||{},e=r.variants.get("min")?.order??0,n=[];for(let[l,p]of Object.entries(o)){let m=function(v){r.variants.static(l,y=>{y.nodes=[U("@media",g,y.nodes)]},{order:v})};var s=m;let c=r.variants.get(l),d=r.theme.resolveValue(l,["--breakpoint"]);if(c&&d&&!r.theme.hasDefault(`--breakpoint-${l}`))continue;let u=!0;typeof p=="string"&&(u=!1);let g=Un(p);u?n.push(m):m(e)}if(n.length!==0){for(let[,l]of r.variants.variants)l.order>e&&(l.order+=n.length);r.variants.compareFns=new Map(Array.from(r.variants.compareFns).map(([l,p])=>(l>e&&(l+=n.length),[l,p])));for(let[l,p]of n.entries())p(e+l+1)}}function Un(t){return(Array.isArray(t)?t:[t]).map(o=>typeof o=="string"?{min:o}:o&&typeof o=="object"?o:null).map(o=>{if(o===null)return null;if("raw"in o)return o.raw;let e="";return o.max!==void 0&&(e+=`${o.max} >= `),e+="width",o.min!==void 0&&(e+=` >= ${o.min}`),`(${e})`}).filter(Boolean).join(", ")}function Wr(t,r){let o=t.theme.aria||{},e=t.theme.supports||{},n=t.theme.data||{};if(Object.keys(o).length>0){let s=r.variants.get("aria"),l=s?.applyFn,p=s?.compounds;r.variants.functional("aria",(c,d)=>{let u=d.value;return u&&u.kind==="named"&&u.value in o?l?.(c,{...d,value:{kind:"arbitrary",value:o[u.value]}}):l?.(c,d)},{compounds:p})}if(Object.keys(e).length>0){let s=r.variants.get("supports"),l=s?.applyFn,p=s?.compounds;r.variants.functional("supports",(c,d)=>{let u=d.value;return u&&u.kind==="named"&&u.value in e?l?.(c,{...d,value:{kind:"arbitrary",value:e[u.value]}}):l?.(c,d)},{compounds:p})}if(Object.keys(n).length>0){let s=r.variants.get("data"),l=s?.applyFn,p=s?.compounds;r.variants.functional("data",(c,d)=>{let u=d.value;return u&&u.kind==="named"&&u.value in n?l?.(c,{...d,value:{kind:"arbitrary",value:n[u.value]}}):l?.(c,d)},{compounds:p})}}var _n=/^[a-z]+$/;async function Hr({designSystem:t,base:r,ast:o,loadModule:e,globs:n}){let s=0,l=[],p=[];_(o,(g,{parent:m,replaceWith:v,context:y})=>{if(g.kind==="at-rule"){if(g.name==="@plugin"){if(m!==null)throw new Error("`@plugin` cannot be nested.");let b=g.params.slice(1,-1);if(b.length===0)throw new Error("`@plugin` must have a path.");let x={};for(let $ of g.nodes??[]){if($.kind!=="declaration")throw new Error(`Unexpected \`@plugin\` option: - -${Y([$])} - -\`@plugin\` options must be a flat list of declarations.`);if($.value===void 0)continue;let V=$.value,O=P(V,",").map(R=>{if(R=R.trim(),R==="null")return null;if(R==="true")return!0;if(R==="false")return!1;if(Number.isNaN(Number(R))){if(R[0]==='"'&&R[R.length-1]==='"'||R[0]==="'"&&R[R.length-1]==="'")return R.slice(1,-1);if(R[0]==="{"&&R[R.length-1]==="}")throw new Error(`Unexpected \`@plugin\` option: Value of declaration \`${Y([$]).trim()}\` is not supported. - -Using an object as a plugin option is currently only supported in JavaScript configuration files.`)}else return Number(R);return R});x[$.property]=O.length===1?O[0]:O}l.push([{id:b,base:y.base,reference:!!y.reference},Object.keys(x).length>0?x:null]),v([]),s|=4;return}if(g.name==="@config"){if(g.nodes.length>0)throw new Error("`@config` cannot have a body.");if(m!==null)throw new Error("`@config` cannot be nested.");p.push({id:g.params.slice(1,-1),base:y.base,reference:!!y.reference}),v([]),s|=4;return}}}),Mr(t);let c=t.resolveThemeValue;if(t.resolveThemeValue=function(m){return m.startsWith("--")?c(m):(s|=qr({designSystem:t,base:r,ast:o,globs:n,configs:[],pluginDetails:[]}),t.resolveThemeValue(m))},!l.length&&!p.length)return 0;let[d,u]=await Promise.all([Promise.all(p.map(async({id:g,base:m,reference:v})=>{let y=await e(g,m,"config");return{path:g,base:y.base,config:y.module,reference:v}})),Promise.all(l.map(async([{id:g,base:m,reference:v},y])=>{let b=await e(g,m,"plugin");return{path:g,base:b.base,plugin:b.module,options:y,reference:v}}))]);return s|=qr({designSystem:t,base:r,ast:o,globs:n,configs:d,pluginDetails:u}),s}function qr({designSystem:t,base:r,ast:o,globs:e,configs:n,pluginDetails:s}){let l=0,c=[...s.map(b=>{if(!b.options)return{config:{plugins:[b.plugin]},base:b.base,reference:b.reference};if("__isOptionsFunction"in b.plugin)return{config:{plugins:[b.plugin(b.options)]},base:b.base,reference:b.reference};throw new Error(`The plugin "${b.path}" does not accept options`)}),...n],{resolvedConfig:d}=At(t,[{config:jr(t.theme),base:r,reference:!0},...c,{config:{plugins:[Lr]},base:r,reference:!0}]),{resolvedConfig:u,replacedThemeKeys:g}=At(t,c);t.resolveThemeValue=function(x,$){let V=v.theme(x,$);if(Array.isArray(V)&&V.length===2)return V[0];if(Array.isArray(V))return V.join(", ");if(typeof V=="string")return V};let m={designSystem:t,ast:o,resolvedConfig:d,featuresRef:{set current(b){l|=b}}},v=wt({...m,referenceMode:!1}),y;for(let{handler:b,reference:x}of d.plugins)x?(y||=wt({...m,referenceMode:!0}),b(y)):b(v);if(yr(t,u,g),_r(t,u,g),Wr(u,t),Br(u,t),Ir(u,t),!t.theme.prefix&&d.prefix){if(d.prefix.endsWith("-")&&(d.prefix=d.prefix.slice(0,-1),console.warn(`The prefix "${d.prefix}" is invalid. Prefixes must be lowercase ASCII letters (a-z) only and is written as a variant before all utilities. We have fixed up the prefix for you. Remove the trailing \`-\` to silence this warning.`)),!_n.test(d.prefix))throw new Error(`The prefix "${d.prefix}" is invalid. Prefixes must be lowercase ASCII letters (a-z) only.`);t.theme.prefix=d.prefix}if(!t.important&&d.important===!0&&(t.important=!0),typeof d.important=="string"){let b=d.important;_(o,(x,{replaceWith:$,parent:V})=>{if(x.kind==="at-rule"&&!(x.name!=="@tailwind"||x.params!=="utilities"))return V?.kind==="rule"&&V.selector===b?2:($(z(b,[x])),2)})}for(let b of d.blocklist)t.invalidCandidates.add(b);for(let b of d.content.files){if("raw"in b)throw new Error(`Error in the config file/plugin/preset. The \`content\` key contains a \`raw\` entry: - -${JSON.stringify(b,null,2)} - -This feature is not currently supported.`);e.push(b)}return l}var Dn=/^[a-z]+$/;function zn(){throw new Error("No `loadModule` function provided to `compile`")}function Fn(){throw new Error("No `loadStylesheet` function provided to `compile`")}function jn(t){let r=0,o=null;for(let e of P(t," "))e==="reference"?r|=2:e==="inline"?r|=1:e==="default"?r|=4:e==="static"?r|=8:e.startsWith("prefix(")&&e.endsWith(")")&&(o=e.slice(7,-1));return[r,o]}async function In(t,{base:r="",loadModule:o=zn,loadStylesheet:e=Fn}={}){let n=0;t=[Q({base:r},t)],n|=await kt(t,r,e);let s=null,l=new ze,p=[],c=[],d=null,u=null,g=[],m=[],v=null;_(t,(b,{parent:x,replaceWith:$,context:V})=>{if(b.kind==="at-rule"){if(b.name==="@tailwind"&&(b.params==="utilities"||b.params.startsWith("utilities"))){if(u!==null){$([]);return}let O=P(b.params," ");for(let R of O)if(R.startsWith("source(")){let K=R.slice(7,-1);if(K==="none"){v=K;continue}if(K[0]==='"'&&K[K.length-1]!=='"'||K[0]==="'"&&K[K.length-1]!=="'"||K[0]!=="'"&&K[0]!=='"')throw new Error("`source(\u2026)` paths must be quoted.");v={base:V.sourceBase??V.base,pattern:K.slice(1,-1)}}u=b,n|=16}if(b.name==="@utility"){if(x!==null)throw new Error("`@utility` cannot be nested.");if(b.nodes.length===0)throw new Error(`\`@utility ${b.params}\` is empty. Utilities should include at least one property.`);let O=nr(b);if(O===null)throw new Error(`\`@utility ${b.params}\` defines an invalid utility name. Utilities should be alphanumeric and start with a lowercase letter.`);c.push(O)}if(b.name==="@source"){if(b.nodes.length>0)throw new Error("`@source` cannot have a body.");if(x!==null)throw new Error("`@source` cannot be nested.");let O=b.params;if(O[0]==='"'&&O[O.length-1]!=='"'||O[0]==="'"&&O[O.length-1]!=="'"||O[0]!=="'"&&O[0]!=='"')throw new Error("`@source` paths must be quoted.");m.push({base:V.base,pattern:O.slice(1,-1)}),$([]);return}if(b.name==="@variant"&&(x===null?b.nodes.length===0?b.name="@custom-variant":(_(b.nodes,O=>{if(O.kind==="at-rule"&&O.name==="@slot")return b.name="@custom-variant",2}),b.name==="@variant"&&g.push(b)):g.push(b)),b.name==="@custom-variant"){if(x!==null)throw new Error("`@custom-variant` cannot be nested.");$([]);let[O,R]=P(b.params," ");if(!We.test(O))throw new Error(`\`@custom-variant ${O}\` defines an invalid variant name. Variants should only contain alphanumeric, dashes or underscore characters.`);if(b.nodes.length>0&&R)throw new Error(`\`@custom-variant ${O}\` cannot have both a selector and a body.`);if(b.nodes.length===0){if(!R)throw new Error(`\`@custom-variant ${O}\` has no selector or body.`);let K=P(R.slice(1,-1),",");if(K.length===0||K.some(h=>h.trim()===""))throw new Error(`\`@custom-variant ${O} (${K.join(",")})\` selector is invalid.`);let i=[],f=[];for(let h of K)h=h.trim(),h[0]==="@"?i.push(h):f.push(h);p.push(h=>{h.variants.static(O,w=>{let k=[];f.length>0&&k.push(z(f.join(", "),w.nodes));for(let T of i)k.push(M(T,w.nodes));w.nodes=k},{compounds:fe([...f,...i])})});return}else{p.push(K=>{K.variants.fromAst(O,b.nodes)});return}}if(b.name==="@media"){let O=P(b.params," "),R=[];for(let K of O)if(K.startsWith("source(")){let i=K.slice(7,-1);_(b.nodes,(f,{replaceWith:h})=>{if(f.kind==="at-rule"&&f.name==="@tailwind"&&f.params==="utilities")return f.params+=` source(${i})`,h([Q({sourceBase:V.base},[f])]),2})}else if(K.startsWith("theme(")){let i=K.slice(6,-1),f=i.includes("reference");_(b.nodes,h=>{if(h.kind!=="at-rule"){if(f)throw new Error('Files imported with `@import "\u2026" theme(reference)` must only contain `@theme` blocks.\nUse `@reference "\u2026";` instead.');return 0}if(h.name==="@theme")return h.params+=" "+i,1})}else if(K.startsWith("prefix(")){let i=K.slice(7,-1);_(b.nodes,f=>{if(f.kind==="at-rule"&&f.name==="@theme")return f.params+=` prefix(${i})`,1})}else K==="important"?s=!0:K==="reference"?b.nodes=[Q({reference:!0},b.nodes)]:R.push(K);R.length>0?b.params=R.join(" "):O.length>0&&$(b.nodes)}if(b.name==="@theme"){let[O,R]=jn(b.params);if(V.reference&&(O|=2),R){if(!Dn.test(R))throw new Error(`The prefix "${R}" is invalid. Prefixes must be lowercase ASCII letters (a-z) only.`);l.prefix=R}return _(b.nodes,K=>{if(K.kind==="at-rule"&&K.name==="@keyframes")return l.addKeyframes(K),1;if(K.kind==="comment")return;if(K.kind==="declaration"&&K.property.startsWith("--")){l.add(ae(K.property),K.value??"",O);return}let i=Y([U(b.name,b.params,[K])]).split(` -`).map((f,h,w)=>`${h===0||h>=w.length-2?" ":">"} ${f}`).join(` -`);throw new Error(`\`@theme\` blocks must only contain custom properties or \`@keyframes\`. - -${i}`)}),d?$([]):(d=z(":root, :host",[]),$([d])),1}}});let y=pr(l);s&&(y.important=s),n|=await Hr({designSystem:y,base:r,ast:t,loadModule:o,globs:m});for(let b of p)b(y);for(let b of c)b(y);if(d){let b=[];for(let[$,V]of y.theme.entries())V.options&2||b.push(a(re($),V.value));let x=y.theme.getKeyframes();for(let $ of x)t.push(Q({theme:!0},[D([$])]));d.nodes=[Q({theme:!0},b)]}if(u){let b=u;b.kind="context",b.context={}}if(g.length>0){for(let b of g){let x=z("&",b.nodes),$=b.params,V=y.parseVariant($);if(V===null)throw new Error(`Cannot use \`@variant\` with unknown variant: ${$}`);if(be(x,V,y.variants)===null)throw new Error(`Cannot use \`@variant\` with variant: ${$}`);Object.assign(b,x)}n|=32}return n|=he(t,y),n|=Ne(t,y),_(t,(b,{replaceWith:x})=>{if(b.kind==="at-rule")return b.name==="@utility"&&x([]),1}),{designSystem:y,ast:t,globs:m,root:v,utilitiesNode:u,features:n}}async function Ln(t,r={}){let{designSystem:o,ast:e,globs:n,root:s,utilitiesNode:l,features:p}=await In(t,r);e.unshift(De(`! tailwindcss v${$t} | MIT License | https://tailwindcss.com `));function c(m){o.invalidCandidates.add(m)}let d=new Set,u=null,g=0;return{globs:n,root:s,features:p,build(m){if(p===0)return t;if(!l)return u??=se(e,o),u;let v=!1,y=d.size;for(let x of m)o.invalidCandidates.has(x)||(x[0]==="-"&&x[1]==="-"?o.theme.markUsedVariable(x):d.add(x),v||=d.size!==y);if(!v)return u??=se(e,o),u;let b=ne(d,o,{onInvalidCandidate:c}).astNodes;return g===b.length?(u??=se(e,o),u):(g=b.length,l.nodes=b,u=se(e,o),u)}}}async function Gr(t,r={}){let o=pe(t),e=await Ln(o,r),n=o,s=t;return{...e,build(l){let p=e.build(l);return p===n||(s=Y(p),n=p),s}}}var Yr=`@layer theme, base, components, utilities; - -@import './theme.css' layer(theme); -@import './preflight.css' layer(base); -@import './utilities.css' layer(utilities); -`;var Jr=`/* - 1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) - 2. Remove default margins and padding - 3. Reset all borders. -*/ - -*, -::after, -::before, -::backdrop, -::file-selector-button { - box-sizing: border-box; /* 1 */ - margin: 0; /* 2 */ - padding: 0; /* 2 */ - border: 0 solid; /* 3 */ -} - -/* - 1. Use a consistent sensible line-height in all browsers. - 2. Prevent adjustments of font size after orientation changes in iOS. - 3. Use a more readable tab size. - 4. Use the user's configured \`sans\` font-family by default. - 5. Use the user's configured \`sans\` font-feature-settings by default. - 6. Use the user's configured \`sans\` font-variation-settings by default. - 7. Disable tap highlights on iOS. -*/ - -html, -:host { - line-height: 1.5; /* 1 */ - -webkit-text-size-adjust: 100%; /* 2 */ - tab-size: 4; /* 3 */ - 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' - ); /* 4 */ - font-feature-settings: var(--default-font-feature-settings, normal); /* 5 */ - font-variation-settings: var(--default-font-variation-settings, normal); /* 6 */ - -webkit-tap-highlight-color: transparent; /* 7 */ -} - -/* - Inherit line-height from \`html\` so users can set them as a class directly on the \`html\` element. -*/ - -body { - line-height: inherit; -} - -/* - 1. Add the correct height in Firefox. - 2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) - 3. Reset the default border style to a 1px solid border. -*/ - -hr { - height: 0; /* 1 */ - color: inherit; /* 2 */ - border-top-width: 1px; /* 3 */ -} - -/* - Add the correct text decoration in Chrome, Edge, and Safari. -*/ - -abbr:where([title]) { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; -} - -/* - Remove the default font size and weight for headings. -*/ - -h1, -h2, -h3, -h4, -h5, -h6 { - font-size: inherit; - font-weight: inherit; -} - -/* - Reset links to optimize for opt-in styling instead of opt-out. -*/ - -a { - color: inherit; - -webkit-text-decoration: inherit; - text-decoration: inherit; -} - -/* - Add the correct font weight in Edge and Safari. -*/ - -b, -strong { - font-weight: bolder; -} - -/* - 1. Use the user's configured \`mono\` font-family by default. - 2. Use the user's configured \`mono\` font-feature-settings by default. - 3. Use the user's configured \`mono\` font-variation-settings by default. - 4. Correct the odd \`em\` font sizing in all browsers. -*/ - -code, -kbd, -samp, -pre { - font-family: var( - --default-mono-font-family, - ui-monospace, - SFMono-Regular, - Menlo, - Monaco, - Consolas, - 'Liberation Mono', - 'Courier New', - monospace - ); /* 1 */ - font-feature-settings: var(--default-mono-font-feature-settings, normal); /* 2 */ - font-variation-settings: var(--default-mono-font-variation-settings, normal); /* 3 */ - font-size: 1em; /* 4 */ -} - -/* - Add the correct font size in all browsers. -*/ - -small { - font-size: 80%; -} - -/* - Prevent \`sub\` and \`sup\` elements from affecting the line height in all browsers. -*/ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* - 1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) - 2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) - 3. Remove gaps between table borders by default. -*/ - -table { - text-indent: 0; /* 1 */ - border-color: inherit; /* 2 */ - border-collapse: collapse; /* 3 */ -} - -/* - Use the modern Firefox focus style for all focusable elements. -*/ - -:-moz-focusring { - outline: auto; -} - -/* - Add the correct vertical alignment in Chrome and Firefox. -*/ - -progress { - vertical-align: baseline; -} - -/* - Add the correct display in Chrome and Safari. -*/ - -summary { - display: list-item; -} - -/* - Make lists unstyled by default. -*/ - -ol, -ul, -menu { - list-style: none; -} - -/* - 1. Make replaced elements \`display: block\` by default. (https://github.com/mozdevs/cssremedy/issues/14) - 2. Add \`vertical-align: middle\` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) - This can trigger a poorly considered lint error in some tools but is included by design. -*/ - -img, -svg, -video, -canvas, -audio, -iframe, -embed, -object { - display: block; /* 1 */ - vertical-align: middle; /* 2 */ -} - -/* - Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) -*/ - -img, -video { - max-width: 100%; - height: auto; -} - -/* - 1. Inherit font styles in all browsers. - 2. Remove border radius in all browsers. - 3. Remove background color in all browsers. - 4. Ensure consistent opacity for disabled states in all browsers. -*/ - -button, -input, -select, -optgroup, -textarea, -::file-selector-button { - font: inherit; /* 1 */ - font-feature-settings: inherit; /* 1 */ - font-variation-settings: inherit; /* 1 */ - letter-spacing: inherit; /* 1 */ - color: inherit; /* 1 */ - border-radius: 0; /* 2 */ - background-color: transparent; /* 3 */ - opacity: 1; /* 4 */ -} - -/* - Restore default font weight. -*/ - -:where(select:is([multiple], [size])) optgroup { - font-weight: bolder; -} - -/* - Restore indentation. -*/ - -:where(select:is([multiple], [size])) optgroup option { - padding-inline-start: 20px; -} - -/* - Restore space after button. -*/ - -::file-selector-button { - margin-inline-end: 4px; -} - -/* - 1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) - 2. Set the default placeholder color to a semi-transparent version of the current text color. -*/ - -::placeholder { - opacity: 1; /* 1 */ - color: color-mix(in oklab, currentColor 50%, transparent); /* 2 */ -} - -/* - Prevent resizing textareas horizontally by default. -*/ - -textarea { - resize: vertical; -} - -/* - Remove the inner padding in Chrome and Safari on macOS. -*/ - -::-webkit-search-decoration { - -webkit-appearance: none; -} - -/* - 1. Ensure date/time inputs have the same height when empty in iOS Safari. - 2. Ensure text alignment can be changed on date/time inputs in iOS Safari. -*/ - -::-webkit-date-and-time-value { - min-height: 1lh; /* 1 */ - text-align: inherit; /* 2 */ -} - -/* - Prevent height from changing on date/time inputs in macOS Safari when the input is set to \`display: block\`. -*/ - -::-webkit-datetime-edit { - display: inline-flex; -} - -/* - Remove excess padding from pseudo-elements in date/time inputs to ensure consistent height across browsers. -*/ - -::-webkit-datetime-edit-fields-wrapper { - padding: 0; -} - -::-webkit-datetime-edit, -::-webkit-datetime-edit-year-field, -::-webkit-datetime-edit-month-field, -::-webkit-datetime-edit-day-field, -::-webkit-datetime-edit-hour-field, -::-webkit-datetime-edit-minute-field, -::-webkit-datetime-edit-second-field, -::-webkit-datetime-edit-millisecond-field, -::-webkit-datetime-edit-meridiem-field { - padding-block: 0; -} - -/* - Remove the additional \`:invalid\` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) -*/ - -:-moz-ui-invalid { - box-shadow: none; -} - -/* - Correct the inability to style the border radius in iOS Safari. -*/ - -button, -input:where([type='button'], [type='reset'], [type='submit']), -::file-selector-button { - appearance: button; -} - -/* - Correct the cursor style of increment and decrement buttons in Safari. -*/ - -::-webkit-inner-spin-button, -::-webkit-outer-spin-button { - height: auto; -} - -/* - Make elements with the HTML hidden attribute stay hidden by default. -*/ - -[hidden]:where(:not([hidden='until-found'])) { - display: none !important; -} -`;var Zr=`@theme default { - --font-sans: - ui-sans-serif, system-ui, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', - 'Noto Color Emoji'; - --font-serif: ui-serif, Georgia, Cambria, 'Times New Roman', Times, serif; - --font-mono: - ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', - monospace; - - --color-red-50: oklch(0.971 0.013 17.38); - --color-red-100: oklch(0.936 0.032 17.717); - --color-red-200: oklch(0.885 0.062 18.334); - --color-red-300: oklch(0.808 0.114 19.571); - --color-red-400: oklch(0.704 0.191 22.216); - --color-red-500: oklch(0.637 0.237 25.331); - --color-red-600: oklch(0.577 0.245 27.325); - --color-red-700: oklch(0.505 0.213 27.518); - --color-red-800: oklch(0.444 0.177 26.899); - --color-red-900: oklch(0.396 0.141 25.723); - --color-red-950: oklch(0.258 0.092 26.042); - - --color-orange-50: oklch(0.98 0.016 73.684); - --color-orange-100: oklch(0.954 0.038 75.164); - --color-orange-200: oklch(0.901 0.076 70.697); - --color-orange-300: oklch(0.837 0.128 66.29); - --color-orange-400: oklch(0.75 0.183 55.934); - --color-orange-500: oklch(0.705 0.213 47.604); - --color-orange-600: oklch(0.646 0.222 41.116); - --color-orange-700: oklch(0.553 0.195 38.402); - --color-orange-800: oklch(0.47 0.157 37.304); - --color-orange-900: oklch(0.408 0.123 38.172); - --color-orange-950: oklch(0.266 0.079 36.259); - - --color-amber-50: oklch(0.987 0.022 95.277); - --color-amber-100: oklch(0.962 0.059 95.617); - --color-amber-200: oklch(0.924 0.12 95.746); - --color-amber-300: oklch(0.879 0.169 91.605); - --color-amber-400: oklch(0.828 0.189 84.429); - --color-amber-500: oklch(0.769 0.188 70.08); - --color-amber-600: oklch(0.666 0.179 58.318); - --color-amber-700: oklch(0.555 0.163 48.998); - --color-amber-800: oklch(0.473 0.137 46.201); - --color-amber-900: oklch(0.414 0.112 45.904); - --color-amber-950: oklch(0.279 0.077 45.635); - - --color-yellow-50: oklch(0.987 0.026 102.212); - --color-yellow-100: oklch(0.973 0.071 103.193); - --color-yellow-200: oklch(0.945 0.129 101.54); - --color-yellow-300: oklch(0.905 0.182 98.111); - --color-yellow-400: oklch(0.852 0.199 91.936); - --color-yellow-500: oklch(0.795 0.184 86.047); - --color-yellow-600: oklch(0.681 0.162 75.834); - --color-yellow-700: oklch(0.554 0.135 66.442); - --color-yellow-800: oklch(0.476 0.114 61.907); - --color-yellow-900: oklch(0.421 0.095 57.708); - --color-yellow-950: oklch(0.286 0.066 53.813); - - --color-lime-50: oklch(0.986 0.031 120.757); - --color-lime-100: oklch(0.967 0.067 122.328); - --color-lime-200: oklch(0.938 0.127 124.321); - --color-lime-300: oklch(0.897 0.196 126.665); - --color-lime-400: oklch(0.841 0.238 128.85); - --color-lime-500: oklch(0.768 0.233 130.85); - --color-lime-600: oklch(0.648 0.2 131.684); - --color-lime-700: oklch(0.532 0.157 131.589); - --color-lime-800: oklch(0.453 0.124 130.933); - --color-lime-900: oklch(0.405 0.101 131.063); - --color-lime-950: oklch(0.274 0.072 132.109); - - --color-green-50: oklch(0.982 0.018 155.826); - --color-green-100: oklch(0.962 0.044 156.743); - --color-green-200: oklch(0.925 0.084 155.995); - --color-green-300: oklch(0.871 0.15 154.449); - --color-green-400: oklch(0.792 0.209 151.711); - --color-green-500: oklch(0.723 0.219 149.579); - --color-green-600: oklch(0.627 0.194 149.214); - --color-green-700: oklch(0.527 0.154 150.069); - --color-green-800: oklch(0.448 0.119 151.328); - --color-green-900: oklch(0.393 0.095 152.535); - --color-green-950: oklch(0.266 0.065 152.934); - - --color-emerald-50: oklch(0.979 0.021 166.113); - --color-emerald-100: oklch(0.95 0.052 163.051); - --color-emerald-200: oklch(0.905 0.093 164.15); - --color-emerald-300: oklch(0.845 0.143 164.978); - --color-emerald-400: oklch(0.765 0.177 163.223); - --color-emerald-500: oklch(0.696 0.17 162.48); - --color-emerald-600: oklch(0.596 0.145 163.225); - --color-emerald-700: oklch(0.508 0.118 165.612); - --color-emerald-800: oklch(0.432 0.095 166.913); - --color-emerald-900: oklch(0.378 0.077 168.94); - --color-emerald-950: oklch(0.262 0.051 172.552); - - --color-teal-50: oklch(0.984 0.014 180.72); - --color-teal-100: oklch(0.953 0.051 180.801); - --color-teal-200: oklch(0.91 0.096 180.426); - --color-teal-300: oklch(0.855 0.138 181.071); - --color-teal-400: oklch(0.777 0.152 181.912); - --color-teal-500: oklch(0.704 0.14 182.503); - --color-teal-600: oklch(0.6 0.118 184.704); - --color-teal-700: oklch(0.511 0.096 186.391); - --color-teal-800: oklch(0.437 0.078 188.216); - --color-teal-900: oklch(0.386 0.063 188.416); - --color-teal-950: oklch(0.277 0.046 192.524); - - --color-cyan-50: oklch(0.984 0.019 200.873); - --color-cyan-100: oklch(0.956 0.045 203.388); - --color-cyan-200: oklch(0.917 0.08 205.041); - --color-cyan-300: oklch(0.865 0.127 207.078); - --color-cyan-400: oklch(0.789 0.154 211.53); - --color-cyan-500: oklch(0.715 0.143 215.221); - --color-cyan-600: oklch(0.609 0.126 221.723); - --color-cyan-700: oklch(0.52 0.105 223.128); - --color-cyan-800: oklch(0.45 0.085 224.283); - --color-cyan-900: oklch(0.398 0.07 227.392); - --color-cyan-950: oklch(0.302 0.056 229.695); - - --color-sky-50: oklch(0.977 0.013 236.62); - --color-sky-100: oklch(0.951 0.026 236.824); - --color-sky-200: oklch(0.901 0.058 230.902); - --color-sky-300: oklch(0.828 0.111 230.318); - --color-sky-400: oklch(0.746 0.16 232.661); - --color-sky-500: oklch(0.685 0.169 237.323); - --color-sky-600: oklch(0.588 0.158 241.966); - --color-sky-700: oklch(0.5 0.134 242.749); - --color-sky-800: oklch(0.443 0.11 240.79); - --color-sky-900: oklch(0.391 0.09 240.876); - --color-sky-950: oklch(0.293 0.066 243.157); - - --color-blue-50: oklch(0.97 0.014 254.604); - --color-blue-100: oklch(0.932 0.032 255.585); - --color-blue-200: oklch(0.882 0.059 254.128); - --color-blue-300: oklch(0.809 0.105 251.813); - --color-blue-400: oklch(0.707 0.165 254.624); - --color-blue-500: oklch(0.623 0.214 259.815); - --color-blue-600: oklch(0.546 0.245 262.881); - --color-blue-700: oklch(0.488 0.243 264.376); - --color-blue-800: oklch(0.424 0.199 265.638); - --color-blue-900: oklch(0.379 0.146 265.522); - --color-blue-950: oklch(0.282 0.091 267.935); - - --color-indigo-50: oklch(0.962 0.018 272.314); - --color-indigo-100: oklch(0.93 0.034 272.788); - --color-indigo-200: oklch(0.87 0.065 274.039); - --color-indigo-300: oklch(0.785 0.115 274.713); - --color-indigo-400: oklch(0.673 0.182 276.935); - --color-indigo-500: oklch(0.585 0.233 277.117); - --color-indigo-600: oklch(0.511 0.262 276.966); - --color-indigo-700: oklch(0.457 0.24 277.023); - --color-indigo-800: oklch(0.398 0.195 277.366); - --color-indigo-900: oklch(0.359 0.144 278.697); - --color-indigo-950: oklch(0.257 0.09 281.288); - - --color-violet-50: oklch(0.969 0.016 293.756); - --color-violet-100: oklch(0.943 0.029 294.588); - --color-violet-200: oklch(0.894 0.057 293.283); - --color-violet-300: oklch(0.811 0.111 293.571); - --color-violet-400: oklch(0.702 0.183 293.541); - --color-violet-500: oklch(0.606 0.25 292.717); - --color-violet-600: oklch(0.541 0.281 293.009); - --color-violet-700: oklch(0.491 0.27 292.581); - --color-violet-800: oklch(0.432 0.232 292.759); - --color-violet-900: oklch(0.38 0.189 293.745); - --color-violet-950: oklch(0.283 0.141 291.089); - - --color-purple-50: oklch(0.977 0.014 308.299); - --color-purple-100: oklch(0.946 0.033 307.174); - --color-purple-200: oklch(0.902 0.063 306.703); - --color-purple-300: oklch(0.827 0.119 306.383); - --color-purple-400: oklch(0.714 0.203 305.504); - --color-purple-500: oklch(0.627 0.265 303.9); - --color-purple-600: oklch(0.558 0.288 302.321); - --color-purple-700: oklch(0.496 0.265 301.924); - --color-purple-800: oklch(0.438 0.218 303.724); - --color-purple-900: oklch(0.381 0.176 304.987); - --color-purple-950: oklch(0.291 0.149 302.717); - - --color-fuchsia-50: oklch(0.977 0.017 320.058); - --color-fuchsia-100: oklch(0.952 0.037 318.852); - --color-fuchsia-200: oklch(0.903 0.076 319.62); - --color-fuchsia-300: oklch(0.833 0.145 321.434); - --color-fuchsia-400: oklch(0.74 0.238 322.16); - --color-fuchsia-500: oklch(0.667 0.295 322.15); - --color-fuchsia-600: oklch(0.591 0.293 322.896); - --color-fuchsia-700: oklch(0.518 0.253 323.949); - --color-fuchsia-800: oklch(0.452 0.211 324.591); - --color-fuchsia-900: oklch(0.401 0.17 325.612); - --color-fuchsia-950: oklch(0.293 0.136 325.661); - - --color-pink-50: oklch(0.971 0.014 343.198); - --color-pink-100: oklch(0.948 0.028 342.258); - --color-pink-200: oklch(0.899 0.061 343.231); - --color-pink-300: oklch(0.823 0.12 346.018); - --color-pink-400: oklch(0.718 0.202 349.761); - --color-pink-500: oklch(0.656 0.241 354.308); - --color-pink-600: oklch(0.592 0.249 0.584); - --color-pink-700: oklch(0.525 0.223 3.958); - --color-pink-800: oklch(0.459 0.187 3.815); - --color-pink-900: oklch(0.408 0.153 2.432); - --color-pink-950: oklch(0.284 0.109 3.907); - - --color-rose-50: oklch(0.969 0.015 12.422); - --color-rose-100: oklch(0.941 0.03 12.58); - --color-rose-200: oklch(0.892 0.058 10.001); - --color-rose-300: oklch(0.81 0.117 11.638); - --color-rose-400: oklch(0.712 0.194 13.428); - --color-rose-500: oklch(0.645 0.246 16.439); - --color-rose-600: oklch(0.586 0.253 17.585); - --color-rose-700: oklch(0.514 0.222 16.935); - --color-rose-800: oklch(0.455 0.188 13.697); - --color-rose-900: oklch(0.41 0.159 10.272); - --color-rose-950: oklch(0.271 0.105 12.094); - - --color-slate-50: oklch(0.984 0.003 247.858); - --color-slate-100: oklch(0.968 0.007 247.896); - --color-slate-200: oklch(0.929 0.013 255.508); - --color-slate-300: oklch(0.869 0.022 252.894); - --color-slate-400: oklch(0.704 0.04 256.788); - --color-slate-500: oklch(0.554 0.046 257.417); - --color-slate-600: oklch(0.446 0.043 257.281); - --color-slate-700: oklch(0.372 0.044 257.287); - --color-slate-800: oklch(0.279 0.041 260.031); - --color-slate-900: oklch(0.208 0.042 265.755); - --color-slate-950: oklch(0.129 0.042 264.695); - - --color-gray-50: oklch(0.985 0.002 247.839); - --color-gray-100: oklch(0.967 0.003 264.542); - --color-gray-200: oklch(0.928 0.006 264.531); - --color-gray-300: oklch(0.872 0.01 258.338); - --color-gray-400: oklch(0.707 0.022 261.325); - --color-gray-500: oklch(0.551 0.027 264.364); - --color-gray-600: oklch(0.446 0.03 256.802); - --color-gray-700: oklch(0.373 0.034 259.733); - --color-gray-800: oklch(0.278 0.033 256.848); - --color-gray-900: oklch(0.21 0.034 264.665); - --color-gray-950: oklch(0.13 0.028 261.692); - - --color-zinc-50: oklch(0.985 0 0); - --color-zinc-100: oklch(0.967 0.001 286.375); - --color-zinc-200: oklch(0.92 0.004 286.32); - --color-zinc-300: oklch(0.871 0.006 286.286); - --color-zinc-400: oklch(0.705 0.015 286.067); - --color-zinc-500: oklch(0.552 0.016 285.938); - --color-zinc-600: oklch(0.442 0.017 285.786); - --color-zinc-700: oklch(0.37 0.013 285.805); - --color-zinc-800: oklch(0.274 0.006 286.033); - --color-zinc-900: oklch(0.21 0.006 285.885); - --color-zinc-950: oklch(0.141 0.005 285.823); - - --color-neutral-50: oklch(0.985 0 0); - --color-neutral-100: oklch(0.97 0 0); - --color-neutral-200: oklch(0.922 0 0); - --color-neutral-300: oklch(0.87 0 0); - --color-neutral-400: oklch(0.708 0 0); - --color-neutral-500: oklch(0.556 0 0); - --color-neutral-600: oklch(0.439 0 0); - --color-neutral-700: oklch(0.371 0 0); - --color-neutral-800: oklch(0.269 0 0); - --color-neutral-900: oklch(0.205 0 0); - --color-neutral-950: oklch(0.145 0 0); - - --color-stone-50: oklch(0.985 0.001 106.423); - --color-stone-100: oklch(0.97 0.001 106.424); - --color-stone-200: oklch(0.923 0.003 48.717); - --color-stone-300: oklch(0.869 0.005 56.366); - --color-stone-400: oklch(0.709 0.01 56.259); - --color-stone-500: oklch(0.553 0.013 58.071); - --color-stone-600: oklch(0.444 0.011 73.639); - --color-stone-700: oklch(0.374 0.01 67.558); - --color-stone-800: oklch(0.268 0.007 34.298); - --color-stone-900: oklch(0.216 0.006 56.043); - --color-stone-950: oklch(0.147 0.004 49.25); - - --color-black: #000; - --color-white: #fff; - - --spacing: 0.25rem; - - --breakpoint-sm: 40rem; - --breakpoint-md: 48rem; - --breakpoint-lg: 64rem; - --breakpoint-xl: 80rem; - --breakpoint-2xl: 96rem; - - --container-3xs: 16rem; - --container-2xs: 18rem; - --container-xs: 20rem; - --container-sm: 24rem; - --container-md: 28rem; - --container-lg: 32rem; - --container-xl: 36rem; - --container-2xl: 42rem; - --container-3xl: 48rem; - --container-4xl: 56rem; - --container-5xl: 64rem; - --container-6xl: 72rem; - --container-7xl: 80rem; - - --text-xs: 0.75rem; - --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; - --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-5xl: 3rem; - --text-5xl--line-height: 1; - --text-6xl: 3.75rem; - --text-6xl--line-height: 1; - --text-7xl: 4.5rem; - --text-7xl--line-height: 1; - --text-8xl: 6rem; - --text-8xl--line-height: 1; - --text-9xl: 8rem; - --text-9xl--line-height: 1; - - --font-weight-thin: 100; - --font-weight-extralight: 200; - --font-weight-light: 300; - --font-weight-normal: 400; - --font-weight-medium: 500; - --font-weight-semibold: 600; - --font-weight-bold: 700; - --font-weight-extrabold: 800; - --font-weight-black: 900; - - --tracking-tighter: -0.05em; - --tracking-tight: -0.025em; - --tracking-normal: 0em; - --tracking-wide: 0.025em; - --tracking-wider: 0.05em; - --tracking-widest: 0.1em; - - --leading-tight: 1.25; - --leading-snug: 1.375; - --leading-normal: 1.5; - --leading-relaxed: 1.625; - --leading-loose: 2; - - --radius-xs: 0.125rem; - --radius-sm: 0.25rem; - --radius-md: 0.375rem; - --radius-lg: 0.5rem; - --radius-xl: 0.75rem; - --radius-2xl: 1rem; - --radius-3xl: 1.5rem; - --radius-4xl: 2rem; - - --shadow-2xs: 0 1px rgb(0 0 0 / 0.05); - --shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05); - --shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); - --shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); - --shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1); - --shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1); - --shadow-2xl: 0 25px 50px -12px rgb(0 0 0 / 0.25); - - --inset-shadow-2xs: inset 0 1px rgb(0 0 0 / 0.05); - --inset-shadow-xs: inset 0 1px 1px rgb(0 0 0 / 0.05); - --inset-shadow-sm: inset 0 2px 4px rgb(0 0 0 / 0.05); - - --drop-shadow-xs: 0 1px 1px rgb(0 0 0 / 0.05); - --drop-shadow-sm: 0 1px 2px rgb(0 0 0 / 0.15); - --drop-shadow-md: 0 3px 3px rgb(0 0 0 / 0.12); - --drop-shadow-lg: 0 4px 4px rgb(0 0 0 / 0.15); - --drop-shadow-xl: 0 9px 7px rgb(0 0 0 / 0.1); - --drop-shadow-2xl: 0 25px 25px rgb(0 0 0 / 0.15); - - --ease-in: cubic-bezier(0.4, 0, 1, 1); - --ease-out: cubic-bezier(0, 0, 0.2, 1); - --ease-in-out: cubic-bezier(0.4, 0, 0.2, 1); - - --animate-spin: spin 1s linear infinite; - --animate-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; - --animate-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; - --animate-bounce: bounce 1s infinite; - - @keyframes spin { - to { - transform: rotate(360deg); - } - } - - @keyframes ping { - 75%, - 100% { - transform: scale(2); - opacity: 0; - } - } - - @keyframes pulse { - 50% { - opacity: 0.5; - } - } - - @keyframes bounce { - 0%, - 100% { - transform: translateY(-25%); - animation-timing-function: cubic-bezier(0.8, 0, 1, 1); - } - - 50% { - transform: none; - animation-timing-function: cubic-bezier(0, 0, 0.2, 1); - } - } - - --blur-xs: 4px; - --blur-sm: 8px; - --blur-md: 12px; - --blur-lg: 16px; - --blur-xl: 24px; - --blur-2xl: 40px; - --blur-3xl: 64px; - - --perspective-dramatic: 100px; - --perspective-near: 300px; - --perspective-normal: 500px; - --perspective-midrange: 800px; - --perspective-distant: 1200px; - - --aspect-video: 16 / 9; - - --default-transition-duration: 150ms; - --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - --default-font-family: var(--font-sans); - --default-font-feature-settings: var(--font-sans--font-feature-settings); - --default-font-variation-settings: var(--font-sans--font-variation-settings); - --default-mono-font-family: var(--font-mono); - --default-mono-font-feature-settings: var(--font-mono--font-feature-settings); - --default-mono-font-variation-settings: var(--font-mono--font-variation-settings); -} - -/* Deprecated */ -@theme default inline reference { - --blur: 8px; - --shadow: 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1); - --shadow-inner: inset 0 2px 4px 0 rgb(0 0 0 / 0.05); - --drop-shadow: 0 1px 2px rgb(0 0 0 / 0.1), 0 1px 1px rgb(0 0 0 / 0.06); - --radius: 0.25rem; - --max-width-prose: 65ch; -} -`;var Qr=`@tailwind utilities; -`;var Re={index:Yr,preflight:Jr,theme:Zr,utilities:Qr};var Qe=class{start(r){performance.mark(`${r} (start)`)}end(r,o){performance.mark(`${r} (end)`),performance.measure(r,{start:`${r} (start)`,end:`${r} (end)`,detail:o})}hit(r,o){performance.mark(r,{detail:o})}error(r){throw performance.mark("(error)",{detail:{error:`${r}`}}),r}};console.warn("The browser build of Tailwind CSS should not be used in production. To use Tailwind CSS in production, use the Tailwind CLI, Vite plugin, or PostCSS plugin: https://tailwindcss.com/docs/installation");var eo="text/tailwindcss",Xe,St=new Set,Ct="",Nt=document.createElement("style"),Xr=Promise.resolve(),Yn=1,W=new Qe;async function Jn(){W.start("Create compiler"),W.start("Reading Stylesheets");let t=document.querySelectorAll(`style[type="${eo}"]`),r="";for(let o of t)to(o),r+=o.textContent+` -`;if(r.includes("@import")||(r=`@import "tailwindcss";${r}`),W.end("Reading Stylesheets",{size:r.length,changed:Ct!==r}),Ct!==r){Ct=r,W.start("Compile CSS");try{Xe=await Gr(r,{base:"/",loadStylesheet:Zn,loadModule:Qn})}finally{W.end("Compile CSS"),W.end("Create compiler")}St.clear()}}async function Zn(t,r){function o(){if(t==="tailwindcss")return{base:r,content:Re.index};if(t==="tailwindcss/preflight"||t==="tailwindcss/preflight.css"||t==="./preflight.css")return{base:r,content:Re.preflight};if(t==="tailwindcss/theme"||t==="tailwindcss/theme.css"||t==="./theme.css")return{base:r,content:Re.theme};if(t==="tailwindcss/utilities"||t==="tailwindcss/utilities.css"||t==="./utilities.css")return{base:r,content:Re.utilities};throw new Error(`The browser build does not support @import for "${t}"`)}try{let e=o();return W.hit("Loaded stylesheet",{id:t,base:r,size:e.content.length}),e}catch(e){throw W.hit("Failed to load stylesheet",{id:t,base:r,error:e.message??e}),e}}async function Qn(){throw new Error("The browser build does not support plugins or config files.")}async function Xn(t){if(!Xe)return;let r=new Set;W.start("Collect classes");for(let o of document.querySelectorAll("[class]"))for(let e of o.classList)St.has(e)||(St.add(e),r.add(e));W.end("Collect classes",{count:r.size}),!(r.size===0&&t==="incremental")&&(W.start("Build utilities"),Nt.textContent=Xe.build(Array.from(r)),W.end("Build utilities"))}function et(t){async function r(){if(!Xe&&t!=="full")return;let o=Yn++;W.start(`Build #${o} (${t})`),t==="full"&&await Jn(),W.start("Build"),await Xn(t),W.end("Build"),W.end(`Build #${o} (${t})`)}Xr=Xr.then(r).catch(o=>W.error(o))}var ei=new MutationObserver(()=>et("full"));function to(t){ei.observe(t,{attributes:!0,attributeFilter:["type"],characterData:!0,subtree:!0,childList:!0})}new MutationObserver(t=>{let r=0,o=0;for(let e of t){for(let n of e.addedNodes)n.nodeType===Node.ELEMENT_NODE&&n.tagName==="STYLE"&&n.getAttribute("type")===eo&&(to(n),r++);for(let n of e.addedNodes)n.nodeType===1&&n!==Nt&&o++;e.type==="attributes"&&o++}if(r>0)return et("full");if(o>0)return et("incremental")}).observe(document.documentElement,{attributes:!0,attributeFilter:["class"],childList:!0,subtree:!0});et("full");document.head.append(Nt);})(); -$$--GLUE--$$ -.\src\brush.js -$$--GLUE--$$ - - -let PixelBrush = (rel) => { - let brush_color = 0xff000000; - let c_os = [0, 0]; - let cursor_path; - let brush_depth = 10; - let tree_dirty = false; - let depth; - - let obj = { -get_tree: () => cursor_path.get_tree(), -set_color: (col) => brush_color = col, -set_scale: (val) => brush_depth = val, -get_surface: () => [cursor_path.get_tree(), cursor_path.get_root()], -dirty: () => tree_dirty, //TODO find a better way? -clean: () => tree_dirty = false, -set_surface: (qtree, node) => cursor_path = QtreePath(qtree, node), -set_pos: (p, dep, zm) => { - depth = dep; - set_path(cursor_path, 1, p, rel ? brush_depth : brush_depth-depth); - c_os = [0, 0]; -}, -update_pos: (p, k) => { - let os = add(smul(rel ? 2**brush_depth : 2**(brush_depth-depth), k), c_os); - let uos = os.map(v => v | 0); - - cursor_path.set_cur(qtree.color(brush_color)); - cursor_path.add(uos.map(BigInt)); - - c_os = sub(os, uos); - tree_dirty = true; -} - }; - - return obj; -} - - -let log = (fn) => (...x) => (console.log(...x), fn(...x)); -let line_sdf = (p, a, b) => { - let pa = sub(p, a), ba = sub(b, a); - - if(ba.every(v => v == 0)) - return length(pa); - - let h = clamp(dot(pa, ba)/dot(ba,ba), 0.0, 1.0); - return length(add(pa, smul(-h, ba))); -}; - -let SdfBrush = (rel = false, sdf = (p1, p2, width) => (p) => line_sdf(p, p1, p2) - width) => { - let c_os = [0, 0]; - let c_pos = [0, 0]; - - let brush_color = 0xff000000; - let brush_depth = 10; - let brush_width = 0.001; - let tree_dirty = false; - - let depth; - let zoom; - let path; - - let obj = { -get_tree: () => path.get_tree(), -set_color: (col) => brush_color = col, -set_scale: (val) => brush_depth = val, -set_width: (val) => brush_width = val, -get_surface: () => [path.get_tree(), path.get_root()], -dirty: () => tree_dirty, //TODO find a better way? -clean: () => tree_dirty = false, -set_surface: (qt, nd) => { - path = QtreePath(qt, nd); -}, -set_pos: (p, dep, zm) => { - depth = dep; - zoom = zm; - c_pos = p; - c_os = [0, 0]; - set_path(path, 1, p, rel ? brush_depth : brush_depth - depth); -}, -update_pos: (p, k) => { - let disp_width = rel ? brush_width * zoom : brush_width; - let max_length = disp_width*4 + length(k); - - let os = add(smul(rel ? 2**brush_depth : 2**(brush_depth-depth), k), c_os); - let uos = os.map(v => v | 0); - - //breaks when depth_bound <= 2 - let depth_bound = (-Math.log2(max_length) | 0); - - - let ps = [c_os, os]; - - - let stack = []; - let de = rel ? brush_depth : brush_depth-depth; - if(depth_bound > 2){ - while(path.get_depth() >= depth_bound){ - let ind = path.cur_ind(); - ps = ps.map(v => smul(0.5, add(v, [!!(ind&1), !!(ind&2)]))); - stack.push(ind); - path.asc(); - } - - - de -= path.get_depth(); - let width = disp_width * 2**(brush_depth-de); - let in_range = (a, b, v) => v > a && v < b; - - let quad = [ - ps[0][0] < 4*width, - ps[0][1] < 4*width - ].map(v => BigInt(v)); - - ps = ps.map(v => smul(0.5, sub(v, quad.map(v => !v)))); - - path.add(smul(-1n, quad)); - - set_tlnode(path, render_sdf( - path.get_tree(), - get_tlnode(path), - de, - sdf(...ps, width), - qtree.color(brush_color) - )); - - path.add(quad); - - }else{ - path.get_root(); - while(path.get_depth()){ - stack.push(path.cur_ind()); - path.asc(); - } - - path.set_cur(render_sdf( - path.get_tree(), - path.get_root(), - de, - sdf(c_pos, p, rel ? brush_width * zoom : brush_width * 2**depth), - qtree.color(brush_color) - )); - } - - while(stack.length) - path.desc(stack.pop()); - - c_os = sub(os, uos); - c_pos = p; - path.add(uos.map(BigInt)); - tree_dirty = true; -} - }; - - return obj; -} - - - - - -let EyeDropper = (cb) => { - let c_os = [0, 0]; - let cursor_path; - let brush_depth = 10; - let tree_dirty = false; - let depth; - - let obj = { -get_tree: () => cursor_path.get_tree(), -set_color: (col) => brush_color = col, -set_scale: (val) => brush_depth = val, -get_surface: () => [cursor_path.get_tree(), cursor_path.get_root()], -dirty: () => tree_dirty, //TODO find a better way? -clean: () => tree_dirty = false, -set_surface: (qtree, node) => cursor_path = QtreePath(qtree, node), -set_pos: (p, dep, zm) => { - depth = dep; - set_path(cursor_path, 1, p, brush_depth); - c_os = [0, 0]; -}, -update_pos: (p, k) => { - let os = add(smul(2**brush_depth, k), c_os); - let uos = os.map(v => v | 0); - - cb(cursor_path.cur()); - cursor_path.add(uos.map(BigInt)); - - c_os = sub(os, uos); - tree_dirty = true; -} - }; - - return obj; -} - - -let fill = (path, c1, color) => { - let stack = []; - - while(path.get_depth() > 0){ - stack.push(path.cur_ind()); - path.asc(); - - if(path.cur().ind != c1.ind){ - path.desc(stack.pop()); - break; - } - } - - path.set_cur(color); - - let queue = [[0n, 1n, 0n], [1n, 0n, 0n], [-1n, 0n, 0n], [0n, -1n]]; - - let pos = [0n, 0n]; - while(queue.length){ - let cur = queue.pop(); - - } -} - -let BucketFill = () => { - let cursor_path; - let brush_color; - let brush_depth = 10; - let tree_dirty = false; - let depth; - - let obj = { -get_tree: () => cursor_path.get_tree(), -set_color: (col) => brush_color = col, -set_scale: (val) => brush_depth = val, -get_surface: () => [cursor_path.get_tree(), cursor_path.get_root()], -dirty: () => tree_dirty, //TODO find a better way? -clean: () => tree_dirty = false, -set_surface: (qtree, node) => cursor_path = QtreePath(qtree, node), -set_pos: (p, dep, zm) => { - depth = dep; -}, -update_pos: (p, k) => { - set_path(cursor_path, 1, p, brush_depth); - fill(cursor_path, cursor_path.cur(), cursor_path.get_tree().color(brush_color)); - - tree_dirty = true; -} - }; - - return obj; -} - - - -$$--GLUE--$$ -.\src\component.js -$$--GLUE--$$ - -/*CPS stuff*/ -let all = (s, ...x) => x.reduce((f, g) => (...x) => f(g(...x)), s); -let id = (x) => x; - -let to_cps = (fn) => (nxt) => (...x) => nxt(fn(...x)); -let un_cps = (fn) => fn(id); - - - - -/*CSS stuff*/ -let gen_sheet = document.createElement("style"); -document.head.appendChild(gen_sheet); -let gen_styles = gen_sheet.sheet; - -let gen_rule = (sel, style) => gen_styles.insertRule(`${sel} { ${Object.entries(style).map(v=>v[0].replace(/([A-Z])/g,"-$1") + ":" + v[1]).join(";")}; } \n`); -let gen_class = (name, style) => gen_rule("." + name, style); - -gen_class("border", { - "border-color": "grey", - "border-style": "solid", - "border-radius": "0.5em", - "border-width": "0.1em", - "padding": "0.45em", - "margin": "0.45em", - "overflow": "visible", - "width": "calc(100% - 2*(0.45em) - 2*(0.1em) - 2*(0.45em))", - "height": "calc(100% - 2*(0.45em) - 2*(0.1em) - 2*(0.45em))" -}); - -gen_class("vpart", { - "display": "flex", - "flex-direction": "column" -}); - -gen_class("hpart", { - "display": "flex", - "flex-direction": "row" -}); - -gen_class("partBlock", { - "flex": "1" -}); - -gen_class("Block", { - "min-height": "100%", - "width": "100%", - "padding": "0", - "margin": "0", - "border": "0" -}); - -gen_rule("body", { - "color": "grey", - "width": "100vw", - "height": "100vh", - "margin": "0", - "padding": "0", - "overflow": "hidden", - "font-size": "12px" -}); - -gen_rule("*", { - "touch-action": "none" -}); - - - -let el = (type) => to_cps(() => document.createElement(type)); - -let Children = (...x) => to_cps((el) => { - el.replaceChildren(...x.filter(v => v != null).map(v => un_cps(v)())); - return el; -}); - -let Style = (style) => to_cps((el) => { - Object.entries(style).forEach(v=>el.style[v[0]] = v[1]) - return el; -}); - -let Class = (cl) => to_cps((el) => { - el.classList.add(cl); - return el; -}); - -let Text = (text) => to_cps((el) => { - el.innerText = text; - return el; -}); - -let Attr = (name, value) => to_cps((el) => { - el[name] = value; - return el; -}); - -let Event = (name, cb) => to_cps((el) => { - el.addEventListener(name, cb); - return el; -}); - - - - - - - - -let col = (...nd) => all( - Block(el("div")), - Children(...nd) -) - -let row = (...nd) => all( - Block(el("div")), - Style({ whiteSpace: "nowrap" }), - Children(...nd.map(v=> - all( - v, - Style({ - display: "inline-block", - whiteSpace: "wrap" - }) - ) - )) -); - -let Overlap = (...nd) => all( - Block(el("div")), - Style({position: "relative"}), - Children(...nd.map(v=> - all( - v, - Style({position: "absolute"})) - ) - ) -); - -let Button = (nd, cb) => all( - nd, - Style({userSelect: "none", cursor: "pointer"}), - Event("click", cb) -); - - -let vpart = (...w) => (...nd) => all( - Block(el("div")), - Class("vpart"), - Children(...nd.map((v,i)=> - w[i] != null - ? Rect(null, w[i])(v) - : all(Block(el("div")), Class("partBlock"), Children(v)) - )) -); - -let hpart = (...w) => (...nd) => all( - Block(el("div")), - Class("hpart"), - - Children(...nd.map((v,i)=> - w[i] != null - ? Rect(w[i], null)(v) - : all(Block(el("div")), Class("partBlock"), Children(v)) - ))); - -let Center = (w, h) => nd => -vpart(null, h, null)( - null, - hpart(null, w, null)( - null, - nd, - null - ), - null -); - -let Body = nd => all( - el("body"), - Children(nd) -); - -let Block = nd => all( - nd, - Class("Block"), -); - -let Rect = (w, h) => nd => all( - Block(el("div")), - Style({ - width: `calc(${w})`, - height: `calc(${h})`, - "min-height": "auto" - }), - Children(nd) -); - -let Scroll = nd => all( - Rect("100%", "100%")(el("div")), - Style({overflow: "auto"}), - Children(nd) -); - -let ScrollX = nd => all( - Rect("100%", "100%")(el("div")), - Style({overflow: "visible", overflowX: "auto"}), - Children(nd) -); - -let ScrollY = nd => all( - Rect("100%", "100%")(el("div")), - Style({overflow: "visible", overflowY: "auto"}), - Children(nd) -); - - - - - - - - - - - -let Border = nd => all( - el("div"), - Class("border"), - Children(nd) -); - -let vresize = nd => all( - Block(el("div")), - Style({ - resize: "vertical", - maxHeight: "100%" - }), - Children(nd) -); - -let hresize = nd => all( - Block(el("div")), - Style({ - resize: "horizontal", - maxWidth: "100%" - }), - Children(nd) -); - - -$$--GLUE--$$ -.\src\graphics.js -$$--GLUE--$$ - -let gl_load_shader = (gl, type, source) => { - let shader = gl.createShader(type); - gl.shaderSource(shader, source); - gl.compileShader(shader); - - if(!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) { - console.log(gl.getShaderInfoLog(shader)); - gl.deleteShader(shader); - return null; - } - - return shader; -} - -let gl_init_shader = (gl, vsource, fsource) => { - let vertex_shader = gl_load_shader(gl, gl.VERTEX_SHADER, vsource); - let fragment_shader = gl_load_shader(gl, gl.FRAGMENT_SHADER, fsource); - - let shader_program = gl.createProgram(); - gl.attachShader(shader_program, vertex_shader); - gl.attachShader(shader_program, fragment_shader); - gl.linkProgram(shader_program); - - if(!gl.getProgramParameter(shader_program, gl.LINK_STATUS)) { - console.log(gl.getShaderInfoLog(shader)); - return null; - } - - return shader_program; -} - -let FragmentRenderer = (gl, fsource) => { - let shader_program = gl_init_shader(gl, -` -precision highp float; -attribute vec2 aVertexPosition; - -void main(){ - gl_Position = vec4(aVertexPosition, 0.0, 1.0); -} -`, fsource); - - - let pos_buf = gl.createBuffer(); - let texture = {}; - let uniform = {}; - let textures = 0; - let tex_bufs = []; - - let active_texture; - - let positions = [1, 1, -1, 1, 1, -1, -1, -1]; - - let obj = { -set_active: () => { - gl.useProgram(shader_program); - gl.bindBuffer(gl.ARRAY_BUFFER, pos_buf); - gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW); - gl.bindBuffer(gl.ARRAY_BUFFER, pos_buf); - - let vert_pos = gl.getAttribLocation(shader_program, "aVertexPosition"); - gl.vertexAttribPointer( - vert_pos, - 2, - gl.FLOAT, - false, - 0, - 0 - ); - - gl.enableVertexAttribArray(vert_pos); - - active_texture = null; -}, -draw: () => { - tex_bufs.forEach(v => v.flush()); - gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4); -}, -set_uniform: (name, type, value) => { - uniform[name] ??= gl.getUniformLocation(shader_program, name); - - let type_lut = { - "float": (loc, x) => gl.uniform1f(loc, x), - "vec2": (loc, v) => gl.uniform2f(loc, ...v), - "vec3": (loc, v) => gl.uniform3f(loc, ...v), - "vec4": (loc, v) => gl.uniform4f(loc, ...v), - "ivec4": (loc, v) => gl.uniform4i(loc, ...v), - "mat4": (loc, v) => gl.uniformMatrix4fv(loc, false, v), - "int": (loc, x) => gl.uniform1i(loc, x) - }; - - type_lut[type](uniform[name], value); -}, -set_texture: (name, w, h, arr) => { - let tex = texture[name] ?? (texture[name] = { - ind: ++textures, - buf: gl.createTexture() - }); - - tex.res = [w, h]; - - let loc = gl.getUniformLocation(shader_program, name) - - obj.set_uniform(name, "int", tex.ind); - - gl.activeTexture(gl.TEXTURE0 + tex.ind); - gl.bindTexture(gl.TEXTURE_2D, tex.buf); - active_texture = tex; - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE); - - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); - gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST); - - gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, w, h, 0, gl.RGBA, gl.UNSIGNED_BYTE, arr); -}, -set_sub_texture: (name, [x, y], [w, h], arr) => { - if(active_texture != texture[name]){ - gl.bindTexture(gl.TEXTURE_2D, texture[name].buf); - active_texture = texture[name]; - } - gl.texSubImage2D(gl.TEXTURE_2D, 0, x, y, w, h, gl.RGBA, gl.UNSIGNED_BYTE, arr); -}, -set_texture_buf: (name, arr) => { - let num = arr.length/4; - let sr = (Math.log2(num)/2 + 1) | 0; - let [w, h] = [2**sr,(num/2**sr | 0) + !!(num % 2**sr)]; - - obj.set_texture(name, w, h, new Uint8Array(arr.buffer)); - obj.set_uniform(name + "_lt", "int", sr); - obj.set_uniform(name + "_res", "vec2", [w, h]); -}, -write_buf: (name, start, arr) => { - let [w, h] = texture[name].res; - - let tl = [start % w, start / w | 0]; - if(start % w != 0){ - let cw = Math.min(w - tl[0], arr.length/4); - obj.set_sub_texture(name, tl, [cw, 1], arr); - tl = [0, tl[1] + 1]; - arr = arr.subarray(cw * 4); - } - - - let ch = arr.length/4/w | 0; - if(ch) - obj.set_sub_texture(name, [tl[0], tl[1]], [w, ch], arr); - - tl = [0, tl[1]+ch]; - arr = arr.subarray(ch * w * 4); - let cw = arr.length/4; - if(cw) - obj.set_sub_texture(name, tl, [cw, 1], arr); -}, -read_buf: (name, start, end) => { - let buf = new Uint8Array(end - start); - let [w, h] = texture[name].res; - - let arr = buf; - - let tl = [start % w, start / w | 0]; - if(start % w != 0){ - let cw = Math.min(w - tl[0], arr.length/4); - obj.read_pixels(name, tl, [cw, 1], arr); - tl = [0, tl[1] + 1]; - arr = arr.subarray(cw * 4); - } - - - let ch = arr.length/4/w | 0; - if(ch) - obj.read_pixels(name, [tl[0], tl[1]], [w, ch], arr); - - tl = [0, tl[1]+ch]; - arr = arr.subarray(ch * w * 4); - let cw = arr.length/4; - if(cw) - obj.read_pixels(name, tl, [cw, 1], arr); - - return buf; -}, -GpuUint8: (name) => { - let w = gl.getParameter(gl.MAX_TEXTURE_SIZE)/4; - rend.set_texture_buf(name, new Uint8Array(w*w*4).fill(0)); - - let buf = DynUint8(w); - let end = 0; - - let arr = new Uint8Array(4); - arr_ind = 0; - - let obj = { -set: (ind, val) => { - if(ind >= end){ - if(ind - end >= 1024) - obj.flush(); - buf.set(ind - end, val); - return val; - } - - arr[arr_ind++] = val; - if(arr_ind == 4){ - arr_ind = 0; - rend.write_buf(name, ind/4 | 0, arr); - } - - return val; -}, -push: (val) => { - if(buf.get_end() >= 1024) - obj.flush(); - buf.push(val); -}, -flush: () => { - if(buf.get_end() != 0){ - rend.write_buf(name, end/4, buf.get_buffer().subarray(0, buf.get_end())); - end += buf.get_end(); - buf = DynUint8(); - } -}, -clear: () => { - buf.clear(); - arr_ind = end = 0; -}, -get_end: () => end + buf.get_end() - } - - tex_bufs.push(obj); - return obj; -} - }; - - return obj; -} - - - -$$--GLUE--$$ -.\src\input.js -$$--GLUE--$$ - -let Pointer = (el, init, ev = init, del = init) => { - let to_point = (v) => ({ - id: v.pointerId, - x: v.offsetX, - y: v.offsetY, - force: v.pressure, - time: v.timeStamp, - buttons: v.buttons - }); - - el.addEventListener("pointerdown", (e) => init(to_point(e))); - el.addEventListener("pointermove", (e) => { - e.getCoalescedEvents /* only works in https */ - ? e.getCoalescedEvents().forEach(v => ev(to_point(v))) - : ev(to_point(e)) - }); - el.addEventListener("pointerup", (e) => del(to_point(e))); - el.addEventListener("pointerleave", (e) => del(to_point(e))); - el.addEventListener("pointerout", (e) => del(to_point(e))); -} - -let Keyboard = (el, down, up) => { - el.addEventListener("keydown", (e) => down(e.keyCode)); - el.addEventListener("keyup", (e) => up(e.keyCode)); -} - - - -let mouse_pan = (el, get_pos, set_pos) => { - let start; - let state, translate, poll; - - translate = (ev) => { - let pos = get_pos(); - set_pos([pos[0] + ev.x - start[0], pos[1] + start[1] - ev.y]); - start = [ev.x, ev.y]; - - if(ev.buttons != 4){ - state = poll; - } - }; - - poll = (ev) => { - if(ev.buttons == 4){ - start = [ev.x, ev.y]; - state = translate; - } - }; - - state = poll; - return Pointer(el, (ev) => state(ev)); -} - - -let mouse_wheel = (el, cb) => { - el.addEventListener("wheel", (e) => cb([e.clientX, e.clientY], 2*Math.atan(e.deltaY)/Math.PI), {passive: true}); -} - - - - - - - - -let touch_pan = (el, get_pos, set_pos) => { - let pointers = {}; - let start; - let state, translate, poll; - - let get_points = () => Object.entries(pointers).map(v => v[1]); - let get_avg_pos = () => ((points) => points.reduce((a, b) => [a[0] + b[0], a[1] + b[1]]).map(v => v / points.length)) - (get_points()); - - translate = (ev) => { - pointers[ev.id] = [ev.x, ev.y]; - - let pos = get_pos(); - let avg_pos = get_avg_pos(); - set_pos([pos[0] + avg_pos[0] - start[0], pos[1] + start[1] - avg_pos[1]]); - start = avg_pos; - - }; - - poll = (ev) => {}; - - let add_pointer = (ev) => { - pointers[ev.id] = [ev.x, ev.y]; - - if(Object.keys(pointers).length == 2){ - start = get_avg_pos(); - state = translate; - }else{ - state = poll; - } - }; - - let del_pointer = (ev) => { - delete pointers[ev.id]; - - if(Object.keys(pointers).length != 2) - state = poll; - }; - - state = poll; - return Pointer(el, add_pointer, (ev) => state(ev), del_pointer); -} - -let touch_pinch = (el, cb) => { //TODO figure out how to fix paning while pinching :/ - let pointers = {}; - let start; - let state, translate, poll; - - let get_points = () => Object.entries(pointers).map(v => v[1]); - let get_avg_pos = () => ((points) => points.reduce((a, b) => [a[0] + b[0], a[1] + b[1]]).map(v => v / points.length)) - (get_points()); - let dist = (a, b) => { - let v = [a[0] - b[0], a[1] - b[1]]; - return (v[0]*v[0] + v[1]*v[1])**0.5; - } - - translate = (ev) => { - pointers[ev.id] = [ev.x, ev.y]; - - let n_dist = dist(...get_points()); - - let pinch = Math.sign((start - n_dist)/7 | 0); //TODO dynamically find value - - if(pinch){ - cb(get_avg_pos(), Math.sign(pinch | 0)) - start = n_dist; - } - - }; - - poll = (ev) => {}; - - let add_pointer = (ev) => { - pointers[ev.id] = [ev.x, ev.y]; - - if(Object.keys(pointers).length == 2){ - start = dist(...get_points()); - state = translate; - }else{ - state = poll; - } - }; - - let del_pointer = (ev) => { - delete pointers[ev.id]; - - if(Object.keys(pointers).length != 2) - state = poll; - }; - - state = poll; - return Pointer(el, add_pointer, (ev) => state(ev), del_pointer); -} - - - - -let pointer_drag = (el, st, cb) => { - let start; - let state, drag, poll; - let pointers = {}; - - drag = (ev) => { - if(length(sub(start, [ev.x, ev.y])) > 2){ - cb([ev.x, ev.y], [ev.x - start[0], ev.y - start[1]]); - start = [ev.x, ev.y]; - } - }; - - poll = (ev) => {}; - - let add_pointer = (ev) => { - pointers[ev.id] = [ev.x, ev.y]; - - if(Object.keys(pointers).length == 1 && ev.buttons == 1){ - start = pointers[ev.id]; - st(start); - state = drag; - }else{ - state = poll; - } - }; - - let del_pointer = (ev) => { - delete pointers[ev.id]; - - if(Object.keys(pointers).length != 1) - state = poll; - }; - - - state = poll; - return Pointer(el, add_pointer, (ev) => state(ev), del_pointer); -} - - - - -$$--GLUE--$$ -.\src\qtree.js -$$--GLUE--$$ - -let DynUint8 = (sz = 256*4) => { - let buffer = new Uint8Array(sz); //TODO may fail - let end = 0; - - let obj = { -get_buffer: () => buffer, -get: (ind) => buffer[ind], -set: (ind, val) => { - if(ind >= buffer.length){ - let v = 1; - while(ind >= buffer.length * v) v *= 2; - let old = buffer; - buffer = new Uint8Array(buffer.length * v); - buffer.set(old); - } - - return buffer[ind] = val; -}, -push: (val) => obj.set(end++, val), -pop: (val) => obj.get(--end), -get_end: () => end, -set_end: (ind) => end = ind, -clear: () => end = 0, - } - - return obj; -} - - -let Uint32Arr = (u8buf) => { - let obj = { -get_buffer: () => u8buf, -set: (ind, num) => { - ind *= 4; - u8buf.set(ind++, (num >> 0) & 0xff); - u8buf.set(ind++, (num >> 8) & 0xff); - u8buf.set(ind++, (num >> 16) & 0xff); - u8buf.set(ind++, (num >> 24) & 0xff); -}, -push: (num) => { - u8buf.push((num >> 0) & 0xff); - u8buf.push((num >> 8) & 0xff); - u8buf.push((num >> 16) & 0xff); - u8buf.push((num >> 24) & 0xff); -}, -get: (ind) => { - let num = 0; - ind *= 4; - num += u8buf.get(ind++) << 0; - num += u8buf.get(ind++) << 8; - num += u8buf.get(ind++) << 16; - num += u8buf.get(ind++) << 24; - return num; -}, -pop: () => { - let ret = obj.get(obj.get_end()-1) - obj.set_end(obj.get_end()-1); - return ret; -}, -get_end: () => u8buf.get_end() / 4, -set_end: (ind) => u8buf.set_end(ind * 4), -clear: () => u8buf.clear() - }; - - return obj; -} - - -let LinearQtree = (buffer = Uint32Arr(DynUint8())) => { - let ab, col_ab, memo, col_memo; - //let col_memo = new Map(); //?? - //let memo = new Map(); - //let buffer = new Uint8Array(256 * 4); - - let obj = { -node_at: (ind) => { - let node = { - ind, - get_node: (i) => obj.node_at(buffer.get(ind * 5 + 1 + i)), - get_tag: () => buffer.get(ind * 5), - set_tag: (t) => buffer.set(ind * 5, t), - set_node: (i, nd) => buffer.set(ind * 5 + i + 1, nd.ind), - }; - - return node; -}, - -add_node: (t, ...nodes) => { - let vals = [t, ...nodes.map(v => v?.ind)]; - let my_ind = buffer.get_end()/5; - - while(vals.length != 5) - vals.push(my_ind); - - vals.map(buffer.push); - return obj.node_at(my_ind); -}, -color: (t) => { - let node = obj.add_node(t); - - let free = false; - col_memo = col_ab.insert(col_memo, node.ind, (ind) => { - buffer.set_end(buffer.get_end() - 5); - free = true; - node = obj.node_at(ind); - }); - - memo = ab.insert(memo, node.ind, (ind) => { - if(!free) - buffer.set_end(buffer.get_end() - 5); - node = obj.node_at(ind); - }); - - return node; -}, -node: (...nodes) => { - let t = avg_color(nodes.map(v => v.get_tag())); - let node = obj.add_node(t, ...nodes); - - memo = ab.insert(memo, node.ind, (ind) => { - buffer.set_end(buffer.get_end() - 5); - node = obj.node_at(ind); - }); - - - return node; -}, - -get_buffer: () => buffer, -get_memo: () => [ab, col_ab, memo, col_memo], -get_size: () => buffer.get_end()/5 - }; - - let node_eq = (a, b) => { - for(let i = 0; i < 4; i++) - if(obj.node_at(a).get_node(i).ind != obj.node_at(b).get_node(i).ind) - return false; - - return true; - } - - let node_cmp = (a, b) => { - for(let i = 0; i < 4; i++) - if(obj.node_at(a).get_node(i).ind < obj.node_at(b).get_node(i).ind) - return true; - - return false; - } - - ab = _24_tree(Uint32Arr(DynUint8()), - node_cmp, - node_eq - ); - - col_ab = _24_tree(Uint32Arr(DynUint8()), - (a, b) => obj.node_at(a).get_tag() < obj.node_at(b).get_tag(), - (a, b) => obj.node_at(a).get_tag() == obj.node_at(b).get_tag() - ); - memo = ab.node_at(0); - col_memo = col_ab.node_at(0); - - - return obj; -} - - - - - - - - - - - -let avg_color = (cols) => { - let add = (a, b) => a.map((v, i) => v + b[i]); - return cols.map(v => [ - (v >> 24) & 0xff, - (v >> 16) & 0xff, - (v >> 8) & 0xff, - (v >> 0) & 0xff - ]) - .reduce(add) - .map(v => (v/cols.length | 0) % 256) - .reduce((a, b) => a*256 + b, 0); -} - -let set_node = (qtree, node, ind, val) => { - let nodes = Array(4).fill().map((v, i) => node.get_node(i)); - nodes[ind] = val; - return qtree.node(...nodes); -} - -let render_sdf = (qtree, node, depth, sdf, fill) => { - let render_ = (node, orig, unit, depth) => { - unit = unit * 0.5; - - let dist = sdf(orig); - let target = 2**0.5 * unit; - - if(fill.ind == node.ind || dist < -target || depth <= 0) - return fill; - - if(dist < target){ - let hu = unit * 0.5; - return qtree.node( - render_(node.get_node(0), add([-hu, -hu], orig), unit, depth-1), - render_(node.get_node(1), add([hu, -hu], orig), unit, depth-1), - render_(node.get_node(2), add([-hu, hu], orig), unit, depth-1), - render_(node.get_node(3), add([hu, hu], orig), unit, depth-1) - ); - } - - return node; - }; - - return render_(node, [0, 0], 1, depth); -} - -//slower -let render_sdf_fn = (qtree, node, depth, sdf, color) => { - let render_ = (node, orig, unit, depth) => { - unit = unit/2; - - let dist = sdf(orig); - let target = 2**0.5 * unit; - - if(depth <= 0) - return color(orig, node); - - if(dist < target){ - let nodes = Array(4).fill().map((v, i) => node.get_node(i)); - return qtree.node( - ...nodes - .map((v, i) => render_(v, add(smul(unit, [!!(i & 1) - 0.5, 0.5 - !!(i & 2)]), orig), unit, depth-1)) - ); - } - - return node; - }; - - return render_(node, [0, 0], 1, depth); -} - - - - - - - - - - - - - - - - - - -//TODO make this less fucky -let QtreeMirror = (q1, q2) => { - let seen = new Map(); - - let obj = { -get_main: () => q1, -get_seen: () => seen, -mirror: (node) => { - if(seen.has(node.ind)) - return q2.node_at(seen.get(node.ind)); - - let nd = q2.add_node(node.get_tag()); - seen.set(node.ind, nd.ind); - return nd; -}, -full_mirror: (node) => { - let nodes = Array(4).fill().map((v, i) => node.get_node(i)); - let mnd = obj.mirror(node); - - nodes.forEach((v, i) => { - if(!seen.has(v.ind)) - mnd.set_node(i, obj.full_mirror(v)); - else - mnd.set_node(i, obj.mirror(v)); - }); - - return mnd; -}, -node_at: (ind) => { - let nd = q1.node_at(ind); - let mnd = obj.mirror(nd); - - let node = { - ind: nd.ind, - get_node: (i) => { - let n = nd.get_node(i); - if(!seen.has(n.ind)){ - for(let i = 0; i < 4; i++) - mnd.set_node(i, obj.mirror(nd.get_node(i))); - }else{ - mnd.set_node(i, obj.mirror(n)); - } - - return obj.node_at(n.ind); - }, - get_tag: nd.get_tag, - set_tag: (t) => (mnd.set_tag(t), nd.set_tag(t)), - set_node: (i, n) => { - nd.set_node(i, n); - for(let i = 0; i < 4; i++) - mnd.set_node(i, obj.mirror(nd.get_node(i))); - } - }; - - return node; -}, -add_node: (t, ...nodes) => { - let nd = q1.add_node(t, ...nodes); - - let n2 = q2.add_node(t, ...nodes.map(obj.mirror)); - seen.set(nd.ind, n2.ind); - - return obj.node_at(nd.ind); -}, -node: (...nodes) => { - let nd = q1.node(...nodes); - obj.full_mirror(nd) - return obj.node_at(nd.ind); -}, -color: (t) => { - let nd = q1.color(t); - obj.mirror(nd); - return obj.node_at(nd.ind); -} - - }; - - return obj; -} - - - - - - - - -/* -let LazyQtree = (qtree) => { - let lazy = new Map(); - - let obj = { -node_at: (ind) => { - if(lazy.has(ind)) - return lazy.get(ind); - - return qtree.node_at(ind); -}, -add_node: qtree.add_node, -node: qtree.node, -color: qtree.color, -lazy_node: (col_guess, fn) => { - let my_ind = qtree.get_size(); - - //TODO breaks uniqueness ... - let node = { - ind: my_ind, - get_node: (i) => { - let nd = fn(obj); - console.log(nd); - lazy.set(my_ind, nd); - - node.ind = nd.ind; - node.get_node = nd.get_node; - node.get_tag = nd.get_tag; - node.set_tag = nd.set_tag; - node.set_node = nd.set_node; - - return nd.get_node(i); - }, - get_tag: () => col_guess, - set_tag: () => null, - set_node: () => null - }; - - lazy.set(my_ind, node); - return node; -} - }; - - return obj; -} -*/ - - - - - - -let QtreePath = (qtree, node) => { - let path = [[node, null]]; - - let obj = { -copy: () => { - let cp = QtreePath(qtree, obj.get_root()); - - for(let i = 1; i < path.length; i++) - cp.desc(path[i][1]); - - return cp; -}, -cur: () => path.at(-1)[0], -set_cur: (val) => path.at(-1)[0] = val, -cur_ind: () => path.at(-1)[1], -get_tree: () => qtree, -get_depth: () => path.length-1, -desc: (ind) => path.push([obj.cur().get_node(ind), ind]), -asc: (hint = 0) => { - let [n1, ind] = path.pop(); - if(path.length == 0){ - path.push([qtree.color(0xffffffff), null]); - ind = hint; - } - - obj.set_cur(set_node(qtree, obj.cur(), ind, n1)); - return [n1, ind]; -}, -set_path: ([px, py], depth) => { - /* stack limit bites */ - path = [[obj.get_root(), null]]; - while(depth != 0){ - depth--; - let ind = !!(px & (1n << depth)) + 2*!!(py & (1n << depth)); - obj.desc(ind); - } - - return obj.cur(); -}, -add: ([x, y]) => { - let stack = []; - - while(x || y){ - let [node, ind] = obj.asc((x < 0) + 2*(y < 0)); - - let os = !!(x & 1n) + 2*!!(y & 1n); - stack.push(ind ^ os); - - x >>= 1n; - y >>= 1n; - - x += BigInt(!!(os & ind & 1)); - y += BigInt(!!(os & ind & 2)); - } - - while(stack.length) - obj.desc(stack.pop()); - - return obj.cur(); -}, -get_root: () => { - if(path == null || path.length == 0) - return null; - for(let i = path.length-1; i--;) - path[i][0] = set_node(qtree, path[i][0], path[i+1][1], path[i+1][0]); - - return path[0][0]; -}, - } - - return obj; -} - -let set_path = (path, unit, p, depth) => { - let orig = [0, 0]; - - path.set_path([0n, 0n], 0n); - - for(let i = 0; i < depth; i++){ - let quad = [p[0] > orig[0], p[1] > orig[1]]; - - path.desc(quad[0] + 2*quad[1]); - - unit /= 2; - orig = add(smul(unit, [quad[0]-0.5, quad[1]-0.5]), orig); - } - - return path; -} - - - - - - - - - - - - - - - - - - - - - - - - - - -let index_heap = (buffer, is_lt) => { - let obj = { -get_buffer: () => buffer, -insert: (ind) => { - let buf_pos = buffer.get_end(); - buffer.push(ind); - obj.sift_down(buf_pos); -}, -extract_min: () => { - let ret = buffer.get(0); - buffer.set(0, buffer.pop()); - obj.sift_up(0); - return ret; -}, -cas: (a, b) => { - let a_val = buffer.get(a); - let b_val = buffer.get(b); - - if(is_lt(a_val, b_val)) - return false; - - buffer.set(b, a_val); - buffer.set(a, b_val); - return true; -}, -sift_up: (ind) => { - let l_ind = (ind + 1) * 2 - 1 - let r_ind = l_ind + 1; - - if(l_ind >= buffer.get_end()) - return; - - let take = l_ind; - if(r_ind < buffer.get_end()){ - if(is_lt(buffer.get(r_ind), buffer.get(l_ind))) - take = r_ind; - } - - if(obj.cas(ind, take)) - obj.sift_up(take); -}, -sift_down: (ind) => { - if(ind == 0) - return; - - let p_ind = ((ind + 1) / 2 | 0) - 1; - - if(obj.cas(p_ind, ind)) - obj.sift_down(p_ind); -}, -is_empty: () => buffer.get_end() == 0 - }; - - return obj; -} - - - - -let Arena = (buffer, alloc_size) => { - let heap = index_heap(DynUint8()); - - let obj = { -alloc: () => { - if(heap.is_empty()){ - let ind = buffer.get_end(); - buffer.set_end(buffer.get_end() + alloc_size); - return ind; - } - - let ind = heap.extract_min(); - return ind; -}, -free: (ind) => heap.insert(ind) - }; - - return obj; -} - - - - - - -let _24_tree = (buffer, is_lt, is_eq) => { - let arena = Arena(buffer.get_buffer(), 8 * 4); - - let obj = { -node_at: (ind) => { - let node = { - ind, - size: () => buffer.get(ind), - get_size: () => buffer.get(ind), - set_size: (val) => buffer.set(ind, val), - get_key: (i) => buffer.get(ind + 1 + i), - set_key: (i, key) => buffer.set(ind + 1 + i, key), - get_node: (i) => obj.node_at(buffer.get(ind + 4 + i)), - set_node: (i, node) => buffer.set(ind + 4 + i, node.ind), - }; - - return node; -}, -add_node: (keys, nodes) => { - let node = obj.node_at(arena.alloc()); - node.set_size(Math.max(keys.length + 1, nodes.length)); - keys.forEach((v, i) => node.set_key(i, v)); - nodes.forEach((v, i) => node.set_node(i, v)); - return node; -}, -search: (node, key) => { - if(node.ind == 0) - return null; - - let i = 0; - for(; i < node.get_size() - 1; i++){ - let cur_key = node.get_key(i); - if(is_eq(key, cur_key)) - return cur_key; - - if(is_lt(key, cur_key)) - break; - } - - return obj.search(node.get_node(i), key); -}, -node_split: (keys, nodes, ind) => { - let l_keys = keys.slice(0, ind); - let m_key = keys[ind]; - let r_keys = keys.slice(ind+1); - - let l_nodes = nodes.slice(0, ind+1); - let r_nodes = nodes.slice(ind+1); - - return [ - m_key, - obj.add_node(l_keys, l_nodes), - obj.add_node(r_keys, r_nodes) - ]; -}, -node_insert: (node, ind, key, repl) => { - let keys = Array(node.get_size() - 1).fill().map((v, i) => node.get_key(i)); - let nodes = Array(node.get_size()).fill().map((v, i) => node.get_node(i)); - - let new_keys = [...keys.slice(0, ind), key, ...keys.slice(ind)]; - let new_nodes = [...nodes.slice(0, ind), ...repl, ...nodes.slice(ind + 1)]; - - if(new_keys.length > 3) - return obj.node_split(new_keys, new_nodes, 2); - - new_keys.forEach((v, i) => node.set_key(i, v)); //kinda gross, but constant cost... - new_nodes.forEach((v, i) => node.set_node(i, v)); - node.set_size(new_nodes.length); - - return [node]; -}, -insert_: (node, key, fn) => { - if(node.ind == 0) - return [key, obj.node_at(0), obj.node_at(0)]; - - let i = 0; - for(; i < node.get_size() - 1; i++){ - let cur_key = node.get_key(i); - if(is_eq(key, cur_key)){ - fn(cur_key); - return [node]; - } - - if(is_lt(key, cur_key)) - break; - } - - let next_node = i; - let next = obj.insert_(node.get_node(next_node), key, fn); - if(next.length == 1){ - node.set_node(next_node, next[0]); - return [node]; - } - - return obj.node_insert(node, next_node, next[0], [next[1], next[2]]); -}, -insert: (node, key, fn = () => null) => { - let next = obj.insert_(node, key, fn); - if(next.length == 1) - return next[0]; - return obj.add_node([next[0]], [next[1], next[2]]); -}, -to_json: (node) => { - if(node.ind == 0) - return {}; - - let keys = Array(node.get_size() - 1).fill().map((v, i) => node.get_key(i)); - let nodes = Array(node.get_size()).fill().map((v, i) => node.get_node(i)).map(obj.to_json); - - return {keys, nodes}; -} - }; - - root = obj.node_at(arena.alloc()); - - return obj; -}; - - - - - - - - - - - -$$--GLUE--$$ -.\src\tree_shader.glsl -$$--GLUE--$$ -precision highp float; -precision highp int; - -uniform vec2 res; - -uniform sampler2D tex; -uniform vec2 tex_res; -uniform int tex_lt; - - -uniform vec2 center; -uniform ivec4 node; -uniform int depth; -uniform float unit; - -uniform int debug; - -uniform mat4 transform; - -/* 32bit int emulation */ -ivec2 moddiv(int a, int b){ - int div = a / b, mod = a - div * b; - return ivec2(mod, div); -} - -ivec4 carry_prop(ivec4 a){ - ivec2 v; - - v = moddiv(a.r, 256); - a.r = v.x; - v = moddiv(a.g + v.y, 256); - a.g = v.x; - v = moddiv(a.b + v.y, 256); - a.b = v.x; - v = moddiv(a.a + v.y, 256); - a.a = v.x; - - return a; -} - -ivec4 rshift8(ivec4 a){return ivec4(a.g, a.b, a.a, 0);} - -ivec4 rshift07(ivec4 a, int b){ - int v = int(float(a.r) * pow(0.5, float(b))); - a = carry_prop(rshift8(a)*int(pow(2.0,float(8-b)))); - a.r = a.r + v; - return a; -} - -ivec4 rshift(ivec4 a, int b){ - ivec2 mul = moddiv(b, 7); - for(int i = 0; i < 8; i++){ - if(mul.y - i == 0) - break; - a = rshift07(a, 7); - } - - return rshift07(a, mul.x); -} - -ivec4 lshift(ivec4 a, int b){ - ivec2 mul = moddiv(b, 7); - for(int i = 0; i < 8; i++){ - if(mul.y - i == 0) - break; - a = carry_prop(a*int(pow(2.0, 7.0))); - } - - return carry_prop(a*int(pow(2.0, float(mul.x)))); -} - - - -vec4 col_at(ivec4 ind){ - ivec4 v2 = rshift(ind, tex_lt); - ivec4 v1 = ind - lshift(v2, tex_lt); - - vec2 tc = (vec2(v1.r + 256*v1.g, v2.r + 256*v2.g) + vec2(0.5)) / tex_res; - return texture2D(tex, tc); -} - -ivec4 vec4tonum(vec4 val){ - - -/* - //UNSIGNED_SHORT_4_4_4_4 - ivec4 val = ivec4(15.0*val + 0.5) - return ivec4(val.r + 16*val.g, val.b + 16*val.a, 0, 0); -*/ - - -/* - UNSIGNED_SHORT_5_6_5 - ivec4 val = ivec4(31.0*val.r + 0.5, 63.0*val.g + 0.5, 31.0*val.b + 0.5, 0.0); - return carry_prop(ivec4(val.r + 32*val.g, 8*val.g, 0, 0)); -*/ - - //RGBA - return ivec4(255.0*val + 0.5); -} -ivec4 num_at(ivec4 ind){ -/* - //UNSIGNED_SHORT_4_4_4_4 - ind = lshift(ind, 1); - return vec4tonum(col_at(ind + ivec4(0, 0, 0, 0)) + - lshift(vec4tonum(col_at(ind + ivec4(1, 0, 0, 0)), 16); -*/ - - //RBGA - return vec4tonum(col_at(ind)); -} - - - -void main(){ - vec2 pos = (transform * vec4(gl_FragCoord.xy, 0.0, 1.0)).xy; - vec2 orig = center; - - ivec4 ind = node; - float width = unit; - - if(debug == 1 && gl_FragCoord.x < center.x){ - vec2 p = gl_FragCoord.xy/res; - p.x = p.x * 2.0; - p.y = 1.0 - p.y; - - gl_FragColor = texture2D(tex, p); - gl_FragColor.a = 1.0; - return; - } -/* - else{ - vec2 p = gl_FragCoord.xy; - - if(p.y > tex_res.x * tex_res.y) - discard; - ivec4 ind = carry_prop(ivec4(p.y, 0, 0, 0)); - - gl_FragColor = col_at(ind); - gl_FragColor.a = 1.0; - return; - } - */ - - - for(int i = 0; i < 16; i++){ - if(i >= depth) - break; - - vec2 quad = vec2(pos.x > orig.x, pos.y < orig.y); - ind = ind * 5; - ind.r = ind.r + 1 + int(quad.x + 2.0*quad.y); - ind = num_at(carry_prop(ind)); - - width = width / 2.0; - orig = vec2(quad.x-0.5, 0.5-quad.y)*width + orig; - } - - gl_FragColor = col_at(carry_prop(ind*5)); -} - -$$--GLUE--$$ -.\style.css -$$--GLUE--$$ -/* Global Reset */ -* { - box-sizing: border-box; - margin: 0; - padding: 0; - font-family: 'Arial', sans-serif; - scroll-behavior: smooth; -} - -/* Body */ -body { - background-color: #121212; /* Dark mode background */ - color: #E0E0E0; - display: flex; - justify-content: center; - align-items: center; - height: 100vh; - padding: 20px; -} - -/* Canvas Container */ -.Block { - position: relative; -} - -/* Canvas */ -#screen { - border: 2px solid #4CAF50; - background-color: #1e1e1e; - display: block; - max-width: 100%; -} - -/* Toolbar Container */ -.border { - background: #1e1e1e; - padding: 10px; - display: flex; - align-items: center; - gap: 10px; - border-radius: 8px; - box-shadow: 0 4px 6px rgba(0, 0, 0, 0.2); -} - -/* Toolbar Buttons */ -button { - background-color: #4CAF50; - color: white; - padding: 10px 16px; - border: none; - border-radius: 6px; - cursor: pointer; - font-size: 14px; - font-weight: 600; - transition: background-color 0.2s ease, transform 0.1s ease; - display: inline-block; -} - -button:hover { - background-color: #45a049; - transform: scale(1.05); -} - -button:active { - background-color: #3e8e41; - transform: scale(0.95); -} - -/* Inputs */ -input