",``)},e.install=function(e,t=!0){var n;let r=eu(e);return ek(m({},r,{hash:null!=(n=r.hash)?n:t}),()=>ew(!t))},e.keyframes=eO,e.match=function(e,t,n){return[e,H(t,n)]},e.matchColor=function(e,t={},n){return[e,X(t,n)]},e.matchTheme=function(e,t,n,r){return[e,Q(t,n,r)]},e.mo=ey,e.mql=o,e.noop=a,e.normalize=ei,e.observe=em,e.parse=F,e.parseValue=ee,e.setup=ek,e.shortcut=D,e.stringify=ex,e.style=eE,e.toCSS=et,e.toColorValue=S,e.tw=ej,e.twind=eh,e.tx=function(e,...t){return("function"==typeof this?this:ej)(I(e,t))},e.virtual=function(e){let t=[];return{target:t,snapshot(){let e=[...t];return()=>{t.splice(0,t.length,...e)}},clear(){t.length=0},destroy(){this.clear()},insert(n,r,i){t.splice(r,0,e?`/*!${i.p.toString(36)},${(2*i.o).toString(36)}${i.n?","+i.n:""}*/${n}`:n)},resume:a}},e.withAutocomplete=function(e){return e},e}({});
twind.core = twind;
this.twind = {};
this.twind.presetTailwind=function(e){"use strict";function t(){return(t=Object.assign||function(e){for(var t=1;to({DEFAULT:e("colors.gray.200","currentColor")},e("colors")),borderOpacity:c("opacity"),borderRadius:{none:"0px",sm:"0.125rem",DEFAULT:"0.25rem",md:"0.375rem",lg:"0.5rem",xl:"0.75rem","2xl":"1rem","3xl":"1.5rem","1/2":"50%",full:"9999px"},borderSpacing:c("spacing"),borderWidth:o({DEFAULT:"1px"},i(8,"px")),boxShadow:{sm:"0 1px 2px 0 rgba(0,0,0,0.05)",DEFAULT:"0 1px 3px 0 rgba(0,0,0,0.1), 0 1px 2px -1px rgba(0,0,0,0.1)",md:"0 4px 6px -1px rgba(0,0,0,0.1), 0 2px 4px -2px rgba(0,0,0,0.1)",lg:"0 10px 15px -3px rgba(0,0,0,0.1), 0 4px 6px -4px rgba(0,0,0,0.1)",xl:"0 20px 25px -5px rgba(0,0,0,0.1), 0 8px 10px -6px rgba(0,0,0,0.1)","2xl":"0 25px 50px -12px rgba(0,0,0,0.25)",inner:"inset 0 2px 4px 0 rgba(0,0,0,0.05)",none:"0 0 #0000"},boxShadowColor:c("colors"),caretColor:c("colors"),accentColor:({theme:e})=>o({auto:"auto"},e("colors")),contrast:o({},n(200,"",100,0,50),{75:"0.75",125:"1.25"}),content:{none:"none"},divideColor:c("borderColor"),divideOpacity:c("borderOpacity"),divideWidth:c("borderWidth"),dropShadow:{sm:"0 1px 1px rgba(0,0,0,0.05)",DEFAULT:["0 1px 2px rgba(0,0,0,0.1)","0 1px 1px rgba(0,0,0,0.06)"],md:["0 4px 3px rgba(0,0,0,0.07)","0 2px 2px rgba(0,0,0,0.06)"],lg:["0 10px 8px rgba(0,0,0,0.04)","0 4px 3px rgba(0,0,0,0.1)"],xl:["0 20px 13px rgba(0,0,0,0.03)","0 8px 5px rgba(0,0,0,0.08)"],"2xl":"0 25px 25px rgba(0,0,0,0.15)",none:"0 0 #0000"},fill:({theme:e})=>o({},e("colors"),{none:"none"}),grayscale:{DEFAULT:"100%",0:"0"},hueRotate:{0:"0deg",15:"15deg",30:"30deg",60:"60deg",90:"90deg",180:"180deg"},invert:{DEFAULT:"100%",0:"0"},flex:{1:"1 1 0%",auto:"1 1 auto",initial:"0 1 auto",none:"none"},flexBasis:({theme:e})=>o({},e("spacing"),r(2,6),r(12,12),{auto:"auto",full:"100%"}),flexGrow:{DEFAULT:1,0:0},flexShrink:{DEFAULT:1,0:0},fontFamily:{sans:'ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,"Noto Sans",sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji"'.split(","),serif:'ui-serif,Georgia,Cambria,"Times New Roman",Times,serif'.split(","),mono:'ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace'.split(",")},fontSize:{xs:["0.75rem","1rem"],sm:["0.875rem","1.25rem"],base:["1rem","1.5rem"],lg:["1.125rem","1.75rem"],xl:["1.25rem","1.75rem"],"2xl":["1.5rem","2rem"],"3xl":["1.875rem","2.25rem"],"4xl":["2.25rem","2.5rem"],"5xl":["3rem","1"],"6xl":["3.75rem","1"],"7xl":["4.5rem","1"],"8xl":["6rem","1"],"9xl":["8rem","1"]},fontWeight:{thin:"100",extralight:"200",light:"300",normal:"400",medium:"500",semibold:"600",bold:"700",extrabold:"800",black:"900"},gap:c("spacing"),gradientColorStops:c("colors"),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-full":"1 / -1"},gridRow:{auto:"auto","span-full":"1 / -1"},gridTemplateColumns:{none:"none"},gridTemplateRows:{none:"none"},height:({theme:e})=>o({},e("spacing"),r(2,6),{min:"min-content",max:"max-content",fit:"fit-content",auto:"auto",full:"100%",screen:"100vh"}),inset:({theme:e})=>o({},e("spacing"),r(2,4),{auto:"auto",full:"100%"}),keyframes:{spin:{from:{transform:"rotate(0deg)"},to:{transform:"rotate(360deg)"}},ping:{"0%":{transform:"scale(1)",opacity:"1"},"75%,100%":{transform:"scale(2)",opacity:"0"}},pulse:{"0%,100%":{opacity:"1"},"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:o({},n(10,"rem",4,3),{none:"1",tight:"1.25",snug:"1.375",normal:"1.5",relaxed:"1.625",loose:"2"}),margin:({theme:e})=>o({auto:"auto"},e("spacing")),maxHeight:({theme:e})=>o({full:"100%",min:"min-content",max:"max-content",fit:"fit-content",screen:"100vh"},e("spacing")),maxWidth:({theme:e,breakpoints:t})=>o({},t(e("screens")),{none:"none",0:"0rem",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"}),minHeight:{0:"0px",full:"100%",min:"min-content",max:"max-content",fit:"fit-content",screen:"100vh"},minWidth:{0:"0px",full:"100%",min:"min-content",max:"max-content",fit:"fit-content"},opacity:o({},n(100,"",100,0,10),{5:"0.05",25:"0.25",75:"0.75",95:"0.95"}),order:{first:"-9999",last:"9999",none:"0"},padding:c("spacing"),placeholderColor:c("colors"),placeholderOpacity:c("opacity"),outlineColor:c("colors"),outlineOffset:i(8,"px"),outlineWidth:i(8,"px"),ringColor:({theme:e})=>o({},e("colors"),{DEFAULT:"#3b82f6"}),ringOffsetColor:c("colors"),ringOffsetWidth:i(8,"px"),ringOpacity:({theme:e})=>o({},e("opacity"),{DEFAULT:"0.5"}),ringWidth:o({DEFAULT:"3px"},i(8,"px")),rotate:o({},i(2,"deg"),i(12,"deg",3),i(180,"deg",45)),saturate:n(200,"",100,0,50),scale:o({},n(150,"",100,0,50),n(110,"",100,90,5),{75:"0.75",125:"1.25"}),scrollMargin:c("spacing"),scrollPadding:c("spacing"),sepia:{0:"0",DEFAULT:"100%"},skew:o({},i(2,"deg"),i(12,"deg",3)),space:c("spacing"),stroke:({theme:e})=>o({},e("colors"),{none:"none"}),strokeWidth:n(2),textColor:c("colors"),textDecorationColor:c("colors"),textDecorationThickness:o({"from-font":"from-font",auto:"auto"},i(8,"px")),textUnderlineOffset:o({auto:"auto"},i(8,"px")),textIndent:c("spacing"),textOpacity:c("opacity"),transitionDuration:({theme:e})=>o({},e("durations"),{DEFAULT:"150ms"}),transitionDelay:c("durations"),transitionProperty:{none:"none",all:"all",DEFAULT:"color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter",colors:"color,background-color,border-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:e})=>o({},e("spacing"),r(2,4),{full:"100%"}),width:({theme:e})=>o({min:"min-content",max:"max-content",fit:"fit-content",screen:"100vw"},e("flexBasis")),willChange:{scroll:"scroll-position"},zIndex:o({},n(50,"",1,0,10),{auto:"auto"})};function r(e,t){let o={};do for(var a=1;at(e)}let l={"*,::before,::after":{boxSizing:"border-box",borderWidth:"0",borderStyle:"solid",borderColor:"theme(borderColor.DEFAULT, currentColor)"},"::before,::after":{"--tw-content":"''"},html:{lineHeight:1.5,WebkitTextSizeAdjust:"100%",MozTabSize:"4",tabSize:4,fontFamily:`theme(fontFamily.sans, ${a.fontFamily.sans})`,fontFeatureSettings:"theme(fontFamily.sans[1].fontFeatureSettings, normal)"},body:{margin:"0",lineHeight:"inherit"},hr:{height:"0",color:"inherit",borderTopWidth:"1px"},"abbr:where([title])":{textDecoration:"underline dotted"},"h1,h2,h3,h4,h5,h6":{fontSize:"inherit",fontWeight:"inherit"},a:{color:"inherit",textDecoration:"inherit"},"b,strong":{fontWeight:"bolder"},"code,kbd,samp,pre":{fontFamily:`theme(fontFamily.mono, ${a.fontFamily.mono})`,fontFeatureSettings:"theme(fontFamily.mono[1].fontFeatureSettings, normal)",fontSize:"1em"},small:{fontSize:"80%"},"sub,sup":{fontSize:"75%",lineHeight:0,position:"relative",verticalAlign:"baseline"},sub:{bottom:"-0.25em"},sup:{top:"-0.5em"},table:{textIndent:"0",borderColor:"inherit",borderCollapse:"collapse"},"button,input,optgroup,select,textarea":{fontFamily:"inherit",fontSize:"100%",lineHeight:"inherit",color:"inherit",margin:"0",padding:"0"},"button,select":{textTransform:"none"},"button,[type='button'],[type='reset'],[type='submit']":{WebkitAppearance:"button",backgroundColor:"transparent",backgroundImage:"none"},":-moz-focusring":{outline:"auto"},":-moz-ui-invalid":{boxShadow:"none"},progress:{verticalAlign:"baseline"},"::-webkit-inner-spin-button,::-webkit-outer-spin-button":{height:"auto"},"[type='search']":{WebkitAppearance:"textfield",outlineOffset:"-2px"},"::-webkit-search-decoration":{WebkitAppearance:"none"},"::-webkit-file-upload-button":{WebkitAppearance:"button",font:"inherit"},summary:{display:"list-item"},"blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre":{margin:"0"},fieldset:{margin:"0",padding:"0"},legend:{padding:"0"},"ol,ul,menu":{listStyle:"none",margin:"0",padding:"0"},textarea:{resize:"vertical"},"input::placeholder,textarea::placeholder":{opacity:1,color:"theme(colors.gray.400, #9ca3af)"},'button,[role="button"]':{cursor:"pointer"},":disabled":{cursor:"default"},"img,svg,video,canvas,audio,iframe,embed,object":{display:"block",verticalAlign:"middle"},"img,video":{maxWidth:"100%",height:"auto"},"[hidden]":{display:"none"}},s=[e.match("\\[([-\\w]+):(.+)]",({1:t,2:o},a)=>({"@layer overrides":{"&":{[t]:e.arbitrary(`[${o}]`,"",a)}}})),e.match("(group|peer)([~/][^-[]+)?",({input:e},{h:t})=>[{c:t(e)}]),e.matchTheme("aspect-","aspectRatio"),e.match("container",(t,{theme:a})=>{let{screens:r=a("screens"),center:i,padding:n}=a("container"),c=o({width:"100%",marginRight:i&&"auto",marginLeft:i&&"auto"},m("xs"));for(let l in r){let s=r[l];"string"==typeof s&&(c[e.mql(s)]={"&":o({maxWidth:s},m(l))})}return c;function m(e){let t=n&&("string"==typeof n?n:n[e]||n.DEFAULT);if(t)return{paddingRight:t,paddingLeft:t}}}),e.matchTheme("content-","content",({_:e})=>({"--tw-content":e,content:"var(--tw-content)"})),e.match("(?:box-)?decoration-(slice|clone)","boxDecorationBreak"),e.match("box-(border|content)","boxSizing",({1:e})=>e+"-box"),e.match("hidden",{display:"none"}),e.match("table-(auto|fixed)","tableLayout"),e.match(["(block|flex|table|grid|inline|contents|flow-root|list-item)","(inline-(block|flex|table|grid))","(table-(caption|cell|column|row|(column|row|footer|header)-group))"],"display"),"(float)-(left|right|none)","(clear)-(left|right|none|both)","(overflow(?:-[xy])?)-(auto|hidden|clip|visible|scroll)","(isolation)-(auto)",e.match("isolate","isolation"),e.match("object-(contain|cover|fill|none|scale-down)","objectFit"),e.matchTheme("object-","objectPosition"),e.match("object-(top|bottom|center|(left|right)(-(top|bottom))?)","objectPosition",m),e.match("overscroll(-[xy])?-(auto|contain|none)",({1:e="",2:t})=>({["overscroll-behavior"+e]:t})),e.match("(static|fixed|absolute|relative|sticky)","position"),e.matchTheme("-?inset(-[xy])?(?:$|-)","inset",({1:e,_:t})=>({top:"-x"!=e&&t,right:"-y"!=e&&t,bottom:"-x"!=e&&t,left:"-y"!=e&&t})),e.matchTheme("-?(top|bottom|left|right)(?:$|-)","inset"),e.match("(visible|collapse)","visibility"),e.match("invisible",{visibility:"hidden"}),e.matchTheme("-?z-","zIndex"),e.match("flex-((row|col)(-reverse)?)","flexDirection",d),e.match("flex-(wrap|wrap-reverse|nowrap)","flexWrap"),e.matchTheme("(flex-(?:grow|shrink))(?:$|-)"),e.matchTheme("(flex)-"),e.matchTheme("grow(?:$|-)","flexGrow"),e.matchTheme("shrink(?:$|-)","flexShrink"),e.matchTheme("basis-","flexBasis"),e.matchTheme("-?(order)-"),"-?(order)-(\\d+)",e.matchTheme("grid-cols-","gridTemplateColumns"),e.match("grid-cols-(\\d+)","gridTemplateColumns",v),e.matchTheme("col-","gridColumn"),e.match("col-(span)-(\\d+)","gridColumn",y),e.matchTheme("col-start-","gridColumnStart"),e.match("col-start-(auto|\\d+)","gridColumnStart"),e.matchTheme("col-end-","gridColumnEnd"),e.match("col-end-(auto|\\d+)","gridColumnEnd"),e.matchTheme("grid-rows-","gridTemplateRows"),e.match("grid-rows-(\\d+)","gridTemplateRows",v),e.matchTheme("row-","gridRow"),e.match("row-(span)-(\\d+)","gridRow",y),e.matchTheme("row-start-","gridRowStart"),e.match("row-start-(auto|\\d+)","gridRowStart"),e.matchTheme("row-end-","gridRowEnd"),e.match("row-end-(auto|\\d+)","gridRowEnd"),e.match("grid-flow-((row|col)(-dense)?)","gridAutoFlow",e=>m(d(e))),e.match("grid-flow-(dense)","gridAutoFlow"),e.matchTheme("auto-cols-","gridAutoColumns"),e.matchTheme("auto-rows-","gridAutoRows"),e.matchTheme("gap-x(?:$|-)","gap","columnGap"),e.matchTheme("gap-y(?:$|-)","gap","rowGap"),e.matchTheme("gap(?:$|-)","gap"),"(justify-(?:items|self))-",e.match("justify-","justifyContent",f),e.match("(content|items|self)-",e=>({["align-"+e[1]]:f(e)})),e.match("(place-(content|items|self))-",({1:e,$$:t})=>({[e]:("wun".includes(t[3])?"space-":"")+t})),e.matchTheme("p([xytrbl])?(?:$|-)","padding",g("padding")),e.matchTheme("-?m([xytrbl])?(?:$|-)","margin",g("margin")),e.matchTheme("-?space-(x|y)(?:$|-)","space",({1:e,_:t})=>({"&>:not([hidden])~:not([hidden])":{[`--tw-space-${e}-reverse`]:"0",["margin-"+({y:"top",x:"left"})[e]]:`calc(${t} * calc(1 - var(--tw-space-${e}-reverse)))`,["margin-"+({y:"bottom",x:"right"})[e]]:`calc(${t} * var(--tw-space-${e}-reverse))`}})),e.match("space-(x|y)-reverse",({1:e})=>({"&>:not([hidden])~:not([hidden])":{[`--tw-space-${e}-reverse`]:"1"}})),e.matchTheme("w-","width"),e.matchTheme("min-w-","minWidth"),e.matchTheme("max-w-","maxWidth"),e.matchTheme("h-","height"),e.matchTheme("min-h-","minHeight"),e.matchTheme("max-h-","maxHeight"),e.matchTheme("font-","fontWeight"),e.matchTheme("font-","fontFamily",({_:t})=>"string"==typeof(t=e.asArray(t))[1]?{fontFamily:p(t)}:o({fontFamily:p(t[0])},t[1])),e.match("antialiased",{WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale"}),e.match("subpixel-antialiased",{WebkitFontSmoothing:"auto",MozOsxFontSmoothing:"auto"}),e.match("italic","fontStyle"),e.match("not-italic",{fontStyle:"normal"}),e.match("(ordinal|slashed-zero|(normal|lining|oldstyle|proportional|tabular)-nums|(diagonal|stacked)-fractions)",({1:e,2:t="",3:a})=>"normal"==t?{fontVariantNumeric:"normal"}:o({["--tw-"+(a?"numeric-fraction":"pt".includes(t[0])?"numeric-spacing":t?"numeric-figure":e)]:e,fontVariantNumeric:"var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)"},T({"--tw-ordinal":"var(--tw-empty,/*!*/ /*!*/)","--tw-slashed-zero":"var(--tw-empty,/*!*/ /*!*/)","--tw-numeric-figure":"var(--tw-empty,/*!*/ /*!*/)","--tw-numeric-spacing":"var(--tw-empty,/*!*/ /*!*/)","--tw-numeric-fraction":"var(--tw-empty,/*!*/ /*!*/)"}))),e.matchTheme("tracking-","letterSpacing"),e.matchTheme("leading-","lineHeight"),e.match("list-(inside|outside)","listStylePosition"),e.matchTheme("list-","listStyleType"),e.match("list-","listStyleType"),e.matchTheme("placeholder-opacity-","placeholderOpacity",({_:e})=>({"&::placeholder":{"--tw-placeholder-opacity":e}})),e.matchColor("placeholder-",{property:"color",selector:"&::placeholder"}),e.match("text-(left|center|right|justify|start|end)","textAlign"),e.match("text-(ellipsis|clip)","textOverflow"),e.matchTheme("text-opacity-","textOpacity","--tw-text-opacity"),e.matchColor("text-",{property:"color"}),e.matchTheme("text-","fontSize",({_:e})=>"string"==typeof e?{fontSize:e}:o({fontSize:e[0]},"string"==typeof e[1]?{lineHeight:e[1]}:e[1])),e.matchTheme("indent-","textIndent"),e.match("(overline|underline|line-through)","textDecorationLine"),e.match("no-underline",{textDecorationLine:"none"}),e.matchTheme("underline-offset-","textUnderlineOffset"),e.matchColor("decoration-",{section:"textDecorationColor",opacityVariable:!1,opacitySection:"opacity"}),e.matchTheme("decoration-","textDecorationThickness"),e.match("decoration-","textDecorationStyle"),e.match("(uppercase|lowercase|capitalize)","textTransform"),e.match("normal-case",{textTransform:"none"}),e.match("truncate",{overflow:"hidden",whiteSpace:"nowrap",textOverflow:"ellipsis"}),e.match("align-","verticalAlign"),e.match("whitespace-","whiteSpace"),e.match("break-normal",{wordBreak:"normal",overflowWrap:"normal"}),e.match("break-words",{overflowWrap:"break-word"}),e.match("break-all",{wordBreak:"break-all"}),e.match("break-keep",{wordBreak:"keep-all"}),e.matchColor("caret-",{opacityVariable:!1,opacitySection:"opacity"}),e.matchColor("accent-",{opacityVariable:!1,opacitySection:"opacity"}),e.match("bg-gradient-to-([trbl]|[tb][rl])","backgroundImage",({1:e})=>`linear-gradient(to ${h(e," ")},var(--tw-gradient-stops))`),e.matchColor("from-",{section:"gradientColorStops",opacityVariable:!1,opacitySection:"opacity"},({_:e})=>({"--tw-gradient-from":e.value,"--tw-gradient-to":e.color({opacityValue:"0"}),"--tw-gradient-stops":"var(--tw-gradient-from),var(--tw-gradient-to)"})),e.matchColor("via-",{section:"gradientColorStops",opacityVariable:!1,opacitySection:"opacity"},({_:e})=>({"--tw-gradient-to":e.color({opacityValue:"0"}),"--tw-gradient-stops":`var(--tw-gradient-from),${e.value},var(--tw-gradient-to)`})),e.matchColor("to-",{section:"gradientColorStops",property:"--tw-gradient-to",opacityVariable:!1,opacitySection:"opacity"}),e.match("bg-(fixed|local|scroll)","backgroundAttachment"),e.match("bg-origin-(border|padding|content)","backgroundOrigin",({1:e})=>e+"-box"),e.match(["bg-(no-repeat|repeat(-[xy])?)","bg-repeat-(round|space)"],"backgroundRepeat"),e.match("bg-blend-","backgroundBlendMode"),e.match("bg-clip-(border|padding|content|text)","backgroundClip",({1:e})=>e+("text"==e?"":"-box")),e.matchTheme("bg-opacity-","backgroundOpacity","--tw-bg-opacity"),e.matchColor("bg-",{section:"backgroundColor"}),e.matchTheme("bg-","backgroundImage"),e.matchTheme("bg-","backgroundPosition"),e.match("bg-(top|bottom|center|(left|right)(-(top|bottom))?)","backgroundPosition",m),e.matchTheme("bg-","backgroundSize"),e.matchTheme("rounded(?:$|-)","borderRadius"),e.matchTheme("rounded-([trbl]|[tb][rl])(?:$|-)","borderRadius",({1:e,_:t})=>{let o={t:["tl","tr"],r:["tr","br"],b:["bl","br"],l:["bl","tl"]}[e]||[e,e];return{[`border-${h(o[0])}-radius`]:t,[`border-${h(o[1])}-radius`]:t}}),e.match("border-(collapse|separate)","borderCollapse"),e.matchTheme("border-opacity(?:$|-)","borderOpacity","--tw-border-opacity"),e.match("border-(solid|dashed|dotted|double|none)","borderStyle"),e.matchTheme("border-spacing(-[xy])?(?:$|-)","borderSpacing",({1:e,_:t})=>o({},T({"--tw-border-spacing-x":"0","--tw-border-spacing-y":"0"}),{["--tw-border-spacing"+(e||"-x")]:t,["--tw-border-spacing"+(e||"-y")]:t,"border-spacing":"var(--tw-border-spacing-x) var(--tw-border-spacing-y)"})),e.matchColor("border-([xytrbl])-",{section:"borderColor"},g("border","Color")),e.matchColor("border-"),e.matchTheme("border-([xytrbl])(?:$|-)","borderWidth",g("border","Width")),e.matchTheme("border(?:$|-)","borderWidth"),e.matchTheme("divide-opacity(?:$|-)","divideOpacity",({_:e})=>({"&>:not([hidden])~:not([hidden])":{"--tw-divide-opacity":e}})),e.match("divide-(solid|dashed|dotted|double|none)",({1:e})=>({"&>:not([hidden])~:not([hidden])":{borderStyle:e}})),e.match("divide-([xy]-reverse)",({1:e})=>({"&>:not([hidden])~:not([hidden])":{["--tw-divide-"+e]:"1"}})),e.matchTheme("divide-([xy])(?:$|-)","divideWidth",({1:e,_:t})=>{let o={x:"lr",y:"tb"}[e];return{"&>:not([hidden])~:not([hidden])":{[`--tw-divide-${e}-reverse`]:"0",[`border-${h(o[0])}Width`]:`calc(${t} * calc(1 - var(--tw-divide-${e}-reverse)))`,[`border-${h(o[1])}Width`]:`calc(${t} * var(--tw-divide-${e}-reverse))`}}}),e.matchColor("divide-",{property:"borderColor",selector:"&>:not([hidden])~:not([hidden])"}),e.matchTheme("ring-opacity(?:$|-)","ringOpacity","--tw-ring-opacity"),e.matchColor("ring-offset-",{property:"--tw-ring-offset-color",opacityVariable:!1}),e.matchTheme("ring-offset(?:$|-)","ringOffsetWidth","--tw-ring-offset-width"),e.match("ring-inset",{"--tw-ring-inset":"inset"}),e.matchColor("ring-",{property:"--tw-ring-color"}),e.matchTheme("ring(?:$|-)","ringWidth",({_:t},{theme:a})=>o({},T({"--tw-ring-offset-shadow":"0 0 #0000","--tw-ring-shadow":"0 0 #0000","--tw-shadow":"0 0 #0000","--tw-shadow-colored":"0 0 #0000","&":{"--tw-ring-inset":"var(--tw-empty,/*!*/ /*!*/)","--tw-ring-offset-width":a("ringOffsetWidth","","0px"),"--tw-ring-offset-color":e.toColorValue(a("ringOffsetColor","","#fff")),"--tw-ring-color":e.toColorValue(a("ringColor","","#93c5fd"),{opacityVariable:"--tw-ring-opacity"}),"--tw-ring-opacity":a("ringOpacity","","0.5")}}),{"--tw-ring-offset-shadow":"var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)","--tw-ring-shadow":`var(--tw-ring-inset) 0 0 0 calc(${t} + var(--tw-ring-offset-width)) var(--tw-ring-color)`,boxShadow:"var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)"})),e.matchColor("shadow-",{section:"boxShadowColor",opacityVariable:!1,opacitySection:"opacity"},({_:e})=>({"--tw-shadow-color":e.value,"--tw-shadow":"var(--tw-shadow-colored)"})),e.matchTheme("shadow(?:$|-)","boxShadow",({_:e})=>o({},T({"--tw-ring-offset-shadow":"0 0 #0000","--tw-ring-shadow":"0 0 #0000","--tw-shadow":"0 0 #0000","--tw-shadow-colored":"0 0 #0000"}),{"--tw-shadow":p(e),"--tw-shadow-colored":p(e).replace(/([^,]\s+)(?:#[a-f\d]+|(?:(?:hsl|rgb)a?|hwb|lab|lch|color|var)\(.+?\)|[a-z]+)(,|$)/g,"$1var(--tw-shadow-color)$2"),boxShadow:"var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)"})),e.matchTheme("(opacity)-"),e.match("mix-blend-","mixBlendMode"),...b(),...b("backdrop-"),e.matchTheme("transition(?:$|-)","transitionProperty",(e,{theme:t})=>({transitionProperty:p(e),transitionTimingFunction:"none"==e._?void 0:p(t("transitionTimingFunction","")),transitionDuration:"none"==e._?void 0:p(t("transitionDuration",""))})),e.matchTheme("duration(?:$|-)","transitionDuration","transitionDuration",p),e.matchTheme("ease(?:$|-)","transitionTimingFunction","transitionTimingFunction",p),e.matchTheme("delay(?:$|-)","transitionDelay","transitionDelay",p),e.matchTheme("animate(?:$|-)","animation",(e,{theme:t,h:o,e:a})=>{let r=p(e),i=r.split(" "),n=t("keyframes",i[0]);return n?{["@keyframes "+(i[0]=a(o(i[0])))]:n,animation:i.join(" ")}:{animation:r}}),"(transform)-(none)",e.match("transform",x),e.match("transform-(cpu|gpu)",({1:e})=>({"--tw-transform":w("gpu"==e)})),e.matchTheme("scale(-[xy])?-","scale",({1:e,_:t})=>o({["--tw-scale"+(e||"-x")]:t,["--tw-scale"+(e||"-y")]:t},x())),e.matchTheme("-?(rotate)-","rotate",u),e.matchTheme("-?(translate-[xy])-","translate",u),e.matchTheme("-?(skew-[xy])-","skew",u),e.match("origin-(center|((top|bottom)(-(left|right))?)|left|right)","transformOrigin",m),"(appearance)-",e.matchTheme("(columns)-"),"(columns)-(\\d+)","(break-(?:before|after|inside))-",e.matchTheme("(cursor)-"),"(cursor)-",e.match("snap-(none)","scroll-snap-type"),e.match("snap-(x|y|both)",({1:e})=>o({},T({"--tw-scroll-snap-strictness":"proximity"}),{"scroll-snap-type":e+" var(--tw-scroll-snap-strictness)"})),e.match("snap-(mandatory|proximity)","--tw-scroll-snap-strictness"),e.match("snap-(?:(start|end|center)|align-(none))","scroll-snap-align"),e.match("snap-(normal|always)","scroll-snap-stop"),e.match("scroll-(auto|smooth)","scroll-behavior"),e.matchTheme("scroll-p([xytrbl])?(?:$|-)","padding",g("scroll-padding")),e.matchTheme("-?scroll-m([xytrbl])?(?:$|-)","scroll-margin",g("scroll-margin")),e.match("touch-(auto|none|manipulation)","touch-action"),e.match("touch-(pinch-zoom|pan-(?:(x|left|right)|(y|up|down)))",({1:e,2:t,3:a})=>o({},T({"--tw-pan-x":"var(--tw-empty,/*!*/ /*!*/)","--tw-pan-y":"var(--tw-empty,/*!*/ /*!*/)","--tw-pinch-zoom":"var(--tw-empty,/*!*/ /*!*/)","--tw-touch-action":"var(--tw-pan-x) var(--tw-pan-y) var(--tw-pinch-zoom)"}),{[`--tw-${t?"pan-x":a?"pan-y":e}`]:e,"touch-action":"var(--tw-touch-action)"})),e.match("outline-none",{outline:"2px solid transparent","outline-offset":"2px"}),e.match("outline",{outlineStyle:"solid"}),e.match("outline-(dashed|dotted|double)","outlineStyle"),e.matchTheme("-?(outline-offset)-"),e.matchColor("outline-",{opacityVariable:!1,opacitySection:"opacity"}),e.matchTheme("outline-","outlineWidth"),"(pointer-events)-",e.matchTheme("(will-change)-"),"(will-change)-",["resize(?:-(none|x|y))?","resize",({1:e})=>({x:"horizontal",y:"vertical"})[e]||e||"both"],e.match("select-(none|text|all|auto)","userSelect"),e.matchColor("fill-",{section:"fill",opacityVariable:!1,opacitySection:"opacity"}),e.matchColor("stroke-",{section:"stroke",opacityVariable:!1,opacitySection:"opacity"}),e.matchTheme("stroke-","strokeWidth"),e.match("sr-only",{position:"absolute",width:"1px",height:"1px",padding:"0",margin:"-1px",overflow:"hidden",whiteSpace:"nowrap",clip:"rect(0,0,0,0)",borderWidth:"0"}),e.match("not-sr-only",{position:"static",width:"auto",height:"auto",padding:"0",margin:"0",overflow:"visible",whiteSpace:"normal",clip:"auto"})];function m(e){return("string"==typeof e?e:e[1]).replace(/-/g," ").trim()}function d(e){return("string"==typeof e?e:e[1]).replace("col","column")}function h(e,t="-"){let o=[];for(let a of e)o.push({t:"top",r:"right",b:"bottom",l:"left"}[a]);return o.join(t)}function p(e){return e&&""+(e._||e)}function f({$$:e}){return(({r:"flex-","":"flex-",w:"space-",u:"space-",n:"space-"})[e[3]||""]||"")+e}function g(t,a=""){return({1:r,_:i})=>{let n={x:"lr",y:"tb"}[r]||r+r;return n?o({},e.toCSS(t+"-"+h(n[0])+a,i),e.toCSS(t+"-"+h(n[1])+a,i)):e.toCSS(t+a,i)}}function b(t=""){let a=["blur","brightness","contrast","grayscale","hue-rotate","invert",t&&"opacity","saturate","sepia",!t&&"drop-shadow"].filter(Boolean),r={};for(let i of a)r[`--tw-${t}${i}`]="var(--tw-empty,/*!*/ /*!*/)";return r=o({},T(r),{[`${t}filter`]:a.map(e=>`var(--tw-${t}${e})`).join(" ")}),[`(${t}filter)-(none)`,e.match(`${t}filter`,r),...a.map(a=>e.matchTheme(`${"h"==a[0]?"-?":""}(${t}${a})(?:$|-)`,a,({1:t,_:i})=>o({[`--tw-${t}`]:e.asArray(i).map(e=>`${a}(${e})`).join(" ")},r)))]}function u({1:e,_:t}){return o({["--tw-"+e]:t},x())}function x(){return o({},T({"--tw-translate-x":"0","--tw-translate-y":"0","--tw-rotate":"0","--tw-skew-x":"0","--tw-skew-y":"0","--tw-scale-x":"1","--tw-scale-y":"1","--tw-transform":w()}),{transform:"var(--tw-transform)"})}function w(e){return[e?"translate3d(var(--tw-translate-x),var(--tw-translate-y),0)":"translateX(var(--tw-translate-x)) translateY(var(--tw-translate-y))","rotate(var(--tw-rotate))","skewX(var(--tw-skew-x))","skewY(var(--tw-skew-y))","scaleX(var(--tw-scale-x))","scaleY(var(--tw-scale-y))"].join(" ")}function y({1:e,2:t}){return`${e} ${t} / ${e} ${t}`}function v({1:e}){return`repeat(${e},minmax(0,1fr))`}function T(e){return{"@layer defaults":{"*,::before,::after":e,"::backdrop":e}}}let k=[["sticky","@supports ((position: -webkit-sticky) or (position:sticky))"],["motion-reduce","@media (prefers-reduced-motion:reduce)"],["motion-safe","@media (prefers-reduced-motion:no-preference)"],["print","@media print"],["(portrait|landscape)",({1:e})=>`@media (orientation:${e})`],["contrast-(more|less)",({1:e})=>`@media (prefers-contrast:${e})`],["(first-(letter|line)|placeholder|backdrop|before|after)",({1:e})=>`&::${e}`],["(marker|selection)",({1:e})=>`& *::${e},&::${e}`],["file","&::file-selector-button"],["(first|last|only)",({1:e})=>`&:${e}-child`],["even","&:nth-child(2n)"],["odd","&:nth-child(odd)"],["open","&[open]"],["(aria|data)-",({1:t,$$:o},a)=>o&&`&[${t}-${a.theme(t,o)||e.arbitrary(o,"",a)||`${o}="true"`}]`],["((group|peer)(~[^-[]+)?)(-\\[(.+)]|[-[].+?)(\\/.+)?",({2:t,3:o="",4:a,5:r="",6:i=o},{e:n,h:c,v:l})=>{let s=e.normalize(r)||("["==a[0]?a:l(a.slice(1)));return`${(s.includes("&")?s:"&"+s).replace(/&/g,`:merge(.${n(c(t+i))})`)}${"p"==t[0]?"~":" "}&`}],["(ltr|rtl)",({1:e})=>`[dir="${e}"] &`],["supports-",({$$:t},o)=>{if(t&&(t=o.theme("supports",t)||e.arbitrary(t,"",o)),t)return t.includes(":")||(t+=":var(--tw)"),/^\w*\s*\(/.test(t)||(t=`(${t})`),`@supports ${t.replace(/\b(and|or|not)\b/g," $1 ").trim()}`}],["max-",({$$:t},o)=>{if(t&&(t=o.theme("screens",t)||e.arbitrary(t,"",o)),"string"==typeof t)return`@media not all and (min-width:${t})`}],["min-",({$$:t},o)=>(t&&(t=e.arbitrary(t,"",o)),t&&`@media (min-width:${t})`)],[/^\[(.+)]$/,({1:t})=>/[&@]/.test(t)&&e.normalize(t).replace(/[}]+$/,"").split("{")]],$={__proto__:null,slate:{50:"#f8fafc",100:"#f1f5f9",200:"#e2e8f0",300:"#cbd5e1",400:"#94a3b8",500:"#64748b",600:"#475569",700:"#334155",800:"#1e293b",900:"#0f172a"},gray:{50:"#f9fafb",100:"#f3f4f6",200:"#e5e7eb",300:"#d1d5db",400:"#9ca3af",500:"#6b7280",600:"#4b5563",700:"#374151",800:"#1f2937",900:"#111827"},zinc:{50:"#fafafa",100:"#f4f4f5",200:"#e4e4e7",300:"#d4d4d8",400:"#a1a1aa",500:"#71717a",600:"#52525b",700:"#3f3f46",800:"#27272a",900:"#18181b"},neutral:{50:"#fafafa",100:"#f5f5f5",200:"#e5e5e5",300:"#d4d4d4",400:"#a3a3a3",500:"#737373",600:"#525252",700:"#404040",800:"#262626",900:"#171717"},stone:{50:"#fafaf9",100:"#f5f5f4",200:"#e7e5e4",300:"#d6d3d1",400:"#a8a29e",500:"#78716c",600:"#57534e",700:"#44403c",800:"#292524",900:"#1c1917"},red:{50:"#fef2f2",100:"#fee2e2",200:"#fecaca",300:"#fca5a5",400:"#f87171",500:"#ef4444",600:"#dc2626",700:"#b91c1c",800:"#991b1b",900:"#7f1d1d"},orange:{50:"#fff7ed",100:"#ffedd5",200:"#fed7aa",300:"#fdba74",400:"#fb923c",500:"#f97316",600:"#ea580c",700:"#c2410c",800:"#9a3412",900:"#7c2d12"},amber:{50:"#fffbeb",100:"#fef3c7",200:"#fde68a",300:"#fcd34d",400:"#fbbf24",500:"#f59e0b",600:"#d97706",700:"#b45309",800:"#92400e",900:"#78350f"},yellow:{50:"#fefce8",100:"#fef9c3",200:"#fef08a",300:"#fde047",400:"#facc15",500:"#eab308",600:"#ca8a04",700:"#a16207",800:"#854d0e",900:"#713f12"},lime:{50:"#f7fee7",100:"#ecfccb",200:"#d9f99d",300:"#bef264",400:"#a3e635",500:"#84cc16",600:"#65a30d",700:"#4d7c0f",800:"#3f6212",900:"#365314"},green:{50:"#f0fdf4",100:"#dcfce7",200:"#bbf7d0",300:"#86efac",400:"#4ade80",500:"#22c55e",600:"#16a34a",700:"#15803d",800:"#166534",900:"#14532d"},emerald:{50:"#ecfdf5",100:"#d1fae5",200:"#a7f3d0",300:"#6ee7b7",400:"#34d399",500:"#10b981",600:"#059669",700:"#047857",800:"#065f46",900:"#064e3b"},teal:{50:"#f0fdfa",100:"#ccfbf1",200:"#99f6e4",300:"#5eead4",400:"#2dd4bf",500:"#14b8a6",600:"#0d9488",700:"#0f766e",800:"#115e59",900:"#134e4a"},cyan:{50:"#ecfeff",100:"#cffafe",200:"#a5f3fc",300:"#67e8f9",400:"#22d3ee",500:"#06b6d4",600:"#0891b2",700:"#0e7490",800:"#155e75",900:"#164e63"},sky:{50:"#f0f9ff",100:"#e0f2fe",200:"#bae6fd",300:"#7dd3fc",400:"#38bdf8",500:"#0ea5e9",600:"#0284c7",700:"#0369a1",800:"#075985",900:"#0c4a6e"},blue:{50:"#eff6ff",100:"#dbeafe",200:"#bfdbfe",300:"#93c5fd",400:"#60a5fa",500:"#3b82f6",600:"#2563eb",700:"#1d4ed8",800:"#1e40af",900:"#1e3a8a"},indigo:{50:"#eef2ff",100:"#e0e7ff",200:"#c7d2fe",300:"#a5b4fc",400:"#818cf8",500:"#6366f1",600:"#4f46e5",700:"#4338ca",800:"#3730a3",900:"#312e81"},violet:{50:"#f5f3ff",100:"#ede9fe",200:"#ddd6fe",300:"#c4b5fd",400:"#a78bfa",500:"#8b5cf6",600:"#7c3aed",700:"#6d28d9",800:"#5b21b6",900:"#4c1d95"},purple:{50:"#faf5ff",100:"#f3e8ff",200:"#e9d5ff",300:"#d8b4fe",400:"#c084fc",500:"#a855f7",600:"#9333ea",700:"#7e22ce",800:"#6b21a8",900:"#581c87"},fuchsia:{50:"#fdf4ff",100:"#fae8ff",200:"#f5d0fe",300:"#f0abfc",400:"#e879f9",500:"#d946ef",600:"#c026d3",700:"#a21caf",800:"#86198f",900:"#701a75"},pink:{50:"#fdf2f8",100:"#fce7f3",200:"#fbcfe8",300:"#f9a8d4",400:"#f472b6",500:"#ec4899",600:"#db2777",700:"#be185d",800:"#9d174d",900:"#831843"},rose:{50:"#fff1f2",100:"#ffe4e6",200:"#fecdd3",300:"#fda4af",400:"#fb7185",500:"#f43f5e",600:"#e11d48",700:"#be123c",800:"#9f1239",900:"#881337"}};return function({disablePreflight:e}={}){return function({colors:e,disablePreflight:t}={}){return{preflight:t?void 0:l,theme:o({},a,{colors:o({inherit:"inherit",current:"currentColor",transparent:"transparent",black:"#000",white:"#fff"},e)}),variants:k,rules:s,finalize:e=>e.n&&e.d&&e.r.some(e=>/^&::(before|after)$/.test(e))&&!/(^|;)content:/.test(e.d)?o({},e,{d:"content:var(--tw-content);"+e.d}):e}}({colors:$,disablePreflight:e})}}(twind.core);
this.twind.presetAutoprefix=function(){"use strict";var i=new Map([["align-self","-ms-grid-row-align"],["color-adjust","-webkit-print-color-adjust"],["column-gap","grid-column-gap"],["forced-color-adjust","-ms-high-contrast-adjust"],["gap","grid-gap"],["grid-template-columns","-ms-grid-columns"],["grid-template-rows","-ms-grid-rows"],["justify-self","-ms-grid-column-align"],["margin-inline-end","-webkit-margin-end"],["margin-inline-start","-webkit-margin-start"],["mask-border","-webkit-mask-box-image"],["mask-border-outset","-webkit-mask-box-image-outset"],["mask-border-slice","-webkit-mask-box-image-slice"],["mask-border-source","-webkit-mask-box-image-source"],["mask-border-repeat","-webkit-mask-box-image-repeat"],["mask-border-width","-webkit-mask-box-image-width"],["overflow-wrap","word-wrap"],["padding-inline-end","-webkit-padding-end"],["padding-inline-start","-webkit-padding-start"],["print-color-adjust","color-adjust"],["row-gap","grid-row-gap"],["scroll-margin-bottom","scroll-snap-margin-bottom"],["scroll-margin-left","scroll-snap-margin-left"],["scroll-margin-right","scroll-snap-margin-right"],["scroll-margin-top","scroll-snap-margin-top"],["scroll-margin","scroll-snap-margin"],["text-combine-upright","-ms-text-combine-horizontal"]]);let t=[["-webkit-",1],["-moz-",2],["-ms-",4]];return function(){return({stringify:r})=>({stringify(e,a,o){var s,n;let l="",m=i.get(e);m&&(l+=r(m,a,o)+";");let g=(s=/^(?:(text-(?:decoration$|e|or|si)|back(?:ground-cl|d|f)|box-d|mask(?:$|-[ispro]|-cl)|pr|hyphena|flex-d)|(tab-|column(?!-s)|text-align-l)|(ap)|u|hy)/i.exec(e))?s[1]?1:s[2]?2:s[3]?3:5:0,d=(n=/^(?:(pos)|(cli)|(background-i)|(flex(?:$|-b)|(?:max-|min-)?(?:block-s|inl|he|widt))|dis)/i.exec(e))?n[1]?/^sti/i.test(a)?1:0:n[2]?/^pat/i.test(a)?1:0:n[3]?/^image-/i.test(a)?1:0:n[4]?"-"===a[3]?2:0:/^(?:inline-)?grid$/i.test(a)?4:0:0;for(let c of t)g&c[1]&&(l+=r(c[0]+e,a,o)+";"),d&c[1]&&(l+=r(e,c[0]+a,o)+";");return l+r(e,a,o)}})}}()
const defaultTheme = this.twind.presetTailwind().theme;
twind.presetTailwind_colors = defaultTheme.colors;
twind.presetTailwind_defaultTheme = defaultTheme;
this.twind.presetTypography=function(t){"use strict";function o(){return(o=Object.assign||function(t){for(var o=1;o`.${o.e(o.h(t))}${e}`)]=e[n];return r}function i(t,o,{e,h:r},i){return o.replace(/^[^>:]+$|(>)?((?:[^:,]+(?::[\w-]+)?)|:[\w-]+)(::[\w-]+)?/g,(o,n=" ",l=o,a="")=>i(`${n}:where(${l}):not(:where(.${e(r("not-"+t))} *))${a}`))}function n(t){return t?"string"==typeof t?{fontSize:t}:e({fontSize:t[0]},"string"==typeof t[1]?{lineHeight:t[1]}:t[1]):void 0}function l(t,o){return`${(t/o).toFixed(3).replace(/^0|\.?0+$/g,"")}em`}return function({className:o="prose",defaultColor:a="gray",extend:d={},colors:p={}}={}){return p=e({body:"700",headings:"900",lead:"600",links:"900",bold:"900",counters:"500",bullets:"300",hr:"200",quotes:"900","quote-borders":"200",captions:"500",code:"900","pre-code":"200","pre-bg":"800","th-borders":"300","td-borders":"200"},p,{dark:null===p.dark?null:e({body:"300",headings:"#fff",lead:"400",links:"#fff",bold:"#fff",counters:"400",bullets:"600",hr:"700",quotes:"100","quote-borders":"700",captions:"400",code:"#fff","pre-code":"300","pre-bg":"rgb(0 0 0 / 50%)","th-borders":"600","td-borders":"700"},p.dark)}),{variants:[["headings","h1,h2,h3,h4,h5,h6,th"],["h1"],["h2"],["h3"],["h4"],["h5"],["h6"],["p"],["a"],["blockquote"],["figure"],["figcaption"],["strong"],["em"],["code"],["pre"],["ol"],["ul"],["li"],["table"],["thead"],["tr"],["th"],["td"],["img"],["video"],["hr"],["lead",".lead"]].map(([t,e=t])=>[`${o}-${t}`,(t,r)=>i(o,"."==e[0]?"."+r.e(r.h(e.slice(1))):e,r,t=>`& :is(${t.trim()})`)]),rules:[[`(lead|not-${o})`,({1:t},{h:o})=>[{c:o(t)}]],[`${o}-invert`,{"@layer base":{"--tw-prose-body":"var(--tw-prose-invert-body)","--tw-prose-headings":"var(--tw-prose-invert-headings)","--tw-prose-lead":"var(--tw-prose-invert-lead)","--tw-prose-links":"var(--tw-prose-invert-links)","--tw-prose-bold":"var(--tw-prose-invert-bold)","--tw-prose-counters":"var(--tw-prose-invert-counters)","--tw-prose-bullets":"var(--tw-prose-invert-bullets)","--tw-prose-hr":"var(--tw-prose-invert-hr)","--tw-prose-quotes":"var(--tw-prose-invert-quotes)","--tw-prose-quote-borders":"var(--tw-prose-invert-quote-borders)","--tw-prose-captions":"var(--tw-prose-invert-captions)","--tw-prose-code":"var(--tw-prose-invert-code)","--tw-prose-pre-code":"var(--tw-prose-invert-pre-code)","--tw-prose-pre-bg":"var(--tw-prose-invert-pre-bg)","--tw-prose-th-borders":"var(--tw-prose-invert-th-borders)","--tw-prose-td-borders":"var(--tw-prose-invert-td-borders)"}}],[o+"-",({$$:t},o)=>{let e=n(o.theme("fontSize",t));return e&&{"@layer components":e}}],[o+"-",({$$:t},o)=>s(t,o)],[o,(t,i)=>e({},s(a,i),{"@layer base":[r(o,i,{a:{color:"var(--tw-prose-links)",textDecorationLine:"underline",fontWeight:"500"},strong:{color:"var(--tw-prose-bold)",fontWeight:"600"},"a strong,blockquote strong,thead th strong":{color:"inherit"},ul:{listStyleType:"disc"},ol:{listStyleType:"decimal"},'ol[type="A"]':{listStyleType:"upper-alpha"},'ol[type="a"]':{listStyleType:"lower-alpha"},'ol[type="A" s]':{listStyleType:"upper-alpha"},'ol[type="a" s]':{listStyleType:"lower-alpha"},'ol[type="I"]':{listStyleType:"upper-roman"},'ol[type="i"]':{listStyleType:"lower-roman"},'ol[type="I" s]':{listStyleType:"upper-roman"},'ol[type="i" s]':{listStyleType:"lower-roman"},'ol[type="1"]':{listStyleType:"decimal"},"ol,ul":{marginTop:l(20,16),marginBottom:l(20,16),paddingLeft:l(26,16)},li:{marginTop:l(8,16),marginBottom:l(8,16)},"ol>li,ul>li":{paddingLeft:l(6,16)},">ul>li p":{marginTop:l(12,16),marginBottom:l(12,16)},">ul>li>*:first-child,>ol>li>*:last-child":{marginTop:l(20,16)},">ul>li>*:last-child,>ol>li>*:last-child":{marginBottom:l(20,16)},"ol>li::marker":{fontWeight:"400",color:"var(--tw-prose-counters)"},"ul>li::marker":{color:"var(--tw-prose-bullets)"},"ul ul,ul ol,ol ul,ol ol":{marginTop:l(12,16),marginBottom:l(12,16)},hr:{borderColor:"var(--tw-prose-hr)",borderTopWidth:"1",marginTop:l(48,16),marginBottom:l(48,16)},blockquote:{marginTop:l(32,20),marginBottom:l(32,20),paddingLeft:l(20,20),fontWeight:"500",fontStyle:"italic",color:"var(--tw-prose-quotes)",borderLeftWidth:"0.25rem",borderLeftColor:"var(--tw-prose-quote-borders)",quotes:'"\\201C""\\201D""\\2018""\\2019"'},"blockquote p:first-of-type::before":{content:"open-quote"},"blockquote p:last-of-type::after":{content:"close-quote"},p:{marginTop:l(20,16),marginBottom:l(20,16)},h1:{color:"var(--tw-prose-headings)",fontWeight:"800",fontSize:l(36,16),marginTop:"0",marginBottom:l(32,36),lineHeight:1.15},"h1 strong":{fontWeight:"900",color:"inherit"},h2:{color:"var(--tw-prose-headings)",fontWeight:"700",fontSize:l(24,16),marginTop:l(48,24),marginBottom:l(24,24),lineHeight:"1.35"},"h2 strong":{fontWeight:"800",color:"inherit"},h3:{color:"var(--tw-prose-headings)",fontWeight:"600",fontSize:l(20,16),marginTop:l(32,20),marginBottom:l(12,20),lineHeight:"1.6"},"h3 strong":{fontWeight:"700",color:"inherit"},h4:{color:"var(--tw-prose-headings)",fontWeight:"600",marginTop:l(24,16),marginBottom:l(8,16),lineHeight:"1.5"},"h4 strong":{fontWeight:"700",color:"inherit"},"hr+*,h2+*,h3+*,h4+*":{marginTop:"0"},"img,video,figure":{marginTop:l(32,16),marginBottom:l(32,16)},"figure>*":{marginTop:"0",marginBottom:"0"},figcaption:{color:"var(--tw-prose-captions)",fontSize:l(14,16),lineHeight:"1.4",marginTop:l(12,14)},code:{color:"var(--tw-prose-code)",fontWeight:"600",fontSize:l(14,16)},"code::before,code::after":{content:'"`"'},"h2 code":{fontSize:l(21,24)},"h3 code":{fontSize:l(18,20)},"a code,h1 code,h2 code,h3 code,h4 code,blockquote code,thead th code":{color:"inherit"},pre:{color:"var(--tw-prose-pre-code)",backgroundColor:"var(--tw-prose-pre-bg)",overflowX:"auto",fontWeight:"400",fontSize:l(14,16),lineHeight:"1.7",marginTop:l(24,14),marginBottom:l(24,14),borderRadius:"0.375rem",paddingTop:l(12,14),paddingRight:l(16,14),paddingBottom:l(12,14),paddingLeft:l(16,14)},"pre code":{backgroundColor:"transparent",borderWidth:"0",borderRadius:"0",padding:"0",fontWeight:"inherit",color:"inherit",fontSize:"inherit",fontFamily:"inherit",lineHeight:"inherit"},"pre code::before":{content:"none"},"pre code::after":{content:"none"},table:{width:"100%",tableLayout:"auto",textAlign:"left",marginTop:l(32,16),marginBottom:l(32,16),fontSize:l(14,16),lineHeight:"1.7"},thead:{borderBottomWidth:"1px",borderBottomColor:"var(--tw-prose-th-borders)"},"thead th":{color:"var(--tw-prose-headings)",fontWeight:"600",verticalAlign:"bottom",paddingRight:l(8,14),paddingBottom:l(8,14),paddingLeft:l(8,14)},"thead th:first-child":{paddingLeft:"0"},"thead th:last-child":{paddingRight:"0"},"tbody tr":{borderBottomWidth:"1px",borderBottomColor:"var(--tw-prose-td-borders)"},"tbody tr:last-child":{borderBottomWidth:"0"},"tbody td,tfoot td":{verticalAlign:"baseline",paddingTop:l(8,14),paddingRight:l(8,14),paddingBottom:l(8,14),paddingLeft:l(8,14)},"tbody td:first-child,tfoot td:first-child":{paddingLeft:"0"},"tbody td:last-child,tfoot td:last-child":{paddingRight:"0"},[`.${i.e(i.h("lead"))}`]:{color:"var(--tw-prose-lead)",fontSize:l(20,16),lineHeight:"1.6",marginTop:l(24,20),marginBottom:l(24,20)},">:first-child":{marginTop:"0"},">:last-child":{marginBottom:"0"}}),r(o,i,d)],"@layer components":e({},n(i.theme("fontSize","base")),{color:"var(--tw-prose-body)",maxWidth:"theme(max-w.prose, 65ch)"})})]]};function s(o,e){let r={},i={},n=(r,n,l)=>{let a=e.theme(`colors.${o}.${n}`,n);l["--tw-prose-"+r]=t.toColorValue(a);let d=l!=i&&e.d("colors",`${o}-${n}`,a);d&&(i["--tw-prose-"+r]=t.toColorValue(d))};for(let l in p){let a=p[l];"dark"!=l&&a&&n(l,a,r)}for(let d in p.dark||{}){let s=p.dark[d];s&&(p.dark?n("invert-"+d,s,r):n(d,s,i))}return Object.keys(r).length?{"@layer defaults":{"&":r,[e.v("dark")]:i}}:void 0}}}(twind.core);
this.twind.presetTailwindForms=function(e,r,o){"use strict";let t=o&&o.__esModule?o:{default:o},[n,a]=t.default.fontSize.base,{spacing:i,borderWidth:l,borderRadius:s}=t.default,c=[{b:["[type='text']","[type='email']","[type='url']","[type='password']","[type='number']","[type='date']","[type='datetime-local']","[type='month']","[type='search']","[type='tel']","[type='time']","[type='week']","[multiple]","textarea","select"],c:["form-input","form-textarea","form-select","form-multiselect"],s:({theme:o})=>({appearance:"none","background-color":"#fff","border-color":e.toColorValue(o("colors.gray.500",r.gray[500])),"border-width":l.DEFAULT,"border-radius":s.none,"padding-top":i[2],"padding-right":i[3],"padding-bottom":i[2],"padding-left":i[3],"font-size":n,"line-height":a,"--tw-shadow":"0 0 #0000","&:focus":{outline:"2px solid transparent","outline-offset":"2px","--tw-ring-inset":"var(--tw-empty,/*!*/ /*!*/)","--tw-ring-offset-width":"0px","--tw-ring-offset-color":"#fff","--tw-ring-color":e.toColorValue(o("colors.blue.600",r.blue[600])),"--tw-ring-offset-shadow":"var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)","--tw-ring-shadow":"var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)","box-shadow":"var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)","border-color":e.toColorValue(o("colors.blue.600",r.blue[600]))}})},{b:["input","textarea"],c:["form-input","form-textarea"],s:({theme:o})=>({"&::placeholder":{color:e.toColorValue(o("colors.gray.500",r.gray[500])),opacity:"1"}})},{b:[""],c:["form-input"],s:{"&::-webkit-datetime-edit-fields-wrapper":{padding:"0"},"&::-webkit-date-and-time-value":{"min-height":"1.5em"}}},{b:["select"],c:["form-select"],s:({theme:o})=>({"background-image":`url("${u(` `)}")`,"background-position":`right ${i[2]} center`,"background-repeat":"no-repeat","background-size":"1.5em 1.5em","padding-right":i[10],"color-adjust":"exact"})},{b:["[multiple]"],s:{"background-image":"initial","background-position":"initial","background-repeat":"unset","background-size":"initial","padding-right":i[3],"color-adjust":"unset"}},{b:["[type='checkbox']","[type='radio']"],c:["form-checkbox","form-radio"],s:({theme:o})=>({appearance:"none",padding:"0","color-adjust":"exact",display:"inline-block","vertical-align":"middle","background-origin":"border-box","user-select":"none","flex-shrink":"0",height:i[4],width:i[4],color:e.toColorValue(o("colors.blue.600",r.blue[600])),"background-color":"#fff","border-color":e.toColorValue(o("colors.gray.500",r.gray[500])),"border-width":l.DEFAULT,"--tw-shadow":"0 0 #0000","&:focus":{outline:"2px solid transparent","outline-offset":"2px","--tw-ring-inset":"var(--tw-empty,/*!*/ /*!*/)","--tw-ring-offset-width":"2px","--tw-ring-offset-color":"#fff","--tw-ring-color":e.toColorValue(o("colors.blue.600",r.blue[600])),"--tw-ring-offset-shadow":"var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)","--tw-ring-shadow":"var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color)","box-shadow":"var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)"},"&:checked":{"border-color":"transparent","background-color":"currentColor","background-size":"100% 100%","background-position":"center","background-repeat":"no-repeat","&:hover,&:focus":{"border-color":"transparent","background-color":"currentColor"}}})},{b:["[type='checkbox']"],c:["form-checkbox"],s:{"border-radius":s.none,"&:checked":{"background-image":`url("${u(' ')}")`},"&:indeterminate":{"background-image":`url("${u(' ')}")`,"border-color":"transparent","background-color":"currentColor","background-size":"100% 100%","background-position":"center","background-repeat":"no-repeat","&:hover,&:focus":{"border-color":"transparent","background-color":"currentColor"}}}},{b:["[type='radio']"],c:["form-radio"],s:{"border-radius":"100%","&:checked":{"background-image":`url("${u(' ')}")`}}},{b:["[type='file']"],s:{background:"unset","border-color":"inherit","border-width":"0","border-radius":"0",padding:"0","font-size":"unset","line-height":"inherit","&:focus":{outline:["1px solid ButtonText","1px auto -webkit-focus-ring-color"]}}}];function d(e){switch(e){case"%20":return" ";case"%3D":return"=";case"%3A":return":";case"%2F":return"/";default:return e.toLowerCase()}}function u(e){return"data:image/svg+xml,"+encodeURIComponent(e.trim().replace(/\s+/g," ").replace(/"/g,"'")).replace(/%[\dA-F]{2}/g,d)}return function({strategy:e}={}){let r={};return"base"!==e&&(r.rules=[["("+[...new Set(c.flatMap(e=>e.c).filter(Boolean))].join("|")+")",(e,r)=>({"@layer base":c.filter(r=>{var o;return null==(o=r.c)?void 0:o.includes(e[1])}).map(({c:e,s:o})=>({[""+e.map(e=>"."+r.e(r.h(e)))]:"function"==typeof o?o(r):o}))})]]),"class"!==e&&(r.preflight=e=>{let r={};for(let{b:o,s:t}of c)r[""+o]="function"==typeof t?t(e):t;return r}),r}}(twind.core,twind.presetTailwind_colors,twind.presetTailwind_defaultTheme);
window.innerWidth;
let {colors, components, theme, variables} = {"name":"Versoly UI Default","fonts":["Inter"],"theme":{"extend":{"colors":{"dark":{"50":"#f9fafb","100":"#f3f4f6","200":"#e5e7eb","300":"#d1d5db","400":"#9ca3af","500":"#6b7280","600":"#4b5563","700":"#374151","800":"#1f2937","900":"#111827","950":"#030712","DEFAULT":"#1f2937"},"info":{"50":"#eff6ff","100":"#dbeafe","200":"#bfdbfe","300":"#93c5fd","400":"#60a5fa","500":"#3b82f6","600":"#2563eb","700":"#1d4ed8","800":"#1e40af","900":"#1e3a8a","950":"#172554","DEFAULT":"#60a5fa"},"black":"#000","light":{"50":"#f9fafb","100":"#f3f4f6","200":"#e5e7eb","300":"#d1d5db","400":"#9ca3af","500":"#6b7280","600":"#4b5563","700":"#374151","800":"#1f2937","900":"#111827","950":"#030712","DEFAULT":"#f3f4f6"},"muted":"#374151","white":"#fff","danger":{"50":"#fef2f2","100":"#fee2e2","200":"#fecaca","300":"#fca5a5","400":"#f87171","500":"#ef4444","600":"#dc2626","700":"#b91c1c","800":"#991b1b","900":"#7f1d1d","950":"#450a0a","DEFAULT":"#dc2626"},"neutral":{"50":"#f8fafc","100":"#f1f5f9","200":"#e2e8f0","300":"#cbd5e1","400":"#94a3b8","500":"#64748b","600":"#475569","700":"#334155","800":"#1e293b","900":"#0f172a","950":"#020617","DEFAULT":"#475569"},"primary":{"50":"#f4f7fe","100":"#e9effd","200":"#c9d8fa","300":"#a8c1f7","400":"#6692f1","500":"#5182ef","600":"#2563eb","700":"#1c4ab0","800":"#163b8d","900":"#123173","DEFAULT":"#2563eb"},"success":{"50":"#ecfdf5","100":"#d1fae5","200":"#a7f3d0","300":"#6ee7b7","400":"#34d399","500":"#10b981","600":"#059669","700":"#047857","800":"#065f46","900":"#064e3b","950":"#022c22","DEFAULT":"#10b981"},"warning":{"50":"#fffbeb","100":"#fef3c7","200":"#fde68a","300":"#fcd34d","400":"#fbbf24","500":"#f59e0b","600":"#d97706","700":"#b45309","800":"#92400e","900":"#78350f","950":"#451a03","DEFAULT":"#f59e0b"},"tertiary":{"50":"#f5f3ff","100":"#ede9fe","200":"#ddd6fe","300":"#c4b5fd","400":"#a78bfa","500":"#8b5cf6","600":"#7c3aed","700":"#6d28d9","800":"#5b21b6","900":"#4c1d95","950":"#2e1065","DEFAULT":"#7c3aed"},"secondary":{"50":"#fdf2f8","100":"#fce7f3","200":"#fbcfe8","300":"#f9a8d4","400":"#f472b6","500":"#ec4899","600":"#db2777","700":"#be185d","800":"#9d174d","900":"#831843","950":"#500724","DEFAULT":"#db2777"},"blue-ribbon":{"50":"#f4f7fe","100":"#e9effd","200":"#c9d8fa","300":"#a8c1f7","400":"#6692f1","500":"#5182ef","600":"#2563eb","700":"#1c4ab0","800":"#163b8d","900":"#123173","DEFAULT":"#2563eb"}},"spacing":{"112":"28rem","128":"32rem","144":"36rem","160":"40rem","192":"48rem"},"fontFamily":{"sans":"Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",Roboto,\"Helvetica Neue\",Arial,\"Noto Sans\",sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\",\"Segoe UI Symbol\",\"Noto Color Emoji\""},"backgroundImage":{"arrow-down":"url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\")","caret-down":"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 512'%3E%3Cpath fill='currentFill' d='M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z'/%3E%3C/svg%3E\");"}}},"author":"Versoly","colors":{"dark":{"link":{"text":"gray-800","hover:text":"gray-900","active:text":"gray-1000"},"ghost":{"DEFAULT":"pink-100","hover:bg":"pink-200","hover:text":"gray-800"},"subtle":{"bg":"gray-100","hover:bg":"gray-200","active:bg":"gray-300","hover:text":"gray-900"},"DEFAULT":{"text":"white","DEFAULT":"gray-800","hover:bg":"gray-900","active:bg":"gray-800","hover:text":"white"}},"info":{"link":{"text":"blue-400","hover:text":"blue-600","active:text":"blue-700"},"alert":{"bg":"blue-50","text":"blue-600"},"ghost":{"hover:bg":"blue-100","active:bg":"blue-200","hover:text":"blue-500"},"subtle":{"bg":"blue-100","hover:bg":"blue-200","active:bg":"blue-300","hover:text":"blue-500"},"DEFAULT":{"text":"white","DEFAULT":"blue-400","hover:bg":"blue-500","active:bg":"blue-600","hover:text":"white"}},"black":{"DEFAULT":{"text":"white","DEFAULT":"black"}},"light":{"link":{"text":"gray-100","hover:text":"gray-300","active:text":"gray-400"},"alert":{"bg":"gray-50","text":"gray-600"},"ghost":{"hover:bg":"gray-100","active:bg":"gray-200","hover:text":"gray-200"},"subtle":{"bg":"gray-100","hover:bg":"gray-200","active:bg":"gray-300","hover:text":"gray-200"},"DEFAULT":{"text":"black","DEFAULT":"gray-100","hover:bg":"gray-200","active:bg":"gray-300","hover:text":"black"}},"muted":{"DEFAULT":{"DEFAULT":"gray-700"}},"white":{"DEFAULT":{"text":"black","DEFAULT":"white"}},"danger":{"link":{"text":"red-600","hover:text":"red-800","active:text":"red-900"},"alert":{"bg":"red-50","text":"red-600"},"ghost":{"hover:bg":"red-100","active:bg":"red-200","hover:text":"red-700"},"subtle":{"bg":"red-100","hover:bg":"red-200","active:bg":"red-300","hover:text":"red-700"},"DEFAULT":{"text":"white","DEFAULT":"red-600","hover:bg":"red-700","active:bg":"red-800","hover:text":"white"}},"neutral":{"link":{"text":"slate-600","hover:text":"slate-800","active:text":"slate-900"},"alert":{"bg":"slate-50","text":"slate-600"},"ghost":{"hover:bg":"slate-100","active:bg":"slate-200","hover:text":"slate-700"},"subtle":{"bg":"slate-100","hover:bg":"slate-200","active:bg":"slate-300","hover:text":"slate-700"},"DEFAULT":{"text":"white","DEFAULT":"slate-600","hover:bg":"slate-700","active:bg":"slate-800","hover:text":"white"}},"primary":{"link":{"text":"primary-600","hover:text":"primary-900","active:text":"primary-1000"},"alert":{"bg":"primary-50","text":"primary-600"},"ghost":{"hover:bg":"primary-100","active:bg":"primary-200","hover:text":"primary-900"},"subtle":{"bg":"primary-100","hover:bg":"primary-200","active:bg":"primary-300","hover:text":"primary-900"},"DEFAULT":{"text":"white","DEFAULT":"primary-600","hover:bg":"primary-900","active:bg":"primary-900","hover:text":"white"}},"success":{"link":{"text":"emerald-500","hover:text":"emerald-700","active:text":"emerald-800"},"alert":{"bg":"emerald-50","text":"emerald-600"},"ghost":{"hover:bg":"emerald-100","active:bg":"emerald-200","hover:text":"emerald-600"},"subtle":{"bg":"emerald-100","hover:bg":"emerald-200","active:bg":"emerald-300","hover:text":"emerald-600"},"DEFAULT":{"text":"white","DEFAULT":"emerald-500","hover:bg":"emerald-600","active:bg":"emerald-700","hover:text":"white"}},"warning":{"link":{"text":"amber-500","hover:text":"amber-700","active:text":"amber-800"},"alert":{"bg":"amber-50","text":"amber-600"},"ghost":{"hover:bg":"amber-100","active:bg":"amber-200","hover:text":"amber-600"},"subtle":{"bg":"amber-100","hover:bg":"amber-200","active:bg":"amber-300","hover:text":"amber-600"},"DEFAULT":{"text":"white","DEFAULT":"amber-500","hover:bg":"amber-600","active:bg":"amber-700","hover:text":"white"}},"tertiary":{"link":{"text":"violet-600","hover:text":"violet-800","active:text":"violet-900"},"alert":{"bg":"violet-50","text":"violet-600"},"ghost":{"hover:bg":"violet-100","active:bg":"violet-200","hover:text":"violet-700"},"subtle":{"bg":"violet-100","hover:bg":"violet-200","active:bg":"violet-300","hover:text":"violet-700"},"DEFAULT":{"text":"white","DEFAULT":"violet-600","hover:bg":"violet-700","active:bg":"violet-800","hover:text":"white"}},"secondary":{"link":{"text":"pink-600","hover:text":"pink-800","active:text":"pink-900"},"alert":{"bg":"pink-50","text":"pink-600"},"ghost":{"hover:bg":"pink-100","active:bg":"pink-200","hover:text":"pink-700"},"subtle":{"bg":"pink-100","hover:bg":"pink-200","active:bg":"pink-300","hover:text":"pink-700"},"DEFAULT":{"text":"white","DEFAULT":"pink-600","hover:bg":"pink-700","active:bg":"pink-800","hover:text":"white"}}},"version":"1.0.0","updatedAt":1684133196620,"variables":{"--svg-arrow-down":"url(\"data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e\")","--svg-caret-down":"url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 320 512'%3E%3Cpath fill='currentFill' d='M31.3 192h257.3c17.8 0 26.7 21.5 14.1 34.1L174.1 354.8c-7.8 7.8-20.5 7.8-28.3 0L17.2 226.1C4.6 213.5 13.5 192 31.3 192z'/%3E%3C/svg%3E\")"},"components":{".btn":"inline-flex flex-wrap items-center justify-center text-center cursor-pointer select-none transition duration-200 ease-in-out flex-shrink-0 font-semibold py-2 px-4 rounded-md disabled:opacity-80 disabled:pointer-events-none focus:outline-none focus:ring-2 focus:ring-opacity-50 hover:no-underline border-0",".col":"relative w-full px-5",".row":"flex flex-wrap flex-row -mx-5",".tab":"px-4 py-2 border-b-2 hover:text-primary ring-0 focus:outline-none","body":"font-sans bg-white",".card":"relative flex flex-col overflow-hidden shadow-md rounded-md bg-white",".alert":"flex flex-row rounded-md px-3 py-2 text-gray-700 bg-gray-100 transition-opacity duration-300",".badge":"inline-block px-2 py-0.5 rounded text-xs text-white font-semibold",".fa-ul":"ml-6",".modal":"fixed left-0 top-0 w-screen h-screen overflow-auto z-50 transition-opacity duration-500 opacity-0",".table":"min-w-full",".navbar":"z-20 py-3 relative","h1, .h1":"text-[calc(1.375rem+1.5vw)] xl:text-5xl","h2, .h2":"text-[calc(1.325rem+0.9vw)] xl:text-4xl","h3, .h3":"text-[calc(1.3rem+0.6vw)] xl:text-3xl","h4, .h4":"text-[calc(1.275rem+0.3vw)] xl:text-2xl","h5, .h5":"text-xl",".btn-ani":"transform-all hover:-translate-y-0.5 duration-300 ease",".prose a":"text-primary hover:text-primary-700",".tooltip":"hidden absolute invisible top-0 left-0 bg-dark text-white font-normal py-2 px-3 rounded-lg shadow-sm text-sm pointer-events-none opacity-0 transition-opacity duration-300",".badge-lg":"px-3 py-1 rounded text-sm text-white font-semibold",".disabled":"opacity-80 pointer-events-none",".modal-bg":"fixed w-screen h-screen left-0 top-0 z-30 pt-16 bg-gray-900 overflow-auto transition-opacity duration-500 opacity-50",".modal-lg":"max-w-screen-md",".modal-sm":"max-w-sm",".modal-xl":"max-w-screen-xl",".progress":"flex w-full overflow-hidden bg-gray-200 rounded-full h-2.5",".prose h4":"text-lg",".tab-list":"flex flex-wrap gap-x-2 mb-2 select-none",".tab-pane":"",".btn-group":"inline-flex",".card-body":"p-5 flex-grow",".container":"override:w-full override:max-w-full override:lg:max-w-[calc(min(100vw-60px,1220px))] mx-auto px-5",".display-1":"text-[calc(1.625rem+4.5vw)] lg:text-[5rem] leading-[1.2] font-light",".display-2":"text-[calc(1.575rem+3.9vw)] lg:text-[4.5rem] leading-[1.2] font-light",".display-3":"text-[calc(1.525rem+3.3vw)] lg:text-[4rem] leading-[1.2] font-light",".display-4":"text-[calc(1.475rem+2.7vw)] lg:text-[3.5rem] leading-[1.2] font-light",".display-5":"text-[calc(1.425rem+2.1vw)] lg:text-[3rem] leading-[1.2] font-light",".display-6":"text-[calc(1.375rem+1.6vw)] lg:text-[2.5rem] leading-[1.2] font-light",".blockquote":"text-xl italic font-semibold text-neutral-900",".form-input":"block mt-0 w-full rounded-md border-gray-300 shadow-sm focus:border-primary-300 focus:ring focus:ring-primary-200 focus:ring-opacity-50",".navbar-btn":"w-6 mr-5 cursor-pointer select-none rounded md:hidden",".navbar-col":"flex flex-col items-center mt-3 space-y-4 md:flex-row md:space-x-4 md:space-y-0 md:mt-0",".navbar-row":"hidden w-screen items-center md:flex md:flex-grow md:justify-between md:w-auto md:ml-4 transition-all transform duration-300 opacity-0 h-0 md:h-auto md:opacity-100 !md:h-auto md:overflow-visible",".btn-{color}":"{bg=DEFAULT.DEFAULT} {hover:bg=DEFAULT.hover:bg} {hover:text=DEFAULT.hover:text} {active:bg=DEFAULT.active:bg} {text=DEFAULT.text} {border=DEFAULT.DEFAULT} {hover:border=DEFAULT.hover:bg} {ring=DEFAULT.DEFAULT} {focus:ring=DEFAULT.active:bg}",".card-footer":"px-5 py-3 bg-gray-100",".card-header":"px-5 py-3 bg-gray-100",".form-select":"block mt-1 w-full rounded-md border-gray-300 shadow-sm focus:border-primary-300 focus:ring focus:ring-primary-200 focus:ring-opacity-50",".progress-lg":"h-4",".progress-sm":"h-1.5",".progress-xl":"h-6",".prose ul ul":"list-disc",".tab-content":"py-2",".navbar-brand":"flex flex-row items-center space-x-3 ml-5 md:ml-0 text-primary font-bold text-xl",".progress-bar":"h-full",".alert-{color}":"{text=alert.text} {bg=alert.bg}",".dropdown-item":"bg-transparent py-1.5 px-4 hover:text-primary-800 focus:text-primary-800 hover:bg-primary-100 focus:bg-primary-100 focus:outline-none focus:shadow-outline",".dropdown-menu":"absolute hidden transition duration-200 opacity-0 w-max py-2 bg-white border border-gray-300 rounded mt-2 min-w-[160px] z-[1]",".form-checkbox":"rounded border-primary-300 text-primary-600 shadow-sm focus:border-primary-300 focus:ring focus:ring-offset-0 focus:ring-primary-200 focus:ring-opacity-50",".form-input-lg":"px-4 py-2 text-lg",".form-input-sm":"px-2 py-1 text-sm",".tab-underline":"px-3 py-2 text-muted hover:text-primary focus:outline-none",".tooltip-arrow":"absolute bg-dark w-2 h-2 rotate-45","html :where(a)":"text-primary hover:text-primary-800",".accordion-body":"py-3",".accordion-item":"flex flex-col bg-white rounded-lg p-4 mb-3",".btn-group .btn":"rounded-none first:rounded-l-md last:rounded-r-md",".form-select-lg":"pl-4 py-2 text-lg",".form-select-sm":"pl-2 py-1 text-sm",".prose ul ul ul":"list-[square]",".table>tbody>tr":"bg-white border-b",".container-fluid":"override:w-full override:max-w-full mx-auto px-5",".navbar-row.show":"opacity-100",".accordion-header":"flex items-center text-xl w-full cursor-pointer font-semibold text-dark hover:text-primary-700 transition-all duration-300 after:transition after:duration-300 after:flex-shrink-0 after:w-5 after:h-5 after:ml-auto after:bg-arrow-down after:content-['']",".pagination > .btn":"px-3 py-1",".accordion-collapse":"transition-all duration-300",".blockquote-{color}":"p-4 {bg=alert.bg} border-l-[4px] {border=DEFAULT.DEFAULT}",".dropdown-menu.show":"opacity-100 block",".prose > blockquote":"border-l-4 border-gray-600 my-3 py-3 pl-4 text-xl -ml-5",".tab-list-underline":"border-b-2 border-gray-300",".btn-link.btn-{color}":"bg-transparent hover:bg-transparent active:bg-transparent border-transparent {text=link.text} {hover:text=link.hover:text} {active:text=link.active:text} border-0 hover:underline {focus:ring=DEFAULT.active:bg}",".table-hover>tbody>tr":"hover:bg-gray-200",".table-sm>tbody>tr>td":"py-1",".table-sm>thead>tr>th":"py-1","h1, h2, h3, h4, h5, p":"mb-3",".btn-ghost.btn-{color}":"bg-transparent {hover:bg=ghost.hover:bg} {hover:text=ghost.hover:text} {active:bg=ghost.active:bg} {text=DEFAULT.DEFAULT} border-0 {focus:ring=DEFAULT.active:bg}",".btn-subtle.btn-{color}":"bg-transparent {bg=subtle.bg} {hover:bg=subtle.hover:bg} {hover:text=subtle.hover:text} {active:bg=subtle.active:bg} {text=DEFAULT.DEFAULT} border-0 {focus:ring=DEFAULT.active:bg}",".table-striped>tbody>tr":"even:bg-gray-100",".table-striped>thead>tr":"bg-gray-50 border-b border-gray-300","html :where(.taos-init)":"duration-[400ms]",".btn-outline.btn-{color}":"bg-transparent {text=DEFAULT.DEFAULT} {hover:bg=DEFAULT.hover:bg} {active:bg=DEFAULT.active:bg} active:text-white hover:text-white {border=DEFAULT.DEFAULT} border {focus:ring=DEFAULT.active:bg}",".navbar-dark .navbar-btn":"focus:ring-white","[data-toggle=\"dropdown\"]":"flex ml-4 items-center gap-x-1 after:flex-shrink-0 after:w-4 after:h-4 after:bg-caret-down after:content-[''] after:bg-no-repeat","html :where(a.text-dark)":"hover:text-gray-600",".form-radio[type=\"radio\"]":"text-primary-600 ring-offset-2 focus:ring-2 focus:ring-primary-300","html :where(.table>thead)":"bg-gray-50","html :where(a.text-white)":"hover:text-gray-300",".tab[aria-selected=\"true\"]":"border-primary text-primary",".btn-lg, .btn-group-lg>.btn":"py-3 px-5 text-lg",".btn-sm, .btn-group-sm>.btn":"py-1 px-2 text-sm",".btn-xl, .btn-group-xl>.btn":"py-4 px-6 text-xl",".btn-xs, .btn-group-xs>.btn":"py-1 px-1 text-xs","[data-popper-arrow]::before":"content-[''] rotate-[45deg] absolute h-4 w-4 bg-white border-l border-t border-gray-300 rounded-tl","html :where(.modal-content)":"relative m-auto mt-16 bg-gray-100 shadow-lg z-40 max-w-md","html :where(a.text-{color})":"{text=link.text} {hover:text=link.hover:text} {active:text=link.active:text}",".btn-ghost.btn-light:not(.c)":"text-gray-900",".form-checkbox[type=\"checkbox\"]":"rounded","html :where(.table>tbody>tr>td)":"py-3 px-4 text-sm text-gray-900","html :where(.table>thead>tr>th)":"py-3 px-4 text-xs font-semibold text-left text-gray-700",".tab-underline[aria-selected=\"true\"]":"-mb-1 border-0 border-b-2 border-primary text-primary",".accordion-header[aria-expanded=\"true\"]":"text-primary hover:text-primary-700 after:rotate-180",".btn-ghost.btn-{color}[aria-current=\"page\"]":"{hover:text=ghost.hover:text} {bg=ghost.hover:bg} {text=DEFAULT.DEFAULT}",".btn-group > .btn-outline:not(:first-child)":"border-l-0 border-r-[1px]",".btn-outline.btn-{color}[aria-current=\"page\"]":"{bg=DEFAULT.DEFAULT} {text=DEFAULT.text}",".navbar > .container-fluid, .navbar > .container":"flex flex-wrap justify-between md:flex-nowrap px-3 md:px-5","[data-popper-placement^='top'] > [data-popper-arrow]":"-bottom-2","[data-popper-placement^='left'] > [data-popper-arrow]":"-right-2","[data-popper-placement^='right'] > [data-popper-arrow]":"-left-2","[data-popper-placement^='bottom'] > [data-popper-arrow]":"-top-2"},"versoly-ui-version":"2.3.0"};
components = {
...components,
".bg-{color}": "{bg=DEFAULT.DEFAULT}",
".border-{color}": "{border=DEFAULT.DEFAULT}",
".ring-{color}": "{ring=DEFAULT.DEFAULT}",
".text-{color}": "{text=DEFAULT.DEFAULT}",
".bg-{color}.btn": "{bg=DEFAULT.DEFAULT}",
".text-{color}.btn": "{text=DEFAULT.DEFAULT}",
}
let rules = [
["container", components['.container'].replaceAll('override:', '')],
["container-fluid", components['.container-fluid'].replaceAll('override:', '')],
['text-(wrap|nowrap|balance|pretty)', 'textWrap'],
]
let preflight = {}
Object.entries(components).forEach(([cKey, cValue]) => {
if (!cKey.includes('{color}')) {
preflight['' + cKey] = cValue
return
}
Object.entries(colors).forEach(([key, value]) => {
let compClasses = ''
cValue.split(' ').forEach(classValue => {
classValue = classValue.trim()
if (!classValue.match(/{(.*?)}/g)) {
compClasses += ' ' + classValue
return
}
let [k, v] = classValue.slice(1, classValue.length - 1).split('=')
if (!v) {
return
}
if (v.includes("'")) {
compClasses += ' ' + k + '-' + '[' + v.slice(1, v.length - 1) + ']'
return
}
let computedV = value
v.split('.').forEach(vSplit => {
computedV = computedV[vSplit] || computedV
})
if (!computedV.includes) {
return
}
compClasses += ' ' + k + '-' + computedV
})
if (['.alert-{color}', '.btn-{color}'].includes(cKey)) {
rules = [
...rules,
[cKey.replaceAll('{color}', key).replace('.', ''), compClasses]
]
return
}
if (preflight[cKey.replaceAll('{color}', key)]) {
return
}
preflight[cKey.replaceAll('{color}', key)] = compClasses
})
})
preflight = Object.entries(preflight)
preflight = preflight.map(([key, value]) => {
if (value.includes('override')) {
value = ''
}
return [key, value]
})
preflight = preflight.map(([key, value]) => {
if (!value) {
return ''
}
return key + ' {\n @apply ' + value + ';\n }'
}).filter(Boolean)
const {css, setup, install} = twind
const {presetTailwind, presetAutoprefix, presetTypography, presetTailwindForms} = this.twind
const variablesCSS = Object.entries(variables).map(([variableKey, variableValue]) => {
return variableKey + ':' + variableValue + ';'
}).join('\n');
preflight = css(':root {' + variablesCSS + '}'+preflight.join(''))
// setup
install({
preflight,
presets: [
presetTailwind(),
presetAutoprefix(),
presetTypography(),
presetTailwindForms({strategy: "base"}),
],
theme,
// mode: "",
rules,
darkMode: "class",
hash: false
});
})();
What is Web Scraping? An In-Depth Guide
Posted by Vlad Mishkin
| February 5, 2023
Imagine tapping into the vast data resources of the internet to gain insights, make informed decisions, and stay ahead of the competition. What is web scraping? Web scraping unlocks this potential by automating the extraction of large amounts of data from websites in a structured manner. Discover the inner workings, applications, tools, and best practices in our comprehensive guide on web scraping.
Short Summary
Web scraping is a powerful tool to extract data from websites for various purposes such as business intelligence and marketing.
It involves making HTTP requests, parsing & extracting data, and storing the relevant information locally.
Responsible web scraping requires adhering to robots.txt files, TOSs, privacy laws and best practices like using user agents & proxies with appropriate crawl rates during off peak hours when necessary.
Understanding Web Scraping
Web scraping is the process of extracting data from websites, enabling businesses and individuals to gather valuable insights from the vast ocean of information available online. At its core, web scraping has two components: a web crawler and a web scraper. The web crawler navigates the complex web of interconnected pages, while the web scraper extracts the desired data from these pages.
The extracted data can be used for various purposes, such as e-commerce business intelligence, investor research, and marketing teams looking to gain a competitive edge with comprehensive insights. To perform web scraping, a myriad of tools and techniques are available, ranging from Python scripts to cloud-based web scraping services.
Key Components: Crawlers and Scrapers
Web crawlers, sometimes referred to as "spiders," are artificial intelligence programs that browse the internet by following links and exploring content. Web scrapers, on the other hand, are specialized tools designed to extract data efficiently and accurately from a website. These two components work together to obtain the relevant data from web pages.
Before initiating the web scraping process, it is essential to specify the data to be collected to prevent the acquisition of excessive information that would later need to be processed. By refining the target data, web crawlers and scrapers can efficiently navigate and extract the necessary information from websites.
The Web Scraping Process
The web scraping process can be broken down into three primary steps: making an HTTP request, parsing, and extracting data, and storing the relevant data locally. The initial stage involves crawling the internet or a specific website to identify URLs that can be processed by the scraper for further examination.
Web scraping bots adhere to three fundamental principles: HTTP request, data parsing and extraction, and data storage and formatting. By following these principles, automated web scraping tools can efficiently collect and analyze data from multiple web pages in a structured format.
HTTP Requests and Responses
HTTP (HyperText Transfer Protocol) is an application layer protocol used to facilitate communication between clients and servers over the internet. In the server-client model, data is transferred across the network from one point to another.
When the client requests data from the server, a GET response is required. The server responds to the HTTP request by providing the data. This allows the scraper to read and access HTML or XML pages.
Parsing and Extracting Data
Once the web page's code is obtained, the next step in the web scraping process is parsing and extracting data. Parsing involves breaking down the web page's code into its constituent parts, while extraction focuses on obtaining the necessary data from the website's code. The extracted data can be loaded into a database or copied into a spreadsheet for further analysis.
A scraper can extract various types of information, such as text, ratings, classes, tags, IDs, or other relevant data points. When using a scraper for specific data extraction, such as book reviews, it is essential to specify information like the book title, author name, and rating.
After the data has been extracted, it is crucial to store and format it properly to ensure its usability and comprehensibility. Recommended practices for storing and formatting data include adhering to file formats such as comma-separated values (CSV), Google Sheets, or Excel spreadsheets, documenting the data, using non-proprietary formats, and labeling columns to identify the data.
Taking into account metadata for data sets and carefully considering data storage options are also important aspects of this process.
Applications of Web Scraping
Web scraping has a wide range of applications across various industries, providing a valuable source of structured web data that can be harnessed to build and enhance business applications. From e-commerce to market research, web scraping enables businesses to extract large quantities of data from websites in a consistent and organized manner, making it an indispensable tool for data analytics.
Some applications of web scraping include monitoring a competitor's prices, tracking brand sentiment, assessing investment opportunities, and analyzing market trends. News and content monitoring through web scraping also offer an optimal solution for tracking and assembling the most essential stories from your industry.
Price Intelligence and Monitoring
Price intelligence and monitoring are essential use cases for web scraping, particularly in the e-commerce industry. By obtaining product and pricing information from competitor websites, businesses can make data-driven decisions that adapt to market changes and maintain a competitive edge.
Web scraping empowers businesses to stay informed and agile in a rapidly evolving market landscape.
Market Research and Analysis
High-quality, substantial, and deeply revealing web-scraped data are valuable assets for market research and analysis. Data extracted from websites can provide insights into customer requirements, market influences, and industry trends, enabling businesses to make informed decisions and drive growth.
In today's data-driven world, web scraping is an indispensable tool for market research and business intelligence.
Lead Generation and Marketing
Lead generation is a top challenge for marketers, but web scraping can alleviate this burden by providing structured lead lists. By collecting contact information from target audiences, such as names, job titles, email addresses, and cellphone numbers, web scraping enables businesses to pinpoint potential customers and target them with relevant marketing initiatives.
Leveraging web scraping for lead generation and marketing efforts can result in increased efficiency and a higher return on investment.
To harness the power of web scraping, various tools and techniques are available to automate the extraction of large amounts of data from websites in a structured manner. Python libraries like BeautifulSoup and Scrapy, as well as cloud-based web scraping services, are commonly used to perform web scraping tasks efficiently and effectively.
These tools and techniques offer advanced features, such as recognizing unique HTML site structures, extracting reformatting and storing data from APIs, managing cookies, and circumventing any Terms of Use that restrict or prohibit content scraping. By employing these tools and techniques, businesses can unlock the true potential of web data and gain a competitive edge in their industries.
Python Libraries: BeautifulSoup and Scrapy
Python is the most commonly used language for web scraping, and it offers powerful libraries like BeautifulSoup and Scrapy to facilitate the process. BeautifulSoup is a Python library that simplifies the extraction of data from XML and HTML documents, allowing users to parse and navigate web page structures with ease.
Scrapy, on the other hand, is a Python-based application framework that enables the crawling and extraction of structured data from the web, making it an ideal tool for data mining and information processing tasks. By utilizing these Python libraries, web scraping tasks can be executed efficiently, accurately, and with minimal effort.
Whether it's BeautifulSoup for parsing web page structures or Scrapy for crawling and extracting structured data, Python libraries provide the necessary tools to unlock the full potential of web data extraction.
Cloud-Based Web Scraping Services
Cloud-based web scraping services offer an alternative to traditional web scraping tools, providing a more flexible and scalable solution for extracting data from websites. These services are hosted on off-site servers provided by third-party vendors, offering flexible pricing options and eliminating the need to install any software on local machines.
Cloud-based web scrapers are particularly suitable for scraping large numbers of URLs, as the crawling and data extraction processes are conducted on off-site servers, reducing the load on local machines. By leveraging cloud-based web scraping services, businesses can collect and parse raw data from the web without the need for complex setup and maintenance.
Legal and Ethical Considerations
While web scraping offers numerous benefits and applications, it also raises legal and ethical considerations that must be addressed before embarking on a web scraping project. The legality of web scraping depends on various factors, such as the purpose of the scraping, the data accessed, the website's Terms of Use, and data sovereignty laws. To ensure compliance with these laws and regulations, it is important to respect the website's robots.txt file, adhere to its Terms of Service (TOS), and be aware of data protection and privacy laws.
By following best practices and being mindful of legal and ethical considerations, web scraping can be conducted in a responsible and compliant manner. However, it is essential to remain vigilant of the potential risks associated with web scraping, such as fraudulent activities, scams, intellectual property theft, and extortion.
Respecting Robots.txt and TOS
Before initiating a web scraping project, it is crucial to review the target website's robots.txt file and Terms of Service (TOS) to ensure compliance with any rules or restrictions that may be in place. The robots.txt file informs web crawlers which pages or files they are allowed or restricted from requesting from a website, while the TOS outlines the website's policies and guidelines for usage.
By respecting these guidelines, web scrapers can avoid potential legal issues and maintain a responsible and ethical approach to data extraction.
Data Protection and Privacy Laws
Data protection and privacy laws are legal frameworks designed to safeguard an individual's personal information and privacy. These laws vary from country to country and dictate the guidelines for collecting, processing, storing, and sharing personal data.
When engaging in web scraping activities, it is essential to adhere to these laws and regulations to ensure the responsible and ethical handling of personal information. By being mindful of data protection and privacy laws, web scrapers can avoid potential legal issues and maintain a responsible approach to data extraction.
Best Practices for Web Scraping
To ensure a successful and efficient web scraping project, several best practices should be followed. These include using user agents and proxies to simulate genuine users, setting a crawl rate and off-peak hours to avoid overloading the target website's server, and utilizing JavaScript (JS) rendering to handle dynamic content. By adhering to these best practices, web scrapers can overcome common challenges and enhance the overall efficiency of their data extraction efforts.
In addition to these best practices, it is crucial to remain vigilant of potential security risks associated with web scraping, such as scams, intellectual property theft, and extortion. By employing a responsible and ethical approach to web scraping, businesses can unlock the full potential of web data extraction while minimizing potential risks and legal issues.
User Agents and Proxies
User agents are strings that identify the application, operating system, and browser being used to access a website, while proxies are used to obscure the IP address of the scraper to prevent it from being blocked. Utilizing user agents and proxies is an essential best practice in web scraping, as it helps avoid detection and circumvent potential blocks or blacklists.
By rotating user agents between subsequent requests and using proxies to mask the scraper's IP address, web scrapers can maintain a consistent and successful data extraction process.
Crawl Rate and Off-Peak Hours
Another key best practice in web scraping is to set an appropriate crawl rate and schedule scraping activities during off-peak hours. By doing so, web scrapers can avoid overloading the target website's server and minimize the risk of detection by anti-scraping technologies.
This approach ensures that the web scraping process is conducted in a responsible and efficient manner, minimizing potential disruptions to the target website's operations.
JS Rendering
JavaScript (JS) rendering is a technique employed to scrape websites that use JavaScript for content rendering. By leveraging JS rendering, web scrapers can handle dynamic content loading, interactive forms, and animations, ensuring that all relevant data is captured and processed.
While JS rendering offers several advantages, such as faster page loading speeds and improved user experience, it also presents some potential security risks and increased complexity. Therefore, it is essential to weigh the benefits and drawbacks of JS rendering when planning a web scraping project.
Summary
Web scraping offers incredible potential for businesses and individuals to harness the vast data resources of the internet, providing valuable insights and a competitive edge in various industries. By understanding the intricacies of web scraping, employing powerful tools and techniques, and adhering to best practices and legal considerations, web scraping can be conducted in a responsible and efficient manner. Unleash the power of web scraping and unlock a world of data-driven insights to propel your business forward.
Frequently Asked Questions
What is web scraping used for?
Web scraping is a powerful tool used by businesses to extract important data and information from websites. It can be used to collect a range of data, including contact information, pricing data, user reviews, and product availability.
Companies use web scraping to gain valuable insights into their markets and competitors.
Is web scraping legal?
Overall, web scraping is generally legal as long as it involves data that is publicly available. However, it is important to adhere to international regulations to protect personal data, intellectual property, and confidential information.
What is an example of web scraping?
Web scraping is a powerful technique used to extract and analyze data from websites. An example of this would be gathering product information from an ecommerce website and transferring it into an Excel spreadsheet, making the data easier to use.
Automated tools can make web scraping more efficient, but manual web scraping is still possible.
Do hackers use web scraping?
Yes, hackers do use web scraping as a tool to extract data from websites. It is often used in combination with other methods of acquiring information, allowing them to collect data in bulk from multiple sources in order to carry out their illegal activities.
WebScraping.AI role
WebScraping.AI provides tools for software developers working on web scraping projects. We solve a few most frequent technical issues of web scraping:
We automatically manage proxies to allow your scrapper not being blocked because of too many requests from the same IP.
Our API renders scraped pages using a real Chrome browser. In the modern web, most of the pages use JavaScript to show their content, so without a real browser, you won't see the real page content.
You can request our API to return only a needed part of the target page, and we will handle HTML parsing on our side.
That allows developers to focus on working with data instead of continually fixing technical issues.
You might also enjoy
In order to access the true value of the internet at scale, you need to make use of web scraping – a technology that crawls the internet and pulls key data for you to aggregate into valuable insights.
Posted by
Vlad Mishkin
|
February 5, 2023
Web scraping remains one of the most powerful ways to collect large datasets about a wide range of things – so powerful in fact, it’s natural to wonder about its legality.
Posted by
Vlad Mishkin
|
February 5, 2023