@spencerboucher/switchyard 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -2
- package/dist/switchyard.mjs +7073 -5396
- package/dist/terminal/holder.js +30 -4
- package/package.json +1 -1
- package/web-dist/assets/AutomationView-BsTwLnMp.js +2 -0
- package/web-dist/assets/{AutomationView-D7Syv1En.js.map → AutomationView-BsTwLnMp.js.map} +1 -1
- package/web-dist/assets/Card-CAFxHoHd.js +2 -0
- package/web-dist/assets/Card-CAFxHoHd.js.map +1 -0
- package/web-dist/assets/Checkbox-rDvnQnxc.js +2 -0
- package/web-dist/assets/Checkbox-rDvnQnxc.js.map +1 -0
- package/web-dist/assets/Copy-D8xhl7eJ.js +2 -0
- package/web-dist/assets/{Copy-B6XSAIUd.js.map → Copy-D8xhl7eJ.js.map} +1 -1
- package/web-dist/assets/DangerZone-og55TRug.js +2 -0
- package/web-dist/assets/DangerZone-og55TRug.js.map +1 -0
- package/web-dist/assets/{Field-D-Ty7fKT.js → Field-Dbg_8KTt.js} +2 -2
- package/web-dist/assets/{Field-D-Ty7fKT.js.map → Field-Dbg_8KTt.js.map} +1 -1
- package/web-dist/assets/{InteractionCard-DF1EcSpm.js → InteractionCard-Yu5wgLC3.js} +4 -4
- package/web-dist/assets/{InteractionCard-DF1EcSpm.js.map → InteractionCard-Yu5wgLC3.js.map} +1 -1
- package/web-dist/assets/Menu-euseM8yR.js +2 -0
- package/web-dist/assets/Menu-euseM8yR.js.map +1 -0
- package/web-dist/assets/Overlay-BNPvMjLX.js +2 -0
- package/web-dist/assets/{Overlay-DUQwh6_b.js.map → Overlay-BNPvMjLX.js.map} +1 -1
- package/web-dist/assets/Priority-Ca1B2yFr.js +2 -0
- package/web-dist/assets/{Priority-CHmzfoHg.js.map → Priority-Ca1B2yFr.js.map} +1 -1
- package/web-dist/assets/{SegmentedControl-C_hEVQMB.js → SegmentedControl-D2d-NEr-.js} +2 -2
- package/web-dist/assets/{SegmentedControl-C_hEVQMB.js.map → SegmentedControl-D2d-NEr-.js.map} +1 -1
- package/web-dist/assets/{Select-Cfql4Nwu.js → Select-C9L1HKMm.js} +2 -2
- package/web-dist/assets/{Select-Cfql4Nwu.js.map → Select-C9L1HKMm.js.map} +1 -1
- package/web-dist/assets/StatusChip-BYuVxYS7.js +2 -0
- package/web-dist/assets/StatusChip-BYuVxYS7.js.map +1 -0
- package/web-dist/assets/{Switch-DBfzmqkm.js → Switch-DAcUcSbH.js} +2 -2
- package/web-dist/assets/{Switch-DBfzmqkm.js.map → Switch-DAcUcSbH.js.map} +1 -1
- package/web-dist/assets/{Tabs-BNuL3_Et.js → Tabs-xtagjtA5.js} +2 -2
- package/web-dist/assets/{Tabs-BNuL3_Et.js.map → Tabs-xtagjtA5.js.map} +1 -1
- package/web-dist/assets/{TextArea-CKybrQyn.js → TextArea-CKGHwURx.js} +2 -2
- package/web-dist/assets/{TextArea-CKybrQyn.js.map → TextArea-CKGHwURx.js.map} +1 -1
- package/web-dist/assets/{TextLink-OzzyP2-p.js → TextLink-Bub7sMxr.js} +2 -2
- package/web-dist/assets/{TextLink-OzzyP2-p.js.map → TextLink-Bub7sMxr.js.map} +1 -1
- package/web-dist/assets/attention-CI4dHY81.js +2 -0
- package/web-dist/assets/{attention-V86Gye3I.js.map → attention-CI4dHY81.js.map} +1 -1
- package/web-dist/assets/auth-308hUVgi.js +2 -0
- package/web-dist/assets/auth-308hUVgi.js.map +1 -0
- package/web-dist/assets/automations-BzpsJoa3.js +2 -0
- package/web-dist/assets/{automations-Cw5Gacgm.js.map → automations-BzpsJoa3.js.map} +1 -1
- package/web-dist/assets/bell-DSwa2PAb.js +2 -0
- package/web-dist/assets/bell-DSwa2PAb.js.map +1 -0
- package/web-dist/assets/board-CeJxBVHC.js +10 -0
- package/web-dist/assets/board-CeJxBVHC.js.map +1 -0
- package/web-dist/assets/code-DkNQvMI9.js +12 -0
- package/web-dist/assets/code-DkNQvMI9.js.map +1 -0
- package/web-dist/assets/describe-CVXeUClF.js +5 -0
- package/web-dist/assets/{describe-D6KLGKWa.js.map → describe-CVXeUClF.js.map} +1 -1
- package/web-dist/assets/enroll-jnKygG4L.js +2 -0
- package/web-dist/assets/{enroll-DwT7AcuS.js.map → enroll-jnKygG4L.js.map} +1 -1
- package/web-dist/assets/index-BHGZTS2e.js +16 -0
- package/web-dist/assets/index-BHGZTS2e.js.map +1 -0
- package/web-dist/assets/index-D2ml031z.css +2 -0
- package/web-dist/assets/{more-DQR5uu1c.js → more-DvKHMdBk.js} +2 -2
- package/web-dist/assets/{more-DQR5uu1c.js.map → more-DvKHMdBk.js.map} +1 -1
- package/web-dist/assets/queue-B2Vl0uSh.js +2 -0
- package/web-dist/assets/{queue-DUg1rS8t.js.map → queue-B2Vl0uSh.js.map} +1 -1
- package/web-dist/assets/repo-BDS8RBxq.js +2 -0
- package/web-dist/assets/repo-BDS8RBxq.js.map +1 -0
- package/web-dist/assets/settings-CLt7x9u8.js +8 -0
- package/web-dist/assets/settings-CLt7x9u8.js.map +1 -0
- package/web-dist/assets/states-C773NlHo.js +56 -0
- package/web-dist/assets/states-C773NlHo.js.map +1 -0
- package/web-dist/assets/{terminal-login-S5CAd5xA.js → terminal-login-BK5UjUir.js} +2 -2
- package/web-dist/assets/{terminal-login-S5CAd5xA.js.map → terminal-login-BK5UjUir.js.map} +1 -1
- package/web-dist/assets/useBreakpoint-BphHBrzF.js +2 -0
- package/web-dist/assets/useBreakpoint-BphHBrzF.js.map +1 -0
- package/web-dist/assets/useNow-Cm-tdyod.js +2 -0
- package/web-dist/assets/{useNow-Dj7oEiwn.js.map → useNow-Cm-tdyod.js.map} +1 -1
- package/web-dist/assets/{useResource-CDGSq2At.js → useResource-BBqCoY2q.js} +2 -2
- package/web-dist/assets/{useResource-CDGSq2At.js.map → useResource-BBqCoY2q.js.map} +1 -1
- package/web-dist/index.html +7 -3
- package/web-dist/sw.js +1 -1
- package/web-dist/sw.js.map +1 -1
- package/web-dist/assets/AutomationView-D7Syv1En.js +0 -2
- package/web-dist/assets/Checkbox-D6tRfEeI.js +0 -2
- package/web-dist/assets/Checkbox-D6tRfEeI.js.map +0 -1
- package/web-dist/assets/Copy-B6XSAIUd.js +0 -2
- package/web-dist/assets/DangerZone-DfYlxDC1.js +0 -2
- package/web-dist/assets/DangerZone-DfYlxDC1.js.map +0 -1
- package/web-dist/assets/Menu-BfOszNC4.js +0 -2
- package/web-dist/assets/Menu-BfOszNC4.js.map +0 -1
- package/web-dist/assets/Overlay-DUQwh6_b.js +0 -2
- package/web-dist/assets/Priority-CHmzfoHg.js +0 -2
- package/web-dist/assets/attention-V86Gye3I.js +0 -2
- package/web-dist/assets/automations-Cw5Gacgm.js +0 -2
- package/web-dist/assets/board-B8X7TYYR.js +0 -10
- package/web-dist/assets/board-B8X7TYYR.js.map +0 -1
- package/web-dist/assets/code-BKroYJmR.js +0 -12
- package/web-dist/assets/code-BKroYJmR.js.map +0 -1
- package/web-dist/assets/describe-D6KLGKWa.js +0 -5
- package/web-dist/assets/enroll-DwT7AcuS.js +0 -2
- package/web-dist/assets/index-B3F7WcYf.css +0 -2
- package/web-dist/assets/index-hxvDvCS7.js +0 -12
- package/web-dist/assets/index-hxvDvCS7.js.map +0 -1
- package/web-dist/assets/queue-DUg1rS8t.js +0 -2
- package/web-dist/assets/repo-XzzzEI0d.js +0 -2
- package/web-dist/assets/repo-XzzzEI0d.js.map +0 -1
- package/web-dist/assets/search-C6cn5WOo.js +0 -2
- package/web-dist/assets/search-C6cn5WOo.js.map +0 -1
- package/web-dist/assets/settings-DyUu0tJM.js +0 -8
- package/web-dist/assets/settings-DyUu0tJM.js.map +0 -1
- package/web-dist/assets/states-ZhrxQa3K.js +0 -56
- package/web-dist/assets/states-ZhrxQa3K.js.map +0 -1
- package/web-dist/assets/useNow-Dj7oEiwn.js +0 -2
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import{_ as e,m as t,t as n}from"./jsx-runtime-D13aM9HY.js";import{St as r,_t as i,et as a,v as o,vt as s,yt as c,z as l}from"./states-ZhrxQa3K.js";import{X as u,b as d}from"./index-hxvDvCS7.js";var f=e(t(),1),p=n();function m({count:e}){return e>0?(0,p.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-sm text-warning`,children:[(0,p.jsx)(o,{"aria-hidden":!0,className:`size-4 shrink-0`}),e===1?`1 failure`:`${e} failures`]}):(0,p.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-sm text-muted`,children:[(0,p.jsx)(u,{"aria-hidden":!0,className:`size-4 shrink-0`}),`No failures`]})}var h=(e,t=``)=>`/api/automations/${encodeURIComponent(e)}${t}`,g=r()(e=>({byId:{},deleted:{},put:t=>e(e=>({byId:{...e.byId,[t.id]:t}})),putMany:t=>e(e=>{let n={...e.byId};for(let e of t)n[e.id]=e;return{byId:n}}),remove:t=>e(e=>{let n={...e.byId};return delete n[t],{byId:n,deleted:{...e.deleted,[t]:!0}}})}));function _(e,t){return e?t&&t.updatedAt>e.updatedAt?t:e:t}function ee(){let e=l(e=>e.automations),t=g(e=>e.byId),n=g(e=>e.deleted);return(0,f.useMemo)(()=>{let r={};for(let i of new Set([...Object.keys(e),...Object.keys(t)])){if(n[i])continue;let a=_(e[i],t[i]);a&&(r[i]=a)}return r},[e,t,n])}function te(e){let t=l(t=>e?t.automations[e]:void 0),n=g(t=>e?t.byId[e]:void 0);return g(t=>e?t.deleted[e]:void 0)?void 0:_(t,n)}function ne(){let[e,t]=(0,f.useState)({});return{busy:e,toggle:(0,f.useCallback)(async(e,n)=>{t(t=>({...t,[e.id]:!0}));try{let t=await i(h(e.id),{enabled:n});t&&typeof t==`object`&&`id`in t&&g.getState().put(t),d.success(`${e.name} ${n?`enabled`:`disabled`}`)}catch(t){d.error(`Could not ${n?`enable`:`disable`} ${e.name}: ${c(t)}`)}finally{t(t=>({...t,[e.id]:!1}))}},[])}}function re(e){let[t,n]=(0,f.useState)({});return{busy:t,run:(0,f.useCallback)(async t=>{n(e=>({...e,[t.id]:!0}));try{let n=await s(h(t.id,`/run`)),r=n&&typeof n==`object`?n.state:void 0;d.success(r&&r!==`fired`?`${t.name}: occurrence recorded (${r.replace(/_/g,` `)})`:`${t.name} started`),e?.()}catch(e){d.error(`Could not run ${t.name}: ${c(e)}`)}finally{n(e=>({...e,[t.id]:!1}))}},[e])}}var ie={manual:`Manual`,once:`Once`,cron:`Schedule`,webhook:`Webhook`,dependency:`Dependency`},v=[{value:`fresh`,label:`Fresh`,explanation:`Fresh: a new task per occurrence`},{value:`continue`,label:`Continue`,explanation:`Continue: reuse the task with the same grouping key`},{value:`watch`,label:`Watch`,explanation:`Watch: only raises attention when something relevant changed`}],y=[{value:`skip`,label:`Skip`,explanation:`Skip: drop the occurrence while earlier work is still open`},{value:`queue_one`,label:`Queue one`,explanation:`Queue one: keep a single pending occurrence and fire it when the open work ends`},{value:`append`,label:`Append`,explanation:`Append: add the new objective to the open task (as a follow-up if it is running)`}],ae=[{value:`skip`,label:`Skip`,explanation:`Skip: occurrences missed while the coordinator was down are recorded and skipped`},{value:`run_once`,label:`Run once`,explanation:`Run once: on return, fire the newest missed occurrence once`}];function b(e){return v.find(t=>t.value===e)?.label??e}var x=[`{{date}}`,`{{time}}`,`{{occurrence}}`,`{{payload.<path>}}`];function S(e){return e.length<=1?e[0]??``:`${e.slice(0,-1).join(`, `)} and ${e[e.length-1]}`}function C(e){return String(e).padStart(2,`0`)}function w(e){let t=e%100;if(t>=11&&t<=13)return`${e}th`;switch(e%10){case 1:return`${e}st`;case 2:return`${e}nd`;case 3:return`${e}rd`;default:return`${e}th`}}function T(e){return e&&e[0].toUpperCase()+e.slice(1)}function E(e){return e.split(`
|
|
2
|
-
`).map(e=>e.trim()).filter(e=>e.length>0)}var D=[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],O=[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],k=[{name:`Minute`,min:0,max:59},{name:`Hour`,min:0,max:23},{name:`Day of month`,min:1,max:31},{name:`Month`,min:1,max:12,names:O.map(e=>e.slice(0,3).toLowerCase())},{name:`Day of week`,min:0,max:7,names:D.map(e=>e.slice(0,3).toLowerCase())}];function A(e,t){let n=e.toLowerCase();if(t.names){let e=t.names.indexOf(n);if(e>=0)return t.min+e}if(!/^\d+$/.test(e))return`"${e}" is not a number`;let r=Number(e);return r<t.min||r>t.max?`${r} is out of range ${t.min}–${t.max}`:r}function oe(e,t){if(e===`*`||e===`?`)return{any:!0,values:[],step:null,extended:!1};if(/[LW#]/i.test(e)&&!t.names?.some(t=>e.toLowerCase().includes(t)))return/^[0-9A-Za-z*?,\-/#]+$/.test(e)?{any:!1,values:[],step:null,extended:!0}:`"${e}" is not valid`;let n=e.split(`,`),r=new Set,i=null;for(let e of n){if(!e)return`empty list item`;let[a,o,s]=e.split(`/`);if(s!==void 0)return`"${e}" has more than one step`;let c=1;if(o!==void 0){if(!/^\d+$/.test(o)||Number(o)<1)return`"${o}" is not a valid step`;c=Number(o)}let l,u;if(a===`*`||a===`?`)l=t.min,u=t.max;else if(a?.includes(`-`)){let[e,n]=a.split(`-`),r=A(e??``,t),i=A(n??``,t);if(typeof r==`string`)return r;if(typeof i==`string`)return i;if(r>i)return`range ${a} runs backwards`;l=r,u=i}else{let e=A(a??``,t);if(typeof e==`string`)return e;l=e,u=o===void 0?e:t.max}for(let e=l;e<=u;e+=c)r.add(e);n.length===1&&o!==void 0&&!a?.includes(`-`)&&(i={every:c,start:l})}let a=[...r].sort((e,t)=>e-t);t.max===7&&(a=[...new Set(a.map(e=>e%7))].sort((e,t)=>e-t));let o=t.max===7?7:t.max-t.min+1;return a.length===o&&!i?{any:!0,values:[],step:null,extended:!1}:{any:!1,values:a,step:i,extended:!1}}function j(e){let t=e.trim();if(!t)return`Enter a cron expression`;let n=t.split(/\s+/);if(n.length!==5)return`Expected 5 fields (minute hour day-of-month month day-of-week), got ${n.length}`;let r=[];for(let e=0;e<5;e++){let t=k[e],i=oe(n[e],t);if(typeof i==`string`)return`${t.name}: ${i}`;r.push(i)}return r}function M(e){let t=j(e);return typeof t==`string`?t:null}function se(e){if(!e.trim())return`Enter a timezone`;try{return new Intl.DateTimeFormat(void 0,{timeZone:e.trim()}),null}catch{return`Unknown timezone "${e}"`}}function N(e){for(let t=1;t<e.length;t++)if(e[t]!==e[t-1]+1)return!1;return e.length>0}function P(e,t){if(e.any&&t.any)return{kind:`freq`,text:`Every minute`};if(e.step&&e.step.start===0&&t.any)return{kind:`freq`,text:e.step.every===1?`Every minute`:`Every ${e.step.every} minutes`};if(e.any)return t.step||t.values.length===0?null:N(t.values)?{kind:`freq`,text:`Every minute from ${C(t.values[0])}:00 to ${C(t.values[t.values.length-1])}:59`}:null;if(t.any)return e.step?null:e.values.length===1&&e.values[0]===0?{kind:`freq`,text:`Every hour`}:{kind:`freq`,text:`Every hour at ${S(e.values.map(e=>`:${C(e)}`))}`};if(t.step&&t.step.start===0&&e.values.length===1&&!e.step){let n=e.values[0]===0?``:` at :${C(e.values[0])}`;return{kind:`freq`,text:t.step.every===1?`Every hour${n}`:`Every ${t.step.every} hours${n}`}}if(e.values.length*t.values.length<=6){let n=[];for(let r of t.values)for(let t of e.values)n.push(`${C(r)}:${C(t)}`);return{kind:`at`,text:S(n)}}if(!N(t.values))return null;let n=t.values[0],r=t.values[t.values.length-1];if(e.step&&e.step.start===0)return{kind:`freq`,text:`Every ${e.step.every} minutes from ${C(n)}:00 to ${C(r)}:59`};if(e.values.length===1){let t=C(e.values[0]);return{kind:`freq`,text:`Every hour from ${C(n)}:${t} to ${C(r)}:${t}`}}return null}function F(e,t){return(e+6)%7-(t+6)%7}function I(e,t,n){if(!e.any&&!n.any)return null;let r=t.any?null:S(t.values.map(e=>O[e-1])),i=r?` in ${r}`:``;if(!n.any){let e=[...n.values].sort(F),t=e.join(`,`);if(t===`1,2,3,4,5`)return{lead:`Every weekday${i}`,qual:` on weekdays${i}`};if(t===`6,0`)return{lead:`Every Saturday and Sunday${i}`,qual:` on weekends${i}`};let r=e.map(e=>D[e]);return{lead:`Every ${S(r)}${i}`,qual:` on ${S(r.map(e=>`${e}s`))}${i}`}}if(!e.any){if(e.values.length>5)return null;let t=S(e.values.map(w)),n=r||`every month`;return{lead:`On the ${t} of ${n}`,qual:` on the ${t} of ${n}`}}return{lead:`Every day${i}`,qual:i}}function L(e,t){let n=j(e);if(typeof n==`string`||n.some(e=>e.extended))return null;let[r,i,a,o,s]=n,c=P(r,i),l=I(a,o,s);if(!c||!l)return null;let u=c.kind===`at`?`${l.lead} at ${c.text}`:`${c.text}${l.qual}`;return t?`${u} (${t})`:u}function R(e,t){return L(e,t)??`Cron ${e.trim()} (${t})`}function z(e){let t=new Date(e);return Number.isNaN(t.getTime())?e:t.toLocaleString(void 0,{dateStyle:`medium`,timeStyle:`short`})}function B(e,t={}){let n=t.formatDate??z;switch(e.kind){case`manual`:return`Manual`;case`once`:return e.at&&!Number.isNaN(Date.parse(e.at))?`Once at ${n(e.at)}`:`Once (no time chosen)`;case`cron`:return R(e.expr,e.timezone);case`webhook`:return`Webhook`;case`dependency`:{let n=e.taskId?t.taskTitle?.(e.taskId):void 0;return n?`When "${n}" is done`:e.taskId?`When a deleted task is done`:`When a task is done`}}}function V(e,t){let n=e.trigger;switch(n.kind){case`manual`:return`When run manually`;case`webhook`:{let t=e.filters.filter(e=>e.path.trim());return t.length===0?`When a webhook is received`:`When a webhook is received where ${S(t.map(e=>`${e.path.trim()} = "${e.equals}"`))}`}default:return B(n,t)}}function H(e,t={}){let n=e.template.title.trim()||`Untitled task`,r=t.projectName?` in ${t.projectName}`:``,i=t.hostName?` on ${t.hostName}`:` on the project's default host`,a=t.profileName?` with profile ${t.profileName}`:``,o;switch(e.mode){case`continue`:{let t=e.groupingKey?.trim();o=t?`continue the task grouped by "${t}" (or create "${n}")`:`continue the matching task (or create "${n}")`;break}case`watch`:o=`create a watch task "${n}" that only raises attention when something relevant changed`;break;default:o=`create a fresh task "${n}"`}let s=[`${V(e,t)}, ${o}${r}${i}${a}`];if(s.push(e.overlap===`skip`?`skip if previous work is still open`:e.overlap===`queue_one`?`queue one occurrence if previous work is still open`:`append to the open task if previous work is still open`),(e.trigger.kind===`cron`||e.trigger.kind===`once`)&&s.push(e.missed===`skip`?`skip missed runs`:`run missed runs once on return`),e.continuation.enabled){let t=e.continuation;s.push(`continue automatically up to ${t.maxContinuations} times within ${t.maxElapsedMinutes} minutes`)}let c=e.completion.checks;return c&&c.length>0&&s.push(`run ${c.length===1?`1 check`:`${c.length} checks`}`),s.push(e.completion.requireHumanReview?`requires human review`:`no human review required`),T(s.join(`; `))}function U(){try{return Intl.DateTimeFormat().resolvedOptions().timeZone||`UTC`}catch{return`UTC`}}function W(e={}){return{name:``,enabled:!0,projectId:e.projectId??``,triggerKind:`manual`,onceAt:``,cronExpr:`0 9 * * 1-5`,cronTimezone:e.timezone??U(),dependencyTaskId:``,filters:[],title:``,objective:``,criteria:``,priority:2,hostId:``,profileId:``,mode:`fresh`,groupingKey:``,overlap:`skip`,missed:`skip`,continuationEnabled:!1,continuationObjective:``,maxContinuations:`5`,maxElapsedMinutes:`60`,maxTokens:``,maxCostUsd:``,checks:``,requireHumanReview:!0}}function G(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:`${t.getFullYear()}-${C(t.getMonth()+1)}-${C(t.getDate())}T${C(t.getHours())}:${C(t.getMinutes())}`}function K(e){if(!e)return``;let t=new Date(e);return Number.isNaN(t.getTime())?``:t.toISOString()}function ce(e,t={}){let n=W({projectId:e.projectId,timezone:t.timezone}),r=e.trigger,i=e.continuation;return{...n,name:e.name,enabled:e.enabled,triggerKind:r.kind,onceAt:r.kind===`once`?G(r.at):``,cronExpr:r.kind===`cron`?r.expr:n.cronExpr,cronTimezone:r.kind===`cron`?r.timezone:n.cronTimezone,dependencyTaskId:r.kind===`dependency`?r.taskId:``,filters:e.filters.map(e=>({...e})),title:e.template.title,objective:e.template.objective,criteria:e.template.acceptanceCriteria.join(`
|
|
3
|
-
`),priority:e.template.priority,hostId:e.hostId??``,profileId:e.profileId??``,mode:e.mode,groupingKey:e.groupingKey??``,overlap:e.overlap,missed:e.missed,continuationEnabled:i.enabled,continuationObjective:i.enabled?i.objective:``,maxContinuations:i.enabled?String(i.maxContinuations):n.maxContinuations,maxElapsedMinutes:i.enabled?String(i.maxElapsedMinutes):n.maxElapsedMinutes,maxTokens:i.enabled&&i.maxTokens!==null?String(i.maxTokens):``,maxCostUsd:i.enabled&&i.maxCostUsd!==null?String(i.maxCostUsd):``,checks:e.completion.checks?e.completion.checks.join(`
|
|
4
|
-
`):``,requireHumanReview:e.completion.requireHumanReview}}function q(e){return e.trim()===``?NaN:Number(e.trim())}function J(e){return e.trim()===``?null:Number(e.trim())}function Y(e){switch(e.triggerKind){case`manual`:return{kind:`manual`};case`once`:return{kind:`once`,at:K(e.onceAt)};case`cron`:return{kind:`cron`,expr:e.cronExpr.trim(),timezone:e.cronTimezone.trim()};case`webhook`:return{kind:`webhook`};case`dependency`:return{kind:`dependency`,taskId:e.dependencyTaskId}}}function X(e){let t=E(e.checks);return{name:e.name.trim(),enabled:e.enabled,projectId:e.projectId,trigger:Y(e),filters:e.filters.filter(e=>e.path.trim()||e.equals.trim()).map(e=>({path:e.path.trim(),equals:e.equals})),template:{title:e.title.trim(),objective:e.objective,acceptanceCriteria:E(e.criteria),priority:e.priority},hostId:e.hostId||null,profileId:e.profileId||null,mode:e.mode,groupingKey:e.groupingKey.trim()||null,overlap:e.overlap,missed:e.missed,continuation:e.continuationEnabled?{enabled:!0,objective:e.continuationObjective.trim(),maxContinuations:q(e.maxContinuations),maxElapsedMinutes:q(e.maxElapsedMinutes),maxTokens:J(e.maxTokens),maxCostUsd:J(e.maxCostUsd)}:{enabled:!1},completion:{checks:t.length>0?t:null,requireHumanReview:e.requireHumanReview}}}var le={name:`name`,enabled:`enabled`,projectId:`projectId`,trigger:`triggerKind`,"trigger.kind":`triggerKind`,"trigger.at":`onceAt`,"trigger.expr":`cronExpr`,"trigger.timezone":`cronTimezone`,"trigger.taskId":`dependencyTaskId`,"template.title":`title`,"template.objective":`objective`,"template.acceptanceCriteria":`criteria`,"template.priority":`priority`,hostId:`hostId`,profileId:`profileId`,mode:`mode`,groupingKey:`groupingKey`,overlap:`overlap`,missed:`missed`,"continuation.objective":`continuationObjective`,"continuation.maxContinuations":`maxContinuations`,"continuation.maxElapsedMinutes":`maxElapsedMinutes`,"continuation.maxTokens":`maxTokens`,"continuation.maxCostUsd":`maxCostUsd`,"completion.checks":`checks`,"completion.requireHumanReview":`requireHumanReview`};function Z(e){let t=e.map(String);if(t[0]===`filters`&&t.length>=3)return`filters.${Number(t[1])}.${t[2]===`equals`?`equals`:`path`}`;if(t[0]===`template`&&t[1]===`acceptanceCriteria`)return`criteria`;if(t[0]===`completion`&&t[1]===`checks`)return`checks`;for(let e=t.length;e>0;e--){let n=le[t.slice(0,e).join(`.`)];if(n)return n}return`form`}function Q(e,t,n,r){let i=q(e);return!Number.isInteger(i)||i<t||i>n?`${r} must be a whole number from ${t} to ${n}`:null}function ue(e){let t={},n=(e,n)=>{n&&!t[e]&&(t[e]=n)};switch(e.name.trim()||n(`name`,`Name is required`),e.projectId||n(`projectId`,`Choose a project`),e.title.trim()||n(`title`,`Task title is required`),e.triggerKind){case`once`:K(e.onceAt)||n(`onceAt`,`Choose a date and time`);break;case`cron`:n(`cronExpr`,M(e.cronExpr)),n(`cronTimezone`,se(e.cronTimezone));break;case`dependency`:e.dependencyTaskId||n(`dependencyTaskId`,`Choose the task to wait for`)}if(e.filters.forEach((e,t)=>{!e.path.trim()&&e.equals.trim()&&n(`filters.${t}.path`,`Enter a payload path`)}),e.mode===`continue`&&!e.groupingKey.trim()&&n(`groupingKey`,`A grouping key is required to continue an existing task`),e.continuationEnabled){if(e.continuationObjective.trim()||n(`continuationObjective`,`An objective is required when continuation is on`),n(`maxContinuations`,Q(e.maxContinuations,1,50,`Max continuations`)),n(`maxElapsedMinutes`,Q(e.maxElapsedMinutes,1,1440,`Max elapsed minutes`)),e.maxTokens.trim()){let t=q(e.maxTokens);(!Number.isInteger(t)||t<=0)&&n(`maxTokens`,`Max tokens must be a positive whole number`)}if(e.maxCostUsd.trim()){let t=q(e.maxCostUsd);(!Number.isFinite(t)||t<=0)&&n(`maxCostUsd`,`Max cost must be a positive amount`)}}let r=X(e),i=a.safeParse(r);if(!i.success)for(let e of i.error.issues)n(Z(e.path),e.message);return{input:i.success&&Object.keys(t).length===0?i.data:null,errors:t}}function $(e){return e.scheduledFor??e.createdAt}function de(...e){let t=new Map;for(let n of e)for(let e of n??[])t.set(e.id,e);return[...t.values()].sort((e,t)=>t.createdAt.localeCompare(e.createdAt)||$(t).localeCompare($(e)))}function fe(e){if(Array.isArray(e))return e;if(e&&typeof e==`object`){let t=e;if(Array.isArray(t.items))return t.items;if(Array.isArray(t.occurrences))return t.occurrences}return[]}function pe(e,t){return`curl -X POST -H 'Authorization: Bearer ${e}' -H 'Content-Type: application/json' -d '{}' ${t}`}export{m as C,ee as D,te as E,re as O,ue as S,g as T,b as _,ie as a,H as b,B as c,W as d,Z as f,de as g,U as h,x as i,ne as k,ce as l,K as m,v as n,pe as o,z as p,y as r,L as s,ae as t,X as u,fe as v,h as w,M as x,$ as y};
|
|
5
|
-
//# sourceMappingURL=describe-D6KLGKWa.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{_ as e,a as t,f as n,m as r,n as i,t as a}from"./jsx-runtime-D13aM9HY.js";import{bt as o,c as s,d as c,gt as l,n as u,p as d,v as f,vt as p}from"./states-ZhrxQa3K.js";import{t as m}from"./key-round-VDbE9E4X.js";import{Q as h,nt as g,r as _,tt as v}from"./index-hxvDvCS7.js";import{t as y}from"./TextLink-OzzyP2-p.js";import{a as b,c as x,i as S,l as C,n as w,o as T,r as E,s as D,t as O,u as k}from"./logic-B46fwD-8.js";var A={name:`log-in`,size:24,node:[[`path`,{d:`m10 17 5-5-5-5`,key:`1bsop3`}],[`path`,{d:`M15 12H3`,key:`6jk70r`}],[`path`,{d:`M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4`,key:`u53s6r`}]]};A.node;var j=i(A),M=e(r(),1),N=a();function P(){let e=new URLSearchParams(location.hash.replace(/^#/,``)),t=new URLSearchParams(location.search);return e.get(`token`)??t.get(`token`)}function F(){let e=n(),[r]=t(),i=r.get(`next`),a=(0,M.useMemo)(P,[]),l=g(e=>e.status),u=g(e=>e.signedOutReason),d=(0,M.useMemo)(()=>E(),[]),[f,y]=(0,M.useState)(!1),[x,S]=(0,M.useState)(null);return(0,M.useEffect)(()=>{a&&history.replaceState(history.state,``,location.pathname+location.search)},[a]),(0,M.useEffect)(()=>{!a&&l===`authenticated`&&e(v(i),{replace:!0})},[a,l,i,e]),!a&&l===`checking`?(0,N.jsx)(s,{label:`Checking this device…`}):(0,N.jsx)(`div`,{className:`flex min-h-dvh items-start justify-center px-4 safe-pt-10 safe-pb-10 sm:items-center`,children:(0,N.jsxs)(`div`,{className:`w-full max-w-sm rounded-xl border border-border bg-surface p-5 shadow-sm`,children:[(0,N.jsxs)(`div`,{className:`mb-4 flex items-center gap-3`,children:[(0,N.jsx)(`img`,{src:`/icon.svg`,alt:``,className:`size-10 rounded-lg`}),(0,N.jsxs)(`div`,{children:[(0,N.jsx)(`h1`,{className:`text-lg font-semibold`,children:`Switchyard`}),(0,N.jsx)(`p`,{className:`text-sm text-muted`,children:a?`Sign in this browser`:`Sign in`})]})]}),u&&(0,N.jsx)(`p`,{role:`status`,className:`mb-3 rounded-md bg-warning-soft px-3 py-2 text-sm`,children:u}),a?(0,N.jsxs)(`form`,{onSubmit:async t=>{if(t.preventDefault(),a){y(!0),S(null);try{await p(`/api/enroll`,{token:a,name:d.slice(0,80),kind:_()?`pwa`:`browser`}),await h()===`authenticated`?e(v(i),{replace:!0}):S({code:`internal`,message:`Signed in, but the coordinator did not accept the new credential. Try again.`})}catch(e){let t=o(e)?e.code:`internal`;S({code:t,message:O[t]??(e instanceof Error?e.message:String(e))})}finally{y(!1)}}},className:`flex flex-col gap-3`,noValidate:!0,children:[(0,N.jsxs)(`p`,{className:`text-sm`,children:[`This single-use link signs in this browser as “`,d,`”. You can rename it in Settings › Devices.`]}),x&&(0,N.jsxs)(`div`,{role:`alert`,className:`rounded-md border border-border bg-danger-soft px-3 py-2 text-sm`,children:[(0,N.jsx)(`div`,{className:`font-medium`,children:b(x.code)}),(0,N.jsx)(`div`,{className:`text-muted`,children:x.message})]}),(0,N.jsx)(c,{type:`submit`,variant:`primary`,"data-testid":`signin-link`,busy:f,disabled:x?.code===`enrollment_expired`||x?.code===`enrollment_used`,icon:(0,N.jsx)(m,{className:`size-4`}),children:`Sign in`})]}):(0,N.jsx)(R,{next:i})]})})}var I=()=>_()?`pwa`:`browser`;function L({title:e,children:t}){return(0,N.jsxs)(`div`,{role:`alert`,className:`rounded-md border border-border bg-danger-soft px-3 py-2 text-sm`,children:[(0,N.jsxs)(`div`,{className:`flex items-center gap-1.5 font-medium`,children:[(0,N.jsx)(f,{"aria-hidden":!0,className:`size-4 shrink-0`}),e]}),(0,N.jsx)(`div`,{className:`break-words text-muted`,children:t})]})}function R({next:e}){let r=n(),i=(0,M.useMemo)(()=>E().slice(0,80),[]),[a,f]=t(),[g,y]=(0,M.useState)(null),[b,x]=(0,M.useState)(null),[w,T]=(0,M.useState)(0),[D,O]=(0,M.useState)(null),[A,P]=(0,M.useState)(()=>{let e=a.get(`error`);return e?{code:e,message:S(e,a.get(`detail`))}:null}),[F,R]=(0,M.useState)(null),B=(0,M.useRef)(null),V=C();(0,M.useEffect)(()=>{if(!a.has(`error`)&&!a.has(`detail`))return;let e=new URLSearchParams(a);e.delete(`error`),e.delete(`detail`),f(e,{replace:!0})},[]),(0,M.useEffect)(()=>{let e=new AbortController;return x(null),l(`/api/setup`,void 0,e.signal).then(t=>!e.signal.aborted&&y(t)).catch(t=>!e.signal.aborted&&x(t)),()=>e.abort()},[w]);let H=e=>{let t=o(e)?e.code:`internal`;e instanceof Error&&e.name===`NotAllowedError`?P({code:t,message:`Passkey sign-in was canceled or timed out.`}):P({code:t,message:o(e)?S(t,e.message):e instanceof Error?e.message:String(e)})},U=(0,M.useCallback)(async()=>{await h()===`authenticated`?r(v(e),{replace:!0}):P({code:`internal`,message:`Signed in, but the coordinator did not accept the new credential. Try again.`})},[r,e]),W=async()=>{O(`passkey`),P(null);try{let{challengeId:e,options:t}=await p(`/api/auth/passkey/options`),n=await V.run(()=>k({optionsJSON:t}));if(!n.ok){P({code:`canceled`,message:`Passkey sign-in was canceled.`});return}let r=n.value;await p(`/api/auth/passkey/verify`,{challengeId:e,response:r,deviceName:i,kind:I()}),await U()}catch(e){H(e)}finally{O(null)}},G=async()=>{O(`oidc`),P(null);let t=_();try{let n=await p(`/api/auth/oidc/begin`,{deviceName:i,kind:I(),next:v(e),handoff:t});if(t&&n.flowId&&n.pollToken)B.current=n.authorizeUrl,R({flowId:n.flowId,pollToken:n.pollToken}),window.open(n.authorizeUrl,`_blank`);else{location.assign(n.authorizeUrl);return}}catch(e){H(e)}O(null)};if(b)return(0,N.jsx)(u,{title:`Cannot reach Switchyard`,error:b,onRetry:()=>T(e=>e+1)});if(!g)return(0,N.jsx)(s,{label:`Checking this server…`});if(F)return(0,N.jsx)(z,{flowId:F.flowId,pollToken:F.pollToken,authorizeUrl:B.current,onDone:U,onExit:()=>R(null)});let K=g.passkey.registered&&g.passkey.available;return(0,N.jsxs)(`div`,{className:`flex flex-col gap-4 text-sm`,children:[(0,N.jsx)(`p`,{className:`text-base font-medium`,children:`Sign in to Switchyard`}),A&&(0,N.jsx)(L,{title:`Sign-in failed`,children:A.message}),(0,N.jsxs)(`div`,{className:`flex flex-col gap-2`,children:[g.oidc&&(0,N.jsx)(c,{"data-testid":`signin-oidc`,variant:`primary`,busy:D===`oidc`,disabled:D!==null,icon:(0,N.jsx)(j,{className:`size-4`}),onClick:G,children:g.oidc.label}),K&&(0,N.jsx)(c,{"data-testid":`signin-passkey`,variant:g.oidc?`secondary`:`primary`,busy:D===`passkey`,disabled:D!==null,icon:(0,N.jsx)(m,{className:`size-4`}),onClick:W,children:`Sign in with a passkey`}),V.waiting&&(0,N.jsxs)(`div`,{role:`status`,className:`flex items-center gap-2 text-sm text-muted`,children:[(0,N.jsx)(d,{}),(0,N.jsx)(`span`,{className:`flex-1`,children:`Waiting for your passkey…`}),(0,N.jsx)(c,{size:`sm`,variant:`ghost`,onClick:V.cancel,children:`Cancel`})]}),g.passkey.registered&&!g.passkey.available&&g.passkey.reason&&(0,N.jsxs)(`p`,{className:`text-xs text-muted`,children:[`Passkeys are unavailable: `,g.passkey.reason,`.`]})]}),!g.oidc&&!K?(0,N.jsxs)(`p`,{"data-testid":`signin-pair-hint`,className:`text-muted`,children:[`No sign-in method is set up. On the machine running Switchyard, run`,` `,(0,N.jsx)(`code`,{children:`switchyard pair`}),` for a single-use sign-in link.`]}):(0,N.jsxs)(`p`,{className:`text-xs text-muted`,children:[`Locked out? Run `,(0,N.jsx)(`code`,{children:`switchyard pair`}),` on the server for a single-use sign-in link.`]})]})}function z({flowId:e,pollToken:t,authorizeUrl:n,onDone:r,onExit:i}){let[a,s]=(0,M.useState)(()=>x(Date.now())),l=(0,M.useRef)(a);l.current=a;let u=(0,M.useRef)(!1),d=(0,M.useRef)(r);d.current=r;let f=(0,M.useCallback)(e=>{let t=T(l.current,e);return l.current=t,s(t),t},[]),m=(0,M.useCallback)(async()=>{if(!(u.current||l.current.phase!==`waiting`)){u.current=!0;try{let n=await p(`/api/auth/oidc/claim`,{flowId:e,pollToken:t});f({type:`claim`,result:n,now:Date.now()}).phase===`done`&&await d.current()}catch(e){f({type:`claim_error`,code:o(e)?e.code:`network`,message:`This sign-in expired or was already used. Start again.`,now:Date.now()})}finally{u.current=!1}}},[e,t,f]);return(0,M.useEffect)(()=>{let e=()=>document.visibilityState===`visible`,t=setInterval(()=>{f({type:`tick`,now:Date.now()}),D(l.current,e())&&m()},w),n=()=>{D(l.current,e())&&m()};return document.addEventListener(`visibilitychange`,n),()=>{clearInterval(t),document.removeEventListener(`visibilitychange`,n)}},[m,f]),a.phase===`timeout`||a.phase===`failed`||a.phase===`canceled`?(0,N.jsxs)(`div`,{"data-testid":`signin-handoff`,className:`flex flex-col gap-3 text-sm`,children:[(0,N.jsx)(L,{title:a.phase===`timeout`?`Sign-in timed out`:`Sign-in stopped`,children:a.phase===`timeout`?`The sign-in was not finished in time. Start again.`:a.message??`Start again.`}),(0,N.jsx)(c,{onClick:i,children:`Back to sign-in`})]}):(0,N.jsxs)(`div`,{"data-testid":`signin-handoff`,role:`status`,className:`flex flex-col gap-3 text-sm`,children:[(0,N.jsx)(`p`,{className:`font-medium`,children:`Finish signing in, then come back here`}),(0,N.jsx)(`p`,{className:`text-muted`,children:`Complete single sign-on in the page that opened, then return to this app. This screen continues on its own.`}),n&&(0,N.jsx)(y,{href:n,external:!0,children:`Open the sign-in page again`}),(0,N.jsx)(c,{onClick:()=>{f({type:`cancel`}),i()},children:`Cancel`})]})}export{F as default,E as defaultDeviceName};
|
|
2
|
-
//# sourceMappingURL=enroll-DwT7AcuS.js.map
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
/*! tailwindcss v4.3.3 | MIT License | https://tailwindcss.com */
|
|
2
|
-
@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}::backdrop{--tw-translate-x:0;--tw-translate-y:0;--tw-translate-z:0;--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-leading:initial;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000;--tw-outline-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-duration:initial;--tw-ease:initial;--tw-content:""}}}@layer theme{:root,:host{--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--spacing:.25rem;--container-sm:24rem;--container-md:28rem;--container-lg:32rem;--container-xl:36rem;--container-2xl:42rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-lg:1.125rem;--text-lg--line-height:calc(1.75 / 1.125);--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--tracking-wide:.025em;--tracking-widest:.1em;--leading-tight:1.25;--leading-snug:1.375;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--ease-out:cubic-bezier(0, 0, .2, 1);--animate-spin:spin 1.4s linear infinite;--animate-pulse:pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--default-mono-font-family:ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--color-accent:var(--sy-accent)}}@layer base{*,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring:where(:not(iframe)){outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab, red, red)){::placeholder{color:color-mix(in oklab, currentcolor 50%, transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%}html,body{background:var(--sy-bg);color:var(--sy-text);font-family:var(--font-sans);overflow-x:clip}body{-webkit-font-smoothing:antialiased;min-height:100dvh;margin:0;line-height:1.5}#root{min-width:0;min-height:100dvh}:focus-visible{outline:2px solid var(--sy-focus);outline-offset:2px}code,pre,kbd,samp{font-family:var(--font-mono)}button,[role=button]{cursor:pointer}button:disabled,[aria-disabled=true]{cursor:not-allowed}}@layer components{@media (pointer:coarse){.tap{min-width:44px;min-height:44px}}.sy-prose{overflow-wrap:anywhere;min-width:0}.sy-prose>*+*{margin-top:.6em}.sy-prose h1,.sy-prose h2,.sy-prose h3,.sy-prose h4{margin-top:1em;font-weight:600;line-height:1.3}.sy-prose h1{font-size:1.25rem}.sy-prose h2{font-size:1.125rem}.sy-prose h3,.sy-prose h4{font-size:1rem}.sy-prose ul{padding-left:1.4em;list-style:outside}.sy-prose ol{padding-left:1.4em;list-style:decimal}.sy-prose a{color:var(--sy-accent);text-underline-offset:2px;text-decoration:underline}.sy-prose blockquote{border-left:3px solid var(--sy-border-strong);color:var(--sy-muted);padding-left:.75em}.sy-prose :not(pre)>code{background:var(--sy-surface-2);border:1px solid var(--sy-border);border-radius:4px;padding:0 .3em;font-size:.875em}.sy-prose hr{border-color:var(--sy-border)}.sy-prose input[type=checkbox]{margin-right:.4em}.sy-prose-compact{font-size:.875rem;line-height:1.5rem}@media (min-width:768px){.sy-prose-compact{font-size:15px}}.sy-prose-compact>*+*{margin-top:.5em}.sy-prose-compact h1{font-size:1.0625rem}.sy-prose-compact h2{font-size:1rem}.sy-prose-compact h2[data-active=true]{background:var(--sy-accent-soft);box-shadow:inset 3px 0 0 var(--sy-accent);border-radius:.375rem;margin-left:-.5rem;padding:.15em .5rem}.sy-prose-compact h3,.sy-prose-compact h4{font-size:.9375rem}.sy-prose-compact h1,.sy-prose-compact h2,.sy-prose-compact h3,.sy-prose-compact h4{margin-top:1.1em;font-weight:600}.sy-prose-compact ul,.sy-prose-compact ol{padding-left:1.2em}.sy-code span[style]{color:var(--shiki-light)}@media (prefers-color-scheme:dark){.sy-code span[style]{color:var(--shiki-dark)}}}@layer utilities{.pointer-events-auto{pointer-events:auto}.pointer-events-none{pointer-events:none}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.\!fixed{position:fixed!important}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.static{position:static}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{inset-inline:0}.inset-x-2{inset-inline:calc(var(--spacing) * 2)}.inset-y-0{inset-block:0}.-top-0\.5{top:calc(var(--spacing) * -.5)}.-top-1\.5{top:calc(var(--spacing) * -1.5)}.top-0{top:0}.top-1{top:var(--spacing)}.top-1\/2{top:50%}.top-16{top:calc(var(--spacing) * 16)}.top-\[calc\(var\(--safe-top\)\+0\.5rem\)\]{top:calc(var(--safe-top) + .5rem)}.top-full{top:100%}.right-0{right:0}.right-1{right:var(--spacing)}.-bottom-3{bottom:calc(var(--spacing) * -3)}.bottom-0{bottom:0}.bottom-3{bottom:calc(var(--spacing) * 3)}.bottom-full{bottom:100%}.left-0{left:0}.left-1\/2{left:50%}.left-2{left:calc(var(--spacing) * 2)}.left-2\.5{left:calc(var(--spacing) * 2.5)}.left-3{left:calc(var(--spacing) * 3)}.z-10{z-index:10}.z-20{z-index:20}.z-30{z-index:30}.z-40{z-index:40}.z-50{z-index:50}.z-\[1\]{z-index:1}.z-\[60\]{z-index:60}.z-\[70\]{z-index:70}.col-start-1{grid-column-start:1}.row-start-2{grid-row-start:2}.container{width:100%}@media (min-width:40rem){.container{max-width:40rem}}@media (min-width:48rem){.container{max-width:48rem}}@media (min-width:64rem){.container{max-width:64rem}}@media (min-width:80rem){.container{max-width:80rem}}@media (min-width:96rem){.container{max-width:96rem}}.m-0{margin:0}.-mx-4{margin-inline:calc(var(--spacing) * -4)}.mx-4{margin-inline:calc(var(--spacing) * 4)}.mx-auto{margin-inline:auto}.my-1{margin-block:var(--spacing)}.-mt-4{margin-top:calc(var(--spacing) * -4)}.mt-0\.5{margin-top:calc(var(--spacing) * .5)}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mt-px{margin-top:1px}.-mr-1\.5{margin-right:calc(var(--spacing) * -1.5)}.mr-2{margin-right:calc(var(--spacing) * 2)}.mr-auto{margin-right:auto}.-mb-px{margin-bottom:-1px}.mb-1{margin-bottom:var(--spacing)}.mb-2{margin-bottom:calc(var(--spacing) * 2)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.mb-4{margin-bottom:calc(var(--spacing) * 4)}.-ml-1\.5{margin-left:calc(var(--spacing) * -1.5)}.-ml-2{margin-left:calc(var(--spacing) * -2)}.-ml-px{margin-left:-1px}.ml-1{margin-left:var(--spacing)}.ml-1\.5{margin-left:calc(var(--spacing) * 1.5)}.ml-2{margin-left:calc(var(--spacing) * 2)}.ml-auto{margin-left:auto}.line-clamp-2{-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.line-clamp-6{-webkit-line-clamp:6;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.\!block{display:block!important}.block{display:block}.contents{display:contents}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline{display:inline}.inline-flex{display:inline-flex}.table{display:table}.size-1\.5{width:calc(var(--spacing) * 1.5);height:calc(var(--spacing) * 1.5)}.size-2{width:calc(var(--spacing) * 2);height:calc(var(--spacing) * 2)}.size-2\.5{width:calc(var(--spacing) * 2.5);height:calc(var(--spacing) * 2.5)}.size-3{width:calc(var(--spacing) * 3);height:calc(var(--spacing) * 3)}.size-3\.5{width:calc(var(--spacing) * 3.5);height:calc(var(--spacing) * 3.5)}.size-4{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.size-5{width:calc(var(--spacing) * 5);height:calc(var(--spacing) * 5)}.size-6{width:calc(var(--spacing) * 6);height:calc(var(--spacing) * 6)}.size-7{width:calc(var(--spacing) * 7);height:calc(var(--spacing) * 7)}.size-8{width:calc(var(--spacing) * 8);height:calc(var(--spacing) * 8)}.size-9{width:calc(var(--spacing) * 9);height:calc(var(--spacing) * 9)}.size-10{width:calc(var(--spacing) * 10);height:calc(var(--spacing) * 10)}.size-11{width:calc(var(--spacing) * 11);height:calc(var(--spacing) * 11)}.h-0\.5{height:calc(var(--spacing) * .5)}.h-1{height:var(--spacing)}.h-1\.5{height:calc(var(--spacing) * 1.5)}.h-4{height:calc(var(--spacing) * 4)}.h-6{height:calc(var(--spacing) * 6)}.h-7{height:calc(var(--spacing) * 7)}.h-8{height:calc(var(--spacing) * 8)}.h-9{height:calc(var(--spacing) * 9)}.h-10{height:calc(var(--spacing) * 10)}.h-11{height:calc(var(--spacing) * 11)}.h-14{height:calc(var(--spacing) * 14)}.h-\[3px\]{height:3px}.h-auto{height:auto}.h-auto\!{height:auto!important}.h-dvh{height:100dvh}.h-full{height:100%}.max-h-48{max-height:calc(var(--spacing) * 48)}.max-h-64{max-height:calc(var(--spacing) * 64)}.max-h-72{max-height:calc(var(--spacing) * 72)}.max-h-\[60vh\]{max-height:60vh}.max-h-\[90dvh\]{max-height:90dvh}.max-h-\[min\(90dvh\,720px\)\]{max-height:min(90dvh,720px)}.max-h-dvh{max-height:100dvh}.min-h-0{min-height:0}.min-h-8{min-height:calc(var(--spacing) * 8)}.min-h-9{min-height:calc(var(--spacing) * 9)}.min-h-11{min-height:calc(var(--spacing) * 11)}.min-h-12{min-height:calc(var(--spacing) * 12)}.min-h-14{min-height:calc(var(--spacing) * 14)}.min-h-dvh{min-height:100dvh}.min-h-full{min-height:100%}.w-1\.5{width:calc(var(--spacing) * 1.5)}.w-5{width:calc(var(--spacing) * 5)}.w-8{width:calc(var(--spacing) * 8)}.w-10{width:calc(var(--spacing) * 10)}.w-52{width:calc(var(--spacing) * 52)}.w-56{width:calc(var(--spacing) * 56)}.w-60{width:calc(var(--spacing) * 60)}.w-72{width:calc(var(--spacing) * 72)}.w-96{width:calc(var(--spacing) * 96)}.w-\[6\.25rem\]{width:6.25rem}.w-auto{width:auto}.w-fit{width:-moz-fit-content;width:fit-content}.w-full{width:100%}.w-max{width:max-content}.w-px{width:1px}.max-w-2xl{max-width:var(--container-2xl)}.max-w-32{max-width:calc(var(--spacing) * 32)}.max-w-56{max-width:calc(var(--spacing) * 56)}.max-w-64{max-width:calc(var(--spacing) * 64)}.max-w-\[16rem\]{max-width:16rem}.max-w-\[60vw\]{max-width:60vw}.max-w-\[80ch\]{max-width:80ch}.max-w-\[calc\(100vw-1rem\)\]{max-width:calc(100vw - 1rem)}.max-w-\[min\(20rem\,calc\(100vw-1rem\)\)\]{max-width:min(20rem,100vw - 1rem)}.max-w-full{max-width:100%}.max-w-lg{max-width:var(--container-lg)}.max-w-md{max-width:var(--container-md)}.max-w-sm{max-width:var(--container-sm)}.max-w-xl{max-width:var(--container-xl)}.min-w-0{min-width:0}.min-w-5{min-width:calc(var(--spacing) * 5)}.min-w-48{min-width:calc(var(--spacing) * 48)}.min-w-\[6\.25rem\]{min-width:6.25rem}.min-w-full{min-width:100%}.flex-1{flex:1}.flex-\[1_1_12rem\]{flex:12rem}.flex-\[1_1_15rem\]{flex:15rem}.shrink{flex-shrink:1}.shrink-0{flex-shrink:0}.basis-48{flex-basis:calc(var(--spacing) * 48)}.basis-full{flex-basis:100%}.border-collapse{border-collapse:collapse}.-translate-x-1\/2{--tw-translate-x:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-1{--tw-translate-x:var(--spacing);translate:var(--tw-translate-x) var(--tw-translate-y)}.translate-x-5{--tw-translate-x:calc(var(--spacing) * 5);translate:var(--tw-translate-x) var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1 / 2 * 100%) * -1);translate:var(--tw-translate-x) var(--tw-translate-y)}.rotate-1{rotate:1deg}.rotate-90{rotate:90deg}.animate-pulse{animation:var(--animate-pulse)}.animate-spin{animation:var(--animate-spin)}.cursor-col-resize{cursor:col-resize}.cursor-grab{cursor:grab}.cursor-not-allowed{cursor:not-allowed}.cursor-pointer{cursor:pointer}.touch-none{touch-action:none}.resize{resize:both}.resize-none{resize:none}.scroll-mt-14{scroll-margin-top:calc(var(--spacing) * 14)}.scroll-mt-16{scroll-margin-top:calc(var(--spacing) * 16)}.scroll-ml-\[6\.25rem\]{scroll-margin-left:6.25rem}.\[scrollbar-width\:none\]{scrollbar-width:none}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-\[auto_1fr\]{grid-template-columns:auto 1fr}.grid-cols-\[auto_minmax\(0\,1fr\)\]{grid-template-columns:auto minmax(0,1fr)}.grid-cols-\[minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) auto}.grid-cols-\[minmax\(0\,1fr\)_minmax\(320px\,400px\)\]{grid-template-columns:minmax(0,1fr) minmax(320px,400px)}.grid-cols-\[minmax\(0\,2\.4fr\)_minmax\(0\,1fr\)_5\.5rem_minmax\(0\,1\.2fr\)_minmax\(0\,1\.4fr\)_7\.5rem_7rem_auto\]{grid-template-columns:minmax(0,2.4fr) minmax(0,1fr) 5.5rem minmax(0,1.2fr) minmax(0,1.4fr) 7.5rem 7rem auto}.grid-cols-\[minmax\(7rem\,auto\)_1fr\]{grid-template-columns:minmax(7rem,auto) 1fr}.grid-cols-\[repeat\(auto-fit\,minmax\(11rem\,1fr\)\)\]{grid-template-columns:repeat(auto-fit,minmax(11rem,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.justify-start{justify-content:flex-start}.gap-0\.5{gap:calc(var(--spacing) * .5)}.gap-1{gap:var(--spacing)}.gap-1\.5{gap:calc(var(--spacing) * 1.5)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}.gap-5{gap:calc(var(--spacing) * 5)}:where(.space-y-1>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(var(--spacing) * var(--tw-space-y-reverse));margin-block-end:calc(var(--spacing) * calc(1 - var(--tw-space-y-reverse)))}.gap-x-1\.5{column-gap:calc(var(--spacing) * 1.5)}.gap-x-2{column-gap:calc(var(--spacing) * 2)}.gap-x-3{column-gap:calc(var(--spacing) * 3)}.gap-x-4{column-gap:calc(var(--spacing) * 4)}.gap-x-5{column-gap:calc(var(--spacing) * 5)}.gap-y-0\.5{row-gap:calc(var(--spacing) * .5)}.gap-y-1{row-gap:var(--spacing)}.gap-y-2{row-gap:calc(var(--spacing) * 2)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-border>:not(:last-child)){border-color:var(--sy-border)}.self-center{align-self:center}.self-start{align-self:flex-start}.self-stretch{align-self:stretch}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-auto{overflow-y:auto}.overflow-y-hidden{overflow-y:hidden}.overscroll-contain{overscroll-behavior:contain}.overscroll-x-contain{overscroll-behavior-x:contain}.overscroll-y-contain{overscroll-behavior-y:contain}.rounded{border-radius:.25rem}.rounded-full{border-radius:2147483647px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.rounded-t-lg{border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg)}.rounded-t-xl{border-top-left-radius:var(--radius-xl);border-top-right-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-r{border-right-style:var(--tw-border-style);border-right-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-b-0{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.border-b-2{border-bottom-style:var(--tw-border-style);border-bottom-width:2px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-l-2{border-left-style:var(--tw-border-style);border-left-width:2px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-accent{border-color:var(--sy-accent)}.border-border{border-color:var(--sy-border)}.border-border-strong{border-color:var(--sy-border-strong)}.border-danger,.border-danger\/50{border-color:var(--sy-danger)}@supports (color:color-mix(in lab, red, red)){.border-danger\/50{border-color:color-mix(in oklab, var(--sy-danger) 50%, transparent)}}.border-info{border-color:var(--sy-info)}.border-transparent{border-color:#0000}.border-warning{border-color:var(--sy-warning)}.bg-accent{background-color:var(--sy-accent)}.bg-accent-fg{background-color:var(--sy-accent-fg)}.bg-accent-soft{background-color:var(--sy-accent-soft)}.bg-bg{background-color:var(--sy-bg)}.bg-border{background-color:var(--sy-border)}.bg-border-strong{background-color:var(--sy-border-strong)}.bg-danger{background-color:var(--sy-danger)}.bg-danger-soft{background-color:var(--sy-danger-soft)}.bg-diff-add{background-color:var(--sy-diff-add)}.bg-diff-del{background-color:var(--sy-diff-del)}.bg-diff-hunk{background-color:var(--sy-diff-hunk)}.bg-info-soft{background-color:var(--sy-info-soft)}.bg-muted{background-color:var(--sy-muted)}.bg-overlay{background-color:var(--sy-overlay)}.bg-subtle{background-color:var(--sy-subtle)}.bg-success{background-color:var(--sy-success)}.bg-success-soft{background-color:var(--sy-success-soft)}.bg-surface{background-color:var(--sy-surface)}.bg-surface-2{background-color:var(--sy-surface-2)}.bg-surface-3{background-color:var(--sy-surface-3)}.bg-transparent{background-color:#0000}.bg-warning{background-color:var(--sy-warning)}.bg-warning-soft{background-color:var(--sy-warning-soft)}.bg-\[conic-gradient\(var\(--sy-surface-2\)_25\%\,var\(--sy-surface\)_0_50\%\,var\(--sy-surface-2\)_0_75\%\,var\(--sy-surface\)_0\)\]{background-image:conic-gradient(var(--sy-surface-2) 25%,var(--sy-surface) 0 50%,var(--sy-surface-2) 0 75%,var(--sy-surface) 0)}.bg-\[length\:16px_16px\]{background-size:16px 16px}.object-cover{object-fit:cover}.p-0{padding:0}.p-0\.5{padding:calc(var(--spacing) * .5)}.p-1{padding:var(--spacing)}.p-2{padding:calc(var(--spacing) * 2)}.p-2\.5{padding:calc(var(--spacing) * 2.5)}.p-3{padding:calc(var(--spacing) * 3)}.p-4{padding:calc(var(--spacing) * 4)}.p-5{padding:calc(var(--spacing) * 5)}.px-0{padding-inline:0}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-2\.5{padding-inline:calc(var(--spacing) * 2.5)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-3\.5{padding-inline:calc(var(--spacing) * 3.5)}.px-4{padding-inline:calc(var(--spacing) * 4)}.px-7{padding-inline:calc(var(--spacing) * 7)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-2\.5{padding-block:calc(var(--spacing) * 2.5)}.py-3{padding-block:calc(var(--spacing) * 3)}.py-4{padding-block:calc(var(--spacing) * 4)}.py-6{padding-block:calc(var(--spacing) * 6)}.py-10{padding-block:calc(var(--spacing) * 10)}.pt-1{padding-top:var(--spacing)}.pt-1\.5{padding-top:calc(var(--spacing) * 1.5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pt-3{padding-top:calc(var(--spacing) * 3)}.pt-4{padding-top:calc(var(--spacing) * 4)}.safe-pt{padding-top:var(--safe-top)}.safe-pt-1{padding-top:calc(var(--spacing) * 1 + var(--safe-top))}.safe-pt-1\.5{padding-top:calc(var(--spacing) * 1.5 + var(--safe-top))}.safe-pt-4{padding-top:calc(var(--spacing) * 4 + var(--safe-top))}.safe-pt-10{padding-top:calc(var(--spacing) * 10 + var(--safe-top))}.safe-px{padding-left:var(--safe-left);padding-right:var(--safe-right)}.pr-1{padding-right:var(--spacing)}.pr-1\.5{padding-right:calc(var(--spacing) * 1.5)}.pr-2{padding-right:calc(var(--spacing) * 2)}.pr-3{padding-right:calc(var(--spacing) * 3)}.pr-4{padding-right:calc(var(--spacing) * 4)}.pr-7{padding-right:calc(var(--spacing) * 7)}.pb-1{padding-bottom:var(--spacing)}.pb-1\.5{padding-bottom:calc(var(--spacing) * 1.5)}.pb-2{padding-bottom:calc(var(--spacing) * 2)}.pb-3{padding-bottom:calc(var(--spacing) * 3)}.pb-4{padding-bottom:calc(var(--spacing) * 4)}.pb-8{padding-bottom:calc(var(--spacing) * 8)}.safe-pb{padding-bottom:var(--safe-bottom)}.safe-pb-2{padding-bottom:calc(var(--spacing) * 2 + var(--safe-bottom))}.safe-pb-10{padding-bottom:calc(var(--spacing) * 10 + var(--safe-bottom))}.pl-1{padding-left:var(--spacing)}.pl-2{padding-left:calc(var(--spacing) * 2)}.pl-3{padding-left:calc(var(--spacing) * 3)}.pl-4{padding-left:calc(var(--spacing) * 4)}.pl-5{padding-left:calc(var(--spacing) * 5)}.pl-6{padding-left:calc(var(--spacing) * 6)}.pl-7{padding-left:calc(var(--spacing) * 7)}.pl-8{padding-left:calc(var(--spacing) * 8)}.pl-9{padding-left:calc(var(--spacing) * 9)}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.align-top{vertical-align:top}.font-mono{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[11px\]{font-size:11px}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.leading-4{--tw-leading:calc(var(--spacing) * 4);line-height:calc(var(--spacing) * 4)}.leading-5{--tw-leading:calc(var(--spacing) * 5);line-height:calc(var(--spacing) * 5)}.leading-6{--tw-leading:calc(var(--spacing) * 6);line-height:calc(var(--spacing) * 6)}.leading-snug{--tw-leading:var(--leading-snug);line-height:var(--leading-snug)}.leading-tight{--tw-leading:var(--leading-tight);line-height:var(--leading-tight)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-normal{--tw-font-weight:var(--font-weight-normal);font-weight:var(--font-weight-normal)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-wide{--tw-tracking:var(--tracking-wide);letter-spacing:var(--tracking-wide)}.tracking-widest{--tw-tracking:var(--tracking-widest);letter-spacing:var(--tracking-widest)}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.whitespace-normal{white-space:normal}.whitespace-normal\!{white-space:normal!important}.whitespace-nowrap{white-space:nowrap}.whitespace-pre{white-space:pre}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.text-accent{color:var(--sy-accent)}.text-accent-fg{color:var(--sy-accent-fg)}.text-danger{color:var(--sy-danger)}.text-danger-fg{color:var(--sy-danger-fg)}.text-info{color:var(--sy-info)}.text-inherit{color:inherit}.text-muted{color:var(--sy-muted)}.text-subtle{color:var(--sy-subtle)}.text-success{color:var(--sy-success)}.text-text{color:var(--sy-text)}.text-warning{color:var(--sy-warning)}.capitalize{text-transform:capitalize}.uppercase{text-transform:uppercase}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.underline{text-decoration-line:underline}.underline-offset-2{text-underline-offset:2px}.accent-\[var\(--color-accent\)\]{accent-color:var(--color-accent)}.accent-\[var\(--sy-accent\)\]{accent-color:var(--sy-accent)}.opacity-0{opacity:0}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-70{opacity:.7}.opacity-100{opacity:1}.shadow-pop{--tw-shadow:var(--sy-shadow);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a), 0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-2{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-4{--tw-ring-shadow:var(--tw-ring-inset,) 0 0 0 calc(4px + var(--tw-ring-offset-width)) var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow)}.ring-accent{--tw-ring-color:var(--sy-accent)}.ring-accent-soft{--tw-ring-color:var(--sy-accent-soft)}.ring-offset-2{--tw-ring-offset-width:2px;--tw-ring-offset-shadow:var(--tw-ring-inset,) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color)}.ring-offset-bg{--tw-ring-offset-color:var(--sy-bg)}.outline,.outline-1{outline-style:var(--tw-outline-style);outline-width:1px}.-outline-offset-1{outline-offset:calc(1px * -1)}.outline-warning{outline-color:var(--sy-warning)}.filter{filter:var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\]{transition-property:width;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-200{--tw-duration:.2s;transition-duration:.2s}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}.outline-none{--tw-outline-style:none;outline-style:none}.select-all{-webkit-user-select:all;user-select:all}.select-none{-webkit-user-select:none;user-select:none}.\[overflow-anchor\:none\]{overflow-anchor:none}.group-open\:rotate-90:is(:where(.group):is([open],:popover-open,:open) *){rotate:90deg}@media (hover:hover){.group-hover\:w-0\.5:is(:where(.group):hover *){width:calc(var(--spacing) * .5)}.group-hover\:bg-accent:is(:where(.group):hover *){background-color:var(--sy-accent)}.group-hover\:opacity-100:is(:where(.group):hover *),.group-hover\/row\:opacity-100:is(:where(.group\/row):hover *){opacity:1}}.group-focus-visible\:w-0\.5:is(:where(.group):focus-visible *){width:calc(var(--spacing) * .5)}.group-focus-visible\:bg-accent:is(:where(.group):focus-visible *){background-color:var(--sy-accent)}.group-has-\[input\:focus-visible\]\:outline-2:is(:where(.group):has(:is(input:focus-visible)) *){outline-style:var(--tw-outline-style);outline-width:2px}.group-has-\[input\:focus-visible\]\:outline-offset-2:is(:where(.group):has(:is(input:focus-visible)) *){outline-offset:2px}.group-has-\[input\:focus-visible\]\:outline-accent:is(:where(.group):has(:is(input:focus-visible)) *){outline-color:var(--sy-accent)}.placeholder\:text-subtle::placeholder{color:var(--sy-subtle)}.before\:absolute:before{content:var(--tw-content);position:absolute}.before\:inset-x-0:before{content:var(--tw-content);inset-inline:0}.before\:-top-3:before{content:var(--tw-content);top:calc(var(--spacing) * -3)}.before\:bottom-0:before{content:var(--tw-content);bottom:0}.before\:content-\[\'\'\]:before{--tw-content:"";content:var(--tw-content)}.first\:pt-0:first-child{padding-top:0}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:pb-0:last-child{padding-bottom:0}@media (hover:hover){.hover\:border-accent-hover:hover{border-color:var(--sy-accent-hover)}.hover\:border-danger-hover:hover{border-color:var(--sy-danger-hover)}.hover\:bg-accent-hover:hover{background-color:var(--sy-accent-hover)}.hover\:bg-accent-soft:hover{background-color:var(--sy-accent-soft)}.hover\:bg-border:hover{background-color:var(--sy-border)}.hover\:bg-danger-hover:hover{background-color:var(--sy-danger-hover)}.hover\:bg-danger-soft:hover{background-color:var(--sy-danger-soft)}.hover\:bg-surface-2:hover{background-color:var(--sy-surface-2)}.hover\:text-text:hover{color:var(--sy-text)}.hover\:underline:hover{text-decoration-line:underline}}.focus\:not-sr-only:focus{clip-path:none;white-space:normal;width:auto;height:auto;margin:0;padding:0;position:static;overflow:visible}.focus\:fixed:focus{position:fixed}.focus\:top-2:focus{top:calc(var(--spacing) * 2)}.focus\:left-2:focus{left:calc(var(--spacing) * 2)}.focus\:border-accent:focus{border-color:var(--sy-accent)}.focus\:bg-surface-2:focus{background-color:var(--sy-surface-2)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}.focus-visible\:underline:focus-visible{text-decoration-line:underline}.focus-visible\:opacity-100:focus-visible{opacity:1}.focus-visible\:outline-2:focus-visible{outline-style:var(--tw-outline-style);outline-width:2px}.focus-visible\:outline-offset-0:focus-visible{outline-offset:0px}.focus-visible\:outline-offset-\[-2px\]:focus-visible{outline-offset:-2px}.focus-visible\:outline-\[var\(--sy-focus\)\]:focus-visible{outline-color:var(--sy-focus)}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.focus-visible\:outline-solid:focus-visible{--tw-outline-style:solid;outline-style:solid}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-55:disabled{opacity:.55}.disabled\:opacity-60:disabled{opacity:.6}.has-\[\:focus-visible\]\:outline-2:has(:focus-visible){outline-style:var(--tw-outline-style);outline-width:2px}.has-\[\:focus-visible\]\:outline-offset-1:has(:focus-visible){outline-offset:1px}.has-\[\:focus-visible\]\:outline-offset-2:has(:focus-visible){outline-offset:2px}.has-\[\:focus-visible\]\:outline-accent:has(:focus-visible){outline-color:var(--sy-accent)}.has-\[\[data-testid\=document-interaction\]\]\:max-w-none:has([data-testid=document-interaction]){max-width:none}.aria-\[current\=true\]\:border-accent[aria-current=true]{border-color:var(--sy-accent)}.aria-\[current\=true\]\:text-text[aria-current=true]{color:var(--sy-text)}.aria-\[invalid\=true\]\:border-danger[aria-invalid=true],.aria-\[invalid\=true\]\:focus\:border-danger[aria-invalid=true]:focus{border-color:var(--sy-danger)}@media not all and (min-width:379px){.max-\[379px\]\:sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.max-\[379px\]\:hidden{display:none}}@media not all and (min-width:48rem){.max-md\:static{position:static}.max-md\:hidden{display:none}.max-md\:overflow-hidden{overflow:hidden}.max-md\:opacity-100{opacity:1}}@media not all and (min-width:40rem){.max-sm\:w-full{width:100%}.max-sm\:basis-full{flex-basis:100%}}@media (min-width:380px){.min-\[380px\]\:hidden{display:none}}@media (min-width:1800px){.min-\[1800px\]\:text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}}@media (min-width:40rem){.sm\:col-span-2{grid-column:span 2/span 2}.sm\:col-start-auto{grid-column-start:auto}.sm\:row-start-auto{grid-row-start:auto}.sm\:mb-0{margin-bottom:0}.sm\:ml-auto{margin-left:auto}.sm\:hidden{display:none}.sm\:inline{display:inline}.sm\:max-w-48{max-width:calc(var(--spacing) * 48)}.sm\:flex-1{flex:1}.sm\:basis-auto{flex-basis:auto}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-\[minmax\(0\,1fr\)_minmax\(0\,1fr\)_auto\]{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto}.sm\:grid-cols-\[minmax\(8rem\,12rem\)_minmax\(0\,1fr\)\]{grid-template-columns:minmax(8rem,12rem) minmax(0,1fr)}.sm\:flex-row{flex-direction:row}.sm\:flex-wrap{flex-wrap:wrap}.sm\:items-center{align-items:center}.sm\:items-start{align-items:flex-start}.sm\:justify-center{justify-content:center}.sm\:text-center{text-align:center}}@media (min-width:48rem){.md\:sticky{position:sticky}.md\:-top-3{top:calc(var(--spacing) * -3)}.md\:top-0{top:0}.md\:top-auto{top:auto}.md\:bottom-\[calc\(var\(--safe-bottom\)\+1rem\)\]{bottom:calc(var(--safe-bottom) + 1rem)}.md\:-mx-6{margin-inline:calc(var(--spacing) * -6)}.md\:mx-6{margin-inline:calc(var(--spacing) * 6)}.md\:block{display:block}.md\:grid{display:grid}.md\:h-8{height:calc(var(--spacing) * 8)}.md\:grid-cols-\[13rem_minmax\(0\,1fr\)\]{grid-template-columns:13rem minmax(0,1fr)}.md\:flex-row{flex-direction:row}.md\:flex-wrap{flex-wrap:wrap}.md\:items-end{align-items:flex-end}.md\:gap-3{gap:calc(var(--spacing) * 3)}.md\:gap-8{gap:calc(var(--spacing) * 8)}.md\:px-4{padding-inline:calc(var(--spacing) * 4)}.md\:px-6{padding-inline:calc(var(--spacing) * 6)}.md\:text-center{text-align:center}.md\:text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}}@media (min-width:64rem){.lg\:inline{display:inline}}@media (min-width:80rem){.xl\:hidden{display:none}.xl\:inline{display:inline}.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:items-start{align-items:flex-start}}@media (min-width:96rem){.\32 xl\:max-w-\[100ch\]{max-width:100ch}.\32 xl\:grid-cols-\[15rem_minmax\(0\,1fr\)\]{grid-template-columns:15rem minmax(0,1fr)}}.\[\&_h2\]\:scroll-mt-14 h2{scroll-margin-top:calc(var(--spacing) * 14)}.\[\&_td\]\:min-w-28 td{min-width:calc(var(--spacing) * 28)}.\[\&_td\]\:border td{border-style:var(--tw-border-style);border-width:1px}.\[\&_td\]\:border-border td{border-color:var(--sy-border)}.\[\&_td\]\:px-2 td{padding-inline:calc(var(--spacing) * 2)}.\[\&_td\]\:py-1 td{padding-block:var(--spacing)}.\[\&_td\]\:align-top td{vertical-align:top}.\[\&_th\]\:min-w-28 th{min-width:calc(var(--spacing) * 28)}.\[\&_th\]\:border th{border-style:var(--tw-border-style);border-width:1px}.\[\&_th\]\:border-border th{border-color:var(--sy-border)}.\[\&_th\]\:bg-surface-2 th{background-color:var(--sy-surface-2)}.\[\&_th\]\:px-2 th{padding-inline:calc(var(--spacing) * 2)}.\[\&_th\]\:py-1 th{padding-block:var(--spacing)}.\[\&_th\]\:text-left th{text-align:left}.\[\&\:\:-moz-range-thumb\]\:size-4::-moz-range-thumb{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\:\:-webkit-details-marker\]\:hidden::-webkit-details-marker{display:none}.\[\&\:\:-webkit-slider-thumb\]\:size-4::-webkit-slider-thumb{width:calc(var(--spacing) * 4);height:calc(var(--spacing) * 4)}.\[\&\:\:-webkit-slider-thumb\]\:appearance-none::-webkit-slider-thumb{appearance:none}.\[\&\>span\]\:sr-only>span{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (pointer:coarse){.\[\@media\(pointer\:coarse\)\]\:opacity-100{opacity:1}.\[\@media\(pointer\:coarse\)\]\:before\:-top-6:before{content:var(--tw-content);top:calc(var(--spacing) * -6)}}}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--sy-bg:#f8fafc;--sy-surface:#fff;--sy-surface-2:#f1f5f9;--sy-surface-3:#e2e8f0;--sy-border:#d5dce5;--sy-border-strong:#94a3b8;--sy-text:#0f172a;--sy-muted:#475569;--sy-subtle:#64748b;--sy-accent:#2563eb;--sy-accent-hover:#1d4ed8;--sy-accent-fg:#fff;--sy-accent-soft:#dbeafe;--sy-success:#15803d;--sy-success-soft:#dcfce7;--sy-warning:#b45309;--sy-warning-soft:#fef3c7;--sy-danger:#b91c1c;--sy-danger-hover:#991b1b;--sy-danger-fg:#fff;--sy-danger-soft:#fee2e2;--sy-info:#0369a1;--sy-info-soft:#e0f2fe;--sy-diff-add:#e6f6ea;--sy-diff-del:#fbe9e9;--sy-diff-hunk:#eef2f7;--sy-focus:#2563eb;--sy-overlay:#0f172a66;--sy-shadow:0 10px 30px #0f172a1f, 0 2px 6px #0f172a14;--rail-width:64px;--rail-expanded-width:200px;--bottom-nav-height:56px;--safe-top:env(safe-area-inset-top,0px);--safe-right:env(safe-area-inset-right,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--safe-left:env(safe-area-inset-left,0px)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--sy-bg:#0f1115;--sy-surface:#161a20;--sy-surface-2:#1d222a;--sy-surface-3:#262c36;--sy-border:#2e3541;--sy-border-strong:#4b5565;--sy-text:#e6e9ee;--sy-muted:#a3acb9;--sy-subtle:#8892a0;--sy-accent:#60a5fa;--sy-accent-hover:#93c5fd;--sy-accent-fg:#0b1220;--sy-accent-soft:#1e3a5f;--sy-success:#4ade80;--sy-success-soft:#14321f;--sy-warning:#fbbf24;--sy-warning-soft:#3a2c0c;--sy-danger:#f87171;--sy-danger-hover:#fca5a5;--sy-danger-fg:#1f0a0a;--sy-danger-soft:#3b1515;--sy-info:#38bdf8;--sy-info-soft:#0c2a3a;--sy-diff-add:#12291b;--sy-diff-del:#2f1517;--sy-diff-hunk:#1b2330;--sy-focus:#93c5fd;--sy-overlay:#0000008c;--sy-shadow:0 10px 30px #00000080, 0 2px 6px #0006}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.animate-spin{animation:2.4s linear infinite spin!important}.sy-motion{transition-duration:.2s!important}}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-leading{syntax:"*";inherits:false}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.5}}
|