zero-ai-ui-lib 0.0.0-stage → 0.1.1
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 +83 -2
- package/dist/zero-ai-ui-lib.cjs +1 -0
- package/dist/zero-ai-ui-lib.css +1 -0
- package/dist/zero-ai-ui-lib.mjs +3590 -0
- package/package.json +39 -4
package/README.md
CHANGED
|
@@ -1,3 +1,84 @@
|
|
|
1
|
-
#
|
|
1
|
+
# zero-ai-ui-lib
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Vue 3 组件库:形变菜单、自绘下拉、日期 / 时间选择器、可展开卡片、底部面板与对话框。
|
|
4
|
+
基于 CSS 变量令牌,自带动效体系(弹簧曲线 + 模糊内容替换)。
|
|
5
|
+
|
|
6
|
+
- 作者:Jaly
|
|
7
|
+
- 依赖:Vue 3(`vue-router` 仅 `ExpandableCard` / `RouteExpandCard` 需要,可选)
|
|
8
|
+
|
|
9
|
+
## 安装
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm i zero-ai-ui-lib
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## 使用
|
|
16
|
+
|
|
17
|
+
```js
|
|
18
|
+
import { createApp } from 'vue'
|
|
19
|
+
import 'zero-ai-ui-lib/style.css'
|
|
20
|
+
import { UiButton, UiSelect, UiFloatingMenu, UiModal } from 'zero-ai-ui-lib'
|
|
21
|
+
|
|
22
|
+
createApp(App).mount('#app')
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
```vue
|
|
26
|
+
<script setup>
|
|
27
|
+
import { ref } from 'vue'
|
|
28
|
+
import { UiSelect, UiDatePicker, UiTimePicker, UiToolMenu } from 'zero-ai-ui-lib'
|
|
29
|
+
|
|
30
|
+
const type = ref('walk')
|
|
31
|
+
const date = ref('2026-01-01')
|
|
32
|
+
const time = ref('09:00')
|
|
33
|
+
const options = [
|
|
34
|
+
{ label: '步行', value: 'walk' },
|
|
35
|
+
{ label: '跑步', value: 'run' }
|
|
36
|
+
]
|
|
37
|
+
</script>
|
|
38
|
+
|
|
39
|
+
<template>
|
|
40
|
+
<UiSelect v-model="type" label="运动类型" :options="options" />
|
|
41
|
+
<div style="display: flex; gap: 10px">
|
|
42
|
+
<UiDatePicker v-model="date" label="日期" />
|
|
43
|
+
<UiTimePicker v-model="time" label="时间" />
|
|
44
|
+
</div>
|
|
45
|
+
<UiToolMenu label="工具" :items="options" @select="() => {}" />
|
|
46
|
+
</template>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## 组件
|
|
50
|
+
|
|
51
|
+
按钮与操作:`UiButton` `UiChip` `UiBadge` `UiFloatingMenu` `UiToolMenu` `UiSegmented` `UiStepper` `UiRating`
|
|
52
|
+
|
|
53
|
+
表单:`UiInput` `UiTextarea` `UiSelect` `UiSwitch` `UiCheckbox` `UiRadioGroup` `UiSlider` `UiDatePicker` `UiTimePicker`
|
|
54
|
+
|
|
55
|
+
数据与可视化:`UiSparkline` `UiBarChart` `UiLineChart` `UiRingProgress` `UiGauge` `UiHeatmap` `UiProgress` `UiSkeleton` `UiSpinner`
|
|
56
|
+
|
|
57
|
+
反馈与浮层:`UiAlert` `UiTooltip` `UiToastHost` `UiEmptyState` `UiModal` `UiBottomSheet` `UiAccordion`
|
|
58
|
+
|
|
59
|
+
布局与卡片:`UiAvatar` `UiEmptyState` `ExpandableCard` `RouteExpandCard`
|
|
60
|
+
|
|
61
|
+
组合式函数:`usePress`(按压反馈)、`useMorphWindow`(从输入框形变成浮动窗口)
|
|
62
|
+
|
|
63
|
+
## 主题
|
|
64
|
+
|
|
65
|
+
样式通过 CSS 变量驱动,库自带 `tokens.css` 的默认浅色令牌。
|
|
66
|
+
覆盖主题时只需在应用根节点重设同名变量:
|
|
67
|
+
|
|
68
|
+
```css
|
|
69
|
+
:root {
|
|
70
|
+
--primary: #3f5f90;
|
|
71
|
+
--primary-container: #d7e2ff;
|
|
72
|
+
--background: #faf9fd;
|
|
73
|
+
--on-surface: #1b1b1f;
|
|
74
|
+
--radius-scale: 1;
|
|
75
|
+
--press-scale: 0.97;
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
形变动效统一走 `--spring-*` / `--t-*` 令牌,配合 `prefers-reduced-motion` 自动降级。
|
|
80
|
+
|
|
81
|
+
## 可展开卡片
|
|
82
|
+
|
|
83
|
+
`ExpandableCard` / `RouteExpandCard` 依赖 `vue-router`,用于「点击卡片展开成详情、URL 保持父/子层级」。
|
|
84
|
+
接入方式见仓库内 `docs/route-expand-card.md`。
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("vue"),ke=require("vue-router"),Ve=["aria-expanded"],Ne={class:"ui-accordion__body"},Be={__name:"UiAccordion",props:{modelValue:{type:Boolean,default:!1},title:{type:String,default:""}},emits:["update:modelValue"],setup(t,{emit:u}){const n=u;return(v,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["ui-accordion",{"is-open":t.modelValue}])},[e.createElementVNode("button",{type:"button",class:"ui-accordion__head","aria-expanded":t.modelValue,onClick:l[0]||(l[0]=m=>n("update:modelValue",!t.modelValue))},[e.createElementVNode("span",null,e.toDisplayString(t.title),1),l[1]||(l[1]=e.createElementVNode("svg",{class:"ui-accordion__chevron",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M6 9l6 6 6-6"})],-1))],8,Ve),e.withDirectives(e.createElementVNode("div",Ne,[e.renderSlot(v.$slots,"default")],512),[[e.vShow,t.modelValue]])],2))}},Se={class:"ui-alert__icon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},Me={class:"ui-alert__body"},$e={key:0,class:"ui-alert__title"},Ce={class:"ui-alert__desc"},Ae={__name:"UiAlert",props:{tone:{type:String,default:"info"},title:{type:String,default:""},closable:{type:Boolean,default:!1}},emits:["close"],setup(t,{emit:u}){const n=u;return(v,l)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["ui-alert",`ui-alert--${t.tone}`]),role:"alert"},[(e.openBlock(),e.createElementBlock("svg",Se,[t.tone==="success"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:0},[l[1]||(l[1]=e.createElementVNode("circle",{cx:"12",cy:"12",r:"9"},null,-1)),l[2]||(l[2]=e.createElementVNode("path",{d:"M8.5 12.5l2.5 2.5 4.5-5"},null,-1))],64)):t.tone==="warning"||t.tone==="danger"?(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[l[3]||(l[3]=e.createElementVNode("path",{d:"M12 3.5L21 20H3L12 3.5z"},null,-1)),l[4]||(l[4]=e.createElementVNode("path",{d:"M12 9.5v4.5"},null,-1)),l[5]||(l[5]=e.createElementVNode("path",{d:"M12 17.2v.1"},null,-1))],64)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:2},[l[6]||(l[6]=e.createElementVNode("circle",{cx:"12",cy:"12",r:"9"},null,-1)),l[7]||(l[7]=e.createElementVNode("path",{d:"M12 11v5"},null,-1)),l[8]||(l[8]=e.createElementVNode("path",{d:"M12 7.7v.1"},null,-1))],64))])),e.createElementVNode("div",Me,[t.title?(e.openBlock(),e.createElementBlock("div",$e,e.toDisplayString(t.title),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Ce,[e.renderSlot(v.$slots,"default")])]),t.closable?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",class:"ui-alert__close","aria-label":"关闭提示",onClick:l[0]||(l[0]=m=>n("close"))},[...l[9]||(l[9]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.4","stroke-linecap":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M6 6l12 12M18 6L6 18"})],-1)])])):e.createCommentVNode("",!0)],2))}},De=["src","alt"],Te={key:2,class:"ui-avatar__status","aria-label":"在线"},Pe={__name:"UiAvatar",props:{name:{type:String,default:""},src:{type:String,default:""},size:{type:String,default:"md"},status:{type:Boolean,default:!1}},setup(t){const u=t,n=e.computed(()=>{const v=u.name.trim();if(!v)return"?";const l=v.split(/\s+/);return l.length===1?v.slice(0,2).toUpperCase():(l[0][0]+l[l.length-1][0]).toUpperCase()});return(v,l)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["ui-avatar",t.size!=="md"?`ui-avatar--${t.size}`:""])},[t.src?(e.openBlock(),e.createElementBlock("img",{key:0,src:t.src,alt:t.name},null,8,De)):(e.openBlock(),e.createElementBlock(e.Fragment,{key:1},[e.createTextVNode(e.toDisplayString(n.value),1)],64)),t.status?(e.openBlock(),e.createElementBlock("span",Te)):e.createCommentVNode("",!0)],2))}},Fe={key:0,class:"ui-badge__dot","aria-hidden":"true"},Le={__name:"UiBadge",props:{tone:{type:String,default:"neutral"},dot:{type:Boolean,default:!1}},setup(t){return(u,n)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["ui-badge",`ui-badge--${t.tone}`])},[t.dot?(e.openBlock(),e.createElementBlock("span",Fe)):e.createCommentVNode("",!0),e.renderSlot(u.$slots,"default")],2))}},Z=(t,u)=>{const n=t.__vccOpts||t;for(const[v,l]of u)n[v]=l;return n},ze=["id","aria-label"],Ue=["data-tip"],Re={__name:"UiBarChart",props:{id:{type:String,default:""},data:{type:Array,default:()=>[42,68,55,80,63,92,74]},labels:{type:Array,default:()=>["一","二","三","四","五","六","日"]},height:{type:[String,Number],default:null},unit:{type:String,default:""},decimals:{type:Number,default:1},highlight:{type:Number,default:null},ariaLabel:{type:String,default:"柱状图"}},setup(t){const u=t,n=e.computed(()=>u.data.length?u.data:[0]),v=e.computed(()=>Math.max.apply(null,n.value)||1),l=e.computed(()=>u.height?{height:typeof u.height=="number"?`${u.height}px`:u.height}:{});function m(o){return`${(o/v.value*100).toFixed(1)}%`}function f(o){return u.highlight!==null&&o>=u.highlight}function r(o,d){const b=u.labels[d]||"",g=u.unit?` ${u.unit}`:"";return`${b} · ${Number(o).toFixed(u.decimals)}${g}`.trim()}return(o,d)=>(e.openBlock(),e.createElementBlock("div",{class:"bars",id:t.id,style:e.normalizeStyle(l.value),role:"img","aria-label":t.ariaLabel},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,(b,g)=>(e.openBlock(),e.createElementBlock("div",{key:g,class:"bar-col"},[e.createElementVNode("div",{class:e.normalizeClass(["bar",{hi:f(b)}]),style:e.normalizeStyle({height:m(b),animationDelay:`${g*55}ms`}),"data-tip":r(b,g)},null,14,Ue),e.createElementVNode("span",null,e.toDisplayString(t.labels[g]||""),1)]))),128))],12,ze))}},We=Z(Re,[["__scopeId","data-v-40849deb"]]),Oe={key:0,class:"ui-sheet-root"},He=["aria-label"],Ie={class:"ui-sheet-head"},qe={class:"ui-sheet-body"},je={key:0,class:"ui-sheet-footer"},Ye=80,Ke=420,Xe={__name:"UiBottomSheet",props:{modelValue:{type:Boolean,default:!1},title:{type:String,default:"面板"},maxHeight:{type:String,default:"90dvh"},closeOnBackdrop:{type:Boolean,default:!0}},emits:["update:modelValue"],setup(t,{emit:u}){const n=t,v=u,l=e.ref(null),m=e.ref(!1),f=e.ref(!1),r=e.ref(!1);let o=null,d="",b=null,g=0,h=0,w=!1;function S(A,E){const R=getComputedStyle(document.documentElement).getPropertyValue(A).trim();if(!R)return E;const Y=parseFloat(R);return Number.isFinite(Y)?R.endsWith("ms")?Y:Y*1e3:E}function $(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function T(){g&&cancelAnimationFrame(g),h&&cancelAnimationFrame(h),g=0,h=0}function F(){!n.modelValue||r.value||v("update:modelValue",!1)}function z(){o||(o=document.getElementById("scrollArea"),o&&(d=o.style.overflow,o.style.overflow="hidden"))}function W(){o&&(o.style.overflow=d,o=null)}function L(A){A.key==="Escape"&&n.modelValue&&(A.preventDefault(),F())}function q(){if(clearTimeout(b),b=null,T(),m.value&&w&&!f.value){r.value=!1,f.value=!0,z();return}m.value=!0,r.value=!1,f.value=!1,z(),e.nextTick(()=>{const A=l.value;!n.modelValue||!A||(A.focus({preventScroll:!0}),A.offsetHeight,g=requestAnimationFrame(()=>{g=0,h=requestAnimationFrame(()=>{h=0,n.modelValue&&(f.value=!0,w=!0)})}))})}function U(){m.value=!1,f.value=!1,r.value=!1,w=!1,W()}function I(){if(T(),clearTimeout(b),b=null,!w){U();return}r.value=!0,f.value=!1;const A=$()?0:S("--spring-exit-dur",650),E=$()?0:Ke,R=$()?0:Math.max(A,E)+Ye;b=setTimeout(()=>{b=null,U()},R)}return e.watch(()=>n.modelValue,A=>{A?q():(m.value||w)&&I()},{immediate:!0}),document.addEventListener("keydown",L),e.onBeforeUnmount(()=>{clearTimeout(b),b=null,T(),W(),document.removeEventListener("keydown",L)}),(A,E)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[m.value?(e.openBlock(),e.createElementBlock("div",Oe,[e.createElementVNode("div",{class:e.normalizeClass(["ui-scrim ui-sheet-scrim",{"is-open":f.value,"is-static":!t.closeOnBackdrop}]),"aria-hidden":"true",onClick:E[0]||(E[0]=R=>t.closeOnBackdrop&&F())},null,2),e.createElementVNode("section",{ref_key:"panel",ref:l,class:e.normalizeClass(["ui-sheet-panel",{"is-open":f.value,"is-closing":r.value}]),style:e.normalizeStyle({maxHeight:t.maxHeight}),role:"dialog","aria-modal":"true","aria-label":t.title,tabindex:"-1"},[E[2]||(E[2]=e.createElementVNode("div",{class:"ui-sheet-handle","aria-hidden":"true"},null,-1)),e.createElementVNode("header",Ie,[e.createElementVNode("h2",null,e.toDisplayString(t.title),1),e.createElementVNode("button",{type:"button",class:"ui-sheet-close","aria-label":"关闭面板",onClick:F},[...E[1]||(E[1]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.4","stroke-linecap":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M6 6l12 12M18 6L6 18"})],-1)])])]),e.createElementVNode("div",qe,[e.renderSlot(A.$slots,"default",{},void 0,!0)]),A.$slots.footer?(e.openBlock(),e.createElementBlock("footer",je,[e.renderSlot(A.$slots,"footer",{},void 0,!0)])):e.createCommentVNode("",!0)],14,He)])):e.createCommentVNode("",!0)]))}},Ge=Z(Xe,[["__scopeId","data-v-4386a2b1"]]),Ze=["type","disabled"],Qe={key:0,class:"ui-btn__spinner","aria-hidden":"true"},Je={__name:"UiButton",props:{variant:{type:String,default:"primary"},size:{type:String,default:"md"},type:{type:String,default:"button"},block:{type:Boolean,default:!1},disabled:{type:Boolean,default:!1},loading:{type:Boolean,default:!1}},setup(t){return(u,n)=>(e.openBlock(),e.createElementBlock("button",{type:t.type,class:e.normalizeClass(["ui-btn",[`ui-btn--${t.variant}`,t.size!=="md"?`ui-btn--${t.size}`:"",{"ui-btn--block":t.block}]]),disabled:t.disabled||t.loading},[t.loading?(e.openBlock(),e.createElementBlock("span",Qe)):e.createCommentVNode("",!0),e.renderSlot(u.$slots,"default")],10,Ze))}},et={class:"ui-check"},tt=["checked"],nt={class:"ui-check__text"},lt={key:0,class:"ui-check__desc"},at={__name:"UiCheckbox",props:{modelValue:{type:Boolean,default:!1},label:{type:String,default:""},description:{type:String,default:""}},emits:["update:modelValue"],setup(t,{emit:u}){const n=u;return(v,l)=>(e.openBlock(),e.createElementBlock("label",et,[e.createElementVNode("input",{type:"checkbox",checked:t.modelValue,onChange:l[0]||(l[0]=m=>n("update:modelValue",m.target.checked))},null,40,tt),l[1]||(l[1]=e.createElementVNode("span",{class:"ui-check__box","aria-hidden":"true"},[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"3","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("path",{d:"M5 12.5l4.5 4.5L19 7"})])],-1)),e.createElementVNode("span",nt,[e.createElementVNode("span",null,e.toDisplayString(t.label),1),t.description?(e.openBlock(),e.createElementBlock("span",lt,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0)])]))}},ot={key:0,class:"ui-chip__dot","aria-hidden":"true"},rt={__name:"UiChip",props:{variant:{type:String,default:"filled"},selected:{type:Boolean,default:!1},removable:{type:Boolean,default:!1},dot:{type:Boolean,default:!1}},emits:["select","remove"],setup(t,{emit:u}){const n=u;return(v,l)=>(e.openBlock(),e.createElementBlock("button",{type:"button",class:e.normalizeClass(["ui-chip",[`ui-chip--${t.variant}`,{"is-selected":t.selected}]]),onClick:l[1]||(l[1]=m=>n("select"))},[t.dot?(e.openBlock(),e.createElementBlock("span",ot)):e.createCommentVNode("",!0),e.renderSlot(v.$slots,"default"),t.removable?(e.openBlock(),e.createElementBlock("span",{key:1,class:"ui-chip__close",role:"button","aria-label":"移除",onClick:l[0]||(l[0]=e.withModifiers(m=>n("remove"),["stop"]))},[...l[2]||(l[2]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.6","stroke-linecap":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M6 6l12 12M18 6L6 18"})],-1)])])):e.createCommentVNode("",!0)],2))}},re=16;function be(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function it(t,u){const n=getComputedStyle(document.documentElement).getPropertyValue(t).trim();if(!n)return u;const v=parseFloat(n);return Number.isFinite(v)?n.endsWith("ms")?v:v*1e3:u}function ve(t){const u=e.ref(!1),n=e.ref(!1),v=e.ref(!1),l=e.ref(!1),m=e.ref({}),f=e.ref({});let r=null,o=null,d=null,b=null,g=null,h=0,w=0;function S(x){const V=x.getBoundingClientRect();let c=1,k=1;const a=getComputedStyle(x).transform;if(a&&a!=="none"&&typeof DOMMatrixReadOnly=="function"){const _=new DOMMatrixReadOnly(a);c=_.a||1,k=_.d||1}const p=Math.max(1,V.width/c),N=Math.max(1,V.height/k);return{left:V.left+(V.width-p)/2,top:V.top+(V.height-N)/2,width:p,height:N}}function $(){var x;return((x=t.surface)==null?void 0:x.call(t))??null}function T(x){var p,N;const V=(p=t.panel)==null?void 0:p.call(t),c=(N=t.content)==null?void 0:N.call(t);if(!V||!c)return 0;const k=V.style.width;V.style.width=x+"px";const a=c.offsetHeight;return V.style.width=k,Math.ceil(a)}function F(x){const V=$();r||!(V!=null&&V.parentNode)||(r=document.createElement("div"),r.setAttribute("aria-hidden","true"),r.style.cssText="display:block;visibility:hidden;pointer-events:none;flex-shrink:0;",r.style.width=Math.round(x.width)+"px",r.style.height=Math.round(x.height)+"px",V.parentNode.insertBefore(r,V))}function z(){r&&(r.remove(),r=null)}function W(){if(r!=null&&r.isConnected){const x=r.getBoundingClientRect();if(x.width>0)return x}return b}function L(){o&&clearTimeout(o),d&&clearTimeout(d),o=null,d=null}function q(){var x;if(L(),U(),!v.value||!g){n.value=!1,u.value=!1,A();return}n.value=!1,l.value=!1,v.value=!0,m.value={...g},u.value=!0,(x=t.onOpened)==null||x.call(t)}function U(){l.value=!1}function I(x=!0){var c;L();const V=v.value||u.value;n.value=!1,u.value=!1,v.value=!1,l.value=!1,m.value={},f.value={},b=null,g=null,z(),x&&V&&((c=t.onClosed)==null||c.call(t))}async function A(){if(u.value)return;n.value=!1;const x=$();if(!x)return;const V=x.closest(".view");if(V&&typeof V.getAnimations=="function")try{V.getAnimations().forEach(y=>y.finish())}catch{}const c=S(x);if(!c.width||!c.height)return;const k=getComputedStyle(x);h=parseFloat(k.borderLeftWidth)||0,w=parseFloat(k.borderTopWidth)||0;const a=Math.max(180,Math.round(Math.min(t.width(),window.innerWidth-re*2))),p=Math.max(1,Math.round(a-h*2)),N=Math.max(Math.round(c.height),Math.round(Math.min(T(p)+w*2,window.innerHeight-re*2)));let _=Math.round(c.left);_=Math.max(re,Math.min(_,window.innerWidth-re-a));let M=Math.round(c.top);M=Math.max(re,Math.min(M,window.innerHeight-re-N)),b={left:c.left,top:c.top,width:c.width,height:c.height};const s=Math.max(1,c.width-h*2),i=Math.max(1,c.height-w*2);F(c),m.value={left:c.left+"px",top:c.top+"px",width:c.width+"px",height:c.height+"px"},f.value={width:s+"px",height:i+"px"},v.value=!0,await e.nextTick();const D=$();D&&D.offsetWidth,l.value=!0,o=setTimeout(()=>{var y;o=null,v.value&&(l.value=!1,g={left:_+"px",top:M+"px",width:a+"px",height:N+"px"},m.value={...g},u.value=!0,(y=t.onOpened)==null||y.call(t))},be()?0:110)}async function E(){if(n.value)return;if(!v.value||!u.value&&!l.value){I();return}L();const x=W();n.value=!0,u.value=!1,l.value=!1,await e.nextTick();const V=$();V&&V.offsetWidth,x&&(m.value={left:x.left+"px",top:x.top+"px",width:x.width+"px",height:x.height+"px"});const c=be()?0:it("--spring-exit-dur",650);d=setTimeout(()=>{d=null,I()},c+80)}function R(){if(u.value){E();return}if(n.value||l.value){q();return}A()}function Y(){I(!1)}function O(x){var V;if(v.value&&!((V=$())!=null&&V.contains(x.target))){if(n.value||!u.value){I();return}E()}}function H(x){var V;!v.value||n.value||(V=$())!=null&&V.contains(x.target)||E()}function j(x){x.key!=="Escape"||!v.value&&!n.value||(x.stopPropagation(),E())}function P(){(v.value||n.value)&&E()}return e.onMounted(()=>{document.addEventListener("pointerdown",H),document.addEventListener("keydown",j),window.addEventListener("scroll",O,!0),window.addEventListener("resize",P)}),e.onBeforeUnmount(()=>{I(!1),document.removeEventListener("pointerdown",H),document.removeEventListener("keydown",j),window.removeEventListener("scroll",O,!0),window.removeEventListener("resize",P)}),e.onDeactivated(()=>{I(!1)}),{open:u,closing:n,floating:v,compressed:l,style:m,viewStyle:f,openWindow:A,closeWindow:E,toggleWindow:R,interruptOpen:q,resetWindow:Y}}const st={class:"ui-date"},ut={class:"ui-date__label"},ct=["aria-expanded"],dt={class:"ui-date__value"},mt=["aria-hidden","inert"],ft={class:"ui-date__head"},pt={class:"ui-date__weekdays","aria-hidden":"true"},vt={class:"ui-date__grid"},ht=["tabindex","onClick"],gt={__name:"UiDatePicker",props:{modelValue:{type:String,default:""},label:{type:String,default:"日期"}},emits:["update:modelValue"],setup(t,{emit:u}){const n=t,v=u,l=e.ref(null),m=e.ref(null),f=e.ref(null),r=e.ref(null),o=e.ref(n.modelValue||O(E())),d=e.ref(R(E())),{open:b,closing:g,floating:h,compressed:w,style:S,viewStyle:$,openWindow:T,closeWindow:F,toggleWindow:z}=ve({surface:()=>l.value,panel:()=>f.value,content:()=>r.value,width:()=>Math.min(300,window.innerWidth-32),onOpened:()=>{requestAnimationFrame(()=>{var a,p;(p=(a=l.value)==null?void 0:a.querySelector(".is-selected"))==null||p.focus({preventScroll:!0})})},onClosed:()=>{var a;(a=m.value)==null||a.focus({preventScroll:!0})}}),W=["一","二","三","四","五","六","日"],L=e.computed(()=>Y(o.value)||E()),q=e.computed(()=>j(L.value)),U=e.computed(()=>`${d.value.getFullYear()}年${d.value.getMonth()+1}月`),I=e.computed(()=>{const a=d.value.getFullYear(),p=d.value.getMonth(),_=(new Date(a,p,1).getDay()+6)%7,M=new Date(a,p+1,0).getDate();return[...Array.from({length:_},()=>null),...Array.from({length:M},(s,i)=>i+1)]});function A(a){return String(a).padStart(2,"0")}function E(){const a=new Date;return new Date(a.getFullYear(),a.getMonth(),a.getDate())}function R(a){return new Date(a.getFullYear(),a.getMonth(),1)}function Y(a){if(typeof a!="string")return null;const p=/^(\d{4})-(\d{2})-(\d{2})$/.exec(a);if(!p)return null;const N=new Date(Number(p[1]),Number(p[2])-1,Number(p[3]));return Number.isNaN(N.getTime())?null:N}function O(a){return`${a.getFullYear()}-${A(a.getMonth()+1)}-${A(a.getDate())}`}function H(a,p){return a.getFullYear()===p.getFullYear()&&a.getMonth()===p.getMonth()&&a.getDate()===p.getDate()}function j(a){return H(a,E())?`今天 · ${a.getMonth()+1}月${a.getDate()}日`:`${a.getFullYear()}年${a.getMonth()+1}月${a.getDate()}日`}function P(){d.value=R(L.value),T()}function x(){if(b.value){F();return}if(g.value||w.value){d.value=R(L.value),z();return}P()}function V(a){d.value=new Date(d.value.getFullYear(),d.value.getMonth()+a,1)}function c(a){const p=new Date(d.value.getFullYear(),d.value.getMonth(),a);o.value=O(p),v("update:modelValue",o.value),F()}function k(){const a=E();d.value=R(a),o.value=O(a),v("update:modelValue",o.value),F()}return e.watch(()=>n.modelValue,a=>{o.value=a||O(E()),h.value||(d.value=R(L.value))}),(a,p)=>(e.openBlock(),e.createElementBlock("div",st,[e.createElementVNode("span",ut,e.toDisplayString(t.label),1),e.createElementVNode("div",{ref_key:"surfaceEl",ref:l,class:e.normalizeClass(["ui-date__surface ui-morph",{"is-open":e.unref(b),"is-closing":e.unref(g),"is-floating":e.unref(h),"is-compressed":e.unref(w)}]),style:e.normalizeStyle(e.unref(S))},[e.createElementVNode("div",{class:"ui-date__view ui-morph__view",style:e.normalizeStyle(e.unref($))},[e.createElementVNode("button",{ref_key:"fieldEl",ref:m,type:"button",class:"ui-date__field","aria-expanded":e.unref(h),"aria-haspopup":"dialog",onClick:x},[p[4]||(p[4]=e.createElementVNode("span",{class:"ui-date__icon","aria-hidden":"true"},[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("rect",{x:"3",y:"5",width:"18",height:"16",rx:"3"}),e.createElementVNode("path",{d:"M8 3v4M16 3v4M3 10h18"})])],-1)),e.createElementVNode("span",dt,e.toDisplayString(q.value),1),e.createElementVNode("span",{class:e.normalizeClass(["ui-date__chevron",{"is-open":e.unref(b)}]),"aria-hidden":"true"},[...p[3]||(p[3]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.2","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("path",{d:"M6 9l6 6 6-6"})],-1)])],2)],8,ct)],4),e.createElementVNode("div",{ref_key:"panelEl",ref:f,class:"ui-date__pop ui-morph__panel",role:"dialog","aria-label":"选择日期","aria-hidden":e.unref(b)?"false":"true",inert:e.unref(b)?null:"",tabindex:"-1",onPointerdown:p[2]||(p[2]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{ref_key:"panelContentEl",ref:r,class:"ui-date__pop-inner"},[e.createElementVNode("div",ft,[e.createElementVNode("button",{type:"button",class:"ui-date__nav","aria-label":"上个月",onClick:p[0]||(p[0]=N=>V(-1))},[...p[5]||(p[5]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M15 6l-6 6 6 6"})],-1)])]),e.createElementVNode("strong",null,e.toDisplayString(U.value),1),e.createElementVNode("button",{type:"button",class:"ui-date__nav","aria-label":"下个月",onClick:p[1]||(p[1]=N=>V(1))},[...p[6]||(p[6]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M9 6l6 6-6 6"})],-1)])])]),e.createElementVNode("div",pt,[(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(W,N=>e.createElementVNode("span",{key:N},e.toDisplayString(N),1)),64))]),e.createElementVNode("div",vt,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(I.value,(N,_)=>(e.openBlock(),e.createElementBlock("span",{key:`${U.value}-${_}`,class:"ui-date__cell"},[N?(e.openBlock(),e.createElementBlock("button",{key:0,type:"button",tabindex:e.unref(b)?0:-1,class:e.normalizeClass({"is-selected":H(new Date(d.value.getFullYear(),d.value.getMonth(),N),L.value),"is-today":H(new Date(d.value.getFullYear(),d.value.getMonth(),N),E())}),onClick:M=>c(N)},e.toDisplayString(N),11,ht)):e.createCommentVNode("",!0)]))),128))]),e.createElementVNode("div",{class:"ui-date__footer"},[p[7]||(p[7]=e.createElementVNode("span",null,"选择后会立即生效",-1)),e.createElementVNode("button",{type:"button",onClick:k},"今天")])],512)],40,mt)],6)]))}},yt=Z(gt,[["__scopeId","data-v-8ad07d43"]]),kt={class:"ui-empty"},bt={class:"ui-empty__icon"},wt={class:"ui-empty__title"},xt={key:0,class:"ui-empty__desc"},Et={key:1,class:"ui-empty__action"},_t={__name:"UiEmptyState",props:{title:{type:String,default:"暂无内容"},description:{type:String,default:""}},setup(t){return(u,n)=>(e.openBlock(),e.createElementBlock("div",kt,[e.createElementVNode("div",bt,[e.renderSlot(u.$slots,"icon",{},()=>[n[0]||(n[0]=e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M4 7.5h16v11a1.5 1.5 0 01-1.5 1.5h-13A1.5 1.5 0 014 18.5v-11z"}),e.createElementVNode("path",{d:"M4 9l8 5 8-5"}),e.createElementVNode("path",{d:"M9 4h6"})],-1))])]),e.createElementVNode("div",wt,e.toDisplayString(t.title),1),t.description?(e.openBlock(),e.createElementBlock("div",xt,e.toDisplayString(t.description),1)):e.createCommentVNode("",!0),u.$slots.action?(e.openBlock(),e.createElementBlock("div",Et,[e.renderSlot(u.$slots,"action")])):e.createCommentVNode("",!0)]))}},Vt=12;function fe(t){let u="idle",n=0,v=0,l=null,m=null;function f(){l&&(l.removeEventListener("pointermove",d),l.removeEventListener("pointerup",b),l.removeEventListener("pointercancel",g),l=null,m=null)}function r(){var h;u==="pressing"&&(u="idle",f(),(h=t.onPressEnd)==null||h.call(t))}function o(h){var w;if(u==="idle"&&h.isPrimary!==!1&&!(typeof h.button=="number"&&h.button!==0)&&!(t.canPress&&!t.canPress())){n=h.clientX,v=h.clientY,u="pressing",l=h.currentTarget,m=h.pointerId,l.addEventListener("pointermove",d),l.addEventListener("pointerup",b),l.addEventListener("pointercancel",g);try{l.setPointerCapture(h.pointerId)}catch{}(w=t.onPressStart)==null||w.call(t)}}function d(h){u==="pressing"&&Math.hypot(h.clientX-n,h.clientY-v)>Vt&&r()}function b(){var S,$;if(u!=="pressing")return;const h=l,w=m;if(u="idle",f(),h&&w!==null)try{h.releasePointerCapture(w)}catch{}(S=t.onPressEnd)==null||S.call(t),($=t.onRelease)==null||$.call(t)}function g(){r()}return e.onBeforeUnmount(()=>{r(),f()}),{onPointerDown:o,cancelPress:r}}const Nt=["aria-expanded"],Bt=["aria-label","aria-hidden","inert"],St={class:"ui-floating-menu__head",role:"presentation"},Mt=["aria-checked","tabindex","onClick"],$t={class:"ui-floating-menu__copy"},Ct={class:"ui-floating-menu__label"},At={key:0,class:"ui-floating-menu__desc"},Dt={key:0,class:"ui-floating-menu__check",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.4","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},Tt={key:1,class:"ui-floating-menu__dot","aria-hidden":"true"},ie=12,Pt={__name:"UiFloatingMenu",props:{modelValue:{type:String,default:""},label:{type:String,default:"排序"},title:{type:String,default:"排序方式"},size:{type:String,default:"md"},items:{type:Array,default:()=>[{value:"recent",label:"最近优先",description:"按时间从新到旧"},{value:"calories",label:"消耗最高",description:"优先显示高消耗记录"},{value:"duration",label:"时长最长",description:"优先显示长时间训练"}]}},emits:["update:modelValue","select"],setup(t,{emit:u}){const n=u,v=e.ref(null),l=e.ref(null),m=e.ref(null),f=e.ref(!1),r=e.ref(!1),o=e.ref(!1),d=e.ref(!1),b=e.ref({}),g=e.ref({});let h=null,w=null,S=null,$=null,T=!1,F=0,z=0;function W(_){const M=_.getBoundingClientRect();let s=1,i=1;const D=getComputedStyle(_).transform;if(D&&D!=="none"&&typeof DOMMatrixReadOnly=="function"){const C=new DOMMatrixReadOnly(D);s=C.a||1,i=C.d||1}const y=Math.max(1,M.width/s),B=Math.max(1,M.height/i);return{left:M.left+(M.width-y)/2,top:M.top+(M.height-B)/2,width:y,height:B}}function L(){return Math.max(1,Math.min(286,window.innerWidth-ie*2))}function q(){return window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function U(_,M){const s=getComputedStyle(document.documentElement).getPropertyValue(_).trim();if(!s)return M;const i=parseFloat(s);return Number.isFinite(i)?s.endsWith("ms")?i:i*1e3:M}function I(_){const M=l.value,s=m.value;if(!M||!s)return 0;const i=M.style.width;M.style.width=_+"px";const D=s.offsetHeight;return M.style.width=i,Math.ceil(D)}function A(){var _;h||!((_=v.value)!=null&&_.parentNode)||(h=document.createElement("div"),h.setAttribute("aria-hidden","true"),h.style.cssText="display:inline-flex;flex-shrink:0;visibility:hidden;pointer-events:none;",v.value.parentNode.insertBefore(h,v.value))}function E(_){h&&(h.style.width=_.width+"px",h.style.height=_.height+"px")}function R(){h&&(h.remove(),h=null)}function Y(){if(h&&h.isConnected){const _=h.getBoundingClientRect();if(_.width>0)return _}return S}const O=fe({canPress:()=>!f.value,onPressStart:()=>{o.value=!0},onPressEnd:()=>{o.value=!1}});async function H(){if(f.value)return;r.value=!1;const _=v.value;if(!_)return;const M=_.closest(".view");if(M&&typeof M.getAnimations=="function")try{M.getAnimations().forEach(Q=>Q.finish())}catch{}const s=W(_),i=s.width,D=s.height,y=s.left,B=s.top,C=getComputedStyle(_);F=parseFloat(C.borderLeftWidth)||0,z=parseFloat(C.borderTopWidth)||0;const X=Math.max(1,i-F*2),J=Math.max(1,D-z*2),ee=Math.max(L(),i),ne=Math.max(1,Math.round(ee-F*2)),oe=Math.max(D,window.innerHeight-ie*2),te=Math.max(D,Math.min(I(ne)+z*2,oe));let K=y+i-ee;K=Math.max(ie,Math.min(K,window.innerWidth-ie-ee));let le=B;le=Math.max(ie,Math.min(le,window.innerHeight-ie-te)),S={left:y,top:B,width:i,height:D},T=!0,A(),E(S),b.value={left:y+"px",top:B+"px",width:i+"px",height:D+"px"},g.value={position:"fixed",left:y+F+"px",top:B+z+"px",width:X+"px",height:J+"px"},d.value=!0,o.value=!1,await e.nextTick(),_.offsetWidth,$={left:Math.round(K)+"px",top:Math.round(le)+"px",width:ee+"px",height:te+"px"},requestAnimationFrame(()=>{var Q;d.value&&(b.value={...$},f.value=!0,(Q=l.value)==null||Q.focus({preventScroll:!0}))})}function j(){var _;if(clearTimeout(w),w=null,r.value=!1,o.value=!1,!d.value||!$){f.value=!1,H();return}f.value=!0,T=!0,b.value={...$},g.value={position:"fixed",left:parseFloat($.left)+F+"px",top:parseFloat($.top)+z+"px",width:Math.max(1,Math.round(parseFloat($.width)-F*2))+"px",height:Math.max(1,Math.round(parseFloat($.height)-z*2))+"px"},(_=l.value)==null||_.focus({preventScroll:!0})}function P(){clearTimeout(w),w=null,r.value=!1,f.value=!1,d.value=!1,o.value=!1,b.value={},g.value={},S=null,$=null,R()}async function x(){var s;if(r.value||!f.value)return;clearTimeout(w);const _=Y();r.value=!0,f.value=!1,await e.nextTick(),(s=v.value)==null||s.offsetWidth,_&&(b.value={left:_.left+"px",top:_.top+"px",width:_.width+"px",height:_.height+"px"},g.value={position:"fixed",left:_.left+F+"px",top:_.top+z+"px",width:Math.max(1,_.width-F*2)+"px",height:Math.max(1,_.height-z*2)+"px"});const M=q()?0:U("--spring-exit-dur",400);w=setTimeout(()=>{var D,y;w=null;const i=T;T=!1,P(),i&&((y=(D=v.value)==null?void 0:D.querySelector("button"))==null||y.focus({preventScroll:!0}))},M+80)}function V(){if(f.value){x();return}if(r.value){j();return}H()}function c(_){n("update:modelValue",_.value),n("select",_),x()}function k(_){var M;r.value||!f.value||(M=v.value)!=null&&M.contains(_.target)||x()}function a(_){_.key==="Escape"&&(f.value||r.value)&&(_.stopPropagation(),O.cancelPress(),x())}function p(_){var M;if(!((M=v.value)!=null&&M.contains(_.target))){if(r.value||d.value&&!f.value){P();return}f.value&&x()}}function N(){(f.value||r.value)&&x()}return e.onMounted(()=>{document.addEventListener("pointerdown",k),document.addEventListener("keydown",a),window.addEventListener("resize",N),window.addEventListener("scroll",p,!0)}),e.onDeactivated(()=>{O.cancelPress(),T=!1,P()}),e.onBeforeUnmount(()=>{clearTimeout(w),O.cancelPress(),document.removeEventListener("pointerdown",k),document.removeEventListener("keydown",a),window.removeEventListener("resize",N),window.removeEventListener("scroll",p,!0),R()}),(_,M)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:v,class:e.normalizeClass(["ui-floating-menu ui-morph",[t.size!=="md"?`is-${t.size}`:"",{"is-open":f.value,"is-closing":r.value,"is-floating":d.value,"is-pressed":o.value}]]),style:e.normalizeStyle(b.value)},[e.createElementVNode("div",{class:"ui-floating-menu__view ui-morph__view",style:e.normalizeStyle(g.value)},[e.createElementVNode("button",{type:"button",class:"ui-floating-menu__trigger","aria-haspopup":"menu","aria-expanded":f.value,onPointerdown:M[0]||(M[0]=(...s)=>e.unref(O).onPointerDown&&e.unref(O).onPointerDown(...s)),onClick:V,onContextmenu:M[1]||(M[1]=e.withModifiers(()=>{},["prevent"]))},[M[2]||(M[2]=e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M4 7h13M4 12h9M4 17h5"}),e.createElementVNode("path",{d:"M18 15l3 3 3-3",transform:"translate(-2 -2)"})],-1)),e.createElementVNode("span",null,e.toDisplayString(t.label),1),M[3]||(M[3]=e.createElementVNode("span",{class:"ui-floating-menu__chevron","aria-hidden":"true"},[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.4","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("path",{d:"M6 9l6 6 6-6"})])],-1))],40,Nt)],4),e.createElementVNode("section",{ref_key:"panel",ref:l,class:"ui-floating-menu__panel ui-morph__panel",role:"menu","aria-label":t.title,"aria-hidden":f.value?"false":"true",inert:f.value?null:"",tabindex:"-1"},[e.createElementVNode("div",{ref_key:"panelContent",ref:m,class:"ui-floating-menu__panel-inner"},[e.createElementVNode("div",St,e.toDisplayString(t.title),1),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,s=>(e.openBlock(),e.createElementBlock("button",{key:s.value??s.label,type:"button",role:"menuitemradio","aria-checked":t.modelValue===s.value,tabindex:f.value?0:-1,class:e.normalizeClass(["ui-floating-menu__item",{"is-active":t.modelValue===s.value,"is-danger":s.tone==="danger"}]),onClick:i=>c(s)},[e.createElementVNode("span",$t,[e.createElementVNode("span",Ct,e.toDisplayString(s.label),1),s.description?(e.openBlock(),e.createElementBlock("span",At,e.toDisplayString(s.description),1)):e.createCommentVNode("",!0)]),t.modelValue===s.value?(e.openBlock(),e.createElementBlock("svg",Dt,[...M[4]||(M[4]=[e.createElementVNode("path",{d:"M5 12.5l4.2 4.2L19 7"},null,-1)])])):(e.openBlock(),e.createElementBlock("span",Tt))],10,Mt))),128))],512)],8,Bt)],6))}},Ft=Z(Pt,[["__scopeId","data-v-4afed32a"]]),Lt=["aria-label"],zt={class:"ui-gauge__dial"},Ut={viewBox:"0 0 200 140","aria-hidden":"true"},Rt={class:"ui-gauge__center"},Wt={class:"ui-gauge__caption"},we="M 26.7 126.68 A 78 78 0 1 1 173.3 126.68",Ot={__name:"UiGauge",props:{value:{type:Number,default:72},label:{type:String,default:"今日达成"}},setup(t){const u=t,n=e.computed(()=>{const l=Number(u.value);return Number.isFinite(l)?Math.min(100,Math.max(0,l)):0}),v=e.computed(()=>100-n.value);return(l,m)=>(e.openBlock(),e.createElementBlock("div",{class:"ui-gauge",role:"img","aria-label":`${t.label} ${n.value}%`},[e.createElementVNode("div",zt,[(e.openBlock(),e.createElementBlock("svg",Ut,[e.createElementVNode("path",{class:"ui-gauge__track",d:we,pathLength:"100",fill:"none"}),e.createElementVNode("path",{class:"ui-gauge__progress",d:we,pathLength:"100",fill:"none",style:e.normalizeStyle({strokeDashoffset:v.value})},null,4)])),e.createElementVNode("div",Rt,[e.createElementVNode("strong",null,[e.createTextVNode(e.toDisplayString(n.value),1),m[0]||(m[0]=e.createElementVNode("small",null,"%",-1))]),e.createElementVNode("span",Wt,e.toDisplayString(t.label),1)])]),m[1]||(m[1]=e.createElementVNode("div",{class:"ui-gauge__scale","aria-hidden":"true"},[e.createElementVNode("span",null,"0"),e.createElementVNode("span",null,"100")],-1))],8,Lt))}},Ht=Z(Ot,[["__scopeId","data-v-02718fb3"]]),It={class:"ui-heatmap"},qt={class:"ui-heatmap__head"},jt={class:"ui-heatmap__body"},Yt=["aria-label"],Kt=["data-level","title"],Xt={class:"ui-heatmap__legend","aria-hidden":"true"},Gt=["data-level"],Zt={__name:"UiHeatmap",props:{values:{type:Array,default:()=>Array.from({length:84},(t,u)=>{const n=Math.sin(u*.62)*1.8+Math.cos(u*.19)*1.1+2;return Math.max(0,Math.min(4,Math.round(n)))})},weeks:{type:Number,default:12},label:{type:String,default:"活动热力图"}},setup(t){const u=t,n=e.computed(()=>{const v=Math.max(1,u.weeks)*7,l=u.values.slice(0,v).map(m=>{const f=Number(m);return Number.isFinite(f)?Math.min(4,Math.max(0,Math.round(f))):0});for(;l.length<v;)l.push(0);return l.map((m,f)=>({level:m,title:`第 ${Math.floor(f/7)+1} 周 · 第 ${f%7+1} 天 · 等级 ${m}`}))});return(v,l)=>(e.openBlock(),e.createElementBlock("div",It,[e.createElementVNode("div",qt,[e.createElementVNode("span",null,e.toDisplayString(t.label),1),e.createElementVNode("span",null,"近 "+e.toDisplayString(t.weeks)+" 周",1)]),e.createElementVNode("div",jt,[e.createElementVNode("div",{class:"ui-heatmap__grid",role:"img","aria-label":t.label},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,(m,f)=>(e.openBlock(),e.createElementBlock("span",{key:f,class:"ui-heatmap__cell","data-level":m.level,title:m.title},null,8,Kt))),128))],8,Yt)]),e.createElementVNode("div",Xt,[l[0]||(l[0]=e.createElementVNode("span",null,"少",-1)),(e.openBlock(),e.createElementBlock(e.Fragment,null,e.renderList(5,m=>e.createElementVNode("i",{key:m,"data-level":m-1},null,8,Gt)),64)),l[1]||(l[1]=e.createElementVNode("span",null,"多",-1))])]))}},Qt=Z(Zt,[["__scopeId","data-v-aba10172"]]),Jt={class:"ui-field"},en={key:0,class:"ui-field__label"},tn={key:0,class:"ui-field__icon"},nn=["type","value","placeholder","disabled","autocomplete","min","max","step","inputmode","aria-invalid"],ln={key:1,class:"ui-field__icon"},an={key:1,class:"ui-field__error"},on={key:2,class:"ui-field__hint"},rn={__name:"UiInput",props:{modelValue:{type:[String,Number],default:""},label:{type:String,default:""},type:{type:String,default:"text"},placeholder:{type:String,default:""},hint:{type:String,default:""},error:{type:String,default:""},disabled:{type:Boolean,default:!1},autocomplete:{type:String,default:"off"},min:{type:[String,Number],default:void 0},max:{type:[String,Number],default:void 0},step:{type:[String,Number],default:void 0},inputmode:{type:String,default:void 0}},emits:["update:modelValue"],setup(t,{emit:u}){const n=u;function v(l){n("update:modelValue",l.target.value)}return(l,m)=>(e.openBlock(),e.createElementBlock("label",Jt,[t.label?(e.openBlock(),e.createElementBlock("span",en,e.toDisplayString(t.label),1)):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass(["ui-field__control",{"is-error":!!t.error}])},[l.$slots.prefix?(e.openBlock(),e.createElementBlock("span",tn,[e.renderSlot(l.$slots,"prefix")])):e.createCommentVNode("",!0),e.createElementVNode("input",{type:t.type,value:t.modelValue,placeholder:t.placeholder,disabled:t.disabled,autocomplete:t.autocomplete,min:t.min,max:t.max,step:t.step,inputmode:t.inputmode,"aria-invalid":!!t.error,onInput:v},null,40,nn),l.$slots.suffix?(e.openBlock(),e.createElementBlock("span",ln,[e.renderSlot(l.$slots,"suffix")])):e.createCommentVNode("",!0)],2),t.error?(e.openBlock(),e.createElementBlock("span",an,e.toDisplayString(t.error),1)):t.hint?(e.openBlock(),e.createElementBlock("span",on,e.toDisplayString(t.hint),1)):e.createCommentVNode("",!0)]))}},sn={class:"chart-wrap"},un=["id","viewBox","aria-label"],cn=["y1","y2"],dn=["d"],mn=["d"],fn=["cx","cy"],ce=300,ae=8,de=92,pn={__name:"UiLineChart",props:{id:{type:String,default:""},data:{type:Array,default:()=>[58,62,60,66,72,68,74,70,64,61,63,59]},labels:{type:Array,default:()=>["06:00","07:00","08:00","09:00","10:00","11:00","12:00","13:00","14:00","15:00","16:00","17:00"]},viewBoxHeight:{type:Number,default:92},gridY:{type:Array,default:()=>[23,46,69]},ariaLabel:{type:String,default:"趋势曲线"}},setup(t){const u=t,n=e.ref(null),v=e.ref(!1),l=e.ref(0),m=e.ref(0),f=e.ref("0%"),r=e.ref(""),o=e.computed(()=>{const g=u.data,h=Math.min.apply(null,g),S=Math.max.apply(null,g)-h||1,$=(ce-ae*2)/(g.length-1),T=g.map((W,L)=>{const q=ae+L*$,U=de-ae-(W-h)/S*(de-ae*2);return[q,U]}),F=T.map(([W,L],q)=>`${q===0?"M":"L"}${W.toFixed(1)},${L.toFixed(1)}`).join(" "),z=`${F} L${(ce-ae).toFixed(1)},${(de-ae).toFixed(1)} L${ae},${(de-ae).toFixed(1)} Z`;return{points:T,line:F,area:z,stepX:$}});function d(g){const h=n.value;if(!h)return;const w=h.getBoundingClientRect(),$=Math.max(0,Math.min(1,(g-w.left)/w.width))*ce;let T=Math.round(($-ae)/o.value.stepX);T=Math.max(0,Math.min(u.data.length-1,T));const F=o.value.points[T];l.value=F[0],m.value=F[1],v.value=!0,f.value=`${F[0]/ce*100}%`,r.value=`${u.labels[T]||""} · ${u.data[T]}`}function b(){v.value=!1}return(g,h)=>(e.openBlock(),e.createElementBlock("div",sn,[(e.openBlock(),e.createElementBlock("svg",{ref_key:"svgEl",ref:n,class:"chart",id:t.id,viewBox:`0 0 300 ${t.viewBoxHeight}`,preserveAspectRatio:"none",role:"img","aria-label":t.ariaLabel,onPointermove:h[0]||(h[0]=w=>d(w.clientX)),onPointerdown:h[1]||(h[1]=w=>d(w.clientX)),onPointerleave:b},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.gridY,w=>(e.openBlock(),e.createElementBlock("line",{key:w,class:"grid-line",x1:"6",y1:w,x2:"294",y2:w},null,8,cn))),128)),e.createElementVNode("path",{class:"area",fill:"url(#heartGrad)",d:o.value.area},null,8,dn),e.createElementVNode("path",{class:"line",fill:"none",stroke:"var(--primary)","stroke-width":"2.5","stroke-linecap":"round","stroke-linejoin":"round",d:o.value.line},null,8,mn),e.createElementVNode("circle",{class:e.normalizeClass(["chart-dot",{show:v.value}]),cx:l.value,cy:m.value,r:"4"},null,10,fn)],40,un)),e.createElementVNode("div",{class:e.normalizeClass(["chart-tip",{show:v.value}]),style:e.normalizeStyle({left:f.value})},e.toDisplayString(r.value),7)]))}},vn=Z(pn,[["__scopeId","data-v-55557827"]]),hn=["aria-label"],gn={class:"ui-modal__head"},yn={class:"ui-modal__title"},kn={class:"ui-modal__body"},bn={key:0,class:"ui-modal__footer"},wn=80,xn={__name:"UiModal",props:{modelValue:{type:Boolean,default:!1},title:{type:String,default:""},maxWidth:{type:String,default:"420px"}},emits:["update:modelValue","close"],setup(t,{expose:u,emit:n}){const v=t,l=n,m=e.ref(null),f=e.ref(!1),r=e.ref(!1),o=e.ref(!1);let d=null,b="",g=null,h=0,w=0,S=!1;function $(E,R){const Y=getComputedStyle(document.documentElement).getPropertyValue(E).trim();if(!Y)return R;const O=parseFloat(Y);return Number.isFinite(O)?Y.endsWith("ms")?O:O*1e3:R}function T(){return typeof window<"u"&&typeof window.matchMedia=="function"&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function F(){h&&cancelAnimationFrame(h),w&&cancelAnimationFrame(w),h=0,w=0}function z(){v.modelValue&&(l("update:modelValue",!1),l("close"))}function W(E){E.key==="Escape"&&v.modelValue&&(E.stopPropagation(),z())}function L(){d||(d=document.getElementById("scrollArea"),d&&(b=d.style.overflow,d.style.overflow="hidden"))}function q(){d&&(d.style.overflow=b,d=null)}function U(){if(clearTimeout(g),g=null,F(),f.value&&S&&!r.value){o.value=!1,r.value=!0,L();return}f.value=!0,o.value=!1,r.value=!1,L(),e.nextTick(()=>{const E=m.value;!v.modelValue||!E||(E.focus({preventScroll:!0}),E.offsetHeight,h=requestAnimationFrame(()=>{h=0,w=requestAnimationFrame(()=>{w=0,v.modelValue&&(r.value=!0,S=!0)})}))})}function I(){f.value=!1,r.value=!1,o.value=!1,S=!1,q()}function A(){if(F(),clearTimeout(g),g=null,!S){I();return}o.value=!0,r.value=!1;const E=T()?0:$("--spring-exit-dur",650);g=setTimeout(()=>{g=null,I()},E+wn)}return e.watch(()=>v.modelValue,E=>{E?U():(f.value||S)&&A()},{immediate:!0}),document.addEventListener("keydown",W),e.onBeforeUnmount(()=>{clearTimeout(g),g=null,F(),q(),document.removeEventListener("keydown",W)}),u({close:z}),(E,R)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[f.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["ui-modal",{"is-open":r.value,"is-closing":o.value}])},[e.createElementVNode("div",{class:e.normalizeClass(["ui-scrim",{"is-open":r.value}]),"aria-hidden":"true",onClick:z},null,2),e.createElementVNode("div",{ref_key:"panel",ref:m,class:"ui-modal__panel",style:e.normalizeStyle({maxWidth:t.maxWidth}),role:"dialog","aria-modal":"true","aria-label":t.title||"对话框",tabindex:"-1"},[e.renderSlot(E.$slots,"header",{close:z},()=>[e.createElementVNode("div",gn,[e.renderSlot(E.$slots,"title",{},()=>[e.createElementVNode("div",yn,e.toDisplayString(t.title),1)]),e.createElementVNode("button",{type:"button",class:"ui-modal__close","aria-label":"关闭对话框",onClick:z},[...R[0]||(R[0]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.4","stroke-linecap":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M6 6l12 12M18 6L6 18"})],-1)])])])]),e.createElementVNode("div",kn,[e.renderSlot(E.$slots,"default",{close:z})]),E.$slots.footer?(e.openBlock(),e.createElementBlock("div",bn,[e.renderSlot(E.$slots,"footer",{close:z})])):e.createCommentVNode("",!0)],12,hn)],2)):e.createCommentVNode("",!0)]))}},En={class:"ui-progress"},_n={key:0,class:"ui-progress__head"},Vn={key:0},Nn=["aria-valuenow","aria-valuemax"],Bn={__name:"UiProgress",props:{value:{type:Number,default:0},max:{type:Number,default:100},label:{type:String,default:""},tone:{type:String,default:"primary"},showValue:{type:Boolean,default:!0}},setup(t){const u=t,n=e.computed(()=>Math.max(0,Math.min(100,u.value/u.max*100)));return(v,l)=>(e.openBlock(),e.createElementBlock("div",En,[t.label||t.showValue?(e.openBlock(),e.createElementBlock("div",_n,[e.createElementVNode("span",null,e.toDisplayString(t.label),1),t.showValue?(e.openBlock(),e.createElementBlock("span",Vn,e.toDisplayString(Math.round(n.value))+"%",1)):e.createCommentVNode("",!0)])):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"ui-progress__track",role:"progressbar","aria-valuenow":t.value,"aria-valuemin":0,"aria-valuemax":t.max},[e.createElementVNode("div",{class:e.normalizeClass(["ui-progress__bar",t.tone!=="primary"?`ui-progress__bar--${t.tone}`:""]),style:e.normalizeStyle({width:n.value+"%"})},null,6)],8,Nn)]))}},Sn={class:"ui-radio-group",role:"radiogroup"},Mn=["name","value","checked","onChange"],$n={__name:"UiRadioGroup",props:{modelValue:{type:[String,Number],default:""},options:{type:Array,default:()=>[]},name:{type:String,default:"ui-radio"}},emits:["update:modelValue"],setup(t,{emit:u}){const n=u;return(v,l)=>(e.openBlock(),e.createElementBlock("div",Sn,[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options,m=>(e.openBlock(),e.createElementBlock("label",{key:m.value,class:"ui-radio"},[e.createElementVNode("input",{type:"radio",name:t.name,value:m.value,checked:t.modelValue===m.value,onChange:f=>n("update:modelValue",m.value)},null,40,Mn),l[0]||(l[0]=e.createElementVNode("span",{class:"ui-radio__dot","aria-hidden":"true"},null,-1)),e.createElementVNode("span",null,e.toDisplayString(m.label),1)]))),128))]))}},Cn={class:"ui-rating"},An={class:"ui-rating__head"},Dn={class:"ui-rating__label"},Tn={class:"ui-rating__value"},Pn=["aria-label"],Fn=["aria-checked","aria-label","onMouseenter","onFocus","onClick"],Ln={__name:"UiRating",props:{modelValue:{type:Number,default:4},max:{type:Number,default:5},label:{type:String,default:"评分"}},emits:["update:modelValue"],setup(t,{emit:u}){const n=t,v=u,l=e.ref(0),m=e.ref(Number(n.modelValue));e.watch(()=>n.modelValue,d=>{m.value=Number(d)});const f=e.computed(()=>Array.from({length:n.max},(d,b)=>b+1)),r=e.computed(()=>l.value||m.value);function o(d){m.value=d,v("update:modelValue",d)}return(d,b)=>(e.openBlock(),e.createElementBlock("div",Cn,[e.createElementVNode("div",An,[e.createElementVNode("span",Dn,e.toDisplayString(t.label),1),e.createElementVNode("span",Tn,e.toDisplayString(m.value)+" / "+e.toDisplayString(t.max),1)]),e.createElementVNode("div",{class:"ui-rating__stars",role:"radiogroup","aria-label":t.label,onMouseleave:b[1]||(b[1]=g=>l.value=0)},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(f.value,g=>(e.openBlock(),e.createElementBlock("button",{key:g,type:"button",role:"radio","aria-checked":t.modelValue===g,"aria-label":`${g} 星`,class:e.normalizeClass({"is-filled":g<=r.value}),onMouseenter:h=>l.value=g,onFocus:h=>l.value=g,onBlur:b[0]||(b[0]=h=>l.value=0),onClick:h=>o(g)},[...b[2]||(b[2]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M12 3.6l2.6 5.3 5.8.8-4.2 4.1 1 5.8-5.2-2.7-5.2 2.7 1-5.8L3.6 9.7l5.8-.8L12 3.6z"})],-1)])],42,Fn))),128))],40,Pn)]))}},zn=Z(Ln,[["__scopeId","data-v-713a0ba8"]]),Un=["aria-label"],Rn=["viewBox"],Wn=["cx","cy","r","stroke-width"],On=["cx","cy","r","stroke-width","stroke-dasharray","stroke-dashoffset","transform"],Hn={class:"ui-ring__center"},In={__name:"UiRingProgress",props:{value:{type:Number,default:78},size:{type:Number,default:116},stroke:{type:Number,default:10},label:{type:String,default:"今日目标"}},setup(t){const u=t,n=e.computed(()=>{const o=Number(u.value);return Number.isFinite(o)?Math.min(100,Math.max(0,o)):0}),v=e.computed(()=>u.size/2-u.stroke/2-1),l=e.computed(()=>u.size/2),m=e.computed(()=>2*Math.PI*v.value),f=e.ref(0),r=e.computed(()=>m.value*(1-f.value/100));return e.watch(n,o=>{f.value=o}),e.onMounted(()=>{var d;if((d=window.matchMedia)==null?void 0:d.call(window,"(prefers-reduced-motion: reduce)").matches){f.value=n.value;return}requestAnimationFrame(()=>{f.value=n.value})}),(o,d)=>(e.openBlock(),e.createElementBlock("div",{class:"ui-ring",style:e.normalizeStyle({width:`${t.size}px`,height:`${t.size}px`}),role:"img","aria-label":`${t.label} ${n.value}%`},[(e.openBlock(),e.createElementBlock("svg",{viewBox:`0 0 ${t.size} ${t.size}`,"aria-hidden":"true"},[e.createElementVNode("circle",{class:"ui-ring__track",cx:l.value,cy:l.value,r:v.value,fill:"none","stroke-width":t.stroke},null,8,Wn),e.createElementVNode("circle",{class:"ui-ring__progress",cx:l.value,cy:l.value,r:v.value,fill:"none","stroke-width":t.stroke,"stroke-dasharray":m.value,"stroke-dashoffset":r.value,transform:`rotate(-90 ${l.value} ${l.value})`},null,8,On)],8,Rn)),e.createElementVNode("div",Hn,[e.createElementVNode("strong",null,e.toDisplayString(n.value)+"%",1),e.createElementVNode("span",null,e.toDisplayString(t.label),1)])],12,Un))}},qn=Z(In,[["__scopeId","data-v-7c0d1432"]]),jn={key:0,class:"ui-segmented-field__label"},Yn={class:"ui-segmented",role:"group"},Kn=["aria-pressed","onClick"],Xn={__name:"UiSegmented",props:{modelValue:{type:[String,Number],default:""},options:{type:Array,default:()=>[]},label:{type:String,default:""},layout:{type:String,default:"stack"}},emits:["update:modelValue"],setup(t,{emit:u}){const n=t,v=u,l=e.computed(()=>n.options.findIndex(f=>f.value===n.modelValue)),m=e.computed(()=>{const f=n.options.length;return!f||l.value<0?null:{width:`calc((100% - 6px - ${(f-1)*3}px) / ${f})`,transform:`translateX(calc(${l.value*100}% + ${l.value*3}px))`}});return(f,r)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["ui-segmented-field",`ui-segmented-field--${t.layout}`])},[t.label?(e.openBlock(),e.createElementBlock("span",jn,e.toDisplayString(t.label),1)):e.createCommentVNode("",!0),e.createElementVNode("div",Yn,[m.value?(e.openBlock(),e.createElementBlock("span",{key:0,class:"ui-segmented__indicator",style:e.normalizeStyle(m.value),"aria-hidden":"true"},null,4)):e.createCommentVNode("",!0),(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options,o=>(e.openBlock(),e.createElementBlock("button",{key:o.value,type:"button",class:e.normalizeClass({"is-active":t.modelValue===o.value}),"aria-pressed":t.modelValue===o.value,onClick:d=>v("update:modelValue",o.value)},e.toDisplayString(o.label),11,Kn))),128))])],2))}},Gn={key:0,class:"ui-field__label"},Zn={class:"ui-select__view"},Qn=["aria-expanded"],Jn=["aria-label","aria-hidden","inert"],el=["aria-selected","tabindex","onClick"],tl={class:"ui-select__option-label"},nl={key:0,class:"ui-select__check",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.4","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},ll={key:1,class:"ui-field__hint"},ue=12,al={__name:"UiSelect",props:{modelValue:{type:[String,Number],default:""},label:{type:String,default:""},options:{type:Array,default:()=>[]},hint:{type:String,default:""},placeholder:{type:String,default:"请选择"}},emits:["update:modelValue"],setup(t,{emit:u}){const n=t,v=u,l=e.ref(null),m=e.ref(null),f=e.ref(null),r=e.ref(!1),o=e.ref(!1),d=e.ref(!1),b=e.ref(!1),g=e.ref({});let h=null,w=null,S=null,$=null,T=0,F=0;const z=e.computed(()=>{const a=n.options.find(p=>p.value===n.modelValue);return a?a.label:n.modelValue===""||n.modelValue===null||n.modelValue===void 0?n.placeholder:String(n.modelValue)});function W(a){const p=a.getBoundingClientRect();let N=1,_=1;const M=getComputedStyle(a).transform;if(M&&M!=="none"&&typeof DOMMatrixReadOnly=="function"){const D=new DOMMatrixReadOnly(M);N=D.a||1,_=D.d||1}const s=Math.max(1,p.width/N),i=Math.max(1,p.height/_);return{left:p.left+(p.width-s)/2,top:p.top+(p.height-i)/2,width:s,height:i}}function L(){return window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function q(a,p){const N=getComputedStyle(document.documentElement).getPropertyValue(a).trim();if(!N)return p;const _=parseFloat(N);return Number.isFinite(_)?N.endsWith("ms")?_:_*1e3:p}function U(a){var p;h||!((p=l.value)!=null&&p.parentNode)||(h=document.createElement("div"),h.setAttribute("aria-hidden","true"),h.style.cssText="display:block;visibility:hidden;pointer-events:none;flex-shrink:0;",h.style.height=Math.round(a.height)+"px",l.value.parentNode.insertBefore(h,l.value))}function I(){h&&(h.remove(),h=null)}function A(a,p){const N=m.value,_=f.value;if(!N||!_)return{height:0,shiftY:0};const M=N.style.width;N.style.width=a+"px";const s=_.offsetHeight,i=_.querySelector(".is-selected"),D=i?Math.round(i.offsetTop+i.offsetHeight/2-p/2):0;return N.style.width=M,{height:Math.ceil(s),shiftY:D}}const E=fe({canPress:()=>!r.value,onPressStart:()=>{d.value=!0},onPressEnd:()=>{d.value=!1}});async function R(a=!1){if(r.value)return;o.value=!1;const p=l.value;if(!p)return;const N=p.closest(".view");if(N&&typeof N.getAnimations=="function")try{N.getAnimations().forEach(te=>te.finish())}catch{}const _=W(p),M=_.width,s=_.height,i=_.left,D=_.top,y=getComputedStyle(p);T=parseFloat(y.borderLeftWidth)||0,F=parseFloat(y.borderTopWidth)||0,S={left:i,top:D,width:M,height:s},$=null,U(S),g.value={left:i+"px",top:D+"px",width:M+"px",height:s+"px","--select-shift":"0px"},b.value=!0,d.value=!1,await e.nextTick();const B=Math.max(1,M-T*2),{height:C,shiftY:X}=A(B,s),J=C+F*2,ee=Math.max(s,Math.min(J,window.innerHeight-ue*2));let ne=i;ne=Math.max(ue,Math.min(ne,window.innerWidth-ue-M));let oe=D;oe=Math.max(ue,Math.min(oe,window.innerHeight-ue-ee)),p.offsetWidth,requestAnimationFrame(()=>{var te;b.value&&($={left:Math.round(ne)+"px",top:Math.round(oe)+"px",width:M+"px",height:ee+"px","--select-shift":X+"px"},g.value={...$},r.value=!0,a&&((te=m.value)==null||te.focus({preventScroll:!0})))})}function Y(){if(clearTimeout(w),w=null,d.value=!1,!b.value||!$){o.value=!1,r.value=!1,R();return}if(o.value=!1,r.value=!0,S){const a=Math.max(1,S.width-T*2),{shiftY:p}=A(a,S.height);$={...$,"--select-shift":p+"px"}}g.value={...$}}function O(){clearTimeout(w),w=null,o.value=!1,r.value=!1,b.value=!1,d.value=!1,g.value={},S=null,$=null,I()}async function H(){if(o.value||!r.value)return;clearTimeout(w),o.value=!0,r.value=!1,await e.nextTick();const a=l.value;a&&a.offsetWidth,S&&(g.value={left:S.left+"px",top:S.top+"px",width:S.width+"px",height:S.height+"px","--select-shift":"0px"});const p=L()?0:q("--spring-exit-dur",400);w=setTimeout(O,p+80)}function j(a){if(r.value){H();return}if(o.value){Y();return}R(a.detail===0)}function P(a){if(a.value===n.modelValue){H();return}v("update:modelValue",a.value),H()}function x(a){var p;o.value||!r.value||(p=l.value)!=null&&p.contains(a.target)||H()}function V(a){a.key==="Escape"&&(r.value||o.value)&&(a.stopPropagation(),E.cancelPress(),H())}function c(a){var p;if(!((p=l.value)!=null&&p.contains(a.target))){if(o.value||b.value&&!r.value){O();return}r.value&&H()}}function k(){(r.value||o.value)&&H()}return e.onMounted(()=>{document.addEventListener("pointerdown",x),document.addEventListener("keydown",V),window.addEventListener("scroll",c,!0),window.addEventListener("resize",k)}),e.onDeactivated(()=>{E.cancelPress(),O()}),e.onBeforeUnmount(()=>{clearTimeout(w),E.cancelPress(),document.removeEventListener("pointerdown",x),document.removeEventListener("keydown",V),window.removeEventListener("scroll",c,!0),window.removeEventListener("resize",k),I()}),(a,p)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["ui-field ui-select",{"is-open":r.value,"is-closing":o.value}])},[t.label?(e.openBlock(),e.createElementBlock("span",Gn,e.toDisplayString(t.label),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{ref_key:"surfaceEl",ref:l,class:e.normalizeClass(["ui-select__surface",{"is-open":r.value,"is-closing":o.value,"is-floating":b.value,"is-pressed":d.value}]),style:e.normalizeStyle(g.value)},[e.createElementVNode("div",Zn,[e.createElementVNode("button",{type:"button",class:"ui-select__field","aria-haspopup":"listbox","aria-expanded":r.value,onPointerdown:p[0]||(p[0]=(...N)=>e.unref(E).onPointerDown&&e.unref(E).onPointerDown(...N)),onClick:j,onContextmenu:p[1]||(p[1]=e.withModifiers(()=>{},["prevent"]))},[e.createElementVNode("span",{class:e.normalizeClass(["ui-select__value",{"is-placeholder":z.value===e.unref(h)}])},e.toDisplayString(z.value),3),p[2]||(p[2]=e.createElementVNode("span",{class:"ui-select__chevron","aria-hidden":"true"},[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("path",{d:"M6 9l6 6 6-6"})])],-1))],40,Qn)]),e.createElementVNode("div",{ref_key:"panelEl",ref:m,class:"ui-select__panel",role:"listbox","aria-label":t.label||"选项","aria-hidden":r.value?"false":"true",inert:r.value?null:"",tabindex:"-1"},[e.createElementVNode("div",{ref_key:"panelContentEl",ref:f,class:"ui-select__panel-inner"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.options,N=>(e.openBlock(),e.createElementBlock("button",{key:N.value,type:"button",role:"option","aria-selected":N.value===t.modelValue,tabindex:r.value?0:-1,class:e.normalizeClass(["ui-select__option",{"is-selected":N.value===t.modelValue}]),onClick:_=>P(N)},[e.createElementVNode("span",tl,e.toDisplayString(N.label),1),N.value===t.modelValue?(e.openBlock(),e.createElementBlock("svg",nl,[...p[3]||(p[3]=[e.createElementVNode("path",{d:"M5 12.5l4.2 4.2L19 7"},null,-1)])])):e.createCommentVNode("",!0)],10,el))),128))],512)],8,Jn)],6),t.hint?(e.openBlock(),e.createElementBlock("span",ll,e.toDisplayString(t.hint),1)):e.createCommentVNode("",!0)],2))}},ol=Z(al,[["__scopeId","data-v-922f19c9"]]),rl={__name:"UiSkeleton",props:{width:{type:String,default:"100%"},height:{type:String,default:"14px"},radius:{type:String,default:"10px"}},setup(t){return(u,n)=>(e.openBlock(),e.createElementBlock("span",{class:"ui-skeleton",style:e.normalizeStyle({width:t.width,height:t.height,borderRadius:t.radius}),"aria-hidden":"true"},null,4))}},il={class:"ui-slider__head"},sl={key:0,class:"ui-slider__label"},ul={key:1,class:"ui-slider__value"},cl=["aria-label","aria-valuemin","aria-valuemax","aria-valuenow","aria-valuetext"],dl={__name:"UiSlider",props:{modelValue:{type:Number,default:50},min:{type:Number,default:0},max:{type:Number,default:100},step:{type:Number,default:1},label:{type:String,default:""},unit:{type:String,default:""},showValue:{type:Boolean,default:!0},stops:{type:Array,default:null},snapCount:{type:Number,default:0},stiffness:{type:Number,default:520},dampingRatio:{type:Number,default:1},flingTime:{type:Number,default:.11},rubber:{type:Number,default:.32},maxOverscroll:{type:Number,default:.06}},emits:["update:modelValue","snap","drag-start","drag-end"],setup(t,{emit:u}){const n=t,v=u,l=e.ref(null),m=e.ref(!1),f=e.ref(w(n.modelValue));let r=f.value,o=0,d=0;const b=e.computed(()=>{if(Array.isArray(n.stops)&&n.stops.length)return[...n.stops].filter(c=>Number.isFinite(c)).sort((c,k)=>c-k);if(n.snapCount>1){const c=[];for(let k=0;k<n.snapCount;k+=1)c.push(n.min+h.value*k/(n.snapCount-1));return c}return null}),g=e.computed(()=>Array.isArray(b.value)&&b.value.length>0),h=e.computed(()=>n.max-n.min||1);function w(c){return Number.isFinite(c)?Math.min(n.max,Math.max(n.min,c)):n.min}function S(c){if(n.step>0){const k=Math.round((c-n.min)/n.step)*n.step+n.min;return Math.min(n.max,Math.max(n.min,k))}return Math.min(n.max,Math.max(n.min,c))}const $=e.computed(()=>(f.value-n.min)/h.value*100),T=e.computed(()=>S(f.value));e.watch(()=>n.modelValue,c=>{m.value||H(w(c))});function F(c){var p;const k=(p=l.value)==null?void 0:p.getBoundingClientRect();if(!k||!k.width)return f.value;const a=(c-k.left)/k.width;return n.min+a*h.value}function z(c){const k=c>n.max?c-n.max:c<n.min?c-n.min:0;if(!k)return c;const a=h.value*n.maxOverscroll,p=Math.sign(k)*Math.min(Math.abs(k)*n.rubber,a);return(k>0?n.max:n.min)+p}let W=[];function L(c){const k=performance.now();for(W.push({t:k,v:c});W.length>2&&k-W[0].t>90;)W.shift()}function q(){if(W.length<2)return 0;const c=W[0],k=W[W.length-1],a=(k.t-c.t)/1e3;return a<=0?0:(k.v-c.v)/a}let U=null;function I(c){if(c.button!==void 0&&c.button!==0&&c.pointerType==="mouse")return;const k=l.value;if(!k)return;x(),m.value=!0,U=c.pointerId;try{k.setPointerCapture(c.pointerId)}catch{}W=[];const a=F(c.clientX);f.value=a,L(a),r=a,v("update:modelValue",S(a)),v("drag-start"),c.preventDefault()}function A(c){if(!m.value||c.pointerId!==U)return;const k=z(F(c.clientX));f.value=k,r=k,L(k),v("update:modelValue",S(k)),c.preventDefault()}function E(c){var p;if(!m.value||c.pointerId!==U)return;m.value=!1,U=null;try{(p=l.value)==null||p.releasePointerCapture(c.pointerId)}catch{}o=q();const k=f.value+o*n.flingTime;let a;g.value?a=R(k):a=w(k),v("update:modelValue",S(a)),v("drag-end"),H(a)}function R(c){const k=b.value;let a=0,p=Math.abs(c-k[0]);for(let N=1;N<k.length;N+=1){const _=Math.abs(c-k[N]);_<p&&(p=_,a=N)}return k[a]}function Y(c){return g.value?b.value.findIndex(k=>Math.abs(k-c)<1e-6):-1}function O(c){const k=Y(c);k>=0?v("snap",{index:k,value:c}):g.value||v("snap",{index:-1,value:S(c)})}function H(c){if(r=c,Math.abs(r-f.value)<1e-4){f.value=r,O(r);return}d||(d=requestAnimationFrame(P))}let j=0;function P(c){d=0,j||(j=c);let k=(c-j)/1e3;j=c,k=Math.min(k,1/30);const a=Math.sqrt(Math.max(1,n.stiffness)),p=2*n.dampingRatio*a,N=f.value-r,_=-a*a*N-p*o;if(o+=_*k,f.value+=o*k,Math.abs(N)<.3&&Math.abs(o)<2){f.value=r,o=0,j=0,O(r);return}d=requestAnimationFrame(P)}function x(){d&&cancelAnimationFrame(d),d=0,j=0,o=0}function V(c){const k=Math.max(n.step,h.value*.1);let a=null;switch(c.key){case"ArrowRight":case"ArrowUp":a=f.value+n.step;break;case"ArrowLeft":case"ArrowDown":a=f.value-n.step;break;case"PageUp":a=f.value+k;break;case"PageDown":a=f.value-k;break;case"Home":a=n.min;break;case"End":a=n.max;break;default:return}c.preventDefault(),x();const p=g.value?[R(a)]:[w(a)];f.value=w(a),v("update:modelValue",S(p[0])),H(p[0])}return e.onBeforeUnmount(()=>{x()}),(c,k)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["ui-slider",{"is-dragging":m.value,"is-stepped":g.value}])},[e.createElementVNode("div",il,[t.label?(e.openBlock(),e.createElementBlock("span",sl,e.toDisplayString(t.label),1)):e.createCommentVNode("",!0),t.showValue?(e.openBlock(),e.createElementBlock("span",ul,e.toDisplayString(T.value)+e.toDisplayString(t.unit),1)):e.createCommentVNode("",!0)]),e.createElementVNode("div",{ref_key:"trackEl",ref:l,class:"ui-slider__track",style:e.normalizeStyle({"--pct":`${$.value}%`}),onPointerdown:I,onPointermove:A,onPointerup:E,onPointercancel:E},[k[1]||(k[1]=e.createElementVNode("span",{class:"ui-slider__fill","aria-hidden":"true"},null,-1)),e.createElementVNode("button",{type:"button",class:"ui-slider__thumb",role:"slider","aria-label":t.label||"滑块","aria-valuemin":t.min,"aria-valuemax":t.max,"aria-valuenow":T.value,"aria-valuetext":`${T.value}${t.unit}`,onKeydown:V},[...k[0]||(k[0]=[e.createElementVNode("span",{class:"ui-slider__thumb-dot","aria-hidden":"true"},null,-1)])],40,cl)],36)],2))}},ml=Z(dl,[["__scopeId","data-v-c952a627"]]),fl=["aria-label"],pl={viewBox:"0 0 300 84",preserveAspectRatio:"none","aria-hidden":"true"},vl=["d","fill"],hl=["d"],gl={__name:"UiSparkline",props:{values:{type:Array,default:()=>[12,17,15,23,20,28,25,33]},label:{type:String,default:"趋势迷你图"}},setup(t){let u=0;const n=t,v=`ui-spark-fill-${u++}`,l=e.computed(()=>{const o=n.values.map(Number).filter(Number.isFinite);return o.length?o:[0]}),m=e.computed(()=>{const o=l.value,d=Math.max(...o),b=Math.min(...o),g=d-b||1,h=o.length>1?300/(o.length-1):300;return o.map((w,S)=>({x:S*h,y:78-(w-b)/g*62}))}),f=e.computed(()=>m.value.map((o,d)=>`${d===0?"M":"L"}${o.x.toFixed(1)},${o.y.toFixed(1)}`).join(" ")),r=e.computed(()=>`${f.value} L300,84 L0,84 Z`);return(o,d)=>(e.openBlock(),e.createElementBlock("div",{class:"ui-sparkline",role:"img","aria-label":t.label},[(e.openBlock(),e.createElementBlock("svg",pl,[e.createElementVNode("defs",null,[e.createElementVNode("linearGradient",{id:v,x1:"0",y1:"0",x2:"0",y2:"1"},[...d[0]||(d[0]=[e.createElementVNode("stop",{offset:"0%",class:"ui-sparkline__stop-start"},null,-1),e.createElementVNode("stop",{offset:"100%",class:"ui-sparkline__stop-end"},null,-1)])])]),e.createElementVNode("path",{class:"ui-sparkline__area",d:r.value,fill:`url(#${v})`},null,8,vl),e.createElementVNode("path",{class:"ui-sparkline__line",d:f.value,fill:"none","vector-effect":"non-scaling-stroke"},null,8,hl)]))],8,fl))}},yl=Z(gl,[["__scopeId","data-v-edae2913"]]),kl=["aria-label"],bl={__name:"UiSpinner",props:{size:{type:String,default:"md"},label:{type:String,default:"加载中"}},setup(t){return(u,n)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["ui-spinner",t.size!=="md"?`ui-spinner--${t.size}`:""]),role:"status","aria-label":t.label},null,10,kl))}},wl={key:0,class:"ui-stepper__field-label"},xl={key:1,class:"ui-stepper__label"},El=["aria-label"],_l=["aria-disabled"],Vl={class:"ui-stepper__flow"},Nl={class:"ui-stepper__box"},Bl={class:"ui-stepper__unit"},Sl=["aria-disabled"],Ml={__name:"UiStepper",props:{modelValue:{type:Number,default:1},label:{type:String,default:"数量"},min:{type:Number,default:0},max:{type:Number,default:99},step:{type:Number,default:1},unit:{type:String,default:""},size:{type:String,default:"md"},controls:{type:String,default:"sides"},roll:{type:String,default:"standard"},fieldLabel:{type:String,default:""}},emits:["update:modelValue"],setup(t,{emit:u}){const n=t,v=u,l=e.ref(Number(n.modelValue)),m=e.ref(Number(n.modelValue)),f=e.ref(!1),r=e.ref(0),o=e.shallowRef(null),d=e.ref("");let b=null,g=null,h=0;e.watch(()=>n.modelValue,A=>{const E=Number(A);Number.isFinite(E)&&(l.value=E)});const w=e.computed(()=>{const A=Number(l.value);return Number.isFinite(A)?Math.min(n.max,Math.max(n.min,A)):n.min}),S=e.computed(()=>w.value>n.min),$=e.computed(()=>w.value<n.max),T=e.computed(()=>{const A=Math.abs(w.value-m.value),E=n.step>0?A/n.step:1;return Math.max(.3,Math.min(2.2,.35+E*.2))+"em"}),F=e.computed(()=>{const E=w.value>=m.value?"up":"down";return n.roll!=="reverse"?E:E==="up"?"down":"up"});function z(){return window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function W(A){o.value=A,m.value=A,f.value=!1,cancelAnimationFrame(h),clearTimeout(b),e.nextTick(()=>{h=requestAnimationFrame(()=>{h=0,f.value=!0,r.value+=1,b=setTimeout(()=>{b=null,f.value=!1,o.value=null},z()?0:430)})})}function L(A){if(!Number.isFinite(A))return;const E=Math.min(n.max,Math.max(n.min,A));if(E===w.value)return;const R=w.value;l.value=E,v("update:modelValue",E),W(R)}function q(A){z()||(d.value="",clearTimeout(g),requestAnimationFrame(()=>{d.value=A,g=setTimeout(()=>{d.value=""},420)}))}function U(){if(!S.value){q("minus");return}L(w.value-n.step)}function I(){if(!$.value){q("plus");return}L(w.value+n.step)}return e.onBeforeUnmount(()=>{cancelAnimationFrame(h),clearTimeout(b),clearTimeout(g)}),(A,E)=>(e.openBlock(),e.createElementBlock("div",{class:e.normalizeClass(["ui-stepper",[`ui-stepper--${t.size}`,`ui-stepper--ctrl-${t.controls}`,`ui-stepper--dir-${F.value}`,d.value?`is-bumping-${d.value}`:""]])},[t.fieldLabel?(e.openBlock(),e.createElementBlock("span",wl,e.toDisplayString(t.fieldLabel),1)):e.createCommentVNode("",!0),t.label?(e.openBlock(),e.createElementBlock("span",xl,e.toDisplayString(t.label),1)):e.createCommentVNode("",!0),e.createElementVNode("div",{class:"ui-stepper__control",role:"group","aria-label":t.label||t.fieldLabel},[e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ui-stepper__btn ui-stepper__btn--minus",{"is-disabled":!S.value}]),"aria-disabled":!S.value,"aria-label":"减少",onClick:U},[...E[0]||(E[0]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.4","stroke-linecap":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M5 12h14"})],-1)])],10,_l),e.createElementVNode("div",{class:"ui-stepper__stage",style:e.normalizeStyle({"--roll-distance":T.value})},[e.createElementVNode("span",Vl,[e.createElementVNode("span",Nl,[e.createElementVNode("span",{class:e.normalizeClass(["ui-stepper__value ui-stepper__value--leave",{"is-rolling":f.value}]),"aria-hidden":"true"},e.toDisplayString(o.value),3),(e.openBlock(),e.createElementBlock("span",{key:r.value,class:e.normalizeClass(["ui-stepper__value ui-stepper__value--enter",{"is-rolling":f.value}]),"aria-live":"polite"},e.toDisplayString(w.value),3))]),e.createElementVNode("span",Bl,e.toDisplayString(t.unit),1)])],4),e.createElementVNode("button",{type:"button",class:e.normalizeClass(["ui-stepper__btn ui-stepper__btn--plus",{"is-disabled":!$.value}]),"aria-disabled":!$.value,"aria-label":"增加",onClick:I},[...E[1]||(E[1]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.4","stroke-linecap":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M12 5v14M5 12h14"})],-1)])],10,Sl)],8,El)],2))}},$l=Z(Ml,[["__scopeId","data-v-04de9fcf"]]),Cl=["aria-checked","aria-label"],Al={__name:"UiSwitch",props:{modelValue:{type:Boolean,default:!1},label:{type:String,default:""}},emits:["update:modelValue"],setup(t,{emit:u}){const n=u;return(v,l)=>(e.openBlock(),e.createElementBlock("button",{type:"button",class:e.normalizeClass(["ui-switch",{"is-on":t.modelValue}]),role:"switch","aria-checked":t.modelValue,"aria-label":t.label||"开关",onClick:l[0]||(l[0]=m=>n("update:modelValue",!t.modelValue))},[...l[1]||(l[1]=[e.createElementVNode("span",{class:"ui-switch__thumb"},null,-1)])],10,Cl))}},Dl={class:"ui-field"},Tl={key:0,class:"ui-field__label"},Pl=["value","placeholder","rows","aria-invalid"],Fl={key:1,class:"ui-field__error"},Ll={key:2,class:"ui-field__hint"},zl={__name:"UiTextarea",props:{modelValue:{type:String,default:""},label:{type:String,default:""},placeholder:{type:String,default:""},hint:{type:String,default:""},error:{type:String,default:""},rows:{type:Number,default:3}},emits:["update:modelValue"],setup(t,{emit:u}){const n=u;return(v,l)=>(e.openBlock(),e.createElementBlock("label",Dl,[t.label?(e.openBlock(),e.createElementBlock("span",Tl,e.toDisplayString(t.label),1)):e.createCommentVNode("",!0),e.createElementVNode("span",{class:e.normalizeClass(["ui-field__control ui-field__control--area",{"is-error":!!t.error}])},[e.createElementVNode("textarea",{value:t.modelValue,placeholder:t.placeholder,rows:t.rows,"aria-invalid":!!t.error,onInput:l[0]||(l[0]=m=>n("update:modelValue",m.target.value))},null,40,Pl)],2),t.error?(e.openBlock(),e.createElementBlock("span",Fl,e.toDisplayString(t.error),1)):t.hint?(e.openBlock(),e.createElementBlock("span",Ll,e.toDisplayString(t.hint),1)):e.createCommentVNode("",!0)]))}},Ul={class:"ui-time"},Rl={class:"ui-time__label"},Wl=["aria-expanded"],Ol={class:"ui-time__value"},Hl=["aria-hidden","inert"],Il={class:"ui-time__head"},ql={class:"ui-time__body"},jl=["data-value","tabindex","onClick"],Yl=["data-value","tabindex","onClick"],Kl=["tabindex","onClick"],Xl={class:"ui-time__actions"},Gl={__name:"UiTimePicker",props:{modelValue:{type:String,default:"09:00"},label:{type:String,default:"时间"},presets:{type:Array,default:()=>[{label:"早上",value:"08:00"},{label:"中午",value:"12:00"},{label:"傍晚",value:"18:30"},{label:"晚上",value:"21:00"}]}},emits:["update:modelValue"],setup(t,{emit:u}){const n=t,v=u,l=e.ref(null),m=e.ref(null),f=e.ref(null),r=e.ref(null),o=e.ref(null),d=e.ref(null),b=e.ref(H(n.modelValue)),g=e.ref("09"),h=e.ref("00"),{open:w,closing:S,floating:$,compressed:T,style:F,viewStyle:z,openWindow:W,closeWindow:L,toggleWindow:q}=ve({surface:()=>l.value,panel:()=>f.value,content:()=>r.value,width:()=>Math.min(300,window.innerWidth-32),onOpened:()=>{requestAnimationFrame(()=>x("auto"))},onClosed:()=>{var y;(y=m.value)==null||y.focus({preventScroll:!0})}}),U=Array.from({length:24},(y,B)=>String(B).padStart(2,"0")),I=Array.from({length:60},(y,B)=>String(B).padStart(2,"0")),A=e.computed(()=>b.value),E=e.computed(()=>`${g.value}:${h.value}`),R=e.computed(()=>(Array.isArray(n.presets)?n.presets:[]).map(y=>{if(typeof y=="string")return{label:y,value:H(y)};if(!y||typeof y!="object")return null;const B=y.value??(y.hour!==void 0?`${O(y.hour)}:${O(y.minute??0)}`:""),C=H(B);return{label:y.label||C,value:C}}).filter(Boolean)),Y=e.computed(()=>Math.min(Math.max(R.value.length,1),4));function O(y){return String(y).padStart(2,"0")}function H(y){if(typeof y!="string"||!/^\d{1,2}:\d{2}$/.test(y))return"09:00";const[B,C]=y.split(":").map(Number);return B>23||C>59?"09:00":`${O(B)}:${O(C)}`}function j(){const[y,B]=b.value.split(":");g.value=y,h.value=B}function P(y,B,C="smooth"){if(!y)return;const X=y.querySelector(`[data-value="${B}"]`);if(!X)return;const J=X.offsetTop-(y.clientHeight-X.offsetHeight)/2;y.scrollTo({top:Math.max(0,J),behavior:C})}function x(y="smooth"){P(o.value,g.value,y),P(d.value,h.value,y)}function V(y){if(!y)return"";const B=y.scrollTop+y.clientHeight/2;let C="",X=1/0;return y.querySelectorAll("button[data-value]").forEach(J=>{const ee=J.offsetTop+J.offsetHeight/2,ne=Math.abs(ee-B);ne<X&&(X=ne,C=J.dataset.value)}),C}function c(y,B){if(!y)return;const C=V(y);C&&(B(C),P(y,C))}function k(y,B){let C=0;return{onScroll(){clearTimeout(C),C=setTimeout(()=>{C=0,c(y.value,B)},140)}}}const a=k(o,y=>{g.value=y}),p=k(d,y=>{h.value=y});function N(){j(),W()}function _(){if(w.value){L();return}if(S.value||T.value){j(),q();return}N()}function M(y){g.value=y,P(o.value,y)}function s(y){h.value=y,P(d.value,y)}function i(y){const[B,C]=H(y).split(":");g.value=B,h.value=C,requestAnimationFrame(()=>x())}function D(){b.value=E.value,v("update:modelValue",E.value),L()}return e.watch(()=>n.modelValue,y=>{b.value=H(y),$.value||j()}),(y,B)=>(e.openBlock(),e.createElementBlock("div",Ul,[e.createElementVNode("span",Rl,e.toDisplayString(t.label),1),e.createElementVNode("div",{ref_key:"surfaceEl",ref:l,class:e.normalizeClass(["ui-time__surface ui-morph",{"is-open":e.unref(w),"is-closing":e.unref(S),"is-floating":e.unref($),"is-compressed":e.unref(T)}]),style:e.normalizeStyle(e.unref(F))},[e.createElementVNode("div",{class:"ui-time__view ui-morph__view",style:e.normalizeStyle(e.unref(z))},[e.createElementVNode("button",{ref_key:"fieldEl",ref:m,type:"button",class:"ui-time__field","aria-expanded":e.unref($),"aria-haspopup":"dialog",onClick:_},[B[5]||(B[5]=e.createElementVNode("span",{class:"ui-time__icon","aria-hidden":"true"},[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("circle",{cx:"12",cy:"12",r:"9"}),e.createElementVNode("path",{d:"M12 7v5l3.2 1.9"})])],-1)),e.createElementVNode("span",Ol,e.toDisplayString(A.value),1),e.createElementVNode("span",{class:e.normalizeClass(["ui-time__chevron",{"is-open":e.unref(w)}]),"aria-hidden":"true"},[...B[4]||(B[4]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.2","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("path",{d:"M6 9l6 6 6-6"})],-1)])],2)],8,Wl)],4),e.createElementVNode("div",{ref_key:"panelEl",ref:f,class:"ui-time__pop ui-morph__panel",role:"dialog","aria-label":"选择时间","aria-hidden":e.unref(w)?"false":"true",inert:e.unref(w)?null:"",tabindex:"-1",onPointerdown:B[3]||(B[3]=e.withModifiers(()=>{},["stop"]))},[e.createElementVNode("div",{ref_key:"panelContentEl",ref:r,class:"ui-time__pop-inner"},[e.createElementVNode("div",Il,[B[6]||(B[6]=e.createElementVNode("span",null,"选择时间",-1)),e.createElementVNode("strong",null,e.toDisplayString(E.value),1)]),e.createElementVNode("div",ql,[B[7]||(B[7]=e.createElementVNode("span",{class:"ui-time__highlight","aria-hidden":"true"},null,-1)),e.createElementVNode("div",{ref_key:"hourColumn",ref:o,class:"ui-time__column","aria-label":"小时",onScrollPassive:B[0]||(B[0]=(...C)=>e.unref(a).onScroll&&e.unref(a).onScroll(...C))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(U),C=>(e.openBlock(),e.createElementBlock("button",{key:C,type:"button","data-value":C,tabindex:e.unref(w)?0:-1,class:e.normalizeClass({"is-selected":g.value===C}),onClick:X=>M(C)},e.toDisplayString(C),11,jl))),128))],544),B[8]||(B[8]=e.createElementVNode("span",{class:"ui-time__colon","aria-hidden":"true"},":",-1)),e.createElementVNode("div",{ref_key:"minuteColumn",ref:d,class:"ui-time__column","aria-label":"分钟",onScrollPassive:B[1]||(B[1]=(...C)=>e.unref(p).onScroll&&e.unref(p).onScroll(...C))},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(e.unref(I),C=>(e.openBlock(),e.createElementBlock("button",{key:C,type:"button","data-value":C,tabindex:e.unref(w)?0:-1,class:e.normalizeClass({"is-selected":h.value===C}),onClick:X=>s(C)},e.toDisplayString(C),11,Yl))),128))],544)]),R.value.length?(e.openBlock(),e.createElementBlock("div",{key:0,class:"ui-time__presets",style:e.normalizeStyle({"--preset-cols":Y.value})},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(R.value,C=>(e.openBlock(),e.createElementBlock("button",{key:`${C.value}-${C.label}`,type:"button",tabindex:e.unref(w)?0:-1,onClick:X=>i(C.value)},e.toDisplayString(C.label),9,Kl))),128))],4)):e.createCommentVNode("",!0),e.createElementVNode("div",Xl,[e.createElementVNode("button",{type:"button",class:"ui-time__cancel",onClick:B[2]||(B[2]=(...C)=>e.unref(L)&&e.unref(L)(...C))},"取消"),e.createElementVNode("button",{type:"button",class:"ui-time__confirm",onClick:D},"完成")])],512)],40,Hl)],6)]))}},Zl=Z(Gl,[["__scopeId","data-v-74660981"]]),Ql=["onClick"],Jl={__name:"UiToastHost",setup(t,{expose:u}){const n=e.ref([]),v=new Map;let l=1;function m(r){const o=v.get(r);o&&(clearTimeout(o),v.delete(r)),n.value=n.value.filter(d=>d.id!==r)}function f(r,o="info",d=2600){const b=l++;n.value.push({id:b,message:r,tone:o});const g=setTimeout(()=>m(b),d);return v.set(b,g),b}return e.onBeforeUnmount(()=>{v.forEach(r=>clearTimeout(r)),v.clear()}),u({show:f,dismiss:m}),(r,o)=>(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[e.createVNode(e.TransitionGroup,{name:"ui-toast",tag:"div",class:"ui-toast-host","aria-live":"polite"},{default:e.withCtx(()=>[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(n.value,d=>(e.openBlock(),e.createElementBlock("div",{key:d.id,class:e.normalizeClass(["ui-toast",`ui-toast--${d.tone}`])},[o[1]||(o[1]=e.createElementVNode("span",{class:"ui-toast__dot","aria-hidden":"true"},null,-1)),e.createElementVNode("span",null,e.toDisplayString(d.message),1),e.createElementVNode("button",{type:"button",class:"ui-toast__close","aria-label":"关闭提示",onClick:b=>m(d.id)},[...o[0]||(o[0]=[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.6","stroke-linecap":"round","aria-hidden":"true"},[e.createElementVNode("path",{d:"M6 6l12 12M18 6L6 18"})],-1)])],8,Ql)],2))),128))]),_:1})]))}},ea=["aria-expanded"],ta={class:"ui-tool-menu__label"},na=["aria-hidden","inert"],la=["tabindex","onClick"],aa={class:"ui-tool-menu__item-copy"},oa={class:"ui-tool-menu__item-label"},ra={key:0,class:"ui-tool-menu__item-desc"},ia=248,sa=184,ua=12,ca={__name:"UiToolMenu",props:{label:{type:String,default:"工具"},size:{type:String,default:"md"},items:{type:Array,default:()=>[{value:"pin",label:"置顶记录",description:"固定在列表顶部"},{value:"duplicate",label:"复制为草稿",description:"保留本次运动数据"},{value:"archive",label:"归档记录",description:"从本周视图中隐藏"}]}},emits:["select"],setup(t,{expose:u,emit:n}){const v=n,l=e.ref(null),m=e.ref(null),f=e.ref(null),r=e.ref(!1),o=e.ref(!1),d=e.ref(!1),b=e.ref({}),g=e.ref({});let h=null,w=null,S=null,$=null,T=!1;function F(P){const x=P.getBoundingClientRect();let V=1,c=1;const k=getComputedStyle(P).transform;if(k&&k!=="none"&&typeof DOMMatrixReadOnly=="function"){const N=new DOMMatrixReadOnly(k);V=N.a||1,c=N.d||1}const a=Math.max(1,x.width/V),p=Math.max(1,x.height/c);return{left:x.left+(x.width-a)/2,top:x.top+(x.height-p)/2,width:a,height:p}}function z(){return Math.min(ia,Math.max(sa,window.innerWidth-36))}function W(){return window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}function L(P,x){const V=getComputedStyle(document.documentElement).getPropertyValue(P).trim();if(!V)return x;const c=parseFloat(V);return Number.isFinite(c)?V.endsWith("ms")?c:c*1e3:x}function q(P){const x=m.value,V=f.value;if(!x||!V)return 0;const c=x.style.width;x.style.width=P+"px";const k=V.offsetHeight;return x.style.width=c,Math.ceil(k)}const U=fe({canPress:()=>!r.value,onPressStart:()=>{d.value=!0},onPressEnd:()=>{d.value=!1}});async function I(P=!1){if(r.value)return;o.value=!1;const x=l.value;if(!x)return;const V=F(x),c=V.width,k=V.height,a=getComputedStyle(x),p=parseFloat(a.borderLeftWidth)||0,N=parseFloat(a.borderTopWidth)||0,_=Math.max(z(),c),M=Math.max(1,Math.round(_-p*2)),s=Math.max(k,window.innerHeight-ua*2),i=Math.max(k,Math.min(q(M)+N*2,s)),D=Math.max(1,c-p*2),y=Math.max(1,k-N*2);T=P,w={width:c+"px",height:k+"px"},S={width:_+"px",height:i+"px"},$={width:D+"px",height:y+"px"},g.value={width:D+"px",height:y+"px"},b.value={width:c+"px",height:k+"px"},d.value=!1,await e.nextTick();const B=l.value;B&&B.offsetWidth,requestAnimationFrame(()=>{var C;o.value||(b.value={...S},r.value=!0,T&&((C=m.value)==null||C.focus({preventScroll:!0})),T=!1)})}function A(){var P;if(clearTimeout(h),h=null,d.value=!1,!S){o.value=!1,r.value=!1,I();return}o.value=!1,r.value=!0,g.value={...$},b.value={...S},(P=m.value)==null||P.focus({preventScroll:!0})}async function E(){if(o.value||!r.value)return;clearTimeout(h);const P=(w==null?void 0:w.width)||"0px",x=(w==null?void 0:w.height)||"0px";o.value=!0,r.value=!1,await e.nextTick();const V=l.value;V&&V.offsetWidth,b.value={width:P,height:x};const c=W()?0:L("--spring-exit-dur",400);h=setTimeout(()=>{o.value=!1,b.value={},g.value={},w=null,S=null,$=null,h=null},c+80)}function R(){if(r.value){E();return}if(o.value){A();return}I(!0)}function Y(P){v("select",P),E()}function O(P){P.key==="Escape"&&(r.value||o.value)&&(P.stopPropagation(),U.cancelPress(),E())}function H(P){var x;r.value&&((x=l.value)!=null&&x.contains(P.target)||E())}function j(){(r.value||o.value)&&E()}return e.onMounted(()=>{window.addEventListener("pointerdown",H),window.addEventListener("resize",j),document.addEventListener("keydown",O)}),e.onDeactivated(()=>{clearTimeout(h),h=null,U.cancelPress(),r.value=!1,o.value=!1,d.value=!1,b.value={},g.value={},w=null,S=null,$=null}),e.onBeforeUnmount(()=>{clearTimeout(h),window.removeEventListener("pointerdown",H),window.removeEventListener("resize",j),document.removeEventListener("keydown",O)}),u({close:E}),(P,x)=>(e.openBlock(),e.createElementBlock("div",{ref_key:"root",ref:l,class:e.normalizeClass(["ui-tool-menu ui-morph",[t.size!=="md"?`is-${t.size}`:"",{"is-open":r.value,"is-closing":o.value,"is-pressed":d.value}]]),style:e.normalizeStyle(b.value)},[e.createElementVNode("div",{class:"ui-tool-menu__view ui-morph__view",style:e.normalizeStyle(g.value)},[e.createElementVNode("button",{type:"button",class:"ui-tool-menu__trigger","aria-haspopup":"menu","aria-expanded":r.value,onPointerdown:x[0]||(x[0]=(...V)=>e.unref(U).onPointerDown&&e.unref(U).onPointerDown(...V)),onClick:R,onContextmenu:x[1]||(x[1]=e.withModifiers(()=>{},["prevent"]))},[x[2]||(x[2]=e.createStaticVNode('<span class="ui-tool-menu__icon" aria-hidden="true" data-v-06458478><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" data-v-06458478><path d="M4 7h10M18 7h2M4 17h2M10 17h10" data-v-06458478></path><circle cx="16" cy="7" r="2" data-v-06458478></circle><circle cx="8" cy="17" r="2" data-v-06458478></circle></svg></span>',1)),e.createElementVNode("span",ta,e.toDisplayString(t.label),1),x[3]||(x[3]=e.createElementVNode("span",{class:"ui-tool-menu__chevron","aria-hidden":"true"},[e.createElementVNode("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2.4","stroke-linecap":"round","stroke-linejoin":"round"},[e.createElementVNode("path",{d:"M6 9l6 6 6-6"})])],-1))],40,ea)],4),e.createElementVNode("div",{ref_key:"panel",ref:m,class:"ui-tool-menu__panel ui-morph__panel",role:"menu",tabindex:"-1","aria-hidden":r.value?"false":"true",inert:r.value?null:""},[e.createElementVNode("div",{ref_key:"panelContent",ref:f,class:"ui-tool-menu__inner"},[(e.openBlock(!0),e.createElementBlock(e.Fragment,null,e.renderList(t.items,V=>(e.openBlock(),e.createElementBlock("button",{key:V.value??V.label,type:"button",role:"menuitem",tabindex:r.value?0:-1,class:e.normalizeClass(["ui-tool-menu__item",{"is-danger":V.tone==="danger"}]),onClick:c=>Y(V)},[x[4]||(x[4]=e.createElementVNode("span",{class:"ui-tool-menu__item-dot","aria-hidden":"true"},null,-1)),e.createElementVNode("span",aa,[e.createElementVNode("span",oa,e.toDisplayString(V.label),1),V.description?(e.openBlock(),e.createElementBlock("span",ra,e.toDisplayString(V.description),1)):e.createCommentVNode("",!0)])],10,la))),128))],512)],8,na)],6))}},da=Z(ca,[["__scopeId","data-v-06458478"]]),ma={class:"ui-tooltip__bubble",role:"tooltip"},fa={__name:"UiTooltip",props:{text:{type:String,default:"提示"},placement:{type:String,default:"top"}},setup(t){return(u,n)=>(e.openBlock(),e.createElementBlock("span",{class:e.normalizeClass(["ui-tooltip",`ui-tooltip--${t.placement}`]),tabindex:"0"},[e.renderSlot(u.$slots,"default"),e.createElementVNode("span",ma,e.toDisplayString(t.text),1)],2))}};let me=null;function G(){return me}function pa(t){me=t}function xe(t){(!t||me===t)&&(me=null)}const va={key:0,class:"expand-content"},ha=80,ga=180,Ee=".chart, .bar, .bar-col, button, a, input, select, textarea, [data-no-expand]",ya="(min-width: 900px)",_e={__name:"ExpandableCard",props:{tag:{type:String,default:"section"},expandKey:{type:String,required:!0},routeName:{type:String,required:!0},parentRouteName:{type:String,required:!0},routeParams:{type:Object,default:()=>({})},variant:{type:String,default:"card"},feature:{type:Boolean,default:!1},content:{type:[Object,Function],required:!0},contentProps:{type:Object,default:()=>({})}},setup(t,{expose:u}){const n=t,v=ke.useRoute(),l=ke.useRouter(),m=e.computed(()=>v.name!==n.routeName?!1:Object.entries(n.routeParams).every(([s,i])=>String(v.params[s]??"")===String(i)));function f(){return window.matchMedia&&window.matchMedia(ya).matches}function r(){if(!f())return{top:"0px",left:"0px",width:"100vw",height:"100dvh",radius:"0px",background:"var(--background)",border:"transparent",shadow:"none"};const s=Math.round(Math.min(680,Math.max(360,window.innerWidth-140))),i=Math.round(Math.min(760,Math.max(320,window.innerHeight-140)));return{top:Math.round((window.innerHeight-i)/2)+"px",left:Math.round((window.innerWidth-s)/2)+"px",width:s+"px",height:i+"px",radius:"calc(var(--r-card) * var(--radius-scale))",background:"var(--surface)",border:"var(--outline-variant)",shadow:"none"}}let o=null,d=null,b=!1,g=null,h="",w=null,S="pointer",$=!1;const T=e.ref(null),F=e.ref(null),z=e.ref(null),W=e.ref(!1),L=e.ref(!1),q=e.ref(!1),U=e.ref(!1),I=e.ref(!1),A=e.ref(!1),E=e.computed(()=>[n.variant==="card"?"card":n.variant,n.feature?"card--feature":"",{"is-expanded":W.value,"is-closing":U.value,"is-settling":I.value}]),R=()=>window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches;function Y(s,i){const D=getComputedStyle(document.documentElement).getPropertyValue(s).trim();if(!D)return i;const y=parseFloat(D);return Number.isFinite(y)?D.endsWith("ms")?y:y*1e3:i}function O(){g=document.getElementById("scrollArea"),g&&(h=g.style.overflow,g.style.overflow="hidden")}function H(){g&&(g.style.overflow=h,g=null)}function j(){f()&&(L.value=!0,requestAnimationFrame(()=>{L.value&&(q.value=!0)}))}function P(s,i){return Array.from(s.children).find(D=>D.classList.contains(i))||null}function x(s,i,D){s.style.position="fixed",s.style.zIndex="300",s.style.margin="0",s.style.maxWidth="none",s.style.top=i.top+"px",s.style.left=i.left+"px",s.style.width=i.width+"px",s.style.height=i.height+"px",s.style.overflow="hidden",s.style.cursor="default",s.style.borderRadius=D.borderRadius,s.style.backgroundColor=D.backgroundColor,s.style.borderColor=D.borderColor,s.style.boxShadow=D.boxShadow,s.style.transform="none",s.style.willChange="top, left, width, height, border-radius, background-color, border-color, box-shadow",s.style.transition=["top var(--spring-expand-dur) var(--spring-expand)","left var(--spring-expand-dur) var(--spring-expand)","width var(--spring-expand-dur) var(--spring-expand)","height var(--spring-expand-dur) var(--spring-expand)","border-radius var(--spring-expand-dur) var(--spring-expand)","background-color var(--spring-fade-dur) var(--spring-fade)","border-color var(--spring-fade-dur) var(--spring-fade)","box-shadow var(--spring-fade-dur) var(--spring-fade)","transform var(--t-feedback)"].join(", ")}function V(s,i){i.originalRole===null?s.removeAttribute("role"):s.setAttribute("role",i.originalRole),i.originalAriaLabel===null?s.removeAttribute("aria-label"):s.setAttribute("aria-label",i.originalAriaLabel),i.originalAriaExpanded===null?s.removeAttribute("aria-expanded"):s.setAttribute("aria-expanded",i.originalAriaExpanded),i.originalAriaModal===null?s.removeAttribute("aria-modal"):s.setAttribute("aria-modal",i.originalAriaModal)}async function c(){m.value?await l.push({name:n.parentRouteName})&&m.value&&a():a()}async function k(s="pointer"){if(G())return;const i=T.value;if(!i)return;clearTimeout(d),I.value=!1,i.classList.remove("is-pressing");const D=i.closest(".view");if(D&&typeof D.getAnimations=="function")try{D.getAnimations().forEach(se=>se.finish())}catch{}const y=i.getBoundingClientRect(),B=getComputedStyle(i),C=B.borderRadius,X=i.parentNode,J=i.style.cssText,ee=i.getAttribute("role"),ne=i.getAttribute("aria-label"),oe=i.getAttribute("aria-expanded"),te=i.getAttribute("aria-modal"),K=document.createElement("div");K.className="expand-placeholder",K.style.height=y.height+"px",K.style.gridColumn=B.gridColumn,K.style.gridRow=B.gridRow,K.style.flex=B.flex,K.style.alignSelf=B.alignSelf,K.style.order=B.order,K.style.margin=B.margin,K.style.minWidth=B.minWidth,K.setAttribute("aria-hidden","true"),X.insertBefore(K,i);const le=P(i,"card-inner");le&&(le.setAttribute("aria-hidden","true"),le.inert=!0),A.value||(A.value=!0),x(i,y,B),i.setAttribute("role","dialog"),i.setAttribute("aria-modal","true"),i.setAttribute("aria-expanded","true"),document.body.classList.add("locked"),O();const Q=r();j(),s==="pointer"&&document.activeElement===i&&i.blur();const he=se=>{se.key==="Escape"&&(se.preventDefault(),c())};document.addEventListener("keydown",he);const pe={card:i,slot:K,rect:y,originRadius:C,method:s,originalStyle:J,originalRole:ee,originalAriaLabel:ne,originalAriaExpanded:oe,originalAriaModal:te,escHandler:he};if(pa(pe),await e.nextTick(),G()!==pe)return;const ge=z.value&&z.value.firstElementChild,ye=ge&&ge.querySelector(".expand-title");ye&&i.setAttribute("aria-label",ye.textContent),i.offsetWidth,requestAnimationFrame(()=>{requestAnimationFrame(()=>{G()!==pe||U.value||(W.value=!0,i.style.top=Q.top,i.style.left=Q.left,i.style.width=Q.width,i.style.height=Q.height,i.style.borderRadius=Q.radius,i.style.backgroundColor=Q.background,i.style.borderColor=Q.border,i.style.boxShadow=Q.shadow,s==="keyboard"&&i.focus({preventScroll:!0}))})})}function a(){if(!G()||U.value)return;const s=G(),{card:i,slot:D,rect:y,originRadius:B,method:C,originalStyle:X,originalRole:J,originalAriaLabel:ee,originalAriaExpanded:ne,originalAriaModal:oe,escHandler:te}=s;document.removeEventListener("keydown",te),W.value=!1,U.value=!0,q.value=!1,i.style.transition=["top var(--spring-exit-dur) var(--spring-exit)","left var(--spring-exit-dur) var(--spring-exit)","width var(--spring-exit-dur) var(--spring-exit)","height var(--spring-exit-dur) var(--spring-exit)","border-radius var(--spring-exit-dur) var(--spring-exit)","background-color var(--spring-fade-dur) var(--spring-fade)","border-color var(--spring-fade-dur) var(--spring-fade)","box-shadow var(--spring-fade-dur) var(--spring-fade)"].join(", "),i.offsetWidth,i.style.top=y.top+"px",i.style.left=y.left+"px",i.style.width=y.width+"px",i.style.height=y.height+"px",i.style.borderRadius=B,i.style.backgroundColor="var(--surface-container-low)",i.style.borderColor="var(--outline-variant)",i.style.boxShadow="var(--elev-card)";const K=R()?0:Y("--spring-exit-dur",400);clearTimeout(o),o=setTimeout(()=>{U.value=!1;const le=P(i,"card-inner");le&&(le.removeAttribute("aria-hidden"),le.inert=!1),D.remove(),i.style.cssText=X,V(i,s),document.body.classList.remove("locked"),H(),L.value=!1,C==="keyboard"?i.focus({preventScroll:!0}):document.activeElement===i&&i.blur(),xe(s),I.value=!0,$&&m.value&&($=!1,requestAnimationFrame(()=>{m.value&&!G()&&k("pointer")})),clearTimeout(d),d=setTimeout(()=>{I.value=!1},R()?0:ga)},K+ha)}async function p(s){if(U.value)return;if(W.value){s.target.closest("[data-close]")&&(s.stopPropagation(),c());return}if(G()||s.target.closest(Ee))return;const i=s.detail===0?"keyboard":"pointer";S=i,await l.push({name:n.routeName,params:n.routeParams})&&m.value&&!G()&&!U.value&&k(i)}async function N(s){if(G()||s.key!=="Enter"&&s.key!==" "||s.target.closest(Ee))return;s.preventDefault(),S="keyboard",await l.push({name:n.routeName,params:n.routeParams})&&m.value&&!G()&&!U.value&&k("keyboard")}function _(){const s=T.value,i=document.getElementById("scrollArea");if(!s||!i)return;const D=s.getBoundingClientRect(),y=i.getBoundingClientRect(),B=D.top-y.top,C=i.scrollTop+B-Math.max(0,(i.clientHeight-D.height)/2);i.scrollTo({top:Math.max(0,C),behavior:"instant"})}function M(s="pointer",i=!1){if(!m.value||G()||U.value)return;const D=T.value;!D||!D.isConnected||(i&&_(),requestAnimationFrame(()=>{m.value&&!G()&&!U.value&&k(s)}))}return e.watch(m,s=>{if(b)if(s){const i=G();if(i&&i.card===T.value){U.value&&($=!0);return}i||M(S),S="pointer"}else{$=!1;const i=G();i&&i.card===T.value&&a(),S="pointer"}},{flush:"post"}),e.onMounted(()=>{b=!0;const s=T.value;s&&(s.hasAttribute("tabindex")||s.setAttribute("tabindex","0"),s.hasAttribute("role")||s.setAttribute("role","button"),s.hasAttribute("aria-haspopup")||s.setAttribute("aria-haspopup","dialog"),s.setAttribute("aria-expanded","false"),m.value&&M("pointer",!0))}),e.onActivated(()=>{b&&m.value&&M("pointer")}),e.onBeforeUnmount(()=>{clearTimeout(o),clearTimeout(d),clearTimeout(w),H(),L.value=!1;const s=G();s&&s.card===T.value&&(document.removeEventListener("keydown",s.escHandler),document.body.classList.remove("locked"),xe(s))}),u({close:a,open:k}),(s,i)=>(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.tag),{ref_key:"rootEl",ref:T,class:e.normalizeClass(E.value),"data-expand":t.expandKey,onClick:p,onKeydown:N},{default:e.withCtx(()=>[(e.openBlock(),e.createBlock(e.Teleport,{to:"body"},[L.value?(e.openBlock(),e.createElementBlock("div",{key:0,class:e.normalizeClass(["expand-backdrop",{"is-open":q.value}]),"aria-hidden":"true",onClick:c},null,2)):e.createCommentVNode("",!0)])),e.createElementVNode("div",{class:"card-inner",ref_key:"innerEl",ref:F},[e.renderSlot(s.$slots,"default")],512),e.createElementVNode("div",{class:"expand-scroller",ref_key:"scrollerEl",ref:z},[A.value?(e.openBlock(),e.createElementBlock("div",va,[(e.openBlock(),e.createBlock(e.resolveDynamicComponent(t.content),e.normalizeProps(e.guardReactiveProps(t.contentProps)),null,16))])):e.createCommentVNode("",!0)],512)]),_:3},40,["class","data-expand"]))}},ka={__name:"RouteExpandCard",props:{section:{type:String,required:!0},cardKey:{type:[String,Number],required:!0},routeName:{type:String,default:""},params:{type:Object,default:()=>({})},tag:{type:String,default:"section"},variant:{type:String,default:"card"},feature:{type:Boolean,default:!1},content:{type:[Object,Function],required:!0},contentProps:{type:Object,default:()=>({})}},setup(t){const u=t,n=e.computed(()=>u.routeName||`${u.section}-${u.cardKey}`);return(v,l)=>(e.openBlock(),e.createBlock(_e,{tag:t.tag,"expand-key":String(t.cardKey),"route-name":n.value,"parent-route-name":t.section,"route-params":t.params,variant:t.variant,feature:t.feature,content:t.content,"content-props":t.contentProps},{default:e.withCtx(()=>[e.renderSlot(v.$slots,"default")]),_:3},8,["tag","expand-key","route-name","parent-route-name","route-params","variant","feature","content","content-props"]))}},ba={name:"ExpandRoute",render:()=>null};exports.EmptyRoute=ba;exports.ExpandableCard=_e;exports.RouteExpandCard=ka;exports.UiAccordion=Be;exports.UiAlert=Ae;exports.UiAvatar=Pe;exports.UiBadge=Le;exports.UiBarChart=We;exports.UiBottomSheet=Ge;exports.UiButton=Je;exports.UiCheckbox=at;exports.UiChip=rt;exports.UiDatePicker=yt;exports.UiEmptyState=_t;exports.UiFloatingMenu=Ft;exports.UiGauge=Ht;exports.UiHeatmap=Qt;exports.UiInput=rn;exports.UiLineChart=vn;exports.UiModal=xn;exports.UiProgress=Bn;exports.UiRadioGroup=$n;exports.UiRating=zn;exports.UiRingProgress=qn;exports.UiSegmented=Xn;exports.UiSelect=ol;exports.UiSkeleton=rl;exports.UiSlider=ml;exports.UiSparkline=yl;exports.UiSpinner=bl;exports.UiStepper=$l;exports.UiSwitch=Al;exports.UiTextarea=zl;exports.UiTimePicker=Zl;exports.UiToastHost=Jl;exports.UiToolMenu=da;exports.UiTooltip=fa;exports.useMorphWindow=ve;exports.usePress=fe;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
:root{--radius-scale: 1;--r-card: 22px;--r-metric: 18px;--r-button: 14px;--r-list: 18px;--r-preview: 16px;--density: .93;--space-gap: 18.6px;--space-card: 14.88px;--space-metric: 13.02px;--space-item: 11.16px;--border-w: .75px;--focus-w: 2px;--btn-h-sm: 28px;--btn-h-md: 34px;--btn-h-lg: 42px;--btn-pad-sm: 5px 8px;--btn-pad-md: 7px 10px;--btn-pad-lg: 10px 14px;--btn-fs-sm: var(--fs-micro);--btn-fs-md: var(--fs-tiny);--btn-fs-lg: var(--fs-small);--fs-h1: 1.35rem;--fs-value: 1.2rem;--fs-big: 1.1rem;--fs-body: .86rem;--fs-small: .78rem;--fs-tiny: .68rem;--fs-micro: .62rem;--w-heading: 650;--w-label: 600;--w-body: 400;--w-strong: 600;--line-height: 1.4;--letter-spacing: 0;--elev-card: none;--elev-sheet: none;--elev-tip: none;--press-scale: .97;--press-card-scale: .985;--spring-feedback: cubic-bezier(.25,.1,.25,1);--spring-feedback-dur: .5s;--spring-view: cubic-bezier(.25,.1,.25,1);--spring-view-dur: .55s;--spring-sheet: cubic-bezier(.25,.1,.25,1);--spring-sheet-dur: .6s;--spring-expand: cubic-bezier(.25,.1,.25,1);--spring-expand-dur: .6s;--spring-fade: cubic-bezier(.25,.1,.25,1);--spring-fade-dur: .3s;--spring-exit: cubic-bezier(.25,.1,.25,1);--spring-exit-dur: .4s;--t-feedback: var(--spring-feedback-dur) var(--spring-feedback);--t-view: var(--spring-view-dur) var(--spring-view);--t-sheet: var(--spring-sheet-dur) var(--spring-sheet);--t-expand: var(--spring-expand-dur) var(--spring-expand);--t-panel: var(--t-view);--t-fade: var(--spring-fade-dur) var(--spring-fade);--t-exit: var(--spring-exit-dur) var(--spring-exit);--accent: var(--primary);--accent-container: var(--primary-container);--on-accent-container: var(--on-primary-container);--icon-bg: var(--primary-container);--icon-fg: var(--on-primary-container);--background: #faf9fd;--surface: #faf9fd;--surface-container-low: #f4f3f7;--surface-container: #eeedf1;--surface-container-high: #e9e7eb;--surface-container-highest: #e3e2e6;--on-surface: #1b1b1f;--on-surface-variant: #46464f;--outline: #777680;--outline-variant: #c7c5d0;--primary: #3f5f90;--on-primary: #ffffff;--primary-container: #d7e2ff;--on-primary-container: #001b3c;--secondary: #545f71;--secondary-container: #d8e3f8;--on-secondary-container: #111c2b;--error: #ba1a1a;--on-error: #ffffff;--ui-success: #15803d;--ui-warning: #b45309}[data-appearance=dark],[data-appearance=black]{--ui-success: #4ade80;--ui-warning: #fbbf24}[data-accent=vivid]{--accent: var(--primary);--accent-container: var(--primary-container);--on-accent-container: var(--on-primary-container)}[data-accent=balanced]{--accent: var(--secondary);--accent-container: var(--secondary-container);--on-accent-container: var(--on-secondary-container);--icon-bg: var(--surface-container);--icon-fg: var(--on-surface-variant)}[data-accent=minimal]{--accent: var(--on-surface);--accent-container: var(--surface-container);--on-accent-container: var(--on-surface);--icon-bg: transparent;--icon-fg: var(--on-surface-variant)}[data-icon=plain]{--icon-bg: transparent;--icon-fg: var(--on-surface-variant)}[data-icon=subtle]{--icon-bg: var(--surface-container);--icon-fg: var(--on-surface-variant)}.card{background:var(--surface-container-low);border:var(--border-w) solid var(--outline-variant);border-radius:calc(var(--r-card) * var(--radius-scale));padding:var(--space-card);box-shadow:var(--elev-card);cursor:default;transition:background var(--t-fade),border-color var(--t-fade),border-radius var(--t-panel),box-shadow var(--t-fade),transform var(--t-feedback)}.card[data-expand]{cursor:pointer}.card--feature{padding:calc(var(--space-card) * 1.2)}.card-title{font-size:var(--fs-small);font-weight:var(--w-label);letter-spacing:.02em;color:var(--on-surface-variant);margin-bottom:12px;display:flex;align-items:center;justify-content:space-between}.card-title .muted{font-weight:500;font-size:var(--fs-tiny)}.metrics{display:grid;grid-template-columns:1fr 1fr;gap:calc(12px * var(--density))}.metric{background:var(--surface-container-low);border:var(--border-w) solid var(--outline-variant);border-radius:calc(var(--r-metric) * var(--radius-scale));padding:var(--space-metric);box-shadow:var(--elev-card);cursor:default;transition:background var(--t-fade),border-color var(--t-fade),border-radius var(--t-panel),box-shadow var(--t-fade),transform var(--t-feedback)}.metric[data-expand]{cursor:pointer}.metric .label{font-size:var(--fs-tiny);color:var(--on-surface-variant);font-weight:500}.metric .value{font-size:var(--fs-value);font-weight:var(--w-heading);margin-top:4px;letter-spacing:-.01em}.metric .value small{font-size:var(--fs-micro);font-weight:500;color:var(--on-surface-variant);margin-left:3px}.metric .trend{font-size:var(--fs-micro);margin-top:5px;display:inline-flex;align-items:center;gap:3px}.trend.up{color:var(--accent)}.trend.warn{color:var(--error)}.list-item{display:flex;align-items:center;gap:calc(12px * var(--density));background:var(--surface-container-low);border:var(--border-w) solid var(--outline-variant);border-radius:calc(var(--r-list) * var(--radius-scale));padding:var(--space-item) calc(15px * var(--density));box-shadow:var(--elev-card);cursor:default;transition:background var(--t-fade),border-color var(--t-fade),border-radius var(--t-panel),box-shadow var(--t-fade),transform var(--t-feedback)}.list-item[data-expand]{cursor:pointer}.tabbar{position:fixed;bottom:0;left:50%;transform:translate(-50%);width:100%;max-width:480px;background:var(--surface-container-low);border-top:var(--border-w) solid var(--outline-variant);display:flex;padding:8px 10px calc(8px + env(safe-area-inset-bottom));z-index:20;transition:background var(--t-fade),border-color var(--t-fade)}.tab{flex:1;background:none;border:none;display:flex;flex-direction:column;align-items:center;gap:3px;padding:4px 0;color:var(--on-surface-variant);font-size:var(--fs-micro);font-weight:550;cursor:pointer;border-radius:14px;transition:color var(--t-fade),transform var(--t-feedback)}.tab:active{transform:scale(var(--press-scale))}.tab-icon{width:48px;height:28px;border-radius:999px;display:grid;place-items:center;transition:background var(--t-fade)}.tab-icon svg{width:20px;height:20px}.tab.active{color:var(--accent)}.tab.active .tab-icon{background:var(--accent-container)}.tab.active .tab-icon svg{color:var(--on-accent-container)}.card[data-expand].is-pressing,.metric[data-expand].is-pressing,.list-item[data-expand].is-pressing{transform:scale(var(--press-card-scale))}@media (hover: hover) and (pointer: fine){[data-hover=border] .card[data-expand]:hover,[data-hover=border] .metric[data-expand]:hover,[data-hover=border] .list-item[data-expand]:hover{border-color:var(--outline)}[data-hover=surface] .card[data-expand]:hover,[data-hover=surface] .metric[data-expand]:hover,[data-hover=surface] .list-item[data-expand]:hover{background:var(--surface-container)}[data-hover=glow] .card[data-expand]:hover,[data-hover=glow] .metric[data-expand]:hover,[data-hover=glow] .list-item[data-expand]:hover{box-shadow:0 0 0 3px var(--accent-container)}[data-hover=mix] .card[data-expand]:hover,[data-hover=mix] .metric[data-expand]:hover,[data-hover=mix] .list-item[data-expand]:hover{border-color:var(--outline);background:var(--surface-container)}.bar:hover:after{opacity:1;transform:translate(-50%,-4px) scale(1)}}.card.is-settling[data-expand]:hover,.metric.is-settling[data-expand]:hover,.list-item.is-settling[data-expand]:hover{border-color:var(--outline-variant);background:var(--surface-container-low);box-shadow:var(--elev-card)}.ui-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 16px;border:var(--border-w) solid transparent;border-radius:calc(13px * var(--radius-scale));background:transparent;color:var(--on-surface);font-size:var(--fs-small);font-weight:var(--w-label);line-height:1.2;cursor:pointer;white-space:nowrap;transition:background var(--t-fade),border-color var(--t-fade),color var(--t-fade),border-radius var(--t-panel),transform var(--t-feedback),opacity var(--t-fade)}.ui-btn:active{transform:scale(var(--press-scale))}.ui-btn:disabled{opacity:.42;cursor:not-allowed;transform:none}.ui-btn--sm{padding:7px 12px;font-size:var(--fs-tiny);border-radius:calc(11px * var(--radius-scale))}.ui-btn--lg{padding:13px 22px;font-size:var(--fs-body)}.ui-btn--block{width:100%}.ui-btn--primary{background:var(--primary);color:var(--on-primary)}.ui-btn--tonal{background:var(--primary-container);color:var(--on-primary-container)}.ui-btn--outline{background:transparent;border-color:var(--outline-variant);color:var(--on-surface)}.ui-btn--text{background:transparent;color:var(--primary);padding-inline:8px}.ui-btn--danger{background:var(--error);color:var(--on-error)}.ui-btn--icon{width:40px;height:40px;padding:0;border-radius:calc(12px * var(--radius-scale));background:var(--surface-container);color:var(--on-surface-variant)}.ui-btn--icon.ui-btn--sm{width:32px;height:32px}.ui-btn--icon svg{width:18px;height:18px}.ui-btn__spinner{width:14px;height:14px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:uiSpin .7s linear infinite}@keyframes uiSpin{to{transform:rotate(360deg)}}.ui-chip{display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border:var(--border-w) solid transparent;border-radius:999px;background:var(--surface-container);color:var(--on-surface-variant);font-size:var(--fs-tiny);font-weight:var(--w-label);line-height:1.2;cursor:pointer;transition:background var(--t-fade),color var(--t-fade),border-color var(--t-fade),transform var(--t-feedback),box-shadow var(--t-fade)}.ui-chip:active{transform:scale(var(--press-scale))}.ui-chip--filled{background:var(--primary);color:var(--on-primary)}.ui-chip--tonal{background:var(--primary-container);color:var(--on-primary-container)}.ui-chip--outline{background:transparent;border-color:var(--outline-variant);color:var(--on-surface-variant)}.ui-chip.is-selected{background:var(--primary-container);border-color:var(--primary);color:var(--on-primary-container);box-shadow:inset 0 0 0 1px var(--primary)}.ui-chip__dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.ui-chip__close{display:grid;place-items:center;width:16px;height:16px;margin-right:-3px;border:0;border-radius:50%;background:transparent;color:currentColor;cursor:pointer;opacity:.72}.ui-chip__close:hover{opacity:1}.ui-chip__close svg{width:11px;height:11px}.ui-badge{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:999px;background:var(--surface-container);color:var(--on-surface-variant);font-size:var(--fs-micro);font-weight:var(--w-label);line-height:1.2;white-space:nowrap}.ui-badge__dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}.ui-badge--primary{background:var(--primary-container);color:var(--on-primary-container)}.ui-badge--success{background:color-mix(in oklab,var(--ui-success) 13%,var(--surface-container-low));color:var(--on-surface)}.ui-badge--success .ui-badge__dot{background:var(--ui-success)}.ui-badge--warning{background:color-mix(in oklab,var(--ui-warning) 14%,var(--surface-container-low));color:var(--on-surface)}.ui-badge--warning .ui-badge__dot{background:var(--ui-warning)}.ui-badge--danger{background:color-mix(in oklab,var(--error) 13%,var(--surface-container-low));color:var(--on-surface)}.ui-badge--danger .ui-badge__dot{background:var(--error)}.ui-switch{position:relative;width:46px;height:28px;padding:0;border:1px solid var(--outline-variant);border-radius:999px;background:var(--surface-container-highest);cursor:pointer;transition:background var(--t-fade),border-color var(--t-fade);flex-shrink:0}.ui-switch.is-on{background:var(--primary);border-color:var(--primary)}.ui-switch__thumb{position:absolute;top:2px;left:2px;width:22px;height:22px;border-radius:50%;background:var(--surface);transition:transform var(--t-feedback),background var(--t-fade)}.ui-switch.is-on .ui-switch__thumb{transform:translate(18px);background:var(--on-primary)}.ui-switch:focus-visible{outline:var(--focus-w) solid var(--primary);outline-offset:2px}.ui-field{display:flex;flex-direction:column;gap:7px;min-width:0}.ui-field__label{font-size:var(--fs-tiny);font-weight:var(--w-label);color:var(--on-surface-variant)}.ui-field__control{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border:1px solid var(--outline-variant);border-radius:calc(13px * var(--radius-scale));background:var(--surface-container-low);transition:border-color var(--t-fade),box-shadow var(--t-fade),background var(--t-fade)}.ui-field__control:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in oklab,var(--primary) 14%,transparent)}.ui-field__control.is-error{border-color:var(--error)}.ui-field__control.is-error:focus-within{box-shadow:0 0 0 3px color-mix(in oklab,var(--error) 14%,transparent)}.ui-field__control--area{align-items:stretch;min-height:0;padding:2px 12px}.ui-field input,.ui-field textarea,.ui-field select{flex:1;min-width:0;padding:10px 0;border:0;outline:none;background:transparent;color:var(--on-surface);font:inherit;font-size:var(--fs-small)}.ui-field textarea{min-height:82px;resize:vertical;line-height:1.6}.ui-field select{-moz-appearance:none;appearance:none;-webkit-appearance:none;cursor:pointer;padding-right:20px}.ui-field input::placeholder,.ui-field textarea::placeholder{color:var(--on-surface-variant);opacity:.7}.ui-field__icon{display:grid;place-items:center;color:var(--on-surface-variant);flex-shrink:0}.ui-field__icon svg{width:17px;height:17px}.ui-field__hint{font-size:var(--fs-micro);color:var(--on-surface-variant)}.ui-field__error{font-size:var(--fs-micro);color:var(--error)}.ui-check{position:relative;display:flex;align-items:flex-start;gap:10px;cursor:pointer;font-size:var(--fs-small)}.ui-radio{position:relative}.ui-check input,.ui-radio input{position:absolute;top:0;left:0;width:1px;height:1px;margin:0;padding:0;opacity:0;pointer-events:none}.ui-check__box{width:20px;height:20px;flex-shrink:0;display:grid;place-items:center;border:1.5px solid var(--outline);border-radius:6px;background:var(--surface-container-low);transition:background var(--t-fade),border-color var(--t-fade)}.ui-check__box svg{width:13px;height:13px;color:var(--on-primary);opacity:0;transform:scale(.55);transition:opacity var(--t-fade),transform var(--t-feedback)}.ui-check input:checked+.ui-check__box{background:var(--primary);border-color:var(--primary)}.ui-check input:checked+.ui-check__box svg{opacity:1;transform:scale(1)}.ui-check input:focus-visible+.ui-check__box{outline:var(--focus-w) solid var(--primary);outline-offset:2px}.ui-check__text{display:flex;flex-direction:column;gap:1px}.ui-check__desc{font-size:var(--fs-micro);color:var(--on-surface-variant)}.ui-radio-group{display:flex;flex-direction:column;gap:10px}.ui-radio{display:flex;align-items:center;gap:10px;cursor:pointer;font-size:var(--fs-small)}.ui-radio__dot{width:20px;height:20px;flex-shrink:0;display:grid;place-items:center;border:1.5px solid var(--outline);border-radius:50%;background:var(--surface-container-low);transition:border-color var(--t-fade)}.ui-radio__dot:after{content:"";width:10px;height:10px;border-radius:50%;background:var(--primary);transform:scale(0);transition:transform var(--t-feedback)}.ui-radio input:checked+.ui-radio__dot{border-color:var(--primary)}.ui-radio input:checked+.ui-radio__dot:after{transform:scale(1)}.ui-radio input:focus-visible+.ui-radio__dot{outline:var(--focus-w) solid var(--primary);outline-offset:2px}.ui-slider{display:flex;flex-direction:column;gap:9px}.ui-slider__head{display:flex;align-items:center;justify-content:space-between;gap:10px}.ui-slider__label{font-size:var(--fs-tiny);font-weight:var(--w-label);color:var(--on-surface-variant)}.ui-slider__value{font-family:ui-monospace,monospace;font-size:var(--fs-tiny);font-weight:var(--w-strong);color:var(--on-surface)}.ui-slider__track{position:relative;display:flex;align-items:center;height:20px;touch-action:none}.ui-slider.is-stepped .ui-slider__fill{transition:background var(--t-fade)}.ui-slider__track:before{content:"";position:absolute;left:0;right:0;height:6px;border-radius:999px;background:var(--surface-container-highest);transition:background var(--t-fade)}.ui-slider__fill{position:absolute;left:0;width:var(--pct, 50%);height:6px;border-radius:999px;background:var(--primary);transition:background var(--t-fade);will-change:width}.ui-slider__track:focus-within:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:999px;box-shadow:0 0 0 3px color-mix(in oklab,var(--primary) 14%,transparent);pointer-events:none}.ui-segmented{position:relative;display:flex;gap:3px;padding:3px;border-radius:calc(13px * var(--radius-scale));background:var(--surface-container);isolation:isolate}.ui-segmented-field{display:flex;flex-direction:column;gap:8px;min-width:0}.ui-segmented-field__label{align-self:flex-start;font-size:var(--fs-tiny);font-weight:var(--w-label);color:var(--on-surface-variant);white-space:nowrap}.ui-segmented-field--one-line{flex-direction:row;align-items:center;gap:12px}.ui-segmented-field--one-line>.ui-segmented{flex:1;min-width:0}.ui-segmented__indicator{position:absolute;z-index:0;top:3px;bottom:3px;left:3px;border-radius:calc(10px * var(--radius-scale));background:var(--primary);transition:transform var(--t-panel),width var(--t-panel),background var(--t-fade),opacity var(--t-fade)}.ui-segmented button{position:relative;z-index:1;flex:1;padding:8px 6px;border:0;border-radius:calc(10px * var(--radius-scale));background:transparent;color:var(--on-surface-variant);font-size:var(--fs-tiny);font-weight:var(--w-label);cursor:pointer;transition:color var(--t-fade),transform var(--t-feedback)}.ui-segmented button:active{transform:scale(var(--press-scale))}.ui-segmented button.is-active{color:var(--on-primary)}.ui-avatar{position:relative;width:40px;height:40px;flex-shrink:0;display:grid;place-items:center;overflow:hidden;border-radius:50%;background:var(--primary-container);color:var(--on-primary-container);font-size:var(--fs-small);font-weight:var(--w-heading);letter-spacing:-.01em}.ui-avatar img{width:100%;height:100%;object-fit:cover}.ui-avatar--sm{width:30px;height:30px;font-size:var(--fs-micro)}.ui-avatar--lg{width:54px;height:54px;font-size:var(--fs-body)}.ui-avatar__status{position:absolute;right:0;bottom:0;width:10px;height:10px;border:2px solid var(--surface);border-radius:50%;background:#22c55e}.ui-progress{display:flex;flex-direction:column;gap:7px}.ui-progress__head{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:var(--fs-tiny);color:var(--on-surface-variant)}.ui-progress__track{height:8px;overflow:hidden;border-radius:999px;background:var(--surface-container-high)}.ui-progress__bar{height:100%;border-radius:inherit;background:var(--primary);transition:width var(--t-view)}.ui-progress__bar--success{background:var(--ui-success)}.ui-progress__bar--warning{background:var(--ui-warning)}.ui-spinner{display:inline-block;width:22px;height:22px;border:2.5px solid var(--surface-container-highest);border-top-color:var(--primary);border-radius:50%;animation:uiSpin .8s linear infinite}.ui-spinner--sm{width:16px;height:16px;border-width:2px}.ui-spinner--lg{width:30px;height:30px;border-width:3px}.ui-skeleton{border-radius:10px;background:linear-gradient(90deg,var(--surface-container) 25%,var(--surface-container-low) 37%,var(--surface-container) 63%);background-size:400% 100%;animation:uiShimmer 1.4s ease infinite}@keyframes uiShimmer{0%{background-position:100% 50%}to{background-position:0 50%}}.ui-alert{display:flex;align-items:flex-start;gap:10px;padding:12px 13px;border:var(--border-w) solid var(--outline-variant);border-left:3px solid var(--primary);border-radius:calc(14px * var(--radius-scale));background:var(--surface-container-low)}.ui-alert--success{border-left-color:var(--ui-success)}.ui-alert--warning{border-left-color:var(--ui-warning)}.ui-alert--danger{border-left-color:var(--error)}.ui-alert__icon{width:19px;height:19px;flex-shrink:0;color:var(--primary);margin-top:1px}.ui-alert--success .ui-alert__icon{color:var(--ui-success)}.ui-alert--warning .ui-alert__icon{color:var(--ui-warning)}.ui-alert--danger .ui-alert__icon{color:var(--error)}.ui-alert__body{flex:1;min-width:0}.ui-alert__title{font-size:var(--fs-small);font-weight:var(--w-strong)}.ui-alert__desc{margin-top:2px;font-size:var(--fs-tiny);color:var(--on-surface-variant);line-height:1.55}.ui-alert__close{width:24px;height:24px;flex-shrink:0;display:grid;place-items:center;border:0;border-radius:8px;background:transparent;color:var(--on-surface-variant);cursor:pointer}.ui-alert__close svg{width:13px;height:13px}.ui-tooltip{position:relative;display:inline-flex;border-radius:8px;outline:none}.ui-tooltip__bubble{position:absolute;left:50%;bottom:calc(100% + 8px);z-index:20;padding:5px 9px;border-radius:7px;background:var(--on-surface);color:var(--surface);font-size:var(--fs-micro);font-weight:var(--w-label);white-space:nowrap;pointer-events:none;opacity:0;transform:translate(-50%,4px);box-shadow:var(--elev-tip);transition:opacity var(--t-fade),transform var(--t-feedback)}.ui-tooltip:hover .ui-tooltip__bubble,.ui-tooltip:focus-within .ui-tooltip__bubble,.ui-tooltip.is-open .ui-tooltip__bubble{opacity:1;transform:translate(-50%)}.ui-tooltip--bottom .ui-tooltip__bubble{top:calc(100% + 8px);bottom:auto;transform:translate(-50%,-4px)}.ui-tooltip--bottom:hover .ui-tooltip__bubble,.ui-tooltip--bottom:focus-within .ui-tooltip__bubble,.ui-tooltip--bottom.is-open .ui-tooltip__bubble{transform:translate(-50%)}.ui-accordion{overflow:hidden;border:var(--border-w) solid var(--outline-variant);border-radius:calc(14px * var(--radius-scale));background:var(--surface-container-low)}.ui-accordion__head{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 14px;border:0;background:transparent;color:var(--on-surface);font-size:var(--fs-small);font-weight:var(--w-strong);text-align:left;cursor:pointer}.ui-accordion__chevron{flex-shrink:0;width:16px;height:16px;color:var(--on-surface-variant);transition:transform var(--t-view)}.ui-accordion.is-open .ui-accordion__chevron{transform:rotate(180deg)}.ui-accordion__body{padding:0 14px 14px;color:var(--on-surface-variant);font-size:var(--fs-tiny);line-height:1.65}.ui-empty{padding:26px 18px;border:1px dashed var(--outline-variant);border-radius:calc(16px * var(--radius-scale));background:var(--surface-container-low);text-align:center}.ui-empty__icon{width:46px;height:46px;margin:0 auto 10px;display:grid;place-items:center;border-radius:50%;background:var(--surface-container);color:var(--on-surface-variant)}.ui-empty__icon svg{width:22px;height:22px}.ui-empty__title{font-size:var(--fs-body);font-weight:var(--w-strong)}.ui-empty__desc{margin-top:4px;font-size:var(--fs-tiny);color:var(--on-surface-variant)}.ui-empty__action{margin-top:14px}.ui-modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:400;display:grid;place-items:center;padding:20px}.ui-modal__panel{position:relative;width:100%;max-width:420px;max-height:82dvh;overflow-y:auto;padding:20px;border:var(--border-w) solid var(--outline-variant);border-radius:calc(24px * var(--radius-scale));background:var(--surface-container-high);box-shadow:var(--elev-sheet);scrollbar-width:none;opacity:0;transform:translateY(14px) scale(.97);transition:opacity var(--t-fade),transform var(--t-view)}.ui-modal.is-open .ui-modal__panel{opacity:1;transform:none}.ui-modal.is-closing .ui-modal__panel{opacity:0;transform:translateY(12px) scale(.98);transition:opacity var(--t-fade),transform var(--t-exit)}.ui-modal__panel::-webkit-scrollbar{display:none}.ui-modal__head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.ui-modal__title{font-size:var(--fs-big);font-weight:var(--w-heading)}.ui-modal__close{width:30px;height:30px;flex-shrink:0;display:grid;place-items:center;border:0;border-radius:9px;background:var(--surface-container);color:var(--on-surface-variant);cursor:pointer}.ui-modal__close svg{width:14px;height:14px}.ui-modal__body{color:var(--on-surface-variant);font-size:var(--fs-small);line-height:1.65}.ui-modal__footer{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.ui-toast-host{position:fixed;left:50%;bottom:calc(88px + env(safe-area-inset-bottom));z-index:500;width:min(calc(100vw - 32px),420px);transform:translate(-50%);display:flex;flex-direction:column;gap:8px;pointer-events:none}.ui-toast{display:flex;align-items:center;gap:9px;padding:11px 13px;border-radius:calc(14px * var(--radius-scale));background:var(--on-surface);color:var(--surface);font-size:var(--fs-small);font-weight:500;box-shadow:var(--elev-sheet);pointer-events:auto}.ui-toast__dot{width:8px;height:8px;flex-shrink:0;border-radius:50%;background:#60a5fa}.ui-toast--success .ui-toast__dot{background:#4ade80}.ui-toast--danger .ui-toast__dot{background:#fb7185}.ui-toast__close{margin-left:auto;display:grid;place-items:center;width:20px;height:20px;border:0;border-radius:50%;background:transparent;color:inherit;opacity:.65;cursor:pointer}.ui-toast__close svg{width:12px;height:12px}.ui-toast-enter-active{transition:opacity var(--t-fade),transform var(--t-view)}.ui-toast-leave-active{transition:opacity var(--t-fade),transform var(--t-feedback)}.ui-toast-enter-from{opacity:0;transform:translateY(10px) scale(.96)}.ui-toast-leave-to{opacity:0;transform:translateY(6px) scale(.98)}.ui-toast-move{transition:transform var(--t-view)}.ui-morph__view{transition:opacity .3s ease,filter .32s ease}.ui-morph.is-open>.ui-morph__view{opacity:0;filter:blur(8px);pointer-events:none;transition:opacity .22s ease,filter .24s ease}.ui-morph.is-closing>.ui-morph__view{opacity:1;filter:blur(0);transition:opacity .28s ease 60ms,filter .28s ease 60ms}.ui-morph__panel{opacity:0;filter:blur(10px);transform:translate3d(0,8px,0) scale(.985);transform-origin:50% 0;pointer-events:none;transition:opacity .18s ease,filter .2s ease,transform .2s ease}.ui-morph.is-open>.ui-morph__panel{opacity:1;filter:blur(0);transform:none;pointer-events:auto;transition:opacity .3s ease 70ms,filter .34s ease 70ms,transform var(--t-panel) 70ms}.ui-morph.is-closing>.ui-morph__panel{opacity:0;filter:blur(8px);transform:translate3d(0,6px,0) scale(.99);transition:opacity .18s ease,filter .2s ease,transform var(--t-exit)}.ui-scrim{position:absolute;top:0;right:0;bottom:0;left:0;background:#00000029;opacity:0;-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);transition:opacity var(--t-fade),-webkit-backdrop-filter .42s ease,backdrop-filter .42s ease}.ui-scrim.is-open{opacity:1;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}@media (prefers-reduced-motion: reduce){.ui-morph__view,.ui-morph__panel,.ui-scrim{transition-duration:.01ms!important;transition-delay:0ms!important}}.card.is-expanded{cursor:default;transform:none}.expand-placeholder{visibility:hidden;pointer-events:none}.card-inner{transition:opacity .3s ease,filter .32s ease}.list-item>.card-inner{display:flex;align-items:center;gap:calc(12px * var(--density));flex:1;min-width:0}.card.is-expanded>.card-inner,.metric.is-expanded>.card-inner,.list-item.is-expanded>.card-inner{opacity:0;filter:blur(8px);pointer-events:none;transition:opacity .22s ease,filter .24s ease}.card.is-closing>.card-inner,.metric.is-closing>.card-inner,.list-item.is-closing>.card-inner{opacity:1;filter:blur(0);transition:opacity .28s ease 60ms,filter .28s ease 60ms}.expand-scroller{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;visibility:hidden;pointer-events:none;overflow-y:auto;overflow-x:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch}[data-expand].is-expanded>.expand-scroller,[data-expand].is-closing>.expand-scroller{visibility:visible;pointer-events:auto}.expand-scroller::-webkit-scrollbar{display:none}.expand-content{width:100%;min-height:100%;padding:calc(20px * var(--density)) calc(18px * var(--density)) 40px;box-sizing:border-box;color:var(--on-surface);opacity:0;transform:translate3d(0,12px,0) scale(.97);filter:blur(10px);transform-origin:center top;will-change:opacity,transform,filter;transition:opacity .32s ease 80ms,transform var(--spring-expand-dur) var(--spring-expand) 80ms,filter .36s ease 80ms}[data-expand].is-expanded .expand-content{opacity:1;transform:translateZ(0) scale(1);filter:blur(0)}[data-expand].is-closing .expand-content{opacity:0;transform:translate3d(0,6px,0) scale(.985);filter:blur(8px);transition:opacity .22s ease,transform var(--spring-exit-dur) var(--spring-exit),filter .24s ease}.expand-topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;padding-top:4px}.expand-close{width:40px;height:40px;border-radius:calc(12px * var(--radius-scale));border:none;background:var(--surface-container);color:var(--on-surface-variant);cursor:pointer;display:grid;place-items:center;transition:background var(--t-fade),transform var(--t-feedback),border-radius var(--t-panel)}.expand-close:active{transform:scale(var(--press-scale))}.expand-close svg{width:18px;height:18px}.expand-topbar .crumb{font-size:var(--fs-tiny);color:var(--on-surface-variant);font-weight:550;letter-spacing:.02em}.expand-title{font-size:1.6rem;font-weight:var(--w-heading);letter-spacing:-.015em;margin-bottom:6px}.expand-subtitle{font-size:var(--fs-small);color:var(--on-surface-variant);margin-bottom:24px}.expand-section{margin-bottom:28px}.expand-section-title{font-size:var(--fs-small);font-weight:var(--w-label);color:var(--on-surface-variant);letter-spacing:.02em;margin-bottom:12px}.expand-hero{display:flex;align-items:baseline;gap:6px;margin-bottom:20px}.expand-hero .num{font-size:2.8rem;font-weight:var(--w-heading);letter-spacing:-.03em;line-height:1}.expand-hero .unit{font-size:var(--fs-body);color:var(--on-surface-variant);font-weight:500}.expand-chart-card{background:var(--surface-container-low);border:var(--border-w) solid var(--outline-variant);border-radius:calc(var(--r-card) * var(--radius-scale));padding:calc(var(--space-card) * 1.1);margin-bottom:12px}.expand-metric-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.expand-metric-cell{background:var(--surface-container-low);border:var(--border-w) solid var(--outline-variant);border-radius:calc(var(--r-metric) * var(--radius-scale));padding:14px}.expand-metric-cell .lbl{font-size:var(--fs-tiny);color:var(--on-surface-variant);font-weight:500}.expand-metric-cell .val{font-size:1.2rem;font-weight:var(--w-heading);margin-top:4px;letter-spacing:-.01em}.expand-metric-cell .val small{font-size:var(--fs-micro);font-weight:500;color:var(--on-surface-variant);margin-left:2px}.expand-desc{font-size:var(--fs-body);color:var(--on-surface-variant);line-height:1.7;margin-bottom:16px}.timeline{display:flex;flex-direction:column;gap:2px}.timeline-row{display:flex;align-items:center;justify-content:space-between;padding:12px 0;border-bottom:var(--border-w) solid var(--outline-variant);font-size:var(--fs-body)}.timeline-row:last-child{border-bottom:none}.timeline-row .t{font-family:ui-monospace,monospace;font-size:var(--fs-tiny);color:var(--on-surface-variant);min-width:56px}.timeline-row .lbl{flex:1;margin-left:12px}.timeline-row .val{font-size:var(--fs-small);font-weight:var(--w-strong);font-family:ui-monospace,monospace}.expand-chart{width:100%;display:block;overflow:visible}.expand-chart .grid-line{stroke:var(--outline-variant);stroke-width:1;opacity:.5}.expand-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:290;background:#00000029;-webkit-backdrop-filter:blur(0px);backdrop-filter:blur(0px);opacity:0;transition:opacity var(--t-fade),-webkit-backdrop-filter .42s ease,backdrop-filter .42s ease}.expand-backdrop.is-open{opacity:1;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px)}.bars[data-v-40849deb]{display:flex;align-items:flex-end;gap:10px;height:96px;padding-top:6px}.bar-col[data-v-40849deb]{flex:1;display:flex;flex-direction:column;align-items:center;gap:7px;height:100%;justify-content:flex-end}.bar[data-v-40849deb]{width:100%;max-width:26px;border-radius:calc(8px * var(--radius-scale));background:var(--primary-container);position:relative;transition:background var(--t-fade),border-radius var(--t-panel);transform-origin:bottom;animation:growBar-40849deb .7s var(--t-panel) backwards}.bar.hi[data-v-40849deb]{background:var(--primary)}@keyframes growBar-40849deb{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.bar[data-v-40849deb]:after{content:attr(data-tip);position:absolute;bottom:100%;left:50%;transform:translate(-50%,-4px) scale(.9);background:var(--on-surface);color:var(--surface);font-size:var(--fs-micro);font-weight:var(--w-label);padding:3px 7px;border-radius:6px;white-space:nowrap;pointer-events:none;opacity:0;box-shadow:var(--elev-tip);transition:opacity var(--t-fade),transform var(--t-feedback)}.bar[data-v-40849deb]:hover:after{opacity:1;transform:translate(-50%,-4px) scale(1)}.bar-col span[data-v-40849deb]{font-size:var(--fs-micro);color:var(--on-surface-variant)}.ui-sheet-root[data-v-4386a2b1]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:300;display:flex;align-items:flex-end;justify-content:center;overflow:hidden}.ui-sheet-scrim[data-v-4386a2b1]{z-index:0}.ui-sheet-scrim.is-static[data-v-4386a2b1]{pointer-events:none}.ui-sheet-panel[data-v-4386a2b1]{position:relative;z-index:1;display:flex;flex-direction:column;width:100%;max-width:480px;background:var(--surface-container-high);border:var(--border-w) solid var(--outline-variant);border-bottom:0;border-radius:calc(28px * var(--radius-scale)) calc(28px * var(--radius-scale)) 0 0;overflow:hidden;outline:none;transform:translateY(105%);will-change:transform;transition:transform var(--t-sheet),box-shadow var(--t-fade)}.ui-sheet-panel.is-open[data-v-4386a2b1]{transform:none;will-change:auto}.ui-sheet-panel.is-closing[data-v-4386a2b1]{will-change:transform;transition:transform var(--t-exit)}.ui-sheet-handle[data-v-4386a2b1]{padding:10px 0 4px;display:flex;justify-content:center;flex-shrink:0}.ui-sheet-handle[data-v-4386a2b1]:after{content:"";width:36px;height:4px;border-radius:2px;background:var(--outline-variant)}.ui-sheet-head[data-v-4386a2b1]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 20px 12px;flex-shrink:0}.ui-sheet-head h2[data-v-4386a2b1]{margin:0;font-size:var(--fs-big);font-weight:var(--w-heading);letter-spacing:-.015em}.ui-sheet-close[data-v-4386a2b1]{display:grid;place-items:center;width:32px;height:32px;padding:0;border:0;border-radius:calc(10px * var(--radius-scale));background:var(--surface-container);color:var(--on-surface-variant);cursor:pointer;transition:background var(--t-fade),border-radius var(--t-panel),transform var(--t-feedback)}.ui-sheet-close[data-v-4386a2b1]:hover{background:var(--surface-container-highest)}.ui-sheet-close[data-v-4386a2b1]:active{transform:scale(var(--press-scale))}.ui-sheet-close svg[data-v-4386a2b1]{width:14px;height:14px}.ui-sheet-body[data-v-4386a2b1]{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;padding:0 20px 16px;scrollbar-width:none}.ui-sheet-body[data-v-4386a2b1]::-webkit-scrollbar{display:none}.ui-sheet-footer[data-v-4386a2b1]{flex-shrink:0;padding:10px 20px calc(18px + env(safe-area-inset-bottom));border-top:var(--border-w) solid var(--outline-variant);background:color-mix(in oklab,var(--surface-container-high) 92%,transparent)}@media (prefers-reduced-motion: reduce){.ui-sheet-panel[data-v-4386a2b1]{transition-duration:.01ms!important;transition-delay:0ms!important}}.ui-date[data-v-8ad07d43]{position:relative;display:flex;flex-direction:column;gap:7px;min-width:0}.ui-date__label[data-v-8ad07d43]{font-size:var(--fs-tiny);font-weight:var(--w-label);color:var(--on-surface-variant)}.ui-date__surface[data-v-8ad07d43]{position:relative;display:flex;flex-direction:column;min-width:0;overflow:hidden;border:var(--border-w) solid var(--outline-variant);border-radius:calc(14px * var(--radius-scale));background:var(--surface-container-low);transition:left var(--t-panel),top var(--t-panel),width var(--t-panel),height var(--t-panel),border-radius var(--t-panel),background var(--t-fade),border-color var(--t-fade),box-shadow var(--t-fade)}.ui-date__surface.is-floating[data-v-8ad07d43]{position:fixed;z-index:320}.ui-date__surface.is-open[data-v-8ad07d43]{border-radius:calc(20px * var(--radius-scale));background:var(--surface);border-color:color-mix(in oklab,var(--primary) 28%,var(--outline-variant));box-shadow:var(--elev-tip)}.ui-date__surface.is-closing[data-v-8ad07d43]{transition:left var(--t-exit),top var(--t-exit),width var(--t-exit),height var(--t-exit),border-radius var(--t-exit),background var(--t-fade),border-color var(--t-fade),box-shadow var(--t-fade)}.ui-date__surface.is-compressed[data-v-8ad07d43]{transform:scale(.94);transition:transform .11s ease}.ui-date__surface[data-v-8ad07d43]:not(.is-floating):has(.ui-date__field:hover){border-color:color-mix(in oklab,var(--primary) 36%,var(--outline-variant))}.ui-date__surface[data-v-8ad07d43]:has(.ui-date__field:focus-visible){border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in oklab,var(--primary) 14%,transparent)}.ui-date__view[data-v-8ad07d43]{position:relative;display:flex;flex-shrink:0}.ui-date__field[data-v-8ad07d43]{display:flex;align-items:center;gap:9px;width:100%;min-height:42px;padding:0 12px;border:0;background:transparent;color:var(--on-surface);font:inherit;font-size:var(--fs-small);cursor:pointer;text-align:left}.ui-date__field[data-v-8ad07d43]:focus-visible{outline:none}.ui-date__icon[data-v-8ad07d43]{display:grid;place-items:center;width:17px;height:17px;flex-shrink:0;color:var(--on-surface-variant)}.ui-date__icon svg[data-v-8ad07d43]{width:17px;height:17px}.ui-date__value[data-v-8ad07d43]{flex:1;text-align:left;font-size:var(--fs-small);font-variant-numeric:tabular-nums}.ui-date__chevron[data-v-8ad07d43]{display:grid;place-items:center;width:15px;height:15px;flex-shrink:0;color:var(--on-surface-variant);transition:transform var(--t-feedback)}.ui-date__chevron svg[data-v-8ad07d43]{width:15px;height:15px}.ui-date__chevron.is-open[data-v-8ad07d43]{transform:rotate(180deg)}.ui-date__pop[data-v-8ad07d43]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;outline:none;scrollbar-width:none}.ui-date__pop[data-v-8ad07d43]::-webkit-scrollbar{display:none}.ui-date__pop-inner[data-v-8ad07d43]{display:flex;flex-direction:column;flex-shrink:0;padding:12px}.ui-date__head[data-v-8ad07d43]{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 2px 9px}.ui-date__head strong[data-v-8ad07d43]{font-size:var(--fs-small);font-weight:var(--w-strong);letter-spacing:-.01em}.ui-date__nav[data-v-8ad07d43]{display:grid;place-items:center;width:28px;height:28px;padding:0;border:0;border-radius:8px;background:transparent;color:var(--on-surface-variant);cursor:pointer;transition:background var(--t-fade),color var(--t-fade),transform var(--t-feedback)}.ui-date__nav[data-v-8ad07d43]:hover{background:var(--surface-container);color:var(--on-surface)}.ui-date__nav[data-v-8ad07d43]:active{transform:scale(var(--press-scale))}.ui-date__nav svg[data-v-8ad07d43]{width:16px;height:16px}.ui-date__weekdays[data-v-8ad07d43]{display:grid;grid-template-columns:repeat(7,1fr);padding-bottom:4px;color:var(--on-surface-variant);font-size:var(--fs-micro);text-align:center}.ui-date__grid[data-v-8ad07d43]{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.ui-date__cell[data-v-8ad07d43]{display:grid;place-items:center;min-height:32px}.ui-date__cell button[data-v-8ad07d43]{position:relative;display:grid;place-items:center;width:30px;height:30px;padding:0;border:0;border-radius:9px;background:transparent;color:var(--on-surface);font:inherit;font-size:var(--fs-tiny);font-variant-numeric:tabular-nums;cursor:pointer;transition:background var(--t-fade),color var(--t-fade),transform var(--t-feedback)}.ui-date__cell button[data-v-8ad07d43]:hover{background:var(--surface-container)}.ui-date__cell button[data-v-8ad07d43]:active{transform:scale(.92)}.ui-date__cell button.is-today[data-v-8ad07d43]{color:var(--primary);font-weight:var(--w-strong)}.ui-date__cell button.is-today[data-v-8ad07d43]:after{content:"";position:absolute;bottom:4px;width:3px;height:3px;border-radius:50%;background:currentColor}.ui-date__cell button.is-selected[data-v-8ad07d43]{background:var(--primary);color:var(--on-primary);font-weight:var(--w-strong)}.ui-date__cell button.is-selected[data-v-8ad07d43]:after{display:none}.ui-date__footer[data-v-8ad07d43]{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:8px;padding:8px 2px 0;border-top:var(--border-w) solid var(--outline-variant);color:var(--on-surface-variant);font-size:var(--fs-micro)}.ui-date__footer button[data-v-8ad07d43]{padding:4px 9px;border:0;border-radius:7px;background:var(--primary-container);color:var(--on-primary-container);font:inherit;font-size:var(--fs-micro);font-weight:var(--w-label);cursor:pointer;transition:transform var(--t-feedback),filter var(--t-fade)}.ui-date__footer button[data-v-8ad07d43]:hover{filter:brightness(1.04)}.ui-date__footer button[data-v-8ad07d43]:active{transform:scale(var(--press-scale))}.ui-floating-menu[data-v-4afed32a]{position:relative;display:inline-flex;flex-direction:column;flex-shrink:0;max-width:100%;overflow:hidden;border:var(--border-w) solid var(--outline-variant);border-radius:calc(11px * var(--radius-scale));background:var(--surface-container-low);color:var(--on-surface-variant);transition:left var(--t-panel),top var(--t-panel),width var(--t-panel),height var(--t-panel),border-radius var(--t-panel),background var(--t-fade),border-color var(--t-fade),color var(--t-fade),box-shadow var(--t-fade)}.ui-floating-menu.is-pressed[data-v-4afed32a]{transform:scale(var(--press-scale));transition:transform 90ms ease}.ui-floating-menu.is-floating[data-v-4afed32a]{position:fixed;z-index:280}.ui-floating-menu.is-closing[data-v-4afed32a]{transition:left var(--t-exit),top var(--t-exit),width var(--t-exit),height var(--t-exit),border-radius var(--t-exit),background var(--t-fade),border-color var(--t-fade),color var(--t-fade),box-shadow var(--t-fade)}.ui-floating-menu.is-open[data-v-4afed32a]{border-radius:calc(18px * var(--radius-scale));background:var(--surface);border-color:color-mix(in oklab,var(--primary) 30%,var(--outline-variant));box-shadow:var(--elev-tip);color:var(--on-surface)}.ui-floating-menu__view[data-v-4afed32a]{position:relative;display:flex;flex-shrink:0}.ui-floating-menu__trigger[data-v-4afed32a]{display:inline-flex;align-items:center;gap:6px;min-height:var(--btn-h-md);padding:var(--btn-pad-md);border:0;background:transparent;color:inherit;font-size:var(--btn-fs-md);font-weight:var(--w-label);white-space:nowrap;cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;transition:color var(--t-fade)}.ui-floating-menu.is-sm .ui-floating-menu__trigger[data-v-4afed32a]{min-height:var(--btn-h-sm);padding:var(--btn-pad-sm);font-size:var(--btn-fs-sm)}.ui-floating-menu.is-lg .ui-floating-menu__trigger[data-v-4afed32a]{min-height:var(--btn-h-lg);padding:var(--btn-pad-lg);font-size:var(--btn-fs-lg)}.ui-floating-menu__trigger[data-v-4afed32a]:hover{color:var(--primary)}.ui-floating-menu[data-v-4afed32a]:not(.is-open):not(.is-closing):not(.is-floating):has(.ui-floating-menu__trigger:hover){border-color:var(--primary)}.ui-floating-menu__trigger>svg[data-v-4afed32a]{width:15px;height:15px}.ui-floating-menu__chevron[data-v-4afed32a]{display:grid;place-items:center;width:13px;height:13px;transition:transform var(--t-feedback)}.ui-floating-menu__chevron svg[data-v-4afed32a]{width:12px;height:12px}.ui-floating-menu.is-open .ui-floating-menu__chevron[data-v-4afed32a]{transform:rotate(180deg)}.ui-floating-menu__panel[data-v-4afed32a]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;outline:none;scrollbar-width:none}.ui-floating-menu__panel[data-v-4afed32a]::-webkit-scrollbar{display:none}.ui-floating-menu__panel-inner[data-v-4afed32a]{display:flex;flex-direction:column;flex-shrink:0;gap:3px;padding:8px}.ui-floating-menu__head[data-v-4afed32a]{padding:4px 8px 7px;color:var(--on-surface-variant);font-size:var(--fs-micro);font-weight:var(--w-label);letter-spacing:.05em}.ui-floating-menu__item[data-v-4afed32a]{display:flex;align-items:center;gap:10px;width:100%;padding:9px 8px;border:0;border-radius:calc(11px * var(--radius-scale));background:transparent;color:var(--on-surface);text-align:left;cursor:pointer;transition:background var(--t-fade),color var(--t-fade),border-radius var(--t-panel)}.ui-floating-menu__item[data-v-4afed32a]:hover{background:var(--surface-container-low)}.ui-floating-menu__item.is-active[data-v-4afed32a]{background:color-mix(in oklab,var(--primary-container) 46%,transparent);color:var(--on-primary-container)}.ui-floating-menu__item.is-danger[data-v-4afed32a]{color:var(--error)}.ui-floating-menu__copy[data-v-4afed32a]{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.ui-floating-menu__label[data-v-4afed32a]{font-size:var(--fs-tiny);font-weight:var(--w-label);line-height:1.35}.ui-floating-menu__desc[data-v-4afed32a]{color:var(--on-surface-variant);font-size:var(--fs-micro);line-height:1.45}.ui-floating-menu__item.is-active .ui-floating-menu__desc[data-v-4afed32a]{color:color-mix(in oklab,var(--on-primary-container) 72%,var(--on-surface-variant))}.ui-floating-menu__check[data-v-4afed32a]{width:15px;height:15px;flex-shrink:0;color:var(--primary)}.ui-floating-menu__dot[data-v-4afed32a]{width:6px;height:6px;flex-shrink:0;border-radius:50%;background:var(--outline);opacity:.34}.ui-gauge[data-v-02718fb3]{width:100%;max-width:258px;margin-inline:auto}.ui-gauge__dial[data-v-02718fb3]{position:relative}.ui-gauge svg[data-v-02718fb3]{display:block;width:100%;height:auto;overflow:visible}.ui-gauge__track[data-v-02718fb3]{stroke:var(--surface-container-high);stroke-width:12;stroke-linecap:round}.ui-gauge__progress[data-v-02718fb3]{stroke:var(--primary);stroke-width:12;stroke-linecap:round;stroke-dasharray:100;transition:stroke-dashoffset var(--t-view)}.ui-gauge__center[data-v-02718fb3]{position:absolute;left:50%;top:65.5%;transform:translate(-50%,-50%);pointer-events:none}.ui-gauge__center strong[data-v-02718fb3]{display:block;color:var(--on-surface);font-size:2.2rem;font-weight:var(--w-heading);font-variant-numeric:tabular-nums;letter-spacing:-.012em;line-height:1;white-space:nowrap}.ui-gauge__center small[data-v-02718fb3]{margin-left:2px;color:var(--on-surface-variant);font-size:1.02rem;font-weight:var(--w-strong);letter-spacing:0}.ui-gauge__caption[data-v-02718fb3]{position:absolute;top:calc(100% + 5px);left:50%;transform:translate(-50%);white-space:nowrap;color:var(--on-surface-variant);font-size:var(--fs-micro);letter-spacing:.02em}.ui-gauge__scale[data-v-02718fb3]{display:flex;justify-content:space-between;margin-top:6px;padding:0 2px;color:var(--on-surface-variant);font-size:var(--fs-micro);font-variant-numeric:tabular-nums}.ui-heatmap[data-v-aba10172]{display:flex;flex-direction:column;gap:9px;min-width:0}.ui-heatmap__head[data-v-aba10172]{display:flex;align-items:center;justify-content:space-between;gap:10px;color:var(--on-surface-variant);font-size:var(--fs-micro)}.ui-heatmap__head span[data-v-aba10172]:first-child{font-weight:var(--w-label)}.ui-heatmap__body[data-v-aba10172]{overflow-x:auto;scrollbar-width:none;padding-bottom:2px}.ui-heatmap__body[data-v-aba10172]::-webkit-scrollbar{display:none}.ui-heatmap__grid[data-v-aba10172]{display:grid;grid-template-rows:repeat(7,10px);grid-auto-flow:column;grid-auto-columns:10px;gap:3px;width:max-content}.ui-heatmap__cell[data-v-aba10172]{width:10px;height:10px;border-radius:3px;background:var(--surface-container-high);transition:transform var(--t-feedback),filter var(--t-fade)}.ui-heatmap__cell[data-v-aba10172]:hover{transform:scale(1.25);filter:brightness(1.08)}.ui-heatmap__cell[data-level="1"][data-v-aba10172]{background:color-mix(in oklab,var(--primary) 16%,var(--surface-container-high))}.ui-heatmap__cell[data-level="2"][data-v-aba10172]{background:color-mix(in oklab,var(--primary) 34%,var(--surface-container-high))}.ui-heatmap__cell[data-level="3"][data-v-aba10172]{background:color-mix(in oklab,var(--primary) 62%,var(--surface-container-high))}.ui-heatmap__cell[data-level="4"][data-v-aba10172]{background:var(--primary)}.ui-heatmap__legend[data-v-aba10172]{display:flex;align-items:center;justify-content:flex-end;gap:4px;color:var(--on-surface-variant);font-size:var(--fs-micro)}.ui-heatmap__legend i[data-v-aba10172]{width:9px;height:9px;border-radius:3px;background:var(--surface-container-high)}.ui-heatmap__legend i[data-level="1"][data-v-aba10172]{background:color-mix(in oklab,var(--primary) 16%,var(--surface-container-high))}.ui-heatmap__legend i[data-level="2"][data-v-aba10172]{background:color-mix(in oklab,var(--primary) 34%,var(--surface-container-high))}.ui-heatmap__legend i[data-level="3"][data-v-aba10172]{background:color-mix(in oklab,var(--primary) 62%,var(--surface-container-high))}.ui-heatmap__legend i[data-level="4"][data-v-aba10172]{background:var(--primary)}.chart-wrap[data-v-55557827]{position:relative}.chart[data-v-55557827]{width:100%;display:block;overflow:visible;cursor:crosshair}.chart .grid-line[data-v-55557827]{stroke:var(--outline-variant);stroke-width:1;opacity:.5}.chart .line[data-v-55557827]{transition:stroke var(--t-fade)}.chart-tip[data-v-55557827]{position:absolute;top:-6px;left:0;transform:translate(-50%,-100%) scale(.9);background:var(--on-surface);color:var(--surface);font-size:var(--fs-micro);font-weight:var(--w-label);padding:4px 9px;border-radius:7px;white-space:nowrap;pointer-events:none;opacity:0;box-shadow:var(--elev-tip);transition:opacity var(--t-fade),transform var(--t-feedback)}.chart-tip.show[data-v-55557827]{opacity:1;transform:translate(-50%,-100%) scale(1)}.chart-dot[data-v-55557827]{fill:var(--primary);stroke:var(--surface);stroke-width:2;opacity:0;transition:opacity var(--t-fade)}.chart-dot.show[data-v-55557827]{opacity:1}.ui-rating[data-v-713a0ba8]{display:flex;flex-direction:column;gap:7px;min-width:0}.ui-rating__head[data-v-713a0ba8]{display:flex;align-items:center;justify-content:space-between;gap:10px}.ui-rating__label[data-v-713a0ba8]{font-size:var(--fs-tiny);font-weight:var(--w-label);color:var(--on-surface-variant)}.ui-rating__value[data-v-713a0ba8]{color:var(--on-surface-variant);font-family:ui-monospace,monospace;font-size:var(--fs-micro);font-variant-numeric:tabular-nums}.ui-rating__stars[data-v-713a0ba8]{display:flex;align-items:center;gap:3px}.ui-rating__stars button[data-v-713a0ba8]{display:grid;place-items:center;width:32px;height:32px;padding:0;border:0;border-radius:9px;background:transparent;color:var(--outline);cursor:pointer;transition:color var(--t-fade),background var(--t-fade),transform var(--t-feedback)}.ui-rating__stars button[data-v-713a0ba8]:hover{background:var(--surface-container)}.ui-rating__stars button[data-v-713a0ba8]:active{transform:scale(.88)}.ui-rating__stars button[data-v-713a0ba8]:focus-visible{outline:var(--focus-w) solid var(--primary);outline-offset:1px}.ui-rating__stars button svg[data-v-713a0ba8]{width:21px;height:21px}.ui-rating__stars button.is-filled[data-v-713a0ba8]{color:var(--ui-warning)}.ui-rating__stars button.is-filled svg[data-v-713a0ba8]{fill:color-mix(in oklab,var(--ui-warning) 24%,transparent)}@media (max-width: 380px){.ui-rating__stars button[data-v-713a0ba8]{width:30px;height:30px}}.ui-ring[data-v-7c0d1432]{position:relative;flex-shrink:0}.ui-ring svg[data-v-7c0d1432]{display:block;width:100%;height:100%;transform:rotate(0)}.ui-ring__track[data-v-7c0d1432]{stroke:var(--outline-variant)}.ui-ring__progress[data-v-7c0d1432]{stroke:var(--primary);stroke-linecap:round;transition:stroke-dashoffset 1.1s var(--t-panel),stroke var(--t-fade)}.ui-ring__center[data-v-7c0d1432]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;pointer-events:none}.ui-ring__center strong[data-v-7c0d1432]{font-size:1.45rem;font-weight:var(--w-heading);line-height:1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.ui-ring__center span[data-v-7c0d1432]{margin-top:4px;color:var(--on-surface-variant);font-size:var(--fs-micro)}.ui-select[data-v-922f19c9]{position:relative;min-width:0}.ui-select__surface[data-v-922f19c9]{position:relative;display:flex;flex-direction:column;min-width:0;overflow:hidden;border:var(--border-w) solid var(--outline-variant);border-radius:calc(13px * var(--radius-scale));background:var(--surface-container-low);transition:left var(--t-panel),top var(--t-panel),width var(--t-panel),height var(--t-panel),border-radius var(--t-panel),background var(--t-fade),border-color var(--t-fade),box-shadow var(--t-fade)}.ui-select__surface.is-pressed[data-v-922f19c9]{transform:scale(var(--press-scale));transition:transform 90ms ease}.ui-select__surface.is-floating[data-v-922f19c9]{position:fixed;z-index:320}.ui-select__surface.is-open[data-v-922f19c9]{border-radius:calc(18px * var(--radius-scale));background:var(--surface);border-color:color-mix(in oklab,var(--primary) 28%,var(--outline-variant));box-shadow:var(--elev-tip)}.ui-select__surface.is-closing[data-v-922f19c9]{transition:left var(--t-exit),top var(--t-exit),width var(--t-exit),height var(--t-exit),border-radius var(--t-exit),background var(--t-fade),border-color var(--t-fade),box-shadow var(--t-fade)}.ui-select__surface[data-v-922f19c9]:not(.is-floating):has(.ui-select__field:hover){border-color:color-mix(in oklab,var(--primary) 36%,var(--outline-variant))}.ui-select__surface[data-v-922f19c9]:has(.ui-select__field:focus-visible){border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in oklab,var(--primary) 14%,transparent)}.ui-select__view[data-v-922f19c9]{position:relative;z-index:2;display:flex;flex-shrink:0;transform:translateZ(0);transition:opacity .22s ease,transform var(--t-panel),filter var(--t-fade)}.ui-select.is-open .ui-select__view[data-v-922f19c9]{opacity:0;pointer-events:none;transform:translate3d(0,var(--select-shift, 0px),0);filter:blur(8px);transition:opacity .26s ease .33s,transform var(--t-panel),filter .3s ease .26s}.ui-select.is-closing .ui-select__view[data-v-922f19c9]{opacity:1;transform:translateZ(0);filter:blur(0);transition:opacity .2s ease 90ms,transform var(--t-exit),filter var(--t-fade) 90ms}.ui-select__field[data-v-922f19c9]{display:flex;align-items:center;gap:9px;width:100%;min-height:44px;padding:0 12px;border:0;background:transparent;color:var(--on-surface);font:inherit;font-size:var(--fs-small);text-align:left;white-space:nowrap;cursor:pointer;touch-action:manipulation;-webkit-user-select:none;user-select:none}.ui-select__field[data-v-922f19c9]:focus-visible{outline:none}.ui-select__value[data-v-922f19c9]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}.ui-select__value.is-placeholder[data-v-922f19c9]{color:var(--on-surface-variant);opacity:.78}.ui-select__chevron[data-v-922f19c9]{display:grid;place-items:center;width:15px;height:15px;flex-shrink:0;color:var(--on-surface-variant);transition:transform var(--t-feedback),color var(--t-fade)}.ui-select__chevron svg[data-v-922f19c9]{width:15px;height:15px}.ui-select.is-open .ui-select__chevron[data-v-922f19c9]{transform:rotate(180deg);color:var(--primary)}.ui-select__panel[data-v-922f19c9]{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;display:flex;flex-direction:column;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;outline:none;scrollbar-width:none;opacity:0;filter:blur(10px);transform:translate3d(0,8px,0) scale(.985);transform-origin:50% 0;pointer-events:none;transition:opacity .18s ease,filter .2s ease,transform .2s ease}.ui-select__panel[data-v-922f19c9]::-webkit-scrollbar{display:none}.ui-select.is-open .ui-select__panel[data-v-922f19c9]{opacity:1;filter:blur(0);transform:none;pointer-events:auto;transition:opacity .3s ease 90ms,filter .34s ease 90ms,transform var(--t-panel) 90ms}.ui-select.is-closing .ui-select__panel[data-v-922f19c9]{opacity:0;filter:blur(8px);transform:translate3d(0,6px,0) scale(.99);transition:opacity .18s ease,filter .2s ease,transform var(--t-exit)}.ui-select__panel-inner[data-v-922f19c9]{display:flex;flex-direction:column;flex-shrink:0;gap:2px;padding:6px}.ui-select__option[data-v-922f19c9]{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;padding:10px 11px;border:0;border-radius:calc(10px * var(--radius-scale));background:transparent;color:var(--on-surface);font:inherit;font-size:var(--fs-small);text-align:left;cursor:pointer;transition:background var(--t-fade),color var(--t-fade),border-radius var(--t-panel)}.ui-select__option[data-v-922f19c9]:hover{background:var(--surface-container-low)}.ui-select__option.is-selected[data-v-922f19c9]{color:var(--primary);font-weight:var(--w-label)}.ui-select__option-label[data-v-922f19c9]{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ui-select__check[data-v-922f19c9]{width:15px;height:15px;flex-shrink:0}.ui-slider__track[data-v-c952a627]{touch-action:none;cursor:pointer}.ui-slider__thumb[data-v-c952a627]{position:absolute;touch-action:none;left:var(--pct, 50%);top:50%;z-index:2;width:20px;height:20px;margin:0;padding:0;border:3px solid var(--surface);border-radius:50%;background:var(--primary);box-shadow:0 1px 3px #0000002e;transform:translate(-50%,-50%) scale(1);cursor:grab;display:grid;place-items:center;transition:transform var(--t-feedback),background var(--t-fade),box-shadow var(--t-fade)}.ui-slider__thumb[data-v-c952a627]:hover{background:color-mix(in oklab,var(--primary) 88%,var(--on-primary))}.ui-slider__thumb[data-v-c952a627]:focus-visible{outline:none;box-shadow:0 0 0 3px color-mix(in oklab,var(--primary) 22%,transparent)}.ui-slider.is-dragging .ui-slider__thumb[data-v-c952a627]{cursor:grabbing;transform:translate(-50%,-50%) scale(1.14)}.ui-slider__thumb-dot[data-v-c952a627]{display:none}.ui-sparkline[data-v-edae2913]{width:100%;min-width:0}.ui-sparkline svg[data-v-edae2913]{display:block;width:100%;height:60px;overflow:visible}.ui-sparkline__line[data-v-edae2913]{stroke:var(--primary);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}.ui-sparkline__stop-start[data-v-edae2913]{stop-color:var(--primary);stop-opacity:.24}.ui-sparkline__stop-end[data-v-edae2913]{stop-color:var(--primary);stop-opacity:0}.ui-stepper[data-v-04de9fcf]{--stepper-value-size: .86rem;--stepper-stage-h: calc(var(--stepper-value-size) * 1.7);display:flex;flex-direction:column;gap:7px;min-width:0}.ui-stepper--sm[data-v-04de9fcf]{--stepper-value-size: .68rem}.ui-stepper--md[data-v-04de9fcf]{--stepper-value-size: .86rem}.ui-stepper--lg[data-v-04de9fcf]{--stepper-value-size: 1.14rem}.ui-stepper--xl[data-v-04de9fcf]{--stepper-value-size: 1.48rem}.ui-stepper__field-label[data-v-04de9fcf]{align-self:flex-start;font-size:var(--fs-small);font-weight:var(--w-label);color:var(--on-surface)}.ui-stepper__label[data-v-04de9fcf]{align-self:flex-start;font-size:var(--fs-tiny);font-weight:var(--w-label);color:var(--on-surface-variant)}.ui-stepper__control[data-v-04de9fcf]{position:relative;display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:42px;padding:3px;border:var(--border-w) solid var(--outline-variant);border-radius:calc(14px * var(--radius-scale));background:var(--surface-container-low);transition:border-color var(--t-fade),background var(--t-fade),border-radius var(--t-panel)}.ui-stepper__control[data-v-04de9fcf]:focus-within{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in oklab,var(--primary) 14%,transparent)}.ui-stepper__btn[data-v-04de9fcf]{display:grid;place-items:center;width:34px;height:34px;padding:0;border:0;border-radius:calc(10px * var(--radius-scale));background:var(--surface-container);color:var(--on-surface);cursor:pointer;flex-shrink:0;transition:background var(--t-fade),color var(--t-fade),transform var(--t-feedback),opacity var(--t-fade),border-radius var(--t-panel)}.ui-stepper__btn[data-v-04de9fcf]:hover:not(.is-disabled){background:var(--primary-container);color:var(--on-primary-container)}.ui-stepper__btn[data-v-04de9fcf]:active:not(.is-disabled){transform:scale(.9)}.ui-stepper__btn.is-disabled[data-v-04de9fcf]{opacity:.32;cursor:not-allowed}.ui-stepper__btn svg[data-v-04de9fcf]{width:16px;height:16px}.ui-stepper__stage[data-v-04de9fcf]{position:relative;flex:1;min-width:0;height:var(--stepper-stage-h);overflow:hidden;display:flex;align-items:center;justify-content:center;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 12%,#000 88%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 12%,#000 88%,transparent 100%)}.ui-stepper__flow[data-v-04de9fcf]{display:inline-flex;align-items:flex-end;gap:3px;max-width:100%}.ui-stepper__box[data-v-04de9fcf]{position:relative;display:inline-block;min-width:0;text-align:center}.ui-stepper__value[data-v-04de9fcf]{display:block;font-size:var(--stepper-value-size);font-weight:var(--w-strong);font-variant-numeric:tabular-nums;line-height:1.15;text-align:center;white-space:nowrap;will-change:transform,opacity,filter}.ui-stepper--xl .ui-stepper__value[data-v-04de9fcf]{font-weight:var(--w-heading);letter-spacing:-.02em}.ui-stepper__unit[data-v-04de9fcf]{display:inline-block;line-height:1.05;padding-bottom:.06em;color:var(--on-surface-variant);font-size:max(.62rem,calc(var(--stepper-value-size) * .52));font-weight:500;white-space:nowrap}.ui-stepper__value--leave[data-v-04de9fcf]{position:absolute;top:0;right:0;bottom:0;left:0;opacity:0;pointer-events:none}.ui-stepper--dir-up .ui-stepper__value--leave[data-v-04de9fcf]{--leave-sign: -1}.ui-stepper--dir-up .ui-stepper__value--enter[data-v-04de9fcf]{--enter-sign: 1}.ui-stepper--dir-down .ui-stepper__value--leave[data-v-04de9fcf]{--leave-sign: 1}.ui-stepper--dir-down .ui-stepper__value--enter[data-v-04de9fcf]{--enter-sign: -1}.ui-stepper__value--leave.is-rolling[data-v-04de9fcf]{animation:stepperOut-04de9fcf .42s cubic-bezier(.3,.9,.3,1) forwards}.ui-stepper__value--enter.is-rolling[data-v-04de9fcf]{animation:stepperIn-04de9fcf .42s cubic-bezier(.3,.9,.3,1) forwards}@keyframes stepperOut-04de9fcf{0%{transform:translateZ(0);opacity:1;filter:blur(0)}to{transform:translate3d(0,calc(var(--leave-sign, -1) * var(--roll-distance)),0);opacity:0;filter:blur(6px)}}@keyframes stepperIn-04de9fcf{0%{transform:translate3d(0,calc(var(--enter-sign, 1) * var(--roll-distance)),0);opacity:0;filter:blur(6px)}to{transform:translateZ(0);opacity:1;filter:blur(0)}}.ui-stepper--dir-up.is-bumping-plus .ui-stepper__box[data-v-04de9fcf],.ui-stepper--dir-up.is-bumping-minus .ui-stepper__box[data-v-04de9fcf]{--bump-sign: -1}.ui-stepper--dir-down.is-bumping-plus .ui-stepper__box[data-v-04de9fcf],.ui-stepper--dir-down.is-bumping-minus .ui-stepper__box[data-v-04de9fcf]{--bump-sign: 1}.ui-stepper.is-bumping-plus .ui-stepper__box[data-v-04de9fcf],.ui-stepper.is-bumping-minus .ui-stepper__box[data-v-04de9fcf]{animation:stepperBump-04de9fcf .4s cubic-bezier(.3,1.15,.4,1) 1}@keyframes stepperBump-04de9fcf{0%{transform:translateZ(0)}32%{transform:translate3d(0,calc(var(--bump-sign, -1) * 5px),0)}64%{transform:translate3d(0,calc(var(--bump-sign, -1) * -1.5px),0)}to{transform:translateZ(0)}}.ui-stepper--ctrl-sides .ui-stepper__control[data-v-04de9fcf]{flex-direction:row}.ui-stepper--ctrl-bottom .ui-stepper__control[data-v-04de9fcf]{flex-wrap:wrap;justify-content:center;padding:10px 10px 9px;gap:8px}.ui-stepper--ctrl-bottom .ui-stepper__stage[data-v-04de9fcf]{order:-1;flex-basis:100%}.ui-stepper--ctrl-bottom .ui-stepper__btn[data-v-04de9fcf]{width:46px;height:30px}.ui-stepper--sm .ui-stepper__control[data-v-04de9fcf]{min-height:34px;padding:2px;border-radius:calc(11px * var(--radius-scale))}.ui-stepper--sm .ui-stepper__btn[data-v-04de9fcf]{width:28px;height:28px;border-radius:8px}.ui-stepper--sm .ui-stepper__btn svg[data-v-04de9fcf]{width:13px;height:13px}.ui-stepper--lg .ui-stepper__control[data-v-04de9fcf]{min-height:54px;padding:5px;border-radius:calc(16px * var(--radius-scale))}.ui-stepper--lg .ui-stepper__btn[data-v-04de9fcf]{width:42px;height:42px;border-radius:12px}.ui-stepper--lg .ui-stepper__btn svg[data-v-04de9fcf]{width:20px;height:20px}.ui-stepper--xl .ui-stepper__label[data-v-04de9fcf]{font-size:var(--fs-small)}.ui-stepper--xl .ui-stepper__control[data-v-04de9fcf]{min-height:108px;padding:16px 16px 12px;border-radius:calc(22px * var(--radius-scale));gap:10px}.ui-stepper--xl .ui-stepper__btn[data-v-04de9fcf]{width:56px;height:42px;border-radius:calc(14px * var(--radius-scale))}.ui-stepper--xl .ui-stepper__btn svg[data-v-04de9fcf]{width:22px;height:22px}.ui-stepper--xl.ui-stepper--ctrl-bottom .ui-stepper__btn[data-v-04de9fcf]{flex:1;max-width:148px}.ui-stepper--block[data-v-04de9fcf],.ui-stepper--block .ui-stepper__control[data-v-04de9fcf]{width:100%}@media (prefers-reduced-motion: reduce){.ui-stepper__value--leave.is-rolling[data-v-04de9fcf],.ui-stepper__value--enter.is-rolling[data-v-04de9fcf],.ui-stepper.is-bumping-plus .ui-stepper__box[data-v-04de9fcf],.ui-stepper.is-bumping-minus .ui-stepper__box[data-v-04de9fcf]{animation-duration:.01ms}}.ui-time[data-v-74660981]{position:relative;display:flex;flex-direction:column;gap:7px;min-width:0}.ui-time__label[data-v-74660981]{font-size:var(--fs-tiny);font-weight:var(--w-label);color:var(--on-surface-variant)}.ui-time__surface[data-v-74660981]{position:relative;display:flex;flex-direction:column;min-width:0;overflow:hidden;border:var(--border-w) solid var(--outline-variant);border-radius:calc(14px * var(--radius-scale));background:var(--surface-container-low);transition:left var(--t-panel),top var(--t-panel),width var(--t-panel),height var(--t-panel),border-radius var(--t-panel),background var(--t-fade),border-color var(--t-fade),box-shadow var(--t-fade)}.ui-time__surface.is-floating[data-v-74660981]{position:fixed;z-index:320}.ui-time__surface.is-open[data-v-74660981]{border-radius:calc(20px * var(--radius-scale));background:var(--surface);border-color:color-mix(in oklab,var(--primary) 28%,var(--outline-variant));box-shadow:var(--elev-tip)}.ui-time__surface.is-closing[data-v-74660981]{transition:left var(--t-exit),top var(--t-exit),width var(--t-exit),height var(--t-exit),border-radius var(--t-exit),background var(--t-fade),border-color var(--t-fade),box-shadow var(--t-fade)}.ui-time__surface.is-compressed[data-v-74660981]{transform:scale(.94);transition:transform .11s ease}.ui-time__surface[data-v-74660981]:not(.is-floating):has(.ui-time__field:hover){border-color:color-mix(in oklab,var(--primary) 36%,var(--outline-variant))}.ui-time__surface[data-v-74660981]:has(.ui-time__field:focus-visible){border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in oklab,var(--primary) 14%,transparent)}.ui-time__view[data-v-74660981]{position:relative;display:flex;flex-shrink:0}.ui-time__field[data-v-74660981]{display:flex;align-items:center;gap:9px;width:100%;min-height:42px;padding:0 12px;border:0;background:transparent;color:var(--on-surface);font:inherit;font-size:var(--fs-small);cursor:pointer;text-align:left}.ui-time__field[data-v-74660981]:focus-visible{outline:none}.ui-time__icon[data-v-74660981]{display:grid;place-items:center;width:17px;height:17px;flex-shrink:0;color:var(--on-surface-variant)}.ui-time__icon svg[data-v-74660981]{width:17px;height:17px}.ui-time__value[data-v-74660981]{flex:1;text-align:left;font-size:var(--fs-small);font-variant-numeric:tabular-nums;letter-spacing:.03em}.ui-time__chevron[data-v-74660981]{display:grid;place-items:center;width:15px;height:15px;flex-shrink:0;color:var(--on-surface-variant);transition:transform var(--t-feedback)}.ui-time__chevron svg[data-v-74660981]{width:15px;height:15px}.ui-time__chevron.is-open[data-v-74660981]{transform:rotate(180deg)}.ui-time__pop[data-v-74660981]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;outline:none;scrollbar-width:none}.ui-time__pop[data-v-74660981]::-webkit-scrollbar{display:none}.ui-time__pop-inner[data-v-74660981]{display:flex;flex-direction:column;flex-shrink:0;padding:12px}.ui-time__head[data-v-74660981]{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:1px 2px 10px;color:var(--on-surface-variant);font-size:var(--fs-micro)}.ui-time__head strong[data-v-74660981]{color:var(--on-surface);font-family:ui-monospace,monospace;font-size:var(--fs-body);font-variant-numeric:tabular-nums}.ui-time__body[data-v-74660981]{position:relative;display:flex;align-items:stretch;gap:5px;height:172px;padding:4px;border:var(--border-w) solid var(--outline-variant);border-radius:13px;background:var(--surface-container-low)}.ui-time__highlight[data-v-74660981]{position:absolute;left:4px;right:4px;top:50%;height:30px;transform:translateY(-50%);border-radius:9px;background:var(--primary-container);pointer-events:none;z-index:0}.ui-time__column[data-v-74660981]{position:relative;z-index:1;flex:1;min-width:0;height:100%;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none;padding:66px 2px;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 18%,#000 82%,transparent 100%);mask-image:linear-gradient(to bottom,transparent 0,#000 18%,#000 82%,transparent 100%)}.ui-time__column[data-v-74660981]::-webkit-scrollbar{display:none}.ui-time__column button[data-v-74660981]{display:flex;align-items:center;justify-content:center;width:100%;height:30px;padding:0 4px;border:0;border-radius:8px;background:transparent;color:var(--on-surface-variant);font:inherit;font-size:var(--fs-small);font-variant-numeric:tabular-nums;cursor:pointer;transition:color var(--t-fade),background var(--t-fade),transform var(--t-feedback)}.ui-time__column button[data-v-74660981]:hover{background:color-mix(in oklab,var(--surface) 46%,transparent);color:var(--on-surface)}.ui-time__column button[data-v-74660981]:active{transform:scale(.96)}.ui-time__column button.is-selected[data-v-74660981]{background:transparent;color:var(--on-primary-container);font-weight:var(--w-strong)}.ui-time__colon[data-v-74660981]{align-self:center;position:relative;z-index:1;color:var(--on-surface-variant);font-size:var(--fs-body);font-weight:var(--w-strong)}.ui-time__presets[data-v-74660981]{display:grid;grid-template-columns:repeat(var(--preset-cols, 4),minmax(0,1fr));gap:5px;margin-top:9px}.ui-time__presets button[data-v-74660981]{padding:6px 2px;border:var(--border-w) solid var(--outline-variant);border-radius:8px;background:transparent;color:var(--on-surface-variant);font:inherit;font-size:var(--fs-micro);cursor:pointer;transition:border-color var(--t-fade),color var(--t-fade),background var(--t-fade)}.ui-time__presets button[data-v-74660981]:hover{border-color:var(--primary);background:color-mix(in oklab,var(--primary) 7%,transparent);color:var(--primary)}.ui-time__actions[data-v-74660981]{display:flex;justify-content:flex-end;gap:7px;margin-top:10px}.ui-time__actions button[data-v-74660981]{min-width:58px;padding:7px 12px;border-radius:10px;font:inherit;font-size:var(--fs-tiny);font-weight:var(--w-label);cursor:pointer;transition:transform var(--t-feedback),background var(--t-fade),color var(--t-fade)}.ui-time__actions button[data-v-74660981]:active{transform:scale(var(--press-scale))}.ui-time__cancel[data-v-74660981]{border:0;background:transparent;color:var(--on-surface-variant)}.ui-time__cancel[data-v-74660981]:hover{background:var(--surface-container);color:var(--on-surface)}.ui-time__confirm[data-v-74660981]{border:0;background:var(--primary);color:var(--on-primary)}.ui-tool-menu[data-v-06458478]{position:relative;display:inline-flex;flex-direction:column;flex-shrink:0;max-width:100%;border:var(--border-w) solid var(--outline-variant);border-radius:calc(13px * var(--radius-scale));background:var(--surface-container-low);color:var(--on-surface);overflow:hidden;transition:width var(--t-panel),height var(--t-panel),border-radius var(--t-panel),background var(--t-fade),border-color var(--t-fade),box-shadow var(--t-fade)}.ui-tool-menu.is-closing[data-v-06458478]{transition:width var(--t-exit),height var(--t-exit),border-radius var(--t-exit),background var(--t-fade),border-color var(--t-fade),box-shadow var(--t-fade)}.ui-tool-menu.is-pressed[data-v-06458478]{transform:scale(var(--press-scale));transition:transform 90ms ease}.ui-tool-menu.is-open[data-v-06458478]{border-radius:calc(18px * var(--radius-scale));background:var(--surface);border-color:color-mix(in oklab,var(--primary) 30%,var(--outline-variant));box-shadow:var(--elev-tip)}.ui-tool-menu__view[data-v-06458478]{position:relative;display:flex;flex-shrink:0}.ui-tool-menu__trigger[data-v-06458478]{display:flex;align-items:center;gap:7px;width:100%;min-height:38px;padding:8px 10px 8px 12px;border:0;background:transparent;color:inherit;font-size:var(--fs-tiny);font-weight:var(--w-label);cursor:pointer;text-align:left;white-space:nowrap;touch-action:manipulation;-webkit-user-select:none;user-select:none}.ui-tool-menu.is-sm .ui-tool-menu__trigger[data-v-06458478]{min-height:var(--btn-h-sm);padding:var(--btn-pad-sm);gap:6px;font-size:var(--btn-fs-sm)}.ui-tool-menu.is-sm .ui-tool-menu__icon[data-v-06458478]{width:15px;height:15px}.ui-tool-menu.is-sm .ui-tool-menu__icon svg[data-v-06458478]{width:14px;height:14px}.ui-tool-menu.is-lg .ui-tool-menu__trigger[data-v-06458478]{min-height:var(--btn-h-lg);padding:var(--btn-pad-lg);font-size:var(--btn-fs-lg)}.ui-tool-menu.is-lg .ui-tool-menu__icon[data-v-06458478]{width:20px;height:20px}.ui-tool-menu.is-lg .ui-tool-menu__icon svg[data-v-06458478]{width:18px;height:18px}.ui-tool-menu__icon[data-v-06458478]{display:grid;place-items:center;width:18px;height:18px;flex-shrink:0;color:var(--primary)}.ui-tool-menu__icon svg[data-v-06458478]{width:16px;height:16px}.ui-tool-menu__label[data-v-06458478]{flex:1}.ui-tool-menu__chevron[data-v-06458478]{display:grid;place-items:center;width:16px;height:16px;flex-shrink:0;color:var(--on-surface-variant);transition:transform var(--t-panel),color var(--t-fade)}.ui-tool-menu__chevron svg[data-v-06458478]{width:13px;height:13px}.ui-tool-menu.is-open .ui-tool-menu__chevron[data-v-06458478]{color:var(--primary);transform:rotate(180deg)}.ui-tool-menu__panel[data-v-06458478]{position:absolute;top:0;right:0;bottom:0;left:0;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:none}.ui-tool-menu__panel[data-v-06458478]::-webkit-scrollbar{display:none}.ui-tool-menu__inner[data-v-06458478]{display:flex;flex-direction:column;gap:2px;padding:7px 6px 6px}.ui-tool-menu__item[data-v-06458478]{display:flex;align-items:flex-start;gap:9px;width:100%;padding:8px 9px;border:0;border-radius:calc(11px * var(--radius-scale));background:transparent;color:var(--on-surface);text-align:left;cursor:pointer;transition:background var(--t-fade),color var(--t-fade),border-radius var(--t-panel)}.ui-tool-menu__item[data-v-06458478]:hover{background:var(--surface-container-low)}.ui-tool-menu__item[data-v-06458478]:active{border-radius:calc(8px * var(--radius-scale))}.ui-tool-menu__item-dot[data-v-06458478]{width:6px;height:6px;margin-top:6px;flex-shrink:0;border-radius:50%;background:var(--primary);opacity:.65}.ui-tool-menu__item-copy[data-v-06458478]{display:flex;flex-direction:column;gap:2px;min-width:0}.ui-tool-menu__item-label[data-v-06458478]{font-size:var(--fs-tiny);font-weight:var(--w-label);line-height:1.35}.ui-tool-menu__item-desc[data-v-06458478]{color:var(--on-surface-variant);font-size:var(--fs-micro);line-height:1.45}.ui-tool-menu__item.is-danger[data-v-06458478]{color:var(--error)}.ui-tool-menu__item.is-danger .ui-tool-menu__item-dot[data-v-06458478]{background:var(--error)}.ui-tool-menu__item.is-danger .ui-tool-menu__item-desc[data-v-06458478]{color:color-mix(in oklab,var(--error) 70%,var(--on-surface-variant))}
|