All checks were successful
Nextcloud Server Tests / matrix-config (push) Successful in 19s
Build And Publish Appstore Package / build_and_publish (push) Successful in 3m28s
Nextcloud Server Tests / Nextcloud stable31 / PHP 8.2 (stable31, 8.2) (push) Successful in 19m13s
Nextcloud Server Tests / version-consistency (push) Successful in 21s
Nextcloud Server Tests / Nextcloud stable31 / PHP 8.3 (stable31, 8.3) (push) Successful in 18m25s
Nextcloud Server Tests / Nextcloud stable34 / PHP 8.2 (stable34, 8.2) (push) Successful in 17m8s
Nextcloud Server Tests / Nextcloud stable34 / PHP 8.3 (stable34, 8.3) (push) Successful in 16m23s
Nextcloud Server Tests / Nextcloud stable35 / PHP 8.3 (stable35, 8.3) (push) Successful in 17m24s
Nextcloud Server Tests / Nextcloud stable35 / PHP 8.4 (stable35, 8.4) (push) Successful in 16m42s
Nextcloud Server Tests / Nextcloud stable35 / PHP 8.5 (stable35, 8.5) (push) Successful in 17m34s
Nextcloud Server Tests / Nextcloud stable32 / PHP 8.2 (stable32, 8.2) (push) Successful in 17m26s
Nextcloud Server Tests / Nextcloud stable32 / PHP 8.3 (stable32, 8.3) (push) Successful in 16m45s
Nextcloud Server Tests / Nextcloud stable33 / PHP 8.2 (stable33, 8.2) (push) Successful in 17m2s
Nextcloud Server Tests / Nextcloud stable33 / PHP 8.3 (stable33, 8.3) (push) Successful in 16m36s
26 lines
760 KiB
JavaScript
26 lines
760 KiB
JavaScript
(function(){"use strict";var bl=document.createElement("style");bl.textContent=`.app-opsdash #app-navigation,.app-opsdash .app-navigation{position:relative;display:flex;flex-direction:column;height:100%;overflow:visible!important}.app-opsdash .app-content__navigation{overflow:visible!important}.app-opsdash .app-navigation__content{display:flex;flex-direction:column;flex:1;min-height:100%;overflow-y:auto!important;overflow-x:hidden!important;max-height:100%!important}.sb-inner[data-v-88e39507]{position:relative;display:flex;flex-direction:column;gap:8px;padding:0 4px 4px;min-height:100%}.hero-topbar[data-v-88e39507]{display:flex;align-items:center;gap:8px}.hero-seg[data-v-88e39507]{flex:1}.hide-btn[data-v-88e39507]{position:static;width:34px;height:34px;border-radius:10px;border:1px solid color-mix(in oklab,var(--brand),transparent 82%);color:var(--brand);background:color-mix(in oklab,var(--brand),transparent 86%);box-shadow:0 2px 8px #0f172a14;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.hide-btn[data-v-88e39507]:hover{background:color-mix(in oklab,var(--brand),transparent 76%)}.rc[data-v-88e39507]{border:1px solid color-mix(in oklab,var(--brand),transparent 82%);border-radius:22px;padding:17px 16px 15px;display:flex;flex-direction:column;gap:10px;box-shadow:0 10px 24px #0f172a14,inset 0 1px #ffffff73}.hero[data-v-88e39507]{background:radial-gradient(circle at 112% -8%,color-mix(in oklab,var(--brand),transparent 82%),transparent 54%),linear-gradient(180deg,color-mix(in oklab,var(--card, #fff),var(--brand) 3%),var(--card, #fff)),var(--card, #fff)}.ew[data-v-88e39507]{font-size:10px;font-weight:900;letter-spacing:.16em;text-transform:uppercase;color:var(--muted, #64748b);margin-bottom:3px}.rc-big[data-v-88e39507]{font-size:28px;font-weight:900;letter-spacing:-.06em;line-height:1;color:var(--fg, #0f172a)}.rc-sub[data-v-88e39507]{font-size:12px;color:var(--muted, #64748b);margin-top:-5px}.seg[data-v-88e39507]{display:grid;gap:3px;padding:3px;border-radius:999px;background:#0000000f}.seg.w2[data-v-88e39507]{grid-template-columns:1fr 1fr}.seg button[data-v-88e39507]{-webkit-appearance:none;-moz-appearance:none;appearance:none;height:30px;display:flex;align-items:center;justify-content:center;border-radius:999px;font-size:12px;font-weight:800;color:var(--muted, #64748b);border:0;background:none;cursor:pointer}.seg button.on[data-v-88e39507]{color:#fff;background:var(--brand, #2563eb);box-shadow:0 4px 10px color-mix(in oklab,var(--brand),transparent 72%)}.navrow[data-v-88e39507]{display:grid;gap:6px;align-items:center}.navrow.arw-layout[data-v-88e39507]{grid-template-columns:34px 1fr 34px}.arw[data-v-88e39507]{width:34px;height:34px;border-radius:11px;border:1px solid var(--line, #e2e8f0);background:var(--card, #fff);color:var(--fg, #0f172a);box-shadow:0 1px 4px #0f172a14;flex-shrink:0;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.arw[data-v-88e39507]:disabled{opacity:.45;cursor:default}.arw[data-v-88e39507]:hover:not(:disabled){background:color-mix(in oklab,var(--card),var(--brand) 5%)}.date-pill[data-v-88e39507]{height:34px;border-radius:11px;border:1px solid color-mix(in oklab,var(--brand),transparent 82%);background:color-mix(in oklab,var(--brand),transparent 93%);color:var(--brand, #2563eb);font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 6px}.sync-row[data-v-88e39507]{display:flex;align-items:center;justify-content:space-between;gap:8px}.sync-left[data-v-88e39507]{display:flex;align-items:center;gap:5px}.sync-dot[data-v-88e39507]{width:6px;height:6px;border-radius:50%;background:var(--green, #16a34a);flex-shrink:0}.sync-dot.syncing[data-v-88e39507]{background:var(--amber, #d97706);animation:pulse-88e39507 1s ease-in-out infinite}@keyframes pulse-88e39507{0%,to{opacity:1}50%{opacity:.4}}.sync-txt[data-v-88e39507]{font-size:11px;color:var(--muted, #64748b)}.btn-ref[data-v-88e39507]{height:30px;border-radius:999px;padding:0 13px;background:var(--brand, #2563eb);color:#fff;font-size:12px;font-weight:800;border:0;cursor:pointer;box-shadow:0 4px 12px color-mix(in oklab,var(--brand),transparent 74%);-webkit-appearance:none;-moz-appearance:none;appearance:none}.btn-ref[data-v-88e39507]:disabled{opacity:.5;cursor:default}.sc[data-v-88e39507]{border:1px solid var(--line, #e2e8f0);border-radius:22px;padding:15px;display:flex;flex-direction:column;gap:9px;background:var(--card, #fff);box-shadow:0 10px 22px #0f172a0f,inset 0 1px #fff6}.sc-hd[data-v-88e39507]{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.sc-title[data-v-88e39507]{font-size:17px;font-weight:900;letter-spacing:-.035em;line-height:1.1;margin-top:3px;color:var(--fg, #0f172a)}.badge[data-v-88e39507]{padding:3px 9px;border-radius:999px;font-size:10px;font-weight:900;letter-spacing:.07em;text-transform:uppercase;color:var(--brand, #2563eb);background:color-mix(in oklab,var(--brand),transparent 93%);border:1px solid color-mix(in oklab,var(--brand),transparent 82%);flex-shrink:0}.badge--std[data-v-88e39507]{color:var(--muted, #64748b);background:transparent;border-color:var(--line, #e2e8f0)}.wiz[data-v-88e39507]{width:100%;height:36px;border-radius:12px;background:linear-gradient(135deg,var(--brand, #2563eb),color-mix(in oklab,var(--brand, #2563eb),#1d4ed8 40%));color:#fff;font-size:12px;font-weight:900;border:0;cursor:pointer;box-shadow:0 5px 14px color-mix(in oklab,var(--brand),transparent 74%);-webkit-appearance:none;-moz-appearance:none;appearance:none;display:flex;align-items:center;justify-content:center}.wiz[data-v-88e39507]:hover{filter:brightness(1.08)}.steps[data-v-88e39507]{display:flex;flex-direction:column;gap:5px;list-style:none;padding:0;margin:0}.step[data-v-88e39507]{display:grid;grid-template-columns:26px 1fr;gap:8px;align-items:center;padding:7px 9px;border-radius:11px;background:#00000005;border:1px solid transparent;min-width:0;cursor:pointer}.step[data-v-88e39507]:hover{background:#0000000a}.step.done[data-v-88e39507]{background:#16a34a0d;border-color:#16a34a21}.step.warn[data-v-88e39507]{background:#d977060f;border-color:#d977062b}.step.skip[data-v-88e39507]{background:transparent;border-color:#64748b24}.step.dim[data-v-88e39507]{background:transparent}.sn[data-v-88e39507]{width:26px;height:26px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:900;background:var(--brand, #2563eb);color:#fff;flex-shrink:0}.step.done .sn[data-v-88e39507]{background:var(--green, #16a34a)}.step.warn .sn[data-v-88e39507]{background:var(--amber, #d97706)}.step.dim .sn[data-v-88e39507]{background:#00000014;color:var(--muted, #64748b)}.step.skip .sn[data-v-88e39507]{background:#64748b2e;color:var(--muted, #64748b)}.sb-txt[data-v-88e39507]{min-width:0;overflow:hidden}.sb-txt strong[data-v-88e39507]{display:block;font-size:12px;font-weight:800;line-height:1.1;color:var(--fg, #0f172a)}.sb-txt small[data-v-88e39507]{display:block;font-size:11px;color:var(--muted, #64748b);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dock[data-v-88e39507]{border:1px solid var(--line, #e2e8f0);border-radius:20px;padding:7px;background:linear-gradient(180deg,color-mix(in oklab,var(--card, #fff),var(--brand) 2%),#00000004);display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-top:auto;box-shadow:0 10px 24px #0f172a0d,inset 0 1px #ffffff59}.dk-btn[data-v-88e39507]{height:50px;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:11px;font-weight:800;color:var(--muted, #64748b);border:0;background:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.dk-btn b[data-v-88e39507]{font-size:17px;line-height:1}.dk-btn.on[data-v-88e39507]{color:var(--brand, #2563eb);background:color-mix(in oklab,var(--brand),transparent 93%)}.dk-btn[data-v-88e39507]:disabled{opacity:.4;cursor:default}.dk-btn[data-v-88e39507]:hover:not(:disabled){background:#0000000a}.cpp-wrap[data-v-81fba48e]{position:relative;display:inline-flex}.cpp-trigger[data-v-81fba48e]{display:inline-flex;align-items:center;gap:6px;padding:4px 8px;border-radius:7px;cursor:pointer;border:1px solid color-mix(in oklab,var(--line),transparent 40%);background:transparent;font:inherit;font-size:11px;font-weight:700;color:inherit}.cpp-trigger[data-v-81fba48e]:hover{background:color-mix(in oklab,var(--brand),transparent 92%)}.cpp-trigger[data-v-81fba48e]:disabled{opacity:.5;cursor:not-allowed}.cpp-dot[data-v-81fba48e]{width:14px;height:14px;border-radius:50%;border:1px solid rgba(0,0,0,.18);flex-shrink:0}.cpp-popover[data-v-81fba48e]{position:absolute;top:calc(100% + 6px);left:0;z-index:200;display:flex;flex-direction:column;gap:8px;padding:10px;border-radius:10px;border:1px solid color-mix(in oklab,var(--line),transparent 10%);background:var(--card);box-shadow:0 6px 18px #0000002e;min-width:148px}.cpp-popover[data-v-81fba48e]:focus-visible{outline:2px solid color-mix(in oklab,var(--brand),transparent 40%)}.cpp-grid[data-v-81fba48e]{display:grid;grid-template-columns:repeat(6,20px);gap:5px}.cpp-swatch[data-v-81fba48e]{width:20px;height:20px;border-radius:50%;cursor:pointer;padding:0;border:1px solid rgba(0,0,0,.15)}.cpp-swatch.active[data-v-81fba48e]{box-shadow:0 0 0 2px var(--brand)}.cpp-swatch[data-v-81fba48e]:focus-visible{outline:2px solid color-mix(in oklab,var(--brand),transparent 40%);outline-offset:2px}.cpp-custom[data-v-81fba48e]{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;color:color-mix(in oklab,var(--text),transparent 35%)}.cpp-custom-input[data-v-81fba48e]{width:32px;height:22px;border-radius:4px;padding:1px;cursor:pointer;border:1px solid color-mix(in oklab,var(--line),transparent 30%);background:none}.onboarding-fade-enter-active,.onboarding-fade-leave-active{transition:opacity .2s ease}.onboarding-fade-enter-from,.onboarding-fade-leave-to{opacity:0}.onboarding-overlay{position:fixed;top:calc(var(--header-height, 50px) + 8px);right:0;bottom:0;left:0;z-index:2000;display:flex;align-items:flex-start;justify-content:center;padding:16px 24px 24px}.onboarding-backdrop{position:absolute;top:0;right:0;bottom:0;left:0;background:#0f172a73}.onboarding-panel{position:relative;z-index:1;width:min(1080px,100%);height:min(840px,calc(100vh - var(--header-height, 50px) - 56px));max-height:calc(100vh - var(--header-height, 50px) - 56px);background:var(--color-main-background, #fff);border:1px solid color-mix(in oklab,var(--brand, #2563eb),var(--line, #e2e8f0) 70%);border-radius:14px;box-shadow:0 18px 48px #0f172a59,inset 0 0 0 1px color-mix(in oklab,var(--brand, #2563eb),transparent 82%);display:flex;flex-direction:column;padding:20px 24px}.onboarding-panel.theme-light{--color-main-background: #ffffff;--color-background-contrast: #f8fafc;--color-text: #0f172a;--color-text-maxcontrast: #020617;--color-text-light: #334155;--color-border: #cbd5e1;--color-primary: #1d4ed8;--color-primary-element: #1d4ed8;--color-error: #b91c1c;--color-warning: #b45309;color:#0f172a;background:#fff}.onboarding-panel.theme-light .step-arrow{color:#1e293b;--step-surface: #f8fafc;--step-outline: #cbd5e1}.onboarding-panel.theme-light .step-arrow.done{color:#14532d;--step-surface: linear-gradient(180deg, rgba(34, 197, 94, .11), rgba(34, 197, 94, .04));--step-outline: rgba(34, 197, 94, .44)}.onboarding-panel.theme-light .step-arrow.current{color:#111827;--step-outline: rgba(194, 65, 12, .82);--step-surface: linear-gradient(180deg, rgba(251, 146, 60, .18), rgba(251, 146, 60, .06))}.onboarding-panel.theme-light .subtitle,.onboarding-panel.theme-light .hint,.onboarding-panel.theme-light .pref-desc,.onboarding-panel.theme-light .pref-hint,.onboarding-panel.theme-light .field .label,.onboarding-panel.theme-light .field-hint,.onboarding-panel.theme-light .strategy-route-card .subtitle,.onboarding-panel.theme-light .strategy-route-card footer,.onboarding-panel.theme-light .theme-option__desc,.onboarding-panel.theme-light .theme-preview,.onboarding-panel.theme-light .preset-desc,.onboarding-panel.theme-light .empty-state,.onboarding-panel.theme-light .category-total,.onboarding-panel.theme-light .deck-status,.onboarding-panel.theme-light .review-section h4,.onboarding-panel.theme-light .review-card__meta,.onboarding-panel.theme-light .review-status,.onboarding-panel.theme-light .remove-category,.onboarding-panel.theme-light .mode-card span,.onboarding-panel.theme-light .input-unit .unit,.onboarding-panel.theme-light .custom-color{color:#334155!important}.onboarding-panel.theme-light h2,.onboarding-panel.theme-light h3,.onboarding-panel.theme-light h4,.onboarding-panel.theme-light h5,.onboarding-panel.theme-light .theme-option__title,.onboarding-panel.theme-light .preset-title{color:#020617!important}.onboarding-panel.theme-light .onboarding-title h2,.onboarding-panel.theme-light .onboarding-step h3,.onboarding-panel.theme-light .onboarding-step h4,.onboarding-panel.theme-light .strategy-route-card h4,.onboarding-panel.theme-light .mode-card strong{color:#000!important}.onboarding-panel.theme-light input,.onboarding-panel.theme-light select,.onboarding-panel.theme-light textarea{color:#0f172a;border-color:#cbd5e1}.onboarding-panel.theme-dark{--color-main-background: #0f172a;--color-background-contrast: #111827;--color-text: #e5e7eb;--color-text-maxcontrast: #e5e7eb;--color-text-light: #94a3b8;--color-border: #1f2937;--color-primary-element: #60a5fa;--color-primary: #60a5fa;color:#e5e7eb;background:#0f172a;box-shadow:0 18px 48px #00000080,inset 0 0 0 1px color-mix(in oklab,var(--brand, #60a5fa),transparent 82%)}.onboarding-panel.theme-dark .hint,.onboarding-panel.theme-dark .subtitle,.onboarding-panel.theme-dark h2,.onboarding-panel.theme-dark h3,.onboarding-panel.theme-dark h4,.onboarding-panel.theme-dark p,.onboarding-panel.theme-dark li{color:#e5e7eb}.onboarding-panel.theme-dark .step-arrow{--step-surface: #111827;--step-outline: #1f2937;color:#cbd5e1}.onboarding-panel.theme-dark .step-arrow.done{color:#dcfce7;--step-surface: linear-gradient(180deg, rgba(34, 197, 94, .16), rgba(21, 128, 61, .08));--step-outline: rgba(34, 197, 94, .46)}.onboarding-panel.theme-dark .step-arrow.current{color:#fde7cf;--step-outline: rgba(251, 146, 60, .88);--step-surface: linear-gradient(180deg, rgba(249, 115, 22, .26), rgba(249, 115, 22, .1))}.onboarding-panel.theme-dark input,.onboarding-panel.theme-dark select,.onboarding-panel.theme-dark textarea{background:#111827;color:#e5e7eb;border:1px solid #1f2937}.onboarding-panel.theme-dark .calendar-item{background:#0b1220;border-color:#1f2937}.onboarding-panel.theme-dark .goal-side-card,.onboarding-panel.theme-dark .goal-category-card,.onboarding-panel.theme-dark .goal-info-card,.onboarding-panel.theme-dark .review-row,.onboarding-panel.theme-dark .deck-step-card,.onboarding-panel.theme-dark .pref-card,.onboarding-panel.theme-dark .strategy-route-card{background:#111827;border-color:#1f2937}.onboarding-panel.theme-dark .goal-panel-card,.onboarding-panel.theme-dark .goal-category-action-card,.onboarding-panel.theme-dark .goal-category-row-bottom,.onboarding-panel.theme-dark .goal-calendar-subrow{border-color:#2c3a4f;background:linear-gradient(180deg,#0f172aeb,#111827f5);box-shadow:inset 0 0 0 1px #4755692e}.onboarding-panel.theme-dark .goal-category-title-input,.onboarding-panel.theme-dark .goal-color-input,.onboarding-panel.theme-dark .goal-category-card select,.onboarding-panel.theme-dark .goal-category-card input[type=number],.onboarding-panel.theme-dark .goal-category-card input[type=text]{border-color:#314257;background:#0f172a}.onboarding-panel.theme-dark .goal-add-calendar-control,.onboarding-panel.theme-dark .goal-row-icon-btn,.onboarding-panel.theme-dark .reorder-icon-btn,.onboarding-panel.theme-dark .drag-pill,.onboarding-panel.theme-dark .goal-category-action-icons,.onboarding-panel.theme-dark .goal-calendar-subrow__actions{border-color:#35506e;background:linear-gradient(180deg,#0f172aeb,#131f34f5)}.onboarding-panel.theme-dark .goal-section-label,.onboarding-panel.theme-dark .goal-category-title-edit__eyebrow,.onboarding-panel.theme-dark .row-inline-note{color:#93a7c4}.onboarding-panel.theme-dark .mode-card,.onboarding-panel.theme-dark .input-unit,.onboarding-panel.theme-dark .empty-state{background:linear-gradient(135deg,#0b1220,#111827 70%);border-color:#223046}.onboarding-panel.theme-dark .mode-card{color:#e5e7eb}.onboarding-panel.theme-dark .mode-card.active{border-color:#60a5fae6;box-shadow:0 18px 32px #0000008c;background:linear-gradient(135deg,#0f172a,#1f2937 70%)}.onboarding-panel.theme-dark .mode-card:before{opacity:.6}.onboarding-panel.theme-dark .mode-card span{color:#cbd5f5}.onboarding-panel.theme-dark .mode-card:hover{border-color:#60a5fabf;box-shadow:0 16px 30px #00000080}.onboarding-panel.theme-dark .input-unit .unit{background:#0b1220;color:#94a3b8}.onboarding-panel.theme-dark .config-warning{border-color:#fb923c80;background:#fb923c1f}.onboarding-panel.theme-dark .config-warning p{color:#fde68a}.onboarding-panel.theme-dark .snapshot-notice--success{background:#22c55e2e;color:#bbf7d0}.onboarding-panel.theme-dark .snapshot-notice--error{background:#ef444433;color:#fecaca}.onboarding-panel.theme-dark .close-btn{color:#cbd5f5}.onboarding-panel.theme-dark .close-btn:hover{color:#93c5fd}.onboarding-panel.theme-dark .color-popover{background:#0b1220;border-color:#1f2937}.onboarding-panel.theme-dark .color-link{color:#93c5fd}.onboarding-panel.theme-dark .review-card,.onboarding-panel.theme-dark .review-section{background:#111827;border-color:#1f2937}.onboarding-panel.theme-dark .review-status{background:#0b1220;border-color:#334155;color:#bfdbfe}.onboarding-panel.theme-dark .review-checklist li.is-ok{border-left-color:#16a34a}.onboarding-panel.theme-dark .review-checklist li.is-warn{border-left-color:#f59e0b}.onboarding-panel.theme-dark .review-action-btn,.onboarding-panel.theme-dark .review-inline-btn,.onboarding-panel.theme-dark .review-edit-link{border-color:#334155;background:#0b1220;color:#93c5fd}.onboarding-panel.theme-dark .warning{background:#f871711f;border-color:#f8717166;color:#fecaca}.onboarding-panel.theme-dark .goal-suggestion-toggle{color:#fdba74;border-color:#f973166b;background:linear-gradient(180deg,#9a341261,#7c2d1247)}.onboarding-panel.theme-dark .goal-suggestion-toggle__icon{background:#0f172a6b}.onboarding-panel.theme-dark .goal-suggestion-inline-editor{border-color:#f9731657;background:linear-gradient(180deg,#431407c2,#1e293be6)}.onboarding-panel.theme-dark .goal-suggestion-inline-editor input{border-color:#35506e;background:#0f172a}.onboarding-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}.onboarding-actions{display:flex;align-items:center;gap:12px}.onboarding-title h2{margin:0;font-size:1.6rem}.onboarding-title .subtitle{margin:4px 0 0;color:var(--color-text-light)}.onboarding-overlay .skip-link{background:none;border:none;color:var(--color-primary);cursor:pointer;font-size:.95rem}.onboarding-overlay .close-btn{background:none;border:none;font-size:1.4rem;line-height:1;cursor:pointer;color:var(--color-text-light)}.onboarding-overlay .close-btn:hover{color:var(--color-primary)}.onboarding-step-nav{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:0;width:calc(100% + 12px);margin:0 -6px 12px;padding-bottom:4px}.onboarding-overlay .step-arrow{position:relative;min-height:58px;--step-clip: polygon(0 0, calc(100% - 14px) 0, 100% 50%, calc(100% - 14px) 100%, 0 100%, 14px 50%);--step-surface: var(--color-background-contrast);--step-outline: var(--color-border);background:transparent;border:none;clip-path:var(--step-clip);padding:4px 0;cursor:pointer;isolation:isolate;transition:transform .16s ease,filter .18s ease;filter:drop-shadow(0 6px 12px rgba(15,23,42,.06)) drop-shadow(0 0 0 rgba(249,115,22,0))}.onboarding-overlay .step-arrow:before,.onboarding-overlay .step-arrow:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;clip-path:var(--step-clip);pointer-events:none}.onboarding-overlay .step-arrow:before{z-index:0;background:var(--step-outline)}.onboarding-overlay .step-arrow:after{z-index:1;top:1px;right:1px;bottom:1px;left:1px;background:var(--step-surface)}.onboarding-overlay .step-arrow:first-child{--step-clip: polygon(0 0, calc(100% - 14px) 0, 100% 50%, calc(100% - 14px) 100%, 0 100%)}.onboarding-overlay .step-arrow:last-child{--step-clip: polygon(0 0, 100% 0, 100% 100%, 0 100%, 14px 50%)}.onboarding-overlay .step-arrow__inner{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;width:100%;min-height:48px;padding:0 10px;text-align:center}.onboarding-overlay .step-arrow__main{display:flex;align-items:center;justify-content:center;gap:5px;width:100%;min-width:0}.onboarding-overlay .step-arrow__label{font-size:12px;font-weight:800;line-height:1.05;text-align:center}.onboarding-overlay .step-arrow__icon{width:20px;height:20px;display:inline-grid;place-items:center;border-radius:999px;border:1px solid var(--color-border);background:color-mix(in oklab,var(--color-main-background, #fff),var(--color-border) 18%);font-size:11.5px;line-height:1;flex-shrink:0}.onboarding-overlay .step-arrow__action{position:absolute;bottom:0;left:50%;transform:translate(-50%);min-width:28px;height:16px;display:inline-flex;align-items:center;justify-content:center;padding:0 7px;border-radius:999px;border:1px solid color-mix(in srgb,var(--color-border) 76%,transparent);background:color-mix(in srgb,var(--color-main-background, #fff) 88%,transparent);color:inherit;font-size:6.8px;line-height:1;letter-spacing:.02em;text-transform:uppercase;opacity:0;pointer-events:none;visibility:hidden}.onboarding-overlay .step-arrow.current .step-arrow__action{opacity:1;visibility:visible;border-color:color-mix(in srgb,var(--nav-current, #c05a31) 40%,var(--color-border));background:color-mix(in srgb,rgba(192,90,49,.14) 44%,var(--color-main-background, #fff))}.onboarding-overlay .step-arrow.done:hover .step-arrow__action,.onboarding-overlay .step-arrow.done:focus-visible .step-arrow__action,.onboarding-overlay .step-arrow.current:hover .step-arrow__action{opacity:1;visibility:visible}.onboarding-overlay .step-arrow.upcoming .step-arrow__action{display:none}.onboarding-overlay .step-arrow.locked{cursor:default}.onboarding-overlay .step-arrow:hover{transform:translateY(-1px);filter:drop-shadow(0 12px 22px rgba(15,23,42,.14)) drop-shadow(0 0 14px rgba(249,115,22,.14))}.onboarding-overlay .step-arrow.locked:hover{transform:none;filter:drop-shadow(0 6px 12px rgba(15,23,42,.06)) drop-shadow(0 0 0 rgba(249,115,22,0))}.onboarding-overlay .step-arrow:disabled{opacity:.6;cursor:default}.onboarding-overlay .step-arrow.current{filter:drop-shadow(0 12px 24px rgba(15,23,42,.14)) drop-shadow(0 0 18px rgba(249,115,22,.24))}.onboarding-overlay .step-arrow.current:hover{filter:drop-shadow(0 16px 28px rgba(15,23,42,.18)) drop-shadow(0 0 24px rgba(249,115,22,.32))}.onboarding-overlay .step-arrow.done .step-arrow__icon{color:var(--color-success, #15803d);border-color:color-mix(in srgb,var(--color-success, #15803d) 30%,var(--color-border));background:color-mix(in srgb,rgba(34,197,94,.14) 72%,var(--color-main-background, #fff))}.onboarding-overlay .step-arrow.current .step-arrow__icon{color:var(--nav-current, #c05a31);border-color:color-mix(in srgb,var(--nav-current, #c05a31) 48%,var(--color-border));background:color-mix(in srgb,rgba(192,90,49,.14) 80%,var(--color-main-background, #fff))}.onboarding-body{flex:1;min-height:0;overflow-y:auto;padding-right:10px;margin-right:-10px;padding-bottom:8px}@media (max-width: 960px){.onboarding-overlay{padding:12px}.onboarding-panel{width:100%;height:calc(100vh - var(--header-height, 50px) - 32px);max-height:calc(100vh - var(--header-height, 50px) - 32px);padding:16px}}.onboarding-step h3{margin-top:0}.onboarding-step{min-height:100%;display:grid;align-content:start}.onboarding-overlay .highlights{padding-left:18px}.onboarding-overlay .config-warning{border:1px solid color-mix(in srgb,var(--color-warning, #f97316) 35%,transparent);background:color-mix(in srgb,var(--color-warning, #f97316) 12%,transparent);border-radius:8px;padding:12px;margin:12px 0;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px}.onboarding-overlay .config-warning p{margin:0;font-size:.95rem;color:var(--color-text)}.onboarding-overlay .config-warning__actions{display:flex;justify-content:flex-end}.onboarding-overlay .config-warning .snapshot-notice{grid-column:1 / -1;margin-top:0}.onboarding-overlay .hint{color:var(--color-text-light, #334155);margin-top:12px}.onboarding-overlay .selection-step-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px;flex-wrap:wrap}.onboarding-overlay .selection-step-toolbar__meta{font-size:.92rem;color:var(--color-text-light, #475569)}.onboarding-overlay .selection-step-toolbar__actions{display:flex;gap:8px;flex-wrap:wrap}.onboarding-overlay .snapshot-notice{margin-top:12px;padding:10px 12px;border-radius:8px;font-size:.9rem}.onboarding-overlay .snapshot-notice--success{background:color-mix(in srgb,#22c55e 15%,transparent);color:#14532d}.onboarding-overlay .snapshot-notice--error{background:color-mix(in srgb,#ef4444 15%,transparent);color:#7f1d1d}.onboarding-overlay .strategy-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px}.onboarding-overlay .strategy-route-card{height:100%}.onboarding-overlay .strategy-route-card .subtitle{margin:0}.onboarding-overlay .strategy-route-card ul{margin:0;padding-left:18px}.onboarding-overlay .strategy-route-card footer{margin-top:auto;font-size:.85rem;color:var(--color-text-light)}.onboarding-overlay .calendar-list{display:grid;gap:6px;margin-top:8px}.onboarding-overlay .calendar-list--scroll{max-height:460px;overflow:auto;padding-right:4px}.onboarding-overlay .calendar-item{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:10px;min-height:42px;padding:7px 12px;border:1px solid color-mix(in oklab,var(--color-border),transparent 24%);border-radius:10px;background:color-mix(in oklab,var(--color-main-background, #fff),transparent 4%);transition:border-color .16s ease,background .16s ease,box-shadow .16s ease}.onboarding-overlay .calendar-item.checked{border-color:color-mix(in srgb,var(--color-primary) 45%,var(--color-border));background:color-mix(in srgb,var(--color-primary) 8%,var(--color-main-background, #fff));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--color-primary) 18%,transparent)}.onboarding-overlay .list-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;width:17px;height:17px;margin:0;border-radius:4px;border:1px solid color-mix(in srgb,var(--color-border) 92%,transparent);background:color-mix(in oklab,var(--color-main-background, #fff),var(--color-border) 8%);display:inline-block;position:relative;cursor:pointer;transition:background .14s ease,border-color .14s ease,box-shadow .14s ease;vertical-align:middle}.onboarding-overlay .list-checkbox:after{content:"";width:10px;height:6px;position:absolute;top:50%;left:50%;border-left:2.25px solid currentColor;border-bottom:2.25px solid currentColor;transform:translate(-50%,-58%) rotate(-45deg) scale(.78);transform-origin:center center;opacity:0;transition:transform .12s ease,opacity .12s ease}.onboarding-overlay .list-checkbox:checked{color:color-mix(in srgb,var(--color-primary) 86%,white 10%);border-color:color-mix(in srgb,var(--color-primary) 55%,var(--color-border));background:color-mix(in srgb,var(--color-primary) 10%,var(--color-main-background, #fff));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--color-primary) 14%,transparent),0 0 0 2px color-mix(in srgb,var(--color-primary) 12%,transparent)}.onboarding-overlay .list-checkbox:checked:after{opacity:1;transform:translate(-50%,-58%) rotate(-45deg) scale(1)}.onboarding-overlay .calendar-item .dot{width:10px;height:10px;border-radius:50%}.onboarding-overlay .warning{color:var(--color-error);margin-top:12px}.onboarding-overlay .review-layout{margin-top:10px;display:grid;gap:14px;grid-template-columns:minmax(0,2fr) minmax(280px,1fr);align-items:start}.onboarding-overlay .review-main{display:grid;gap:16px}.onboarding-overlay .review-section{border:1px solid color-mix(in oklab,var(--color-border),transparent 34%);border-radius:12px;padding:12px;background:color-mix(in oklab,var(--color-main-background, #fff),transparent 6%);display:grid;gap:10px}.onboarding-overlay .review-section h4{margin:0;font-size:.98rem;font-weight:700;letter-spacing:.01em;color:var(--color-text-light)}.onboarding-overlay .review-card-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}.onboarding-overlay .review-card{border:1px solid color-mix(in oklab,var(--color-border),transparent 34%);border-radius:10px;padding:12px;background:color-mix(in oklab,var(--color-main-background, #fff),transparent 3%);display:grid;gap:10px}.onboarding-overlay .review-card__head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.onboarding-overlay .review-card__head h5{margin:0;font-size:.92rem;line-height:1.3;letter-spacing:.01em}.onboarding-overlay .review-card__value{margin:0;font-size:1.06rem;line-height:1.3;font-weight:700;color:var(--color-text)}.onboarding-overlay .review-card__meta{margin:0;font-size:.85rem;line-height:1.45;color:var(--color-text-light)}.onboarding-overlay .review-list{margin:0;padding-left:18px;display:grid;gap:4px;font-size:.88rem;line-height:1.4}.onboarding-overlay .review-checklist{list-style:none;margin:0;padding:0;display:grid;gap:10px}.onboarding-overlay .review-checklist li{border:1px solid color-mix(in oklab,var(--color-border),transparent 26%);border-left:4px solid transparent;border-radius:8px;padding:10px 12px;display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:flex-start}.onboarding-overlay .review-checklist li.is-ok{border-left-color:#22c55e}.onboarding-overlay .review-checklist li.is-warn{border-left-color:#f59e0b}.onboarding-overlay .review-status{font-size:.72rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase;color:var(--color-text-light);border:1px solid color-mix(in oklab,var(--color-border),transparent 24%);border-radius:999px;padding:3px 8px;white-space:nowrap;line-height:1.2}.onboarding-overlay .review-checklist__copy{display:grid;gap:4px}.onboarding-overlay .review-checklist__copy strong{font-size:.91rem;line-height:1.3}.onboarding-overlay .review-checklist__copy p{margin:0;font-size:.84rem;line-height:1.45;color:var(--color-text-light)}.onboarding-overlay .review-side{display:grid;gap:16px}.onboarding-overlay .review-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.onboarding-overlay .review-action-btn,.onboarding-overlay .review-inline-btn,.onboarding-overlay .review-edit-link{border:1px solid color-mix(in oklab,var(--color-border),transparent 20%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 2%);color:var(--color-primary, #2563eb);border-radius:8px;padding:6px 10px;font-size:.81rem;line-height:1.2;cursor:pointer;font-weight:600}.onboarding-overlay .review-edit-link{padding:4px 9px;border-radius:6px}.onboarding-overlay .review-action-btn:hover,.onboarding-overlay .review-inline-btn:hover,.onboarding-overlay .review-edit-link:hover{border-color:color-mix(in oklab,var(--color-primary, #2563eb),var(--color-border) 35%)}.onboarding-overlay .review-action-btn:disabled{opacity:.55;cursor:not-allowed}.onboarding-overlay .review-profile{display:grid;gap:10px}@media (max-width: 980px){.onboarding-overlay .review-layout{grid-template-columns:1fr}}.onboarding-overlay .onboarding-mode{margin:16px 0}.onboarding-overlay .mode-grid{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.onboarding-overlay .mode-card{position:relative;border:1px solid var(--color-border);background:linear-gradient(135deg,color-mix(in oklab,var(--color-background-contrast, #ffffff),#ffffff 92%),color-mix(in oklab,var(--color-background-contrast, #ffffff),var(--color-primary, #2563eb) 8%));border-radius:10px;padding:12px 14px;text-align:left;cursor:pointer;display:grid;gap:6px;overflow:hidden;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease}.onboarding-overlay .mode-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:linear-gradient(180deg,color-mix(in oklab,var(--color-primary, #2563eb),#ffffff 35%),color-mix(in oklab,var(--color-primary, #2563eb),#000000 15%));opacity:.35}.onboarding-overlay .mode-card strong{font-size:.98rem}.onboarding-overlay .mode-card span{font-size:.85rem;color:var(--color-text-light, #475569)}.onboarding-overlay .mode-card:hover{border-color:color-mix(in oklab,var(--color-primary, #2563eb),transparent 35%)!important;box-shadow:0 12px 24px #0f172a24;transform:translateY(-1px)}.onboarding-overlay .mode-card.active{border-color:var(--color-primary, #2563eb)!important;box-shadow:0 12px 24px #0f172a26;transform:translateY(-1px)}.onboarding-overlay .mode-card.active:before{opacity:.9;width:6px}.onboarding-overlay .mode-card:focus-visible{outline:2px solid color-mix(in oklab,var(--brand, #2563eb),transparent 45%);outline-offset:2px}.onboarding-overlay .categories-editor{display:grid;gap:16px}.onboarding-overlay .category-presets{display:grid;gap:8px;margin-bottom:16px}.onboarding-overlay .preset-grid{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.onboarding-overlay .preset-card{text-align:left;border:1px solid var(--color-border);background:var(--color-background-contrast);border-radius:12px;padding:12px 14px;display:grid;gap:6px;cursor:pointer;transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease}.onboarding-overlay .preset-card:hover{border-color:color-mix(in oklab,var(--color-primary),transparent 40%);box-shadow:0 8px 18px #0f172a1f;transform:translateY(-1px)}.onboarding-overlay .preset-card:focus-visible{outline:2px solid color-mix(in oklab,var(--brand, #2563eb),transparent 45%);outline-offset:2px}.onboarding-overlay .preset-title{font-weight:600}.onboarding-overlay .preset-desc{font-size:.85rem;color:var(--color-text-light)}.onboarding-overlay .preset-swatches{display:flex;gap:6px;align-items:center}.onboarding-overlay .preset-swatch{width:14px;height:14px;border-radius:50%;border:1px solid color-mix(in oklab,var(--color-border),transparent 30%)}.onboarding-overlay .empty-state{padding:12px 14px;border-radius:10px;border:1px dashed color-mix(in oklab,var(--color-border),transparent 30%);background:color-mix(in oklab,var(--color-background-contrast),transparent 20%);color:var(--color-text-light)}.onboarding-overlay .category-card{border:1px solid var(--color-border);border-radius:8px;padding:16px;background:var(--color-main-background, #fff);display:flex;flex-direction:column;gap:12px}.onboarding-overlay .category-card__header{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.onboarding-overlay .category-color-indicator{width:14px;height:14px;border-radius:50%;border:1px solid color-mix(in oklab,var(--color-border),transparent 40%);flex-shrink:0}.onboarding-overlay .category-name{flex:1;padding:6px 8px;border:1px solid var(--color-border);border-radius:4px;min-width:180px}.onboarding-overlay .category-actions{display:flex;gap:8px}.onboarding-overlay .remove-category{background:none;border:none;color:var(--color-text-light);cursor:pointer;font-size:1.1rem}.onboarding-overlay .remove-category:disabled{opacity:.4;cursor:default}.onboarding-overlay .remove-category:not(:disabled):hover{color:var(--color-error)}.onboarding-overlay .category-card__fields{display:flex;flex-wrap:wrap;gap:16px}.onboarding-overlay .color-field{display:flex;flex-direction:column;gap:6px;position:relative}.onboarding-overlay .color-button{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--color-border);background:var(--color-background-contrast);padding:4px 8px;border-radius:999px;font-size:12px;color:var(--color-text);cursor:pointer}.onboarding-overlay .color-button:hover{border-color:color-mix(in oklab,var(--color-primary),transparent 35%)}.onboarding-overlay .color-button:focus-visible{outline:2px solid color-mix(in oklab,var(--brand, #2563eb),transparent 45%);outline-offset:2px}.onboarding-overlay .color-button .category-color-indicator{width:12px;height:12px}.onboarding-overlay .color-link{align-self:flex-start;border:none;background:transparent;padding:0;font-size:12px;color:var(--brand, #2563eb);text-decoration:underline;cursor:pointer}.onboarding-overlay .color-link:focus-visible{outline:2px solid color-mix(in oklab,var(--brand, #2563eb),transparent 45%);outline-offset:2px}.onboarding-overlay .color-popover{position:absolute;top:calc(100% + 6px);left:0;z-index:30;min-width:160px;padding:10px;border-radius:10px;border:1px solid color-mix(in oklab,var(--color-border),transparent 30%);background:var(--color-main-background, #fff);box-shadow:0 12px 32px #0f172a40;display:flex;flex-direction:column;gap:8px}.onboarding-overlay .color-popover:focus-visible{outline:2px solid color-mix(in oklab,var(--brand, #2563eb),transparent 45%);outline-offset:2px}.onboarding-overlay .swatch-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,20px));justify-content:flex-start;gap:6px}.onboarding-overlay .color-swatch{width:18px;height:18px;aspect-ratio:1 / 1;border-radius:50%;border:1px solid color-mix(in oklab,#000,transparent 80%);padding:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.onboarding-overlay .color-swatch.active{box-shadow:0 0 0 2px color-mix(in oklab,var(--brand, #2563eb),transparent 55%)}.onboarding-overlay .color-swatch:focus-visible{outline:2px solid color-mix(in oklab,var(--brand, #2563eb),transparent 45%);outline-offset:1px}.onboarding-overlay .custom-color{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:.85rem;color:var(--color-text-light)}.onboarding-overlay .color-input{width:44px;height:26px;padding:0;border-radius:6px;border:1px solid color-mix(in oklab,var(--color-border),transparent 40%);background:transparent}.onboarding-overlay .add-category{justify-self:flex-start}.onboarding-overlay .category-total{font-size:.9rem;color:var(--color-text-light)}.onboarding-overlay .input-unit{display:grid;grid-template-columns:1fr auto;align-items:center;border:1px solid var(--color-border);border-radius:8px;overflow:hidden;background:var(--color-background-contrast)}.onboarding-overlay .input-unit input{border:none;padding:7px 10px;background:transparent}.onboarding-overlay .input-unit .unit{padding:6px 10px;font-size:.75rem;color:var(--color-text-light);background:color-mix(in oklab,var(--color-border),transparent 70%);white-space:nowrap}.onboarding-overlay .field{display:flex;flex-direction:column;gap:6px}.onboarding-overlay .field .label{font-size:.8rem;color:var(--color-text-light)}.onboarding-overlay .field-hint{display:block;margin-top:4px;font-size:.75rem;color:var(--color-text-light)}.onboarding-overlay .calendar-assignments{margin-top:24px;display:grid;gap:12px}.onboarding-overlay .calendar-targets{margin-top:16px;display:grid;gap:12px}.onboarding-overlay .assignment-row{display:grid;grid-template-columns:1fr minmax(160px,220px) auto;gap:12px;align-items:center}.onboarding-overlay .target-row{display:grid;grid-template-columns:1fr minmax(150px,200px);gap:12px;align-items:center}.onboarding-overlay .assignment-row select{padding:6px 8px}.onboarding-overlay .cal-name{font-size:.95rem}.onboarding-overlay .assignment-warning{font-size:.75rem;color:var(--color-error)}.onboarding-overlay .assignment-row.is-unassigned select{border-color:color-mix(in oklab,var(--color-error),transparent 50%)}.onboarding-footer{display:flex;justify-content:flex-end;gap:12px;margin-top:14px;padding-top:10px;border-top:1px solid color-mix(in oklab,var(--color-border),transparent 28%);flex-shrink:0}.onboarding-overlay .preferences-grid{display:grid;gap:16px;grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.onboarding-overlay .pref-card{border:1px solid color-mix(in oklab,var(--color-border),transparent 30%);border-radius:10px;padding:12px;background:color-mix(in oklab,var(--color-main-background, #fff),transparent 6%);display:flex;flex-direction:column;gap:12px}.onboarding-overlay .pref-card--stack{gap:14px}.onboarding-overlay .pref-card h4{margin:0}.onboarding-overlay .toggle-row{display:flex;gap:10px;align-items:center;font-size:.95rem}.onboarding-overlay .toggle-row input[type=checkbox]{transform:scale(1.05)}.onboarding-overlay .pref-card--deck .toggle-row{display:flex;gap:10px;align-items:center;font-size:.95rem}.onboarding-overlay .pref-card--deck input[type=checkbox]{transform:scale(1.05)}.onboarding-overlay .deck-board-list{border:1px solid color-mix(in oklab,var(--color-border),transparent 24%);border-radius:12px;padding:10px;background:color-mix(in oklab,var(--color-main-background, #fff),transparent 4%);display:flex;flex-direction:column;gap:8px}.onboarding-overlay .deck-board-options{display:flex;flex-direction:column;gap:6px}.onboarding-overlay .deck-board-option{display:flex;gap:8px;align-items:center;font-size:.9rem}.onboarding-overlay .deck-status{font-size:.85rem;color:var(--color-text-light)}.onboarding-overlay .deck-status--error{color:var(--color-error)}.onboarding-overlay .pref-desc{margin:0;font-size:.9rem;color:var(--color-text-light)}.onboarding-overlay .pref-hint{margin:0;font-size:.85rem;color:var(--color-text-light)}.onboarding-overlay .theme-options{display:flex;flex-direction:column;gap:8px}.onboarding-overlay .theme-option{display:flex;gap:10px;align-items:flex-start;padding:8px;border-radius:8px;border:1px solid color-mix(in oklab,var(--color-border),transparent 40%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 8%)}.onboarding-overlay .theme-option input[type=radio]{margin-top:4px}.onboarding-overlay .theme-copy{display:flex;flex-direction:column;gap:2px;font-size:.9rem}.onboarding-overlay .theme-option__title{font-weight:600;color:var(--color-text)}.onboarding-overlay .theme-option__desc{color:var(--color-text-light);font-size:.85rem}.onboarding-overlay .theme-preview{font-size:.85rem;color:var(--color-text-light)}.onboarding-overlay .preferences-step{display:grid;gap:16px}.onboarding-overlay .field-row,.onboarding-overlay .editor-card,.onboarding-overlay .module-card{border:1px solid color-mix(in oklab,var(--color-border),transparent 22%);border-radius:14px}.onboarding-overlay .field-row{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:12px 14px;background:color-mix(in oklab,var(--color-main-background, #fff),transparent 2%)}.onboarding-overlay .field-copy{display:grid;gap:4px}.onboarding-overlay .field-copy strong{font-size:.92rem}.onboarding-overlay .field-copy p{margin:0;font-size:.86rem;color:var(--color-text-light)}.onboarding-overlay .field-actions,.onboarding-overlay .row,.onboarding-overlay .choice-strip{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.onboarding-overlay .field-actions{justify-content:flex-end}.onboarding-overlay .field-actions--wrap{max-width:360px}.onboarding-overlay .editor-card{display:grid;gap:12px;padding:14px;background:linear-gradient(180deg,rgba(37,99,235,.08),transparent),var(--color-main-background, #fff)}.onboarding-overlay .module-card{display:grid;gap:10px;padding:14px;border-style:dashed;background:linear-gradient(180deg,rgba(245,158,11,.08),transparent),var(--color-main-background, #fff)}.onboarding-overlay .choice-strip.compact{gap:6px}.onboarding-overlay .choice-pill,.onboarding-overlay .value-chip,.onboarding-overlay .action-chip,.onboarding-overlay .soft-pill,.onboarding-overlay .toggle-chip{display:inline-flex;align-items:center;justify-content:center;gap:8px;border-radius:999px;border:1px solid var(--color-border);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 3%);color:var(--color-text);padding:8px 12px;font-size:.82rem;font-weight:700;line-height:1}.onboarding-overlay .choice-pill.active{border-color:color-mix(in srgb,var(--color-primary) 55%,var(--color-border));background:#2563eb1a;color:var(--color-primary)}.onboarding-overlay .action-chip{color:var(--color-primary);cursor:pointer}.onboarding-overlay .toggle-chip.on{border-color:color-mix(in srgb,#15803d 45%,var(--color-border));background:#22c55e1f;color:#166534}.onboarding-overlay .soft-pill{color:var(--color-text-light)}.onboarding-overlay .inline-input{display:inline-flex;align-items:center;gap:8px;border-radius:14px;border:1px solid color-mix(in srgb,var(--color-primary) 40%,var(--color-border));background:var(--color-main-background, #fff);color:var(--color-text);padding:8px 12px;min-width:190px}.onboarding-overlay .inline-input input{width:68px;min-width:0;padding:0;border:0;background:transparent;box-shadow:none}.onboarding-overlay .inline-input .slot{padding:4px 10px;border-radius:999px;background:#2563eb1a;color:var(--color-primary);font-weight:700}.onboarding-overlay .intro-step,.onboarding-overlay .goals-step{display:flex;flex-direction:column;gap:18px}.onboarding-overlay .intro-stage{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.onboarding-overlay .intro-stage__state{font-size:.78rem;color:var(--color-text-light)}.onboarding-overlay .intro-hero{display:grid;gap:12px}.onboarding-overlay .intro-visual{position:relative;display:grid;gap:18px;min-height:300px;padding:28px;border-radius:18px;overflow:hidden;background:linear-gradient(135deg,#111827,#1f2937),radial-gradient(circle at top right,rgba(37,99,235,.22),transparent 40%),radial-gradient(circle at bottom left,rgba(192,90,49,.18),transparent 35%);color:#f8fafc}.onboarding-overlay .intro-visual:before{content:"";position:absolute;inset:auto 0 0 0;height:38%;background:linear-gradient(180deg,transparent,rgba(192,90,49,.14))}.onboarding-overlay .intro-visual__tabs,.onboarding-overlay .intro-visual__stats{display:flex;gap:8px;flex-wrap:wrap}.onboarding-overlay .intro-visual__tabs{position:relative;z-index:1}.onboarding-overlay .intro-visual__tabs span{display:inline-flex;align-items:center;justify-content:center;min-width:74px;height:28px;padding:0 12px;border-radius:999px;border:1px solid rgba(148,163,184,.35);background:#0f172a7a;color:#cbd5e1;text-transform:uppercase;letter-spacing:.12em;font-size:.72rem;font-weight:700}.onboarding-overlay .intro-visual__tabs .is-active{background:#2563eb29;border-color:#60a5fa8c;color:#f8fafc}.onboarding-overlay .intro-visual__copy{position:relative;z-index:1;display:grid;gap:2px;max-width:520px;font-size:2.7rem;line-height:.96;letter-spacing:-.06em;font-weight:700}.onboarding-overlay .intro-visual__copy .accent{color:#93c5fd;font-size:3.4rem;font-weight:800}.onboarding-overlay .intro-visual__card{position:absolute;right:28px;top:28px;z-index:1;width:min(280px,42%);display:grid;gap:12px;padding:18px;border-radius:18px;background:#0b1220eb;border:1px solid #334155;box-shadow:0 18px 36px #00000047}.onboarding-overlay .intro-visual__eyebrow{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:#dbe7f5}.onboarding-overlay .intro-visual__status{padding:6px 10px;border-radius:999px;background:#0d2618;border:1px solid #1f7a47;color:#dcfce7}.onboarding-overlay .intro-visual__score{display:flex;align-items:flex-end;gap:8px}.onboarding-overlay .intro-visual__score strong{font-size:2.8rem;line-height:1}.onboarding-overlay .intro-visual__score span{color:#93c5fd;font-weight:700}.onboarding-overlay .intro-visual__card p{margin:0;color:#94a3b8}.onboarding-overlay .intro-visual__bar{height:10px;border-radius:999px;background:#172033;overflow:hidden}.onboarding-overlay .intro-visual__bar span{display:block;width:74%;height:100%;border-radius:inherit;background:#1d4ed8}.onboarding-overlay .intro-visual__stats>div{flex:1 1 70px;display:grid;gap:4px;padding:10px 12px;border-radius:14px;background:#111827;border:1px solid #223046}.onboarding-overlay .intro-visual__stats span{color:#94a3b8;text-transform:uppercase;letter-spacing:.1em;font-size:.62rem;font-weight:700}.onboarding-overlay .intro-visual__stats strong{color:#f8fafc}.onboarding-overlay .intro-route-grid{display:grid;gap:14px}.onboarding-overlay .intro-route-grid--three{grid-template-columns:repeat(3,minmax(0,1fr))}.onboarding-overlay .intro-route-grid--two{grid-template-columns:repeat(2,minmax(0,1fr))}.onboarding-overlay .intro-route-card{display:grid;gap:8px;padding:18px;text-align:left;border-radius:14px;border:1px solid color-mix(in oklab,var(--color-border),transparent 16%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 4%)}.onboarding-overlay .intro-route-card--button{cursor:pointer}.onboarding-overlay .intro-route-card.active{border-color:color-mix(in srgb,var(--color-primary) 50%,var(--color-border));background:linear-gradient(180deg,rgba(37,99,235,.1),transparent),var(--color-main-background, #fff);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--color-primary) 30%,transparent)}.onboarding-overlay .intro-route-card h4{margin:0}.onboarding-overlay .calendar-item__label{min-width:0;font-size:.92rem;font-weight:600}.onboarding-overlay .calendar-item__state{font-size:.72rem;border-radius:999px;padding:3px 8px;white-space:nowrap;background:color-mix(in oklab,var(--color-main-background, #fff),var(--color-border) 20%);color:var(--color-text-light)}.onboarding-overlay .deck-step-card,.onboarding-overlay .goal-info-card,.onboarding-overlay .goal-side-card{border:1px solid color-mix(in oklab,var(--color-border),transparent 10%);border-radius:12px;background:color-mix(in oklab,var(--color-main-background, #fff),transparent 4%)}.onboarding-overlay .deck-board-list--scroll{max-height:420px;overflow:auto}.onboarding-overlay .deck-board-options--list{gap:6px}.onboarding-overlay .deck-board-option--row{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:10px;min-height:42px;padding:7px 12px;border:1px solid color-mix(in oklab,var(--color-border),transparent 24%);border-radius:10px;background:color-mix(in oklab,var(--color-main-background, #fff),transparent 4%)}.onboarding-overlay .deck-board-option--row .dot{width:10px;height:10px;border-radius:999px;background:color-mix(in oklab,var(--brand, #2563eb),white 20%)}.onboarding-overlay .dashboard-preset-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.onboarding-overlay .dashboard-preset-card{gap:12px;text-align:left;min-height:320px;align-items:start;border-radius:14px}.onboarding-overlay .dashboard-preset-card h4{margin:0;min-height:28px;font-size:1rem;line-height:1.15}.onboarding-overlay .dashboard-preset-card .subtitle{margin:0;min-height:54px;line-height:1.45}.onboarding-overlay .dashboard-preset-card .mini-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:auto;align-items:center}.onboarding-overlay .dashboard-preview,.onboarding-overlay .dashboard-thumb{display:grid;gap:6px;min-height:112px;padding:10px;border:1px solid color-mix(in oklab,var(--color-border),transparent 16%);border-radius:16px;background:color-mix(in oklab,var(--color-main-background, #fff),transparent 2%);width:100%;align-content:start}.onboarding-overlay .dashboard-thumb-row{display:grid;gap:8px}.onboarding-overlay .dashboard-thumb-row--1{grid-template-columns:1fr}.onboarding-overlay .dashboard-thumb-row--2{grid-template-columns:1.2fr .8fr}.onboarding-overlay .dashboard-thumb-row--3{grid-template-columns:1.1fr 1.1fr .8fr}.onboarding-overlay .dashboard-preview span,.onboarding-overlay .dashboard-block{border-radius:10px;border:1px solid rgba(148,163,184,.14);background:#94a3b83d;min-height:38px}.onboarding-overlay .dashboard-tab-strip{display:flex;gap:6px;grid-column:1 / -1;margin-bottom:2px}.onboarding-overlay .dashboard-tab{height:12px;border-radius:999px;background:#94a3b83d;border:1px solid rgba(148,163,184,.18)}.onboarding-overlay .dashboard-tab.is-active{background:#2563eb2e;border-color:#2563eb47}.onboarding-overlay .dashboard-tab--wide{width:44px}.onboarding-overlay .dashboard-tab--medium{width:34px}.onboarding-overlay .dashboard-tab--short{width:28px}.onboarding-overlay .dashboard-tab--tiny{width:22px}.onboarding-overlay .dashboard-block--tall{min-height:44px}.onboarding-overlay .dashboard-block--soft{background:#2563eb24}.onboarding-overlay .dashboard-block--warm{background:#c05a3126}.onboarding-overlay .dashboard-block--ok{background:#22c55e29}.onboarding-overlay .dashboard-preview--quick{grid-template-columns:1fr}.onboarding-overlay .dashboard-preview--quick span:first-child{min-height:86px}.onboarding-overlay .preferences-grid--core-optional{grid-template-columns:minmax(0,1.25fr) minmax(320px,.9fr)}.onboarding-overlay .pref-card--module{align-self:start}.onboarding-overlay .goals-step__header,.onboarding-overlay .goal-single,.onboarding-overlay .goal-advanced,.onboarding-overlay .goal-calendar{display:grid;gap:16px}.onboarding-overlay .goals-step__header{grid-template-columns:minmax(0,1fr);align-items:start}.onboarding-overlay .goals-lookback__label,.onboarding-overlay .goal-suggestion-inline{font-size:.8rem;color:var(--color-text-light)}.onboarding-overlay .goal-suggestion-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.onboarding-overlay .goal-suggestion-toolbar--panel{margin-top:-2px}.onboarding-overlay .goal-suggestion-toolbar__cluster{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.onboarding-overlay .goal-suggestion-toolbar__meta{font-size:.84rem;color:var(--color-text-light)}.onboarding-overlay .goal-suggestion-toggle{display:inline-flex;align-items:center;gap:8px;min-height:38px;padding:8px 14px;border-radius:999px;border:1px solid rgba(194,65,12,.45);background:linear-gradient(180deg,#fb923c38,#f9731629);color:#9a3412;font-weight:700;box-shadow:0 10px 24px #c2410c24}.onboarding-overlay .goal-suggestion-toggle.is-open{background:linear-gradient(180deg,#fb923c47,#f9731638);border-color:#c2410c99}.onboarding-overlay .goal-suggestion-toggle__icon{width:18px;height:18px;display:inline-grid;place-items:center;border-radius:999px;background:#ffffff80;color:inherit;font-size:12px;line-height:1}.onboarding-overlay .goal-suggestion-inline-editor{display:inline-flex;align-items:center;gap:8px;min-height:38px;padding:6px 10px;border-radius:999px;border:1px solid rgba(194,65,12,.28);background:linear-gradient(180deg,#fff7ede6,#ffedd5bd)}.onboarding-overlay .goal-suggestion-inline-editor__label,.onboarding-overlay .goal-suggestion-inline-editor__meta{font-size:.76rem;color:var(--color-text-light);white-space:nowrap}.onboarding-overlay .goal-suggestion-inline-editor input{width:64px;min-width:64px;border:1px solid color-mix(in srgb,var(--color-border) 76%,transparent);border-radius:999px;padding:6px 10px;background:var(--color-main-background, #fff);color:var(--color-text)}.onboarding-overlay .goal-info-card{padding:16px}.onboarding-overlay .goal-info-card--compact{padding-bottom:12px}.onboarding-overlay .goal-single{grid-template-columns:minmax(0,.9fr) minmax(260px,.7fr)}.onboarding-overlay .goal-single__editor,.onboarding-overlay .goal-calendar-list,.onboarding-overlay .goal-main-panel,.onboarding-overlay .goal-side-panel{display:grid;gap:12px}.onboarding-overlay .goal-calendar-row,.onboarding-overlay .goal-calendar-subrow{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:12px;border:1px solid color-mix(in oklab,var(--color-border),transparent 20%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 6%)}.onboarding-overlay .goal-calendar-row__main,.onboarding-overlay .goal-calendar-subrow__main{display:flex;align-items:center;gap:10px;min-width:0}.onboarding-overlay .goal-advanced{grid-template-columns:minmax(300px,.88fr) minmax(0,1.45fr);align-items:start}.onboarding-overlay .goal-advanced--b26{grid-template-columns:1fr}.onboarding-overlay .goal-side-panel{position:sticky;top:0}.onboarding-overlay .goal-side-card{padding:16px}.onboarding-overlay .goal-side-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.onboarding-overlay .goal-side-stat{display:grid;gap:4px;padding:10px;border-radius:10px;background:color-mix(in oklab,var(--color-main-background, #fff),transparent 7%)}.onboarding-overlay .goal-side-stat__label{font-size:.75rem;color:var(--color-text-light)}.onboarding-overlay .goal-health-chip-row,.onboarding-overlay .goal-preset-swatches{display:flex;gap:8px;flex-wrap:wrap}.onboarding-overlay .state-chip{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;line-height:1;border-radius:999px;padding:5px 10px;background:#2563eb1a;color:var(--color-primary)}.onboarding-overlay .state-chip.ok{background:#22c55e1f;color:#166534}.onboarding-overlay .state-chip.warn{background:#f59e0b24;color:#92400e}.onboarding-overlay .goal-preset-grid{display:grid;gap:10px}.onboarding-overlay .goal-template-strip{display:flex;gap:10px;flex-wrap:wrap}.onboarding-overlay .goal-template-card{min-width:0;flex:1 1 180px;display:grid;gap:6px;padding:14px;border-radius:14px;border:1px solid color-mix(in oklab,var(--color-border),transparent 18%);background:var(--color-main-background, #fff);text-align:left}.onboarding-overlay .goal-template-card p{margin:0}.onboarding-overlay .goal-template-card.active{border-color:color-mix(in srgb,var(--color-primary) 55%,var(--color-border));background:linear-gradient(180deg,rgba(37,99,235,.1),transparent),var(--color-main-background, #fff);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--color-primary) 28%,transparent)}.onboarding-overlay .goal-template-card.is-cool{background:linear-gradient(180deg,rgba(37,99,235,.08),transparent),var(--color-main-background, #fff)}.onboarding-overlay .goal-template-card.is-warm{background:linear-gradient(180deg,rgba(234,88,12,.08),transparent),var(--color-main-background, #fff)}.onboarding-overlay .goal-template-card.is-forest{background:linear-gradient(180deg,rgba(22,163,74,.08),transparent),var(--color-main-background, #fff)}.onboarding-overlay .goal-preset-card{display:grid;gap:6px;padding:12px;border-radius:12px;border:1px solid color-mix(in oklab,var(--color-border),transparent 24%);text-align:left;background:color-mix(in oklab,var(--color-main-background, #fff),transparent 6%)}.onboarding-overlay .goal-preset-swatch{width:12px;height:12px;border-radius:999px}.onboarding-overlay .goal-category-list{display:grid;gap:12px;max-height:460px;overflow:auto;padding-right:4px}.onboarding-overlay .goal-category-list--accordion{max-height:520px}.onboarding-overlay .goal-panel-card{display:grid;gap:14px;padding:16px;border-radius:14px;border:1px solid color-mix(in oklab,var(--color-border),transparent 16%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 4%)}.onboarding-overlay .goal-panel-card__head,.onboarding-overlay .goal-panel-pills,.onboarding-overlay .goal-category-row-bottom,.onboarding-overlay .goal-category-options{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.onboarding-overlay .goal-panel-card__head{justify-content:space-between}.onboarding-overlay .goal-panel-card__title{display:grid;gap:4px}.onboarding-overlay .goal-panel-card__title h4,.onboarding-overlay .goal-panel-card__title .hint{margin:0}.onboarding-overlay .goal-mismatch-box{display:grid;gap:6px;padding:14px;border-radius:12px;border:1px solid color-mix(in srgb,#b45309 40%,transparent);background:#f59e0b1f}.onboarding-overlay .goal-mismatch-box--ok{border-color:color-mix(in srgb,#15803d 40%,transparent);background:#22c55e1f}.onboarding-overlay .pill{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;border:1px solid color-mix(in oklab,var(--color-border),transparent 10%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 4%);color:var(--color-text-light);font-size:.8rem;white-space:nowrap}.onboarding-overlay .pill--warn{border-color:color-mix(in srgb,#b45309 40%,transparent);color:#92400e}.onboarding-overlay .goal-category-card{display:grid;gap:12px;padding:14px;border-radius:14px;border:1px solid color-mix(in oklab,var(--color-border),transparent 16%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 4%)}.onboarding-overlay .goal-category-card--accordion{gap:10px}.onboarding-overlay .goal-category-editor{display:grid;gap:12px}.onboarding-overlay .goal-category-editor__primary,.onboarding-overlay .goal-category-editor__secondary{display:grid;gap:10px}.onboarding-overlay .goal-category-editor__primary{grid-template-columns:minmax(180px,.95fr) minmax(124px,auto) minmax(120px,auto);align-items:end}.onboarding-overlay .goal-category-editor__secondary{grid-template-columns:minmax(0,1fr) auto;align-items:end}.onboarding-overlay .goal-field-stack{display:grid;gap:6px}.onboarding-overlay .goal-field-stack .label{margin:0}.onboarding-overlay .goal-category-summary{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:10px;width:100%;padding:0;border:0;background:transparent;color:inherit;text-align:left}.onboarding-overlay .goal-category-top{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;align-items:stretch}.onboarding-overlay .goal-category-top.is-open{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:12px}.onboarding-overlay .goal-category-titlebar{display:flex;align-items:center;gap:10px;min-width:0;flex-wrap:wrap}.onboarding-overlay .goal-category-collapse{display:inline-flex;align-items:center;justify-content:center;width:30px;min-width:30px;height:30px;padding:0;border-radius:999px;border:1px solid color-mix(in oklab,var(--color-border),transparent 12%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 5%);color:var(--color-text-light);font-size:1rem;line-height:1}.onboarding-overlay .goal-category-card__header,.onboarding-overlay .goal-category-card__toolbar,.onboarding-overlay .goal-footer-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.onboarding-overlay .goal-category-name{width:100%;min-width:0;max-width:260px}.onboarding-overlay .goal-category-title-input{flex:0 1 220px;width:220px;min-width:140px;max-width:240px;font-size:1.04rem;font-weight:700;border:0;padding:0;background:transparent;box-shadow:none;color:var(--color-text)}.onboarding-overlay .goal-category-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.onboarding-overlay .drag-handle,.onboarding-overlay .ghost-btn{border:1px solid color-mix(in oklab,var(--color-border),transparent 12%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 6%);color:var(--color-text);border-radius:10px;padding:8px 10px}.onboarding-overlay .goal-remove-btn{width:34px;min-width:34px;height:34px;padding:0;justify-content:center;font-size:18px;line-height:1}.onboarding-overlay .goal-suggestion-stack{display:grid;gap:6px;min-width:120px;justify-self:end}.onboarding-overlay .goal-suggestion-stack--inline{min-width:132px;justify-self:auto}.onboarding-overlay .goal-action-block{display:grid;align-content:center;justify-items:center;gap:6px;min-height:78px;padding:8px 10px;border-radius:12px;border:1px solid color-mix(in oklab,var(--color-border),transparent 14%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 4%);text-align:center}.onboarding-overlay .goal-action-block .label{margin:0;line-height:1}.onboarding-overlay .goal-action-block .input-unit{justify-content:center}.onboarding-overlay .goal-action-block .input-unit--small{grid-template-columns:minmax(0,38px) auto}.onboarding-overlay .goal-inline-target .input-unit--small{grid-template-columns:minmax(0,64px) auto}.onboarding-overlay .goal-action-block .input-unit--small .unit{padding:6px 8px}.onboarding-overlay .goal-suggestion-stack .label{margin:0}.onboarding-overlay .goal-category-options--inline{gap:8px;flex-wrap:nowrap}.onboarding-overlay .goal-checkbox{display:grid;justify-items:center;gap:6px;margin:0;white-space:nowrap;font-size:.8rem}.onboarding-overlay .goal-checkbox__control{min-height:36px;display:inline-flex;align-items:center;justify-content:center}.onboarding-overlay .goal-checkbox input[type=checkbox]{width:18px;height:18px;margin:0}.onboarding-overlay .goal-pace-field{display:grid;justify-items:center;gap:6px;margin:0;white-space:nowrap}.onboarding-overlay .goal-pace-field .label{font-size:.8rem;color:var(--color-text-light)}.onboarding-overlay .goal-pace-field select{min-width:118px;padding:6px 8px}.onboarding-overlay .goal-category-tone-controls{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.onboarding-overlay .goal-color-stack{min-width:72px}.onboarding-overlay .goal-color-stack--inline{min-width:62px}.onboarding-overlay .goal-color-stack--inline .goal-color-input{margin:0 auto}.onboarding-overlay .drag-handle{cursor:grab}.onboarding-overlay .goal-reorder-tools{display:inline-flex;align-items:center;gap:6px}.onboarding-overlay .goal-reorder-tools--surface{padding:4px;border-radius:999px;border:1px solid color-mix(in oklab,var(--color-border),transparent 10%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 3%)}.onboarding-overlay .goal-reorder-tools--calendar{align-self:stretch}.onboarding-overlay .drag-pill,.onboarding-overlay .chevron-pill,.onboarding-overlay .suggest-pill,.onboarding-overlay .value-pill{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:6px 10px;border-radius:999px;white-space:nowrap;font-size:.8rem}.onboarding-overlay .drag-pill,.onboarding-overlay .chevron-pill{border:1px solid color-mix(in oklab,var(--color-border),transparent 12%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 4%);color:var(--color-text)}.onboarding-overlay .drag-pill{justify-content:flex-start;font-weight:600}.onboarding-overlay .drag-pill__glyph{font-size:.95rem;line-height:1;letter-spacing:-.08em}.onboarding-overlay .drag-pill__label{font-size:.76rem;color:var(--color-text-light)}.onboarding-overlay .drag-pill--calendar{min-width:128px}.onboarding-overlay .reorder-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:28px;min-width:28px;height:28px;padding:0;border-radius:999px;border:1px solid color-mix(in oklab,var(--color-border),transparent 10%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 3%);color:var(--color-text-light);font-size:.9rem;font-weight:700;line-height:1}.onboarding-overlay .reorder-icon-btn:hover{color:var(--color-text);border-color:color-mix(in srgb,var(--color-primary) 24%,var(--color-border));box-shadow:0 0 0 3px color-mix(in srgb,var(--color-primary) 10%,transparent)}.onboarding-overlay .value-pill{border:1px solid color-mix(in srgb,var(--color-primary) 36%,var(--color-border));background:color-mix(in srgb,rgba(37,99,235,.1) 78%,var(--color-main-background, #fff));color:var(--color-text)}.onboarding-overlay .suggest-pill{border:1px solid color-mix(in srgb,var(--color-success, #15803d) 24%,var(--color-border));background:#22c55e14;color:var(--color-text-light)}.onboarding-overlay .suggest-pill--action,.onboarding-overlay .goal-suggestion-pill--action,.onboarding-overlay .goal-suggestion-link{cursor:pointer;transition:border-color .14s ease,background .14s ease,color .14s ease,box-shadow .14s ease}.onboarding-overlay .suggest-pill--action:hover,.onboarding-overlay .goal-suggestion-pill--action:hover,.onboarding-overlay .goal-suggestion-link:hover{border-color:color-mix(in srgb,var(--color-primary) 42%,var(--color-border));color:var(--color-primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--color-primary) 10%,transparent)}.onboarding-overlay .goal-suggestion-link{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:6px;padding:0;border:0;background:transparent;color:var(--color-primary);text-decoration:none}.onboarding-overlay .suggest-pill--warn{border-color:color-mix(in srgb,#b45309 36%,var(--color-border));background:#f59e0b1f;color:#92400e}.onboarding-overlay .goal-nice-select{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.onboarding-overlay .goal-category-row-bottom{align-items:stretch;justify-content:space-between;padding:12px 0 0;border-top:1px solid color-mix(in oklab,var(--color-border),transparent 26%)}.onboarding-overlay .goal-category-assigned-badges{display:flex;flex-wrap:wrap;gap:8px;padding-left:42px}.onboarding-overlay .goal-calendar-badge{display:inline-flex;align-items:center;gap:8px;min-height:32px;padding:6px 10px;border-radius:999px;border:1px solid color-mix(in oklab,var(--color-border),transparent 16%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 4%);color:var(--color-text)}.onboarding-overlay .goal-calendar-badge__name{max-width:170px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.onboarding-overlay .goal-calendar-badge__hours{padding-left:8px;border-left:1px solid color-mix(in oklab,var(--color-border),transparent 18%);font-size:.76rem;font-weight:700;color:var(--color-text-light);white-space:nowrap}.onboarding-overlay .goal-category-row-bottom__head{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%}.onboarding-overlay .goal-section-copy{display:grid;gap:4px}.onboarding-overlay .goal-calendar-color{width:10px;height:10px;border-radius:999px;flex:0 0 auto;border:1px solid color-mix(in oklab,#000,transparent 78%);box-shadow:0 0 0 1px color-mix(in oklab,var(--color-main-background, #fff),transparent 12%)}.onboarding-overlay .row-inline-note{color:var(--color-text-light);font-size:.8rem}.onboarding-overlay .goal-section-label{font-size:.8rem;font-weight:700;color:var(--color-text-light);text-transform:uppercase;letter-spacing:.04em}.onboarding-overlay .goal-add-select,.onboarding-overlay .goal-category-name,.onboarding-overlay .goal-color-input{border:1px solid var(--color-border);border-radius:10px;padding:8px 10px;background:var(--color-main-background, #fff)}.onboarding-overlay .goal-add-select--inline{flex:1 1 auto;min-width:0;max-width:none;border:0;padding:0;background:transparent;color:inherit;box-shadow:none;-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer}.onboarding-overlay .goal-add-calendar-control{position:relative;display:inline-flex;align-items:center;justify-content:center;width:40px;min-width:40px;height:40px;padding:0;border-radius:999px;border:1px solid color-mix(in srgb,var(--color-primary) 34%,var(--color-border));background:linear-gradient(180deg,color-mix(in srgb,var(--color-primary) 8%,var(--color-main-background, #fff)),color-mix(in srgb,var(--color-primary) 3%,var(--color-main-background, #fff)));color:var(--color-text);box-shadow:0 8px 18px #0f172a14;overflow:hidden}.onboarding-overlay .goal-category-action-card{position:relative;display:flex;align-items:stretch;gap:10px;flex-wrap:wrap;padding:14px 12px 10px;border-radius:14px;border:1px solid color-mix(in oklab,var(--color-border),transparent 12%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 3%)}.onboarding-overlay .goal-card-corner-grip{position:absolute;top:-1px;right:12px;display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:18px;padding:0 8px;border-radius:0 0 10px 10px;border:1px solid color-mix(in oklab,var(--color-border),transparent 10%);border-top:0;background:color-mix(in oklab,var(--color-main-background, #fff),transparent 1%);color:var(--color-text-light);font-size:.82rem;line-height:1;letter-spacing:-.08em;cursor:grab}.onboarding-overlay .goal-inline-target{min-width:112px}.onboarding-overlay .goal-category-action-icons{margin-left:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:4px 6px;border-radius:999px;border:1px solid color-mix(in oklab,var(--color-border),transparent 10%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 3%)}.onboarding-overlay .goal-reorder-tools--compact{gap:6px}.onboarding-overlay .goal-add-calendar-control__native{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;opacity:0;cursor:pointer}.onboarding-overlay .goal-add-calendar-control__icon{position:relative;display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--color-primary)}.onboarding-overlay .goal-add-calendar-control__sheet{position:relative;width:18px;height:16px;border-radius:5px;border:1.5px solid currentColor;background:color-mix(in srgb,var(--color-primary) 12%,var(--color-main-background, #fff))}.onboarding-overlay .goal-add-calendar-control__sheet:before{content:"";position:absolute;top:3px;left:2px;right:2px;height:1.5px;background:currentColor;opacity:.85}.onboarding-overlay .goal-add-calendar-control__plus{position:absolute;right:0;bottom:0;width:11px;height:11px;display:inline-grid;place-items:center;border-radius:999px;background:color-mix(in srgb,var(--color-primary) 18%,var(--color-main-background, #fff));border:1px solid color-mix(in srgb,var(--color-primary) 32%,transparent);color:var(--color-primary);font-size:10px;font-weight:800;line-height:1}.onboarding-overlay .goal-add-calendar-control--empty{opacity:.55}.onboarding-overlay .goal-color-input{width:48px;padding:4px}.onboarding-overlay .goal-calendar-sublist{display:grid;gap:8px;padding-left:16px}.onboarding-overlay .goal-calendar-subrow{position:relative;margin-left:12px;border-style:dashed;display:grid;grid-template-columns:minmax(0,1fr) auto auto auto;align-items:center;gap:10px;padding:14px 12px 10px;border-radius:12px;border:1px dashed color-mix(in oklab,var(--color-border),transparent 12%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 3%)}.onboarding-overlay .goal-calendar-corner-grip{position:absolute;top:-1px;right:12px;display:inline-flex;align-items:center;justify-content:center;min-width:32px;height:18px;padding:0 7px;border-radius:0 0 10px 10px;border:1px solid color-mix(in oklab,var(--color-border),transparent 10%);border-top:0;background:color-mix(in oklab,var(--color-main-background, #fff),transparent 1%);color:var(--color-text-light);font-size:.82rem;line-height:1;letter-spacing:-.08em;cursor:grab}.onboarding-overlay .goal-row-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;min-width:34px;height:34px;padding:0;border-radius:999px;border:1px solid color-mix(in srgb,#ef4444 24%,var(--color-border));background:color-mix(in srgb,#ef4444 8%,var(--color-main-background, #fff));color:color-mix(in srgb,#b91c1c 82%,var(--color-text));font-size:1rem;font-weight:700;line-height:1}.onboarding-overlay .goal-row-icon-btn:hover{border-color:color-mix(in srgb,#ef4444 40%,var(--color-border));box-shadow:0 0 0 3px color-mix(in srgb,#ef4444 10%,transparent)}.onboarding-overlay .goal-calendar-subrow__actions{display:flex;align-items:center;gap:8px;margin-left:auto;padding:4px 6px;border-radius:999px;border:1px solid color-mix(in oklab,var(--color-border),transparent 10%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 3%)}.onboarding-overlay .goal-calendar-subrow__status{display:grid;gap:4px;justify-items:start;min-width:154px}.onboarding-overlay .goal-calendar-subrow__status .label{margin:0;font-size:.72rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--color-text-light)}.onboarding-overlay .goal-calendar-subrow .input-unit--small{grid-template-columns:38px auto;width:max-content;justify-self:start}.onboarding-overlay .goal-calendar-subrow .row-name,.onboarding-overlay .goal-nice-select .select-pill{display:inline-flex;align-items:center;gap:8px}.onboarding-overlay .input-unit--small input{width:38px;min-width:38px;padding:6px 4px;text-align:center}.onboarding-overlay .goal-suggestion-pill{font-size:.76rem;border-radius:999px;padding:3px 8px;border:1px solid transparent;background:#3b82f61a;color:var(--color-primary)}.onboarding-overlay .goal-suggestion-pill--muted{border-color:color-mix(in srgb,var(--color-border) 92%,transparent);background:color-mix(in srgb,var(--color-border) 12%,transparent);color:var(--color-text-light)}.onboarding-panel.theme-dark .goal-calendar-badge{border-color:#35506e;background:linear-gradient(180deg,#0f172aeb,#131f34f5);box-shadow:inset 0 0 0 1px #47556929}.onboarding-panel.theme-dark .goal-calendar-badge__hours,.onboarding-panel.theme-dark .goal-calendar-subrow__status .label{color:#93a7c4}.onboarding-panel.theme-dark .goal-calendar-corner-grip{border-color:#35506e;background:linear-gradient(180deg,#0f172aeb,#131f34f5)}.onboarding-overlay .review-row-list{display:grid;gap:12px}.onboarding-overlay .review-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:12px 14px;border-radius:12px;border:1px solid color-mix(in oklab,var(--color-border),transparent 18%);background:color-mix(in oklab,var(--color-main-background, #fff),transparent 4%)}.onboarding-overlay .review-row strong{display:block;margin-bottom:4px}.onboarding-overlay .review-row p{margin:0;color:var(--color-text-light)}@media (max-width: 1180px){.onboarding-step-nav{grid-template-columns:repeat(4,minmax(0,1fr))}.onboarding-overlay .goal-advanced,.onboarding-overlay .goal-single,.onboarding-overlay .preferences-grid--core-optional,.onboarding-overlay .intro-route-grid--three,.onboarding-overlay .intro-route-grid--two{grid-template-columns:1fr}.onboarding-overlay .config-warning{grid-template-columns:1fr;align-items:start}.onboarding-overlay .goal-side-panel{position:static}.onboarding-overlay .field-row{align-items:flex-start;flex-direction:column}.onboarding-overlay .field-actions{justify-content:flex-start}.onboarding-overlay .goal-category-editor__primary,.onboarding-overlay .goal-category-editor__secondary{grid-template-columns:1fr}.onboarding-overlay .goal-category-row-bottom__head{flex-direction:column;align-items:flex-start}.onboarding-overlay .goal-calendar-subrow__status{min-width:132px}}@media (max-width: 760px){.onboarding-step-nav{grid-template-columns:repeat(2,minmax(0,1fr))}.onboarding-overlay .goal-calendar-row,.onboarding-overlay .goal-calendar-subrow,.onboarding-overlay .review-row,.onboarding-overlay .goal-category-summary,.onboarding-overlay .intro-stage{flex-direction:column;align-items:stretch}.onboarding-overlay .intro-visual{padding:18px}.onboarding-overlay .intro-visual__card{position:static;width:100%}.onboarding-overlay .intro-visual__copy{font-size:2.1rem}.onboarding-overlay .intro-visual__copy .accent{font-size:2.7rem}.onboarding-overlay .goal-calendar-subrow{grid-template-columns:1fr}.onboarding-overlay .goal-category-assigned-badges{padding-left:0}.onboarding-overlay .goal-calendar-subrow__actions{margin-left:0;justify-self:start}}:global(body.opsdash-onboarding-lock){overflow:hidden}.sb-description[data-v-b978e1df]{font-size:12px;color:var(--text-color-tertiary);margin:0 0 10px}.setup-actions[data-v-b978e1df]{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.setup-actions .import-input[data-v-b978e1df]{display:none}.preset-form[data-v-b978e1df]{display:flex;flex-direction:column;gap:6px;margin-bottom:12px}.preset-label[data-v-b978e1df]{font-size:12px;font-weight:600}.preset-form input[data-v-b978e1df]{width:100%;padding:6px 8px;border-radius:4px;border:1px solid var(--color-border);background:var(--color-main-background);color:var(--color-main-text)}.preset-save[data-v-b978e1df]{align-self:flex-start}.preset-error[data-v-b978e1df]{color:var(--color-error);font-size:12px}.preset-warnings[data-v-b978e1df]{border:1px solid var(--color-warning);background:color-mix(in srgb,var(--color-warning) 10%,transparent);border-radius:6px;padding:8px;margin-bottom:12px}.warnings-title[data-v-b978e1df]{font-weight:600;margin-bottom:4px}.preset-warnings ul[data-v-b978e1df]{padding-left:18px;margin:0 0 6px}.preset-clear[data-v-b978e1df]{padding:2px 6px}.preset-header[data-v-b978e1df]{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.preset-header h3[data-v-b978e1df]{margin:0;font-size:15px;font-weight:600}.preset-empty[data-v-b978e1df]{font-size:12px;color:var(--text-color-tertiary)}.preset-list[data-v-b978e1df]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:8px}.preset-item[data-v-b978e1df]{border:1px solid color-mix(in oklab,var(--brand),var(--line) 60%);border-radius:6px;padding:8px;display:flex;flex-direction:column;gap:6px;background:color-mix(in oklab,var(--brand),var(--card) 92%);color:var(--color-main-text);box-shadow:0 8px 16px #0f172a14,inset 0 0 0 1px color-mix(in oklab,var(--brand),transparent 85%)}.preset-meta[data-v-b978e1df]{display:flex;flex-direction:column;gap:2px}.preset-name[data-v-b978e1df]{font-weight:600}.preset-info[data-v-b978e1df]{display:flex;flex-wrap:wrap;gap:8px;font-size:11px;color:var(--color-text-lighter)}#opsdash.opsdash-theme-dark .preset-item{background:color-mix(in oklab,var(--brand),#0b1220 82%);border-color:color-mix(in oklab,var(--brand),#0b1220 35%);color:var(--color-main-text);box-shadow:0 10px 18px #00000047,inset 0 0 0 1px color-mix(in oklab,var(--brand),transparent 70%)}.preset-actions[data-v-b978e1df]{display:flex;gap:6px}.profiles-overlay__body[data-v-79f039ef]{padding-right:4px;margin-right:-4px}.shortcuts-panel[data-v-a4c42127]{width:min(720px,100%);max-height:90vh;overflow:auto;display:flex;flex-direction:column;gap:16px}.shortcuts-hint[data-v-a4c42127]{margin:4px 0 0;font-size:13px;color:var(--color-text-light)}.shortcuts-body[data-v-a4c42127]{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}.shortcuts-group h3[data-v-a4c42127]{margin:0 0 8px;font-size:14px;text-transform:uppercase;color:var(--color-text-light);letter-spacing:.06em}.shortcuts-group ul[data-v-a4c42127]{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.shortcuts-group li[data-v-a4c42127]{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--color-border)}.shortcuts-group li[data-v-a4c42127]:last-child{border-bottom:none}.shortcut-label[data-v-a4c42127]{font-weight:600;display:flex;flex-direction:column;gap:2px}.shortcut-label small[data-v-a4c42127]{font-weight:400;font-size:12px;color:var(--color-text-light)}.shortcut-combo[data-v-a4c42127]{display:inline-flex;gap:6px}kbd[data-v-a4c42127]{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:12px;padding:4px 8px;border-radius:6px;border:1px solid var(--color-border);background:var(--color-background-contrast);color:var(--color-text);box-shadow:inset 0 -1px #fff9}.shortcuts-footer[data-v-a4c42127]{display:flex;justify-content:flex-end}@media (max-width: 600px){.shortcuts-panel[data-v-a4c42127]{padding:16px}.shortcuts-body[data-v-a4c42127]{grid-template-columns:1fr}}.layout-grid[data-v-178d9739]{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;width:100%;position:relative;--grid-row: 24px;grid-auto-rows:var(--grid-row);grid-auto-flow:row}.layout-item[data-v-178d9739]{position:relative}.layout-item.is-loading[data-v-178d9739]>:not(.widget-loading){opacity:.35;filter:saturate(.85)}.widget-loading[data-v-178d9739]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;background:color-mix(in oklab,var(--card),transparent 20%);border-radius:16px;z-index:2}.widget-loading__spinner[data-v-178d9739]{width:20px;height:20px;border-radius:50%;border:2px solid color-mix(in oklab,var(--brand),transparent 65%);border-top-color:var(--brand);animation:widget-spin-178d9739 .8s linear infinite}.widget-loading__label[data-v-178d9739]{font-size:12px;font-weight:600;color:var(--muted, #6b7280)}@keyframes widget-spin-178d9739{to{transform:rotate(360deg)}}.layout-grid.show-guides[data-v-178d9739]{background-image:linear-gradient(to right,rgba(148,163,184,.15) 1px,transparent 1px),linear-gradient(to bottom,rgba(148,163,184,.12) 1px,transparent 1px);background-size:calc((100% - 36px)/4) 100%,100% var(--grid-row);background-position:0 0,0 0}.layout-grid.show-guides[data-v-178d9739]:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.layout-item[data-v-178d9739]{min-width:0;position:relative;display:flex;padding:0;cursor:grab;align-self:stretch;overflow:hidden;--widget-scale:1;--widget-space:1;--widget-density:1;--widget-text-scale: var(--widget-scale);--widget-pad: calc(12px * var(--widget-space));--widget-gap: calc(8px * var(--widget-space));--widget-gap-tight: calc(6px * var(--widget-space));--widget-font: calc(14px * var(--widget-text-scale, var(--widget-scale)))}.layout-item[data-v-178d9739]>*{flex:1 1 auto;min-width:0;min-height:0;height:100%;overflow:auto}.layout-item.h-auto[data-v-178d9739]{overflow:visible;align-self:start;height:auto;grid-row-end:auto}.layout-item.h-auto[data-v-178d9739]>*{height:auto;overflow:visible}.w-quarter[data-v-178d9739]{grid-column:span 1}.w-half[data-v-178d9739]{grid-column:span 2}.w-full[data-v-178d9739]{grid-column:span 4}.h-s[data-v-178d9739]{grid-row-end:span 4}.h-m[data-v-178d9739]{grid-row-end:span 8}.h-l[data-v-178d9739]{grid-row-end:span 13}.h-xl[data-v-178d9739]{grid-row-end:span 22}.is-editable[data-v-178d9739]{outline:1px dashed rgba(107,114,128,.5);border-radius:10px}.is-selected[data-v-178d9739]{outline:2px solid var(--color-primary,#2563EB)}.is-dragging[data-v-178d9739]{opacity:.6}.scale-sm[data-v-178d9739]{--widget-scale:.85}.scale-md[data-v-178d9739]{--widget-scale:1}.scale-lg[data-v-178d9739]{--widget-scale:1.2}.scale-xl[data-v-178d9739]{--widget-scale:1.4}@media (max-width: 1024px){.w-quarter[data-v-178d9739],.w-half[data-v-178d9739]{grid-column:span 2}.w-full[data-v-178d9739]{grid-column:span 4}}@media (max-width: 768px){.w-quarter[data-v-178d9739],.w-half[data-v-178d9739],.w-full[data-v-178d9739]{grid-column:span 4}}.ghost[data-v-0399ee27]{border:1px solid var(--adv-button-border, var(--color-border, #d1d5db));background:var(--adv-button-bg, color-mix(in oklab, #ffffff, #f8fafc 45%));color:var(--adv-button-fg, var(--color-main-text, #0f172a));padding:2px 6px;border-radius:6px;font-size:12px;cursor:pointer;transition:background .12s ease,border-color .12s ease,color .12s ease}.ghost[data-v-0399ee27]:hover{border-color:var(--adv-button-hover-border, color-mix(in oklab, var(--color-primary, #2563eb), transparent 45%));background:var(--adv-button-hover-bg, color-mix(in oklab, #dbeafe, #ffffff 62%))}.ghost.primary[data-v-0399ee27]{border-color:var(--adv-primary-border, var(--color-primary, #2563EB));color:var(--adv-primary-fg, var(--color-primary, #2563EB));background:var(--adv-primary-bg, color-mix(in oklab, var(--color-primary, #2563eb), #ffffff 94%))}.ghost.primary[data-v-0399ee27]:hover{border-color:var(--adv-primary-hover-border, var(--color-primary, #2563EB));background:var(--adv-primary-hover-bg, color-mix(in oklab, var(--color-primary, #2563eb), #ffffff 88%))}.advanced-overlay[data-v-0399ee27]{position:fixed;inset:auto 24px 84px calc(24px + var(--opsdash-nav-offset, 0px));display:flex;align-items:flex-end;justify-content:center;padding:0;z-index:2147480002;pointer-events:none}.advanced-panel[data-v-0399ee27]{--adv-surface: #ffffff;--adv-text: #0f172a;--adv-border-base: #e2e8f0;--adv-surface-alt: var(--color-background-hover, #f8fafc);--adv-surface-muted: var(--color-background-contrast, #f8fafc);--adv-border: color-mix(in oklab, var(--color-border, #d1d5db), transparent 20%);--adv-muted: var(--muted, #64748b);--adv-warn-border: color-mix(in oklab, #dc2626, var(--color-border, #d1d5db) 45%);--adv-warn-bg: color-mix(in oklab, #fff1f2, var(--color-main-background, #fff) 40%);--adv-button-bg: color-mix(in oklab, #ffffff, #f8fafc 35%);--adv-button-border: color-mix(in oklab, var(--color-border, #d1d5db), transparent 15%);--adv-button-fg: var(--color-main-text, #0f172a);--adv-button-hover-bg: color-mix(in oklab, #dbeafe, #ffffff 64%);--adv-button-hover-border: color-mix(in oklab, var(--color-primary, #2563eb), transparent 46%);--adv-primary-bg: color-mix(in oklab, var(--color-primary, #2563eb), #ffffff 92%);--adv-primary-fg: var(--color-primary, #2563eb);--adv-primary-border: color-mix(in oklab, var(--color-primary, #2563eb), transparent 24%);--adv-primary-hover-bg: color-mix(in oklab, var(--color-primary, #2563eb), #ffffff 84%);--adv-primary-hover-border: var(--color-primary, #2563eb);background:var(--adv-surface);color:var(--adv-text);pointer-events:auto;width:min(1180px,100%);max-height:min(82vh,940px);border-radius:14px;box-shadow:0 18px 48px #0f172a52,inset 0 0 0 1px color-mix(in oklab,var(--color-primary, #2563eb),transparent 82%);overflow:hidden;display:flex;flex-direction:column;border:1px solid color-mix(in oklab,var(--color-primary, #2563eb),var(--adv-border-base) 70%)}.advanced-panel__body[data-v-0399ee27]{flex:1 1 auto;overflow:auto;padding:18px 18px 10px}.advanced-panel__body--goals[data-v-0399ee27]{padding-top:18px}.close-btn[data-v-0399ee27]{position:absolute;top:12px;right:12px;z-index:2;background:color-mix(in oklab,var(--adv-surface, #ffffff),transparent 12%);border:1px solid var(--adv-border);border-radius:999px;width:34px;height:34px;display:grid;place-items:center;font-size:1.15rem;line-height:1;cursor:pointer;color:var(--adv-muted);padding:0}.close-btn[data-v-0399ee27]:hover{color:var(--color-primary, #2563eb);background:color-mix(in oklab,var(--color-primary, #2563eb),var(--adv-surface, #ffffff) 88%);border-color:color-mix(in oklab,var(--color-primary, #2563eb),transparent 52%)}.overlay-actions[data-v-0399ee27]{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:12px 18px 14px;border-top:1px solid var(--color-border, #e5e7eb);background:var(--adv-surface-alt)}.overlay-actions__left[data-v-0399ee27]{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.overlay-actions__hint[data-v-0399ee27]{font-size:.82rem;color:var(--adv-muted)}.overlay-actions__left[data-v-0399ee27],.overlay-actions__right[data-v-0399ee27]{display:flex;gap:8px;flex-wrap:wrap}#opsdash.opsdash-theme-dark .advanced-panel{--adv-surface: #0f172a;--adv-text: #e2e8f0;--adv-border-base: #1f2937;--adv-surface-alt: color-mix(in oklab, var(--color-main-background, #0f172a), #1f2937 35%);--adv-surface-muted: color-mix(in oklab, var(--color-main-background, #0f172a), #111827 52%);--adv-border: color-mix(in oklab, var(--color-border, #334155), #000000 10%);--adv-muted: #94a3b8;--adv-warn-border: color-mix(in oklab, #ef4444, var(--color-border, #334155) 58%);--adv-warn-bg: color-mix(in oklab, #7f1d1d, var(--color-main-background, #0f172a) 75%);--adv-button-bg: color-mix(in oklab, #111827, #0b1220 68%);--adv-button-border: color-mix(in oklab, #475569, transparent 22%);--adv-button-fg: #e2e8f0;--adv-button-hover-bg: color-mix(in oklab, #1e293b, #0b1220 62%);--adv-button-hover-border: color-mix(in oklab, #3b82f6, transparent 32%);--adv-primary-bg: color-mix(in oklab, #1d4ed8, #0b1220 78%);--adv-primary-fg: #bfdbfe;--adv-primary-border: color-mix(in oklab, #3b82f6, transparent 36%);--adv-primary-hover-bg: color-mix(in oklab, #2563eb, #0b1220 70%);--adv-primary-hover-border: color-mix(in oklab, #60a5fa, transparent 28%)}@media (max-width: 960px){.advanced-overlay[data-v-0399ee27]{top:0;right:0;bottom:0;left:0;padding:16px;background:#0f172a73;pointer-events:auto;align-items:center}.advanced-panel[data-v-0399ee27]{width:min(1080px,100%);max-height:calc(100vh - 32px)}}@media (max-width: 640px){.advanced-overlay[data-v-0399ee27]{padding:16px;align-items:flex-start}.overlay-metrics[data-v-0399ee27]{grid-template-columns:1fr;padding-top:10px}}.layout-wrapper[data-v-365e536c]{position:relative}.layout-wrapper.editable-mode[data-v-365e536c]{overflow:visible}.wp[data-v-5ff4f026]{width:100%;height:100%;display:flex;align-items:flex-end;gap:2px;padding:5px 5px 0;box-sizing:border-box}.wp-bar[data-v-5ff4f026]{border-radius:2px 2px 0 0;flex:1;background:var(--brand, #2563eb)}.wp-bar--a[data-v-5ff4f026]{background:var(--brand, #2563eb)}.wp-bar--b[data-v-5ff4f026]{background:color-mix(in oklab,var(--brand, #2563eb),#7c3aed 55%)}.wp-bar--g[data-v-5ff4f026]{background:#16a34a}.wp--ring[data-v-5ff4f026]{align-items:center;justify-content:center}.wp-ring-wrap[data-v-5ff4f026]{position:relative;display:flex;align-items:center;justify-content:center}.wp-ring[data-v-5ff4f026]{width:32px;height:32px;border-radius:50%;border:5px solid color-mix(in oklab,var(--brand, #2563eb),transparent 75%);border-top-color:var(--brand, #2563eb);border-right-color:var(--brand, #2563eb)}.wp-ring-label[data-v-5ff4f026]{position:absolute;font-size:8px;font-weight:900;color:var(--brand, #2563eb)}.wp--pie[data-v-5ff4f026]{align-items:center;justify-content:center}.wp-pie-wrap[data-v-5ff4f026]{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.wp-pie[data-v-5ff4f026]{width:30px;height:30px;border-radius:50%;background:conic-gradient(var(--brand, #2563eb) 0deg 200deg,color-mix(in oklab,var(--brand, #2563eb),transparent 55%) 200deg 290deg,color-mix(in oklab,var(--brand, #2563eb),transparent 75%) 290deg 360deg)}.wp--hbars[data-v-5ff4f026]{align-items:center;padding:4px 5px}.wp-hbars[data-v-5ff4f026]{display:flex;flex-direction:column;gap:4px;width:100%}.wp-hbar[data-v-5ff4f026]{height:5px;border-radius:2px;background:var(--brand, #2563eb)}.wp--heatmap[data-v-5ff4f026]{align-items:stretch;padding:4px}.wp-heatmap[data-v-5ff4f026]{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;width:100%;height:100%}.wp-cell[data-v-5ff4f026]{border-radius:2px;background:var(--brand, #2563eb)}.wp--dayoff[data-v-5ff4f026],.wp--hod[data-v-5ff4f026]{align-items:flex-end}.wp--note[data-v-5ff4f026]{align-items:center;padding:4px 5px}.wp-note[data-v-5ff4f026]{display:flex;flex-direction:column;gap:5px;width:100%}.wp-noteline[data-v-5ff4f026]{height:4px;border-radius:2px;background:var(--brand, #2563eb);opacity:.5}.wp--deck[data-v-5ff4f026]{flex-direction:column;align-items:stretch;padding:4px 5px;gap:3px}.wp-deck[data-v-5ff4f026]{display:flex;flex-direction:column;gap:3px;width:100%}.wp-deckcard[data-v-5ff4f026]{height:10px;border-radius:3px;background:var(--brand, #2563eb);opacity:.6}.wp--deckstats[data-v-5ff4f026]{align-items:center;justify-content:space-around;padding:6px 5px}.wp-deckstats[data-v-5ff4f026]{display:flex;gap:4px;align-items:flex-end;width:100%;justify-content:space-around}.wp-stat[data-v-5ff4f026]{width:16px;height:16px;border-radius:4px;background:var(--brand, #2563eb);opacity:.55}.wp-stat[data-v-5ff4f026]:nth-child(2){height:22px;opacity:.8}.wp--generic[data-v-5ff4f026]{align-items:center;justify-content:center}.wp-generic[data-v-5ff4f026]{width:70%;height:12px;border-radius:4px;background:color-mix(in oklab,var(--brand, #2563eb),transparent 70%)}.wp--sel .wp-bar[data-v-5ff4f026],.wp--sel .wp-hbar[data-v-5ff4f026],.wp--sel .wp-cell[data-v-5ff4f026],.wp--sel .wp-noteline[data-v-5ff4f026],.wp--sel .wp-deckcard[data-v-5ff4f026],.wp--sel .wp-stat[data-v-5ff4f026]{filter:brightness(1.1)}.ov-backdrop[data-v-d6b3170f]{position:fixed;top:0;right:0;bottom:0;left:0;background:#090e1a8c;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;z-index:9000}.overlay-panel[data-v-d6b3170f]{background:var(--card, #fff);border-radius:18px;box-shadow:0 24px 80px #090e1a47,0 4px 16px #090e1a1f;width:680px;max-width:92vw;max-height:88vh;overflow:hidden;display:flex;flex-direction:column;border:1px solid var(--line, #e2e8f0)}.ov-head[data-v-d6b3170f]{display:flex;align-items:center;gap:10px;padding:16px 18px 0}.ov-search[data-v-d6b3170f]{flex:1;height:38px;border-radius:11px;border:1px solid color-mix(in oklab,var(--brand),transparent 78%);background:color-mix(in oklab,var(--brand),transparent 93%);display:flex;align-items:center;padding:0 13px;gap:8px;color:var(--brand, #2563eb)}.ov-search-icon[data-v-d6b3170f]{flex-shrink:0}.ov-search-input[data-v-d6b3170f]{flex:1;border:0;background:none;font:inherit;color:var(--brand, #2563eb);font-size:12px;font-weight:700;outline:none}.ov-search-input[data-v-d6b3170f]::placeholder{color:color-mix(in oklab,var(--brand),transparent 60%);font-weight:500}.ov-cancel[data-v-d6b3170f]{height:38px;border-radius:11px;padding:0 14px;border:1px solid var(--line, #e2e8f0);font-size:12px;font-weight:800;color:var(--muted, #64748b);background:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;white-space:nowrap}.ov-cats[data-v-d6b3170f]{display:flex;gap:5px;padding:12px 18px 0;flex-wrap:wrap}.ov-cat[data-v-d6b3170f]{height:28px;border-radius:999px;padding:0 13px;border:1px solid var(--line, #e2e8f0);font-size:11px;font-weight:800;color:var(--muted, #64748b);background:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}.ov-cat.on[data-v-d6b3170f]{border-color:color-mix(in oklab,var(--brand),transparent 78%);background:color-mix(in oklab,var(--brand),transparent 93%);color:var(--brand, #2563eb)}.ov-grid[data-v-d6b3170f]{display:grid;grid-template-columns:repeat(5,1fr);gap:9px;padding:12px 18px;overflow-y:auto;flex:1}.ov-card[data-v-d6b3170f]{border:1px solid var(--line, #e2e8f0);border-radius:13px;padding:10px 8px;background:var(--card, #fff);display:flex;flex-direction:column;gap:6px;align-items:center;cursor:pointer;transition:border-color .12s ease}.ov-card[data-v-d6b3170f]:hover{border-color:color-mix(in oklab,var(--brand),transparent 60%);background:color-mix(in oklab,var(--brand),transparent 96%)}.ov-card.on[data-v-d6b3170f]{border:2px solid var(--brand, #2563eb);background:color-mix(in oklab,var(--brand),transparent 93%);box-shadow:0 0 0 3px color-mix(in oklab,var(--brand),transparent 88%)}.ov-preview[data-v-d6b3170f]{width:100%;height:46px;border-radius:8px;background:color-mix(in oklab,var(--brand, #2563eb),transparent 95%);overflow:hidden;display:flex;align-items:flex-end}.ov-name[data-v-d6b3170f]{font-size:10px;font-weight:900;color:var(--fg, #0f172a);text-align:center;line-height:1.3}.ov-name.on[data-v-d6b3170f]{color:var(--brand, #2563eb)}.ov-empty[data-v-d6b3170f]{grid-column:1 / -1;text-align:center;color:var(--muted, #64748b);font-size:12px;padding:24px 0}.ov-foot[data-v-d6b3170f]{padding:12px 18px 16px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line, #e2e8f0);flex-shrink:0;gap:8px}.ov-hint[data-v-d6b3170f]{font-size:11px;color:var(--muted, #64748b);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ov-foot-actions[data-v-d6b3170f]{display:flex;gap:8px;align-items:center;flex-shrink:0}.ov-add-soft[data-v-d6b3170f]{height:36px;border-radius:999px;padding:0 16px;border:1px solid var(--line, #e2e8f0);font-size:12px;font-weight:800;color:var(--muted, #64748b);background:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;white-space:nowrap}.ov-add-soft[data-v-d6b3170f]:disabled{opacity:.4;cursor:default}.ov-add[data-v-d6b3170f]{height:36px;border-radius:999px;padding:0 22px;background:var(--brand, #2563eb);color:#fff;font-size:12px;font-weight:800;border:0;cursor:pointer;box-shadow:0 6px 20px color-mix(in oklab,var(--brand),transparent 78%);-webkit-appearance:none;-moz-appearance:none;appearance:none;white-space:nowrap}.ov-add[data-v-d6b3170f]:disabled{opacity:.4;cursor:default;box-shadow:none}.ov-add[data-v-d6b3170f]:hover:not(:disabled){filter:brightness(1.08)}.options-wrapper[data-v-2ef43534]{position:relative}.options-pop[data-v-2ef43534]{--opt-pop-bg: #ffffff;--opt-pop-border: color-mix(in oklab, #cbd5e1, transparent 18%);--opt-pop-text: #0f172a;--opt-pop-muted: #64748b;--opt-section-bg: color-mix(in oklab, #ffffff, #f8fafc 78%);--opt-section-border: color-mix(in oklab, #cbd5e1, transparent 28%);--opt-input-bg: color-mix(in oklab, #ffffff, #f8fafc 65%);--opt-input-border: color-mix(in oklab, #94a3b8, transparent 34%);--opt-input-text: #0f172a;--opt-code-bg: color-mix(in oklab, #e2e8f0, #f8fafc 62%);position:fixed;background:var(--opt-pop-bg);color:var(--opt-pop-text);border:1px solid var(--opt-pop-border);border-radius:14px;box-shadow:0 18px 44px #0f172a42,inset 0 0 0 1px color-mix(in oklab,var(--color-primary, #2563eb),transparent 86%);padding:12px;width:min(440px,calc(100vw - 24px));z-index:30;max-height:min(420px,calc(100vh - 108px));overflow:auto;overflow-x:hidden;transform-origin:top right}body.opsdash-theme-dark .options-pop{--opt-pop-bg: #0f172a;--opt-pop-border: color-mix(in oklab, #475569, transparent 16%);--opt-pop-text: #e2e8f0;--opt-pop-muted: #94a3b8;--opt-section-bg: color-mix(in oklab, #111827, #0b1220 74%);--opt-section-border: color-mix(in oklab, #475569, transparent 38%);--opt-input-bg: color-mix(in oklab, #0b1220, #111827 68%);--opt-input-border: color-mix(in oklab, #64748b, transparent 38%);--opt-input-text: #e2e8f0;--opt-code-bg: color-mix(in oklab, #0b1220, #1e293b 52%);box-shadow:0 14px 28px #02061785}.opt-row[data-v-2ef43534]{display:grid;grid-template-columns:minmax(120px,1fr) minmax(140px,1fr);align-items:center;gap:10px;margin-bottom:6px}.opt-row[data-v-2ef43534]:last-child{margin-bottom:0}.opt-row--footer[data-v-2ef43534]{grid-template-columns:1fr;justify-content:flex-end;margin-top:4px}.tab-actions[data-v-2ef43534]{display:grid;gap:8px}.tab-actions__row[data-v-2ef43534]{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--opt-section-border);border-radius:10px;background:var(--opt-section-bg)}.tab-actions__meta[data-v-2ef43534]{min-width:0}.tab-actions__label[data-v-2ef43534]{color:var(--opt-pop-text);font-size:.83rem;font-weight:600}.tab-actions__hint[data-v-2ef43534],.tab-actions__empty[data-v-2ef43534]{color:var(--opt-pop-muted);font-size:.76rem;line-height:1.4}.tab-actions__buttons[data-v-2ef43534]{display:inline-flex;align-items:center;gap:6px}.link-btn[data-v-2ef43534]{border:none;background:transparent;color:var(--color-primary, #2563eb);cursor:pointer;font-size:12px;text-decoration:underline;text-underline-offset:2px}.link-btn[data-v-2ef43534]:hover{opacity:.85}.opt-row label[data-v-2ef43534]{font-size:.8rem;color:var(--opt-pop-text);line-height:1.35}.opt-row input[type='"number"'][data-v-2ef43534],.opt-row select[data-v-2ef43534],.opt-row input[type='"text"'][data-v-2ef43534]{width:100%;background:var(--opt-input-bg);border:1px solid var(--opt-input-border);color:var(--opt-input-text);border-radius:7px;padding:6px 8px;font-size:13px}.opt-row input[type=color][data-v-2ef43534]{width:100%;min-height:30px;border-radius:7px;border:1px solid var(--opt-input-border);background:var(--opt-input-bg);padding:3px}.opt-row input[type=checkbox][data-v-2ef43534],.multi__item input[type=checkbox][data-v-2ef43534],.taglist__meta input[type=checkbox][data-v-2ef43534]{width:15px!important;min-width:15px;max-width:15px;height:15px!important;min-height:15px;max-height:15px;margin:0;display:inline-block;flex:0 0 15px;align-self:center}.opt-row textarea[data-v-2ef43534]{width:100%;background:var(--opt-input-bg);border:1px solid var(--opt-input-border);color:var(--opt-input-text);border-radius:7px;padding:7px;font-size:13px}.opt-section[data-v-2ef43534]{margin-bottom:11px;padding:10px;border-radius:10px;border:1px solid var(--opt-section-border);background:var(--opt-section-bg)}.opt-section[data-v-2ef43534]:last-child{margin-bottom:0}.opt-section__title[data-v-2ef43534]{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--opt-pop-muted);margin-bottom:9px;font-weight:700}.colorlist[data-v-2ef43534]{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.colorlist__item input[type=color][data-v-2ef43534]{width:38px;height:28px;padding:0;border:1px solid var(--opt-input-border);background:var(--opt-input-bg)}.multi[data-v-2ef43534]{display:grid;gap:6px;grid-template-columns:repeat(2,minmax(0,1fr))}.multi__item[data-v-2ef43534]{display:flex;align-items:center;gap:6px;font-size:13px}.multi__item span[data-v-2ef43534]{color:var(--opt-pop-text)}.taglist[data-v-2ef43534]{display:flex;flex-direction:column;gap:6px}.taglist__hint[data-v-2ef43534]{font-size:12px;color:var(--opt-pop-muted);line-height:1.35}.taglist__item[data-v-2ef43534]{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px}.taglist__meta[data-v-2ef43534]{display:flex;align-items:center;gap:6px}.taglist__label[data-v-2ef43534]{color:var(--opt-pop-text)}.taglist__count[data-v-2ef43534]{font-size:12px;color:var(--opt-pop-muted)}.filter-builder[data-v-2ef43534]{display:flex;flex-direction:column;gap:8px;width:100%}.filter-builder__row[data-v-2ef43534]{display:grid;grid-template-columns:minmax(120px,1fr) minmax(140px,1fr) minmax(140px,1fr) auto;gap:6px;align-items:center}.filter-builder__hint[data-v-2ef43534]{font-size:12px;color:var(--opt-pop-muted);line-height:1.35}.filter-builder__hint code[data-v-2ef43534]{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:10px;color:var(--opt-pop-text);background:var(--opt-code-bg);padding:1px 4px;border-radius:4px}.filter-builder__label[data-v-2ef43534],.filter-builder__input[data-v-2ef43534]{background:var(--opt-input-bg);border:1px solid var(--opt-input-border);color:var(--opt-input-text);border-radius:6px;padding:4px 6px;font-size:13px}@media (max-width: 720px){.options-pop[data-v-2ef43534]{width:min(440px,calc(100vw - 16px));max-height:min(420px,calc(100vh - 96px))}.filter-builder__row[data-v-2ef43534]{grid-template-columns:1fr;align-items:stretch}.filter-builder__row .ghost[data-v-2ef43534]{justify-self:end}}:root{--widget-scale:1;--widget-space:1;--widget-density:1;--widget-text-scale:1}.version-notes-overlay[data-v-3771dea1]{width:min(1120px,calc(100vw - 32px));height:min(860px,calc(100vh - var(--header-height, 50px) - 56px));max-height:calc(100vh - var(--header-height, 50px) - 56px)}.version-notes-overlay__header[data-v-3771dea1]{align-items:flex-start;gap:16px;padding-bottom:10px;border-bottom:1px solid color-mix(in oklab,var(--color-border),transparent 18%);background:radial-gradient(circle at top left,color-mix(in oklab,var(--brand),transparent 88%),transparent 42%)}.version-notes-overlay__title[data-v-3771dea1]{display:flex;flex-direction:column;gap:8px}.version-notes-overlay__title h2[data-v-3771dea1]{margin:0;font-size:clamp(34px,4.2vw,42px);line-height:1;letter-spacing:-.04em;font-weight:800}.version-notes-overlay__teaser[data-v-3771dea1]{margin:0;max-width:62ch;font-size:18px;line-height:1.45;color:color-mix(in oklab,var(--color-text),white 12%);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.version-notes-overlay__eyebrow[data-v-3771dea1],.version-notes-overlay__section-label[data-v-3771dea1]{font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-light)}.version-notes-overlay__actions[data-v-3771dea1]{display:flex;align-items:center;gap:8px;justify-content:flex-end}.version-notes-overlay__pill[data-v-3771dea1]{display:inline-flex;align-items:center;min-height:30px;padding:0 12px;flex-shrink:0;border-radius:999px;border:1px solid color-mix(in oklab,var(--brand),var(--color-border) 70%);background:color-mix(in oklab,var(--brand),transparent 90%);color:var(--color-text);font-size:12px;font-weight:700;white-space:nowrap}.version-notes-overlay__pill--accent[data-v-3771dea1]{border-color:color-mix(in oklab,#0ea5e9,var(--color-border) 35%);background:color-mix(in oklab,#0ea5e9,transparent 86%);color:color-mix(in oklab,#0b4f6c,var(--color-text) 18%)}.version-notes-overlay__body[data-v-3771dea1]{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,320px);gap:18px;align-items:start;min-height:0;overflow-y:auto;overflow-x:hidden;padding-right:4px}.version-notes-overlay__content[data-v-3771dea1]{display:flex;flex-direction:column;gap:16px}.version-notes-overlay__section[data-v-3771dea1],.version-notes-overlay__history-item[data-v-3771dea1]{border:1px solid var(--color-border);border-radius:18px;background:color-mix(in oklab,var(--color-main-background),white 4%)}.version-notes-overlay__section h4[data-v-3771dea1],.version-notes-overlay__history-title[data-v-3771dea1]{margin:0}.version-notes-overlay__history-item p[data-v-3771dea1]{margin:0;color:var(--color-text-light);line-height:1.55}.version-notes-overlay__link-row[data-v-3771dea1]{display:flex;flex-wrap:wrap;gap:10px}.version-notes-overlay__link[data-v-3771dea1]{display:inline-flex;align-items:center;min-height:34px;padding:0 14px;border-radius:999px;border:1px solid color-mix(in oklab,var(--brand),var(--color-border) 68%);background:color-mix(in oklab,var(--brand),transparent 90%);color:var(--color-text);font-weight:600;text-decoration:none;cursor:pointer}.version-notes-overlay__link--action[data-v-3771dea1]{-webkit-appearance:none;-moz-appearance:none;appearance:none;font-family:inherit;font-size:inherit;border-color:color-mix(in oklab,var(--brand),var(--color-border) 40%);background:color-mix(in oklab,var(--brand),transparent 82%);color:var(--brand);transition:background .15s ease,border-color .15s ease}.version-notes-overlay__link--action[data-v-3771dea1]:hover{background:color-mix(in oklab,var(--brand),transparent 72%);border-color:color-mix(in oklab,var(--brand),var(--color-border) 22%)}.version-notes-overlay__section[data-v-3771dea1]{padding:18px 18px 17px;display:flex;flex-direction:column;gap:14px}.version-notes-overlay__section--intro[data-v-3771dea1]{gap:14px;border-color:color-mix(in oklab,var(--brand),var(--color-border) 68%);border-radius:24px;background:radial-gradient(circle at top left,color-mix(in oklab,var(--brand),transparent 90%),transparent 48%),linear-gradient(135deg,color-mix(in oklab,var(--brand),transparent 96%),transparent 58%),color-mix(in oklab,var(--color-main-background),white 3%);box-shadow:inset 0 1px #ffffff0a}.version-notes-overlay__section-head[data-v-3771dea1]{display:flex;align-items:center;justify-content:space-between;gap:12px}.version-notes-overlay__highlights[data-v-3771dea1]{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:12px;line-height:1.6}.version-notes-overlay__intro-copy[data-v-3771dea1]{margin:0;font-size:14px;line-height:1.65;color:var(--color-text-light);display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:4;overflow:hidden}.version-notes-overlay__images[data-v-3771dea1]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.version-notes-overlay__image-card[data-v-3771dea1]{display:flex;flex-direction:column;overflow:hidden;border-radius:16px;border:1px solid color-mix(in oklab,var(--brand),var(--color-border) 72%);background:color-mix(in oklab,var(--color-main-background),white 2%);color:inherit;text-decoration:none;box-shadow:0 14px 30px #0f172a14}.version-notes-overlay__image-card img[data-v-3771dea1]{display:block;width:100%;aspect-ratio:16 / 9;object-fit:contain;background:color-mix(in oklab,var(--color-main-background),black 8%)}.version-notes-overlay__image-meta[data-v-3771dea1]{display:flex;flex-direction:column;gap:4px;padding:12px 14px 14px}.version-notes-overlay__image-meta strong[data-v-3771dea1]{font-size:14px}.version-notes-overlay__image-meta span[data-v-3771dea1]{font-size:12px;line-height:1.45;color:var(--color-text-light)}.version-notes-overlay__history[data-v-3771dea1]{display:flex;flex-direction:column;gap:12px;min-width:0;min-height:0;position:sticky;top:0;align-self:start}.version-notes-overlay__section-head--history[data-v-3771dea1]{padding-right:4px}.version-notes-overlay__history-list[data-v-3771dea1]{display:flex;flex-direction:column;gap:8px;overflow:auto;padding-right:4px;max-height:100%}.version-notes-overlay__history-item[data-v-3771dea1]{-webkit-appearance:none;-moz-appearance:none;appearance:none;text-align:left;cursor:pointer;padding:12px 13px;transition:border-color .18s ease,background .18s ease,box-shadow .18s ease,transform .18s ease;border-color:color-mix(in oklab,var(--color-border),transparent 10%);background:linear-gradient(180deg,color-mix(in oklab,var(--color-main-background),white 3%),color-mix(in oklab,var(--color-main-background),black 1%))}.version-notes-overlay__history-item[data-v-3771dea1]:hover{border-color:color-mix(in oklab,var(--brand),var(--color-border) 56%);background:color-mix(in oklab,var(--brand),transparent 95%);box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--brand),transparent 82%);transform:translateY(-1px)}.version-notes-overlay__history-item.is-active[data-v-3771dea1]{border-color:color-mix(in oklab,var(--brand),var(--color-border) 38%);background:linear-gradient(180deg,color-mix(in oklab,var(--brand),transparent 92%),color-mix(in oklab,var(--brand),transparent 96%));box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--brand),transparent 76%),0 10px 24px #0f172a24}.version-notes-overlay__history-top[data-v-3771dea1]{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:7px;font-size:11px;color:var(--color-text-light)}.version-notes-overlay__history-top span[data-v-3771dea1]{flex-shrink:0;white-space:nowrap}.version-notes-overlay__history-title[data-v-3771dea1]{font-size:14px;line-height:1.35;color:color-mix(in oklab,var(--color-text),white 6%)}.version-notes-overlay__history-item p[data-v-3771dea1]{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.version-notes-overlay__footer[data-v-3771dea1]{align-items:flex-end;justify-content:space-between;gap:16px;padding-top:14px;border-top:1px solid color-mix(in oklab,var(--color-border),transparent 18%)}.version-notes-overlay__footer-note[data-v-3771dea1]{max-width:52ch;display:flex;flex-direction:column;gap:12px;color:var(--color-text-light);line-height:1.5}.version-notes-overlay__apply-block[data-v-3771dea1]{display:flex;flex-direction:column;gap:12px;padding:16px 18px;border-radius:12px;background:color-mix(in oklab,var(--brand),transparent 94%);border:1px solid color-mix(in oklab,var(--brand),transparent 78%)}.version-notes-overlay__apply-row[data-v-3771dea1]{display:flex;align-items:end;justify-content:space-between;gap:14px}.version-notes-overlay__apply-text[data-v-3771dea1]{flex:1 1 auto;font-size:13px;line-height:1.6;color:var(--color-text-light)}.version-notes-overlay__apply-text strong[data-v-3771dea1]{display:block;margin-bottom:4px;font-size:13px;font-weight:700;color:var(--color-text)}.version-notes-overlay__apply-actions[data-v-3771dea1]{flex:0 0 auto;display:flex;align-items:center;gap:10px}.version-notes-overlay__reload-btn[data-v-3771dea1]{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 18px;border-radius:999px;border:1.5px solid color-mix(in oklab,var(--brand),transparent 48%);background:color-mix(in oklab,var(--brand),transparent 88%);color:var(--brand);font-family:inherit;font-size:13px;font-weight:700;cursor:pointer;transition:background .15s ease,border-color .15s ease,transform .1s ease;white-space:nowrap}.version-notes-overlay__reload-btn[data-v-3771dea1]:hover{background:color-mix(in oklab,var(--brand),transparent 78%);border-color:color-mix(in oklab,var(--brand),transparent 24%);transform:translateY(-1px)}.version-notes-overlay__reload-btn[data-v-3771dea1]:active{transform:translateY(0)}@media (max-width: 760px){.version-notes-overlay__body[data-v-3771dea1]{grid-template-columns:1fr}.version-notes-overlay__apply-row[data-v-3771dea1]{flex-direction:column;align-items:stretch}.version-notes-overlay__apply-actions[data-v-3771dea1]{justify-content:flex-start}.version-notes-overlay__history[data-v-3771dea1]{position:static}}@media (max-height: 760px){.version-notes-overlay[data-v-3771dea1]{height:min(820px,calc(100vh - var(--header-height, 50px) - 36px));max-height:calc(100vh - var(--header-height, 50px) - 36px)}.version-notes-overlay__header[data-v-3771dea1]{gap:12px;padding-bottom:8px}.version-notes-overlay__title h2[data-v-3771dea1]{font-size:clamp(28px,4vw,34px)}.version-notes-overlay__teaser[data-v-3771dea1]{font-size:16px}.version-notes-overlay__body[data-v-3771dea1]{gap:14px}.version-notes-overlay__section[data-v-3771dea1]{padding:15px 15px 14px}.version-notes-overlay__footer[data-v-3771dea1]{padding-top:10px}.version-notes-overlay__footer-note[data-v-3771dea1]{display:none}}@media (max-width: 640px){.version-notes-overlay__header[data-v-3771dea1],.version-notes-overlay__section-head[data-v-3771dea1],.version-notes-overlay__footer[data-v-3771dea1]{flex-direction:column;align-items:stretch}.version-notes-overlay__actions[data-v-3771dea1]{justify-content:space-between}}.balance-card[data-v-6f9b087b]{background:var(--card,#fff);border:1px solid var(--color-border,#e5e7eb);border-radius:calc(12px * var(--widget-space, 1));padding:var(--widget-pad, 12px);color:var(--fg,#0f172a);display:flex;flex-direction:column;gap:var(--widget-gap, 10px);font-size:calc(14px * var(--widget-scale, 1))}.header[data-v-6f9b087b]{display:flex;align-items:center;justify-content:space-between;gap:var(--widget-gap, 10px)}.header.compact[data-v-6f9b087b]{justify-content:center}.title-row[data-v-6f9b087b]{display:flex;align-items:center;gap:calc(8px * var(--widget-space, 1))}.title[data-v-6f9b087b]{font-weight:600;font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)))}.pill[data-v-6f9b087b]{display:inline-flex;align-items:center;gap:calc(4px * var(--widget-space, 1));padding:calc(2px * var(--widget-space, 1)) calc(8px * var(--widget-space, 1));font-size:calc(10px * var(--widget-scale, 1));border-radius:999px;background:color-mix(in srgb,var(--brand, #2563eb) 15%,white);color:var(--brand, #2563eb);text-transform:uppercase;letter-spacing:.06em}.index[data-v-6f9b087b]{text-align:right}.index.centered[data-v-6f9b087b]{text-align:center;width:100%}.index-badge[data-v-6f9b087b]{display:flex;align-items:center;gap:calc(8px * var(--widget-space, 1));padding:calc(6px * var(--widget-space, 1)) calc(8px * var(--widget-space, 1));border-radius:calc(12px * var(--widget-space, 1));background:color-mix(in oklab,var(--index-color, #2563eb) 14%,transparent);box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--index-color, #2563eb) 35%,transparent)}.index-badge__ring[data-v-6f9b087b]{width:calc(44px * var(--widget-scale, 1));height:calc(44px * var(--widget-scale, 1));border-radius:999px;background:conic-gradient(var(--index-color, #2563eb) var(--index-fill, 0%),color-mix(in srgb,var(--color-border, #e5e7eb),transparent 40%) 0);display:flex;align-items:center;justify-content:center;position:relative;flex-shrink:0}.index-badge__ring[data-v-6f9b087b]:after{content:"";position:absolute;inset:calc(5px * var(--widget-space, 1));border-radius:999px;background:var(--color-main-background, #fff);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--index-color, #2563eb) 22%,transparent)}.index-badge__value[data-v-6f9b087b]{position:relative;z-index:1;font-weight:700;font-size:calc(14px * var(--widget-scale, 1));font-variant-numeric:tabular-nums;color:var(--index-color, #2563eb)}.index-badge__meta[data-v-6f9b087b]{display:flex;flex-direction:column;gap:calc(2px * var(--widget-space, 1));text-align:left}.index-badge__label[data-v-6f9b087b]{font-size:calc(9px * var(--widget-scale, 1));text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.index-badge__range[data-v-6f9b087b]{font-size:calc(11px * var(--widget-scale, 1));color:var(--fg);white-space:nowrap}.trend[data-v-6f9b087b]{display:flex;align-items:center;gap:var(--widget-gap, 10px)}.trend-line[data-v-6f9b087b]{flex:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(calc(92px * var(--widget-scale, 1)),1fr));gap:calc(6px * var(--widget-space, 1));justify-content:flex-start}.trend-block[data-v-6f9b087b]{min-width:0;background:color-mix(in oklab,var(--color-primary,#2563eb),#e5e7eb 50%);border-radius:calc(8px * var(--widget-space, 1));padding:calc(4px * var(--widget-space, 1)) calc(5px * var(--widget-space, 1));display:flex;align-items:center;justify-content:center;position:relative;color:#fff;font-size:calc(11px * var(--widget-scale, 1));border:none;cursor:default}.trend-block.no-range[data-v-6f9b087b]{grid-column:span 1;padding:calc(4px * var(--widget-space, 1)) calc(5px * var(--widget-space, 1))}.trend-block.no-range.no-offset[data-v-6f9b087b]{grid-column:span 1;padding:calc(4px * var(--widget-space, 1))}.trend-block.no-offset[data-v-6f9b087b]{grid-column:span 1;padding:calc(4px * var(--widget-space, 1)) calc(6px * var(--widget-space, 1))}.trend-block.current[data-v-6f9b087b]{background:var(--color-primary,#2563eb);outline:1px solid color-mix(in oklab,var(--brand, var(--color-primary, #2563eb)),transparent 35%);outline-offset:1px;box-shadow:0 0 0 1px color-mix(in oklab,var(--brand, var(--color-primary, #2563eb)),transparent 72%),0 4px 12px color-mix(in oklab,var(--brand, var(--color-primary, #2563eb)),transparent 84%)}.trend-line-row[data-v-6f9b087b]{display:flex;align-items:center;justify-content:space-between;gap:calc(4px * var(--widget-space, 1));width:100%}.trend-value[data-v-6f9b087b]{font-weight:700;font-size:calc(13px * var(--widget-scale, 1));text-align:left;white-space:nowrap}.trend-range[data-v-6f9b087b]{flex:1;text-align:center;font-size:calc(10px * var(--widget-scale, 1));color:#e5e7eb;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trend-offset[data-v-6f9b087b]{min-width:calc(52px * var(--widget-scale, 1));text-align:right;font-size:calc(10px * var(--widget-scale, 1));color:#cbd5f5;white-space:nowrap}.trend-delta[data-v-6f9b087b]{font-size:calc(12px * var(--widget-scale, 1));color:var(--muted);display:flex;align-items:center;justify-content:space-between;gap:calc(8px * var(--widget-space, 1))}.trend-left[data-v-6f9b087b]{font-weight:700;color:var(--fg,#0f172a)}.trend-center[data-v-6f9b087b]{flex:1;text-align:center;font-size:calc(11px * var(--widget-scale, 1))}.trend-right[data-v-6f9b087b]{min-width:calc(56px * var(--widget-scale, 1));text-align:right;font-size:calc(11px * var(--widget-scale, 1))}.section-title[data-v-6f9b087b]{font-weight:600;font-size:calc(13px * var(--widget-scale, 1));margin-bottom:calc(4px * var(--widget-space, 1))}.messages ul[data-v-6f9b087b]{margin:0;padding-left:calc(18px * var(--widget-space, 1));color:var(--muted);font-size:calc(13px * var(--widget-scale, 1))}.messages li[data-v-6f9b087b]{margin-bottom:calc(2px * var(--widget-space, 1))}.messages li[data-v-6f9b087b]:last-child{margin-bottom:0}.config[data-v-6f9b087b]{font-size:calc(12px * var(--widget-scale, 1));color:var(--muted);display:grid;grid-template-columns:repeat(auto-fit,minmax(calc(140px * var(--widget-scale, 1)),1fr));gap:calc(6px * var(--widget-space, 1))}.empty[data-v-6f9b087b]{text-align:center;color:var(--muted);font-size:calc(13px * var(--widget-scale, 1))}.mix-card[data-v-ff363a60]{display:flex;flex-direction:column;gap:var(--widget-gap, 10px);--mix-label-width: clamp(34px, calc(52px * var(--widget-scale, 1)), 64px);--mix-gap: clamp(2px, calc(6px * var(--widget-space, 1)), 8px);--mix-row-gap: clamp(4px, calc(8px * var(--widget-space, 1)), 12px);--mix-cell-padding: clamp(2px, calc(6px * var(--widget-space, 1)), 8px);--mix-cell-font: clamp(9px, calc(12px * var(--widget-scale, 1)), 14px);--mix-label-font: clamp(9px, calc(12px * var(--widget-scale, 1)), 13px);--mix-column-font: clamp(9px, calc(12px * var(--widget-scale, 1)), 12px);--mix-cell-min: clamp(18px, calc(30px * var(--widget-scale, 1)), 36px);--mix-radius: clamp(4px, calc(8px * var(--widget-space, 1)), 10px)}.mix-card--dense[data-v-ff363a60]{gap:calc(6px * var(--widget-space, 1));--mix-label-width: clamp(28px, calc(40px * var(--widget-scale, 1)), 52px);--mix-gap: clamp(1px, calc(3px * var(--widget-space, 1)), 6px);--mix-row-gap: clamp(3px, calc(5px * var(--widget-space, 1)), 8px);--mix-cell-padding: clamp(1px, calc(3px * var(--widget-space, 1)), 5px);--mix-cell-font: clamp(8px, calc(10px * var(--widget-scale, 1)), 12px);--mix-label-font: clamp(8px, calc(10px * var(--widget-scale, 1)), 11px);--mix-column-font: clamp(8px, calc(9px * var(--widget-scale, 1)), 10px);--mix-cell-min: clamp(16px, calc(22px * var(--widget-scale, 1)), 30px);--mix-radius: clamp(3px, calc(5px * var(--widget-space, 1)), 8px)}.mix-card--no-header[data-v-ff363a60]{gap:calc(6px * var(--widget-space, 1))}.mix-header[data-v-ff363a60]{display:flex;justify-content:space-between;align-items:center}.mix-title[data-v-ff363a60]{font-weight:700;color:var(--fg);font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)))}.mix-subtitle[data-v-ff363a60]{font-size:calc(12px * var(--widget-scale, 1));color:var(--muted)}.mix-badge[data-v-ff363a60]{padding:calc(4px * var(--widget-space, 1)) calc(8px * var(--widget-space, 1));border-radius:calc(8px * var(--widget-space, 1));font-size:calc(12px * var(--widget-scale, 1));font-weight:600;background:color-mix(in oklab,var(--brand),transparent 80%);border:1px solid color-mix(in oklab,var(--brand),transparent 60%);color:var(--brand)}.mix-list[data-v-ff363a60]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:var(--mix-row-gap)}.mix-row[data-v-ff363a60]{display:grid;grid-template-columns:var(--mix-label-width) 1fr;gap:var(--mix-gap);align-items:center}.mix-label[data-v-ff363a60]{font-weight:600;color:var(--fg);font-size:var(--mix-label-font);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mix-columns[data-v-ff363a60]{display:grid;gap:var(--mix-gap);align-items:center;justify-content:start;font-size:var(--mix-column-font);color:var(--muted)}.mix-column-label[data-v-ff363a60]{text-align:center;white-space:nowrap;font-variant-numeric:tabular-nums;line-height:1.1;overflow:hidden;text-overflow:ellipsis}.mix-column-label--label[data-v-ff363a60]{text-align:left}.mix-column-label--current[data-v-ff363a60]{font-weight:700;color:var(--fg)}.mix-cells[data-v-ff363a60]{display:grid;gap:var(--mix-gap);align-items:stretch;justify-content:start;width:100%;min-width:0}.mix-cell[data-v-ff363a60]{position:relative;border-radius:var(--mix-radius);padding:var(--mix-cell-padding);background:linear-gradient(135deg,color-mix(in oklab,var(--mix-bg),var(--brand) 18%),color-mix(in oklab,var(--mix-bg),var(--card) 10%));color:var(--mix-fg, var(--fg));text-align:center;font-size:var(--mix-cell-font);border:1px solid color-mix(in oklab,var(--mix-bg),var(--brand) 22%);box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--mix-bg),transparent 55%);min-height:var(--mix-cell-min);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:2px}#opsdash.opsdash-theme-dark .mix-cell{background:linear-gradient(135deg,color-mix(in oklab,var(--mix-bg),#0b1220 38%),color-mix(in oklab,var(--mix-bg),#0b1220 56%));border-color:color-mix(in oklab,var(--mix-bg),#0b1220 28%);color:color-mix(in oklab,#f8fafc 92%,var(--mix-fg) 8%);box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--mix-bg),transparent 64%)}#opsdash.opsdash-theme-dark .mix-cell.mix-cell--mode-hybrid{box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--mix-bg),transparent 64%),inset 0 -3px color-mix(in oklab,var(--mix-accent),transparent 18%)}.mix-cell--current[data-v-ff363a60]{outline:1px solid color-mix(in oklab,var(--brand, var(--color-primary, #2563eb)),transparent 35%);outline-offset:1px;box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--mix-bg),transparent 55%),0 0 0 1px color-mix(in oklab,var(--brand, var(--color-primary, #2563eb)),transparent 72%),0 4px 12px color-mix(in oklab,var(--brand, var(--color-primary, #2563eb)),transparent 84%)}.mix-cell--current.mix-cell--mode-hybrid[data-v-ff363a60]{box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--mix-bg),transparent 55%),inset 0 -3px color-mix(in oklab,var(--mix-accent),transparent 30%),0 0 0 1px color-mix(in oklab,var(--brand, var(--color-primary, #2563eb)),transparent 72%),0 4px 12px color-mix(in oklab,var(--brand, var(--color-primary, #2563eb)),transparent 84%)}#opsdash.opsdash-theme-dark .mix-cell.mix-cell--current{box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--mix-bg),transparent 64%),0 0 0 1px color-mix(in oklab,var(--brand, var(--color-primary, #2563eb)),transparent 72%),0 4px 12px color-mix(in oklab,var(--brand, var(--color-primary, #2563eb)),transparent 84%)}#opsdash.opsdash-theme-dark .mix-cell.mix-cell--current.mix-cell--mode-hybrid{box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--mix-bg),transparent 64%),inset 0 -3px color-mix(in oklab,var(--mix-accent),transparent 18%),0 0 0 1px color-mix(in oklab,var(--brand, var(--color-primary, #2563eb)),transparent 72%),0 4px 12px color-mix(in oklab,var(--brand, var(--color-primary, #2563eb)),transparent 84%)}.mix-cell--mode-hybrid[data-v-ff363a60]{box-shadow:inset 0 -3px color-mix(in oklab,var(--mix-accent),transparent 30%)}.mix-cell--mode-share[data-v-ff363a60]{box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--mix-bg),transparent 40%)}.mix-card--square .mix-cell[data-v-ff363a60]{aspect-ratio:1 / 1;min-height:0}.mix-cell__value[data-v-ff363a60]{font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}.mix-cell__indicator[data-v-ff363a60]{font-size:clamp(8px,calc(9px * var(--widget-scale, 1)),11px);font-weight:600;line-height:1;font-variant-numeric:tabular-nums;opacity:.88;white-space:nowrap}.pill[data-v-ff363a60]{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;font-size:11px;border-radius:999px;background:color-mix(in srgb,var(--brand) 15%,white);color:var(--brand);text-transform:uppercase;letter-spacing:.05em}.hint[data-v-ff363a60]{font-size:12px;color:var(--muted)}.chart-widget[data-v-9d9b0ba6]{display:flex;flex-direction:column;gap:var(--widget-gap, 8px)}.chart-widget__header[data-v-9d9b0ba6]{display:flex;flex-direction:column;gap:calc(2px * var(--widget-space, 1))}.chart-widget__title[data-v-9d9b0ba6]{font-weight:600;font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)))}.chart-widget__subtitle[data-v-9d9b0ba6]{font-size:calc(12px * var(--widget-scale, 1));color:var(--muted)}.chart-widget__empty[data-v-9d9b0ba6]{padding:calc(12px * var(--widget-space, 1));border:1px dashed var(--line);border-radius:calc(10px * var(--widget-space, 1));color:var(--muted);text-align:center}.chart-widget__legend[data-v-9d9b0ba6]{list-style:none;padding:0;margin:0;display:grid;gap:calc(6px * var(--widget-space, 1));font-size:calc(12px * var(--widget-scale, 1))}.chart-widget__legend li[data-v-9d9b0ba6]{display:flex;align-items:center;gap:calc(6px * var(--widget-space, 1));border-radius:999px;padding:calc(2px * var(--widget-space, 1)) calc(6px * var(--widget-space, 1))}.chart-widget__legend .dot[data-v-9d9b0ba6]{width:calc(10px * var(--widget-space, 1));height:calc(10px * var(--widget-space, 1));border-radius:50%}.heatmap-lookback[data-v-9b113ef0]{display:flex;flex-direction:column;gap:calc(10px * var(--widget-space, 1))}.heatmap-lookback__stacked[data-v-9b113ef0]{display:grid;gap:calc(12px * var(--widget-space, 1))}.heatmap-lookback__panel[data-v-9b113ef0]{display:grid;gap:calc(6px * var(--widget-space, 1))}.heatmap-lookback__label[data-v-9b113ef0]{display:flex;align-items:center;gap:calc(6px * var(--widget-space, 1));font-size:calc(12px * var(--widget-scale, 1));color:var(--muted)}.heatmap-lookback__label .dot[data-v-9b113ef0],.heatmap-lookback__legend-weeks .dot[data-v-9b113ef0]{width:calc(10px * var(--widget-space, 1));height:calc(10px * var(--widget-space, 1));border-radius:50%;flex:0 0 auto}.heatmap-lookback__legend[data-v-9b113ef0]{display:grid;gap:calc(8px * var(--widget-space, 1));font-size:calc(11px * var(--widget-scale, 1));color:var(--muted)}.heatmap-lookback__legend-scale[data-v-9b113ef0]{display:flex;align-items:center;gap:calc(6px * var(--widget-space, 1))}.heatmap-lookback__legend-bar[data-v-9b113ef0]{flex:1;height:calc(8px * var(--widget-space, 1));border-radius:999px;background:linear-gradient(90deg,var(--heatmap-low),var(--heatmap-high))}.heatmap-lookback__legend-meta[data-v-9b113ef0]{font-size:calc(10px * var(--widget-scale, 1));color:var(--muted)}.heatmap-lookback__legend-weeks[data-v-9b113ef0]{list-style:none;padding:0;margin:0;display:grid;gap:calc(6px * var(--widget-space, 1))}.heatmap-lookback__legend-weeks li[data-v-9b113ef0]{display:flex;align-items:center;gap:calc(6px * var(--widget-space, 1))}.chart-widget[data-v-ca4a5fd8]{display:flex;flex-direction:column;gap:var(--widget-gap, 8px)}.chart-widget__header[data-v-ca4a5fd8]{display:flex;flex-direction:column;gap:calc(2px * var(--widget-space, 1))}.chart-widget__title[data-v-ca4a5fd8]{font-weight:600;font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)))}.chart-widget__subtitle[data-v-ca4a5fd8]{font-size:calc(12px * var(--widget-scale, 1));color:var(--muted)}.chart-widget__empty[data-v-ca4a5fd8]{padding:calc(12px * var(--widget-space, 1));border:1px dashed var(--line);border-radius:calc(10px * var(--widget-space, 1));color:var(--muted);text-align:center}.chart-widget__hint[data-v-ca4a5fd8],.chart-widget__meta[data-v-ca4a5fd8]{font-size:calc(11px * var(--widget-scale, 1));color:var(--muted)}.chart-widget--hod[data-v-ca4a5fd8]{--heatmap-low: color-mix(in srgb, #d8d2c4 28%, var(--card, #ffffff));--heatmap-high: color-mix(in srgb, #4f6477 88%, var(--card, #ffffff))}.chart-widget[data-v-08a193fb]{display:flex;flex-direction:column;gap:var(--widget-gap, 8px)}.chart-widget__header[data-v-08a193fb]{display:flex;flex-direction:column;gap:calc(2px * var(--widget-space, 1))}.chart-widget__title[data-v-08a193fb]{font-weight:600;font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)))}.chart-widget__subtitle[data-v-08a193fb]{font-size:calc(12px * var(--widget-scale, 1));color:var(--muted)}.chart-widget__empty[data-v-08a193fb]{padding:calc(12px * var(--widget-space, 1));border:1px dashed var(--line);border-radius:calc(10px * var(--widget-space, 1));color:var(--muted);text-align:center}.chart-widget__legend[data-v-08a193fb]{list-style:none;padding:0;margin:0;display:grid;gap:calc(6px * var(--widget-space, 1));font-size:calc(12px * var(--widget-scale, 1))}.chart-widget__legend li[data-v-08a193fb]{display:flex;align-items:center;gap:calc(6px * var(--widget-space, 1));border-radius:999px;padding:calc(2px * var(--widget-space, 1)) calc(6px * var(--widget-space, 1))}.chart-widget__legend .dot[data-v-08a193fb]{width:calc(10px * var(--widget-space, 1));height:calc(10px * var(--widget-space, 1));border-radius:50%}.chart[data-v-d6565e06]{cursor:pointer}.chart-widget[data-v-df59c238]{display:flex;flex-direction:column;gap:var(--widget-gap, 8px)}.chart-widget__header[data-v-df59c238]{display:flex;flex-direction:column;gap:calc(2px * var(--widget-space, 1))}.chart-widget__title[data-v-df59c238]{font-weight:600;font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)))}.chart-widget__subtitle[data-v-df59c238]{font-size:calc(12px * var(--widget-scale, 1));color:var(--muted)}.chart-widget__empty[data-v-df59c238]{padding:calc(12px * var(--widget-space, 1));border:1px dashed var(--line);border-radius:calc(10px * var(--widget-space, 1));color:var(--muted);text-align:center}.chart-widget__legend[data-v-df59c238]{list-style:none;padding:0;margin:0;display:grid;gap:calc(6px * var(--widget-space, 1));font-size:calc(12px * var(--widget-scale, 1))}.chart-widget__legend li[data-v-df59c238]{display:flex;align-items:center;gap:calc(6px * var(--widget-space, 1));border-radius:999px;padding:calc(2px * var(--widget-space, 1)) calc(6px * var(--widget-space, 1));transition:color .15s ease,background .15s ease;cursor:pointer}.chart-widget__legend li.hovered[data-v-df59c238]{color:var(--brand);background:color-mix(in oklab,var(--brand),transparent 90%)}.chart-widget__legend .dot[data-v-df59c238]{width:calc(10px * var(--widget-space, 1));height:calc(10px * var(--widget-space, 1));border-radius:50%}.chart-widget__legend .val[data-v-df59c238]{margin-left:auto;color:var(--muted)}.chart[data-v-aef1be0d]{cursor:pointer}.chart-widget[data-v-2ce5d838]{display:flex;flex-direction:column;gap:var(--widget-gap, 8px)}.chart-widget__header[data-v-2ce5d838]{display:flex;flex-direction:column;gap:calc(2px * var(--widget-space, 1))}.chart-widget__title[data-v-2ce5d838]{font-weight:600;font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)))}.chart-widget__subtitle[data-v-2ce5d838]{font-size:calc(12px * var(--widget-scale, 1));color:var(--muted)}.chart-widget__empty[data-v-2ce5d838]{padding:calc(12px * var(--widget-space, 1));border:1px dashed var(--line);border-radius:calc(10px * var(--widget-space, 1));color:var(--muted);text-align:center}.chart-widget__legend[data-v-2ce5d838]{list-style:none;padding:0;margin:0;display:grid;gap:calc(6px * var(--widget-space, 1));font-size:calc(12px * var(--widget-scale, 1))}.chart-widget__legend li[data-v-2ce5d838]{display:flex;align-items:center;gap:calc(6px * var(--widget-space, 1));border-radius:999px;padding:calc(2px * var(--widget-space, 1)) calc(6px * var(--widget-space, 1));transition:color .15s ease,background .15s ease;cursor:pointer}.chart-widget__legend li.hovered[data-v-2ce5d838]{color:var(--brand);background:color-mix(in oklab,var(--brand),transparent 90%)}.chart-widget__legend .dot[data-v-2ce5d838]{width:calc(10px * var(--widget-space, 1));height:calc(10px * var(--widget-space, 1));border-radius:50%}table[data-v-bade1032]{width:100%;border-collapse:collapse;font-size:13px}thead th[data-v-bade1032]{text-align:left;padding:6px 8px;font-weight:600;color:var(--muted);border-bottom:1px solid var(--line)}thead th.num[data-v-bade1032]{text-align:right}tbody td[data-v-bade1032]{padding:6px 8px;border-top:1px solid var(--line);vertical-align:top}tbody tr:not(.group-row):not(.empty-row):hover td[data-v-bade1032]{background:color-mix(in oklab,var(--brand) 12%,var(--card) 88%)}.col-w-42[data-v-bade1032]{width:42%}.col-w-12[data-v-bade1032]{width:12%}.col-w-14[data-v-bade1032]{width:14%}.col-w-18[data-v-bade1032]{width:18%}.group-row td[data-v-bade1032]{padding-top:12px;padding-bottom:8px;background:color-mix(in oklab,var(--muted) 12%,var(--card) 88%)}.group-row:hover td[data-v-bade1032]{background:color-mix(in oklab,var(--brand) 12%,var(--card) 88%)}.group-header[data-v-bade1032]{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;font-size:12px}.group-main[data-v-bade1032]{display:flex;flex-direction:column;gap:6px;min-width:0;flex:1}.group-label[data-v-bade1032]{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--fg)}.group-label .dot[data-v-bade1032]{width:10px;height:10px;border-radius:50%;background:var(--brand);box-shadow:0 0 0 1px color-mix(in srgb,var(--fg) 12%,transparent)}.group-progress[data-v-bade1032]{position:relative;height:7px;max-width:320px;background:color-mix(in srgb,var(--muted) 22%,transparent);border-radius:999px;overflow:visible}.group-progress__bar[data-v-bade1032]{height:100%;border-radius:999px;background:var(--brand);transition:width .2s ease}.group-progress__today[data-v-bade1032]{position:absolute;top:-2px;height:11px;border-radius:999px;opacity:.98;box-shadow:0 0 0 1px color-mix(in srgb,white 38%,transparent),0 0 8px color-mix(in srgb,white 42%,transparent),0 0 14px color-mix(in srgb,var(--brand) 34%,transparent);filter:saturate(1.2) brightness(1.06)}.group-meta[data-v-bade1032]{display:flex;align-items:center;gap:8px;flex-wrap:wrap;color:var(--muted)}.group-meta .summary[data-v-bade1032]{font-size:12px}.group-meta .summary-percent[data-v-bade1032]{font-variant-numeric:tabular-nums;color:var(--fg);font-weight:600}.badge[data-v-bade1032]{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.status-on[data-v-bade1032]{background:color-mix(in srgb,var(--brand) 20%,white);color:var(--brand)}.status-risk[data-v-bade1032]{background:color-mix(in srgb,#f97316 20%,white);color:#f97316}.status-behind[data-v-bade1032]{background:color-mix(in srgb,#ef4444 20%,white);color:#ef4444}.status-done[data-v-bade1032]{background:color-mix(in srgb,var(--pos) 25%,white);color:var(--pos)}.status-none[data-v-bade1032]{background:color-mix(in srgb,var(--muted) 12%,white);color:var(--muted)}.cell[data-v-bade1032]{display:flex;flex-direction:column;gap:4px}.row-name[data-v-bade1032]{font-weight:600;color:var(--fg)}.progress[data-v-bade1032]{position:relative;height:6px;background:color-mix(in srgb,var(--muted) 22%,transparent);border-radius:999px;overflow:visible}.progress-bar[data-v-bade1032]{height:100%;border-radius:999px;background:var(--brand);transition:width .2s ease}.progress-today[data-v-bade1032]{position:absolute;top:-2px;height:10px;border-radius:999px;opacity:.98;box-shadow:0 0 0 1px color-mix(in srgb,white 38%,transparent),0 0 8px color-mix(in srgb,white 42%,transparent),0 0 14px color-mix(in srgb,var(--brand) 34%,transparent);filter:saturate(1.2) brightness(1.08)}.num[data-v-bade1032]{text-align:right;font-variant-numeric:tabular-nums;color:var(--fg)}.hint[data-v-bade1032]{color:var(--muted);font-size:11px}.delta[data-v-bade1032]{font-weight:600}.delta.pos[data-v-bade1032]{color:var(--pos)}.delta.neg[data-v-bade1032]{color:var(--neg)}.empty-row td.empty[data-v-bade1032]{font-style:italic;color:var(--muted);text-align:center}.table-widget[data-v-2bdf226f]{display:flex;flex-direction:column;gap:var(--widget-gap, 8px)}.table-widget__header[data-v-2bdf226f]{display:flex;flex-direction:column;gap:calc(2px * var(--widget-space, 1))}.table-widget__title[data-v-2bdf226f]{font-weight:600;font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)))}.table-widget__subtitle[data-v-2bdf226f]{font-size:calc(12px * var(--widget-scale, 1));color:var(--muted)}.table-widget__context[data-v-2bdf226f]{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.table-widget__badge[data-v-2bdf226f]{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;font-size:11px;font-weight:700;letter-spacing:.02em;background:color-mix(in srgb,var(--brand) 14%,var(--card) 86%);color:var(--brand)}.table-widget__context-text[data-v-2bdf226f]{font-size:12px;color:var(--muted)}.table-widget__empty[data-v-2bdf226f]{padding:calc(12px * var(--widget-space, 1));border:1px dashed var(--line);border-radius:calc(10px * var(--widget-space, 1));color:var(--muted);text-align:center}.calendar-stats[data-v-3cc8996b]{display:flex;flex-direction:column;gap:calc(12px * var(--widget-space, 1))}.calendar-stats__header[data-v-3cc8996b]{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.calendar-stats__title[data-v-3cc8996b]{font-weight:700;font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)))}.calendar-stats__subtitle[data-v-3cc8996b],.calendar-stats__scope[data-v-3cc8996b],.calendar-stats__hint[data-v-3cc8996b],.calendar-stats__state[data-v-3cc8996b]{color:var(--muted);font-size:calc(13px * var(--widget-scale, 1))}.calendar-stats__scope[data-v-3cc8996b]{text-align:right}.calendar-stats__rows[data-v-3cc8996b]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:calc(8px * var(--widget-space, 1))}.calendar-stats__row[data-v-3cc8996b]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:calc(10px * var(--widget-space, 1));padding:calc(10px * var(--widget-space, 1)) calc(12px * var(--widget-space, 1));background:var(--card)}.calendar-stats__label[data-v-3cc8996b]{font-weight:600;font-size:calc(14px * var(--widget-scale, 1))}.calendar-stats__hint[data-v-3cc8996b]{margin-top:2px}.calendar-stats__value[data-v-3cc8996b]{font-weight:800;font-size:calc(22px * var(--widget-scale, 1));line-height:1;white-space:nowrap}.dayoff-card[data-v-9c0ed5c7]{display:flex;flex-direction:column;gap:var(--widget-gap, 10px);container-type:inline-size}.dayoff-card__header[data-v-9c0ed5c7]{display:flex;align-items:center;justify-content:space-between;font-weight:600;color:var(--fg);font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)))}.dayoff-heatmap[data-v-9c0ed5c7]{display:grid;gap:var(--widget-gap, 8px)}.dayoff-heatmap--row[data-v-9c0ed5c7]{grid-template-columns:repeat(var(--dayoff-tile-count, 1),minmax(0,1fr))}.dayoff-heatmap--stacked[data-v-9c0ed5c7]{grid-template-columns:minmax(0,1fr)}.dayoff-tile[data-v-9c0ed5c7]{border-radius:calc(10px * var(--widget-space, 1));padding:calc(10px * var(--widget-space, 1)) calc(8px * var(--widget-space, 1));display:flex;flex-direction:column;gap:calc(4px * var(--widget-space, 1));text-align:center;background:var(--tile-bg, color-mix(in oklab, var(--muted), transparent 85%));color:var(--tile-fg, var(--fg));transition:transform .2s ease,background .2s ease}.dayoff-tile--current[data-v-9c0ed5c7]{outline:1px solid color-mix(in oklab,var(--brand, var(--color-primary, #2563eb)),transparent 35%);outline-offset:1px;box-shadow:0 0 0 1px color-mix(in oklab,var(--brand, var(--color-primary, #2563eb)),transparent 72%),0 4px 12px color-mix(in oklab,var(--brand, var(--color-primary, #2563eb)),transparent 84%)}.dayoff-tile__label[data-v-9c0ed5c7]{font-size:calc(11px * var(--widget-scale, 1));font-weight:600}.dayoff-tile__value[data-v-9c0ed5c7]{font-size:calc(14px * var(--widget-scale, 1));font-weight:700;font-variant-numeric:tabular-nums}.dayoff-tile__meta[data-v-9c0ed5c7]{font-size:calc(10px * var(--widget-scale, 1));color:color-mix(in oklab,currentColor,transparent 55%);font-variant-numeric:tabular-nums}.pill[data-v-9c0ed5c7]{display:inline-flex;align-items:center;gap:calc(4px * var(--widget-space, 1));padding:calc(2px * var(--widget-space, 1)) calc(8px * var(--widget-space, 1));font-size:calc(11px * var(--widget-scale, 1));border-radius:999px;background:color-mix(in srgb,var(--brand) 15%,white);color:var(--brand);text-transform:uppercase;letter-spacing:.05em}.hint[data-v-9c0ed5c7]{font-size:calc(12px * var(--widget-scale, 1));color:var(--muted)}.deck-panel[data-v-647b107d]{display:flex;flex-direction:column;gap:calc(16px * var(--widget-space, 1));height:100%;min-height:0;font-size:var(--widget-font, 14px)}.deck-panel__header[data-v-647b107d]{display:flex;align-items:center;justify-content:space-between}.deck-panel__title[data-v-647b107d]{font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)));font-weight:600}.deck-panel__subtitle[data-v-647b107d]{font-size:calc(14px * var(--widget-scale, 1));color:var(--muted)}.deck-panel__actions[data-v-647b107d]{display:flex;align-items:center;gap:calc(8px * var(--widget-space, 1))}.deck-panel__count[data-v-647b107d]{font-size:calc(14px * var(--widget-scale, 1));background:color-mix(in oklab,var(--card),var(--soft) 30%);border:1px solid var(--line);padding:calc(2px * var(--widget-space, 1)) calc(8px * var(--widget-space, 1));border-radius:calc(12px * var(--widget-space, 1))}.deck-panel__refresh[data-v-647b107d]{border:1px solid var(--brand);background:transparent;color:var(--brand);border-radius:999px;padding:calc(4px * var(--widget-space, 1)) calc(12px * var(--widget-space, 1));font-size:calc(14px * var(--widget-scale, 1));cursor:pointer}.deck-panel__create[data-v-647b107d],.deck-create__submit[data-v-647b107d]{border:1px solid var(--brand);border-radius:7px;padding:6px 10px;background:var(--brand);color:var(--brand-fg, #fff);cursor:pointer;font-weight:600}.deck-create[data-v-647b107d]{display:grid;grid-template-columns:minmax(180px,2fr) minmax(130px,1fr) minmax(130px,1fr) auto;gap:8px;align-items:end;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--soft)}.deck-create__field[data-v-647b107d]{display:grid;gap:4px;color:var(--muted);font-size:12px}.deck-create input[data-v-647b107d],.deck-create select[data-v-647b107d]{min-width:0;border:1px solid var(--line);border-radius:6px;padding:7px 8px;background:var(--card);color:var(--fg)}.deck-create__error[data-v-647b107d]{grid-column:1 / -1;margin:0;color:var(--color-error-text);font-size:12px}@media (max-width: 720px){.deck-create[data-v-647b107d]{grid-template-columns:1fr}.deck-create__submit[data-v-647b107d]{justify-self:start}}.deck-panel__refresh[data-v-647b107d]:disabled{opacity:.6;cursor:default}.deck-panel__link[data-v-647b107d]{font-size:calc(14px * var(--widget-scale, 1));text-decoration:none;color:var(--fg)}.deck-panel__loading[data-v-647b107d]{display:flex;align-items:center;gap:calc(8px * var(--widget-space, 1));color:var(--muted)}.deck-panel__filters[data-v-647b107d]{display:flex;gap:calc(8px * var(--widget-space, 1));flex-wrap:wrap}.deck-panel--compact[data-v-647b107d]{gap:calc(10px * var(--widget-space, 1))}.deck-panel--compact .deck-panel__filters[data-v-647b107d]{gap:calc(6px * var(--widget-space, 1))}.deck-panel--compact .deck-card-list[data-v-647b107d]{gap:calc(10px * var(--widget-space, 1))}.deck-panel--compact .deck-card[data-v-647b107d]{padding:calc(6px * var(--widget-space, 1)) calc(8px * var(--widget-space, 1));gap:0;border-radius:calc(8px * var(--widget-space, 1))}.deck-panel--compact .deck-card__row[data-v-647b107d]{display:flex;align-items:center;gap:calc(8px * var(--widget-space, 1));white-space:nowrap;overflow-x:auto;padding-bottom:2px}.deck-panel--compact .deck-card__row[data-v-647b107d]::-webkit-scrollbar{height:6px}.deck-panel--compact .deck-card__row[data-v-647b107d]::-webkit-scrollbar-thumb{background:color-mix(in oklab,var(--line),transparent 30%);border-radius:999px}.deck-panel--compact .deck-card__status-row[data-v-647b107d]{font-size:calc(12px * var(--widget-scale, 1));gap:calc(6px * var(--widget-space, 1))}.deck-panel--compact .deck-card__status[data-v-647b107d]{font-size:calc(11px * var(--widget-scale, 1));letter-spacing:.04em}.deck-panel--compact .deck-card__time[data-v-647b107d]{font-size:calc(11px * var(--widget-scale, 1));color:var(--muted)}.deck-panel--compact .deck-card__title[data-v-647b107d]{font-size:calc(13px * var(--widget-scale, 1));font-weight:600}.deck-panel--compact .deck-card__meta[data-v-647b107d]{font-size:calc(11px * var(--widget-scale, 1));gap:calc(6px * var(--widget-space, 1))}.deck-panel--compact .deck-card__board[data-v-647b107d]{padding:calc(1px * var(--widget-space, 1)) calc(6px * var(--widget-space, 1));font-size:calc(10px * var(--widget-scale, 1))}.deck-panel--compact .deck-card__labels[data-v-647b107d]{gap:calc(4px * var(--widget-space, 1));flex-wrap:nowrap}.deck-panel--compact .deck-card__label[data-v-647b107d]{font-size:calc(10px * var(--widget-scale, 1));padding:calc(1px * var(--widget-space, 1)) calc(6px * var(--widget-space, 1))}.deck-panel--compact .deck-card__assignees[data-v-647b107d]{font-size:calc(11px * var(--widget-scale, 1));gap:calc(4px * var(--widget-space, 1));flex-wrap:nowrap}.deck-panel__body[data-v-647b107d]{flex:1;min-height:0;overflow:auto;padding-right:calc(4px * var(--widget-space, 1))}.deck-panel__show-all[data-v-647b107d]{margin-top:calc(10px * var(--widget-space, 1));border:0;background:transparent;color:var(--brand);font:inherit;font-weight:600;cursor:pointer;padding:2px 0}.deck-filter-btn[data-v-647b107d]{border:1px solid var(--line);background:var(--card);color:var(--fg);border-radius:999px;padding:calc(3px * var(--widget-space, 1)) calc(14px * var(--widget-space, 1));font-size:calc(13px * var(--widget-scale, 1));cursor:pointer;display:inline-flex;align-items:center;gap:calc(6px * var(--widget-space, 1))}.deck-filter-label[data-v-647b107d]{display:inline-flex;align-items:center;gap:calc(6px * var(--widget-space, 1));min-width:0}.deck-filter-label-main[data-v-647b107d]{white-space:nowrap}.deck-filter-label-context[data-v-647b107d]{display:inline-flex;align-items:center;gap:calc(4px * var(--widget-space, 1));color:var(--muted);font-size:calc(11px * var(--widget-scale, 1));white-space:nowrap;max-width:170px;overflow:hidden;text-overflow:ellipsis}.deck-filter-board-dot[data-v-647b107d]{width:calc(8px * var(--widget-space, 1));height:calc(8px * var(--widget-space, 1));border-radius:999px;display:inline-block;border:1px solid color-mix(in oklab,var(--line),transparent 35%);flex:0 0 auto}.deck-filter-btn.is-draggable[data-v-647b107d]{cursor:grab}.deck-filter-btn.is-draggable[data-v-647b107d]:active{cursor:grabbing}.deck-filter-btn.active[data-v-647b107d]{border-color:var(--brand);color:var(--brand)}.deck-filter-count[data-v-647b107d]{font-size:calc(11px * var(--widget-scale, 1));opacity:.7}.deck-filter-btn[data-v-647b107d]:disabled{opacity:.5;cursor:not-allowed}.deck-panel__error[data-v-647b107d]{padding:calc(12px * var(--widget-space, 1));border-radius:calc(8px * var(--widget-space, 1));background:var(--color-error-hover);color:var(--color-error-text)}.deck-card-list[data-v-647b107d]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:calc(16px * var(--widget-space, 1))}.deck-card[data-v-647b107d]{border:1px solid var(--line);border-radius:calc(12px * var(--widget-space, 1));padding:calc(14px * var(--widget-space, 1));background:var(--card);display:flex;flex-direction:column;gap:calc(6px * var(--widget-space, 1))}.deck-card__status-row[data-v-647b107d]{display:flex;align-items:center;gap:calc(8px * var(--widget-space, 1));font-size:calc(14px * var(--widget-scale, 1));color:var(--muted)}.deck-card__status[data-v-647b107d]{font-weight:600;text-transform:uppercase;font-size:calc(12px * var(--widget-scale, 1));letter-spacing:.05em}.deck-card__status.done[data-v-647b107d]{color:var(--color-success)}.deck-card__status.archived[data-v-647b107d]{color:var(--muted)}.deck-card__title[data-v-647b107d]{font-size:calc(16px * var(--widget-scale, 1));font-weight:600;color:var(--fg)}.deck-card__meta[data-v-647b107d]{display:flex;align-items:center;gap:calc(8px * var(--widget-space, 1));font-size:calc(13px * var(--widget-scale, 1))}.deck-card__board[data-v-647b107d]{border:2px solid var(--line);padding:calc(2px * var(--widget-space, 1)) calc(8px * var(--widget-space, 1));border-radius:999px;text-transform:uppercase;font-size:calc(11px * var(--widget-scale, 1))}.deck-card__stack[data-v-647b107d]{color:var(--muted)}.deck-card__labels[data-v-647b107d]{display:flex;gap:calc(6px * var(--widget-space, 1));flex-wrap:wrap}.deck-card__label[data-v-647b107d]{color:#fff;font-size:calc(11px * var(--widget-scale, 1));padding:calc(2px * var(--widget-space, 1)) calc(7px * var(--widget-space, 1));border-radius:999px}.deck-card__assignees[data-v-647b107d]{display:flex;flex-wrap:wrap;gap:calc(6px * var(--widget-space, 1));font-size:calc(12px * var(--widget-scale, 1))}.deck-card__assignees-label[data-v-647b107d]{color:var(--muted)}.deck-card__assignee[data-v-647b107d]{font-weight:500}.deck-stats-widget[data-v-cb54adec]{display:flex;flex-direction:column;gap:calc(12px * var(--widget-space, 1))}.deck-stats-widget__header[data-v-cb54adec]{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.deck-stats-widget__title[data-v-cb54adec]{font-weight:700;font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)))}.deck-stats-widget__subtitle[data-v-cb54adec],.deck-stats-widget__scope[data-v-cb54adec],.deck-stats-widget__hint[data-v-cb54adec],.deck-stats-widget__state[data-v-cb54adec]{color:var(--muted);font-size:calc(13px * var(--widget-scale, 1))}.deck-stats-widget__scope[data-v-cb54adec]{text-align:right}.deck-stats-widget__state--error[data-v-cb54adec]{background:var(--color-error-hover);color:var(--color-error-text);border-radius:calc(8px * var(--widget-space, 1));padding:calc(8px * var(--widget-space, 1)) calc(12px * var(--widget-space, 1))}.deck-stats-widget__rows[data-v-cb54adec]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:calc(8px * var(--widget-space, 1))}.deck-stats-widget__row[data-v-cb54adec]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:calc(10px * var(--widget-space, 1));padding:calc(10px * var(--widget-space, 1)) calc(12px * var(--widget-space, 1));background:var(--card)}.deck-stats-widget__meta[data-v-cb54adec]{min-width:0}.deck-stats-widget__label[data-v-cb54adec]{font-weight:600;font-size:calc(14px * var(--widget-scale, 1))}.deck-stats-widget__hint[data-v-cb54adec]{margin-top:2px}.deck-stats-widget__value[data-v-cb54adec]{font-weight:800;font-size:calc(22px * var(--widget-scale, 1));line-height:1}.targets-card[data-v-6aab0d1d]{display:flex;flex-direction:column;gap:var(--widget-gap, 8px);font-size:var(--widget-font, 14px)}.targets-card[data-v-6aab0d1d]{position:relative;overflow:hidden;isolation:isolate}.targets-card[data-v-6aab0d1d]>*{position:relative;z-index:1}.targets-fireframe[data-v-6aab0d1d]{position:absolute;top:2px;right:2px;bottom:2px;left:2px;border-radius:inherit;pointer-events:none;z-index:0;overflow:hidden;opacity:.96}.targets-fireframe[data-v-6aab0d1d]:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;box-shadow:inset 0 0 0 1px color-mix(in srgb,#fb923c 58%,rgba(255,255,255,.14)),inset 0 0 18px color-mix(in srgb,#f97316 18%,transparent),inset 0 0 42px color-mix(in srgb,#dc2626 12%,transparent)}.targets-fireframe[data-v-6aab0d1d]:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;background:radial-gradient(34% 14% at 12% 0%,color-mix(in srgb,#fdba74 58%,transparent),transparent 70%),radial-gradient(30% 12% at 34% 1%,color-mix(in srgb,#fb923c 52%,transparent),transparent 72%),radial-gradient(26% 11% at 58% 0%,color-mix(in srgb,#f97316 48%,transparent),transparent 70%),radial-gradient(24% 12% at 82% 1%,color-mix(in srgb,#fb7185 30%,transparent),transparent 74%),radial-gradient(12% 24% at 0% 18%,color-mix(in srgb,#f97316 38%,transparent),transparent 76%),radial-gradient(12% 24% at 100% 20%,color-mix(in srgb,#fb923c 34%,transparent),transparent 78%);filter:blur(9px) saturate(1.16);opacity:.82}.targets-header[data-v-6aab0d1d]{display:flex;justify-content:space-between;align-items:center}.targets-header__title[data-v-6aab0d1d]{display:flex;align-items:center;gap:calc(6px * var(--widget-space, 1))}.targets-header strong[data-v-6aab0d1d]{font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)))}.targets-main[data-v-6aab0d1d]{display:flex;flex-direction:column;gap:calc(4px * var(--widget-space, 1));font-size:calc(13px * var(--widget-scale, 1))}.targets-main .line[data-v-6aab0d1d]{display:flex;flex-wrap:wrap;gap:calc(6px * var(--widget-space, 1))}.targets-main .line.forecast[data-v-6aab0d1d]{flex-direction:column;gap:calc(2px * var(--widget-space, 1))}.targets-main .line .value[data-v-6aab0d1d]{display:flex;gap:calc(6px * var(--widget-space, 1));align-items:center}.targets-hustle[data-v-6aab0d1d]{position:absolute;top:calc(8px * var(--widget-space, 1));right:calc(8px * var(--widget-space, 1));z-index:2}.targets-hustle__badge[data-v-6aab0d1d]{display:grid;place-items:center;padding:calc(8px * var(--widget-space, 1));border-radius:calc(20px * var(--widget-space, 1));background:color-mix(in srgb,var(--bg) 90%,transparent);border:1px solid color-mix(in srgb,#f97316 32%,var(--line));box-shadow:0 10px 26px color-mix(in srgb,#020617 28%,transparent),inset 0 0 0 1px color-mix(in srgb,#fb923c 10%,transparent)}.targets-hustle__orb[data-v-6aab0d1d]{position:relative;width:200px;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 35% 30%,color-mix(in srgb,#fb923c 24%,transparent),transparent 45%),linear-gradient(145deg,color-mix(in srgb,#f97316 18%,transparent),color-mix(in srgb,var(--brand) 12%,transparent));border:1px solid color-mix(in srgb,#f97316 34%,var(--line));box-shadow:inset 0 0 0 1px color-mix(in srgb,#fb923c 12%,transparent),0 0 24px color-mix(in srgb,#f97316 10%,transparent);overflow:hidden}.targets-hustle__orb[data-v-6aab0d1d]:after{content:"";position:absolute;top:12%;right:12%;bottom:12%;left:12%;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,#fb923c 18%,transparent) 0%,transparent 72%);opacity:.45;filter:blur(4px);pointer-events:none;transition:opacity .34s ease,transform .34s ease}.targets-hustle__scene[data-v-6aab0d1d]{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;opacity:0;transform:scale(.92);transition:opacity .34s ease,transform .34s ease,filter .34s ease;filter:saturate(.82) brightness(.88)}.targets-hustle__scene[data-v-6aab0d1d]:after{content:"";position:absolute;top:16%;right:16%;bottom:16%;left:16%;border-radius:50%;background:radial-gradient(circle,color-mix(in srgb,#fb923c 24%,transparent) 0%,transparent 74%);opacity:0;transform:scale(.86);filter:blur(4px);transition:opacity .34s ease,transform .34s ease;pointer-events:none}.targets-hustle__scene.is-active[data-v-6aab0d1d]{opacity:1;transform:scale(1);filter:saturate(1.08) brightness(1.06)}.targets-hustle__scene.is-active[data-v-6aab0d1d]:after{opacity:.82;transform:scale(1.04)}.targets-hustle__icon[data-v-6aab0d1d]{width:100%;max-width:200px;height:auto;color:color-mix(in srgb,#fff 22%,#f97316 78%);transition:filter .34s ease,opacity .34s ease,transform .34s ease;opacity:.78;filter:drop-shadow(0 0 0 transparent)}.targets-hustle__icon[data-v-6aab0d1d] svg{width:100%;height:auto;stroke-width:1.5}.targets-hustle__scene.is-active .targets-hustle__icon[data-v-6aab0d1d]{opacity:1;transform:scale(1.02);filter:drop-shadow(0 0 8px color-mix(in srgb,#fb923c 45%,transparent)) drop-shadow(0 0 14px color-mix(in srgb,#f97316 20%,transparent))}.targets-badges[data-v-6aab0d1d]{display:flex;flex-wrap:wrap;gap:calc(6px * var(--widget-space, 1))}.targets-categories[data-v-6aab0d1d]{display:flex;flex-direction:column;gap:calc(10px * var(--widget-space, 1));padding-top:calc(6px * var(--widget-space, 1));border-top:1px solid var(--line)}.category[data-v-6aab0d1d]{display:flex;flex-direction:column;gap:calc(6px * var(--widget-space, 1));font-size:calc(12px * var(--widget-scale, 1));padding:calc(4px * var(--widget-space, 1)) 0}.category .cat-top[data-v-6aab0d1d]{display:flex;align-items:center;justify-content:space-between;gap:calc(8px * var(--widget-space, 1))}.category .cat-label[data-v-6aab0d1d]{display:flex;align-items:center;gap:calc(6px * var(--widget-space, 1));font-weight:600;color:var(--fg)}.category .cat-label .dot[data-v-6aab0d1d]{width:calc(10px * var(--widget-space, 1));height:calc(10px * var(--widget-space, 1));border-radius:50%;background:var(--brand);box-shadow:0 0 0 1px color-mix(in srgb,var(--fg) 10%,transparent)}.category .cat-label .name[data-v-6aab0d1d]{color:var(--fg)}.unassigned-hint[data-v-6aab0d1d]{font-size:calc(11px * var(--widget-scale,1));color:var(--muted);cursor:default;line-height:1;opacity:.7}.category .cat-meta[data-v-6aab0d1d]{display:flex;align-items:center;gap:calc(6px * var(--widget-space, 1));font-weight:600;color:var(--muted)}.category .cat-meta .percent[data-v-6aab0d1d]{font-variant-numeric:tabular-nums;color:var(--fg)}.cat-progress .bar[data-v-6aab0d1d]{position:relative;width:100%;overflow:visible}.cat-progress .bar .bar-track[data-v-6aab0d1d]{position:relative;height:calc(16px * var(--widget-space, 1));border-radius:999px;background:color-mix(in srgb,var(--muted) 20%,transparent);overflow:hidden}.cat-progress .bar .fill[data-v-6aab0d1d]{height:100%;border-radius:999px;transition:width .2s ease;max-width:100%;background:var(--fill-color, var(--brand))}.cat-progress .bar .fill.fill-endless[data-v-6aab0d1d]{transition:none;background-image:linear-gradient(90deg,color-mix(in srgb,var(--fill-color, #f97316) 70%,#f97316),color-mix(in srgb,#fb923c 38%,transparent),color-mix(in srgb,var(--fill-color, #f97316) 78%,#f97316))}.cat-progress .bar .today-overlay[data-v-6aab0d1d]{position:absolute;top:0;height:100%;border-radius:999px;opacity:.45;border:0;pointer-events:none}.category .cat-metrics[data-v-6aab0d1d]{display:flex;flex-wrap:wrap;gap:calc(6px * var(--widget-space, 1));align-items:center;color:var(--fg)}.cat-metrics .today-inline[data-v-6aab0d1d]{font-weight:600}.cat-footer[data-v-6aab0d1d]{display:flex;justify-content:space-between;align-items:center}.hint[data-v-6aab0d1d]{color:var(--muted);font-size:calc(12px * var(--widget-scale, 1))}.badge[data-v-6aab0d1d]{display:inline-flex;align-items:center;gap:calc(4px * var(--widget-space, 1));padding:calc(2px * var(--widget-space, 1)) calc(8px * var(--widget-space, 1));border-radius:999px;font-size:calc(11px * var(--widget-scale, 1));font-weight:600;text-transform:uppercase;letter-spacing:.05em}.status-label[data-v-6aab0d1d]{font-weight:600}.status-on[data-v-6aab0d1d]{background:color-mix(in srgb,var(--brand) 20%,white);color:var(--brand)}.status-risk[data-v-6aab0d1d]{background:color-mix(in srgb,#f97316 20%,white);color:#f97316}.status-behind[data-v-6aab0d1d]{background:color-mix(in srgb,#ef4444 20%,white);color:#ef4444}.status-done[data-v-6aab0d1d]{background:color-mix(in srgb,var(--pos) 25%,white);color:var(--pos)}.status-endless[data-v-6aab0d1d]{background:color-mix(in srgb,#f97316 18%,white);color:#ea580c}.status-none[data-v-6aab0d1d]{background:color-mix(in srgb,var(--muted) 12%,white);color:var(--muted)}.delta[data-v-6aab0d1d]{font-weight:600}.delta.pos[data-v-6aab0d1d]{color:var(--pos)}.delta.neg[data-v-6aab0d1d]{color:var(--neg)}.cat-metrics .hint[data-v-6aab0d1d],.cat-footer .hint[data-v-6aab0d1d]{font-size:calc(11px * var(--widget-scale, 1))}.cat-progress[data-v-6aab0d1d]{padding:calc(2px * var(--widget-space, 1)) 0}.cat-meta .badge[data-v-6aab0d1d]{font-size:calc(10px * var(--widget-scale, 1))}@media (max-width: 720px){.targets-hustle[data-v-6aab0d1d]{top:calc(6px * var(--widget-space, 1));right:calc(6px * var(--widget-space, 1))}.targets-hustle__badge[data-v-6aab0d1d]{padding:calc(6px * var(--widget-space, 1))}.targets-hustle__orb[data-v-6aab0d1d]{width:200px}.targets-hustle__icon[data-v-6aab0d1d]{max-width:200px}}.card.time-summary[data-v-d1e57a51]{display:flex;flex-direction:column;gap:var(--widget-gap, 6px);font-size:var(--widget-font, 13px);color:var(--muted);--widget-pad: calc(14px * var(--widget-space, 1));padding:var(--widget-pad, 14px)}.time-summary-daily[data-v-d1e57a51]{display:grid;gap:calc(12px * var(--widget-space, 1))}.time-summary-hero[data-v-d1e57a51]{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:calc(14px * var(--widget-space, 1));align-items:end;padding:calc(14px * var(--widget-space, 1));border-radius:calc(16px * var(--widget-space, 1));background:radial-gradient(circle at 0 0,color-mix(in oklab,var(--brand, #2563eb) 22%,transparent),transparent 48%),linear-gradient(135deg,color-mix(in oklab,var(--brand, #2563eb) 16%,transparent),color-mix(in oklab,var(--card, #fff) 88%,transparent));border:1px solid color-mix(in oklab,var(--brand, #2563eb),transparent 72%);color:var(--fg)}.time-summary-hero__label[data-v-d1e57a51]{margin-bottom:calc(6px * var(--widget-space, 1));color:color-mix(in oklab,var(--fg),transparent 38%);font-size:calc(11px * var(--widget-scale, 1));font-weight:800;letter-spacing:.08em;text-transform:uppercase}.time-summary-hero__value[data-v-d1e57a51]{color:var(--fg);font-size:calc(42px * var(--widget-scale, 1));line-height:.9;letter-spacing:-.07em;font-weight:850}.time-summary-hero__value span[data-v-d1e57a51]{margin-left:calc(4px * var(--widget-space, 1));color:var(--muted);font-size:calc(17px * var(--widget-scale, 1));letter-spacing:-.03em}.time-summary-hero__planned[data-v-d1e57a51]{margin-top:calc(6px * var(--widget-space, 1));color:var(--muted);font-size:calc(12px * var(--widget-scale, 1))}.time-summary-hero__side[data-v-d1e57a51]{display:grid;justify-items:end;color:var(--muted);font-size:calc(11px * var(--widget-scale, 1));line-height:1.35;text-align:right}.time-summary-hero__side strong[data-v-d1e57a51]{color:var(--fg);font-size:calc(22px * var(--widget-scale, 1));line-height:1;letter-spacing:-.04em}.time-summary-tabs[data-v-d1e57a51]{display:grid;gap:calc(6px * var(--widget-space, 1));padding:calc(5px * var(--widget-space, 1));border-radius:calc(14px * var(--widget-space, 1));background:color-mix(in oklab,var(--fg) 5%,transparent);border:1px solid color-mix(in oklab,var(--line, #e5e7eb),transparent 35%)}.time-summary-tabs--2[data-v-d1e57a51]{grid-template-columns:repeat(2,minmax(0,1fr))}.time-summary-tabs--3[data-v-d1e57a51]{grid-template-columns:repeat(3,minmax(0,1fr))}.time-summary-tabs button[data-v-d1e57a51]{border:0;border-radius:calc(10px * var(--widget-space, 1));padding:calc(7px * var(--widget-space, 1)) calc(6px * var(--widget-space, 1));background:transparent;color:var(--muted);font:inherit;font-size:calc(11px * var(--widget-scale, 1));font-weight:800;cursor:pointer}.time-summary-tabs button.active[data-v-d1e57a51]{color:var(--brand);background:color-mix(in oklab,var(--brand, #2563eb) 16%,transparent);box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--brand, #2563eb),transparent 72%)}.time-summary-section-head[data-v-d1e57a51]{display:flex;justify-content:space-between;gap:calc(10px * var(--widget-space, 1));align-items:end;color:var(--muted);font-size:calc(11px * var(--widget-scale, 1));letter-spacing:.06em;text-transform:uppercase}.time-summary-section-head strong[data-v-d1e57a51]{color:var(--fg);font-size:calc(12px * var(--widget-scale, 1));letter-spacing:0;text-transform:none}.time-summary-lanes[data-v-d1e57a51]{display:grid;gap:calc(8px * var(--widget-space, 1))}.time-summary-tab-panel[data-v-d1e57a51]{display:grid;min-height:calc(142px * var(--widget-space, 1))}.time-summary-lane[data-v-d1e57a51]{--lane-color: var(--brand, #2563eb);display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:calc(9px * var(--widget-space, 1));align-items:center;min-height:calc(38px * var(--widget-space, 1));padding:calc(9px * var(--widget-space, 1));border-radius:calc(13px * var(--widget-space, 1));background:linear-gradient(90deg,color-mix(in oklab,var(--lane-color) 22%,transparent),transparent 68%),color-mix(in oklab,var(--card, #fff) 92%,var(--fg) 8%);border:1px solid color-mix(in oklab,var(--lane-color) 30%,var(--line, #e5e7eb));box-shadow:inset 3px 0 color-mix(in oklab,var(--lane-color) 82%,transparent)}.time-summary-lane .name[data-v-d1e57a51]{min-width:0;color:var(--fg);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.time-summary-lane .value[data-v-d1e57a51]{color:var(--muted);font-size:calc(12px * var(--widget-scale, 1));font-variant-numeric:tabular-nums}.time-summary-more[data-v-d1e57a51]{color:var(--muted);font-size:calc(12px * var(--widget-scale, 1))}.time-summary-kpis[data-v-d1e57a51]{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:calc(9px * var(--widget-space, 1))}.time-summary-kpi[data-v-d1e57a51]{min-height:calc(62px * var(--widget-space, 1));padding:calc(10px * var(--widget-space, 1));border-radius:calc(14px * var(--widget-space, 1));border:1px solid color-mix(in oklab,var(--line, #e5e7eb),transparent 28%);background:color-mix(in oklab,var(--card, #fff) 94%,var(--fg) 6%)}.time-summary-kpi strong[data-v-d1e57a51]{display:block;color:var(--fg);font-size:calc(18px * var(--widget-scale, 1));letter-spacing:-.04em}.time-summary-kpi span[data-v-d1e57a51]{color:var(--muted);font-size:calc(11px * var(--widget-scale, 1))}.time-summary-kpi--compare[data-v-d1e57a51]{position:relative;background:linear-gradient(135deg,color-mix(in oklab,var(--brand, #2563eb) 10%,transparent),transparent 62%),color-mix(in oklab,var(--card, #fff) 94%,var(--fg) 6%)}.time-summary-kpi--compare em[data-v-d1e57a51]{position:absolute;right:calc(10px * var(--widget-space, 1));bottom:calc(10px * var(--widget-space, 1));color:color-mix(in oklab,var(--brand, #2563eb) 78%,var(--fg));font-size:calc(11px * var(--widget-scale, 1));font-style:normal;font-weight:850;letter-spacing:-.02em}.time-summary-week[data-v-d1e57a51]{--week-chart-accent: var(--brand, #2563eb);display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:calc(6px * var(--widget-space, 1));align-items:end;height:calc(96px * var(--widget-space, 1));padding:calc(12px * var(--widget-space, 1)) calc(10px * var(--widget-space, 1)) calc(7px * var(--widget-space, 1));border-radius:calc(16px * var(--widget-space, 1));border:1px solid color-mix(in oklab,var(--line, #e5e7eb),transparent 35%);background:linear-gradient(180deg,color-mix(in oklab,var(--week-chart-accent) 8%,transparent),transparent 58%),color-mix(in oklab,var(--fg) 4%,transparent);box-shadow:inset 0 1px color-mix(in oklab,#fff 42%,transparent)}.time-summary-week__day[data-v-d1e57a51]{height:100%;display:flex;flex-direction:column;justify-content:end;gap:calc(7px * var(--widget-space, 1));color:var(--muted);font-size:calc(10px * var(--widget-scale, 1));text-align:center;position:relative}.time-summary-week__day[data-v-d1e57a51]:before{content:"";position:absolute;left:6%;right:6%;bottom:calc(20px * var(--widget-space, 1));height:1px;background:color-mix(in oklab,var(--line, #e5e7eb),transparent 35%)}.time-summary-week__day[data-v-d1e57a51]:after{content:"";position:absolute;left:7%;right:7%;top:calc(2px * var(--widget-space, 1));bottom:calc(20px * var(--widget-space, 1));border-radius:999px 999px calc(8px * var(--widget-space, 1)) calc(8px * var(--widget-space, 1));background:linear-gradient(180deg,color-mix(in oklab,var(--fg) 4%,transparent),transparent),color-mix(in oklab,var(--card, #fff) 78%,transparent);box-shadow:inset 0 0 0 1px color-mix(in oklab,var(--line, #e5e7eb),transparent 48%)}.time-summary-week__day i[data-v-d1e57a51]{display:block;width:100%;min-height:calc(20px * var(--widget-space, 1));border-radius:999px 999px calc(7px * var(--widget-space, 1)) calc(7px * var(--widget-space, 1));background:radial-gradient(circle at 50% 10%,color-mix(in oklab,#fff 72%,transparent),transparent 31%),linear-gradient(90deg,transparent,color-mix(in oklab,#fff 18%,transparent),transparent),linear-gradient(180deg,color-mix(in oklab,var(--week-chart-accent) 72%,white),var(--week-chart-accent));position:relative;overflow:hidden;z-index:1;box-shadow:0 7px 14px color-mix(in oklab,var(--week-chart-accent) 26%,transparent),inset 0 1px color-mix(in oklab,#fff 44%,transparent);transition:transform .16s ease,filter .16s ease}.time-summary-week__day:hover i[data-v-d1e57a51]{transform:translateY(-2px);filter:saturate(1.08)}.time-summary-week__bar strong[data-v-d1e57a51]{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#fff;font-size:calc(9px * var(--widget-scale, 1));font-weight:800;letter-spacing:-.03em;line-height:1;text-shadow:0 1px 4px rgba(15,23,42,.38);white-space:nowrap}.time-summary-week__day span[data-v-d1e57a51]{position:relative;z-index:1}.time-summary-week__day.active i[data-v-d1e57a51]{background:radial-gradient(circle at 50% 10%,color-mix(in oklab,#fff 70%,transparent),transparent 34%),linear-gradient(180deg,color-mix(in oklab,#38bdf8 42%,var(--week-chart-accent)),var(--week-chart-accent));box-shadow:0 9px 18px color-mix(in oklab,var(--week-chart-accent) 34%,transparent),0 0 0 1px color-mix(in oklab,var(--week-chart-accent) 35%,transparent),inset 0 1px color-mix(in oklab,#fff 50%,transparent)}.time-summary-week__day.active span[data-v-d1e57a51]{color:var(--fg);font-weight:800}.time-summary-activity-note[data-v-d1e57a51]{padding-top:calc(8px * var(--widget-space, 1));border-top:1px solid var(--line);color:var(--muted);font-size:calc(12px * var(--widget-scale, 1));line-height:1.45}.today-highlight[data-v-d1e57a51]{display:flex;align-items:center;justify-content:space-between;padding:calc(10px * var(--widget-space, 1)) calc(12px * var(--widget-space, 1));border-radius:calc(10px * var(--widget-space, 1));background:color-mix(in oklab,var(--brand, #2563eb) 14%,transparent);border:1px solid color-mix(in oklab,var(--brand, #2563eb),transparent 70%);color:var(--fg)}.today-label[data-v-d1e57a51]{font-size:calc(12px * var(--widget-scale, 1));text-transform:uppercase;letter-spacing:.04em;color:color-mix(in oklab,var(--fg),transparent 35%)}.today-value[data-v-d1e57a51]{font-size:calc(18px * var(--widget-scale, 1));font-weight:700;letter-spacing:-.02em}.today-cats[data-v-d1e57a51]{display:flex;flex-wrap:wrap;gap:calc(8px * var(--widget-space, 1)) calc(12px * var(--widget-space, 1));font-size:calc(12px * var(--widget-scale, 1));color:var(--fg)}.today-cat[data-v-d1e57a51]{display:inline-flex;align-items:center;gap:calc(6px * var(--widget-space, 1));padding:calc(4px * var(--widget-space, 1)) calc(8px * var(--widget-space, 1));border-radius:calc(8px * var(--widget-space, 1));background:color-mix(in oklab,var(--card, #fff),transparent 6%);border:1px solid color-mix(in oklab,var(--line, #e5e7eb),transparent 30%)}.today-cat .dot[data-v-d1e57a51]{width:calc(9px * var(--widget-space, 1));height:calc(9px * var(--widget-space, 1));border-radius:50%;box-shadow:0 0 0 1px color-mix(in oklab,var(--fg) 10%,transparent)}.today-cat .unassigned-hint[data-v-d1e57a51]{font-size:calc(11px * var(--widget-scale,1));color:var(--muted);cursor:default;opacity:.7}.today-cat .name[data-v-d1e57a51]{font-weight:600}.today-cat .value[data-v-d1e57a51]{color:var(--muted)}.time-summary-firstline[data-v-d1e57a51]{display:flex;align-items:center;justify-content:space-between;gap:var(--widget-gap, 8px);font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)));color:var(--fg);font-weight:600}.mode-pill[data-v-d1e57a51]{display:inline-flex;align-items:center;padding:calc(2px * var(--widget-space, 1)) calc(8px * var(--widget-space, 1));font-size:calc(11px * var(--widget-scale, 1));font-weight:600;border-radius:999px;background:color-mix(in srgb,var(--brand) 18%,white);color:var(--brand);text-transform:uppercase;letter-spacing:.05em}.time-summary-metrics[data-v-d1e57a51]{display:grid;gap:calc(4px * var(--widget-space, 1));margin:0;padding:0;list-style:none}.time-summary-metrics li[data-v-d1e57a51]{display:flex;flex-wrap:wrap;gap:calc(4px * var(--widget-space, 1));color:var(--muted)}.time-summary-metrics strong[data-v-d1e57a51]{color:var(--fg);font-size:calc(14px * var(--widget-scale, 1))}.time-summary-inline[data-v-d1e57a51]{font-size:calc(13px * var(--widget-scale, 1));color:var(--fg)}.time-summary-row[data-v-d1e57a51]{display:flex;flex-wrap:wrap;gap:calc(4px * var(--widget-space, 1));line-height:1.4;color:var(--muted)}.time-summary-row .label[data-v-d1e57a51]{color:var(--fg);font-weight:600}.time-summary-row.calendars[data-v-d1e57a51]{word-break:break-word}.time-summary-row .sep[data-v-d1e57a51],.time-summary-row .hint[data-v-d1e57a51],.time-summary-row .share[data-v-d1e57a51]{color:var(--muted)}.time-summary-row.top-category[data-v-d1e57a51]{align-items:center;gap:calc(6px * var(--widget-space, 1))}.time-summary-activity[data-v-d1e57a51]{margin-top:calc(6px * var(--widget-space, 1));padding-top:calc(6px * var(--widget-space, 1));border-top:1px solid var(--line);display:grid;gap:calc(2px * var(--widget-space, 1));font-size:calc(12px * var(--widget-scale, 1));color:var(--muted)}.time-summary-activity__title[data-v-d1e57a51]{font-weight:600;color:var(--fg)}.time-summary-activity__line[data-v-d1e57a51]{display:flex;flex-wrap:wrap;gap:calc(6px * var(--widget-space, 1))}.time-summary-activity__delta[data-v-d1e57a51]{color:var(--muted)}.time-summary-history[data-v-d1e57a51]{margin-top:calc(8px * var(--widget-space, 1));padding-top:calc(8px * var(--widget-space, 1));border-top:1px solid var(--line);display:grid;gap:calc(8px * var(--widget-space, 1))}.time-summary-history--empty[data-v-d1e57a51]{gap:calc(10px * var(--widget-space, 1))}.time-summary-history__header[data-v-d1e57a51]{display:flex;align-items:center;justify-content:space-between;gap:calc(8px * var(--widget-space, 1))}.time-summary-history__title[data-v-d1e57a51]{font-weight:600;color:var(--fg)}.time-summary-history__mode[data-v-d1e57a51]{font-size:calc(11px * var(--widget-scale, 1));text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.time-summary-history__empty[data-v-d1e57a51]{display:grid;gap:calc(4px * var(--widget-space, 1));padding:calc(10px * var(--widget-space, 1)) calc(12px * var(--widget-space, 1));border-radius:calc(12px * var(--widget-space, 1));border:1px dashed color-mix(in oklab,var(--line, #e5e7eb),transparent 10%);background:color-mix(in oklab,var(--card, #fff),transparent 4%)}.time-summary-history__empty-title[data-v-d1e57a51]{color:var(--fg);font-weight:600}.time-summary-history__empty-copy[data-v-d1e57a51]{color:var(--muted);line-height:1.45}.time-summary-history__timeline[data-v-d1e57a51]{display:grid;gap:calc(10px * var(--widget-space, 1))}.history-timeline-entry[data-v-d1e57a51]{border:1px solid color-mix(in oklab,var(--line, #e5e7eb),transparent 20%);border-radius:calc(12px * var(--widget-space, 1));padding:calc(10px * var(--widget-space, 1));background:color-mix(in oklab,var(--card, #fff),transparent 6%)}.history-timeline-entry__header[data-v-d1e57a51]{display:flex;flex-wrap:wrap;align-items:center;gap:calc(6px * var(--widget-space, 1)) calc(10px * var(--widget-space, 1));margin-bottom:calc(8px * var(--widget-space, 1))}.history-timeline-entry__title[data-v-d1e57a51]{font-weight:600;color:var(--fg)}.history-timeline-entry__range[data-v-d1e57a51]{font-size:calc(11px * var(--widget-scale, 1));color:var(--muted)}.history-timeline-entry__delta[data-v-d1e57a51]{margin-left:auto;font-size:calc(11px * var(--widget-scale, 1));color:var(--muted)}.history-timeline-entry__metrics[data-v-d1e57a51]{display:grid;gap:calc(6px * var(--widget-space, 1));grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.history-timeline-cell[data-v-d1e57a51]{display:flex;flex-direction:column;gap:calc(2px * var(--widget-space, 1))}.history-timeline-cell__label[data-v-d1e57a51]{font-size:calc(11px * var(--widget-scale, 1));color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.history-timeline-cell__value[data-v-d1e57a51]{font-size:calc(12px * var(--widget-scale, 1));color:var(--fg);font-weight:600}.time-summary-history__accordion[data-v-d1e57a51]{display:grid;gap:calc(10px * var(--widget-space, 1))}.history-accordion-entry[data-v-d1e57a51]{border:1px solid color-mix(in oklab,var(--line, #e5e7eb),transparent 20%);border-radius:calc(12px * var(--widget-space, 1));background:color-mix(in oklab,var(--card, #fff),transparent 6%)}.history-accordion-entry__header[data-v-d1e57a51]{width:100%;display:grid;grid-template-columns:1fr auto auto auto auto;align-items:center;gap:calc(8px * var(--widget-space, 1));border:0;background:transparent;color:inherit;text-align:left;padding:calc(10px * var(--widget-space, 1));cursor:pointer}.history-accordion-entry__title[data-v-d1e57a51]{font-weight:600;color:var(--fg)}.history-accordion-entry__range[data-v-d1e57a51]{font-size:calc(11px * var(--widget-scale, 1));color:var(--muted)}.history-accordion-entry__summary[data-v-d1e57a51]{font-size:calc(12px * var(--widget-scale, 1));color:var(--fg);font-weight:600}.history-accordion-entry__delta[data-v-d1e57a51]{font-size:calc(11px * var(--widget-scale, 1));color:var(--muted)}.history-accordion-entry__caret[data-v-d1e57a51]{font-size:calc(14px * var(--widget-scale, 1));color:var(--muted);line-height:1}.history-accordion-entry__body[data-v-d1e57a51]{border-top:1px solid color-mix(in oklab,var(--line, #e5e7eb),transparent 25%);padding:calc(8px * var(--widget-space, 1)) calc(10px * var(--widget-space, 1)) calc(10px * var(--widget-space, 1));display:grid;gap:calc(8px * var(--widget-space, 1))}.history-accordion-group[data-v-d1e57a51]{display:grid;gap:calc(4px * var(--widget-space, 1))}.history-accordion-group__title[data-v-d1e57a51]{font-size:calc(11px * var(--widget-scale, 1));text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.history-accordion-group__metrics[data-v-d1e57a51]{display:grid;gap:calc(6px * var(--widget-space, 1));grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.history-accordion-group__metric[data-v-d1e57a51]{display:grid;gap:calc(2px * var(--widget-space, 1))}.history-accordion-group__metric-label[data-v-d1e57a51]{font-size:calc(11px * var(--widget-scale, 1));color:var(--muted)}.history-accordion-group__metric-value[data-v-d1e57a51]{font-size:calc(11px * var(--widget-scale, 1));color:var(--fg);font-weight:600}.summary-badge[data-v-d1e57a51]{display:inline-flex;align-items:center;gap:calc(4px * var(--widget-space, 1));padding:calc(2px * var(--widget-space, 1)) calc(8px * var(--widget-space, 1));border-radius:999px;font-size:calc(11px * var(--widget-scale, 1));font-weight:600;text-transform:uppercase;letter-spacing:.05em}.status-on[data-v-d1e57a51]{background:color-mix(in srgb,var(--brand) 20%,white);color:var(--brand)}.status-risk[data-v-d1e57a51]{background:color-mix(in srgb,#f97316 20%,white);color:#f97316}.status-behind[data-v-d1e57a51]{background:color-mix(in srgb,#ef4444 20%,white);color:#ef4444}.status-done[data-v-d1e57a51]{background:color-mix(in srgb,var(--pos) 25%,white);color:var(--pos)}.status-none[data-v-d1e57a51]{background:color-mix(in srgb,var(--muted) 12%,white);color:var(--muted)}
|
||
/*$vite$:1*/`,document.head.appendChild(bl);/**
|
||
* @vue/shared v3.5.20
|
||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||
* @license MIT
|
||
**//*! #__NO_SIDE_EFFECTS__ */function vs(e){const t=Object.create(null);for(const a of e.split(","))t[a]=1;return a=>a in t}const bt={},Fo=[],Ha=()=>{},vl=()=>!1,Kr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),hs=e=>e.startsWith("onUpdate:"),It=Object.assign,ms=(e,t)=>{const a=e.indexOf(t);a>-1&&e.splice(a,1)},_g=Object.prototype.hasOwnProperty,ut=(e,t)=>_g.call(e,t),je=Array.isArray,Po=e=>lr(e)==="[object Map]",qr=e=>lr(e)==="[object Set]",hl=e=>lr(e)==="[object Date]",qe=e=>typeof e=="function",_t=e=>typeof e=="string",Da=e=>typeof e=="symbol",vt=e=>e!==null&&typeof e=="object",ml=e=>(vt(e)||qe(e))&&qe(e.then)&&qe(e.catch),yl=Object.prototype.toString,lr=e=>yl.call(e),Cg=e=>lr(e).slice(8,-1),wl=e=>lr(e)==="[object Object]",ys=e=>_t(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,dr=vs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Jr=e=>{const t=Object.create(null);return a=>t[a]||(t[a]=e(a))},Sg=/-(\w)/g,wa=Jr(e=>e.replace(Sg,(t,a)=>a?a.toUpperCase():"")),Tg=/\B([A-Z])/g,io=Jr(e=>e.replace(Tg,"-$1").toLowerCase()),Zr=Jr(e=>e.charAt(0).toUpperCase()+e.slice(1)),ws=Jr(e=>e?`on${Zr(e)}`:""),lo=(e,t)=>!Object.is(e,t),Yr=(e,...t)=>{for(let a=0;a<e.length;a++)e[a](...t)},kl=(e,t,a,o=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:o,value:a})},Xr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},$g=e=>{const t=_t(e)?Number(e):NaN;return isNaN(t)?e:t};let xl;const Qr=()=>xl||(xl=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function He(e){if(je(e)){const t={};for(let a=0;a<e.length;a++){const o=e[a],r=_t(o)?Lg(o):He(o);if(r)for(const n in r)t[n]=r[n]}return t}else if(_t(e)||vt(e))return e}const Mg=/;(?![^(]*\))/g,Ag=/:([^]+)/,Dg=/\/\*[^]*?\*\//g;function Lg(e){const t={};return e.replace(Dg,"").split(Mg).forEach(a=>{if(a){const o=a.split(Ag);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function ke(e){let t="";if(_t(e))t=e;else if(je(e))for(let a=0;a<e.length;a++){const o=ke(e[a]);o&&(t+=o+" ")}else if(vt(e))for(const a in e)e[a]&&(t+=a+" ");return t.trim()}const Eg=vs("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function _l(e){return!!e||e===""}function Ng(e,t){if(e.length!==t.length)return!1;let a=!0;for(let o=0;a&&o<e.length;o++)a=en(e[o],t[o]);return a}function en(e,t){if(e===t)return!0;let a=hl(e),o=hl(t);if(a||o)return a&&o?e.getTime()===t.getTime():!1;if(a=Da(e),o=Da(t),a||o)return e===t;if(a=je(e),o=je(t),a||o)return a&&o?Ng(e,t):!1;if(a=vt(e),o=vt(t),a||o){if(!a||!o)return!1;const r=Object.keys(e).length,n=Object.keys(t).length;if(r!==n)return!1;for(const s in e){const l=e.hasOwnProperty(s),d=t.hasOwnProperty(s);if(l&&!d||!l&&d||!en(e[s],t[s]))return!1}}return String(e)===String(t)}function Ig(e,t){return e.findIndex(a=>en(a,t))}const Cl=e=>!!(e&&e.__v_isRef===!0),E=e=>_t(e)?e:e==null?"":je(e)||vt(e)&&(e.toString===yl||!qe(e.toString))?Cl(e)?E(e.value):JSON.stringify(e,Sl,2):String(e),Sl=(e,t)=>Cl(t)?Sl(e,t.value):Po(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((a,[o,r],n)=>(a[ks(o,n)+" =>"]=r,a),{})}:qr(t)?{[`Set(${t.size})`]:[...t.values()].map(a=>ks(a))}:Da(t)?ks(t):vt(t)&&!je(t)&&!wl(t)?String(t):t,ks=(e,t="")=>{var a;return Da(e)?`Symbol(${(a=e.description)!=null?a:t})`:e};/**
|
||
* @vue/reactivity v3.5.20
|
||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||
* @license MIT
|
||
**/let aa;class Og{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=aa,!t&&aa&&(this.index=(aa.scopes||(aa.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,a;if(this.scopes)for(t=0,a=this.scopes.length;t<a;t++)this.scopes[t].pause();for(t=0,a=this.effects.length;t<a;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,a;if(this.scopes)for(t=0,a=this.scopes.length;t<a;t++)this.scopes[t].resume();for(t=0,a=this.effects.length;t<a;t++)this.effects[t].resume()}}run(t){if(this._active){const a=aa;try{return aa=this,t()}finally{aa=a}}}on(){++this._on===1&&(this.prevScope=aa,aa=this)}off(){this._on>0&&--this._on===0&&(aa=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let a,o;for(a=0,o=this.effects.length;a<o;a++)this.effects[a].stop();for(this.effects.length=0,a=0,o=this.cleanups.length;a<o;a++)this.cleanups[a]();if(this.cleanups.length=0,this.scopes){for(a=0,o=this.scopes.length;a<o;a++)this.scopes[a].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0}}}function Bg(){return aa}let yt;const xs=new WeakSet;class Tl{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,aa&&aa.active&&aa.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,xs.has(this)&&(xs.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||Ml(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Nl(this),Al(this);const t=yt,a=La;yt=this,La=!0;try{return this.fn()}finally{Dl(this),yt=t,La=a,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Ts(t);this.deps=this.depsTail=void 0,Nl(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?xs.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Ss(this)&&this.run()}get dirty(){return Ss(this)}}let $l=0,cr,ur;function Ml(e,t=!1){if(e.flags|=8,t){e.next=ur,ur=e;return}e.next=cr,cr=e}function _s(){$l++}function Cs(){if(--$l>0)return;if(ur){let t=ur;for(ur=void 0;t;){const a=t.next;t.next=void 0,t.flags&=-9,t=a}}let e;for(;cr;){let t=cr;for(cr=void 0;t;){const a=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(o){e||(e=o)}t=a}}if(e)throw e}function Al(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Dl(e){let t,a=e.depsTail,o=a;for(;o;){const r=o.prevDep;o.version===-1?(o===a&&(a=r),Ts(o),Hg(o)):t=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0,o=r}e.deps=t,e.depsTail=a}function Ss(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&(Ll(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function Ll(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===gr)||(e.globalVersion=gr,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Ss(e))))return;e.flags|=2;const t=e.dep,a=yt,o=La;yt=e,La=!0;try{Al(e);const r=e.fn(e._value);(t.version===0||lo(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{yt=a,La=o,Dl(e),e.flags&=-3}}function Ts(e,t=!1){const{dep:a,prevSub:o,nextSub:r}=e;if(o&&(o.nextSub=r,e.prevSub=void 0),r&&(r.prevSub=o,e.nextSub=void 0),a.subs===e&&(a.subs=o,!o&&a.computed)){a.computed.flags&=-5;for(let n=a.computed.deps;n;n=n.nextDep)Ts(n,!0)}!t&&!--a.sc&&a.map&&a.map.delete(a.key)}function Hg(e){const{prevDep:t,nextDep:a}=e;t&&(t.nextDep=a,e.prevDep=void 0),a&&(a.prevDep=t,e.nextDep=void 0)}let La=!0;const El=[];function Fa(){El.push(La),La=!1}function Pa(){const e=El.pop();La=e===void 0?!0:e}function Nl(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const a=yt;yt=void 0;try{t()}finally{yt=a}}}let gr=0;class Fg{constructor(t,a){this.sub=t,this.dep=a,this.version=a.version,this.nextDep=this.prevDep=this.nextSub=this.prevSub=this.prevActiveLink=void 0}}class $s{constructor(t){this.computed=t,this.version=0,this.activeLink=void 0,this.subs=void 0,this.map=void 0,this.key=void 0,this.sc=0,this.__v_skip=!0}track(t){if(!yt||!La||yt===this.computed)return;let a=this.activeLink;if(a===void 0||a.sub!==yt)a=this.activeLink=new Fg(yt,this),yt.deps?(a.prevDep=yt.depsTail,yt.depsTail.nextDep=a,yt.depsTail=a):yt.deps=yt.depsTail=a,Il(a);else if(a.version===-1&&(a.version=this.version,a.nextDep)){const o=a.nextDep;o.prevDep=a.prevDep,a.prevDep&&(a.prevDep.nextDep=o),a.prevDep=yt.depsTail,a.nextDep=void 0,yt.depsTail.nextDep=a,yt.depsTail=a,yt.deps===a&&(yt.deps=o)}return a}trigger(t){this.version++,gr++,this.notify(t)}notify(t){_s();try{for(let a=this.subs;a;a=a.prevSub)a.sub.notify()&&a.sub.dep.notify()}finally{Cs()}}}function Il(e){if(e.dep.sc++,e.sub.flags&4){const t=e.dep.computed;if(t&&!e.dep.subs){t.flags|=20;for(let o=t.deps;o;o=o.nextDep)Il(o)}const a=e.dep.subs;a!==e&&(e.prevSub=a,a&&(a.nextSub=e)),e.dep.subs=e}}const tn=new WeakMap,wo=Symbol(""),Ms=Symbol(""),pr=Symbol("");function Gt(e,t,a){if(La&&yt){let o=tn.get(e);o||tn.set(e,o=new Map);let r=o.get(a);r||(o.set(a,r=new $s),r.map=o,r.key=a),r.track()}}function Ga(e,t,a,o,r,n){const s=tn.get(e);if(!s){gr++;return}const l=d=>{d&&d.trigger()};if(_s(),t==="clear")s.forEach(l);else{const d=je(e),p=d&&ys(a);if(d&&a==="length"){const u=Number(o);s.forEach((v,b)=>{(b==="length"||b===pr||!Da(b)&&b>=u)&&l(v)})}else switch((a!==void 0||s.has(void 0))&&l(s.get(a)),p&&l(s.get(pr)),t){case"add":d?p&&l(s.get("length")):(l(s.get(wo)),Po(e)&&l(s.get(Ms)));break;case"delete":d||(l(s.get(wo)),Po(e)&&l(s.get(Ms)));break;case"set":Po(e)&&l(s.get(wo));break}}Cs()}function Pg(e,t){const a=tn.get(e);return a&&a.get(t)}function Wo(e){const t=tt(e);return t===e?t:(Gt(t,"iterate",pr),ka(e)?t:t.map(Pt))}function an(e){return Gt(e=tt(e),"iterate",pr),e}const Wg={__proto__:null,[Symbol.iterator](){return As(this,Symbol.iterator,Pt)},concat(...e){return Wo(this).concat(...e.map(t=>je(t)?Wo(t):t))},entries(){return As(this,"entries",e=>(e[1]=Pt(e[1]),e))},every(e,t){return Ka(this,"every",e,t,void 0,arguments)},filter(e,t){return Ka(this,"filter",e,t,a=>a.map(Pt),arguments)},find(e,t){return Ka(this,"find",e,t,Pt,arguments)},findIndex(e,t){return Ka(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ka(this,"findLast",e,t,Pt,arguments)},findLastIndex(e,t){return Ka(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ka(this,"forEach",e,t,void 0,arguments)},includes(...e){return Ds(this,"includes",e)},indexOf(...e){return Ds(this,"indexOf",e)},join(e){return Wo(this).join(e)},lastIndexOf(...e){return Ds(this,"lastIndexOf",e)},map(e,t){return Ka(this,"map",e,t,void 0,arguments)},pop(){return fr(this,"pop")},push(...e){return fr(this,"push",e)},reduce(e,...t){return Ol(this,"reduce",e,t)},reduceRight(e,...t){return Ol(this,"reduceRight",e,t)},shift(){return fr(this,"shift")},some(e,t){return Ka(this,"some",e,t,void 0,arguments)},splice(...e){return fr(this,"splice",e)},toReversed(){return Wo(this).toReversed()},toSorted(e){return Wo(this).toSorted(e)},toSpliced(...e){return Wo(this).toSpliced(...e)},unshift(...e){return fr(this,"unshift",e)},values(){return As(this,"values",Pt)}};function As(e,t,a){const o=an(e),r=o[t]();return o!==e&&!ka(e)&&(r._next=r.next,r.next=()=>{const n=r._next();return n.value&&(n.value=a(n.value)),n}),r}const zg=Array.prototype;function Ka(e,t,a,o,r,n){const s=an(e),l=s!==e&&!ka(e),d=s[t];if(d!==zg[t]){const v=d.apply(e,n);return l?Pt(v):v}let p=a;s!==e&&(l?p=function(v,b){return a.call(this,Pt(v),b,e)}:a.length>2&&(p=function(v,b){return a.call(this,v,b,e)}));const u=d.call(s,p,o);return l&&r?r(u):u}function Ol(e,t,a,o){const r=an(e);let n=a;return r!==e&&(ka(e)?a.length>3&&(n=function(s,l,d){return a.call(this,s,l,d,e)}):n=function(s,l,d){return a.call(this,s,Pt(l),d,e)}),r[t](n,...o)}function Ds(e,t,a){const o=tt(e);Gt(o,"iterate",pr);const r=o[t](...a);return(r===-1||r===!1)&&Es(a[0])?(a[0]=tt(a[0]),o[t](...a)):r}function fr(e,t,a=[]){Fa(),_s();const o=tt(e)[t].apply(e,a);return Cs(),Pa(),o}const Rg=vs("__proto__,__v_isRef,__isVue"),Bl=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Da));function jg(e){Da(e)||(e=String(e));const t=tt(this);return Gt(t,"has",e),t.hasOwnProperty(e)}class Hl{constructor(t=!1,a=!1){this._isReadonly=t,this._isShallow=a}get(t,a,o){if(a==="__v_skip")return t.__v_skip;const r=this._isReadonly,n=this._isShallow;if(a==="__v_isReactive")return!r;if(a==="__v_isReadonly")return r;if(a==="__v_isShallow")return n;if(a==="__v_raw")return o===(r?n?jl:Rl:n?zl:Wl).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const s=je(t);if(!r){let d;if(s&&(d=Wg[a]))return d;if(a==="hasOwnProperty")return jg}const l=Reflect.get(t,a,Lt(t)?t:o);return(Da(a)?Bl.has(a):Rg(a))||(r||Gt(t,"get",a),n)?l:Lt(l)?s&&ys(a)?l:l.value:vt(l)?r?Vl(l):br(l):l}}class Fl extends Hl{constructor(t=!1){super(!1,t)}set(t,a,o,r){let n=t[a];if(!this._isShallow){const d=co(n);if(!ka(o)&&!co(o)&&(n=tt(n),o=tt(o)),!je(t)&&Lt(n)&&!Lt(o))return d||(n.value=o),!0}const s=je(t)&&ys(a)?Number(a)<t.length:ut(t,a),l=Reflect.set(t,a,o,Lt(t)?t:r);return t===tt(r)&&(s?lo(o,n)&&Ga(t,"set",a,o):Ga(t,"add",a,o)),l}deleteProperty(t,a){const o=ut(t,a);t[a];const r=Reflect.deleteProperty(t,a);return r&&o&&Ga(t,"delete",a,void 0),r}has(t,a){const o=Reflect.has(t,a);return(!Da(a)||!Bl.has(a))&&Gt(t,"has",a),o}ownKeys(t){return Gt(t,"iterate",je(t)?"length":wo),Reflect.ownKeys(t)}}class Pl extends Hl{constructor(t=!1){super(!0,t)}set(t,a){return!0}deleteProperty(t,a){return!0}}const Vg=new Fl,Ug=new Pl,Gg=new Fl(!0),Kg=new Pl(!0),Ls=e=>e,on=e=>Reflect.getPrototypeOf(e);function qg(e,t,a){return function(...o){const r=this.__v_raw,n=tt(r),s=Po(n),l=e==="entries"||e===Symbol.iterator&&s,d=e==="keys"&&s,p=r[e](...o),u=a?Ls:t?ln:Pt;return!t&&Gt(n,"iterate",d?Ms:wo),{next(){const{value:v,done:b}=p.next();return b?{value:v,done:b}:{value:l?[u(v[0]),u(v[1])]:u(v),done:b}},[Symbol.iterator](){return this}}}}function rn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Jg(e,t){const a={get(r){const n=this.__v_raw,s=tt(n),l=tt(r);e||(lo(r,l)&&Gt(s,"get",r),Gt(s,"get",l));const{has:d}=on(s),p=t?Ls:e?ln:Pt;if(d.call(s,r))return p(n.get(r));if(d.call(s,l))return p(n.get(l));n!==s&&n.get(r)},get size(){const r=this.__v_raw;return!e&&Gt(tt(r),"iterate",wo),r.size},has(r){const n=this.__v_raw,s=tt(n),l=tt(r);return e||(lo(r,l)&&Gt(s,"has",r),Gt(s,"has",l)),r===l?n.has(r):n.has(r)||n.has(l)},forEach(r,n){const s=this,l=s.__v_raw,d=tt(l),p=t?Ls:e?ln:Pt;return!e&&Gt(d,"iterate",wo),l.forEach((u,v)=>r.call(n,p(u),p(v),s))}};return It(a,e?{add:rn("add"),set:rn("set"),delete:rn("delete"),clear:rn("clear")}:{add(r){!t&&!ka(r)&&!co(r)&&(r=tt(r));const n=tt(this);return on(n).has.call(n,r)||(n.add(r),Ga(n,"add",r,r)),this},set(r,n){!t&&!ka(n)&&!co(n)&&(n=tt(n));const s=tt(this),{has:l,get:d}=on(s);let p=l.call(s,r);p||(r=tt(r),p=l.call(s,r));const u=d.call(s,r);return s.set(r,n),p?lo(n,u)&&Ga(s,"set",r,n):Ga(s,"add",r,n),this},delete(r){const n=tt(this),{has:s,get:l}=on(n);let d=s.call(n,r);d||(r=tt(r),d=s.call(n,r)),l&&l.call(n,r);const p=n.delete(r);return d&&Ga(n,"delete",r,void 0),p},clear(){const r=tt(this),n=r.size!==0,s=r.clear();return n&&Ga(r,"clear",void 0,void 0),s}}),["keys","values","entries",Symbol.iterator].forEach(r=>{a[r]=qg(r,e,t)}),a}function nn(e,t){const a=Jg(e,t);return(o,r,n)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?o:Reflect.get(ut(a,r)&&r in o?a:o,r,n)}const Zg={get:nn(!1,!1)},Yg={get:nn(!1,!0)},Xg={get:nn(!0,!1)},Qg={get:nn(!0,!0)},Wl=new WeakMap,zl=new WeakMap,Rl=new WeakMap,jl=new WeakMap;function ep(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function tp(e){return e.__v_skip||!Object.isExtensible(e)?0:ep(Cg(e))}function br(e){return co(e)?e:sn(e,!1,Vg,Zg,Wl)}function ap(e){return sn(e,!1,Gg,Yg,zl)}function Vl(e){return sn(e,!0,Ug,Xg,Rl)}function PT(e){return sn(e,!0,Kg,Qg,jl)}function sn(e,t,a,o,r){if(!vt(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const n=tp(e);if(n===0)return e;const s=r.get(e);if(s)return s;const l=new Proxy(e,n===2?o:a);return r.set(e,l),l}function zo(e){return co(e)?zo(e.__v_raw):!!(e&&e.__v_isReactive)}function co(e){return!!(e&&e.__v_isReadonly)}function ka(e){return!!(e&&e.__v_isShallow)}function Es(e){return e?!!e.__v_raw:!1}function tt(e){const t=e&&e.__v_raw;return t?tt(t):e}function op(e){return!ut(e,"__v_skip")&&Object.isExtensible(e)&&kl(e,"__v_skip",!0),e}const Pt=e=>vt(e)?br(e):e,ln=e=>vt(e)?Vl(e):e;function Lt(e){return e?e.__v_isRef===!0:!1}function oe(e){return rp(e,!1)}function rp(e,t){return Lt(e)?e:new np(e,t)}class np{constructor(t,a){this.dep=new $s,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=a?t:tt(t),this._value=a?t:Pt(t),this.__v_isShallow=a}get value(){return this.dep.track(),this._value}set value(t){const a=this._rawValue,o=this.__v_isShallow||ka(t)||co(t);t=o?t:tt(t),lo(t,a)&&(this._rawValue=t,this._value=o?t:Pt(t),this.dep.trigger())}}function M(e){return Lt(e)?e.value:e}const sp={get:(e,t,a)=>t==="__v_raw"?e:M(Reflect.get(e,t,a)),set:(e,t,a,o)=>{const r=e[t];return Lt(r)&&!Lt(a)?(r.value=a,!0):Reflect.set(e,t,a,o)}};function Ul(e){return zo(e)?e:new Proxy(e,sp)}function ip(e){const t=je(e)?new Array(e.length):{};for(const a in e)t[a]=dp(e,a);return t}class lp{constructor(t,a,o){this._object=t,this._key=a,this._defaultValue=o,this.__v_isRef=!0,this._value=void 0}get value(){const t=this._object[this._key];return this._value=t===void 0?this._defaultValue:t}set value(t){this._object[this._key]=t}get dep(){return Pg(tt(this._object),this._key)}}function dp(e,t,a){const o=e[t];return Lt(o)?o:new lp(e,t,a)}class cp{constructor(t,a,o){this.fn=t,this.setter=a,this._value=void 0,this.dep=new $s(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=gr-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!a,this.isSSR=o}notify(){if(this.flags|=16,!(this.flags&8)&&yt!==this)return Ml(this,!0),!0}get value(){const t=this.dep.track();return Ll(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function up(e,t,a=!1){let o,r;return qe(e)?o=e:(o=e.get,r=e.set),new cp(o,r,a)}const dn={},cn=new WeakMap;let ko;function gp(e,t=!1,a=ko){if(a){let o=cn.get(a);o||cn.set(a,o=[]),o.push(e)}}function pp(e,t,a=bt){const{immediate:o,deep:r,once:n,scheduler:s,augmentJob:l,call:d}=a,p=H=>r?H:ka(H)||r===!1||r===0?qa(H,1):qa(H);let u,v,b,c,f=!1,g=!1;if(Lt(e)?(v=()=>e.value,f=ka(e)):zo(e)?(v=()=>p(e),f=!0):je(e)?(g=!0,f=e.some(H=>zo(H)||ka(H)),v=()=>e.map(H=>{if(Lt(H))return H.value;if(zo(H))return p(H);if(qe(H))return d?d(H,2):H()})):qe(e)?t?v=d?()=>d(e,2):e:v=()=>{if(b){Fa();try{b()}finally{Pa()}}const H=ko;ko=u;try{return d?d(e,3,[c]):e(c)}finally{ko=H}}:v=Ha,t&&r){const H=v,O=r===!0?1/0:r;v=()=>qa(H(),O)}const T=Bg(),S=()=>{u.stop(),T&&T.active&&ms(T.effects,u)};if(n&&t){const H=t;t=(...O)=>{H(...O),S()}}let $=g?new Array(e.length).fill(dn):dn;const C=H=>{if(!(!(u.flags&1)||!u.dirty&&!H))if(t){const O=u.run();if(r||f||(g?O.some((I,_)=>lo(I,$[_])):lo(O,$))){b&&b();const I=ko;ko=u;try{const _=[O,$===dn?void 0:g&&$[0]===dn?[]:$,c];$=O,d?d(t,3,_):t(..._)}finally{ko=I}}}else u.run()};return l&&l(C),u=new Tl(v),u.scheduler=s?()=>s(C,!1):C,c=H=>gp(H,!1,u),b=u.onStop=()=>{const H=cn.get(u);if(H){if(d)d(H,4);else for(const O of H)O();cn.delete(u)}},t?o?C(!0):$=u.run():s?s(C.bind(null,!0),!0):u.run(),S.pause=u.pause.bind(u),S.resume=u.resume.bind(u),S.stop=S,S}function qa(e,t=1/0,a){if(t<=0||!vt(e)||e.__v_skip||(a=a||new Set,a.has(e)))return e;if(a.add(e),t--,Lt(e))qa(e.value,t,a);else if(je(e))for(let o=0;o<e.length;o++)qa(e[o],t,a);else if(qr(e)||Po(e))e.forEach(o=>{qa(o,t,a)});else if(wl(e)){for(const o in e)qa(e[o],t,a);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&qa(e[o],t,a)}return e}/**
|
||
* @vue/runtime-core v3.5.20
|
||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||
* @license MIT
|
||
**/const vr=[];let Ns=!1;function WT(e,...t){if(Ns)return;Ns=!0,Fa();const a=vr.length?vr[vr.length-1].component:null,o=a&&a.appContext.config.warnHandler,r=fp();if(o)Ro(o,a,11,[e+t.map(n=>{var s,l;return(l=(s=n.toString)==null?void 0:s.call(n))!=null?l:JSON.stringify(n)}).join(""),a&&a.proxy,r.map(({vnode:n})=>`at <${Qd(a,n.type)}>`).join(`
|
||
`),r]);else{const n=[`[Vue warn]: ${e}`,...t];r.length&&n.push(`
|
||
`,...bp(r)),console.warn(...n)}Pa(),Ns=!1}function fp(){let e=vr[vr.length-1];if(!e)return[];const t=[];for(;e;){const a=t[0];a&&a.vnode===e?a.recurseCount++:t.push({vnode:e,recurseCount:0});const o=e.component&&e.component.parent;e=o&&o.vnode}return t}function bp(e){const t=[];return e.forEach((a,o)=>{t.push(...o===0?[]:[`
|
||
`],...vp(a))}),t}function vp({vnode:e,recurseCount:t}){const a=t>0?`... (${t} recursive calls)`:"",o=e.component?e.component.parent==null:!1,r=` at <${Qd(e.component,e.type,o)}`,n=">"+a;return e.props?[r,...hp(e.props),n]:[r+n]}function hp(e){const t=[],a=Object.keys(e);return a.slice(0,3).forEach(o=>{t.push(...Gl(o,e[o]))}),a.length>3&&t.push(" ..."),t}function Gl(e,t,a){return _t(t)?(t=JSON.stringify(t),a?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?a?t:[`${e}=${t}`]:Lt(t)?(t=Gl(e,tt(t.value),!0),a?t:[`${e}=Ref<`,t,">"]):qe(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=tt(t),a?t:[`${e}=`,t])}function Ro(e,t,a,o){try{return o?e(...o):e()}catch(r){hr(r,t,a)}}function Ea(e,t,a,o){if(qe(e)){const r=Ro(e,t,a,o);return r&&ml(r)&&r.catch(n=>{hr(n,t,a)}),r}if(je(e)){const r=[];for(let n=0;n<e.length;n++)r.push(Ea(e[n],t,a,o));return r}}function hr(e,t,a,o=!0){const r=t?t.vnode:null,{errorHandler:n,throwUnhandledErrorInProduction:s}=t&&t.appContext.config||bt;if(t){let l=t.parent;const d=t.proxy,p=`https://vuejs.org/error-reference/#runtime-${a}`;for(;l;){const u=l.ec;if(u){for(let v=0;v<u.length;v++)if(u[v](e,d,p)===!1)return}l=l.parent}if(n){Fa(),Ro(n,null,10,[e,d,p]),Pa();return}}mp(e,a,r,o,s)}function mp(e,t,a,o=!0,r=!1){if(r)throw e;console.error(e)}const Jt=[];let Wa=-1;const jo=[];let uo=null,Vo=0;const Kl=Promise.resolve();let un=null;function Kt(e){const t=un||Kl;return e?t.then(this?e.bind(this):e):t}function yp(e){let t=Wa+1,a=Jt.length;for(;t<a;){const o=t+a>>>1,r=Jt[o],n=mr(r);n<e||n===e&&r.flags&2?t=o+1:a=o}return t}function Is(e){if(!(e.flags&1)){const t=mr(e),a=Jt[Jt.length-1];!a||!(e.flags&2)&&t>=mr(a)?Jt.push(e):Jt.splice(yp(t),0,e),e.flags|=1,ql()}}function ql(){un||(un=Kl.then(Yl))}function wp(e){je(e)?jo.push(...e):uo&&e.id===-1?uo.splice(Vo+1,0,e):e.flags&1||(jo.push(e),e.flags|=1),ql()}function Jl(e,t,a=Wa+1){for(;a<Jt.length;a++){const o=Jt[a];if(o&&o.flags&2){if(e&&o.id!==e.uid)continue;Jt.splice(a,1),a--,o.flags&4&&(o.flags&=-2),o(),o.flags&4||(o.flags&=-2)}}}function Zl(e){if(jo.length){const t=[...new Set(jo)].sort((a,o)=>mr(a)-mr(o));if(jo.length=0,uo){uo.push(...t);return}for(uo=t,Vo=0;Vo<uo.length;Vo++){const a=uo[Vo];a.flags&4&&(a.flags&=-2),a.flags&8||a(),a.flags&=-2}uo=null,Vo=0}}const mr=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Yl(e){try{for(Wa=0;Wa<Jt.length;Wa++){const t=Jt[Wa];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Ro(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Wa<Jt.length;Wa++){const t=Jt[Wa];t&&(t.flags&=-2)}Wa=-1,Jt.length=0,Zl(),un=null,(Jt.length||jo.length)&&Yl()}}let Wt=null,Xl=null;function gn(e){const t=Wt;return Wt=e,Xl=e&&e.type.__scopeId||null,t}function Ct(e,t=Wt,a){if(!t||e._n)return e;const o=(...r)=>{o._d&&Vd(-1);const n=gn(t);let s;try{s=e(...r)}finally{gn(n),o._d&&Vd(1)}return s};return o._n=!0,o._c=!0,o._d=!0,o}function go(e,t){if(Wt===null)return e;const a=Sn(Wt),o=e.dirs||(e.dirs=[]);for(let r=0;r<t.length;r++){let[n,s,l,d=bt]=t[r];n&&(qe(n)&&(n={mounted:n,updated:n}),n.deep&&qa(s),o.push({dir:n,instance:a,value:s,oldValue:void 0,arg:l,modifiers:d}))}return e}function xo(e,t,a,o){const r=e.dirs,n=t&&t.dirs;for(let s=0;s<r.length;s++){const l=r[s];n&&(l.oldValue=n[s].value);let d=l.dir[o];d&&(Fa(),Ea(d,a,8,[e.el,l,e,t]),Pa())}}const Ql=Symbol("_vte"),ed=e=>e.__isTeleport,yr=e=>e&&(e.disabled||e.disabled===""),td=e=>e&&(e.defer||e.defer===""),ad=e=>typeof SVGElement<"u"&&e instanceof SVGElement,od=e=>typeof MathMLElement=="function"&&e instanceof MathMLElement,Os=(e,t)=>{const a=e&&e.to;return _t(a)?t?t(a):null:a},rd={name:"Teleport",__isTeleport:!0,process(e,t,a,o,r,n,s,l,d,p){const{mc:u,pc:v,pbc:b,o:{insert:c,querySelector:f,createText:g,createComment:T}}=p,S=yr(t.props);let{shapeFlag:$,children:C,dynamicChildren:H}=t;if(e==null){const O=t.el=g(""),I=t.anchor=g("");c(O,a,o),c(I,a,o);const _=(m,w)=>{$&16&&(r&&r.isCE&&(r.ce._teleportTarget=m),u(C,m,w,r,n,s,l,d))},k=()=>{const m=t.target=Os(t.props,f),w=nd(m,t,g,c);m&&(s!=="svg"&&ad(m)?s="svg":s!=="mathml"&&od(m)&&(s="mathml"),S||(_(m,w),fn(t,!1)))};S&&(_(a,I),fn(t,!0)),td(t.props)?(t.el.__isMounted=!1,Yt(()=>{k(),delete t.el.__isMounted},n)):k()}else{if(td(t.props)&&e.el.__isMounted===!1){Yt(()=>{rd.process(e,t,a,o,r,n,s,l,d,p)},n);return}t.el=e.el,t.targetStart=e.targetStart;const O=t.anchor=e.anchor,I=t.target=e.target,_=t.targetAnchor=e.targetAnchor,k=yr(e.props),m=k?a:I,w=k?O:_;if(s==="svg"||ad(I)?s="svg":(s==="mathml"||od(I))&&(s="mathml"),H?(b(e.dynamicChildren,H,m,r,n,s,l),Zs(e,t,!0)):d||v(e,t,m,w,r,n,s,l,!1),S)k?t.props&&e.props&&t.props.to!==e.props.to&&(t.props.to=e.props.to):pn(t,a,O,p,1);else if((t.props&&t.props.to)!==(e.props&&e.props.to)){const D=t.target=Os(t.props,f);D&&pn(t,D,null,p,0)}else k&&pn(t,I,_,p,1);fn(t,S)}},remove(e,t,a,{um:o,o:{remove:r}},n){const{shapeFlag:s,children:l,anchor:d,targetStart:p,targetAnchor:u,target:v,props:b}=e;if(v&&(r(p),r(u)),n&&r(d),s&16){const c=n||!yr(b);for(let f=0;f<l.length;f++){const g=l[f];o(g,t,a,c,!!g.dynamicChildren)}}},move:pn,hydrate:kp};function pn(e,t,a,{o:{insert:o},m:r},n=2){n===0&&o(e.targetAnchor,t,a);const{el:s,anchor:l,shapeFlag:d,children:p,props:u}=e,v=n===2;if(v&&o(s,t,a),(!v||yr(u))&&d&16)for(let b=0;b<p.length;b++)r(p[b],t,a,2);v&&o(l,t,a)}function kp(e,t,a,o,r,n,{o:{nextSibling:s,parentNode:l,querySelector:d,insert:p,createText:u}},v){const b=t.target=Os(t.props,d);if(b){const c=yr(t.props),f=b._lpa||b.firstChild;if(t.shapeFlag&16)if(c)t.anchor=v(s(e),t,l(e),a,o,r,n),t.targetStart=f,t.targetAnchor=f&&s(f);else{t.anchor=s(e);let g=f;for(;g;){if(g&&g.nodeType===8){if(g.data==="teleport start anchor")t.targetStart=g;else if(g.data==="teleport anchor"){t.targetAnchor=g,b._lpa=t.targetAnchor&&s(t.targetAnchor);break}}g=s(g)}t.targetAnchor||nd(b,t,u,p),v(f&&s(f),t,b,a,o,r,n)}fn(t,c)}return t.anchor&&s(t.anchor)}const xp=rd;function fn(e,t){const a=e.ctx;if(a&&a.ut){let o,r;for(t?(o=e.el,r=e.anchor):(o=e.targetStart,r=e.targetAnchor);o&&o!==r;)o.nodeType===1&&o.setAttribute("data-v-owner",a.uid),o=o.nextSibling;a.ut()}}function nd(e,t,a,o){const r=t.targetStart=a(""),n=t.targetAnchor=a("");return r[Ql]=n,e&&(o(r,e),o(n,e)),n}const Ja=Symbol("_leaveCb"),bn=Symbol("_enterCb");function _p(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Et(()=>{e.isMounted=!0}),$t(()=>{e.isUnmounting=!0}),e}const xa=[Function,Array],sd={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:xa,onEnter:xa,onAfterEnter:xa,onEnterCancelled:xa,onBeforeLeave:xa,onLeave:xa,onAfterLeave:xa,onLeaveCancelled:xa,onBeforeAppear:xa,onAppear:xa,onAfterAppear:xa,onAppearCancelled:xa},id=e=>{const t=e.subTree;return t.component?id(t.component):t},Cp={name:"BaseTransition",props:sd,setup(e,{slots:t}){const a=_n(),o=_p();return()=>{const r=t.default&&ud(t.default(),!0);if(!r||!r.length)return;const n=ld(r),s=tt(e),{mode:l}=s;if(o.isLeaving)return Hs(n);const d=cd(n);if(!d)return Hs(n);let p=Bs(d,s,o,a,v=>p=v);d.type!==qt&&wr(d,p);let u=a.subTree&&cd(a.subTree);if(u&&u.type!==qt&&!Co(d,u)&&id(a).type!==qt){let v=Bs(u,s,o,a);if(wr(u,v),l==="out-in"&&d.type!==qt)return o.isLeaving=!0,v.afterLeave=()=>{o.isLeaving=!1,a.job.flags&8||a.update(),delete v.afterLeave,u=void 0},Hs(n);l==="in-out"&&d.type!==qt?v.delayLeave=(b,c,f)=>{const g=dd(o,u);g[String(u.key)]=u,b[Ja]=()=>{c(),b[Ja]=void 0,delete p.delayedLeave,u=void 0},p.delayedLeave=()=>{f(),delete p.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return n}}};function ld(e){let t=e[0];if(e.length>1){for(const a of e)if(a.type!==qt){t=a;break}}return t}const Sp=Cp;function dd(e,t){const{leavingVNodes:a}=e;let o=a.get(t.type);return o||(o=Object.create(null),a.set(t.type,o)),o}function Bs(e,t,a,o,r){const{appear:n,mode:s,persisted:l=!1,onBeforeEnter:d,onEnter:p,onAfterEnter:u,onEnterCancelled:v,onBeforeLeave:b,onLeave:c,onAfterLeave:f,onLeaveCancelled:g,onBeforeAppear:T,onAppear:S,onAfterAppear:$,onAppearCancelled:C}=t,H=String(e.key),O=dd(a,e),I=(m,w)=>{m&&Ea(m,o,9,w)},_=(m,w)=>{const D=w[1];I(m,w),je(m)?m.every(R=>R.length<=1)&&D():m.length<=1&&D()},k={mode:s,persisted:l,beforeEnter(m){let w=d;if(!a.isMounted)if(n)w=T||d;else return;m[Ja]&&m[Ja](!0);const D=O[H];D&&Co(e,D)&&D.el[Ja]&&D.el[Ja](),I(w,[m])},enter(m){let w=p,D=u,R=v;if(!a.isMounted)if(n)w=S||p,D=$||u,R=C||v;else return;let L=!1;const Z=m[bn]=K=>{L||(L=!0,K?I(R,[m]):I(D,[m]),k.delayedLeave&&k.delayedLeave(),m[bn]=void 0)};w?_(w,[m,Z]):Z()},leave(m,w){const D=String(e.key);if(m[bn]&&m[bn](!0),a.isUnmounting)return w();I(b,[m]);let R=!1;const L=m[Ja]=Z=>{R||(R=!0,w(),Z?I(g,[m]):I(f,[m]),m[Ja]=void 0,O[D]===e&&delete O[D])};O[D]=e,c?_(c,[m,L]):L()},clone(m){const w=Bs(m,t,a,o,r);return r&&r(w),w}};return k}function Hs(e){if(xr(e))return e=po(e),e.children=null,e}function cd(e){if(!xr(e))return ed(e.type)&&e.children?ld(e.children):e;if(e.component)return e.component.subTree;const{shapeFlag:t,children:a}=e;if(a){if(t&16)return a[0];if(t&32&&qe(a.default))return a.default()}}function wr(e,t){e.shapeFlag&6&&e.component?(e.transition=t,wr(e.component.subTree,t)):e.shapeFlag&128?(e.ssContent.transition=t.clone(e.ssContent),e.ssFallback.transition=t.clone(e.ssFallback)):e.transition=t}function ud(e,t=!1,a){let o=[],r=0;for(let n=0;n<e.length;n++){let s=e[n];const l=a==null?s.key:String(a)+String(s.key!=null?s.key:n);s.type===ye?(s.patchFlag&128&&r++,o=o.concat(ud(s.children,t,l))):(t||s.type!==qt)&&o.push(l!=null?po(s,{key:l}):s)}if(r>1)for(let n=0;n<o.length;n++)o[n].patchFlag=-2;return o}/*! #__NO_SIDE_EFFECTS__ */function Ve(e,t){return qe(e)?It({name:e.name},t,{setup:e}):e}function Fs(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function kr(e,t,a,o,r=!1){if(je(e)){e.forEach((f,g)=>kr(f,t&&(je(t)?t[g]:t),a,o,r));return}if(Uo(o)&&!r){o.shapeFlag&512&&o.type.__asyncResolved&&o.component.subTree.component&&kr(e,t,a,o.component.subTree);return}const n=o.shapeFlag&4?Sn(o.component):o.el,s=r?null:n,{i:l,r:d}=e,p=t&&t.r,u=l.refs===bt?l.refs={}:l.refs,v=l.setupState,b=tt(v),c=v===bt?vl:f=>ut(b,f);if(p!=null&&p!==d){if(_t(p))u[p]=null,c(p)&&(v[p]=null);else if(Lt(p)){p.value=null;const f=t;f.k&&(u[f.k]=null)}}if(qe(d))Ro(d,l,12,[s,u]);else{const f=_t(d),g=Lt(d);if(f||g){const T=()=>{if(e.f){const S=f?c(d)?v[d]:u[d]:d.value;if(r)je(S)&&ms(S,n);else if(je(S))S.includes(n)||S.push(n);else if(f)u[d]=[n],c(d)&&(v[d]=u[d]);else{const $=[n];d.value=$,e.k&&(u[e.k]=$)}}else f?(u[d]=s,c(d)&&(v[d]=s)):g&&(d.value=s,e.k&&(u[e.k]=s))};s?(T.id=-1,Yt(T,a)):T()}}}const gd=e=>e.nodeType===8;Qr().requestIdleCallback,Qr().cancelIdleCallback;function Tp(e,t){if(gd(e)&&e.data==="["){let a=1,o=e.nextSibling;for(;o;){if(o.nodeType===1){if(t(o)===!1)break}else if(gd(o))if(o.data==="]"){if(--a===0)break}else o.data==="["&&a++;o=o.nextSibling}}else t(e)}const Uo=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function oa(e){qe(e)&&(e={loader:e});const{loader:t,loadingComponent:a,errorComponent:o,delay:r=200,hydrate:n,timeout:s,suspensible:l=!0,onError:d}=e;let p=null,u,v=0;const b=()=>(v++,p=null,c()),c=()=>{let f;return p||(f=p=t().catch(g=>{if(g=g instanceof Error?g:new Error(String(g)),d)return new Promise((T,S)=>{d(g,()=>T(b()),()=>S(g),v+1)});throw g}).then(g=>f!==p&&p?p:(g&&(g.__esModule||g[Symbol.toStringTag]==="Module")&&(g=g.default),u=g,g)))};return Ve({name:"AsyncComponentWrapper",__asyncLoader:c,__asyncHydrate(f,g,T){let S=!1;(g.bu||(g.bu=[])).push(()=>S=!0);const $=()=>{S||T()},C=n?()=>{const H=n($,O=>Tp(f,O));H&&(g.bum||(g.bum=[])).push(H)}:$;u?C():c().then(()=>!g.isUnmounted&&C())},get __asyncResolved(){return u},setup(){const f=zt;if(Fs(f),u)return()=>Ps(u,f);const g=C=>{p=null,hr(C,f,13,!o)};if(l&&f.suspense||Ko)return c().then(C=>()=>Ps(C,f)).catch(C=>(g(C),()=>o?Re(o,{error:C}):null));const T=oe(!1),S=oe(),$=oe(!!r);return r&&setTimeout(()=>{$.value=!1},r),s!=null&&setTimeout(()=>{if(!T.value&&!S.value){const C=new Error(`Async component timed out after ${s}ms.`);g(C),S.value=C}},s),c().then(()=>{T.value=!0,f.parent&&xr(f.parent.vnode)&&f.parent.update()}).catch(C=>{g(C),S.value=C}),()=>{if(T.value&&u)return Ps(u,f);if(S.value&&o)return Re(o,{error:S.value});if(a&&!$.value)return Re(a)}}})}function Ps(e,t){const{ref:a,props:o,children:r,ce:n}=t.vnode,s=Re(e,o,r);return s.ref=a,s.ce=n,delete t.vnode.ce,s}const xr=e=>e.type.__isKeepAlive;function $p(e,t){pd(e,"a",t)}function Mp(e,t){pd(e,"da",t)}function pd(e,t,a=zt){const o=e.__wdc||(e.__wdc=()=>{let r=a;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(vn(t,o,a),a){let r=a.parent;for(;r&&r.parent;)xr(r.parent.vnode)&&Ap(o,t,a,r),r=r.parent}}function Ap(e,t,a,o){const r=vn(t,e,o,!0);Ws(()=>{ms(o[t],r)},a)}function vn(e,t,a=zt,o=!1){if(a){const r=a[e]||(a[e]=[]),n=t.__weh||(t.__weh=(...s)=>{Fa();const l=Mr(a),d=Ea(t,a,e,s);return l(),Pa(),d});return o?r.unshift(n):r.push(n),n}}const Za=e=>(t,a=zt)=>{(!Ko||e==="sp")&&vn(e,(...o)=>t(...o),a)},Dp=Za("bm"),Et=Za("m"),Lp=Za("bu"),Ep=Za("u"),$t=Za("bum"),Ws=Za("um"),Np=Za("sp"),Ip=Za("rtg"),Op=Za("rtc");function Bp(e,t=zt){vn("ec",e,t)}const fd="components";function Hp(e,t){return hd(fd,e,!0,t)||e}const bd=Symbol.for("v-ndc");function vd(e){return _t(e)?hd(fd,e,!1)||e:e||bd}function hd(e,t,a=!0,o=!1){const r=Wt||zt;if(r){const n=r.type;{const l=Xd(n,!1);if(l&&(l===t||l===wa(t)||l===Zr(wa(t))))return n}const s=md(r[e]||n[e],t)||md(r.appContext[e],t);return!s&&o?n:s}}function md(e,t){return e&&(e[t]||e[wa(t)]||e[Zr(wa(t))])}function Ne(e,t,a,o){let r;const n=a,s=je(e);if(s||_t(e)){const l=s&&zo(e);let d=!1,p=!1;l&&(d=!ka(e),p=co(e),e=an(e)),r=new Array(e.length);for(let u=0,v=e.length;u<v;u++)r[u]=t(d?p?ln(Pt(e[u])):Pt(e[u]):e[u],u,void 0,n)}else if(typeof e=="number"){r=new Array(e);for(let l=0;l<e;l++)r[l]=t(l+1,l,void 0,n)}else if(vt(e))if(e[Symbol.iterator])r=Array.from(e,(l,d)=>t(l,d,void 0,n));else{const l=Object.keys(e);r=new Array(l.length);for(let d=0,p=l.length;d<p;d++){const u=l[d];r[d]=t(e[u],u,d,n)}}else r=[];return r}function zs(e,t,a={},o,r){if(Wt.ce||Wt.parent&&Uo(Wt.parent)&&Wt.parent.ce)return t!=="default"&&(a.name=t),h(),lt(ye,null,[Re("slot",a,o&&o())],64);let n=e[t];n&&n._c&&(n._d=!1),h();const s=n&&yd(n(a)),l=a.key||s&&s.key,d=lt(ye,{key:(l&&!Da(l)?l:`_${t}`)+(!s&&o?"_fb":"")},s||(o?o():[]),s&&e._===1?64:-2);return!r&&d.scopeId&&(d.slotScopeIds=[d.scopeId+"-s"]),n&&n._c&&(n._d=!0),d}function yd(e){return e.some(t=>$r(t)?!(t.type===qt||t.type===ye&&!yd(t.children)):!0)?e:null}const Rs=e=>e?Jd(e)?Sn(e):Rs(e.parent):null,_r=It(Object.create(null),{$:e=>e,$el:e=>e.vnode.el,$data:e=>e.data,$props:e=>e.props,$attrs:e=>e.attrs,$slots:e=>e.slots,$refs:e=>e.refs,$parent:e=>Rs(e.parent),$root:e=>Rs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>_d(e),$forceUpdate:e=>e.f||(e.f=()=>{Is(e.update)}),$nextTick:e=>e.n||(e.n=Kt.bind(e.proxy)),$watch:e=>nf.bind(e)}),js=(e,t)=>e!==bt&&!e.__isScriptSetup&&ut(e,t),Fp={get({_:e},t){if(t==="__v_skip")return!0;const{ctx:a,setupState:o,data:r,props:n,accessCache:s,type:l,appContext:d}=e;let p;if(t[0]!=="$"){const c=s[t];if(c!==void 0)switch(c){case 1:return o[t];case 2:return r[t];case 4:return a[t];case 3:return n[t]}else{if(js(o,t))return s[t]=1,o[t];if(r!==bt&&ut(r,t))return s[t]=2,r[t];if((p=e.propsOptions[0])&&ut(p,t))return s[t]=3,n[t];if(a!==bt&&ut(a,t))return s[t]=4,a[t];Vs&&(s[t]=0)}}const u=_r[t];let v,b;if(u)return t==="$attrs"&&Gt(e.attrs,"get",""),u(e);if((v=l.__cssModules)&&(v=v[t]))return v;if(a!==bt&&ut(a,t))return s[t]=4,a[t];if(b=d.config.globalProperties,ut(b,t))return b[t]},set({_:e},t,a){const{data:o,setupState:r,ctx:n}=e;return js(r,t)?(r[t]=a,!0):o!==bt&&ut(o,t)?(o[t]=a,!0):ut(e.props,t)||t[0]==="$"&&t.slice(1)in e?!1:(n[t]=a,!0)},has({_:{data:e,setupState:t,accessCache:a,ctx:o,appContext:r,propsOptions:n,type:s}},l){let d,p;return!!(a[l]||e!==bt&&l[0]!=="$"&&ut(e,l)||js(t,l)||(d=n[0])&&ut(d,l)||ut(o,l)||ut(_r,l)||ut(r.config.globalProperties,l)||(p=s.__cssModules)&&p[l])},defineProperty(e,t,a){return a.get!=null?e._.accessCache[t]=0:ut(a,"value")&&this.set(e,t,a.value,null),Reflect.defineProperty(e,t,a)}};function wd(e){return je(e)?e.reduce((t,a)=>(t[a]=null,t),{}):e}let Vs=!0;function Pp(e){const t=_d(e),a=e.proxy,o=e.ctx;Vs=!1,t.beforeCreate&&kd(t.beforeCreate,e,"bc");const{data:r,computed:n,methods:s,watch:l,provide:d,inject:p,created:u,beforeMount:v,mounted:b,beforeUpdate:c,updated:f,activated:g,deactivated:T,beforeDestroy:S,beforeUnmount:$,destroyed:C,unmounted:H,render:O,renderTracked:I,renderTriggered:_,errorCaptured:k,serverPrefetch:m,expose:w,inheritAttrs:D,components:R,directives:L,filters:Z}=t;if(p&&Wp(p,o,null),s)for(const le in s){const J=s[le];qe(J)&&(o[le]=J.bind(a))}if(r){const le=r.call(a,a);vt(le)&&(e.data=br(le))}if(Vs=!0,n)for(const le in n){const J=n[le],de=qe(J)?J.bind(a,a):qe(J.get)?J.get.bind(a,a):Ha,B=!qe(J)&&qe(J.set)?J.set.bind(a):Ha,G=x({get:de,set:B});Object.defineProperty(o,le,{enumerable:!0,configurable:!0,get:()=>G.value,set:A=>G.value=A})}if(l)for(const le in l)xd(l[le],o,a,le);if(d){const le=qe(d)?d.call(a):d;Reflect.ownKeys(le).forEach(J=>{Gp(J,le[J])})}u&&kd(u,e,"c");function Y(le,J){je(J)?J.forEach(de=>le(de.bind(a))):J&&le(J.bind(a))}if(Y(Dp,v),Y(Et,b),Y(Lp,c),Y(Ep,f),Y($p,g),Y(Mp,T),Y(Bp,k),Y(Op,I),Y(Ip,_),Y($t,$),Y(Ws,H),Y(Np,m),je(w))if(w.length){const le=e.exposed||(e.exposed={});w.forEach(J=>{Object.defineProperty(le,J,{get:()=>a[J],set:de=>a[J]=de,enumerable:!0})})}else e.exposed||(e.exposed={});O&&e.render===Ha&&(e.render=O),D!=null&&(e.inheritAttrs=D),R&&(e.components=R),L&&(e.directives=L),m&&Fs(e)}function Wp(e,t,a=Ha){je(e)&&(e=Us(e));for(const o in e){const r=e[o];let n;vt(r)?"default"in r?n=mn(r.from||o,r.default,!0):n=mn(r.from||o):n=mn(r),Lt(n)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>n.value,set:s=>n.value=s}):t[o]=n}}function kd(e,t,a){Ea(je(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,a)}function xd(e,t,a,o){let r=o.includes(".")?Pd(a,o):()=>a[o];if(_t(e)){const n=t[e];qe(n)&&Oe(r,n)}else if(qe(e))Oe(r,e.bind(a));else if(vt(e))if(je(e))e.forEach(n=>xd(n,t,a,o));else{const n=qe(e.handler)?e.handler.bind(a):t[e.handler];qe(n)&&Oe(r,n,e)}}function _d(e){const t=e.type,{mixins:a,extends:o}=t,{mixins:r,optionsCache:n,config:{optionMergeStrategies:s}}=e.appContext,l=n.get(t);let d;return l?d=l:!r.length&&!a&&!o?d=t:(d={},r.length&&r.forEach(p=>hn(d,p,s,!0)),hn(d,t,s)),vt(t)&&n.set(t,d),d}function hn(e,t,a,o=!1){const{mixins:r,extends:n}=t;n&&hn(e,n,a,!0),r&&r.forEach(s=>hn(e,s,a,!0));for(const s in t)if(!(o&&s==="expose")){const l=zp[s]||a&&a[s];e[s]=l?l(e[s],t[s]):t[s]}return e}const zp={data:Cd,props:Sd,emits:Sd,methods:Cr,computed:Cr,beforeCreate:Zt,created:Zt,beforeMount:Zt,mounted:Zt,beforeUpdate:Zt,updated:Zt,beforeDestroy:Zt,beforeUnmount:Zt,destroyed:Zt,unmounted:Zt,activated:Zt,deactivated:Zt,errorCaptured:Zt,serverPrefetch:Zt,components:Cr,directives:Cr,watch:jp,provide:Cd,inject:Rp};function Cd(e,t){return t?e?function(){return It(qe(e)?e.call(this,this):e,qe(t)?t.call(this,this):t)}:t:e}function Rp(e,t){return Cr(Us(e),Us(t))}function Us(e){if(je(e)){const t={};for(let a=0;a<e.length;a++)t[e[a]]=e[a];return t}return e}function Zt(e,t){return e?[...new Set([].concat(e,t))]:t}function Cr(e,t){return e?It(Object.create(null),e,t):t}function Sd(e,t){return e?je(e)&&je(t)?[...new Set([...e,...t])]:It(Object.create(null),wd(e),wd(t??{})):t}function jp(e,t){if(!e)return t;if(!t)return e;const a=It(Object.create(null),e);for(const o in t)a[o]=Zt(e[o],t[o]);return a}function Td(){return{app:null,config:{isNativeTag:vl,performance:!1,globalProperties:{},optionMergeStrategies:{},errorHandler:void 0,warnHandler:void 0,compilerOptions:{}},mixins:[],components:{},directives:{},provides:Object.create(null),optionsCache:new WeakMap,propsCache:new WeakMap,emitsCache:new WeakMap}}let Vp=0;function Up(e,t){return function(o,r=null){qe(o)||(o=It({},o)),r!=null&&!vt(r)&&(r=null);const n=Td(),s=new WeakSet,l=[];let d=!1;const p=n.app={_uid:Vp++,_component:o,_props:r,_container:null,_context:n,_instance:null,version:$f,get config(){return n.config},set config(u){},use(u,...v){return s.has(u)||(u&&qe(u.install)?(s.add(u),u.install(p,...v)):qe(u)&&(s.add(u),u(p,...v))),p},mixin(u){return n.mixins.includes(u)||n.mixins.push(u),p},component(u,v){return v?(n.components[u]=v,p):n.components[u]},directive(u,v){return v?(n.directives[u]=v,p):n.directives[u]},mount(u,v,b){if(!d){const c=p._ceVNode||Re(o,r);return c.appContext=n,b===!0?b="svg":b===!1&&(b=void 0),e(c,u,b),d=!0,p._container=u,u.__vue_app__=p,Sn(c.component)}},onUnmount(u){l.push(u)},unmount(){d&&(Ea(l,p._instance,16),e(null,p._container),delete p._container.__vue_app__)},provide(u,v){return n.provides[u]=v,p},runWithContext(u){const v=Go;Go=p;try{return u()}finally{Go=v}}};return p}}let Go=null;function Gp(e,t){if(zt){let a=zt.provides;const o=zt.parent&&zt.parent.provides;o===a&&(a=zt.provides=Object.create(o)),a[e]=t}}function mn(e,t,a=!1){const o=_n();if(o||Go){let r=Go?Go._context.provides:o?o.parent==null||o.ce?o.vnode.appContext&&o.vnode.appContext.provides:o.parent.provides:void 0;if(r&&e in r)return r[e];if(arguments.length>1)return a&&qe(t)?t.call(o&&o.proxy):t}}const $d={},Md=()=>Object.create($d),Ad=e=>Object.getPrototypeOf(e)===$d;function Kp(e,t,a,o=!1){const r={},n=Md();e.propsDefaults=Object.create(null),Dd(e,t,r,n);for(const s in e.propsOptions[0])s in r||(r[s]=void 0);a?e.props=o?r:ap(r):e.type.props?e.props=r:e.props=n,e.attrs=n}function qp(e,t,a,o){const{props:r,attrs:n,vnode:{patchFlag:s}}=e,l=tt(r),[d]=e.propsOptions;let p=!1;if((o||s>0)&&!(s&16)){if(s&8){const u=e.vnode.dynamicProps;for(let v=0;v<u.length;v++){let b=u[v];if(yn(e.emitsOptions,b))continue;const c=t[b];if(d)if(ut(n,b))c!==n[b]&&(n[b]=c,p=!0);else{const f=wa(b);r[f]=Gs(d,l,f,c,e,!1)}else c!==n[b]&&(n[b]=c,p=!0)}}}else{Dd(e,t,r,n)&&(p=!0);let u;for(const v in l)(!t||!ut(t,v)&&((u=io(v))===v||!ut(t,u)))&&(d?a&&(a[v]!==void 0||a[u]!==void 0)&&(r[v]=Gs(d,l,v,void 0,e,!0)):delete r[v]);if(n!==l)for(const v in n)(!t||!ut(t,v))&&(delete n[v],p=!0)}p&&Ga(e.attrs,"set","")}function Dd(e,t,a,o){const[r,n]=e.propsOptions;let s=!1,l;if(t)for(let d in t){if(dr(d))continue;const p=t[d];let u;r&&ut(r,u=wa(d))?!n||!n.includes(u)?a[u]=p:(l||(l={}))[u]=p:yn(e.emitsOptions,d)||(!(d in o)||p!==o[d])&&(o[d]=p,s=!0)}if(n){const d=tt(a),p=l||bt;for(let u=0;u<n.length;u++){const v=n[u];a[v]=Gs(r,d,v,p[v],e,!ut(p,v))}}return s}function Gs(e,t,a,o,r,n){const s=e[a];if(s!=null){const l=ut(s,"default");if(l&&o===void 0){const d=s.default;if(s.type!==Function&&!s.skipFactory&&qe(d)){const{propsDefaults:p}=r;if(a in p)o=p[a];else{const u=Mr(r);o=p[a]=d.call(null,t),u()}}else o=d;r.ce&&r.ce._setProp(a,o)}s[0]&&(n&&!l?o=!1:s[1]&&(o===""||o===io(a))&&(o=!0))}return o}const Jp=new WeakMap;function Ld(e,t,a=!1){const o=a?Jp:t.propsCache,r=o.get(e);if(r)return r;const n=e.props,s={},l=[];let d=!1;if(!qe(e)){const u=v=>{d=!0;const[b,c]=Ld(v,t,!0);It(s,b),c&&l.push(...c)};!a&&t.mixins.length&&t.mixins.forEach(u),e.extends&&u(e.extends),e.mixins&&e.mixins.forEach(u)}if(!n&&!d)return vt(e)&&o.set(e,Fo),Fo;if(je(n))for(let u=0;u<n.length;u++){const v=wa(n[u]);Ed(v)&&(s[v]=bt)}else if(n)for(const u in n){const v=wa(u);if(Ed(v)){const b=n[u],c=s[v]=je(b)||qe(b)?{type:b}:It({},b),f=c.type;let g=!1,T=!0;if(je(f))for(let S=0;S<f.length;++S){const $=f[S],C=qe($)&&$.name;if(C==="Boolean"){g=!0;break}else C==="String"&&(T=!1)}else g=qe(f)&&f.name==="Boolean";c[0]=g,c[1]=T,(g||ut(c,"default"))&&l.push(v)}}const p=[s,l];return vt(e)&&o.set(e,p),p}function Ed(e){return e[0]!=="$"&&!dr(e)}const Ks=e=>e==="_"||e==="_ctx"||e==="$stable",qs=e=>je(e)?e.map(za):[za(e)],Zp=(e,t,a)=>{if(t._n)return t;const o=Ct((...r)=>qs(t(...r)),a);return o._c=!1,o},Nd=(e,t,a)=>{const o=e._ctx;for(const r in e){if(Ks(r))continue;const n=e[r];if(qe(n))t[r]=Zp(r,n,o);else if(n!=null){const s=qs(n);t[r]=()=>s}}},Id=(e,t)=>{const a=qs(t);e.slots.default=()=>a},Od=(e,t,a)=>{for(const o in t)(a||!Ks(o))&&(e[o]=t[o])},Yp=(e,t,a)=>{const o=e.slots=Md();if(e.vnode.shapeFlag&32){const r=t._;r?(Od(o,t,a),a&&kl(o,"_",r,!0)):Nd(t,o)}else t&&Id(e,t)},Xp=(e,t,a)=>{const{vnode:o,slots:r}=e;let n=!0,s=bt;if(o.shapeFlag&32){const l=t._;l?a&&l===1?n=!1:Od(r,t,a):(n=!t.$stable,Nd(t,r)),s=t}else t&&(Id(e,t),s={default:1});if(n)for(const l in r)!Ks(l)&&s[l]==null&&delete r[l]},Yt=pf;function Qp(e){return ef(e)}function ef(e,t){const a=Qr();a.__VUE__=!0;const{insert:o,remove:r,patchProp:n,createElement:s,createText:l,createComment:d,setText:p,setElementText:u,parentNode:v,nextSibling:b,setScopeId:c=Ha,insertStaticContent:f}=e,g=(N,P,re,ge=null,ee=null,be=null,ve=void 0,xe=null,_e=!!P.dynamicChildren)=>{if(N===P)return;N&&!Co(N,P)&&(ge=U(N),A(N,ee,be,!0),N=null),P.patchFlag===-2&&(_e=!1,P.dynamicChildren=null);const{type:ue,ref:Ee,shapeFlag:Se}=P;switch(ue){case wn:T(N,P,re,ge);break;case qt:S(N,P,re,ge);break;case kn:N==null&&$(P,re,ge,ve);break;case ye:R(N,P,re,ge,ee,be,ve,xe,_e);break;default:Se&1?O(N,P,re,ge,ee,be,ve,xe,_e):Se&6?L(N,P,re,ge,ee,be,ve,xe,_e):(Se&64||Se&128)&&ue.process(N,P,re,ge,ee,be,ve,xe,_e,ce)}Ee!=null&&ee?kr(Ee,N&&N.ref,be,P||N,!P):Ee==null&&N&&N.ref!=null&&kr(N.ref,null,be,N,!0)},T=(N,P,re,ge)=>{if(N==null)o(P.el=l(P.children),re,ge);else{const ee=P.el=N.el;P.children!==N.children&&p(ee,P.children)}},S=(N,P,re,ge)=>{N==null?o(P.el=d(P.children||""),re,ge):P.el=N.el},$=(N,P,re,ge)=>{[N.el,N.anchor]=f(N.children,P,re,ge,N.el,N.anchor)},C=({el:N,anchor:P},re,ge)=>{let ee;for(;N&&N!==P;)ee=b(N),o(N,re,ge),N=ee;o(P,re,ge)},H=({el:N,anchor:P})=>{let re;for(;N&&N!==P;)re=b(N),r(N),N=re;r(P)},O=(N,P,re,ge,ee,be,ve,xe,_e)=>{P.type==="svg"?ve="svg":P.type==="math"&&(ve="mathml"),N==null?I(P,re,ge,ee,be,ve,xe,_e):m(N,P,ee,be,ve,xe,_e)},I=(N,P,re,ge,ee,be,ve,xe)=>{let _e,ue;const{props:Ee,shapeFlag:Se,transition:te,dirs:se}=N;if(_e=N.el=s(N.type,be,Ee&&Ee.is,Ee),Se&8?u(_e,N.children):Se&16&&k(N.children,_e,null,ge,ee,Js(N,be),ve,xe),se&&xo(N,null,ge,"created"),_(_e,N,N.scopeId,ve,ge),Ee){for(const $e in Ee)$e!=="value"&&!dr($e)&&n(_e,$e,null,Ee[$e],be,ge);"value"in Ee&&n(_e,"value",null,Ee.value,be),(ue=Ee.onVnodeBeforeMount)&&Ra(ue,ge,N)}se&&xo(N,null,ge,"beforeMount");const me=tf(ee,te);me&&te.beforeEnter(_e),o(_e,P,re),((ue=Ee&&Ee.onVnodeMounted)||me||se)&&Yt(()=>{ue&&Ra(ue,ge,N),me&&te.enter(_e),se&&xo(N,null,ge,"mounted")},ee)},_=(N,P,re,ge,ee)=>{if(re&&c(N,re),ge)for(let be=0;be<ge.length;be++)c(N,ge[be]);if(ee){let be=ee.subTree;if(P===be||jd(be.type)&&(be.ssContent===P||be.ssFallback===P)){const ve=ee.vnode;_(N,ve,ve.scopeId,ve.slotScopeIds,ee.parent)}}},k=(N,P,re,ge,ee,be,ve,xe,_e=0)=>{for(let ue=_e;ue<N.length;ue++){const Ee=N[ue]=xe?fo(N[ue]):za(N[ue]);g(null,Ee,P,re,ge,ee,be,ve,xe)}},m=(N,P,re,ge,ee,be,ve)=>{const xe=P.el=N.el;let{patchFlag:_e,dynamicChildren:ue,dirs:Ee}=P;_e|=N.patchFlag&16;const Se=N.props||bt,te=P.props||bt;let se;if(re&&_o(re,!1),(se=te.onVnodeBeforeUpdate)&&Ra(se,re,P,N),Ee&&xo(P,N,re,"beforeUpdate"),re&&_o(re,!0),(Se.innerHTML&&te.innerHTML==null||Se.textContent&&te.textContent==null)&&u(xe,""),ue?w(N.dynamicChildren,ue,xe,re,ge,Js(P,ee),be):ve||J(N,P,xe,null,re,ge,Js(P,ee),be,!1),_e>0){if(_e&16)D(xe,Se,te,re,ee);else if(_e&2&&Se.class!==te.class&&n(xe,"class",null,te.class,ee),_e&4&&n(xe,"style",Se.style,te.style,ee),_e&8){const me=P.dynamicProps;for(let $e=0;$e<me.length;$e++){const Ae=me[$e],Pe=Se[Ae],Ie=te[Ae];(Ie!==Pe||Ae==="value")&&n(xe,Ae,Pe,Ie,ee,re)}}_e&1&&N.children!==P.children&&u(xe,P.children)}else!ve&&ue==null&&D(xe,Se,te,re,ee);((se=te.onVnodeUpdated)||Ee)&&Yt(()=>{se&&Ra(se,re,P,N),Ee&&xo(P,N,re,"updated")},ge)},w=(N,P,re,ge,ee,be,ve)=>{for(let xe=0;xe<P.length;xe++){const _e=N[xe],ue=P[xe],Ee=_e.el&&(_e.type===ye||!Co(_e,ue)||_e.shapeFlag&198)?v(_e.el):re;g(_e,ue,Ee,null,ge,ee,be,ve,!0)}},D=(N,P,re,ge,ee)=>{if(P!==re){if(P!==bt)for(const be in P)!dr(be)&&!(be in re)&&n(N,be,P[be],null,ee,ge);for(const be in re){if(dr(be))continue;const ve=re[be],xe=P[be];ve!==xe&&be!=="value"&&n(N,be,xe,ve,ee,ge)}"value"in re&&n(N,"value",P.value,re.value,ee)}},R=(N,P,re,ge,ee,be,ve,xe,_e)=>{const ue=P.el=N?N.el:l(""),Ee=P.anchor=N?N.anchor:l("");let{patchFlag:Se,dynamicChildren:te,slotScopeIds:se}=P;se&&(xe=xe?xe.concat(se):se),N==null?(o(ue,re,ge),o(Ee,re,ge),k(P.children||[],re,Ee,ee,be,ve,xe,_e)):Se>0&&Se&64&&te&&N.dynamicChildren?(w(N.dynamicChildren,te,re,ee,be,ve,xe),(P.key!=null||ee&&P===ee.subTree)&&Zs(N,P,!0)):J(N,P,re,Ee,ee,be,ve,xe,_e)},L=(N,P,re,ge,ee,be,ve,xe,_e)=>{P.slotScopeIds=xe,N==null?P.shapeFlag&512?ee.ctx.activate(P,re,ge,ve,_e):Z(P,re,ge,ee,be,ve,_e):K(N,P,_e)},Z=(N,P,re,ge,ee,be,ve)=>{const xe=N.component=yf(N,ge,ee);if(xr(N)&&(xe.ctx.renderer=ce),wf(xe,!1,ve),xe.asyncDep){if(ee&&ee.registerDep(xe,Y,ve),!N.el){const _e=xe.subTree=Re(qt);S(null,_e,P,re),N.placeholder=_e.el}}else Y(xe,N,P,re,ee,be,ve)},K=(N,P,re)=>{const ge=P.component=N.component;if(uf(N,P,re))if(ge.asyncDep&&!ge.asyncResolved){le(ge,P,re);return}else ge.next=P,ge.update();else P.el=N.el,ge.vnode=P},Y=(N,P,re,ge,ee,be,ve)=>{const xe=()=>{if(N.isMounted){let{next:Se,bu:te,u:se,parent:me,vnode:$e}=N;{const ze=Bd(N);if(ze){Se&&(Se.el=$e.el,le(N,Se,ve)),ze.asyncDep.then(()=>{N.isUnmounted||xe()});return}}let Ae=Se,Pe;_o(N,!1),Se?(Se.el=$e.el,le(N,Se,ve)):Se=$e,te&&Yr(te),(Pe=Se.props&&Se.props.onVnodeBeforeUpdate)&&Ra(Pe,me,Se,$e),_o(N,!0);const Ie=zd(N),Be=N.subTree;N.subTree=Ie,g(Be,Ie,v(Be.el),U(Be),N,ee,be),Se.el=Ie.el,Ae===null&&gf(N,Ie.el),se&&Yt(se,ee),(Pe=Se.props&&Se.props.onVnodeUpdated)&&Yt(()=>Ra(Pe,me,Se,$e),ee)}else{let Se;const{el:te,props:se}=P,{bm:me,m:$e,parent:Ae,root:Pe,type:Ie}=N,Be=Uo(P);_o(N,!1),me&&Yr(me),!Be&&(Se=se&&se.onVnodeBeforeMount)&&Ra(Se,Ae,P),_o(N,!0);{Pe.ce&&Pe.ce._def.shadowRoot!==!1&&Pe.ce._injectChildStyle(Ie);const ze=N.subTree=zd(N);g(null,ze,re,ge,N,ee,be),P.el=ze.el}if($e&&Yt($e,ee),!Be&&(Se=se&&se.onVnodeMounted)){const ze=P;Yt(()=>Ra(Se,Ae,ze),ee)}(P.shapeFlag&256||Ae&&Uo(Ae.vnode)&&Ae.vnode.shapeFlag&256)&&N.a&&Yt(N.a,ee),N.isMounted=!0,P=re=ge=null}};N.scope.on();const _e=N.effect=new Tl(xe);N.scope.off();const ue=N.update=_e.run.bind(_e),Ee=N.job=_e.runIfDirty.bind(_e);Ee.i=N,Ee.id=N.uid,_e.scheduler=()=>Is(Ee),_o(N,!0),ue()},le=(N,P,re)=>{P.component=N;const ge=N.vnode.props;N.vnode=P,N.next=null,qp(N,P.props,ge,re),Xp(N,P.children,re),Fa(),Jl(N),Pa()},J=(N,P,re,ge,ee,be,ve,xe,_e=!1)=>{const ue=N&&N.children,Ee=N?N.shapeFlag:0,Se=P.children,{patchFlag:te,shapeFlag:se}=P;if(te>0){if(te&128){B(ue,Se,re,ge,ee,be,ve,xe,_e);return}else if(te&256){de(ue,Se,re,ge,ee,be,ve,xe,_e);return}}se&8?(Ee&16&&ae(ue,ee,be),Se!==ue&&u(re,Se)):Ee&16?se&16?B(ue,Se,re,ge,ee,be,ve,xe,_e):ae(ue,ee,be,!0):(Ee&8&&u(re,""),se&16&&k(Se,re,ge,ee,be,ve,xe,_e))},de=(N,P,re,ge,ee,be,ve,xe,_e)=>{N=N||Fo,P=P||Fo;const ue=N.length,Ee=P.length,Se=Math.min(ue,Ee);let te;for(te=0;te<Se;te++){const se=P[te]=_e?fo(P[te]):za(P[te]);g(N[te],se,re,null,ee,be,ve,xe,_e)}ue>Ee?ae(N,ee,be,!0,!1,Se):k(P,re,ge,ee,be,ve,xe,_e,Se)},B=(N,P,re,ge,ee,be,ve,xe,_e)=>{let ue=0;const Ee=P.length;let Se=N.length-1,te=Ee-1;for(;ue<=Se&&ue<=te;){const se=N[ue],me=P[ue]=_e?fo(P[ue]):za(P[ue]);if(Co(se,me))g(se,me,re,null,ee,be,ve,xe,_e);else break;ue++}for(;ue<=Se&&ue<=te;){const se=N[Se],me=P[te]=_e?fo(P[te]):za(P[te]);if(Co(se,me))g(se,me,re,null,ee,be,ve,xe,_e);else break;Se--,te--}if(ue>Se){if(ue<=te){const se=te+1,me=se<Ee?P[se].el:ge;for(;ue<=te;)g(null,P[ue]=_e?fo(P[ue]):za(P[ue]),re,me,ee,be,ve,xe,_e),ue++}}else if(ue>te)for(;ue<=Se;)A(N[ue],ee,be,!0),ue++;else{const se=ue,me=ue,$e=new Map;for(ue=me;ue<=te;ue++){const nt=P[ue]=_e?fo(P[ue]):za(P[ue]);nt.key!=null&&$e.set(nt.key,ue)}let Ae,Pe=0;const Ie=te-me+1;let Be=!1,ze=0;const dt=new Array(Ie);for(ue=0;ue<Ie;ue++)dt[ue]=0;for(ue=se;ue<=Se;ue++){const nt=N[ue];if(Pe>=Ie){A(nt,ee,be,!0);continue}let ft;if(nt.key!=null)ft=$e.get(nt.key);else for(Ae=me;Ae<=te;Ae++)if(dt[Ae-me]===0&&Co(nt,P[Ae])){ft=Ae;break}ft===void 0?A(nt,ee,be,!0):(dt[ft-me]=ue+1,ft>=ze?ze=ft:Be=!0,g(nt,P[ft],re,null,ee,be,ve,xe,_e),Pe++)}const wt=Be?af(dt):Fo;for(Ae=wt.length-1,ue=Ie-1;ue>=0;ue--){const nt=me+ue,ft=P[nt],Dt=P[nt+1],Bt=nt+1<Ee?Dt.el||Dt.placeholder:ge;dt[ue]===0?g(null,ft,re,Bt,ee,be,ve,xe,_e):Be&&(Ae<0||ue!==wt[Ae]?G(ft,re,Bt,2):Ae--)}}},G=(N,P,re,ge,ee=null)=>{const{el:be,type:ve,transition:xe,children:_e,shapeFlag:ue}=N;if(ue&6){G(N.component.subTree,P,re,ge);return}if(ue&128){N.suspense.move(P,re,ge);return}if(ue&64){ve.move(N,P,re,ce);return}if(ve===ye){o(be,P,re);for(let Se=0;Se<_e.length;Se++)G(_e[Se],P,re,ge);o(N.anchor,P,re);return}if(ve===kn){C(N,P,re);return}if(ge!==2&&ue&1&&xe)if(ge===0)xe.beforeEnter(be),o(be,P,re),Yt(()=>xe.enter(be),ee);else{const{leave:Se,delayLeave:te,afterLeave:se}=xe,me=()=>{N.ctx.isUnmounted?r(be):o(be,P,re)},$e=()=>{be._isLeaving&&be[Ja](!0),Se(be,()=>{me(),se&&se()})};te?te(be,me,$e):$e()}else o(be,P,re)},A=(N,P,re,ge=!1,ee=!1)=>{const{type:be,props:ve,ref:xe,children:_e,dynamicChildren:ue,shapeFlag:Ee,patchFlag:Se,dirs:te,cacheIndex:se}=N;if(Se===-2&&(ee=!1),xe!=null&&(Fa(),kr(xe,null,re,N,!0),Pa()),se!=null&&(P.renderCache[se]=void 0),Ee&256){P.ctx.deactivate(N);return}const me=Ee&1&&te,$e=!Uo(N);let Ae;if($e&&(Ae=ve&&ve.onVnodeBeforeUnmount)&&Ra(Ae,P,N),Ee&6)Me(N.component,re,ge);else{if(Ee&128){N.suspense.unmount(re,ge);return}me&&xo(N,null,P,"beforeUnmount"),Ee&64?N.type.remove(N,P,re,ce,ge):ue&&!ue.hasOnce&&(be!==ye||Se>0&&Se&64)?ae(ue,P,re,!1,!0):(be===ye&&Se&384||!ee&&Ee&16)&&ae(_e,P,re),ge&&V(N)}($e&&(Ae=ve&&ve.onVnodeUnmounted)||me)&&Yt(()=>{Ae&&Ra(Ae,P,N),me&&xo(N,null,P,"unmounted")},re)},V=N=>{const{type:P,el:re,anchor:ge,transition:ee}=N;if(P===ye){he(re,ge);return}if(P===kn){H(N);return}const be=()=>{r(re),ee&&!ee.persisted&&ee.afterLeave&&ee.afterLeave()};if(N.shapeFlag&1&&ee&&!ee.persisted){const{leave:ve,delayLeave:xe}=ee,_e=()=>ve(re,be);xe?xe(N.el,be,_e):_e()}else be()},he=(N,P)=>{let re;for(;N!==P;)re=b(N),r(N),N=re;r(P)},Me=(N,P,re)=>{const{bum:ge,scope:ee,job:be,subTree:ve,um:xe,m:_e,a:ue}=N;Hd(_e),Hd(ue),ge&&Yr(ge),ee.stop(),be&&(be.flags|=8,A(ve,N,P,re)),xe&&Yt(xe,P),Yt(()=>{N.isUnmounted=!0},P)},ae=(N,P,re,ge=!1,ee=!1,be=0)=>{for(let ve=be;ve<N.length;ve++)A(N[ve],P,re,ge,ee)},U=N=>{if(N.shapeFlag&6)return U(N.component.subTree);if(N.shapeFlag&128)return N.suspense.next();const P=b(N.anchor||N.el),re=P&&P[Ql];return re?b(re):P};let F=!1;const j=(N,P,re)=>{N==null?P._vnode&&A(P._vnode,null,null,!0):g(P._vnode||null,N,P,null,null,null,re),P._vnode=N,F||(F=!0,Jl(),Zl(),F=!1)},ce={p:g,um:A,m:G,r:V,mt:Z,mc:k,pc:J,pbc:w,n:U,o:e};return{render:j,hydrate:void 0,createApp:Up(j)}}function Js({type:e,props:t},a){return a==="svg"&&e==="foreignObject"||a==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:a}function _o({effect:e,job:t},a){a?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function tf(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Zs(e,t,a=!1){const o=e.children,r=t.children;if(je(o)&&je(r))for(let n=0;n<o.length;n++){const s=o[n];let l=r[n];l.shapeFlag&1&&!l.dynamicChildren&&((l.patchFlag<=0||l.patchFlag===32)&&(l=r[n]=fo(r[n]),l.el=s.el),!a&&l.patchFlag!==-2&&Zs(s,l)),l.type===wn&&l.patchFlag!==-1&&(l.el=s.el),l.type===qt&&!l.el&&(l.el=s.el)}}function af(e){const t=e.slice(),a=[0];let o,r,n,s,l;const d=e.length;for(o=0;o<d;o++){const p=e[o];if(p!==0){if(r=a[a.length-1],e[r]<p){t[o]=r,a.push(o);continue}for(n=0,s=a.length-1;n<s;)l=n+s>>1,e[a[l]]<p?n=l+1:s=l;p<e[a[n]]&&(n>0&&(t[o]=a[n-1]),a[n]=o)}}for(n=a.length,s=a[n-1];n-- >0;)a[n]=s,s=t[s];return a}function Bd(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:Bd(t)}function Hd(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const of=Symbol.for("v-scx"),rf=()=>mn(of);function Oe(e,t,a){return Fd(e,t,a)}function Fd(e,t,a=bt){const{immediate:o,deep:r,flush:n,once:s}=a,l=It({},a),d=t&&o||!t&&n!=="post";let p;if(Ko){if(n==="sync"){const c=rf();p=c.__watcherHandles||(c.__watcherHandles=[])}else if(!d){const c=()=>{};return c.stop=Ha,c.resume=Ha,c.pause=Ha,c}}const u=zt;l.call=(c,f,g)=>Ea(c,u,f,g);let v=!1;n==="post"?l.scheduler=c=>{Yt(c,u&&u.suspense)}:n!=="sync"&&(v=!0,l.scheduler=(c,f)=>{f?c():Is(c)}),l.augmentJob=c=>{t&&(c.flags|=4),v&&(c.flags|=2,u&&(c.id=u.uid,c.i=u))};const b=pp(e,t,l);return Ko&&(p?p.push(b):d&&b()),b}function nf(e,t,a){const o=this.proxy,r=_t(e)?e.includes(".")?Pd(o,e):()=>o[e]:e.bind(o,o);let n;qe(t)?n=t:(n=t.handler,a=t);const s=Mr(this),l=Fd(r,n.bind(o),a);return s(),l}function Pd(e,t){const a=t.split(".");return()=>{let o=e;for(let r=0;r<a.length&&o;r++)o=o[a[r]];return o}}const sf=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${wa(t)}Modifiers`]||e[`${io(t)}Modifiers`];function lf(e,t,...a){if(e.isUnmounted)return;const o=e.vnode.props||bt;let r=a;const n=t.startsWith("update:"),s=n&&sf(o,t.slice(7));s&&(s.trim&&(r=a.map(u=>_t(u)?u.trim():u)),s.number&&(r=a.map(Xr)));let l,d=o[l=ws(t)]||o[l=ws(wa(t))];!d&&n&&(d=o[l=ws(io(t))]),d&&Ea(d,e,6,r);const p=o[l+"Once"];if(p){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Ea(p,e,6,r)}}function Wd(e,t,a=!1){const o=t.emitsCache,r=o.get(e);if(r!==void 0)return r;const n=e.emits;let s={},l=!1;if(!qe(e)){const d=p=>{const u=Wd(p,t,!0);u&&(l=!0,It(s,u))};!a&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!n&&!l?(vt(e)&&o.set(e,null),null):(je(n)?n.forEach(d=>s[d]=null):It(s,n),vt(e)&&o.set(e,s),s)}function yn(e,t){return!e||!Kr(t)?!1:(t=t.slice(2).replace(/Once$/,""),ut(e,t[0].toLowerCase()+t.slice(1))||ut(e,io(t))||ut(e,t))}function zT(){}function zd(e){const{type:t,vnode:a,proxy:o,withProxy:r,propsOptions:[n],slots:s,attrs:l,emit:d,render:p,renderCache:u,props:v,data:b,setupState:c,ctx:f,inheritAttrs:g}=e,T=gn(e);let S,$;try{if(a.shapeFlag&4){const H=r||o,O=H;S=za(p.call(O,H,u,v,c,b,f)),$=l}else{const H=t;S=za(H.length>1?H(v,{attrs:l,slots:s,emit:d}):H(v,null)),$=t.props?l:df(l)}}catch(H){Sr.length=0,hr(H,e,1),S=Re(qt)}let C=S;if($&&g!==!1){const H=Object.keys($),{shapeFlag:O}=C;H.length&&O&7&&(n&&H.some(hs)&&($=cf($,n)),C=po(C,$,!1,!0))}return a.dirs&&(C=po(C,null,!1,!0),C.dirs=C.dirs?C.dirs.concat(a.dirs):a.dirs),a.transition&&wr(C,a.transition),S=C,gn(T),S}const df=e=>{let t;for(const a in e)(a==="class"||a==="style"||Kr(a))&&((t||(t={}))[a]=e[a]);return t},cf=(e,t)=>{const a={};for(const o in e)(!hs(o)||!(o.slice(9)in t))&&(a[o]=e[o]);return a};function uf(e,t,a){const{props:o,children:r,component:n}=e,{props:s,children:l,patchFlag:d}=t,p=n.emitsOptions;if(t.dirs||t.transition)return!0;if(a&&d>=0){if(d&1024)return!0;if(d&16)return o?Rd(o,s,p):!!s;if(d&8){const u=t.dynamicProps;for(let v=0;v<u.length;v++){const b=u[v];if(s[b]!==o[b]&&!yn(p,b))return!0}}}else return(r||l)&&(!l||!l.$stable)?!0:o===s?!1:o?s?Rd(o,s,p):!0:!!s;return!1}function Rd(e,t,a){const o=Object.keys(t);if(o.length!==Object.keys(e).length)return!0;for(let r=0;r<o.length;r++){const n=o[r];if(t[n]!==e[n]&&!yn(a,n))return!0}return!1}function gf({vnode:e,parent:t},a){for(;t;){const o=t.subTree;if(o.suspense&&o.suspense.activeBranch===e&&(o.el=e.el),o===e)(e=t.vnode).el=a,t=t.parent;else break}}const jd=e=>e.__isSuspense;function pf(e,t){t&&t.pendingBranch?je(e)?t.effects.push(...e):t.effects.push(e):wp(e)}const ye=Symbol.for("v-fgt"),wn=Symbol.for("v-txt"),qt=Symbol.for("v-cmt"),kn=Symbol.for("v-stc"),Sr=[];let fa=null;function h(e=!1){Sr.push(fa=e?null:[])}function ff(){Sr.pop(),fa=Sr[Sr.length-1]||null}let Tr=1;function Vd(e,t=!1){Tr+=e,e<0&&fa&&t&&(fa.hasOnce=!0)}function Ud(e){return e.dynamicChildren=Tr>0?fa||Fo:null,ff(),Tr>0&&fa&&fa.push(e),e}function y(e,t,a,o,r,n){return Ud(i(e,t,a,o,r,n,!0))}function lt(e,t,a,o,r){return Ud(Re(e,t,a,o,r,!0))}function $r(e){return e?e.__v_isVNode===!0:!1}function Co(e,t){return e.type===t.type&&e.key===t.key}const Gd=({key:e})=>e??null,xn=({ref:e,ref_key:t,ref_for:a})=>(typeof e=="number"&&(e=""+e),e!=null?_t(e)||Lt(e)||qe(e)?{i:Wt,r:e,k:t,f:!!a}:e:null);function i(e,t=null,a=null,o=0,r=null,n=e===ye?0:1,s=!1,l=!1){const d={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Gd(t),ref:t&&xn(t),scopeId:Xl,slotScopeIds:null,children:a,component:null,suspense:null,ssContent:null,ssFallback:null,dirs:null,transition:null,el:null,anchor:null,target:null,targetStart:null,targetAnchor:null,staticCount:0,shapeFlag:n,patchFlag:o,dynamicProps:r,dynamicChildren:null,appContext:null,ctx:Wt};return l?(Ys(d,a),n&128&&e.normalize(d)):a&&(d.shapeFlag|=_t(a)?8:16),Tr>0&&!s&&fa&&(d.patchFlag>0||n&6)&&d.patchFlag!==32&&fa.push(d),d}const Re=bf;function bf(e,t=null,a=null,o=0,r=null,n=!1){if((!e||e===bd)&&(e=qt),$r(e)){const l=po(e,t,!0);return a&&Ys(l,a),Tr>0&&!n&&fa&&(l.shapeFlag&6?fa[fa.indexOf(e)]=l:fa.push(l)),l.patchFlag=-2,l}if(Tf(e)&&(e=e.__vccOpts),t){t=vf(t);let{class:l,style:d}=t;l&&!_t(l)&&(t.class=ke(l)),vt(d)&&(Es(d)&&!je(d)&&(d=It({},d)),t.style=He(d))}const s=_t(e)?1:jd(e)?128:ed(e)?64:vt(e)?4:qe(e)?2:0;return i(e,t,a,o,r,s,n,!0)}function vf(e){return e?Es(e)||Ad(e)?It({},e):e:null}function po(e,t,a=!1,o=!1){const{props:r,ref:n,patchFlag:s,children:l,transition:d}=e,p=t?Kd(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:p,key:p&&Gd(p),ref:t&&t.ref?a&&n?je(n)?n.concat(xn(t)):[n,xn(t)]:xn(t):n,scopeId:e.scopeId,slotScopeIds:e.slotScopeIds,children:l,target:e.target,targetStart:e.targetStart,targetAnchor:e.targetAnchor,staticCount:e.staticCount,shapeFlag:e.shapeFlag,patchFlag:t&&e.type!==ye?s===-1?16:s|16:s,dynamicProps:e.dynamicProps,dynamicChildren:e.dynamicChildren,appContext:e.appContext,dirs:e.dirs,transition:d,component:e.component,suspense:e.suspense,ssContent:e.ssContent&&po(e.ssContent),ssFallback:e.ssFallback&&po(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return d&&o&&wr(u,d.clone(u)),u}function Ge(e=" ",t=0){return Re(wn,null,e,t)}function Ya(e,t){const a=Re(kn,null,e);return a.staticCount=t,a}function ne(e="",t=!1){return t?(h(),lt(qt,null,e)):Re(qt,null,e)}function za(e){return e==null||typeof e=="boolean"?Re(qt):je(e)?Re(ye,null,e.slice()):$r(e)?fo(e):Re(wn,null,String(e))}function fo(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:po(e)}function Ys(e,t){let a=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(je(t))a=16;else if(typeof t=="object")if(o&65){const r=t.default;r&&(r._c&&(r._d=!1),Ys(e,r()),r._c&&(r._d=!0));return}else{a=32;const r=t._;!r&&!Ad(t)?t._ctx=Wt:r===3&&Wt&&(Wt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else qe(t)?(t={default:t,_ctx:Wt},a=32):(t=String(t),o&64?(a=16,t=[Ge(t)]):a=8);e.children=t,e.shapeFlag|=a}function Kd(...e){const t={};for(let a=0;a<e.length;a++){const o=e[a];for(const r in o)if(r==="class")t.class!==o.class&&(t.class=ke([t.class,o.class]));else if(r==="style")t.style=He([t.style,o.style]);else if(Kr(r)){const n=t[r],s=o[r];s&&n!==s&&!(je(n)&&n.includes(s))&&(t[r]=n?[].concat(n,s):s)}else r!==""&&(t[r]=o[r])}return t}function Ra(e,t,a,o=null){Ea(e,t,7,[a,o])}const hf=Td();let mf=0;function yf(e,t,a){const o=e.type,r=(t?t.appContext:e.appContext)||hf,n={uid:mf++,vnode:e,type:o,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Og(!0),render:null,proxy:null,exposed:null,exposeProxy:null,withProxy:null,provides:t?t.provides:Object.create(r.provides),ids:t?t.ids:["",0,0],accessCache:null,renderCache:[],components:null,directives:null,propsOptions:Ld(o,r),emitsOptions:Wd(o,r),emit:null,emitted:null,propsDefaults:bt,inheritAttrs:o.inheritAttrs,ctx:bt,data:bt,props:bt,attrs:bt,slots:bt,refs:bt,setupState:bt,setupContext:null,suspense:a,suspenseId:a?a.pendingId:0,asyncDep:null,asyncResolved:!1,isMounted:!1,isUnmounted:!1,isDeactivated:!1,bc:null,c:null,bm:null,m:null,bu:null,u:null,um:null,bum:null,da:null,a:null,rtg:null,rtc:null,ec:null,sp:null};return n.ctx={_:n},n.root=t?t.root:n,n.emit=lf.bind(null,n),e.ce&&e.ce(n),n}let zt=null;const _n=()=>zt||Wt;let Cn,Xs;{const e=Qr(),t=(a,o)=>{let r;return(r=e[a])||(r=e[a]=[]),r.push(o),n=>{r.length>1?r.forEach(s=>s(n)):r[0](n)}};Cn=t("__VUE_INSTANCE_SETTERS__",a=>zt=a),Xs=t("__VUE_SSR_SETTERS__",a=>Ko=a)}const Mr=e=>{const t=zt;return Cn(e),e.scope.on(),()=>{e.scope.off(),Cn(t)}},qd=()=>{zt&&zt.scope.off(),Cn(null)};function Jd(e){return e.vnode.shapeFlag&4}let Ko=!1;function wf(e,t=!1,a=!1){t&&Xs(t);const{props:o,children:r}=e.vnode,n=Jd(e);Kp(e,o,n,t),Yp(e,r,a||t);const s=n?kf(e,t):void 0;return t&&Xs(!1),s}function kf(e,t){const a=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Fp);const{setup:o}=a;if(o){Fa();const r=e.setupContext=o.length>1?_f(e):null,n=Mr(e),s=Ro(o,e,0,[e.props,r]),l=ml(s);if(Pa(),n(),(l||e.sp)&&!Uo(e)&&Fs(e),l){if(s.then(qd,qd),t)return s.then(d=>{Zd(e,d)}).catch(d=>{hr(d,e,0)});e.asyncDep=s}else Zd(e,s)}else Yd(e)}function Zd(e,t,a){qe(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:vt(t)&&(e.setupState=Ul(t)),Yd(e)}function Yd(e,t,a){const o=e.type;e.render||(e.render=o.render||Ha);{const r=Mr(e);Fa();try{Pp(e)}finally{Pa(),r()}}}const xf={get(e,t){return Gt(e,"get",""),e[t]}};function _f(e){const t=a=>{e.exposed=a||{}};return{attrs:new Proxy(e.attrs,xf),slots:e.slots,emit:e.emit,expose:t}}function Sn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Ul(op(e.exposed)),{get(t,a){if(a in t)return t[a];if(a in _r)return _r[a](e)},has(t,a){return a in t||a in _r}})):e.proxy}const Cf=/(?:^|[-_])(\w)/g,Sf=e=>e.replace(Cf,t=>t.toUpperCase()).replace(/[-_]/g,"");function Xd(e,t=!0){return qe(e)?e.displayName||e.name:e.name||t&&e.__name}function Qd(e,t,a=!1){let o=Xd(t);if(!o&&t.__file){const r=t.__file.match(/([^/\\]+)\.\w+$/);r&&(o=r[1])}if(!o&&e&&e.parent){const r=n=>{for(const s in n)if(n[s]===t)return s};o=r(e.components||e.parent.type.components)||r(e.appContext.components)}return o?Sf(o):a?"App":"Anonymous"}function Tf(e){return qe(e)&&"__vccOpts"in e}const x=(e,t)=>up(e,t,Ko);function ba(e,t,a){const o=arguments.length;return o===2?vt(t)&&!je(t)?$r(t)?Re(e,null,[t]):Re(e,t):Re(e,null,t):(o>3?a=Array.prototype.slice.call(arguments,2):o===3&&$r(a)&&(a=[a]),Re(e,t,a))}const $f="3.5.20";/**
|
||
* @vue/runtime-dom v3.5.20
|
||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||
* @license MIT
|
||
**/let Qs;const ec=typeof window<"u"&&window.trustedTypes;if(ec)try{Qs=ec.createPolicy("vue",{createHTML:e=>e})}catch{}const tc=Qs?e=>Qs.createHTML(e):e=>e,Mf="http://www.w3.org/2000/svg",Af="http://www.w3.org/1998/Math/MathML",Xa=typeof document<"u"?document:null,ac=Xa&&Xa.createElement("template"),Df={insert:(e,t,a)=>{t.insertBefore(e,a||null)},remove:e=>{const t=e.parentNode;t&&t.removeChild(e)},createElement:(e,t,a,o)=>{const r=t==="svg"?Xa.createElementNS(Mf,e):t==="mathml"?Xa.createElementNS(Af,e):a?Xa.createElement(e,{is:a}):Xa.createElement(e);return e==="select"&&o&&o.multiple!=null&&r.setAttribute("multiple",o.multiple),r},createText:e=>Xa.createTextNode(e),createComment:e=>Xa.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Xa.querySelector(e),setScopeId(e,t){e.setAttribute(t,"")},insertStaticContent(e,t,a,o,r,n){const s=a?a.previousSibling:t.lastChild;if(r&&(r===n||r.nextSibling))for(;t.insertBefore(r.cloneNode(!0),a),!(r===n||!(r=r.nextSibling)););else{ac.innerHTML=tc(o==="svg"?`<svg>${e}</svg>`:o==="mathml"?`<math>${e}</math>`:e);const l=ac.content;if(o==="svg"||o==="mathml"){const d=l.firstChild;for(;d.firstChild;)l.appendChild(d.firstChild);l.removeChild(d)}t.insertBefore(l,a)}return[s?s.nextSibling:t.firstChild,a?a.previousSibling:t.lastChild]}},bo="transition",Ar="animation",Dr=Symbol("_vtc"),oc={name:String,type:String,css:{type:Boolean,default:!0},duration:[String,Number,Object],enterFromClass:String,enterActiveClass:String,enterToClass:String,appearFromClass:String,appearActiveClass:String,appearToClass:String,leaveFromClass:String,leaveActiveClass:String,leaveToClass:String},Lf=It({},sd,oc),rc=(e=>(e.displayName="Transition",e.props=Lf,e))((e,{slots:t})=>ba(Sp,Ef(e),t)),So=(e,t=[])=>{je(e)?e.forEach(a=>a(...t)):e&&e(...t)},nc=e=>e?je(e)?e.some(t=>t.length>1):e.length>1:!1;function Ef(e){const t={};for(const R in e)R in oc||(t[R]=e[R]);if(e.css===!1)return t;const{name:a="v",type:o,duration:r,enterFromClass:n=`${a}-enter-from`,enterActiveClass:s=`${a}-enter-active`,enterToClass:l=`${a}-enter-to`,appearFromClass:d=n,appearActiveClass:p=s,appearToClass:u=l,leaveFromClass:v=`${a}-leave-from`,leaveActiveClass:b=`${a}-leave-active`,leaveToClass:c=`${a}-leave-to`}=e,f=Nf(r),g=f&&f[0],T=f&&f[1],{onBeforeEnter:S,onEnter:$,onEnterCancelled:C,onLeave:H,onLeaveCancelled:O,onBeforeAppear:I=S,onAppear:_=$,onAppearCancelled:k=C}=t,m=(R,L,Z,K)=>{R._enterCancelled=K,To(R,L?u:l),To(R,L?p:s),Z&&Z()},w=(R,L)=>{R._isLeaving=!1,To(R,v),To(R,c),To(R,b),L&&L()},D=R=>(L,Z)=>{const K=R?_:$,Y=()=>m(L,R,Z);So(K,[L,Y]),sc(()=>{To(L,R?d:n),Qa(L,R?u:l),nc(K)||ic(L,o,g,Y)})};return It(t,{onBeforeEnter(R){So(S,[R]),Qa(R,n),Qa(R,s)},onBeforeAppear(R){So(I,[R]),Qa(R,d),Qa(R,p)},onEnter:D(!1),onAppear:D(!0),onLeave(R,L){R._isLeaving=!0;const Z=()=>w(R,L);Qa(R,v),R._enterCancelled?(Qa(R,b),cc()):(cc(),Qa(R,b)),sc(()=>{R._isLeaving&&(To(R,v),Qa(R,c),nc(H)||ic(R,o,T,Z))}),So(H,[R,Z])},onEnterCancelled(R){m(R,!1,void 0,!0),So(C,[R])},onAppearCancelled(R){m(R,!0,void 0,!0),So(k,[R])},onLeaveCancelled(R){w(R),So(O,[R])}})}function Nf(e){if(e==null)return null;if(vt(e))return[ei(e.enter),ei(e.leave)];{const t=ei(e);return[t,t]}}function ei(e){return $g(e)}function Qa(e,t){t.split(/\s+/).forEach(a=>a&&e.classList.add(a)),(e[Dr]||(e[Dr]=new Set)).add(t)}function To(e,t){t.split(/\s+/).forEach(o=>o&&e.classList.remove(o));const a=e[Dr];a&&(a.delete(t),a.size||(e[Dr]=void 0))}function sc(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let If=0;function ic(e,t,a,o){const r=e._endId=++If,n=()=>{r===e._endId&&o()};if(a!=null)return setTimeout(n,a);const{type:s,timeout:l,propCount:d}=Of(e,t);if(!s)return o();const p=s+"end";let u=0;const v=()=>{e.removeEventListener(p,b),n()},b=c=>{c.target===e&&++u>=d&&v()};setTimeout(()=>{u<d&&v()},l+1),e.addEventListener(p,b)}function Of(e,t){const a=window.getComputedStyle(e),o=f=>(a[f]||"").split(", "),r=o(`${bo}Delay`),n=o(`${bo}Duration`),s=lc(r,n),l=o(`${Ar}Delay`),d=o(`${Ar}Duration`),p=lc(l,d);let u=null,v=0,b=0;t===bo?s>0&&(u=bo,v=s,b=n.length):t===Ar?p>0&&(u=Ar,v=p,b=d.length):(v=Math.max(s,p),u=v>0?s>p?bo:Ar:null,b=u?u===bo?n.length:d.length:0);const c=u===bo&&/\b(transform|all)(,|$)/.test(o(`${bo}Property`).toString());return{type:u,timeout:v,propCount:b,hasTransform:c}}function lc(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((a,o)=>dc(a)+dc(e[o])))}function dc(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function cc(){return document.body.offsetHeight}function Bf(e,t,a){const o=e[Dr];o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):a?e.setAttribute("class",t):e.className=t}const Tn=Symbol("_vod"),uc=Symbol("_vsh"),gc={name:"show",beforeMount(e,{value:t},{transition:a}){e[Tn]=e.style.display==="none"?"":e.style.display,a&&t?a.beforeEnter(e):Lr(e,t)},mounted(e,{value:t},{transition:a}){a&&t&&a.enter(e)},updated(e,{value:t,oldValue:a},{transition:o}){!t!=!a&&(o?t?(o.beforeEnter(e),Lr(e,!0),o.enter(e)):o.leave(e,()=>{Lr(e,!1)}):Lr(e,t))},beforeUnmount(e,{value:t}){Lr(e,t)}};function Lr(e,t){e.style.display=t?e[Tn]:"none",e[uc]=!t}const Hf=Symbol(""),Ff=/(^|;)\s*display\s*:/;function Pf(e,t,a){const o=e.style,r=_t(a);let n=!1;if(a&&!r){if(t)if(_t(t))for(const s of t.split(";")){const l=s.slice(0,s.indexOf(":")).trim();a[l]==null&&$n(o,l,"")}else for(const s in t)a[s]==null&&$n(o,s,"");for(const s in a)s==="display"&&(n=!0),$n(o,s,a[s])}else if(r){if(t!==a){const s=o[Hf];s&&(a+=";"+s),o.cssText=a,n=Ff.test(a)}}else t&&e.removeAttribute("style");Tn in e&&(e[Tn]=n?o.display:"",e[uc]&&(o.display="none"))}const pc=/\s*!important$/;function $n(e,t,a){if(je(a))a.forEach(o=>$n(e,t,o));else if(a==null&&(a=""),t.startsWith("--"))e.setProperty(t,a);else{const o=Wf(e,t);pc.test(a)?e.setProperty(io(o),a.replace(pc,""),"important"):e[o]=a}}const fc=["Webkit","Moz","ms"],ti={};function Wf(e,t){const a=ti[t];if(a)return a;let o=wa(t);if(o!=="filter"&&o in e)return ti[t]=o;o=Zr(o);for(let r=0;r<fc.length;r++){const n=fc[r]+o;if(n in e)return ti[t]=n}return t}const bc="http://www.w3.org/1999/xlink";function vc(e,t,a,o,r,n=Eg(t)){o&&t.startsWith("xlink:")?a==null?e.removeAttributeNS(bc,t.slice(6,t.length)):e.setAttributeNS(bc,t,a):a==null||n&&!_l(a)?e.removeAttribute(t):e.setAttribute(t,n?"":Da(a)?String(a):a)}function hc(e,t,a,o,r){if(t==="innerHTML"||t==="textContent"){a!=null&&(e[t]=t==="innerHTML"?tc(a):a);return}const n=e.tagName;if(t==="value"&&n!=="PROGRESS"&&!n.includes("-")){const l=n==="OPTION"?e.getAttribute("value")||"":e.value,d=a==null?e.type==="checkbox"?"on":"":String(a);(l!==d||!("_value"in e))&&(e.value=d),a==null&&e.removeAttribute(t),e._value=a;return}let s=!1;if(a===""||a==null){const l=typeof e[t];l==="boolean"?a=_l(a):a==null&&l==="string"?(a="",s=!0):l==="number"&&(a=0,s=!0)}try{e[t]=a}catch{}s&&e.removeAttribute(r||t)}function $o(e,t,a,o){e.addEventListener(t,a,o)}function zf(e,t,a,o){e.removeEventListener(t,a,o)}const mc=Symbol("_vei");function Rf(e,t,a,o,r=null){const n=e[mc]||(e[mc]={}),s=n[t];if(o&&s)s.value=o;else{const[l,d]=jf(t);if(o){const p=n[t]=Gf(o,r);$o(e,l,p,d)}else s&&(zf(e,l,s,d),n[t]=void 0)}}const yc=/(?:Once|Passive|Capture)$/;function jf(e){let t;if(yc.test(e)){t={};let o;for(;o=e.match(yc);)e=e.slice(0,e.length-o[0].length),t[o[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):io(e.slice(2)),t]}let ai=0;const Vf=Promise.resolve(),Uf=()=>ai||(Vf.then(()=>ai=0),ai=Date.now());function Gf(e,t){const a=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=a.attached)return;Ea(Kf(o,a.value),t,5,[o])};return a.value=e,a.attached=Uf(),a}function Kf(e,t){if(je(t)){const a=e.stopImmediatePropagation;return e.stopImmediatePropagation=()=>{a.call(e),e._stopped=!0},t.map(o=>r=>!r._stopped&&o&&o(r))}else return t}const wc=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,qf=(e,t,a,o,r,n)=>{const s=r==="svg";t==="class"?Bf(e,o,s):t==="style"?Pf(e,a,o):Kr(t)?hs(t)||Rf(e,t,a,o,n):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Jf(e,t,o,s))?(hc(e,t,o),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&vc(e,t,o,s,n,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!_t(o))?hc(e,wa(t),o,n,t):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),vc(e,t,o,s))};function Jf(e,t,a,o){if(o)return!!(t==="innerHTML"||t==="textContent"||t in e&&wc(t)&&qe(a));if(t==="spellcheck"||t==="draggable"||t==="translate"||t==="autocorrect"||t==="form"||t==="list"&&e.tagName==="INPUT"||t==="type"&&e.tagName==="TEXTAREA")return!1;if(t==="width"||t==="height"){const r=e.tagName;if(r==="IMG"||r==="VIDEO"||r==="CANVAS"||r==="SOURCE")return!1}return wc(t)&&_t(a)?!1:t in e}const Mn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return je(t)?a=>Yr(t,a):t};function Zf(e){e.target.composing=!0}function kc(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const qo=Symbol("_assign"),An={created(e,{modifiers:{lazy:t,trim:a,number:o}},r){e[qo]=Mn(r);const n=o||r.props&&r.props.type==="number";$o(e,t?"change":"input",s=>{if(s.target.composing)return;let l=e.value;a&&(l=l.trim()),n&&(l=Xr(l)),e[qo](l)}),a&&$o(e,"change",()=>{e.value=e.value.trim()}),t||($o(e,"compositionstart",Zf),$o(e,"compositionend",kc),$o(e,"change",kc))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:a,modifiers:{lazy:o,trim:r,number:n}},s){if(e[qo]=Mn(s),e.composing)return;const l=(n||e.type==="number")&&!/^0\d/.test(e.value)?Xr(e.value):e.value,d=t??"";l!==d&&(document.activeElement===e&&e.type!=="range"&&(o&&t===a||r&&e.value.trim()===d)||(e.value=d))}},xc={deep:!0,created(e,{value:t,modifiers:{number:a}},o){const r=qr(t);$o(e,"change",()=>{const n=Array.prototype.filter.call(e.options,s=>s.selected).map(s=>a?Xr(Dn(s)):Dn(s));e[qo](e.multiple?r?new Set(n):n:n[0]),e._assigning=!0,Kt(()=>{e._assigning=!1})}),e[qo]=Mn(o)},mounted(e,{value:t}){_c(e,t)},beforeUpdate(e,t,a){e[qo]=Mn(a)},updated(e,{value:t}){e._assigning||_c(e,t)}};function _c(e,t){const a=e.multiple,o=je(t);if(!(a&&!o&&!qr(t))){for(let r=0,n=e.options.length;r<n;r++){const s=e.options[r],l=Dn(s);if(a)if(o){const d=typeof l;d==="string"||d==="number"?s.selected=t.some(p=>String(p)===String(l)):s.selected=Ig(t,l)>-1}else s.selected=t.has(l);else if(en(Dn(s),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!a&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Dn(e){return"_value"in e?e._value:e.value}const Yf=["ctrl","shift","alt","meta"],Xf={stop:e=>e.stopPropagation(),prevent:e=>e.preventDefault(),self:e=>e.target!==e.currentTarget,ctrl:e=>!e.ctrlKey,shift:e=>!e.shiftKey,alt:e=>!e.altKey,meta:e=>!e.metaKey,left:e=>"button"in e&&e.button!==0,middle:e=>"button"in e&&e.button!==1,right:e=>"button"in e&&e.button!==2,exact:(e,t)=>Yf.some(a=>e[`${a}Key`]&&!t.includes(a))},Xe=(e,t)=>{const a=e._withMods||(e._withMods={}),o=t.join(".");return a[o]||(a[o]=(r,...n)=>{for(let s=0;s<t.length;s++){const l=Xf[t[s]];if(l&&l(r,t))return}return e(r,...n)})},Qf={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Na=(e,t)=>{const a=e._withKeys||(e._withKeys={}),o=t.join(".");return a[o]||(a[o]=r=>{if(!("key"in r))return;const n=io(r.key);if(t.some(s=>s===n||Qf[s]===n))return e(r)})},eb=It({patchProp:qf},Df);let Cc;function tb(){return Cc||(Cc=Qp(eb))}const ab=(...e)=>{const t=tb().createApp(...e),{mount:a}=t;return t.mount=o=>{const r=rb(o);if(!r)return;const n=t._component;!qe(n)&&!n.render&&!n.template&&(n.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const s=a(r,!1,ob(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),s},t};function ob(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function rb(e){return _t(e)?document.querySelector(e):e}const nb=Ve({name:"NcAppContent",props:{appName:{type:String,default:""},showNavigation:{type:Boolean,default:!0}},setup(e,{slots:t,attrs:a}){return()=>{const o=e.showNavigation!==!1,r={...a,class:[a.class,"app-content",o?null:"app-content--navigation-hidden"]},n={class:"app-content__navigation","aria-label":e.appName||"App navigation","aria-hidden":o?"false":"true"};return ba("div",r,[ba("aside",n,t.navigation?t.navigation():[]),ba("section",{class:"app-content__main",role:"main"},t.default?t.default():[])])}}}),sb=Ve({name:"NcAppNavigation",setup(e,{slots:t,attrs:a}){return()=>{const o={...a,class:[a.class,"app-navigation"]};"role"in o||(o.role="navigation");const r=[];return t.actions&&r.push(ba("div",{class:"app-navigation__actions"},t.actions())),t.default&&r.push(...t.default()),ba("nav",o,r)}}}),ra=Ve({name:"NcButton",props:{type:{type:String,default:"primary"},disabled:{type:Boolean,default:!1}},emits:["click"],setup(e,{emit:t,slots:a,attrs:o}){return()=>{const r={...o,class:[o.class,"btn",e.type],disabled:e.disabled,onClick:()=>t("click")};return"type"in r||(r.type="button"),ba("button",r,a.default?a.default():[])}}}),ib=Ve({name:"NcEmptyContent",props:{name:{type:String,default:""},description:{type:String,default:""}},setup(e,{attrs:t}){return()=>ba("div",{...t,class:[t.class,"card empty"]},[ba("div",{class:"value"},e.name),ba("div",{class:"hint"},e.description)])}}),lb=Ve({name:"NcLoadingIcon",props:{size:{type:[String,Number],default:16}},setup(e,{attrs:t}){return()=>ba("span",{...t,class:[t.class,"nc-loading-icon"],style:`width:${e.size}px;height:${e.size}px;border:2px solid var(--line);border-top-color:var(--brand);border-radius:50%;display:inline-block;animation:spin 1s linear infinite`})}}),eo=br({locale:"",timeZone:"",firstDayOfWeek:void 0}),oi=new Map;function db(){oi.clear()}function cb(e){if(!(!e||typeof e!="object")){if(typeof e.locale=="string"&&(eo.locale=e.locale),typeof e.timeZone=="string"&&(eo.timeZone=e.timeZone),typeof e.firstDayOfWeek=="number"&&Number.isFinite(e.firstDayOfWeek)){const t=(Math.trunc(e.firstDayOfWeek)%7+7)%7;eo.firstDayOfWeek=t}db()}}function ri(){if(eo.locale)return eo.locale;if(typeof window<"u"){const e=window,t=e==null?void 0:e.OC;try{const a=typeof(t==null?void 0:t.getCanonicalLocale)=="function"?t.getCanonicalLocale():"";if(typeof a=="string"&&a)return a}catch{}try{const a=typeof(t==null?void 0:t.getLocale)=="function"?t.getLocale():"";if(typeof a=="string"&&a)return a}catch{}try{const a=typeof(t==null?void 0:t.getLanguage)=="function"?t.getLanguage():"";if(typeof a=="string"&&a)return a}catch{}}return typeof navigator<"u"&&navigator.language?navigator.language:"en"}function Sc(){if(eo.timeZone)return eo.timeZone;try{const e=Intl.DateTimeFormat().resolvedOptions().timeZone;if(e)return e}catch{}return"UTC"}function ni(){var e,t;if(typeof eo.firstDayOfWeek=="number")return eo.firstDayOfWeek;if(typeof window<"u"){const a=window,o=a==null?void 0:a.OC;try{const r=typeof(o==null?void 0:o.getFirstDayOfWeek)=="function"?o.getFirstDayOfWeek():void 0;if(typeof r=="number"&&Number.isFinite(r))return(Math.trunc(r)%7+7)%7}catch{}try{const r=(e=o==null?void 0:o.config)==null?void 0:e.firstDay;if(typeof r=="number"&&Number.isFinite(r))return(Math.trunc(r)%7+7)%7}catch{}}try{if(typeof Intl.Locale=="function"){const a=(t=new Intl.Locale(ri()))==null?void 0:t.weekInfo;if(a&&typeof a.firstDay=="number"){const o=(Math.trunc(a.firstDay)%7+7)%7;return o===7?0:o}}}catch{}return 1}function ub(){const e=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],t=ni();return e.slice(t).concat(e.slice(0,t))}function to(e){var u;const t=ri();let a=4;try{if(typeof Intl.Locale=="function"){const v=(u=new Intl.Locale(t))==null?void 0:u.weekInfo;v&&typeof v.minimalDays=="number"&&(a=v.minimalDays)}}catch{}a=Math.max(1,Math.min(7,Math.trunc(a)));const o=ni(),r=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())),n=7*864e5,s=v=>{const b=new Date(Date.UTC(v,0,1)),f=(b.getUTCDay()-o+7)%7,g=new Date(b);return g.setUTCDate(b.getUTCDate()-f),7-f<a&&g.setUTCDate(g.getUTCDate()+7),g},l=r.getUTCFullYear(),d=s(l);if(r.getTime()<d.getTime()){const v=s(l-1);return Math.floor((r.getTime()-v.getTime())/n)+1}const p=s(l+1);return r.getTime()>=p.getTime()?Math.floor((r.getTime()-p.getTime())/n)+1:Math.floor((r.getTime()-d.getTime())/n)+1}function si(e,t){const a=(t==null?void 0:t.locale)??ri(),o=(t==null?void 0:t.timeZone)??e.timeZone??Sc(),r={...e,timeZone:o},n=JSON.stringify({locale:a,options:r}),s=oi.get(n);if(s)return s;const l=new Intl.DateTimeFormat(a,r);return oi.set(n,l),l}const Tc=/^(\d{4})-(\d{2})-(\d{2})$/,gb=/^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2})(?::(\d{2}))?(Z|[+-]\d{2}:?\d{2})?$/,pb=/^(\d{1,2}):(\d{2})(?::(\d{2}))?$/;function Nt(e){if(!e)return null;const t=Tc.exec(String(e).trim());if(!t)return null;const a=Number(t[1]),o=Number(t[2]),r=Number(t[3]);if(!Number.isFinite(a)||!Number.isFinite(o)||!Number.isFinite(r))return null;const n=new Date(Date.UTC(a,o-1,r));return Number.isNaN(n.getTime())?null:n}function ii(e){if(e==null)return null;if(e instanceof Date)return Number.isNaN(e.getTime())?null:e;if(typeof e=="number"){const s=new Date(e);return Number.isNaN(s.getTime())?null:s}const t=String(e).trim();if(!t)return null;const a=pb.exec(t);if(a){const s=new Date;return s.setHours(Number(a[1]),Number(a[2]),Number(a[3]||0),0),Number.isNaN(s.getTime())?null:s}if(Tc.exec(t))return Nt(t);const r=gb.exec(t);if(r){const s=r[1],l=r[2],d=r[3],p=r[4],u=r[5],v=r[6]||"00",b=r[7];if(b){const f=b.length===5&&b[3]!==":"?`${b.slice(0,3)}:${b.slice(3)}`:b,g=new Date(`${s}-${l}-${d}T${p}:${u}:${v}${f}`);return Number.isNaN(g.getTime())?null:g}const c=new Date(Number(s),Number(l)-1,Number(d),Number(p),Number(u),Number(v),0);return Number.isNaN(c.getTime())?null:c}const n=new Date(t);return Number.isNaN(n.getTime())?null:n}function Ln(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){const a=Nt(e??"");if(!a)return e?String(e):"";try{return si(t,{timeZone:"UTC"}).format(a)}catch{return e?String(e):""}}function En(e,t,a){const o=ii(e);if(!o)return e?String(e):"";try{return si(t,a).format(o)}catch{return e?String(e):""}}function fb(e){return En(e,{hour:"2-digit",minute:"2-digit"})}function Er(e,t,a={month:"short",day:"numeric"}){const o=Ln(e??"",a),r=Ln(t??"",a);return!o||!r?"":o===r?o:`${o}–${r}`}function na(e,t){const a=t||Sc(),r=si({year:"numeric",month:"2-digit",day:"2-digit"},{locale:"en-CA",timeZone:a}).formatToParts(e),n={};return r.forEach(s=>{s.type!=="literal"&&(n[s.type]=s.value)}),n.year&&n.month&&n.day?`${n.year}-${n.month}-${n.day}`:e.toISOString().slice(0,10)}function Nn(e){const t=new Date(e);return t.setUTCHours(0,0,0,0),t}function bb(e,t){const a=[];let o=Nn(e);const r=Nn(t).getTime();for(;o.getTime()<=r;)a.push(new Date(o)),o=new Date(o.getTime()+24*60*60*1e3);return a}function vb(e){const t=e.getUTCDay();return t===0||t===6}function Mo(e,t){const a=new Date(e.getTime());return a.setUTCDate(a.getUTCDate()+t),a}function In(e,t){const a=new Date(e.getTime());return a.setUTCMonth(a.getUTCMonth()+t),a}function $c(e){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+1,0))}const hb={class:"sb-inner"},mb={class:"rc hero"},yb={class:"hero-topbar"},wb=["aria-label","title"],kb={class:"seg w2 hero-seg"},xb={class:"ew"},_b={class:"rc-big"},Cb={class:"navrow arw-layout"},Sb=["disabled","aria-label"],Tb={class:"date-pill"},$b=["disabled","aria-label"],Mb={class:"sync-row"},Ab={class:"sync-left"},Db={class:"sync-txt"},Lb=["disabled"],Eb={class:"sc"},Nb={class:"sc-hd"},Ib={key:0,class:"badge"},Ob={key:1,class:"badge badge--std"},Bb={class:"steps"},Hb=["onClick","title"],Fb={class:"sn"},Pb={viewBox:"0 0 24 24",width:"13",height:"13",fill:"currentColor"},Wb=["d"],zb={class:"sb-txt"},Rb={class:"dock"},jb=["disabled"],Vb="M12,16L19.36,10.27L21,9L12,2L3,9L4.63,10.27M12,18.54L4.62,12.81L3,14.07L12,21.07L21,14.07L19.37,12.8L12,18.54Z",Ub="M21,17V8H7V17H21M21,3A2,2 0 0,1 23,5V17A2,2 0 0,1 21,19H7C5.89,19 5,18.1 5,17V5A2,2 0 0,1 7,3H8V1H10V3H18V1H20V3H21M3,21H17V23H3C1.89,23 1,22.1 1,21V9H3V21M19,15H15V11H19V15Z",Gb="M16,5V18H21V5M4,18H9V5H4M10,18H15V5H10V18Z",Kb="M11,2V4.07C7.38,4.53 4.53,7.38 4.07,11H2V13H4.07C4.53,16.62 7.38,19.47 11,19.93V22H13V19.93C16.62,19.47 19.47,16.62 19.93,13H22V11H19.93C19.47,7.38 16.62,4.53 13,4.07V2M11,6.08V8H13V6.09C15.5,6.5 17.5,8.5 17.92,11H16V13H17.91C17.5,15.5 15.5,17.5 13,17.92V16H11V17.91C8.5,17.5 6.5,15.5 6.08,13H8V11H6.09C6.5,8.5 8.5,6.5 11,6.08M12,11A1,1 0 0,0 11,12A1,1 0 0,0 12,13A1,1 0 0,0 13,12A1,1 0 0,0 12,11Z",qb="M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z",Jb="M3 11H11V3H3M5 5H9V9H5M13 21H21V13H13M15 15H19V19H15M3 21H11V13H3M5 15H9V19H5M13 3V11H21V3M19 9H15V5H19Z",Zb="M23,12L20.56,9.22L20.9,5.54L17.29,4.72L15.4,1.54L12,3L8.6,1.54L6.71,4.72L3.1,5.53L3.44,9.21L1,12L3.44,14.78L3.1,18.47L6.71,19.29L8.6,22.47L12,21L15.4,22.46L17.29,19.28L20.9,18.46L20.56,14.78L23,12M10,17L6,13L7.41,11.59L10,14.17L16.59,7.58L18,9L10,17Z",Yb=Ve({__name:"Sidebar",props:{isLoading:{type:Boolean},range:{},offset:{},from:{},to:{},navToggleLabel:{},navToggleIcon:{},dashboardMode:{},guidedHints:{},releaseNotesAvailable:{type:Boolean},releaseNotesOpen:{type:Boolean},lastSync:{},guidedHintStatuses:{}},emits:["load","update:range","update:offset","toggle-nav","open-profiles","open-release-notes","open-shortcuts","rerun-onboarding"],setup(e,{emit:t}){const a=[{id:"strategy",label:"Strategy",icon:Vb,placeholder:"Choose a planning model"},{id:"calendars",label:"Calendars",icon:Ub,placeholder:"No calendars selected"},{id:"deck",label:"Deck",icon:Gb,placeholder:"Deck integration"},{id:"goals",label:"Goals",icon:Kb,placeholder:"Set weekly targets"},{id:"preferences",label:"Preferences",icon:qb,placeholder:"Theme and hours"},{id:"dashboard",label:"Dashboard",icon:Jb,placeholder:"Layout preset"},{id:"review",label:"Review",icon:Zb,placeholder:"Confirm and save"}],o=e,r=x(()=>o.range==="month"?"This month":"This week"),n=x(()=>{const l=Nt(o.from);return l?o.range==="month"?`Month ${l.getUTCMonth()+1}`:`Week ${to(l)}`:o.range==="month"?"Month":"Week"}),s=x(()=>o.isLoading?"Syncing…":o.lastSync??"Ready");return(l,d)=>(h(),lt(M(sb),null,{default:Ct(()=>[zs(l.$slots,"actions",{},void 0,!0),i("div",hb,[i("div",mb,[i("div",yb,[i("button",{class:"hide-btn",type:"button",onClick:d[0]||(d[0]=p=>l.$emit("toggle-nav")),"aria-label":l.navToggleLabel,title:l.navToggleLabel},[...d[10]||(d[10]=[i("svg",{viewBox:"0 0 11 12",width:"11",height:"12",fill:"none"},[i("path",{d:"M7 1 2 6l5 5M11 1 6 6l5 5",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])],8,wb),i("div",kb,[i("button",{type:"button",class:ke({on:l.range==="week"}),onClick:d[1]||(d[1]=p=>l.$emit("update:range","week"))},"Week",2),i("button",{type:"button",class:ke({on:l.range==="month"}),onClick:d[2]||(d[2]=p=>l.$emit("update:range","month"))},"Month",2)])]),i("div",xb,E(r.value),1),i("div",_b,E(n.value),1),i("div",Cb,[i("button",{class:"arw",type:"button",disabled:l.isLoading,"aria-label":"Previous "+(l.range==="month"?"month":"week"),onClick:d[3]||(d[3]=p=>l.$emit("update:offset",l.offset-1))},[...d[11]||(d[11]=[i("svg",{viewBox:"0 0 7 12",width:"7",height:"12",fill:"none"},[i("path",{d:"M6 1 1 6l5 5",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])],8,Sb),i("div",Tb,E(l.from)+" – "+E(l.to),1),i("button",{class:"arw",type:"button",disabled:l.isLoading,"aria-label":"Next "+(l.range==="month"?"month":"week"),onClick:d[4]||(d[4]=p=>l.$emit("update:offset",l.offset+1))},[...d[12]||(d[12]=[i("svg",{viewBox:"0 0 7 12",width:"7",height:"12",fill:"none"},[i("path",{d:"M1 1l5 5-5 5",stroke:"currentColor","stroke-width":"2","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])],8,$b)]),i("div",Mb,[i("div",Ab,[i("div",{class:ke(["sync-dot",{syncing:l.isLoading}])},null,2),i("span",Db,E(s.value),1)]),i("button",{class:"btn-ref",type:"button",disabled:l.isLoading,onClick:d[5]||(d[5]=p=>l.$emit("load"))},"Refresh",8,Lb)])]),i("div",Eb,[i("div",Nb,[d[13]||(d[13]=i("div",null,[i("div",{class:"ew"},"Guided setup"),i("div",{class:"sc-title"},"Dashboard profile")],-1)),l.dashboardMode==="pro"?(h(),y("span",Ib,"Pro")):l.dashboardMode==="standard"?(h(),y("span",Ob,"Std")):ne("",!0)]),i("button",{class:"wiz",type:"button",onClick:d[6]||(d[6]=p=>l.$emit("rerun-onboarding"))}," Open setup wizard "),i("ol",Bb,[(h(),y(ye,null,Ne(a,p=>{var u,v;return i("li",{key:p.id,class:ke(["step",((u=l.guidedHintStatuses)==null?void 0:u[p.id])??"dim"]),onClick:b=>l.$emit("rerun-onboarding",p.id),role:"button",title:"Go to "+p.label},[i("span",Fb,[(h(),y("svg",Pb,[i("path",{d:p.icon},null,8,Wb)]))]),i("div",zb,[i("strong",null,E(p.label),1),i("small",null,E(((v=l.guidedHints)==null?void 0:v[p.id])||p.placeholder),1)])],10,Hb)}),64))])]),i("div",Rb,[i("button",{class:"dk-btn",type:"button",title:"Keyboard shortcuts","aria-label":"Keyboard shortcuts",onClick:d[7]||(d[7]=p=>l.$emit("open-shortcuts",p.currentTarget))},[...d[14]||(d[14]=[i("b",null,"⌘",-1),i("span",null,"Keys",-1)])]),i("button",{class:ke(["dk-btn",{on:l.releaseNotesAvailable}]),type:"button",disabled:!l.releaseNotesAvailable,title:"What's new","aria-label":"What's new",onClick:d[8]||(d[8]=p=>l.$emit("open-release-notes"))},[...d[15]||(d[15]=[i("b",null,"✦",-1),i("span",null,"New",-1)])],10,jb),i("button",{class:"dk-btn",type:"button",title:"Profiles and backups","aria-label":"Profiles and backups",onClick:d[9]||(d[9]=p=>l.$emit("open-profiles"))},[...d[16]||(d[16]=[i("b",null,"◎",-1),i("span",null,"Profiles",-1)])])])])]),_:3}))}}),gt=(e,t)=>{const a=e.__vccOpts||e;for(const[o,r]of t)a[o]=r;return a},Xb=gt(Yb,[["__scopeId","data-v-88e39507"]]),Qb=["aria-labelledby","aria-label"],ev=["onKeydown"],li=Ve({__name:"AppOverlayShell",props:{visible:{type:Boolean},theme:{},panelClass:{default:""},closeOnBackdrop:{type:Boolean,default:!0},closeOnEsc:{type:Boolean,default:!0},ariaLabelledby:{default:void 0},ariaLabel:{default:void 0}},emits:["close"],setup(e,{emit:t}){const a=e,o=t,r=oe(null);function n(){o("close")}function s(){a.closeOnBackdrop&&n()}function l(){a.closeOnEsc&&n()}return Oe(()=>a.visible,d=>{d&&Kt(()=>{var p;(p=r.value)==null||p.focus()}).catch(()=>{})}),(d,p)=>(h(),lt(rc,{name:"onboarding-fade"},{default:Ct(()=>[d.visible?(h(),y("div",{key:0,class:"onboarding-overlay",role:"dialog","aria-modal":"true","aria-labelledby":d.ariaLabelledby,"aria-label":d.ariaLabel},[i("div",{class:"onboarding-backdrop",onClick:s}),i("div",{ref_key:"panelRef",ref:r,class:ke(["onboarding-panel",[d.panelClass,`theme-${d.theme}`]]),tabindex:"-1",onClick:p[0]||(p[0]=Xe(()=>{},["stop"])),onKeydown:Na(Xe(l,["prevent"]),["esc"])},[zs(d.$slots,"default")],42,ev)],8,Qb)):ne("",!0)]),_:3}))}}),tv={class:"intro-step"},av={key:0,class:"intro-route-grid intro-route-grid--three"},ov={key:1,class:"intro-route-grid intro-route-grid--two"},rv={key:2,class:"config-warning"},nv={class:"config-warning__actions"},sv={class:"hint"},iv=Ve({__name:"OnboardingIntroStep",props:{hasExistingConfig:{type:Boolean},snapshotSaving:{type:Boolean},saving:{type:Boolean},snapshotNotice:{},introChoice:{},profileMode:{},setIntroChoice:{type:Function},setProfileMode:{type:Function},onContinue:{type:Function},onSaveCurrentConfig:{type:Function}},setup(e){return(t,a)=>(h(),y("div",tv,[a[17]||(a[17]=Ya('<div class="intro-visual"><div class="intro-visual__tabs"><span>Month</span><span class="is-active">Week</span></div><div class="intro-visual__copy"><strong>Turn raw calendar time</strong><strong>into something you can</strong><strong class="accent">steer.</strong></div><div class="intro-visual__card"><div class="intro-visual__eyebrow"><span>Balance index</span><span class="intro-visual__status">Good</span></div><div class="intro-visual__score"><strong>74</strong><span>/100</span></div><p>Enough focus time, moderate meeting load.</p><div class="intro-visual__bar"><span></span></div><div class="intro-visual__stats"><div><span>Meetings</span><strong>18h</strong></div><div><span>Focus</span><strong>22h</strong></div><div><span>Rest</span><strong>6h</strong></div></div></div></div>',1)),t.hasExistingConfig?(h(),y("div",av,[i("button",{type:"button",class:ke(["intro-route-card intro-route-card--button",{active:t.introChoice==="quick"}]),onClick:a[0]||(a[0]=o=>t.setIntroChoice("quick")),onDblclick:a[1]||(a[1]=(...o)=>t.onContinue&&t.onContinue(...o))},[...a[10]||(a[10]=[i("h4",null,"Quick setup",-1),i("p",null,"Use the recommended setup and land on a ready dashboard.",-1)])],34),i("button",{type:"button",class:ke(["intro-route-card intro-route-card--button",{active:t.introChoice==="existing"}]),onClick:a[2]||(a[2]=o=>t.setIntroChoice("existing")),onDblclick:a[3]||(a[3]=(...o)=>t.onContinue&&t.onContinue(...o))},[...a[11]||(a[11]=[i("h4",null,"Change current setup",-1),i("p",null,"Keep the existing setup as the base and update it instead of starting over.",-1)])],34),i("button",{type:"button",class:ke(["intro-route-card intro-route-card--button",{active:t.introChoice==="new"}]),onClick:a[4]||(a[4]=o=>t.setIntroChoice("new")),onDblclick:a[5]||(a[5]=(...o)=>t.onContinue&&t.onContinue(...o))},[...a[12]||(a[12]=[i("h4",null,"Set it up myself",-1),i("p",null,"Go through the full step flow and decide everything manually.",-1)])],34)])):(h(),y("div",ov,[i("button",{type:"button",class:ke(["intro-route-card intro-route-card--button",{active:t.introChoice==="quick"}]),onClick:a[6]||(a[6]=o=>t.setIntroChoice("quick")),onDblclick:a[7]||(a[7]=(...o)=>t.onContinue&&t.onContinue(...o))},[...a[13]||(a[13]=[i("h4",null,"Quick setup",-1),i("p",null,"Use the recommended setup and land on a ready dashboard.",-1)])],34),i("button",{type:"button",class:ke(["intro-route-card intro-route-card--button",{active:t.introChoice==="new"}]),onClick:a[8]||(a[8]=o=>t.setIntroChoice("new")),onDblclick:a[9]||(a[9]=(...o)=>t.onContinue&&t.onContinue(...o))},[...a[14]||(a[14]=[i("h4",null,"Set it up myself",-1),i("p",null,"Go through the full step flow and decide everything manually.",-1)])],34)])),t.hasExistingConfig?(h(),y("div",rv,[a[16]||(a[16]=i("p",null,"Change current setup is the default for existing configs. Save a profile first if you want a clean restore point before replacing anything.",-1)),i("div",nv,[Re(M(ra),{type:"tertiary",size:"small",disabled:t.snapshotSaving||t.saving,"aria-busy":t.snapshotSaving,onClick:t.onSaveCurrentConfig},{default:Ct(()=>[...a[15]||(a[15]=[Ge(" Save current setup as profile ",-1)])]),_:1},8,["disabled","aria-busy","onClick"])]),t.snapshotNotice?(h(),y("div",{key:0,class:ke(["snapshot-notice",`snapshot-notice--${t.snapshotNotice.type}`]),role:"status"},E(t.snapshotNotice.message),3)):ne("",!0)])):ne("",!0),i("p",sv,E(t.hasExistingConfig?"Quick setup can replace the current setup automatically. Manual setup keeps the full step-by-step flow.":"Quick setup finishes everything automatically. Manual setup opens the full step-by-step flow."),1)]))}}),lv={class:"preferences-step"},dv={class:"preferences-grid preferences-grid--core-optional"},cv={class:"pref-card pref-card--core pref-card--stack"},uv={class:"field-row"},gv={class:"field-actions"},pv={class:"value-chip"},fv={key:0,class:"editor-card"},bv={class:"choice-strip"},vv={class:"quiet"},hv={class:"field-row"},mv={class:"field-actions"},yv={class:"value-chip"},wv={key:1,class:"editor-card"},kv={class:"choice-strip"},xv={class:"inline-input"},_v=["value"],Cv={class:"field-row"},Sv={class:"field-actions"},Tv={class:"value-chip"},$v={key:2,class:"editor-card"},Mv={class:"choice-strip compact"},Av=["onClick"],Dv={class:"pref-card pref-card--stack"},Lv={class:"module-card"},Ev={class:"row"},Nv={class:"soft-pill"},Iv={key:0,class:"editor-card"},Ov={class:"field-row"},Bv={class:"field-actions"},Hv={key:0,class:"editor-card"},Fv={class:"field-row"},Pv={class:"field-actions"},Wv={key:0,class:"field-row"},zv={class:"field-actions field-actions--wrap"},Rv={key:1,class:"field-row"},jv={class:"field-actions"},Vv=["value"],Uv={key:1,class:"editor-card"},Gv={class:"field-row"},Kv={class:"field-actions"},qv={key:0,class:"field-row"},Jv={class:"field-actions field-actions--wrap"},Zv={key:1,class:"field-row"},Yv={class:"field-actions"},Xv=["value"],Qv={class:"field-row"},eh={class:"field-actions"},th={key:2,class:"field-row"},ah={class:"field-actions field-actions--wrap"},oh={key:3,class:"field-row"},rh={class:"field-actions field-actions--wrap"},nh={key:4,class:"field-row"},sh={class:"field-actions"},ih=["disabled"],lh=["disabled"],dh=Ve({__name:"OnboardingPreferencesStep",props:{themePreference:{},systemThemeLabel:{},previewTheme:{},setThemePreference:{type:Function},totalHoursInput:{},categoryTotalHours:{},categoriesEnabled:{type:Boolean},onTotalHoursChange:{type:Function},allDayHoursInput:{},onAllDayHoursChange:{type:Function},trendLookbackInput:{},onTrendLookbackChange:{type:Function},reportingDraft:{},setReportingEnabled:{type:Function},setReportingModeEnabled:{type:Function},setReportingModeDelivery:{type:Function},updateReporting:{type:Function},updateReportingMode:{type:Function},sendTestReport:{type:Function},sendCheckpointReport:{type:Function}},setup(e){const t=e,a=oe("theme"),o=oe(!1),r=oe(!1),n=oe(!1),s=[1,2,3,4,5,6],l=x(()=>t.themePreference==="auto"?"Auto":t.themePreference==="light"?"Light":"Dark"),d=x(()=>`${Number(t.allDayHoursInput||0).toFixed(t.allDayHoursInput%1===0?0:2)} h`),p=x(()=>`${t.trendLookbackInput}`);function u(R){a.value=(a.value===R,R)}function v(R){t.onAllDayHoursChange({value:String(R)})}function b(R){t.onTrendLookbackChange({value:String(R)})}async function c(){if(!(!t.sendTestReport||r.value)){r.value=!0;try{await t.sendTestReport()}finally{r.value=!1}}}async function f(){if(!(!t.sendCheckpointReport||n.value)){n.value=!0;try{await t.sendCheckpointReport()}finally{n.value=!1}}}const{themePreference:g,previewTheme:T,allDayHoursInput:S,trendLookbackInput:$,reportingDraft:C}=ip(t),{setThemePreference:H,onAllDayHoursChange:O,setReportingEnabled:I,setReportingModeEnabled:_,setReportingModeDelivery:k,updateReporting:m,updateReportingMode:w,sendTestReport:D}=t;return(R,L)=>(h(),y("div",lv,[L[54]||(L[54]=i("h3",null,"Preferences",-1)),L[55]||(L[55]=i("p",{class:"hint"},"Edit the defaults you almost always need. Add-ons stay separate.",-1)),i("div",dv,[i("section",cv,[L[36]||(L[36]=i("h4",null,"Core defaults",-1)),i("div",uv,[L[26]||(L[26]=i("div",{class:"field-copy"},[i("strong",null,"Theme"),i("p",null,"Follow Nextcloud / light / dark")],-1)),i("div",gv,[i("span",pv,E(l.value),1),i("button",{type:"button",class:"action-chip",onClick:L[0]||(L[0]=Z=>u("theme"))},"Choose")])]),a.value==="theme"?(h(),y("div",fv,[L[27]||(L[27]=i("strong",null,"Open theme selection",-1)),i("div",bv,[i("button",{type:"button",class:ke(["choice-pill",{active:M(g)==="auto"}]),onClick:L[1]||(L[1]=Z=>M(H)("auto"))}," Follow Nextcloud ",2),i("button",{type:"button",class:ke(["choice-pill",{active:M(g)==="light"}]),onClick:L[2]||(L[2]=Z=>M(H)("light"))}," Light ",2),i("button",{type:"button",class:ke(["choice-pill",{active:M(g)==="dark"}]),onClick:L[3]||(L[3]=Z=>M(H)("dark"))}," Dark ",2)]),i("p",vv,"Current preview follows "+E(M(T)==="dark"?"dark":"light")+" mode.",1)])):ne("",!0),i("div",hv,[L[28]||(L[28]=i("div",{class:"field-copy"},[i("strong",null,"All-day hours"),i("p",null,"Contribution per all-day event and day.")],-1)),i("div",mv,[i("span",yv,E(d.value),1),i("button",{type:"button",class:"action-chip",onClick:L[4]||(L[4]=Z=>u("allDay"))},"Edit")])]),a.value==="allDay"?(h(),y("div",wv,[L[31]||(L[31]=i("strong",null,"Open all-day hours editor",-1)),i("div",kv,[i("button",{type:"button",class:ke(["choice-pill",{active:M(S)===6}]),onClick:L[5]||(L[5]=Z=>v(6))}," 6 h ",2),i("button",{type:"button",class:ke(["choice-pill",{active:M(S)===8}]),onClick:L[6]||(L[6]=Z=>v(8))}," 8 h ",2),i("button",{type:"button",class:ke(["choice-pill",{active:M(S)===10}]),onClick:L[7]||(L[7]=Z=>v(10))}," 10 h ",2),i("label",xv,[L[29]||(L[29]=i("span",null,"Custom",-1)),i("input",{type:"number",min:"0",max:"24",step:"0.25",value:M(S),onInput:L[8]||(L[8]=Z=>M(O)(Z.target))},null,40,_v),L[30]||(L[30]=i("span",{class:"slot"},"h",-1))])]),L[32]||(L[32]=i("p",{class:"quiet"},"Preset values stay visible, but you can still type a custom hours value.",-1))])):ne("",!0),i("div",Cv,[L[33]||(L[33]=i("div",{class:"field-copy"},[i("strong",null,"Trend lookback"),i("p",null,"Global default for trends.")],-1)),i("div",Sv,[i("span",Tv,E(p.value),1),i("button",{type:"button",class:"action-chip",onClick:L[9]||(L[9]=Z=>u("lookback"))},"Choose")])]),a.value==="lookback"?(h(),y("div",$v,[L[34]||(L[34]=i("strong",null,"Open trend lookback selection",-1)),i("div",Mv,[(h(),y(ye,null,Ne(s,Z=>i("button",{key:Z,type:"button",class:ke(["choice-pill",{active:M($)===Z}]),onClick:K=>b(Z)},E(Z)+" week"+E(Z===1?"":"s"),11,Av)),64))]),L[35]||(L[35]=i("p",{class:"quiet"},"Allowed range: 1 to 6 weeks. This stays compact as a one-row selection.",-1))])):ne("",!0)]),i("section",Dv,[L[53]||(L[53]=i("h4",null,"Add-on modules",-1)),i("div",Lv,[L[37]||(L[37]=i("strong",null,"Recap reporting",-1)),L[38]||(L[38]=i("p",null,"Current optional module for schedule, reminders, and risk alerts.",-1)),i("div",Ev,[i("span",Nv,E(M(C).enabled?"Recap on":"Recap off"),1),i("button",{type:"button",class:"action-chip",onClick:L[10]||(L[10]=Z=>o.value=!o.value)},E(o.value?"Close module":"Open module"),1)])]),o.value?(h(),y("div",Iv,[L[52]||(L[52]=i("strong",null,"Open recap reporting module",-1)),i("div",Ov,[L[39]||(L[39]=i("div",{class:"field-copy"},[i("strong",null,"Enabled"),i("p",null,"Turn recap reporting on or off.")],-1)),i("div",Bv,[i("button",{type:"button",class:ke(["toggle-chip",{on:M(C).enabled}]),onClick:L[11]||(L[11]=Z=>M(I)(!M(C).enabled))},E(M(C).enabled?"On":"Off"),3)])]),M(C).enabled?(h(),y("div",Hv,[L[43]||(L[43]=i("strong",null,"Weekly recap",-1)),i("div",Fv,[L[40]||(L[40]=i("div",{class:"field-copy"},[i("strong",null,"Weekly mode"),i("p",null,"Enable or disable weekly recap delivery.")],-1)),i("div",Pv,[i("button",{type:"button",class:ke(["toggle-chip",{on:M(C).modes.week.enabled}]),onClick:L[12]||(L[12]=Z=>M(_)("week",!M(C).modes.week.enabled))},E(M(C).modes.week.enabled?"On":"Off"),3)])]),M(C).modes.week.enabled?(h(),y("div",Wv,[L[41]||(L[41]=i("div",{class:"field-copy"},[i("strong",null,"Weekly delivery"),i("p",null,"Final recap sends after the week closes. Checkpoint adds one mid-week update.")],-1)),i("div",zv,[i("button",{type:"button",class:ke(["choice-pill",{active:M(C).modes.week.delivery==="final"}]),onClick:L[13]||(L[13]=Z=>M(k)("week","final"))}," Final recap ",2),i("button",{type:"button",class:ke(["choice-pill",{active:M(C).modes.week.delivery==="checkpoint_final"}]),onClick:L[14]||(L[14]=Z=>M(k)("week","checkpoint_final"))}," Checkpoint + final ",2)])])):ne("",!0),M(C).modes.week.enabled?(h(),y("div",Rv,[L[42]||(L[42]=i("div",{class:"field-copy"},[i("strong",null,"Weekly send time"),i("p",null,"Uses your Nextcloud user timezone. Final recaps send on the first morning after the week ends.")],-1)),i("div",jv,[i("input",{class:"time-input",type:"time",step:"900",value:M(C).modes.week.sendTimeLocal,onInput:L[15]||(L[15]=Z=>M(w)("week",{sendTimeLocal:Z.target.value||"06:00"}))},null,40,Vv)])])):ne("",!0)])):ne("",!0),M(C).enabled?(h(),y("div",Uv,[L[47]||(L[47]=i("strong",null,"Monthly recap",-1)),i("div",Gv,[L[44]||(L[44]=i("div",{class:"field-copy"},[i("strong",null,"Monthly mode"),i("p",null,"Enable or disable monthly recap delivery.")],-1)),i("div",Kv,[i("button",{type:"button",class:ke(["toggle-chip",{on:M(C).modes.month.enabled}]),onClick:L[16]||(L[16]=Z=>M(_)("month",!M(C).modes.month.enabled))},E(M(C).modes.month.enabled?"On":"Off"),3)])]),M(C).modes.month.enabled?(h(),y("div",qv,[L[45]||(L[45]=i("div",{class:"field-copy"},[i("strong",null,"Monthly delivery"),i("p",null,"Final recap sends after the month closes. Checkpoint adds a mid-month update before the final recap.")],-1)),i("div",Jv,[i("button",{type:"button",class:ke(["choice-pill",{active:M(C).modes.month.delivery==="final"}]),onClick:L[17]||(L[17]=Z=>M(k)("month","final"))}," Final recap ",2),i("button",{type:"button",class:ke(["choice-pill",{active:M(C).modes.month.delivery==="checkpoint_final"}]),onClick:L[18]||(L[18]=Z=>M(k)("month","checkpoint_final"))}," Checkpoint + final ",2)])])):ne("",!0),M(C).modes.month.enabled?(h(),y("div",Zv,[L[46]||(L[46]=i("div",{class:"field-copy"},[i("strong",null,"Monthly send time"),i("p",null,"Uses your Nextcloud user timezone. Final recaps send on the first configured slot after month-end.")],-1)),i("div",Yv,[i("input",{class:"time-input",type:"time",step:"900",value:M(C).modes.month.sendTimeLocal,onInput:L[19]||(L[19]=Z=>M(w)("month",{sendTimeLocal:Z.target.value||"18:00"}))},null,40,Xv)])])):ne("",!0)])):ne("",!0),i("div",Qv,[L[48]||(L[48]=i("div",{class:"field-copy"},[i("strong",null,"Risk alert"),i("p",null,"Highlight if targets drift.")],-1)),i("div",eh,[i("button",{type:"button",class:ke(["toggle-chip",{on:M(C).alertOnRisk}]),onClick:L[20]||(L[20]=Z=>M(m)({alertOnRisk:!M(C).alertOnRisk}))},E(M(C).alertOnRisk?"On":"Off"),3)])]),M(C).enabled?(h(),y("div",th,[L[49]||(L[49]=i("div",{class:"field-copy"},[i("strong",null,"Risk threshold"),i("p",null,"Send the alert once progress drops below this share of target.")],-1)),i("div",ah,[i("button",{type:"button",class:ke(["choice-pill",{active:M(C).riskThreshold===.7}]),onClick:L[21]||(L[21]=Z=>M(m)({riskThreshold:.7}))}," 70% ",2),i("button",{type:"button",class:ke(["choice-pill",{active:M(C).riskThreshold===.85}]),onClick:L[22]||(L[22]=Z=>M(m)({riskThreshold:.85}))}," 85% ",2),i("button",{type:"button",class:ke(["choice-pill",{active:M(C).riskThreshold===.95}]),onClick:L[23]||(L[23]=Z=>M(m)({riskThreshold:.95}))}," 95% ",2)])])):ne("",!0),M(C).enabled?(h(),y("div",oh,[L[50]||(L[50]=i("div",{class:"field-copy"},[i("strong",null,"Delivery"),i("p",null,"Choose where recap signals should appear once delivery is implemented.")],-1)),i("div",rh,[i("button",{type:"button",class:ke(["toggle-chip",{on:M(C).notifyEmail}]),onClick:L[24]||(L[24]=Z=>M(m)({notifyEmail:!M(C).notifyEmail}))}," Email "+E(M(C).notifyEmail?"On":"Off"),3),i("button",{type:"button",class:ke(["toggle-chip",{on:M(C).notifyNotification}]),onClick:L[25]||(L[25]=Z=>M(m)({notifyNotification:!M(C).notifyNotification}))}," In-app "+E(M(C).notifyNotification?"On":"Off"),3)])])):ne("",!0),M(C).enabled&&(M(D)||R.sendCheckpointReport)?(h(),y("div",nh,[L[51]||(L[51]=i("div",{class:"field-copy"},[i("strong",null,"Test send"),i("p",null,"Send a test email to your Nextcloud address. Recap = completed previous period. Checkpoint = current period snapshot.")],-1)),i("div",sh,[R.sendCheckpointReport?(h(),y("button",{key:0,type:"button",class:"action-chip",disabled:n.value||r.value,onClick:f},E(n.value?"Sending…":"Checkpoint"),9,ih)):ne("",!0),M(D)?(h(),y("button",{key:1,type:"button",class:"action-chip",disabled:r.value||n.value,onClick:c},E(r.value?"Sending…":"Recap"),9,lh)):ne("",!0)])])):ne("",!0)])):ne("",!0)])])]))}}),ch={class:"pref-card pref-card--deck deck-step-card"},uh={class:"toggle-row"},gh=["checked"],ph={key:0,class:"selection-step-toolbar"},fh={class:"selection-step-toolbar__meta"},bh={class:"selection-step-toolbar__actions"},vh=["disabled"],hh=["disabled"],mh={class:"deck-board-list deck-board-list--scroll"},yh={key:0,class:"deck-status"},wh={key:1,class:"deck-status deck-status--error"},kh={key:0,class:"deck-status"},xh={key:1,class:"deck-board-options deck-board-options--list",role:"list"},_h=["checked","onChange"],Ch={class:"calendar-item__state"},Sh=Ve({__name:"OnboardingDeckBoardsStep",props:{deckSettingsDraft:{},setDeckEnabled:{type:Function},deckBoards:{},deckBoardsLoading:{type:Boolean},deckBoardsError:{},isDeckBoardVisible:{type:Function},toggleDeckBoard:{type:Function}},setup(e){const t=e,a=x(()=>t.deckBoards.filter(s=>t.isDeckBoardVisible(s.id)).length),o=x(()=>t.deckBoards.length>0&&a.value===t.deckBoards.length);function r(){for(const s of t.deckBoards)t.isDeckBoardVisible(s.id)||t.toggleDeckBoard(s.id,!0)}function n(){for(const s of t.deckBoards)t.isDeckBoardVisible(s.id)&&t.toggleDeckBoard(s.id,!1)}return(s,l)=>(h(),y(ye,null,[l[3]||(l[3]=i("h3",null,"Select Deck boards to include",-1)),i("article",ch,[i("label",uh,[i("input",{type:"checkbox",checked:s.deckSettingsDraft.enabled,onChange:l[0]||(l[0]=d=>s.setDeckEnabled(d.target.checked))},null,40,gh),l[1]||(l[1]=i("span",null,"Show Deck in this setup",-1))]),s.deckSettingsDraft.enabled?(h(),y(ye,{key:0},[s.deckBoards.length&&!s.deckBoardsLoading&&!s.deckBoardsError?(h(),y("div",ph,[i("span",fh,E(a.value)+" of "+E(s.deckBoards.length)+" boards selected",1),i("div",bh,[i("button",{type:"button",class:"ghost-btn",disabled:o.value,onClick:r},"Select all",8,vh),i("button",{type:"button",class:"ghost-btn",disabled:a.value===0,onClick:n},"Deselect all",8,hh)])])):ne("",!0),i("div",mh,[s.deckBoardsLoading?(h(),y("p",yh,"Loading Deck boards…")):s.deckBoardsError?(h(),y("p",wh,E(s.deckBoardsError),1)):(h(),y(ye,{key:2},[s.deckBoards.length?(h(),y("div",xh,[(h(!0),y(ye,null,Ne(s.deckBoards,d=>(h(),y("label",{key:d.id,class:"deck-board-option deck-board-option--row",role:"listitem"},[i("input",{class:"list-checkbox",type:"checkbox",checked:s.isDeckBoardVisible(d.id),onChange:p=>s.toggleDeckBoard(d.id,p.target.checked)},null,40,_h),l[2]||(l[2]=i("span",{class:"dot"},null,-1)),i("span",null,E(d.title),1),i("span",Ch,E(s.isDeckBoardVisible(d.id)?"selected":"not selected"),1)]))),128))])):(h(),y("p",kh,"No boards yet."))],64))])],64)):ne("",!0)])],64))}}),Th={class:"strategy-grid dashboard-preset-grid"},$h=["onClick"],Mh={class:"dashboard-tab-strip"},Ah={class:"subtitle"},Dh={class:"mini-row"},Lh={class:"pill"},Eh={class:"pill"},Nh=Ve({__name:"OnboardingDashboardStep",props:{dashboardMode:{},setDashboardMode:{type:Function},onContinue:{type:Function},dashboardPresets:{}},setup(e){return(t,a)=>(h(),y(ye,null,[a[8]||(a[8]=i("h3",null,"Choose dashboard layout",-1)),i("div",Th,[(h(!0),y(ye,null,Ne(t.dashboardPresets,o=>(h(),y("button",{key:o.id,type:"button",class:ke(["intro-route-card intro-route-card--button dashboard-preset-card",{active:t.dashboardMode===o.id}]),onClick:r=>t.setDashboardMode(o.id),onDblclick:a[0]||(a[0]=(...r)=>t.onContinue&&t.onContinue(...r))},[i("div",{class:ke(["dashboard-thumb",`dashboard-thumb--${o.id}`])},[i("div",Mh,[a[4]||(a[4]=i("span",{class:"dashboard-tab dashboard-tab--wide is-active"},null,-1)),o.id==="pro"?(h(),y(ye,{key:0},[a[1]||(a[1]=i("span",{class:"dashboard-tab dashboard-tab--medium"},null,-1)),a[2]||(a[2]=i("span",{class:"dashboard-tab dashboard-tab--short"},null,-1)),a[3]||(a[3]=i("span",{class:"dashboard-tab dashboard-tab--tiny"},null,-1))],64)):ne("",!0)]),o.id==="quick"?(h(),y(ye,{key:0},[a[5]||(a[5]=Ya('<div class="dashboard-thumb-row dashboard-thumb-row--1"><span class="dashboard-block dashboard-block--tall"></span></div><div class="dashboard-thumb-row dashboard-thumb-row--2"><span class="dashboard-block"></span><span class="dashboard-block"></span></div>',2))],64)):o.id==="standard"?(h(),y(ye,{key:1},[a[6]||(a[6]=Ya('<div class="dashboard-thumb-row dashboard-thumb-row--2"><span class="dashboard-block dashboard-block--tall dashboard-block--soft"></span><span class="dashboard-block dashboard-block--tall"></span></div><div class="dashboard-thumb-row dashboard-thumb-row--3"><span class="dashboard-block dashboard-block--warm"></span><span class="dashboard-block dashboard-block--ok"></span><span class="dashboard-block"></span></div><div class="dashboard-thumb-row dashboard-thumb-row--2"><span class="dashboard-block dashboard-block--soft"></span><span class="dashboard-block"></span></div>',3))],64)):(h(),y(ye,{key:2},[a[7]||(a[7]=Ya('<div class="dashboard-thumb-row dashboard-thumb-row--3"><span class="dashboard-block dashboard-block--tall dashboard-block--soft"></span><span class="dashboard-block dashboard-block--tall dashboard-block--warm"></span><span class="dashboard-block dashboard-block--tall dashboard-block--ok"></span></div><div class="dashboard-thumb-row dashboard-thumb-row--3"><span class="dashboard-block"></span><span class="dashboard-block"></span><span class="dashboard-block"></span></div><div class="dashboard-thumb-row dashboard-thumb-row--2"><span class="dashboard-block dashboard-block--soft"></span><span class="dashboard-block dashboard-block--warm"></span></div>',3))],64))],2),i("h4",null,E(o.title),1),i("p",Ah,E(o.subtitle),1),i("div",Dh,[i("span",Lh,E(o.widgets),1),i("span",Eh,E(o.badge),1)])],42,$h))),128))])],64))}}),Ih={class:"strategy-grid"},Oh=["onClick"],Bh={class:"subtitle"},Hh=Ve({__name:"OnboardingStrategyStep",props:{strategies:{},selectedStrategy:{},setSelectedStrategy:{type:Function},onContinue:{type:Function}},setup(e){return(t,a)=>(h(),y(ye,null,[a[1]||(a[1]=i("h3",null,"Choose your tracking strategy",-1)),i("div",Ih,[(h(!0),y(ye,null,Ne(t.strategies,o=>(h(),y("button",{key:o.id,type:"button",class:ke(["intro-route-card intro-route-card--button strategy-route-card",{active:t.selectedStrategy===o.id}]),onClick:r=>t.setSelectedStrategy(o.id),onDblclick:a[0]||(a[0]=(...r)=>t.onContinue&&t.onContinue(...r))},[i("h4",null,E(o.title),1),i("p",Bh,E(o.subtitle),1),i("ul",null,[(h(!0),y(ye,null,Ne(o.highlights,r=>(h(),y("li",{key:r},E(r),1))),128))]),i("footer",null,"Best for: "+E(o.recommendedFor),1)],42,Oh))),128))])],64))}}),Fh={key:0,class:"selection-step-toolbar"},Ph={class:"selection-step-toolbar__meta"},Wh={class:"selection-step-toolbar__actions"},zh=["disabled"],Rh=["disabled"],jh={class:"calendar-list calendar-list--scroll"},Vh=["value","checked","onChange"],Uh={class:"calendar-item__label"},Gh={class:"calendar-item__state"},Kh={key:1,class:"warning"},qh=Ve({__name:"OnboardingCalendarsStep",props:{calendars:{},localSelection:{},toggleCalendar:{type:Function}},setup(e){const t=e,a=x(()=>t.calendars.length>0&&t.localSelection.length===t.calendars.length);function o(){for(const n of t.calendars)t.localSelection.includes(n.id)||t.toggleCalendar(n.id,{checked:!0})}function r(){for(const n of t.calendars)t.localSelection.includes(n.id)&&t.toggleCalendar(n.id,{checked:!1})}return(n,s)=>(h(),y(ye,null,[s[0]||(s[0]=i("h3",null,"Select the calendars Opsdash should include",-1)),n.calendars.length?(h(),y("div",Fh,[i("span",Ph,E(n.localSelection.length)+" of "+E(n.calendars.length)+" selected",1),i("div",Wh,[i("button",{type:"button",class:"ghost-btn",disabled:a.value,onClick:o},"Select all",8,zh),i("button",{type:"button",class:"ghost-btn",disabled:!n.localSelection.length,onClick:r},"Deselect all",8,Rh)])])):ne("",!0),i("div",jh,[(h(!0),y(ye,null,Ne(n.calendars,l=>(h(),y("label",{key:l.id,class:ke(["calendar-item",{checked:n.localSelection.includes(l.id)}])},[i("input",{class:"list-checkbox",type:"checkbox",value:l.id,checked:n.localSelection.includes(l.id),onChange:d=>n.toggleCalendar(l.id,d.target)},null,40,Vh),i("span",{class:"dot",style:He({backgroundColor:l.color||"#3B82F6"})},null,4),i("span",Uh,E(l.displayname),1),i("span",Gh,E(n.localSelection.includes(l.id)?"selected":"not selected"),1)],2))),128))]),n.localSelection.length?ne("",!0):(h(),y("div",Kh,"Select at least one calendar to continue."))],64))}}),Jh={class:"cpp-wrap","data-color-popover":""},Zh=["disabled","aria-expanded","aria-label"],Yh=["onKeydown"],Xh={class:"cpp-grid",role:"group","aria-label":"Preset colors"},Qh=["title","aria-label","onClick"],em={class:"cpp-custom"},tm=["value"],On=gt(Ve({__name:"ColorPickerPopover",props:{modelValue:{},palette:{default:()=>["#2563EB","#F97316","#10B981","#A855F7","#EC4899","#14B8A6","#F59E0B","#6366F1","#EF4444","#64748B","#000000","#ffffff"]},ariaLabel:{default:"Choose color"},disabled:{type:Boolean,default:!1}},emits:["update:modelValue"],setup(e,{emit:t}){const a=e,o=t,r=oe(!1),n=oe(null);function s(){a.disabled||(r.value=!r.value,r.value&&Kt(()=>{var v;return(v=n.value)==null?void 0:v.focus()}))}function l(){r.value=!1}function d(v){o("update:modelValue",v),l()}function p(v){const b=v.target.value;/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(b)&&o("update:modelValue",b)}function u(v){v.target.closest("[data-color-popover]")||l()}return Et(()=>document.addEventListener("click",u)),$t(()=>document.removeEventListener("click",u)),(v,b)=>(h(),y("div",Jh,[i("button",{type:"button",class:"cpp-trigger",disabled:v.disabled,"aria-expanded":r.value,"aria-label":v.ariaLabel,onClick:Xe(s,["stop"])},[i("span",{class:"cpp-dot",style:He({background:v.modelValue})},null,4),zs(v.$slots,"default",{},()=>[b[0]||(b[0]=Ge("Color",-1))],!0)],8,Zh),r.value?(h(),y("div",{key:0,ref_key:"popoverRef",ref:n,class:"cpp-popover",tabindex:"-1",onKeydown:Na(Xe(l,["prevent"]),["esc"])},[i("div",Xh,[(h(!0),y(ye,null,Ne(v.palette,c=>{var f;return h(),y("button",{key:c,type:"button",class:ke(["cpp-swatch",{active:((f=v.modelValue)==null?void 0:f.toUpperCase())===c.toUpperCase()}]),style:He({background:c}),title:c,"aria-label":c,onClick:g=>d(c)},null,14,Qh)}),128))]),i("label",em,[b[1]||(b[1]=i("span",null,"Custom",-1)),i("input",{type:"color",class:"cpp-custom-input",value:v.modelValue,onInput:p},null,40,tm)])],40,Yh)):ne("",!0)]))}}),[["__scopeId","data-v-81fba48e"]]),am={class:"goals-step"},om={key:0,class:"goal-single"},rm={class:"goal-single__editor"},nm={class:"field"},sm={class:"input-unit"},im=["value"],lm={key:0,class:"hint"},dm={key:1,class:"goal-calendar"},cm={key:0,class:"goal-suggestion-toolbar"},um={class:"goal-suggestion-toolbar__cluster"},gm={key:0,class:"goal-suggestion-inline-editor"},pm=["max","value"],fm={class:"goal-suggestion-inline-editor__meta"},bm={class:"goal-suggestion-toolbar__meta"},vm={class:"goal-calendar-list"},hm={class:"goal-calendar-row__main"},mm={class:"goal-suggestion-inline"},ym=["onClick"],wm={key:1},km={class:"input-unit"},xm=["value","onInput"],_m={key:2,class:"goal-advanced goal-advanced--b26"},Cm={class:"goal-template-strip"},Sm=["onClick"],Tm={class:"goal-preset-swatches"},$m={class:"goal-panel-card"},Mm={class:"goal-panel-card__head"},Am={class:"goal-panel-pills"},Dm={class:"pill"},Lm={class:"pill"},Em={key:0,class:"goal-suggestion-toolbar goal-suggestion-toolbar--panel"},Nm={class:"goal-suggestion-toolbar__cluster"},Im={key:0,class:"goal-suggestion-inline-editor"},Om=["max","value"],Bm={class:"goal-suggestion-inline-editor__meta"},Hm={class:"goal-suggestion-toolbar__meta"},Fm={key:1,class:"goal-mismatch-box"},Pm={key:2,class:"goal-mismatch-box goal-mismatch-box--ok"},Wm={class:"goal-category-list goal-category-list--accordion"},zm=["onDragstart","onDrop"],Rm={class:"goal-category-titlebar"},jm=["value","onInput"],Vm={class:"value-pill"},Um={class:"goal-category-action-card"},Gm={class:"field goal-field-stack goal-inline-target goal-action-block"},Km={class:"input-unit input-unit--small"},qm=["value","onInput"],Jm={class:"field goal-field-stack goal-color-stack goal-color-stack--inline goal-action-block"},Zm={class:"field goal-checkbox goal-action-block"},Ym={class:"goal-checkbox__control"},Xm=["checked","onChange"],Qm={class:"field goal-pace-field goal-action-block"},ey=["value","onChange"],ty={class:"goal-suggestion-stack goal-suggestion-stack--inline goal-action-block"},ay=["onClick"],oy={key:1,class:"goal-suggestion-pill goal-suggestion-pill--muted"},ry={class:"goal-category-action-icons"},ny=["title"],sy=["aria-label","onChange"],iy={value:""},ly=["value"],dy=["disabled","onClick"],cy={class:"goal-reorder-tools goal-reorder-tools--surface goal-reorder-tools--compact","aria-label":"Category reorder controls"},uy=["onClick"],gy=["onClick"],py=["onClick"],fy={class:"mini-pills"},by={class:"chevron-pill"},vy={class:"row-name"},hy={class:"value-pill"},my={key:0,class:"goal-category-assigned-badges","aria-label":"Assigned calendars"},yy={class:"goal-calendar-badge__name"},wy={class:"goal-calendar-badge__hours"},ky={key:0,class:"goal-category-editor"},xy={class:"goal-category-row-bottom"},_y={class:"goal-nice-select"},Cy={key:0,class:"goal-calendar-sublist"},Sy=["onDragstart","onDrop"],Ty={class:"goal-calendar-subrow__main"},$y={class:"row-name"},My={class:"input-unit input-unit--small"},Ay=["value","onInput"],Dy={class:"goal-calendar-subrow__status"},Ly=["disabled","onClick"],Ey={class:"goal-calendar-subrow__actions"},Ny={class:"goal-reorder-tools goal-reorder-tools--calendar goal-reorder-tools--surface","aria-label":"Calendar reorder controls"},Iy=["onClick"],Oy=["onClick"],By=["aria-label","title","onClick"],Hy={key:1,class:"hint"},Fy={key:3,class:"hint"},Mc=Ve({__name:"OnboardingGoalsStep",props:{selectedStrategy:{},selectedCalendars:{},categories:{},assignments:{},categoryPresets:{},totalHoursInput:{},onTotalHoursChange:{type:Function},onApplyTotalSuggestion:{type:Function},trendLookbackInput:{},activeHistoryLookback:{},historySummary:{},suggestionsLoading:{type:Boolean},suggestionsError:{},onTrendLookbackChange:{type:Function},suggestedCalendarTargets:{},suggestedCategoryTargets:{},onApplyCalendarSuggestion:{type:Function},onApplyCategorySuggestion:{type:Function},addCategory:{type:Function},removeCategory:{type:Function},moveCategory:{type:Function},reorderCategory:{type:Function},reorderSelectedCalendar:{type:Function},moveSelectedCalendar:{type:Function},setCategoryLabel:{type:Function},applyCategoryPreset:{type:Function},setCategoryTarget:{type:Function},setCategoryPaceMode:{type:Function},toggleCategoryWeekend:{type:Function},assignCalendar:{type:Function},setCalendarTarget:{type:Function},getCalendarTarget:{type:Function},unassignedSelectedCalendars:{},goalsHealth:{},resolvedColor:{type:Function},onColorInput:{type:Function}},setup(e){const t=e,a=oe(""),o=oe(""),r=oe(""),n=oe(""),s=oe(!1);let l=null;const d=x(()=>t.selectedCalendars.reduce((k,m)=>k+Number(t.suggestedCalendarTargets[m.id]??0),0)),p=x(()=>k=>t.selectedCalendars.filter(m=>t.assignments[m.id]===k)),u=x(()=>k=>t.selectedCalendars.filter(m=>{const w=t.assignments[m.id];return!w||w===k})),v=x(()=>t.categories.map(k=>{const m=t.selectedCalendars.filter(L=>t.assignments[L.id]===k.id),w=m.reduce((L,Z)=>L+Number(t.getCalendarTarget(Z.id)||0),0),D=Number(k.targetHours||0),R=Math.abs(D-w);return{id:k.id,label:k.label||"Untitled category",assigned:w,target:D,mismatch:R,count:m.length}})),b=x(()=>v.value.filter(m=>m.mismatch>.01).sort((m,w)=>w.mismatch-m.mismatch)[0]??null);Oe(()=>{var k;return[t.categories.map(m=>m.id).join(","),(k=b.value)==null?void 0:k.id].join("::")},()=>{var k,m,w;if((k=b.value)!=null&&k.id){r.value=b.value.id;return}t.categories.find(D=>D.id===r.value)?r.value||(r.value=((w=t.categories[0])==null?void 0:w.id)??""):r.value=((m=t.categories[0])==null?void 0:m.id)??""},{immediate:!0}),Oe(()=>[t.selectedStrategy,t.categories.length,t.categoryPresets.length].join("::"),()=>{if(s.value=!1,t.selectedStrategy==="full_granular"&&!t.categories.length&&t.categoryPresets.length){const k=t.categoryPresets[0];n.value=k.id,l&&clearTimeout(l),l=setTimeout(()=>{t.applyCategoryPreset(k)},0)}},{immediate:!0});function c(k){a.value=k}function f(k){a.value&&(t.reorderCategory(a.value,k),a.value="")}function g(k){o.value=k}function T(k){o.value&&(t.reorderSelectedCalendar(o.value,k),o.value="")}function S(k,m){const w=m.value;w&&(t.assignCalendar(w,k),m.value="")}function $(k){return v.value.find(m=>m.id===k.id)??{id:k.id,label:k.label||"Untitled category",assigned:0,target:Number(k.targetHours||0),mismatch:Number(k.targetHours||0),count:0}}function C(k){const m=$(k);return m.mismatch<=.01?`${m.count} calendar${m.count===1?"":"s"} · matched`:`${m.count} calendar${m.count===1?"":"s"} · ${m.mismatch.toFixed(1)} h mismatch`}function H(k){return`${Number(t.getCalendarTarget(k)||0).toFixed(1)} h`}function O(k){const m=Number(t.suggestedCalendarTargets[k]??0);return m>0?`Suggested ${m.toFixed(1)} h`:`Assigned ${H(k)}`}function I(k){return k===0?"is-cool":k===1?"is-warm":"is-forest"}function _(k){t.categories.length>0&&n.value!==k.id&&!(typeof window>"u"||window.confirm("Replace the current categories with this example set?"))||(n.value=k.id,t.applyCategoryPreset(k))}return(k,m)=>(h(),y("div",am,[m[37]||(m[37]=i("header",{class:"goals-step__header"},[i("div",null,[i("h3",null,"Set your goals"),i("p",{class:"hint"},"This step changes shape based on your strategy, but all planning now lives here.")])],-1)),k.selectedStrategy==="total_only"?(h(),y("section",om,[m[13]||(m[13]=i("article",{class:"goal-info-card"},[i("span",{class:"state-chip"},"Single Goal"),i("h4",null,"One weekly goal for the whole dashboard"),i("p",{class:"hint"},"Start simple now. You can switch later to Calendar Goals or Calendar + Category Goals.")],-1)),i("article",rm,[i("label",nm,[m[11]||(m[11]=i("span",{class:"label"},"Weekly target",-1)),i("div",sm,[i("input",{type:"number",min:"0",max:"1000",step:"0.5",value:k.totalHoursInput??"",onInput:m[0]||(m[0]=w=>k.onTotalHoursChange(w.target))},null,40,im),m[10]||(m[10]=i("span",{class:"unit"},"h / week",-1))])]),d.value>0?(h(),y("p",lm,[m[12]||(m[12]=Ge(" Suggested from recent activity: ",-1)),i("button",{type:"button",class:"goal-suggestion-link",onClick:m[1]||(m[1]=(...w)=>k.onApplyTotalSuggestion&&k.onApplyTotalSuggestion(...w))},[i("strong",null,E(d.value.toFixed(1))+" h / week",1)])])):ne("",!0)])])):k.selectedStrategy==="total_plus_categories"?(h(),y("section",dm,[m[17]||(m[17]=i("article",{class:"goal-info-card"},[i("span",{class:"state-chip"},"Calendar Goals"),i("h4",null,"Set weekly goals per selected calendar"),i("p",{class:"hint"},"Suggestions are based on the currently available lookback window. Leave rows empty if you only want a few calendars to carry goals.")],-1)),k.historySummary.available?(h(),y("div",cm,[i("div",um,[i("button",{type:"button",class:ke(["goal-suggestion-toggle",{"is-open":s.value}]),onClick:m[2]||(m[2]=w=>s.value=!s.value)},[...m[14]||(m[14]=[i("span",{class:"goal-suggestion-toggle__icon","aria-hidden":"true"},"◔",-1),Ge(" Suggestion window ",-1)])],2),s.value?(h(),y("div",gm,[m[15]||(m[15]=i("span",{class:"goal-suggestion-inline-editor__label"},"Lookback",-1)),i("input",{type:"number",min:"1",max:k.historySummary.available,value:k.activeHistoryLookback,onInput:m[3]||(m[3]=w=>k.onTrendLookbackChange(w.target))},null,40,pm),i("span",fm,"/ "+E(k.historySummary.available)+" weeks",1)])):ne("",!0)]),i("span",bm,"Using last "+E(k.activeHistoryLookback)+" week"+E(k.activeHistoryLookback===1?"":"s")+" for calendar suggestions",1)])):ne("",!0),i("div",vm,[(h(!0),y(ye,null,Ne(k.selectedCalendars,w=>(h(),y("div",{key:w.id,class:"goal-calendar-row"},[i("div",hm,[i("span",{class:"dot",style:He({backgroundColor:w.color||"#3B82F6"})},null,4),i("div",null,[i("strong",null,E(w.displayname),1),i("div",mm,[k.suggestedCalendarTargets[w.id]?(h(),y("button",{key:0,type:"button",class:"goal-suggestion-link",onClick:D=>k.onApplyCalendarSuggestion(w.id)}," Suggested "+E(k.suggestedCalendarTargets[w.id].toFixed(1))+" h ",9,ym)):(h(),y("span",wm,"No recent suggestion"))])])]),i("div",km,[i("input",{type:"number",min:"0",step:"0.25",value:k.getCalendarTarget(w.id),onInput:D=>k.setCalendarTarget(w.id,D.target.value)},null,40,xm),m[16]||(m[16]=i("span",{class:"unit"},"h / week",-1))])]))),128))])])):(h(),y("section",_m,[i("div",Cm,[(h(!0),y(ye,null,Ne(k.categoryPresets,(w,D)=>(h(),y("button",{key:w.id,type:"button",class:ke(["goal-template-card",[{active:n.value===w.id},I(D)]]),onClick:R=>_(w)},[i("strong",null,"Example set "+E(String.fromCharCode(65+D)),1),i("p",null,E(w.colors.length)+" categories · sample only",1),i("div",Tm,[(h(!0),y(ye,null,Ne(w.colors,R=>(h(),y("span",{key:`${w.id}-${R}`,class:"goal-preset-swatch",style:He({backgroundColor:R})},null,4))),128))])],10,Sm))),128))]),i("article",$m,[i("div",Mm,[m[18]||(m[18]=i("div",{class:"goal-panel-card__title"},[i("h4",null,"Suggested category goals"),i("p",{class:"hint"},"Align category targets with assigned calendar hours, then tune pacing and color per row.")],-1)),i("div",Am,[i("span",Dm,E(k.categories.length)+" categories",1),i("span",Lm,E(k.selectedCalendars.length)+" calendars selected",1),i("span",{class:ke(["pill",{"pill--warn":b.value}])},E(b.value?"1 mismatch open":"All rows aligned"),3),i("button",{type:"button",class:"ghost-btn",onClick:m[4]||(m[4]=(...w)=>k.addCategory&&k.addCategory(...w))},"Add category")])]),k.historySummary.available?(h(),y("div",Em,[i("div",Nm,[i("button",{type:"button",class:ke(["goal-suggestion-toggle",{"is-open":s.value}]),onClick:m[5]||(m[5]=w=>s.value=!s.value)},[...m[19]||(m[19]=[i("span",{class:"goal-suggestion-toggle__icon","aria-hidden":"true"},"◔",-1),Ge(" Suggestion window ",-1)])],2),s.value?(h(),y("div",Im,[m[20]||(m[20]=i("span",{class:"goal-suggestion-inline-editor__label"},"Lookback",-1)),i("input",{type:"number",min:"1",max:k.historySummary.available,value:k.activeHistoryLookback,onInput:m[6]||(m[6]=w=>k.onTrendLookbackChange(w.target))},null,40,Om),i("span",Bm,"/ "+E(k.historySummary.available)+" weeks",1)])):ne("",!0)]),i("span",Hm,"Using last "+E(k.activeHistoryLookback)+" week"+E(k.activeHistoryLookback===1?"":"s")+" for calendar and category suggestions",1)])):ne("",!0),b.value?(h(),y("div",Fm,[i("strong",null,E(b.value.label)+" needs attention first",1),i("p",null,[Ge(E(b.value.label)+" is currently set to ",1),i("strong",null,E(b.value.target.toFixed(1))+" h",1),m[21]||(m[21]=Ge(", but the assigned calendar totals ",-1)),i("strong",null,E(b.value.assigned.toFixed(1))+" h",1),m[22]||(m[22]=Ge(". Open this row first so the mismatch is visible and easy to resolve. ",-1))])])):(h(),y("div",Pm,[...m[23]||(m[23]=[i("strong",null,"All visible totals currently match",-1),i("p",null,"You can still reorder categories, add calendars, or fine-tune targets below.",-1)])])),i("div",Wm,[(h(!0),y(ye,null,Ne(k.categories,w=>(h(),y("article",{key:w.id,class:ke(["goal-category-card goal-category-card--accordion",{"is-open":r.value===w.id}]),draggable:"true",onDragstart:D=>c(w.id),onDragover:m[9]||(m[9]=Xe(()=>{},["prevent"])),onDrop:Xe(D=>f(w.id),["prevent"])},[i("div",{class:ke(["goal-category-top",{"is-open":r.value===w.id}])},[r.value===w.id?(h(),y(ye,{key:0},[i("div",Rm,[i("button",{type:"button",class:"goal-category-collapse","aria-label":"Collapse category",title:"Collapse category",onClick:m[7]||(m[7]=D=>r.value="")}," ‹ "),i("span",{class:"color-dot",style:He({backgroundColor:k.resolvedColor(w)})},null,4),i("input",{class:"goal-category-title-input",type:"text",value:w.label,placeholder:"Category title",onInput:D=>k.setCategoryLabel(w.id,D.target.value)},null,40,jm),i("span",Vm,E(Number(w.targetHours||0).toFixed(1))+" h / week",1),i("span",{class:ke(["suggest-pill",{"suggest-pill--warn":$(w).mismatch>.01}])},E(C(w)),3)]),i("div",Um,[m[32]||(m[32]=i("span",{class:"goal-card-corner-grip",title:"Drag to reorder category","aria-hidden":"true"},"⋮⋮",-1)),i("label",Gm,[m[25]||(m[25]=i("span",{class:"label"},"Weekly target",-1)),i("div",Km,[i("input",{type:"number",min:"0",step:"0.5",value:w.targetHours,onInput:D=>k.setCategoryTarget(w.id,D.target.value)},null,40,qm),m[24]||(m[24]=i("span",{class:"unit"},"h",-1))])]),i("div",Jm,[m[26]||(m[26]=i("span",{class:"label"},"Color",-1)),Re(On,{"model-value":k.resolvedColor(w),"onUpdate:modelValue":D=>k.onColorInput(w.id,D)},null,8,["model-value","onUpdate:modelValue"])]),i("label",Zm,[m[27]||(m[27]=i("span",{class:"label"},"Weekend",-1)),i("span",Ym,[i("input",{type:"checkbox",checked:w.includeWeekend,onChange:D=>k.toggleCategoryWeekend(w.id,D.target.checked)},null,40,Xm)])]),i("label",Qm,[m[29]||(m[29]=i("span",{class:"label"},"Pacing",-1)),i("select",{value:w.paceMode,onChange:D=>k.setCategoryPaceMode(w.id,D.target.value)},[...m[28]||(m[28]=[i("option",{value:"days_only"},"Days only",-1),i("option",{value:"time_aware"},"Time aware",-1)])],40,ey)]),i("div",ty,[m[30]||(m[30]=i("span",{class:"label"},"Suggestion",-1)),k.suggestedCategoryTargets[w.id]?(h(),y("button",{key:0,type:"button",class:"goal-suggestion-pill goal-suggestion-pill--action",onClick:D=>k.onApplyCategorySuggestion(w.id)}," Suggested "+E(k.suggestedCategoryTargets[w.id].toFixed(1))+" h ",9,ay)):(h(),y("span",oy,"No recent suggestion"))]),i("div",ry,[i("label",{class:ke(["goal-add-calendar-control",{"goal-add-calendar-control--empty":!u.value(w.id).length}]),title:u.value(w.id).length?`Add calendar to ${w.label||"category"}`:"No calendars left to assign"},[m[31]||(m[31]=i("span",{class:"goal-add-calendar-control__icon","aria-hidden":"true"},[i("span",{class:"goal-add-calendar-control__sheet"}),i("span",{class:"goal-add-calendar-control__plus"},"+")],-1)),i("select",{class:"goal-add-calendar-control__native","aria-label":u.value(w.id).length?`Add calendar to ${w.label||"category"}`:"No calendars left to assign",onChange:D=>S(w.id,D.target)},[i("option",iy,E(u.value(w.id).length?"Add calendar":"No calendars left"),1),(h(!0),y(ye,null,Ne(u.value(w.id),D=>(h(),y("option",{key:`${w.id}-${D.id}`,value:D.id},E(D.displayname),9,ly))),128))],40,sy)],10,ny),i("button",{class:"goal-row-icon-btn",type:"button",disabled:k.categories.length<=1,"aria-label":"Remove category",title:"Remove category",onClick:D=>k.removeCategory(w.id)}," × ",8,dy),i("div",cy,[i("button",{type:"button",class:"reorder-icon-btn",title:"Move category up","aria-label":"Move category up",onClick:Xe(D=>k.moveCategory(w.id,"up"),["stop"])},"↑",8,uy),i("button",{type:"button",class:"reorder-icon-btn",title:"Move category down","aria-label":"Move category down",onClick:Xe(D=>k.moveCategory(w.id,"down"),["stop"])},"↓",8,gy)])])])],64)):(h(),y(ye,{key:1},[i("button",{type:"button",class:"goal-category-summary",onClick:D=>r.value=w.id},[i("span",fy,[i("span",by,E(r.value===w.id?"⌄":"›"),1),i("span",{class:"color-dot",style:He({backgroundColor:k.resolvedColor(w)})},null,4),i("strong",vy,E(w.label||"Untitled category"),1)]),i("span",hy,E(Number(w.targetHours||0).toFixed(1))+" h / week",1),i("span",{class:ke(["suggest-pill",{"suggest-pill--warn":$(w).mismatch>.01}])},E(C(w)),3)],8,py),p.value(w.id).length?(h(),y("div",my,[(h(!0),y(ye,null,Ne(p.value(w.id),D=>(h(),y("span",{key:`${w.id}-${D.id}-badge`,class:"goal-calendar-badge"},[i("span",{class:"goal-calendar-color",style:He({backgroundColor:D.color||"#3B82F6"})},null,4),i("span",yy,E(D.displayname),1),i("span",wy,E(H(D.id)),1)]))),128))])):ne("",!0)],64))],2),r.value===w.id?(h(),y("div",ky,[i("div",xy,[m[33]||(m[33]=i("div",{class:"goal-category-row-bottom__head"},[i("div",{class:"goal-section-copy"},[i("strong",{class:"goal-section-label"},"Calendars in this category"),i("span",{class:"row-inline-note"},"Use the handles below to reorder calendars inside this category.")])],-1)),i("div",_y,[(h(!0),y(ye,null,Ne(p.value(w.id),D=>(h(),y("span",{key:`${w.id}-${D.id}-token`,class:"select-pill"},[i("span",{class:"goal-calendar-color",style:He({backgroundColor:D.color||"#3B82F6"})},null,4),Ge(" "+E(D.displayname),1)]))),128))])]),p.value(w.id).length?(h(),y("div",Cy,[(h(!0),y(ye,null,Ne(p.value(w.id),D=>(h(),y("div",{key:`${w.id}-${D.id}`,class:"goal-calendar-subrow",draggable:"true",onDragstart:R=>g(D.id),onDragover:m[8]||(m[8]=Xe(()=>{},["prevent"])),onDrop:Xe(R=>T(D.id),["prevent"])},[m[36]||(m[36]=i("span",{class:"goal-calendar-corner-grip",title:"Drag to reorder calendar","aria-hidden":"true"},"⋮⋮",-1)),i("div",Ty,[i("span",{class:"goal-calendar-color",style:He({backgroundColor:D.color||"#3B82F6"})},null,4),i("strong",$y,E(D.displayname),1)]),i("div",My,[i("input",{type:"number",min:"0",step:"0.25",value:k.getCalendarTarget(D.id),onInput:R=>k.setCalendarTarget(D.id,R.target.value)},null,40,Ay),m[34]||(m[34]=i("span",{class:"unit"},"h",-1))]),i("div",Dy,[m[35]||(m[35]=i("span",{class:"label"},"Suggestion",-1)),i("button",{type:"button",class:ke(["suggest-pill",{"suggest-pill--muted":!k.suggestedCalendarTargets[D.id],"suggest-pill--action":!!k.suggestedCalendarTargets[D.id]}]),disabled:!k.suggestedCalendarTargets[D.id],onClick:R=>k.onApplyCalendarSuggestion(D.id)},E(O(D.id)),11,Ly)]),i("div",Ey,[i("div",Ny,[i("button",{type:"button",class:"reorder-icon-btn",title:"Move calendar up","aria-label":"Move calendar up",onClick:Xe(R=>k.moveSelectedCalendar(D.id,"up"),["stop"])},"↑",8,Iy),i("button",{type:"button",class:"reorder-icon-btn",title:"Move calendar down","aria-label":"Move calendar down",onClick:Xe(R=>k.moveSelectedCalendar(D.id,"down"),["stop"])},"↓",8,Oy)]),i("button",{class:"goal-row-icon-btn",type:"button","aria-label":`Unassign ${D.displayname}`,title:`Unassign ${D.displayname}`,onClick:R=>k.assignCalendar(D.id,"")}," × ",8,By)])],40,Sy))),128))])):(h(),y("p",Hy,"No calendars assigned yet."))])):ne("",!0)],42,zm))),128))]),k.unassignedSelectedCalendars.length?(h(),y("p",Fy," Unassigned: "+E(k.unassignedSelectedCalendars.map(w=>w.displayname).join(", ")),1)):ne("",!0)])]))]))}}),Py={class:"review-layout"},Wy={class:"review-main"},zy={class:"review-section"},Ry={class:"review-row-list"},jy={class:"review-row"},Vy={class:"review-row"},Uy={class:"review-row"},Gy={class:"review-row"},Ky={class:"review-row"},qy={class:"review-row"},Jy={class:"review-side"},Zy={class:"review-section"},Yy={class:"review-checklist"},Xy={class:"review-status"},Qy={class:"review-checklist__copy"},e1=["onClick"],t1={key:0,class:"review-section review-profile"},a1={class:"toggle-row"},o1=["checked"],r1={key:0,class:"field"},n1=["value"],s1=Ve({__name:"OnboardingReviewStep",props:{strategyTitle:{},categoriesEnabled:{type:Boolean},calendarTargetsEnabled:{type:Boolean},selectedCalendars:{},draftTargetsCategories:{},draftTotalHours:{},totalHoursInput:{},categoryTotalHours:{},deckReviewSummary:{},deckEnabled:{type:Boolean},deckVisibleBoards:{},reportingEnabled:{type:Boolean},reportingSummary:{},themePreference:{},dashboardMode:{},saveProfile:{type:Boolean},profileName:{},showSaveProfile:{type:Boolean},setSaveProfile:{type:Function},setProfileName:{type:Function},goToStep:{type:Function}},setup(e){const t=e,a=x(()=>t.categoriesEnabled&&t.draftTargetsCategories.length?t.categoryTotalHours:Number.isFinite(t.totalHoursInput??NaN)?Number(t.totalHoursInput):Number.isFinite(t.draftTotalHours)?Number(t.draftTotalHours):0),o=x(()=>t.dashboardMode==="quick"?"Empty layout":t.dashboardMode==="pro"?"Advanced layout":"Standard layout"),r=x(()=>t.themePreference==="light"?"Light theme":t.themePreference==="dark"?"Dark theme":"Follow Nextcloud theme"),n=x(()=>t.categoriesEnabled?"Calendar + Category Goals with category targets, per-calendar hours, and assignments.":t.calendarTargetsEnabled?"Calendar Goals with per-calendar weekly targets.":"Single Goal with one overall weekly target."),s=x(()=>{if(!t.selectedCalendars.length)return"No calendars selected yet.";const b=t.selectedCalendars.slice(0,3).map(f=>f.displayname),c=t.selectedCalendars.length-b.length;return c>0?`${b.join(", ")} +${c} more`:b.join(", ")}),l=x(()=>{if(t.categoriesEnabled&&t.draftTargetsCategories.length){const b=t.draftTargetsCategories.slice(0,3).map(f=>`${f.label} ${f.targetHours}h`),c=t.draftTargetsCategories.length-b.length;return`${b.join(" · ")}${c>0?` · +${c} more`:""} · Total ${a.value.toFixed(1)} h / week`}return t.calendarTargetsEnabled?`Per-calendar goals with ${a.value.toFixed(1)} h / week total.`:`${a.value.toFixed(1)} h / week total goal.`}),d=x(()=>{if(!t.deckEnabled)return"Deck hidden in this setup.";if(!t.deckVisibleBoards.length)return t.deckReviewSummary;const b=t.deckVisibleBoards.slice(0,2).map(f=>f.title),c=t.deckVisibleBoards.length-b.length;return c>0?`${b.join(", ")} +${c} more`:b.join(", ")}),p=x(()=>`${r.value} · ${t.reportingEnabled?t.reportingSummary:"Recap disabled"}`),u=x(()=>`${o.value} with the selected widget and tab preset.`),v=x(()=>{const b=[];return b.push({id:"calendars",title:"Calendars selected",detail:t.selectedCalendars.length>0?`${t.selectedCalendars.length} calendar${t.selectedCalendars.length===1?"":"s"} selected.`:"Select at least one calendar to generate data.",ok:t.selectedCalendars.length>0,step:"calendars",canFix:!0}),b.push({id:"targets",title:"Targets configured",detail:a.value>0?`${a.value.toFixed(1)} h weekly target configured.`:"Set a weekly target greater than 0 hours.",ok:a.value>0,step:"goals",canFix:!0}),b.push({id:"deck",title:"Deck visibility",detail:!t.deckEnabled||t.deckVisibleBoards.length>0?t.deckEnabled?`${t.deckVisibleBoards.length} board${t.deckVisibleBoards.length===1?"":"s"} visible in Deck tab.`:"Deck tab disabled by choice.":"Deck tab is enabled but no boards are visible.",ok:!t.deckEnabled||t.deckVisibleBoards.length>0,step:"deck",canFix:!0}),b.push({id:"profile",title:"Profile backup",detail:!t.showSaveProfile||!t.saveProfile||t.profileName.trim().length>0?t.saveProfile?`Profile "${t.profileName.trim()}" will be saved.`:"No extra profile backup requested.":"Save profile is enabled but the profile name is empty.",ok:!t.showSaveProfile||!t.saveProfile||t.profileName.trim().length>0,step:"preferences",canFix:!1}),b});return(b,c)=>(h(),y("div",Py,[i("div",Wy,[i("section",zy,[c[14]||(c[14]=i("h4",null,"Configuration summary",-1)),i("div",Ry,[i("article",jy,[i("div",null,[c[8]||(c[8]=i("strong",null,"Strategy",-1)),i("p",null,E(n.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[0]||(c[0]=f=>b.goToStep("strategy"))},"Edit")]),i("article",Vy,[i("div",null,[c[9]||(c[9]=i("strong",null,"Calendars",-1)),i("p",null,E(s.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[1]||(c[1]=f=>b.goToStep("calendars"))},"Edit")]),i("article",Uy,[i("div",null,[c[10]||(c[10]=i("strong",null,"Deck",-1)),i("p",null,E(d.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[2]||(c[2]=f=>b.goToStep("deck"))},"Edit")]),i("article",Gy,[i("div",null,[c[11]||(c[11]=i("strong",null,"Goals",-1)),i("p",null,E(l.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[3]||(c[3]=f=>b.goToStep("goals"))},"Edit")]),i("article",Ky,[i("div",null,[c[12]||(c[12]=i("strong",null,"Preferences",-1)),i("p",null,E(p.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[4]||(c[4]=f=>b.goToStep("preferences"))},"Edit")]),i("article",qy,[i("div",null,[c[13]||(c[13]=i("strong",null,"Dashboard",-1)),i("p",null,E(u.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[5]||(c[5]=f=>b.goToStep("dashboard"))},"Edit")])])])]),i("aside",Jy,[i("section",Zy,[c[15]||(c[15]=i("h4",null,"Readiness",-1)),i("ul",Yy,[(h(!0),y(ye,null,Ne(v.value,f=>(h(),y("li",{key:f.id,class:ke(f.ok?"is-ok":"is-warn")},[i("span",Xy,E(f.ok?"Ready":"Action needed"),1),i("div",Qy,[i("strong",null,E(f.title),1),i("p",null,E(f.detail),1)]),!f.ok&&f.canFix?(h(),y("button",{key:0,type:"button",class:"review-inline-btn",onClick:g=>b.goToStep(f.step)}," Fix ",8,e1)):ne("",!0)],2))),128))])]),b.showSaveProfile?(h(),y("section",t1,[c[18]||(c[18]=i("h4",null,"Save profile",-1)),i("label",a1,[i("input",{type:"checkbox",checked:b.saveProfile,onChange:c[6]||(c[6]=f=>b.setSaveProfile(f.target.checked))},null,40,o1),c[16]||(c[16]=i("span",null,"Save as new profile",-1))]),b.saveProfile?(h(),y("div",r1,[c[17]||(c[17]=i("span",{class:"label"},"Profile name",-1)),i("input",{type:"text",value:b.profileName,placeholder:"e.g. Team workload",onInput:c[7]||(c[7]=f=>b.setProfileName(f.target.value))},null,40,n1)])):ne("",!0),c[19]||(c[19]=i("p",{class:"hint"},"Profiles store widgets/tabs, targets, theme, Deck, and reporting settings.",-1))])):ne("",!0)])]))}});function i1(){const e=oe(!1),t=oe(!1),a=oe(0),o=oe(null),r=x(()=>e.value||t.value);async function n(s){a.value+=1,o.value=s??null,e.value=!1,t.value=!0,await Kt()}return{autoWizardNeeded:e,manualWizardOpen:t,onboardingRunId:a,onboardingWizardVisible:r,openWizardFromSidebar:n,wizardStartStep:o}}const Ac=24*60*60*1e3;function Ia(e,t,a){const o=Number(e);return Number.isFinite(o)?Math.min(a,Math.max(t,Math.round(o*100)/100)):t}function l1(e,t,a){const o=Number(e);if(!Number.isFinite(o))return t;const r=Math.round(o);return r<t?t:r>a?a:r}function Xt(e){return Number.isFinite(e)?Number(e.toFixed(2)):0}function di(e){return Number.isFinite(e)?Math.max(0,Math.min(999,Number(e.toFixed(2)))):0}function ci(e){if(!Number.isFinite(e))return"0";const t=Xt(Math.max(0,e));return Math.abs(t-Math.round(t))<.05?Math.round(t).toString():t.toFixed(1)}function ja(e){const t=Number(e);if(!Number.isFinite(t))return 0;const a=Math.min(1e4,Math.max(0,t));return Number(a.toFixed(2))}function Va(e){return ja(Number(e)*4)}function Dc(){return{showWeekendShare:!0,showEveningShare:!0,showEarliestLatest:!0,showOverlaps:!0,showLongestSession:!0,showLastDayOff:!0,showDayOffTrend:!0,showHint:!0,forecastMode:"total"}}function Jo(){return{categories:["work","hobby","sport"],useCategoryMapping:!0,index:{method:"simple_range",basis:"category"},thresholds:{noticeAbove:.15,noticeBelow:.15,warnAbove:.3,warnBelow:.3,warnIndex:.6},relations:{displayMode:"ratio"},trend:{lookbackWeeks:3},dayparts:{enabled:!1},ui:{showNotes:!1}}}function _a(){return{totalHours:48,categories:[{id:"work",label:"Work",targetHours:32,includeWeekend:!1,paceMode:"days_only",color:"#2563EB",groupIds:[1]},{id:"hobby",label:"Hobby",targetHours:6,includeWeekend:!0,paceMode:"days_only",color:"#F97316",groupIds:[2]},{id:"sport",label:"Sport",targetHours:4,includeWeekend:!0,paceMode:"days_only",color:"#10B981",groupIds:[3]}],pace:{includeWeekendTotal:!0,mode:"days_only",thresholds:{onTrack:-2,atRisk:-10}},forecast:{methodPrimary:"linear",momentumLastNDays:2,padding:1.5},ui:{showTotalDelta:!0,showNeedPerDay:!0,showCategoryBlocks:!0,badges:!0,includeWeekendToggle:!0,showCalendarCharts:!0,showCategoryCharts:!0},allDayHours:8,timeSummary:{showTotal:!0,showAverage:!0,showMedian:!0,showBusiest:!0,showWorkday:!0,showWeekend:!0,showWeekendShare:!0,showCalendarSummary:!0,showTopCategory:!0,showBalance:!0},activityCard:Dc(),balance:Jo(),includeZeroDaysInStats:!1}}function Ua(e){return JSON.parse(JSON.stringify(Qt(e)))}function Qt(e){var s,l,d,p,u,v,b,c,f,g,T,S,$,C,H,O,I,_,k,m,w,D,R,L,Z;if(typeof e=="string")try{const K=JSON.parse(e);return Qt(K)}catch{return Qt(void 0)}const t=_a(),a=JSON.parse(JSON.stringify(e??{}));if(typeof a!="object"||a===null||Array.isArray(a))return t;Array.isArray(a.categories)||(a.categories=[]);const o=a.categories.map(K=>{const Y=(K!=null&&K.id&&typeof K.id=="string"?K.id:"")||p1(String((K==null?void 0:K.label)??"cat")),le=typeof(K==null?void 0:K.label)=="string"&&K.label.trim()!==""?K.label.trim():g1(Y),J=Ia(K==null?void 0:K.targetHours,0,1e4),de=!!(K!=null&&K.includeWeekend),B=(K==null?void 0:K.paceMode)==="time_aware"?"time_aware":"days_only",G=u1(K==null?void 0:K.color),A=Array.isArray(K==null?void 0:K.groupIds)?K.groupIds.map(V=>Number(V)).filter(V=>Number.isFinite(V)&&V>=0&&V<=9):[];return{id:Y,label:le,targetHours:J,includeWeekend:de,paceMode:B,color:G,groupIds:A}}),r=o.length?o:t.categories;return{totalHours:Ia(a.totalHours,0,1e4),categories:r,pace:{includeWeekendTotal:!!(((s=a.pace)==null?void 0:s.includeWeekendTotal)??t.pace.includeWeekendTotal),mode:((l=a.pace)==null?void 0:l.mode)==="time_aware"?"time_aware":t.pace.mode,thresholds:{onTrack:Ia(((p=(d=a.pace)==null?void 0:d.thresholds)==null?void 0:p.onTrack)??t.pace.thresholds.onTrack,-100,100),atRisk:Ia(((v=(u=a.pace)==null?void 0:u.thresholds)==null?void 0:v.atRisk)??t.pace.thresholds.atRisk,-100,100)}},forecast:{methodPrimary:((b=a.forecast)==null?void 0:b.methodPrimary)==="momentum"?"momentum":"linear",momentumLastNDays:(()=>{var Y;const K=Math.round(((Y=a.forecast)==null?void 0:Y.momentumLastNDays)??t.forecast.momentumLastNDays);return Math.min(14,Math.max(1,Number.isFinite(K)?K:t.forecast.momentumLastNDays))})(),padding:Ia(((c=a.forecast)==null?void 0:c.padding)??t.forecast.padding,0,100)},ui:{showTotalDelta:!!(((f=a.ui)==null?void 0:f.showTotalDelta)??t.ui.showTotalDelta),showNeedPerDay:!!(((g=a.ui)==null?void 0:g.showNeedPerDay)??t.ui.showNeedPerDay),showCategoryBlocks:!!(((T=a.ui)==null?void 0:T.showCategoryBlocks)??t.ui.showCategoryBlocks),badges:!!(((S=a.ui)==null?void 0:S.badges)??t.ui.badges),includeWeekendToggle:!!((($=a.ui)==null?void 0:$.includeWeekendToggle)??t.ui.includeWeekendToggle),showCalendarCharts:((C=a.ui)==null?void 0:C.showCalendarCharts)===void 0?t.ui.showCalendarCharts:!!a.ui.showCalendarCharts,showCategoryCharts:((H=a.ui)==null?void 0:H.showCategoryCharts)===void 0?t.ui.showCategoryCharts:!!a.ui.showCategoryCharts},allDayHours:Ia(a.allDayHours??t.allDayHours,0,24),timeSummary:{showTotal:((O=a.timeSummary)==null?void 0:O.showTotal)===void 0?t.timeSummary.showTotal:!!a.timeSummary.showTotal,showAverage:((I=a.timeSummary)==null?void 0:I.showAverage)===void 0?t.timeSummary.showAverage:!!a.timeSummary.showAverage,showMedian:((_=a.timeSummary)==null?void 0:_.showMedian)===void 0?t.timeSummary.showMedian:!!a.timeSummary.showMedian,showBusiest:((k=a.timeSummary)==null?void 0:k.showBusiest)===void 0?t.timeSummary.showBusiest:!!a.timeSummary.showBusiest,showWorkday:((m=a.timeSummary)==null?void 0:m.showWorkday)===void 0?t.timeSummary.showWorkday:!!a.timeSummary.showWorkday,showWeekend:((w=a.timeSummary)==null?void 0:w.showWeekend)===void 0?t.timeSummary.showWeekend:!!a.timeSummary.showWeekend,showWeekendShare:((D=a.timeSummary)==null?void 0:D.showWeekendShare)===void 0?t.timeSummary.showWeekendShare:!!a.timeSummary.showWeekendShare,showCalendarSummary:((R=a.timeSummary)==null?void 0:R.showCalendarSummary)===void 0?t.timeSummary.showCalendarSummary:!!a.timeSummary.showCalendarSummary,showTopCategory:((L=a.timeSummary)==null?void 0:L.showTopCategory)===void 0?t.timeSummary.showTopCategory:!!a.timeSummary.showTopCategory,showBalance:((Z=a.timeSummary)==null?void 0:Z.showBalance)===void 0?t.timeSummary.showBalance:!!a.timeSummary.showBalance},activityCard:d1(a.activityCard,t.activityCard),balance:c1(a.balance,r,t.balance),includeZeroDaysInStats:!!(a.includeZeroDaysInStats??t.includeZeroDaysInStats)}}function d1(e,t){const a={...t};if(!e||typeof e!="object")return a;["showWeekendShare","showEveningShare","showEarliestLatest","showOverlaps","showLongestSession","showLastDayOff","showDayOffTrend","showHint"].forEach(n=>{Object.prototype.hasOwnProperty.call(e,n)&&(a[n]=!!e[n])});const r=e==null?void 0:e.forecastMode;if(typeof r=="string"){const n=r.toLowerCase();(n==="off"||n==="total"||n==="calendar"||n==="category")&&(a.forecastMode=n)}return a}function c1(e,t,a){var u,v,b;const o=t.map(c=>c.id),r=new Set([...o,"__uncategorized__"]),n=Array.isArray(e==null?void 0:e.categories)?e.categories:a.categories,s=[];for(const c of n){const f=typeof c=="string"?c.trim():String(c??"").trim();f&&(r.size&&!r.has(f)||s.includes(f)||s.push(f))}s.length||(o.length?s.push(...o.slice(0,a.categories.length)):s.push(...a.categories));const l=(e==null?void 0:e.thresholds)??{},d=(e==null?void 0:e.ui)??{},p=(e==null?void 0:e.index)??{};return{categories:s,useCategoryMapping:!!((e==null?void 0:e.useCategoryMapping)??a.useCategoryMapping),index:{method:(p==null?void 0:p.method)==="shannon_evenness"?"shannon_evenness":a.index.method,basis:(p==null?void 0:p.basis)==="calendar"||(p==null?void 0:p.basis)==="both"||(p==null?void 0:p.basis)==="off"?p.basis:a.index.basis},thresholds:{noticeAbove:Ia(l.noticeAbove??a.thresholds.noticeAbove,0,1),noticeBelow:Ia(l.noticeBelow??a.thresholds.noticeBelow,0,1),warnAbove:Ia(l.warnAbove??a.thresholds.warnAbove,0,1),warnBelow:Ia(l.warnBelow??a.thresholds.warnBelow,0,1),warnIndex:Ia(l.warnIndex??a.thresholds.warnIndex,0,1)},relations:{displayMode:((u=e==null?void 0:e.relations)==null?void 0:u.displayMode)==="factor"?"factor":a.relations.displayMode},trend:{lookbackWeeks:l1(((v=e==null?void 0:e.trend)==null?void 0:v.lookbackWeeks)??a.trend.lookbackWeeks,1,6)},dayparts:{enabled:!!(((b=e==null?void 0:e.dayparts)==null?void 0:b.enabled)??a.dayparts.enabled)},ui:{showNotes:!!(d.showNotes??a.ui.showNotes)}}}function u1(e){if(typeof e!="string")return;const t=e.trim();if(/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(t)){if(t.length===4){const[,a,o,r]=t;return`#${a}${a}${o}${o}${r}${r}`.toUpperCase()}return t.toUpperCase()}}function g1(e){return e?e.charAt(0).toUpperCase()+e.slice(1):""}function p1(e){let t=0;for(let a=0;a<e.length;a++)t=(t<<5)-t+e.charCodeAt(a),t|=0;return`cat-${Math.abs(t)}`}function f1(e){const t=e.pace.totalEligible>0?e.pace.elapsedEligible/e.pace.totalEligible:0,a=t>0?e.totalProgress.actualHours/t:e.totalProgress.actualHours,o=Math.max(0,Math.ceil(e.pace.daysLeft)),r=b1(e.dailyHours,e.config.forecast.momentumLastNDays),n=e.totalProgress.actualHours+r*o,s=Math.max(0,Math.min(a,n)-e.config.forecast.padding),l=Math.max(a,n)+e.config.forecast.padding,d=e.config.forecast.methodPrimary==="momentum"?"momentum":"linear",p=d==="momentum"?n:a,u=Math.max(0,p-e.config.forecast.padding),v=Math.max(0,p+e.config.forecast.padding),b=d==="momentum"?"Momentum":"Linear";return{linear:Xt(a),momentum:Xt(n),low:Xt(Math.max(0,s)),high:Xt(Math.max(0,l)),text:`${b} ±${ci(e.config.forecast.padding)}h ≈ ${ci(u)}–${ci(v)} h`,primaryMethod:d,primary:Xt(p),bandLow:Xt(u),bandHigh:Xt(v)}}function b1(e,t){if(t<=0)return 0;const a=Array.from(e.entries());if(!a.length)return 0;a.sort((n,s)=>n[0].localeCompare(s[0]));const o=a.slice(-t),r=o.reduce((n,[,s])=>n+Math.max(0,s||0),0);return o.length?r/o.length:0}function v1(e,t){var o,r;if(typeof window<"u"){const n=window;try{if(typeof(n==null?void 0:n.t)=="function")return n.t("opsdash",e,t||{});if(typeof((r=(o=n==null?void 0:n.OC)==null?void 0:o.L10N)==null?void 0:r.translate)=="function")return n.OC.L10N.translate("opsdash",e,t||{})}catch(s){n!=null&&n.console&&console.warn("[opsdash] translate failed",s)}}let a=e;return t&&Object.entries(t).forEach(([n,s])=>{a=a.replace(new RegExp(`{${n}}`,"g"),String(s))}),a}const Zo=v1;function Lc(e){const t=e?Qt(e):_a(),a=(t==null?void 0:t.totalHours)??0,o=(t==null?void 0:t.categories)??[],r={id:"total",label:Zo("Total"),actualHours:0,plannedHours:0,targetHours:a,percent:0,deltaHours:0,remainingHours:a,needPerDay:0,daysLeft:0,calendarPercent:0,gap:0,status:"none",statusLabel:"—",includeWeekend:!0,paceMode:"days_only"};return{total:r,categories:o.map(n=>({...r,id:n.id,label:n.label,targetHours:n.targetHours,remainingHours:n.targetHours})),forecast:{linear:0,momentum:0,low:0,high:0,text:"~0–0 h",primaryMethod:(t==null?void 0:t.forecast.methodPrimary)??"linear",primary:0,bandLow:0,bandHigh:0}}}function Ec(e){const t=e.config,a=Bc(e.from),o=Bc(e.to),r=w1(e.byDay),n=(e.byCal||[]).reduce((b,c)=>{const f=Number((c==null?void 0:c.total_hours)??(c==null?void 0:c.hours)??0);return Number.isFinite(f)?b+f:b},0),s=(e.byCal||[]).reduce((b,c)=>{const f=Number((c==null?void 0:c.future_hours)??(c==null?void 0:c.planned_hours)??0);return Number.isFinite(f)?b+f:b},0),l=t.totalHours||0,d=Nc({includeWeekend:t.pace.includeWeekendTotal,mode:t.pace.mode,includeZeroDays:t.includeZeroDaysInStats,start:a,end:o,dailyHours:r}),p=Ic({id:"total",label:Zo("Total"),actual:n,planned:s,target:l,pace:d,thresholds:t.pace.thresholds,includeWeekend:t.pace.includeWeekendTotal,paceMode:t.pace.mode}),u=t.categories.map(b=>{const c=y1(b,e.byCal,e.groupsById),f=Oc(b,e.byCal,e.groupsById,"future_hours"),g=b.paceMode||t.pace.mode,T=Nc({includeWeekend:b.includeWeekend,mode:g,includeZeroDays:t.includeZeroDaysInStats,start:a,end:o,dailyHours:r});return Ic({id:b.id,label:b.label,actual:c,planned:f,target:b.targetHours,pace:T,thresholds:t.pace.thresholds,includeWeekend:b.includeWeekend,paceMode:g})}),v=f1({config:t,totalProgress:p,dailyHours:r,pace:d});return{total:p,categories:u,forecast:v}}function Nc(e){const{start:t,end:a}=e;if(!t||!a)return{totalEligible:0,elapsedEligible:0,daysLeft:0,calendarPercent:0};const o=Nn(new Date),r=vo(t),n=vo(a),s=bb(t,a).filter(v=>e.includeWeekend||!vb(v)),l=s.length;if(l===0)return{totalEligible:0,elapsedEligible:0,daysLeft:0,calendarPercent:0};if(vo(o)>n)return{totalEligible:l,elapsedEligible:l,daysLeft:0,calendarPercent:100};if(vo(o)<r)return{totalEligible:l,elapsedEligible:0,daysLeft:l,calendarPercent:0};let d=0;for(const v of s){const b=vo(v),c=e.dailyHours.get(b)??0;if(!(!e.includeZeroDays&&c<=0&&b!==vo(o))){if(b<vo(o))d+=1;else if(b===vo(o))if(e.mode==="time_aware"){const g=Math.min(new Date().getTime(),v.getTime()+Ac)-v.getTime(),T=Math.max(0,Math.min(1,g/Ac));(e.includeZeroDays||c>0||T>0)&&(d+=T)}else(e.includeZeroDays||c>0)&&(d+=1)}}const p=di(d/l*100),u=Math.max(0,l-d);return{totalEligible:l,elapsedEligible:d,daysLeft:u,calendarPercent:p}}function Ic(e){const t=Math.max(0,e.target||0),a=Math.max(0,e.actual||0),o=Math.max(0,e.planned||0),r=t>0?di(a/t*100):0,n=t-a,s=a-t,l=e.pace.daysLeft>0?Math.max(0,n)/e.pace.daysLeft:0,d=r-e.pace.calendarPercent,p=h1({percent:r,target:t,gap:d,thresholds:e.thresholds});return{id:e.id,label:e.label,actualHours:Xt(a),plannedHours:Xt(o),targetHours:Xt(t),percent:r,deltaHours:Xt(s),remainingHours:Xt(Math.max(0,n)),needPerDay:Xt(l),daysLeft:Math.max(0,Math.ceil(e.pace.daysLeft)),calendarPercent:di(e.pace.calendarPercent),gap:Xt(d),status:p,statusLabel:m1(p),includeWeekend:e.includeWeekend,paceMode:e.paceMode}}function h1(e){return e.target<=0?"none":e.percent>=100?"done":e.gap>=e.thresholds.onTrack?"on_track":e.gap>=e.thresholds.atRisk?"at_risk":"behind"}function m1(e){switch(e){case"on_track":return Zo("On Track");case"at_risk":return Zo("At Risk");case"behind":return Zo("Behind");case"done":return Zo("Done");default:return"—"}}function y1(e,t,a){return Oc(e,t,a,"total_hours")}function Oc(e,t,a,o){if(!Array.isArray(t))return 0;const r=Array.isArray(e.groupIds)&&e.groupIds.length?new Set(e.groupIds):null;let n=0;for(const s of t){const l=Number((s==null?void 0:s[o])??0);if(!Number.isFinite(l)||l<=0)continue;const d=String((s==null?void 0:s.id)??(s==null?void 0:s.calendar)??""),p=Number((s==null?void 0:s.group)??(s==null?void 0:s.group_id)??(a==null?void 0:a[d])??0);r&&!r.has(p)||(n+=l)}return n}function w1(e){const t=new Map;if(!Array.isArray(e))return t;for(const a of e){const o=String((a==null?void 0:a.date)??(a==null?void 0:a.day)??"");if(!o)continue;const r=Number((a==null?void 0:a.total_hours)??(a==null?void 0:a.hours)??0);Number.isFinite(r)&&t.set(o,r)}return t}function Bc(e){if(!e)return null;const t=Nt(e);return t?Nn(t):null}function vo(e){return na(e,"UTC")}const ho=1,k1=[{id:"total_only",title:"Single Goal",subtitle:"Keep one overall weekly goal",highlights:["One weekly target","Lightest setup","Can be expanded later"],layers:{total:!0,categories:!1,calendars:!1},recommendedFor:"Individuals tracking a single workload"},{id:"total_plus_categories",title:"Calendar Goals",subtitle:"Track weekly goals per selected calendar",highlights:["Per-calendar weekly targets","No category setup required","Best default for most setups"],layers:{total:!0,categories:!1,calendars:!0},recommendedFor:"Users who track work by calendar without categories"},{id:"full_granular",title:"Calendar + Category Goals",subtitle:"Plan by calendar and focus area together",highlights:["Calendar goals + category goals","Category dashboards & pacing","Calendar-to-category assignments"],layers:{total:!0,categories:!0,calendars:!0},recommendedFor:"Users planning both calendar and category goals"}],Hc=["#2563EB","#F97316","#10B981","#A855F7","#EC4899","#14B8A6","#F59E0B","#6366F1"];function x1(e){const t={};return Object.entries(e).forEach(([a,o])=>{t[a]=Number((o*4).toFixed(2))}),t}function Bn(e){if(typeof e!="string")return null;const t=e.trim();if(!/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(t))return null;if(t.length===4){const[,a,o,r]=t;return`#${a}${a}${o}${o}${r}${r}`.toUpperCase()}return t.toUpperCase()}function _1(e){const t=new Set,a=[];return e.forEach((o,r)=>{const n=((o==null?void 0:o.id)||`cat_${r}`).trim()||`cat_${r}`;t.has(n)||(t.add(n),a.push({id:n,label:((o==null?void 0:o.label)||n).trim()||`Category ${r+1}`,targetHours:Number.isFinite(o==null?void 0:o.targetHours)?Number(o.targetHours):0,includeWeekend:!!(o!=null&&o.includeWeekend),paceMode:(o==null?void 0:o.paceMode)==="time_aware"?"time_aware":"days_only",color:Bn(o==null?void 0:o.color)??null}))}),a}function C1(e,t,a){const o={};if(!t.length)return o;const r=new Set(t.map(n=>n.id));return e.forEach(n=>{const s=a[n];r.has(s)&&(o[n]=s)}),o}function Fc(){return k1}function Pc(e,t,a){const o=[...new Set(a.filter(r=>t.some(n=>n.id===r)))];return e==="total_only"||e==="total_plus_categories"?{categories:[],assignments:{}}:{categories:[],assignments:Object.fromEntries(o.map(r=>[r,""]))}}function Hn(e,t,a,o){var T;const r=[...new Set(a.filter(S=>t.some($=>$.id===S)))],n=Qt(_a()),s={},l={};if(e==="total_only"){const S=Ua(n);return S.totalHours=S.totalHours||40,S.categories=[],S.ui.showCategoryBlocks=!1,S.ui.showCategoryCharts=!1,S.ui.showCalendarCharts=!1,{selected:r,targetsConfig:Qt(S),groups:s,targetsWeek:l,targetsMonth:{}}}if(e==="total_plus_categories"){const S=Ua(n);return S.totalHours=S.totalHours||40,S.categories=[],S.ui.showCategoryBlocks=!1,S.ui.showCategoryCharts=!1,S.ui.showCalendarCharts=!0,S.balance.categories=[],S.balance.useCategoryMapping=!1,S.balance.index.basis="calendar",{selected:r,targetsConfig:Qt(S),groups:s,targetsWeek:l,targetsMonth:{}}}const d=Pc(e,t,r),p=_1((T=o==null?void 0:o.categories)!=null&&T.length?o.categories:d.categories),u=C1(r,p.length?p:d.categories,(o==null?void 0:o.assignments)??d.assignments),v=Ua(n),b=new Map;let c=0;const f=S=>{const $=Bn(S.color);if($)return $;const C=t.find(O=>u[O.id]===S.id&&Bn(O.color));if(C)return Bn(C.color)??null;const H=Hc[c%Hc.length];return c+=1,H??null};v.categories=p.map((S,$)=>{const C=$+1;return b.set(S.id,C),{id:S.id,label:S.label,targetHours:Number(S.targetHours.toFixed(2)),includeWeekend:S.includeWeekend,paceMode:S.paceMode,color:f(S),groupIds:[C]}}),v.totalHours=v.categories.reduce((S,$)=>S+$.targetHours,0),v.totalHours<=0&&(v.totalHours=40),v.ui.showCategoryBlocks=v.categories.length>0,v.ui.showCategoryCharts=v.categories.length>0,v.ui.showCalendarCharts=e==="full_granular",v.includeZeroDaysInStats=!1,v.balance.categories=v.categories.map(S=>S.id),v.balance.useCategoryMapping=!0;const g={};return Object.values(u).forEach(S=>{g[S]=(g[S]??0)+1}),Object.entries(u).forEach(([S,$])=>{const C=b.get($);if(C&&(s[S]=C,e==="full_granular")){const H=v.categories.find(_=>_.id===$);if(!H)return;const O=g[$]||1,I=Number((H.targetHours/O).toFixed(2));l[S]=I}}),{selected:r,targetsConfig:Qt(v),groups:s,targetsWeek:l,targetsMonth:x1(l)}}function Ao(){return{enabled:!1,modes:{week:{enabled:!0,delivery:"final",sendTimeLocal:"06:00"},month:{enabled:!1,delivery:"checkpoint_final",sendTimeLocal:"18:00"}},alertOnRisk:!0,riskThreshold:.85,notifyEmail:!0,notifyNotification:!0}}function Wc(e,t){if(!e||typeof e!="object")return{...t};const a=e.delivery==="checkpoint_final"||e.cadence==="mid"?"checkpoint_final":"final",o=typeof e.sendTimeLocal=="string"&&/^\d{2}:\d{2}$/.test(e.sendTimeLocal)?e.sendTimeLocal:t.sendTimeLocal;return{enabled:!!e.enabled,delivery:a,sendTimeLocal:o}}function ui(e,t){const a=t??Ao();if(!e||typeof e!="object")return{...a,modes:{week:{...a.modes.week},month:{...a.modes.month}}};const o=Number(e.riskThreshold),r=Number.isFinite(o)&&o>=0&&o<=1?o:a.riskThreshold,n=e.schedule==="week"||e.schedule==="month"?e.schedule:"both",s=e.modes&&typeof e.modes=="object"?{week:Wc(e.modes.week,a.modes.week),month:Wc(e.modes.month,a.modes.month)}:{week:{enabled:n==="week"||n==="both",delivery:e.interim==="midweek"?"checkpoint_final":"final",sendTimeLocal:a.modes.week.sendTimeLocal},month:{enabled:n==="month"||n==="both",delivery:e.interim==="midweek"?"checkpoint_final":"final",sendTimeLocal:a.modes.month.sendTimeLocal}};return{enabled:!!e.enabled,modes:s,alertOnRisk:e.alertOnRisk!==!1,riskThreshold:r,notifyEmail:e.notifyEmail!==!1,notifyNotification:!!e.notifyNotification}}function Do(){return{enabled:!0,filtersEnabled:!0,defaultFilter:"all",hiddenBoards:[],mineMode:"assignee",solvedIncludesArchived:!0,ticker:{autoScroll:!0,intervalSeconds:5,showBoardBadges:!0}}}function gi(e,t){var v,b,c;const a=t??Do();if(!e||typeof e!="object")return{...a};const o=(f,g)=>{if(typeof f=="boolean")return f;if(typeof f=="number")return f===1?!0:f===0?!1:g;if(typeof f=="string"){const T=f.trim().toLowerCase();if(["1","true","yes","on"].includes(T))return!0;if(["0","false","no","off","null",""].includes(T))return!1}return g},r=f=>{const g=Number(f);return!Number.isInteger(g)||g<=0||g>1e5?null:g},s=["all","mine","focus_all","focus_mine","backlog_all","backlog_mine","open_all","open_mine","done_all","done_mine","archived_all","archived_mine","due_all","due_mine","due_today_all","due_today_mine"].includes(e.defaultFilter)?e.defaultFilter:"all",l=e.mineMode==="creator"||e.mineMode==="both"?e.mineMode:"assignee",d=o(e.solvedIncludesArchived,a.solvedIncludesArchived),p={autoScroll:o((v=e.ticker)==null?void 0:v.autoScroll,a.ticker.autoScroll),intervalSeconds:S1((b=e.ticker)==null?void 0:b.intervalSeconds,a.ticker.intervalSeconds),showBoardBadges:o((c=e.ticker)==null?void 0:c.showBoardBadges,a.ticker.showBoardBadges)},u=Array.isArray(e.hiddenBoards)?Array.from(new Set(e.hiddenBoards.map(f=>r(f)).filter(f=>Number.isInteger(f)&&f>0))):a.hiddenBoards.slice();return{enabled:o(e.enabled,a.enabled),filtersEnabled:o(e.filtersEnabled,a.filtersEnabled),defaultFilter:s,hiddenBoards:u,mineMode:l,solvedIncludesArchived:d,ticker:p}}function S1(e,t){const a=Number(e);return Number.isFinite(a)?Math.min(10,Math.max(3,Math.trunc(a))):t}const VT="modulepreload",UT=function(e){return"/"+e},GT={},sa=function(t,a,o){let r=Promise.resolve();function n(s){const l=new Event("vite:preloadError",{cancelable:!0});if(l.payload=s,window.dispatchEvent(l),!l.defaultPrevented)throw s}return r.then(s=>{for(const l of s||[])l.status==="rejected"&&n(l.reason);return t().catch(n)})};function zc(e,t){const a=JSON.parse(JSON.stringify(e||{}));return t==="month"&&(a.totalHours=Va(a.totalHours??0),a.categories=(a.categories||[]).map(o=>({...o,targetHours:Va(o.targetHours??0)}))),a}function Rc(e){return{...e,ui:{...(e==null?void 0:e.ui)??{}}}}function T1(e,t){try{return Ec({config:e,stats:t.stats,byDay:t.byDay||[],byCal:t.byCal||[],groupsById:t.groupsById||{},range:t.rangeMode==="month"?"month":"week",from:t.from||"",to:t.to||""})}catch(a){return console.error("[opsdash] targets widget local summary failed",a),Lc(e)}}function $1(e){var T,S,$,C,H,O,I,_,k,m;const t=Array.isArray((T=e.config)==null?void 0:T.categories)?e.config.categories:[],a=new Map;(((S=e.summary)==null?void 0:S.categories)||[]).forEach(w=>{a.set(String(w.id),w)});const o=new Map,r={};t.forEach(w=>{const D=String((w==null?void 0:w.id)??"");D&&(r[D]=String((w==null?void 0:w.label)||D),(Array.isArray(w==null?void 0:w.groupIds)?w.groupIds:[]).forEach(R=>{const L=Vc(R);o.set(L,D)}))});const n=new Map,s=new Map;(Array.isArray(e.calendars)?e.calendars:[]).forEach(w=>{var L;const D=String((w==null?void 0:w.id)??"");if(!D)return;const R=((L=e.colorsById)==null?void 0:L[D])||String((w==null?void 0:w.color)||"");s.set(D,{name:String((w==null?void 0:w.displayname)||(w==null?void 0:w.name)||D),color:R||void 0})});const l={};Object.keys(e.groupsById||{}).forEach(w=>{var R;const D=Vc((R=e.groupsById)==null?void 0:R[w]);l[w]=o.get(D)||"__uncategorized__"});const d=new Map;(Array.isArray(e.byCal)?e.byCal:[]).forEach(w=>{const D=String((w==null?void 0:w.id)??(w==null?void 0:w.calendar_id)??(w==null?void 0:w.calendar)??"");if(!D)return;const R=l[D]||"__uncategorized__";d.has(R)||d.set(R,[]),d.get(R).push({...w,calendarId:D})});const p=w=>{var Z;if(n.has(w))return n.get(w);const D=t.find(K=>String((K==null?void 0:K.id)??"")===w),R=typeof(D==null?void 0:D.color)=="string"&&D.color?D.color:"";if(R)return n.set(w,R),R;const L=d.get(w)||[];for(const K of L){const Y=(Z=s.get(String(K.calendarId)))==null?void 0:Z.color;if(Y)return n.set(w,Y),Y}},u=e.currentTargets||{},v=Number(((C=($=e.summary)==null?void 0:$.total)==null?void 0:C.daysLeft)??0),b=Number(((O=(H=e.summary)==null?void 0:H.total)==null?void 0:O.calendarPercent)??0),c=((_=(I=e.summary)==null?void 0:I.total)==null?void 0:_.paceMode)??((m=(k=e.config)==null?void 0:k.pace)==null?void 0:m.mode)??"days_only",f=(w,D,R)=>{const L=R.reduce((A,V)=>{const he=Number(u[String(V.calendarId)]??0);return Number.isFinite(he)?A+Math.max(0,he):A},0),Z=R.reduce((A,V)=>{const he=Number((V==null?void 0:V.total_hours)??(V==null?void 0:V.hours)??0);return Number.isFinite(he)?A+Math.max(0,he):A},0),K=R.reduce((A,V)=>{const he=Number((V==null?void 0:V.future_hours)??(V==null?void 0:V.planned_hours)??0);return Number.isFinite(he)?A+Math.max(0,he):A},0),Y=L>0?Uc(Z/L*100):0,le=Z-L,J=Math.max(0,L-Z),de=L<=0?"none":Y>=100?"done":le>=0?"on_track":"behind",B=de==="done"?"Done":de==="on_track"?"On Track":de==="behind"?"Behind":"—",G=v>0?J/v:0;return{id:w,label:D,actualHours:Ot(Z),plannedHours:Ot(K),targetHours:Ot(L),percent:Ot(Y),deltaHours:Ot(le),remainingHours:Ot(J),needPerDay:Ot(G),daysLeft:v,calendarPercent:Ot(Math.max(0,Math.min(100,b))),gap:Ot(Y-b),status:de,statusLabel:B,includeWeekend:!0,paceMode:c}},g=[];if(t.forEach(w=>{const D=String((w==null?void 0:w.id)??"");if(!D)return;const R=d.get(D)||[];g.push({id:D,label:r[D]||D,rows:R,summary:a.get(D)||f(D,r[D]||D,R),color:p(D)})}),d.has("__uncategorized__")){const w=d.get("__uncategorized__")||[];g.push({id:"__uncategorized__",label:"Unassigned",rows:w,summary:f("__uncategorized__","Unassigned",w),color:p("__uncategorized__"),isUnassigned:!0})}return g}function M1(e){var c,f,g,T,S,$,C,H,O,I,_,k;const t=e.currentTargets||{},a=Array.isArray(e.byCal)?e.byCal:[],o=e.todayHoursByCalendar||{},r=((f=(c=e.config)==null?void 0:c.pace)==null?void 0:f.thresholds)??{onTrack:-2,atRisk:-10},n=!!(((T=(g=e.config)==null?void 0:g.pace)==null?void 0:T.includeWeekendTotal)??!0),s=(($=(S=e.summary)==null?void 0:S.total)==null?void 0:$.paceMode)??((H=(C=e.config)==null?void 0:C.pace)==null?void 0:H.mode)??"days_only",l=Number(((I=(O=e.summary)==null?void 0:O.total)==null?void 0:I.daysLeft)??0),d=Number(((k=(_=e.summary)==null?void 0:_.total)==null?void 0:k.calendarPercent)??0),p=new Map;(Array.isArray(e.calendars)?e.calendars:[]).forEach(m=>{var R;const w=String((m==null?void 0:m.id)??"");if(!w)return;const D=((R=e.colorsById)==null?void 0:R[w])||String((m==null?void 0:m.color)||"");p.set(w,{label:String((m==null?void 0:m.displayname)||(m==null?void 0:m.name)||w),color:D||void 0})});const u=new Map;a.forEach(m=>{const w=String((m==null?void 0:m.id)??(m==null?void 0:m.calendar_id)??(m==null?void 0:m.calendar)??"");w&&u.set(w,{...m,calendarId:w})});const v=[],b=m=>{!m||v.includes(m)||v.push(m)};return(Array.isArray(e.calendars)?e.calendars:[]).forEach(m=>{const w=String((m==null?void 0:m.id)??"");w&&(Object.prototype.hasOwnProperty.call(t,w)||u.has(w))&&b(w)}),Object.keys(t).forEach(b),Array.from(u.keys()).forEach(b),v.map(m=>{var Me,ae,U;const w=u.get(m)||{id:m,calendarId:m,total_hours:0,future_hours:0},D=((Me=p.get(m))==null?void 0:Me.label)||String((w==null?void 0:w.calendar)??(w==null?void 0:w.name)??m),R=((ae=p.get(m))==null?void 0:ae.color)||((U=e.colorsById)==null?void 0:U[m]),L=Number(t[m]??0),Z=Number((w==null?void 0:w.total_hours)??(w==null?void 0:w.hours)??0),K=Number((w==null?void 0:w.future_hours)??(w==null?void 0:w.planned_hours)??0),Y=Number.isFinite(L)?Math.max(0,L):0,le=Number.isFinite(Z)?Math.max(0,Z):0,J=Number.isFinite(K)?Math.max(0,K):0,de=Y>0?Ot(Uc(le/Y*100)):0,B=Ot(le-Y),G=Ot(Math.max(0,Y-le)),A=Ot(de-d),V=Y<=0?"none":de>=100?"done":A>=Number(r.onTrack??-2)?"on_track":A>=Number(r.atRisk??-10)?"at_risk":"behind",he=V==="done"?"Done":V==="on_track"?"On Track":V==="at_risk"?"At Risk":V==="behind"?"Behind":"—";return{id:m,label:D,rows:[w],color:R,todayHours:Number(o[m]??0),summary:{id:m,label:D,actualHours:Ot(le),plannedHours:Ot(J),targetHours:Ot(Y),percent:de,deltaHours:B,remainingHours:G,needPerDay:l>0?Ot(G/l):0,daysLeft:l,calendarPercent:Ot(Math.max(0,Math.min(100,d))),gap:A,status:V,statusLabel:he,includeWeekend:n,paceMode:s}}})}function ia(e,t){if(!t)return e;const a=String(t).trim();return a?`${a} · ${e}`:e}function Nr(e,t){if(t!=null&&t!==""){const o=Number(t);if(Number.isFinite(o))return o}const a=Number(e);return Number.isFinite(a)?a:void 0}function Ir(e){return Array.isArray(e)?Array.from(new Set(e.map(t=>Number(t)).filter(t=>Number.isInteger(t)&&t>0))):typeof e=="string"?Ir(e.split(",")):[]}function jc(e){return Array.isArray(e)?e.map(t=>String(t).trim()).filter(Boolean):typeof e=="string"?e.split(",").map(t=>t.trim()).filter(Boolean):["focus_all","focus_mine","backlog_all","backlog_mine","all"]}function A1(e){switch(e){case"all":return"All cards";case"mine":return"Mine (any status)";case"focus_all":return"Focus";case"focus_mine":return"My focus";case"backlog_all":return"Backlog";case"backlog_mine":return"My backlog";case"open_all":return"Open · All";case"open_mine":return"Open · Mine";case"done_all":return"Done · All";case"done_mine":return"Done · Mine";case"archived_all":return"Archived · All";case"archived_mine":return"Archived · Mine";case"due_all":return"Due · All";case"due_mine":return"Due · Mine";case"due_today_all":return"Due today · All";case"due_today_mine":return"Due today · Mine";case"created_today_all":return"Created today · All";case"created_today_mine":return"Created today · Mine";case"created_range_all":return"Created this range · All";case"created_range_mine":return"Created this range · Mine";default:return e}}function Vc(e){const t=Number(e);return Number.isFinite(t)?Math.max(0,Math.min(9,Math.trunc(t))):0}function Ot(e){return Math.round(e*100)/100}function Uc(e){return Number.isFinite(e)?Math.max(0,Math.min(999,e)):0}const D1=oa(()=>sa(()=>Promise.resolve().then(()=>k4),void 0).then(e=>e.default)),Gc="Balance Index",L1={component:D1,defaultLayout:{width:"half",height:"s",order:32},label:"Balance Index",category:"Time",baseTitle:Gc,configurable:!0,supportsColors:!0,defaultOptions:(()=>{const e=Jo();return{showTrend:!0,showMessages:!0,showConfig:!0,indexBasis:e.index.basis,noticeAbove:e.thresholds.noticeAbove,noticeBelow:e.thresholds.noticeBelow,warnAbove:e.thresholds.warnAbove,warnBelow:e.thresholds.warnBelow,warnIndex:e.thresholds.warnIndex,messageDensity:"normal",trendColor:"#2563EB",showCurrent:!0,labelMode:"period",reverseOrder:!1}})(),controls:[{key:"showConfig",label:"Show config summary",type:"toggle"},{key:"showTrend",label:"Show trend",type:"toggle"},{key:"showMessages",label:"Show messages",type:"toggle"},{key:"messageDensity",label:"Messages shown",type:"select",options:[{value:"few",label:"Few"},{value:"normal",label:"Normal"},{value:"many",label:"Many"}]},{key:"indexBasis",label:"Index basis",type:"select",options:[{value:"off",label:"Disabled"},{value:"category",label:"Total categories"},{value:"calendar",label:"Total calendars"},{value:"both",label:"Categories + calendars"}]},{key:"noticeAbove",label:"Notice above target",type:"number",min:0,max:1,step:.01},{key:"noticeBelow",label:"Notice below target",type:"number",min:0,max:1,step:.01},{key:"warnAbove",label:"Warn above target",type:"number",min:0,max:1,step:.01},{key:"warnBelow",label:"Warn below target",type:"number",min:0,max:1,step:.01},{key:"warnIndex",label:"Warn index",type:"number",min:0,max:1,step:.01},{key:"trendColor",label:"Trend color",type:"color"},{key:"showCurrent",label:"Show current period",type:"toggle"},{key:"reverseOrder",label:"Reverse order (newest first)",type:"toggle"},{key:"labelMode",label:"Trend label",type:"select",options:[{value:"date",label:"Date range"},{value:"period",label:"Week/Month"},{value:"offset",label:"Offset only"}]}],buildProps:(e,t)=>{var g,T,S,$,C,H,O,I,_,k,m,w,D,R,L,Z,K,Y,le,J,de,B,G,A,V,he,Me,ae,U,F,j;const a=t.balanceConfig?JSON.parse(JSON.stringify(t.balanceConfig)):Jo(),o=Jo(),r=((g=e.options)==null?void 0:g.showBadge)!==!1,n=((T=e.options)==null?void 0:T.showTrend)!==!1,s=((S=e.options)==null?void 0:S.showMessages)??(($=a.ui)==null?void 0:$.showMessages)??!0,l=((C=e.options)==null?void 0:C.messageDensity)||"normal",d=l==="few"?1:l==="many"?1/0:3,p=Number.isFinite(t.lookbackWeeks)?Number(t.lookbackWeeks):((H=o.trend)==null?void 0:H.lookbackWeeks)??3,u={noticeAbove:Nr((O=a==null?void 0:a.thresholds)==null?void 0:O.noticeAbove,(I=e.options)==null?void 0:I.noticeAbove),noticeBelow:Nr((_=a==null?void 0:a.thresholds)==null?void 0:_.noticeBelow,(k=e.options)==null?void 0:k.noticeBelow),warnAbove:Nr((m=a==null?void 0:a.thresholds)==null?void 0:m.warnAbove,(w=e.options)==null?void 0:w.warnAbove),warnBelow:Nr((D=a==null?void 0:a.thresholds)==null?void 0:D.warnBelow,(R=e.options)==null?void 0:R.warnBelow),warnIndex:Nr((L=a==null?void 0:a.thresholds)==null?void 0:L.warnIndex,(Z=e.options)==null?void 0:Z.warnIndex)},v=((K=e.options)==null?void 0:K.indexBasis)||((Y=a==null?void 0:a.index)==null?void 0:Y.basis)||"category",b=(a==null?void 0:a.useCategoryMapping)===!1&&v==="category"?"calendar":v,c=typeof((le=e.options)==null?void 0:le.trendColor)=="string"&&((J=e.options)!=null&&J.trendColor.trim())?e.options.trendColor.trim():"#2563EB",f=Math.max(1,Math.min(6,Number.isFinite(p)?Number(p):((de=o.trend)==null?void 0:de.lookbackWeeks)??4));return{overview:t.balanceOverview,targetsCategories:((B=t.targetsConfig)==null?void 0:B.categories)||[],rangeLabel:t.rangeLabel,showBadge:r,showTrend:n,showMessages:s,showHeader:((G=e.options)==null?void 0:G.showHeader)!==!1,showConfig:((A=e.options)==null?void 0:A.showConfig)!==!1,messageLimit:d,lookbackWeeks:f,loopbackCount:f,showCurrent:((V=e.options)==null?void 0:V.showCurrent)!==!1,labelMode:((he=e.options)==null?void 0:he.labelMode)||"period",reverseOrder:((Me=e.options)==null?void 0:Me.reverseOrder)===!0,indexBasis:b,thresholds:u,title:ia(Gc,(ae=e.options)==null?void 0:ae.titlePrefix),cardBg:((F=(U=e.options)==null?void 0:U.colors)==null?void 0:F.background)??((j=e.options)==null?void 0:j.cardBg),trendColor:c,from:t.from,to:t.to,rangeMode:t.rangeMode}}},E1=oa(()=>sa(()=>Promise.resolve().then(()=>E4),void 0).then(e=>e.default)),Kc="Category Mix Trend",N1={component:E1,defaultLayout:{width:"half",height:"m",order:47},heightMode:"auto",label:"Category Mix Trend",category:"Charts",baseTitle:Kc,defaultOptions:{density:"normal",labelMode:"period",colorMode:"hybrid",trendIndicator:"none",squareCells:!1,reverseOrder:!1,showHeader:!0,showBadge:!0,shareLowColor:"#e2e8f0",shareHighColor:"#60a5fa",toneLowColor:"#e11d48",toneHighColor:"#10b981"},configurable:!0,controls:[{key:"density",label:"Density",type:"select",options:[{value:"normal",label:"Normal"},{value:"dense",label:"Dense"}]},{key:"squareCells",label:"Square cells",type:"toggle"},{key:"reverseOrder",label:"Reverse order (newest first)",type:"toggle"},{key:"labelMode",label:"History label",type:"select",options:[{value:"period",label:"Week/Month"},{value:"date",label:"Date range"},{value:"compact",label:"Compact (W-4)"},{value:"offset",label:"Offset only"},{value:"label",label:"Use server label"}]},{key:"colorMode",label:"Color mode",type:"select",options:[{value:"hybrid",label:"Hybrid (share + trend)"},{value:"share",label:"Share heatmap"},{value:"trend",label:"Trend only"}]},{key:"trendIndicator",label:"Trend indicator",type:"select",options:[{value:"none",label:"None"},{value:"symbol",label:"Symbol only"},{value:"delta",label:"Delta only"},{value:"both",label:"Symbol + delta"}]},{key:"shareLowColor",label:"Share low",type:"color"},{key:"shareHighColor",label:"Share high",type:"color"},{key:"showBadge",label:"Show badge",type:"toggle"},{key:"toneLowColor",label:"Low color",type:"color"},{key:"toneHighColor",label:"High color",type:"color"}],buildProps:(e,t)=>{var a,o,r,n,s,l,d,p,u,v,b,c,f,g;return{overview:t.balanceOverview,rangeMode:t.rangeMode,rangeLabel:t.rangeLabel,from:t.from,to:t.to,lookbackWeeks:Math.max(1,Math.min(6,Number(t.lookbackWeeks)||3)),showBadge:((a=e.options)==null?void 0:a.showBadge)??!0,showHeader:((o=e.options)==null?void 0:o.showHeader)!==!1,density:(r=e.options)==null?void 0:r.density,labelMode:(n=e.options)==null?void 0:n.labelMode,squareCells:((s=e.options)==null?void 0:s.squareCells)===!0,reverseOrder:((l=e.options)==null?void 0:l.reverseOrder)===!0,colorMode:(d=e.options)==null?void 0:d.colorMode,trendIndicator:(p=e.options)==null?void 0:p.trendIndicator,title:ia(Kc,(u=e.options)==null?void 0:u.titlePrefix),cardBg:(v=e.options)==null?void 0:v.cardBg,toneLowColor:(b=e.options)==null?void 0:b.toneLowColor,toneHighColor:(c=e.options)==null?void 0:c.toneHighColor,shareLowColor:(f=e.options)==null?void 0:f.shareLowColor,shareHighColor:(g=e.options)==null?void 0:g.shareHighColor}}},qc=["#9aa6b2","#8895a3","#778697","#68788a","#596b7e","#4d6074"];function pi(e){return qc[e%qc.length]||"#6f8193"}function Fn(e){return e.slice().sort((t,a)=>{const o=Number((t==null?void 0:t.offset)??0),r=Number((a==null?void 0:a.offset)??0);return o-r})}function Pn(e,t){const a=String(t||"").toLowerCase()==="month"?"Month":"Week",o=Number((e==null?void 0:e.offset)??0),r=o===0?`Current ${a.toLowerCase()}`:`${a} -${o}`,n=String((e==null?void 0:e.from)??"").trim(),s=String((e==null?void 0:e.to)??"").trim();return n&&s?`${r} (${n} to ${s})`:n?`${r} (${n})`:r}function Wn(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):typeof e=="string"?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function Jc(e){return e==="calendar"?"calendar":"category"}function zn(e,t){const a=Jc(e==null?void 0:e.filterMode),o=Array.isArray(t==null?void 0:t.calendars)?t.calendars.map(s=>({value:s.id,label:s.displayname||s.name||s.id})):[],r=Array.isArray(t==null?void 0:t.calendarGroups)?t.calendarGroups.map(s=>({value:s.id,label:s.label||s.id})):[];return[{key:"filterMode",label:"Filter by",type:"select",options:[{value:"category",label:"Category"},{value:"calendar",label:"Calendar"}]},{key:"filterIds",label:a==="calendar"?"Calendars":"Categories",type:"multiselect",options:a==="calendar"?o:r,defaultAll:!0}]}function Rn(e){return{mode:Jc(e==null?void 0:e.filterMode),ids:new Set(Wn(e==null?void 0:e.filterIds))}}function I1(e,t){if(!e||!Array.isArray(e.data))return null;if(!t.size)return e;const a=e.ids||[],o=e.labels||[],r=e.data||[],n=e.colors||[],s=a.map((l,d)=>t.has(String(l))?d:-1).filter(l=>l>=0);return s.length?{ids:s.map(l=>String(a[l]??"")),labels:s.map(l=>String(o[l]??"")),data:s.map(l=>Number(r[l]??0)),colors:s.map(l=>n[l])}:null}function Or(e,t){if(!e||!Array.isArray(e.series))return null;if(!t.size)return e;const a=e.series.filter(o=>t.has(String((o==null?void 0:o.id)??"")));return a.length?{labels:e.labels||[],series:a}:null}function Br(e,t,a,o){if(!e||!Array.isArray(e.series))return null;const r=e.labels||[],n=new Map;if(e.series.forEach(l=>{const d=String((l==null?void 0:l.id)??""),p=String((t==null?void 0:t[d])??"");if(!p||a.size&&!a.has(p))return;n.has(p)||n.set(p,Array.from({length:r.length},()=>0));const u=n.get(p),v=Array.isArray(l==null?void 0:l.data)?l.data:[];u&&r.forEach((b,c)=>{u[c]+=Math.max(0,Number(v[c]??0))})}),!n.size)return null;const s=Array.from(n.entries()).map(([l,d])=>({id:l,name:l,label:l,color:o==null?void 0:o[l],data:d}));return{labels:r,series:s}}function jn(e){if(!e||!Array.isArray(e.series))return null;const t=e.labels||[],a=t.map((o,r)=>e.series.reduce((n,s)=>{var l;return n+Math.max(0,Number(((l=s==null?void 0:s.data)==null?void 0:l[r])??0))},0));return{labels:t,data:a}}function Zc(e){if(!e)return null;const t=ub(),a=new Map;return t.forEach(o=>a.set(o,0)),e.labels.forEach((o,r)=>{const n=B1(o);n&&a.set(n,(a.get(n)||0)+Math.max(0,Number(e.data[r]??0)))}),{labels:t,data:t.map(o=>a.get(o)||0)}}function O1(e,t,a){if(!Array.isArray(e)||!e.length)return null;const o=e.filter(r=>!r||!r.id?!1:t.size?t.has(String(r.id)):!0);return o.length?{ids:o.map(r=>String(r.id)),labels:o.map(r=>String(r.label??r.id)),data:o.map(r=>{var n;return Math.max(0,Number(((n=r.summary)==null?void 0:n.actualHours)??0))}),colors:o.map(r=>r.color||(a==null?void 0:a[String(r.id)]))}:null}function Hr(e){const t=e.perDaySeries;if(!t||!Array.isArray(t.labels)||!Array.isArray(t.series))return null;const a=t.labels.map(g=>String(g??"")),o=t.series.map(g=>{const T=String((g==null?void 0:g.id)??"");return{...g,id:T,name:String((g==null?void 0:g.name)??(g==null?void 0:g.label)??T),color:String((g==null?void 0:g.color)??""),data:a.map((S,$)=>{var H;const C=Number(((H=g==null?void 0:g.data)==null?void 0:H[$])??0);return Number.isFinite(C)?Math.max(0,C):0})}}),r=P1(e.forecastMode),n=na(new Date),s=a.map(g=>H1.test(g)&&g>n),l=[];if(s.forEach((g,T)=>{g&&l.push(T)}),!l.length||r==="off")return{labels:a,series:o};const d=e.targetsConfig??_a(),p=z1(e.currentTargets),u=e.calendarCategoryMap??{},v=l.length,b=new Map;o.forEach(g=>{let T=0;g.data.forEach((S,$)=>{s[$]||(T+=Math.max(0,S))}),b.set(g.id,T)});const c=Array.from(b.values()).reduce((g,T)=>g+T,0),f=new Map;if(o.forEach(g=>{f.set(g.id,W1(a.length))}),r==="total"){const g=Math.max(0,Number(d.totalHours??0)),T=Math.max(0,g-c);if(T>1e-4){const S=T/v,$=o.map(H=>H.id),C=Yc($,b,p);$.forEach(H=>{const O=C[H]??0;if(O<=0)return;const I=f.get(H);I&&l.forEach(_=>{I[_]=Vn(S*O)})})}}else if(r==="calendar")o.forEach(g=>{const T=p[g.id]??0;if(T<=0)return;const S=Math.max(0,b.get(g.id)??0),$=Math.max(0,T-S);if($<=1e-4)return;const C=$/v,H=f.get(g.id);H&&l.forEach(O=>{H[O]=Vn(C)})});else if(r==="category"){const g=new Set,T=Array.isArray(d.categories)?d.categories:[],S=new Map;T.forEach(C=>{S.set(String(C.id),Math.max(0,Number(C.targetHours??0)))});const $=new Map;o.forEach(C=>{const H=u==null?void 0:u[C.id],O=H?String(H):F1;$.has(O)||$.set(O,[]),$.get(O).push(C.id)}),$.forEach((C,H)=>{if(!C.length)return;const O=S.get(H)??0;if(O<=0)return;const I=C.reduce((D,R)=>D+Math.max(0,b.get(R)??0),0),_=Math.max(0,O-I);if(_<=1e-4)return;const k=_/v,m={};C.forEach(D=>{m[D]=p[D]??0});const w=Yc(C,b,m);C.forEach(D=>{const R=w[D]??0;if(R<=0)return;const L=f.get(D);L&&(l.forEach(Z=>{L[Z]=Vn(k*R)}),g.add(D))})}),o.forEach(C=>{if(g.has(C.id))return;const H=p[C.id]??0;if(H<=0)return;const O=Math.max(0,b.get(C.id)??0),I=Math.max(0,H-O);if(I<=1e-4)return;const _=I/v,k=f.get(C.id);k&&l.forEach(m=>{k[m]=Vn(_)})})}return o.forEach(g=>{const T=f.get(g.id);T&&T.some(S=>S>1e-4)&&(g.forecast=T)}),{labels:a,series:o}}function B1(e){const t=Nt(String(e));if(!t)return null;const o=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][t.getUTCDay()];return o?o==="Sun"?"Sun":o:null}const H1=/^\d{4}-\d{2}-\d{2}$/,F1="__uncategorized__";function P1(e){return e==="off"||e==="calendar"||e==="category"?e:"total"}function W1(e){return Array.from({length:e},()=>0)}function Vn(e){const t=Math.round(e*100)/100;return Number.isFinite(t)?t:0}function z1(e){const t={};return e&&Object.entries(e).forEach(([a,o])=>{const r=Number(o);Number.isFinite(r)&&r>0&&(t[String(a)]=r)}),t}function Yc(e,t,a){const o={},r=e.reduce((l,d)=>l+Math.max(0,t.get(d)??0),0);if(r>1e-4)return e.forEach(l=>{const d=Math.max(0,t.get(l)??0);o[l]=d/r}),o;const n=e.reduce((l,d)=>l+Math.max(0,(a==null?void 0:a[d])??0),0);if(n>1e-4)return e.forEach(l=>{const d=Math.max(0,(a==null?void 0:a[l])??0);o[l]=d/n}),o;const s=e.length?1/e.length:0;return e.forEach(l=>{o[l]=s}),o}const R1=oa(()=>sa(()=>Promise.resolve().then(()=>P4),void 0).then(e=>e.default)),Xc="Day-of-Week Chart",j1={component:R1,defaultLayout:{width:"half",height:"m",order:84},label:"Day-of-Week Chart",category:"Charts",baseTitle:Xc,configurable:!0,defaultOptions:{showLabels:!0,compact:!1,reverseOrder:!1,forecastMode:"total"},dynamicControls:(e,t)=>[...zn(e,t),{key:"forecastMode",label:"Projection mode",type:"select",options:[{value:"off",label:"No projection"},{value:"total",label:"Distribute remaining total target"},{value:"calendar",label:"Respect calendar targets"},{value:"category",label:"Respect category targets"}]},{key:"showLabels",label:"Show labels",type:"toggle"},{key:"compact",label:"Compact",type:"toggle"},{key:"reverseOrder",label:"Reverse order (newest first)",type:"toggle"}],buildProps:(e,t)=>{var v,b,c,f,g,T,S,$,C;const{mode:a,ids:o}=Rn(e.options),r=t.categoryColorMap||{},s=(Number.isFinite(t.lookbackWeeks)?Math.max(1,Math.min(6,Number(t.lookbackWeeks))):1)>1&&Array.isArray((v=t.charts)==null?void 0:v.perDaySeriesByOffset)?t.charts.perDaySeriesByOffset:null,l=((b=e.options)==null?void 0:b.reverseOrder)===!0;let d=null,p=null,u=[];if(s&&s.length){const H=Fn(s),O=l?H:H.slice().reverse(),I=[],_=[];u=[],O.forEach((k,m)=>{var J;const w={labels:k.labels||[],series:k.series||[]},D=Hr({perDaySeries:w,forecastMode:(J=e.options)==null?void 0:J.forecastMode,targetsConfig:t.targetsConfig,currentTargets:t.currentTargets,calendarCategoryMap:t.calendarCategoryMap}),R=a==="category"?Br(D,t.calendarCategoryMap||{},o,r):Or(D,o),L=jn(R),Z=Zc(L);if(!Z)return;I.length||I.push(...Z.labels||[]);const K=pi(m),Y=Pn(k,t.rangeMode),le=(Z.data||[]).reduce((de,B)=>de+Math.max(0,Number(B)||0),0);_.push({id:`offset-${k.offset??m}`,name:Y,label:Y,color:K,data:Z.data||[]}),le>0&&u.push({id:`offset-${k.offset??m}`,label:Y,color:K})}),p=I.length&&_.length?{labels:I,series:_}:null}else{const H=(c=t.charts)==null?void 0:c.perDaySeries,O=Hr({perDaySeries:H,forecastMode:(f=e.options)==null?void 0:f.forecastMode,targetsConfig:t.targetsConfig,currentTargets:t.currentTargets,calendarCategoryMap:t.calendarCategoryMap}),I=a==="category"?Br(O,t.calendarCategoryMap||{},o,r):Or(O,o),_=jn(I);d=Zc(_)}return{title:ia(Xc,(g=e.options)==null?void 0:g.titlePrefix),subtitle:a==="category"?"By category":"By calendar",cardBg:(T=e.options)==null?void 0:T.cardBg,showHeader:((S=e.options)==null?void 0:S.showHeader)!==!1,showLabels:(($=e.options)==null?void 0:$.showLabels)!==!1,compact:((C=e.options)==null?void 0:C.compact)===!0,xLabel:"Weekday",yLabel:"Hours (h)",chartData:d,groupedData:p,legendItems:u}}},V1=oa(()=>sa(()=>Promise.resolve().then(()=>e5),void 0).then(e=>e.default)),Qc="Time-of-Day Chart",U1={component:V1,defaultLayout:{width:"full",height:"l",order:86},label:"Time-of-Day Chart",category:"Charts",baseTitle:Qc,configurable:!0,defaultOptions:{showHint:!1,showLegend:!0,lookbackMode:"stacked",compact:!1,reverseOrder:!1},dynamicControls:()=>[{key:"lookbackMode",label:"Lookback view",type:"select",options:[{value:"stacked",label:"Stacked weeks"},{value:"overlay",label:"Overlay stripes"}]},{key:"showLegend",label:"Show legend",type:"toggle"},{key:"showHint",label:"Show hint",type:"toggle"},{key:"compact",label:"Compact",type:"toggle"},{key:"reverseOrder",label:"Reverse order (newest first)",type:"toggle"}],buildProps:(e,t)=>{var p,u,v,b,c,f,g,T,S,$;const a=Number.isFinite(t.lookbackWeeks)?Math.max(1,Math.min(6,Number(t.lookbackWeeks))):1,o=a>1&&Array.isArray((p=t.charts)==null?void 0:p.hodByOffset)?t.charts.hodByOffset:null,r=((u=e.options)==null?void 0:u.reverseOrder)===!0,n=o?Fn(o):[],l=(r?n:n.slice().reverse()).map((C,H)=>{const O=Array.isArray(C.matrix)?C.matrix:[],I=O.reduce((k,m)=>{const w=Array.isArray(m)?m.reduce((D,R)=>D+Math.max(0,Number(R)||0),0):0;return k+w},0),_=pi(H);return{id:`offset-${C.offset??H}`,label:Pn(C,t.rangeMode),color:_,total:I,hod:{dows:C.dows||[],hours:C.hours||[],matrix:O}}}).filter(C=>C.total>0),d=a>1&&((v=t.charts)!=null&&v.hodLookback)?t.charts.hodLookback:((b=t.charts)==null?void 0:b.hod)||null;return{title:ia(Qc,(c=e.options)==null?void 0:c.titlePrefix),cardBg:(f=e.options)==null?void 0:f.cardBg,showHeader:((g=e.options)==null?void 0:g.showHeader)!==!1,showHint:((T=e.options)==null?void 0:T.showHint)===!0,showLegend:((S=e.options)==null?void 0:S.showLegend)!==!1,lookbackMode:($=e.options)==null?void 0:$.lookbackMode,lookbackWeeks:t.lookbackWeeks,rangeMode:t.rangeMode,hodData:d,lookbackEntries:l}}},G1=oa(()=>sa(()=>Promise.resolve().then(()=>s5),void 0).then(e=>e.default)),eu="Daily Chart",K1={component:G1,defaultLayout:{width:"half",height:"m",order:82},label:"Daily Chart",category:"Charts",baseTitle:eu,configurable:!0,defaultOptions:{showLabels:!1,compact:!1,reverseOrder:!1,forecastMode:"total"},dynamicControls:(e,t)=>[...zn(e,t),{key:"forecastMode",label:"Projection mode",type:"select",options:[{value:"off",label:"No projection"},{value:"total",label:"Distribute remaining total target"},{value:"calendar",label:"Respect calendar targets"},{value:"category",label:"Respect category targets"}]},{key:"showLabels",label:"Show labels",type:"toggle"},{key:"compact",label:"Compact",type:"toggle"},{key:"reverseOrder",label:"Reverse order (newest first)",type:"toggle"}],buildProps:(e,t)=>{var u,v,b,c,f,g,T,S,$;const{mode:a,ids:o}=Rn(e.options),r=t.categoryColorMap||{},s=(Number.isFinite(t.lookbackWeeks)?Math.max(1,Math.min(6,Number(t.lookbackWeeks))):1)>1&&Array.isArray((u=t.charts)==null?void 0:u.perDaySeriesByOffset)?t.charts.perDaySeriesByOffset:null,l=((v=e.options)==null?void 0:v.reverseOrder)===!0;let d=null,p=[];if(s&&s.length){const C=Fn(s),H=l?C:C.slice().reverse(),O=[],I=[],_=[];p=[],H.forEach((k,m)=>{var Y;const w={labels:k.labels||[],series:k.series||[]},D=Hr({perDaySeries:w,forecastMode:(Y=e.options)==null?void 0:Y.forecastMode,targetsConfig:t.targetsConfig,currentTargets:t.currentTargets,calendarCategoryMap:t.calendarCategoryMap}),R=a==="category"?Br(D,t.calendarCategoryMap||{},o,r):Or(D,o),L=jn(R);if(!L)return;const Z=pi(m);O.push(...L.labels),I.push(...L.data),_.push(...L.data.map(()=>Z)),L.data.reduce((le,J)=>le+Math.max(0,Number(J)||0),0)>0&&p.push({id:`offset-${k.offset??m}`,label:Pn(k,t.rangeMode),color:Z})}),d=O.length?{labels:O,data:I,colors:_}:null}else{const C=Hr({perDaySeries:(b=t.charts)==null?void 0:b.perDaySeries,forecastMode:(c=e.options)==null?void 0:c.forecastMode,targetsConfig:t.targetsConfig,currentTargets:t.currentTargets,calendarCategoryMap:t.calendarCategoryMap}),H=a==="category"?Br(C,t.calendarCategoryMap||{},o,r):Or(C,o);d=jn(H)}return{title:ia(eu,(f=e.options)==null?void 0:f.titlePrefix),subtitle:a==="category"?"Totals by category":"Totals by calendar",cardBg:(g=e.options)==null?void 0:g.cardBg,showHeader:((T=e.options)==null?void 0:T.showHeader)!==!1,showLabels:((S=e.options)==null?void 0:S.showLabels)===!0,compact:(($=e.options)==null?void 0:$.compact)===!0,xLabel:"Date",yLabel:"Hours (h)",chartData:d,legendItems:p}}},q1=oa(()=>sa(()=>Promise.resolve().then(()=>b5),void 0).then(e=>e.default)),tu="Pie Chart",J1={component:q1,defaultLayout:{width:"half",height:"m",order:75},label:"Pie Chart",category:"Charts",baseTitle:tu,configurable:!0,defaultOptions:{showLegend:!0,showLabels:!0,compact:!1},dynamicControls:(e,t)=>[...zn(e,t),{key:"showLegend",label:"Show legend",type:"toggle"},{key:"showLabels",label:"Show labels",type:"toggle"},{key:"compact",label:"Compact",type:"toggle"}],buildProps:(e,t)=>{var d,p,u,v,b,c,f;const{mode:a,ids:o}=Rn(e.options),r=t.colorsById||{},n=t.colorsByName||{},s=t.categoryColorMap||{},l=a==="category"?O1(t.calendarGroups||[],o,s):I1(((d=t.calendarChartData)==null?void 0:d.pie)||null,o);return{title:ia(tu,(p=e.options)==null?void 0:p.titlePrefix),subtitle:a==="category"?"By category":"By calendar",cardBg:(u=e.options)==null?void 0:u.cardBg,showHeader:((v=e.options)==null?void 0:v.showHeader)!==!1,compact:((b=e.options)==null?void 0:b.compact)===!0,showLegend:((c=e.options)==null?void 0:c.showLegend)!==!1,showLabels:((f=e.options)==null?void 0:f.showLabels)!==!1,chartData:l,colorsById:r,colorsByName:n}}},Z1=oa(()=>sa(()=>Promise.resolve().then(()=>_5),void 0).then(e=>e.default)),au="Stacked Chart",Y1={component:Z1,defaultLayout:{width:"full",height:"l",order:80},label:"Stacked Chart",category:"Charts",baseTitle:au,configurable:!0,defaultOptions:{showLegend:!0,showLabels:!1,compact:!1,forecastMode:"total"},dynamicControls:(e,t)=>[...zn(e,t),{key:"forecastMode",label:"Projection mode",type:"select",options:[{value:"off",label:"No projection"},{value:"total",label:"Distribute remaining total target"},{value:"calendar",label:"Respect calendar targets"},{value:"category",label:"Respect category targets"}]},{key:"showLegend",label:"Show legend",type:"toggle"},{key:"showLabels",label:"Show labels",type:"toggle"},{key:"compact",label:"Compact",type:"toggle"}],buildProps:(e,t)=>{var l,d,p,u,v,b,c,f;const{mode:a,ids:o}=Rn(e.options),r=t.categoryColorMap||{},n=Hr({perDaySeries:(l=t.charts)==null?void 0:l.perDaySeries,forecastMode:(d=e.options)==null?void 0:d.forecastMode,targetsConfig:t.targetsConfig,currentTargets:t.currentTargets,calendarCategoryMap:t.calendarCategoryMap}),s=a==="category"?Br(n,t.calendarCategoryMap||{},o,r):Or(n,o);return{title:ia(au,(p=e.options)==null?void 0:p.titlePrefix),subtitle:a==="category"?"By category":"By calendar",cardBg:(u=e.options)==null?void 0:u.cardBg,showHeader:((v=e.options)==null?void 0:v.showHeader)!==!1,compact:((b=e.options)==null?void 0:b.compact)===!0,showLegend:((c=e.options)==null?void 0:c.showLegend)!==!1,showLabels:((f=e.options)==null?void 0:f.showLabels)===!0,stacked:s,colorsById:t.colorsById||{}}}},X1=oa(()=>sa(()=>Promise.resolve().then(()=>a3),void 0).then(e=>e.default)),ou="Calendar Table";function Q1(e){var r;const t=String((e==null?void 0:e.onboardingStrategy)??"");if(t==="total_only")return"single_goal";if(t==="total_plus_categories")return"calendar_goals";if(t==="full_granular")return"category_and_calendar_goals";if(t!=="")return"single_goal";if((Array.isArray((r=e==null?void 0:e.targetsConfig)==null?void 0:r.categories)?e.targetsConfig.categories:[]).length>0)return"category_and_calendar_goals";const o=e!=null&&e.currentTargets&&typeof e.currentTargets=="object"?e.currentTargets:{};return Object.keys(o).length>0?"calendar_goals":"single_goal"}const e0={component:X1,defaultLayout:{width:"full",height:"l",order:70},heightMode:"auto",label:"Calendar Table",category:"Time",baseTitle:ou,configurable:!0,defaultOptions:{calendarFilter:[],compact:!1},dynamicControls:(e,t)=>[{key:"calendarFilter",label:"Calendars",type:"multiselect",options:Array.isArray(t==null?void 0:t.calendars)?t.calendars.map(o=>({value:o.id,label:o.displayname||o.name||o.id})):[]},{key:"compact",label:"Compact",type:"toggle"}],buildProps:(e,t)=>{var d,p,u,v,b;const a=Q1(t),o=new Set(Wn((d=e.options)==null?void 0:d.calendarFilter)),r=Array.isArray(t.byCal)?t.byCal:[],n=o.size?r.filter(c=>o.has(String((c==null?void 0:c.id)??(c==null?void 0:c.calendar_id)??(c==null?void 0:c.calendar)??""))):r,s=Array.isArray(t.calendarGroups)?t.calendarGroups:Array.isArray(t.groups)?t.groups:[],l=a==="category_and_calendar_goals"?s:[];return{title:ia(ou,(p=e.options)==null?void 0:p.titlePrefix),subtitle:o.size?"Filtered calendars":void 0,cardBg:(u=e.options)==null?void 0:u.cardBg,showHeader:((v=e.options)==null?void 0:v.showHeader)!==!1,rows:n,targets:t.currentTargets||{},groups:l,todayHours:t.calendarTodayHours||{},mode:a,totalTarget:Number(((b=t==null?void 0:t.targetsConfig)==null?void 0:b.totalHours)??0)||0}}},ru=["tracked_hours","planned_later","total_with_planned","event_count","average_event_duration"],nu=["tracked_hours","planned_later","event_count","average_event_duration"];function su(e){const t=Array.isArray(e)?e:typeof e=="string"?e.split(","):[],a=new Set(ru),o=Array.from(new Set(t.map(r=>String(r).trim()).filter(r=>a.has(r))));return o.length?o:[...nu]}function t0(e,t,a=""){const o=(e||[]).reduce((s,l)=>(s.tracked+=fi(l==null?void 0:l.total_hours),s.planned+=fi((l==null?void 0:l.future_hours)??(l==null?void 0:l.planned_hours)),s.events+=fi((l==null?void 0:l.events_count)??(l==null?void 0:l.events)),s),{tracked:0,planned:0,events:0}),r=su(t),n=a?`Within ${a.toLowerCase()}`:"Within current range";return r.map(s=>{switch(s){case"tracked_hours":return{key:s,label:"Tracked time",hint:"Already elapsed",value:Un(o.tracked)};case"planned_later":return{key:s,label:"Planned later",hint:"Still upcoming",value:Un(o.planned)};case"total_with_planned":return{key:s,label:"Total incl. planned",hint:n,value:Un(o.tracked+o.planned)};case"event_count":return{key:s,label:"Events",hint:n,value:a0(o.events)};case"average_event_duration":return{key:s,label:"Avg. event",hint:"Tracked time per event",value:o.events>0?Un(o.tracked/o.events):"—"}}})}function fi(e){const t=Number(e);return Number.isFinite(t)?Math.max(0,t):0}function Un(e){return`${Number(e.toFixed(1))} h`}function a0(e){return new Intl.NumberFormat().format(Math.round(e))}const o0=oa(()=>sa(()=>Promise.resolve().then(()=>u3),void 0).then(e=>e.default)),iu="Calendar stats",r0={component:o0,defaultLayout:{width:"half",height:"m",order:54},label:"Calendar stats",category:"Time",baseTitle:iu,configurable:!0,defaultOptions:{metrics:[...nu]},controls:[{key:"metrics",label:"Metrics",type:"multiselect",options:[]}],dynamicControls:()=>[{key:"metrics",label:"Metrics",type:"multiselect",options:ru.map(e=>({value:e,label:n0(e)}))}],buildProps:(e,t)=>{var a,o,r,n;return{title:ia(iu,(a=e.options)==null?void 0:a.titlePrefix),cardBg:(o=e.options)==null?void 0:o.cardBg,showHeader:((r=e.options)==null?void 0:r.showHeader)!==!1,metrics:su((n=e.options)==null?void 0:n.metrics),byCal:t.byCal||[],rangeLabel:t.rangeLabel||""}}};function n0(e){return{tracked_hours:"Tracked time",planned_later:"Planned later",total_with_planned:"Total incl. planned",event_count:"Events",average_event_duration:"Average event duration"}[e]||e}const s0=oa(()=>sa(()=>Promise.resolve().then(()=>m3),void 0).then(e=>e.default)),lu="Time Off Trend";function i0(e){return Array.isArray(e)?e.map(t=>({offset:Number((t==null?void 0:t.offset)??0),label:String((t==null?void 0:t.label)??""),from:String((t==null?void 0:t.from)??""),to:String((t==null?void 0:t.to)??""),totalDays:Math.max(0,Number((t==null?void 0:t.totalDays)??0)||0),daysOff:Math.max(0,Number((t==null?void 0:t.daysOff)??0)||0),daysWorked:Math.max(0,Number((t==null?void 0:t.daysWorked)??0)||0)})).filter(t=>t.totalDays>0):[]}function l0(e,t){const a=new Set(Wn(e==null?void 0:e.ignoreCalendarIds)),o=new Set(Wn(e==null?void 0:e.ignoreCategoryIds));if(!o.size)return a;const r=(t==null?void 0:t.calendarCategoryMap)||{};return Object.entries(r).forEach(([n,s])=>{o.has(String(s))&&a.add(n)}),a}function d0(e,t,a){const o=i0(e);if(!a.size||!Array.isArray(t))return o;const r=new Map(t.filter(n=>Number.isFinite(Number(n==null?void 0:n.offset))).map(n=>[Number(n.offset),n]));return o.map(n=>{const s=r.get(n.offset);if(!s)return n;const l=Array.isArray(s==null?void 0:s.labels)?s.labels.map(b=>String(b)):[],d=Array.isArray(s==null?void 0:s.series)?s.series:[],p=l.map((b,c)=>({date:b,index:c})).filter(({date:b})=>b>=n.from&&b<=n.to).map(({index:b})=>b);if(p.length!==n.totalDays)return n;const u=d.filter(b=>!a.has(String((b==null?void 0:b.id)??""))),v=p.reduce((b,c)=>u.reduce((g,T)=>{var S;return g+Math.max(0,Number(((S=T==null?void 0:T.data)==null?void 0:S[c])??0)||0)},0)>.01?b+1:b,0);return{...n,daysWorked:v,daysOff:Math.max(0,n.totalDays-v)}})}const c0={component:s0,defaultLayout:{width:"quarter",height:"s",order:45},heightMode:"auto",label:"Time Off Trend",category:"Time",baseTitle:lu,configurable:!0,defaultOptions:{reverseOrder:!1,labelMode:"period",interpretation:"more_off_positive",toneLowColor:"#dc2626",toneHighColor:"#16a34a",ignoreCalendarIds:[],ignoreCategoryIds:[]},controls:[{key:"reverseOrder",label:"Newest first",type:"toggle"},{key:"labelMode",label:"Trend label",type:"select",options:[{value:"date",label:"Date range"},{value:"period",label:"Week/Month"},{value:"offset",label:"Offset only"}]},{key:"interpretation",label:"Interpretation",type:"select",options:[{value:"more_off_positive",label:"More off = positive"},{value:"more_off_warning",label:"More off = warning"}]},{key:"toneLowColor",label:"Low % color",type:"color"},{key:"toneHighColor",label:"High % color",type:"color"}],dynamicControls:(e,t)=>{const a=Array.isArray(t==null?void 0:t.calendars)?t.calendars.map(r=>({value:String((r==null?void 0:r.id)??""),label:String((r==null?void 0:r.displayname)||(r==null?void 0:r.name)||(r==null?void 0:r.id)||"")})).filter(r=>r.value):[],o=Array.isArray(t==null?void 0:t.calendarGroups)?t.calendarGroups.map(r=>({value:String((r==null?void 0:r.id)??""),label:String((r==null?void 0:r.label)||(r==null?void 0:r.id)||"")})).filter(r=>r.value):[];return[{key:"ignoreCalendarIds",label:"Ignore calendars",type:"multiselect",options:a},{key:"ignoreCategoryIds",label:"Ignore categories",type:"multiselect",options:o}]},buildProps:(e,t)=>{var a,o,r,n,s,l,d,p,u;return{trend:d0(t.activityDayOffTrend,(a=t.charts)==null?void 0:a.perDaySeriesByOffset,l0(e.options,t)),unit:t.activityTrendUnit??"wk",lookback:t.activityDayOffLookback??3,showHeader:((o=e.options)==null?void 0:o.showHeader)!==!1,reverseOrder:((r=e.options)==null?void 0:r.reverseOrder)===!0,labelMode:(n=e.options)==null?void 0:n.labelMode,interpretation:(s=e.options)==null?void 0:s.interpretation,title:ia(lu,(l=e.options)==null?void 0:l.titlePrefix),cardBg:(d=e.options)==null?void 0:d.cardBg,toneLowColor:(p=e.options)==null?void 0:p.toneLowColor,toneHighColor:(u=e.options)==null?void 0:u.toneHighColor}}};function du(e){const t=typeof e.title=="string"?e.title.trim():"";if(!t)return null;const o=(e.id!=null?String(e.id).trim():"")||g0(t);return o?`tag_${o}`:null}function u0(e){const t=new Map;e.forEach(r=>{const n=new Set,s=Array.isArray(r.labels)?r.labels:[],l=String(r.boardTitle||"").trim(),d=p0(r.boardColor);s.forEach(p=>{const u=du(p),v=typeof p.title=="string"?p.title.trim():"";if(!u||!v||n.has(u))return;n.add(u);const b=t.get(u)||{label:v,count:0,boardTitle:l,boardColor:d};b.count+=1,t.set(u,b)})});const a=Array.from(t.entries()).map(([r,n])=>({value:r,...n})),o=new Map;return a.forEach(r=>{const n=r.label.toLowerCase();o.set(n,(o.get(n)||0)+1)}),a.map(r=>{const n=(o.get(r.label.toLowerCase())||0)>1;return{value:r.value,label:r.label,count:r.count,duplicateLabel:n,contextLabel:n?r.boardTitle:void 0,contextColor:n?r.boardColor:void 0}}).sort((r,n)=>n.count-r.count||r.label.localeCompare(n.label))}function cu(e,t){return(Array.isArray(e.labels)?e.labels:[]).some(o=>du(o)===t)}function g0(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"")}function p0(e){if(typeof e!="string")return"";const t=e.trim();return t?t.startsWith("#")?t:/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/.test(t)?`#${t}`:"":""}const uu=["open_now","overdue_now","unassigned_open","mine_open","created_in_range","completed_in_range","due_in_range","done_now","archived_now"],gu=["open_now","overdue_now","created_in_range","completed_in_range","due_in_range"];function ao(e){return Array.isArray(e)?Array.from(new Set(e.map(t=>Number(t)).filter(t=>Number.isInteger(t)&&t>0))):typeof e=="string"?ao(e.split(",")):[]}function Gn(e){return Array.isArray(e)?Array.from(new Set(e.map(t=>String(t??"").trim()).filter(Boolean))):typeof e=="string"?Gn(e.split(",")):[]}function pu(e,t=gu){const a=Array.isArray(e)?e:typeof e=="string"?e.split(","):[],o=new Set(uu),r=Array.from(new Set(a.map(n=>String(n??"").trim()).filter(n=>o.has(n))));return r.length?r:[...t]}function f0(e){let t=[];if(Array.isArray(e))t=e;else if(typeof e=="string"&&e.trim()!=="")try{const a=JSON.parse(e);Array.isArray(a)&&(t=a)}catch{t=[]}return t.map(a=>{if(!a||typeof a!="object")return null;const o=String(a.label||a.name||"").trim();if(!o)return null;const r=$0(String(a.id||o)),n=Array.isArray(a.labelIds)?a.labelIds.map(d=>String(d).trim()).filter(Boolean):[],s=Array.isArray(a.labels)?a.labels.map(d=>String(d).trim()).filter(Boolean):[],l=Array.isArray(a.assignees)?a.assignees.map(d=>String(d).trim()).filter(Boolean):[];return{id:r,label:o,labelIds:n,labels:s,assignees:l}}).filter(Boolean)}function bi(e,t){const a=e.trim().toLowerCase();return o=>{if(!a)return!1;const r=(o.assignees||[]).some(l=>typeof l.uid=="string"&&l.uid.toLowerCase()===a),n=typeof o.createdBy=="string"&&o.createdBy.trim().toLowerCase()===a,s=typeof o.doneBy=="string"&&o.doneBy.trim().toLowerCase()===a;return t==="creator"?n||s:t==="assignee"?r||s:r||n||s}}function mo(e,t){const a=new Set(ao(t.boardIds)),o=new Set(ao(t.stackIds)),r=t.includeArchived!==!1,n=t.includeCompleted!==!1;return(e||[]).filter(s=>!(a.size&&!a.has(Number(s.boardId))||o.size&&!o.has(Number(s.stackId))||!r&&s.status==="archived"||!n&&s.status==="done"))}function fu(e){const t=new Map;return e.forEach(a=>{const o=Number(a.stackId);if(!Number.isInteger(o)||o<=0)return;const r=t.get(o)||{label:String(a.stackTitle||`Stack ${o}`),count:0,boardTitle:String(a.boardTitle||""),boardColor:a.boardColor};r.count+=1,t.set(o,r)}),Array.from(t.entries()).map(([a,o])=>({value:a,label:o.label,count:o.count,contextLabel:o.boardTitle||void 0,contextColor:o.boardColor||void 0})).sort((a,o)=>a.label.localeCompare(o.label))}function vi(e,t){return u0(e)}function b0(e,t){const a=t.scope,o=bi(t.uid||"",t.mineMode),r=Gn(t.tagIds);return e.filter(n=>!(a==="mine"&&!o(n)||a==="unassigned"&&(n.assignees||[]).length>0||r.length&&!r.some(s=>cu(n,s))))}function bu(e,t,a){const o=bi(a.uid||"",a.mineMode||"assignee"),r=a.includeArchivedInDone===!0,n=a.includeCompleted!==!1;if(e==="all")return t;if(e==="mine")return t.filter(s=>o(s));if(e==="focus_all"||e==="focus_mine")return t.filter(s=>s.status==="active"&&s.dueTs!=null&&(e==="focus_all"||o(s)));if(e==="backlog_all"||e==="backlog_mine")return t.filter(s=>s.status==="active"&&s.dueTs==null&&(e==="backlog_all"||o(s)));if(e.startsWith("created_today"))return t.filter(s=>(e.endsWith("_mine")?o(s):!0)&&x0(s));if(e.startsWith("created_range"))return t.filter(s=>(e.endsWith("_mine")?o(s):!0)&&hu(s,a.from,a.to));if(e.startsWith("due_today"))return t.filter(s=>(e.endsWith("_mine")?o(s):!0)&&C0(s));if(e.startsWith("due_"))return t.filter(s=>(e.endsWith("_mine")?o(s):!0)&&hi(s,a.from,a.to));if(e.startsWith("custom_")){const s=e.slice(7),l=(a.customFilters||[]).find(d=>d.id===s);return l?t.filter(d=>T0(d,l,o)):[]}if(e.startsWith("tag_"))return t.filter(s=>cu(s,e));if(e.includes("_")){const[s,l]=e.split("_");return t.filter(d=>{const p=k0(d,s,r,n),u=l==="all"?!0:o(d);return p&&u})}return t}function v0(e,t,a){const o=bi(a.uid||"",a.mineMode);switch(e){case"open_now":return t.filter(r=>r.status==="active").length;case"overdue_now":return t.filter(r=>S0(r)).length;case"unassigned_open":return t.filter(r=>r.status==="active"&&(r.assignees||[]).length===0).length;case"mine_open":return t.filter(r=>r.status==="active"&&o(r)).length;case"created_in_range":return t.filter(r=>hu(r,a.from,a.to)).length;case"completed_in_range":return t.filter(r=>_0(r,a.from,a.to)).length;case"due_in_range":return t.filter(r=>hi(r,a.from,a.to)).length;case"done_now":return t.filter(r=>r.status==="done").length;case"archived_now":return t.filter(r=>r.status==="archived").length;default:return 0}}function h0(e,t){const a=mo(e,{boardIds:t.boardIds,stackIds:t.stackIds,includeArchived:t.includeArchived,includeCompleted:t.includeCompleted}),o=b0(a,{scope:t.scope,uid:t.uid,mineMode:t.mineMode,tagIds:t.tagIds});return pu(t.metrics).map(n=>({key:n,label:m0(n),hint:y0(n,t.rangeLabel||""),value:v0(n,o,{uid:t.uid,mineMode:t.mineMode,from:t.from,to:t.to})}))}function m0(e){switch(e){case"open_now":return"Open now";case"overdue_now":return"Overdue now";case"unassigned_open":return"Unassigned open";case"mine_open":return"Mine open";case"created_in_range":return"Created in range";case"completed_in_range":return"Completed in range";case"due_in_range":return"Due in range";case"done_now":return"Done now";case"archived_now":return"Archived now";default:return e}}function y0(e,t){switch(e){case"open_now":case"overdue_now":case"unassigned_open":case"mine_open":case"done_now":case"archived_now":return"Current snapshot";case"created_in_range":case"completed_in_range":case"due_in_range":return t?`Within ${t.toLowerCase()}`:"Within current range";default:return""}}function w0(e){const t=[],a=ao(e.boardIds),o=ao(e.stackIds),r=Gn(e.tagIds);return a.length&&t.push(`${a.length} board${a.length===1?"":"s"}`),o.length&&t.push(`${o.length} stack${o.length===1?"":"s"}`),r.length&&t.push(`${r.length} tag${r.length===1?"":"s"}`),e.scope==="mine"&&t.push("Mine"),e.scope==="unassigned"&&t.push("Unassigned"),t.join(" · ")}function k0(e,t,a,o){return t==="open"?e.status==="active":t==="archived"?e.status==="archived":t==="done"?o?e.status==="done"?!0:a&&e.status==="archived"&&o:!1:t==="due"?hi(e):!1}function vu(e){if(!e)return null;const t=e.trim();if(/^\d{4}-\d{2}-\d{2}$/.test(t))return t;const a=ii(t);return a?na(a):null}function Yo(e){return e==null?null:na(new Date(e))}function x0(e){const t=Yo(e.createdTs);return t?t===na(new Date):!1}function hu(e,t,a){return mi(Yo(e.createdTs),t,a)}function _0(e,t,a){return mi(Yo(e.doneTs),t,a)}function hi(e,t,a){return mi(Yo(e.dueTs),t,a)}function C0(e){const t=Yo(e.dueTs??null);return t?t===na(new Date):!1}function S0(e){if(e.status!=="active")return!1;const t=Yo(e.dueTs??null);return t?t<na(new Date):!1}function mi(e,t,a){const o=vu(t||null),r=vu(a||null);return!e||!o||!r?!1:e>=o&&e<=r}function T0(e,t,a){const o=(t.labelIds||[]).map(v=>v.trim().toLowerCase()).filter(Boolean),r=(t.labels||[]).map(v=>v.trim().toLowerCase()).filter(Boolean),n=(t.assignees||[]).map(v=>v.trim().toLowerCase()).filter(Boolean),s=o.length>0,l=r.length>0,d=n.length>0;if(!s&&!l&&!d)return!1;let p=!0;if(s||l){const v=(e.labels||[]).map(c=>c.id!=null?String(c.id).trim().toLowerCase():"").filter(Boolean),b=(e.labels||[]).map(c=>String(c.title||"").trim().toLowerCase()).filter(Boolean);p=(!s||o.some(c=>v.includes(c)))&&(!l||r.some(c=>b.includes(c)))}let u=!0;if(d){const v=(e.assignees||[]).map(b=>String(b.uid||"").trim().toLowerCase()).filter(Boolean);u=n.some(b=>v.includes(b)),!u&&n.includes("me")&&(u=a(e)),!u&&n.includes("unassigned")&&(u=v.length===0)}return p&&u}function $0(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"")}const M0=oa(()=>sa(()=>Promise.resolve().then(()=>uS),void 0).then(e=>e.default)),mu="Deck cards",A0={component:M0,defaultLayout:{width:"half",height:"m",order:52},heightMode:"fixed",label:"Deck cards",category:"Tasks",baseTitle:mu,configurable:!0,defaultOptions:{allowMine:!0,includeArchived:!0,includeCompleted:!0,autoScroll:!1,intervalSeconds:5,showCount:!0,minFilterCount:0,maxVisible:8,autoTagsEnabled:!0,compactList:!1,customFilters:[],filters:["focus_all","focus_mine","backlog_all","backlog_mine","all"],defaultFilter:"focus_all",mineMode:"assignee"},controls:[{key:"boardIds",label:"Boards to include",type:"multiselect",options:[]},{key:"stackIds",label:"Stacks to include",type:"multiselect",options:[]},{key:"maxVisible",label:"Cards before expand",type:"number",min:3,max:50,step:1},{key:"compactList",label:"Compact list",type:"toggle"}],dynamicControls:(e,t)=>{var c;const a=jc(e.filters??((c=e.defaultOptions)==null?void 0:c.filters)),o={key:"defaultFilter",label:"Start with",type:"select",options:["focus_all","focus_mine","backlog_all","backlog_mine","all"].filter(f=>a.includes(f)).map(f=>({value:f,label:A1(f)}))},r=Array.isArray(t.deckBoards)?t.deckBoards.map(f=>({value:f.id,label:f.title||`Board ${f.id}`})):[],n=Array.isArray(t.deckCards)?t.deckCards:[],s=Array.isArray(e.boardIds)?e.boardIds:Ir(e.boardIds),l=ao(e.stackIds),d=mo(n,{boardIds:s,includeArchived:e.includeArchived!==!1,includeCompleted:e.includeCompleted!==!1}),p=mo(d,{stackIds:l,includeArchived:e.includeArchived!==!1,includeCompleted:e.includeCompleted!==!1}),u=fu(d),v=vi(p),b=[];return e.autoTagsEnabled!==!1&&v.length&&b.push({key:"autoTagSelection",label:"Tag filters",type:"taglist",options:v,hint:"Uncheck tags to hide their filters. Counts reflect the current cards."}),[o,{key:"boardIds",label:"Boards",type:"multiselect",options:r},{key:"stackIds",label:"Stacks",type:"multiselect",options:u},...b]},buildProps:(e,t)=>{var l,d,p,u,v,b,c,f,g,T,S,$,C,H,O,I,_,k,m,w,D,R,L,Z,K;const a=jc(((l=e.options)==null?void 0:l.filters)??((p=(d=e.options)==null?void 0:d.defaultOptions)==null?void 0:p.filters)),o=Array.isArray((u=e.options)==null?void 0:u.boardIds)?e.options.boardIds:Ir((v=e.options)==null?void 0:v.boardIds),r=ao((b=e.options)==null?void 0:b.stackIds),n=a.includes((c=e.options)==null?void 0:c.defaultFilter)?(f=e.options)==null?void 0:f.defaultFilter:a[0]||"all",s=f0((g=e.options)==null?void 0:g.customFilters);return{title:ia(mu,(T=e.options)==null?void 0:T.titlePrefix),cardBg:(S=e.options)==null?void 0:S.cardBg,cards:t.deckCards||[],rangeLabel:t.deckRangeLabel||t.rangeLabel||"",from:t.from,to:t.to,uid:t.uid,deckUrl:t.deckUrl,lastFetchedAt:t.deckRangeLabel,loading:t.deckLoading,error:t.deckError,boardIds:o,stackIds:r,filters:a,defaultFilter:n,allowMine:(($=e.options)==null?void 0:$.allowMine)!==!1,mineMode:((C=e.options)==null?void 0:C.mineMode)||"assignee",includeArchived:((H=e.options)==null?void 0:H.includeArchived)!==!1,includeCompleted:((O=e.options)==null?void 0:O.includeCompleted)!==!1,autoScroll:((I=e.options)==null?void 0:I.autoScroll)!==!1,intervalSeconds:((_=e.options)==null?void 0:_.intervalSeconds)??5,showCount:((k=e.options)==null?void 0:k.showCount)!==!1,minFilterCount:Number(((m=e.options)==null?void 0:m.minFilterCount)??0),maxVisible:Number(((w=e.options)==null?void 0:w.maxVisible)??8),compactList:((D=e.options)==null?void 0:D.compactList)===!0,autoTagsEnabled:((R=e.options)==null?void 0:R.autoTagsEnabled)!==!1,autoTagSelection:Array.isArray((L=e.options)==null?void 0:L.autoTagSelection)?(Z=e.options)==null?void 0:Z.autoTagSelection:void 0,showHeader:((K=e.options)==null?void 0:K.showHeader)!==!1,customFilters:s,editable:t.isLayoutEditing===!0,onDeckCardsChanged:t.onDeckCardsChanged,onUpdateFilters:Y=>{var le;return(le=t.onUpdateWidgetOptions)==null?void 0:le.call(t,e.id,"filters",Y)}}}},D0=oa(()=>sa(()=>Promise.resolve().then(()=>CS),void 0).then(e=>e.default)),yu="Deck stats",L0={component:D0,defaultLayout:{width:"half",height:"m",order:53},label:"Deck stats",category:"Tasks",baseTitle:yu,configurable:!0,defaultOptions:{scope:"all",mineMode:"assignee",includeArchived:!0,includeCompleted:!0,metrics:[...gu]},controls:[{key:"boardIds",label:"Boards to include",type:"multiselect",options:[]},{key:"stackIds",label:"Stacks to include",type:"multiselect",options:[]},{key:"scope",label:"Scope",type:"select",options:[{value:"all",label:"All cards"},{value:"mine",label:"Mine"},{value:"unassigned",label:"Unassigned"}]},{key:"mineMode",label:"Mine mode",type:"select",options:[{value:"assignee",label:"Assignee"},{value:"creator",label:"Creator"},{value:"both",label:"Assignee + Creator"}]},{key:"includeArchived",label:"Include archived cards",type:"toggle"},{key:"includeCompleted",label:"Include completed cards",type:"toggle"},{key:"metrics",label:"Metrics",type:"multiselect",options:[]}],dynamicControls:(e,t)=>{const a=Array.isArray(t.deckBoards)?t.deckBoards.map(u=>({value:u.id,label:u.title||`Board ${u.id}`})):[],o=Array.isArray(t.deckCards)?t.deckCards:[],r=Array.isArray(e.boardIds)?e.boardIds:Ir(e.boardIds),n=ao(e.stackIds),s=mo(o,{boardIds:r,includeArchived:e.includeArchived!==!1,includeCompleted:e.includeCompleted!==!1}),l=mo(s,{stackIds:n,includeArchived:e.includeArchived!==!1,includeCompleted:e.includeCompleted!==!1}),d=fu(s),p=vi(l);return[{key:"boardIds",label:"Boards",type:"multiselect",options:a},{key:"stackIds",label:"Stacks",type:"multiselect",options:d},{key:"metrics",label:"Metrics",type:"multiselect",options:uu.map(u=>({value:u,label:E0(u)}))},...p.length?[{key:"tagIds",label:"Tags",type:"taglist",options:p,hint:"All tags are included by default. Uncheck tags to narrow the stat population."}]:[]]},buildProps:(e,t)=>{var l,d,p,u,v,b,c,f,g,T,S,$,C;const a=Array.isArray((l=e.options)==null?void 0:l.boardIds)?e.options.boardIds:Ir((d=e.options)==null?void 0:d.boardIds),o=ao((p=e.options)==null?void 0:p.stackIds),r=Gn((u=e.options)==null?void 0:u.tagIds),n=pu((v=e.options)==null?void 0:v.metrics),s=((b=e.options)==null?void 0:b.scope)==="mine"||((c=e.options)==null?void 0:c.scope)==="unassigned"?e.options.scope:"all";return{title:ia(yu,(f=e.options)==null?void 0:f.titlePrefix),cardBg:(g=e.options)==null?void 0:g.cardBg,cards:t.deckCards||[],rangeLabel:t.deckRangeLabel||t.rangeLabel||"",from:t.from,to:t.to,uid:t.uid,loading:t.deckLoading,error:t.deckError,boardIds:a,stackIds:o,tagIds:r,metrics:n,scope:s,mineMode:((T=e.options)==null?void 0:T.mineMode)||"assignee",includeArchived:((S=e.options)==null?void 0:S.includeArchived)!==!1,includeCompleted:(($=e.options)==null?void 0:$.includeCompleted)!==!1,showHeader:((C=e.options)==null?void 0:C.showHeader)!==!1,selectionText:w0({boardIds:a,stackIds:o,tagIds:r,scope:s})}}};function E0(e){switch(e){case"open_now":return"Open now";case"overdue_now":return"Overdue now";case"unassigned_open":return"Unassigned open";case"mine_open":return"Mine open";case"created_in_range":return"Created in range";case"completed_in_range":return"Completed in range";case"due_in_range":return"Due in range";case"done_now":return"Done now";case"archived_now":return"Archived now";default:return e}}const N0=oa(()=>sa(()=>Promise.resolve().then(()=>i6),void 0).then(e=>e.default)),wu="Targets",I0={component:N0,defaultLayout:{width:"half",height:"m",order:18},heightMode:"auto",label:"Targets",category:"Time",baseTitle:wu,configurable:!0,defaultOptions:{showLegend:!0,showDelta:!0,showForecast:!0,showPace:!0,neverFinishedMode:!1,showToday:!0,showTotalDelta:!0,showNeedPerDay:!0,showCategoryBlocks:!0,badges:!0,includeWeekendToggle:!0,includeZeroDaysInStats:!1,useLocalConfig:!1,localConfig:null},resolveOptions:(e,t)=>{const o=(e==null?void 0:e.useLocalConfig)===!0&&(e!=null&&e.localConfig)?JSON.parse(JSON.stringify(e.localConfig)):t!=null&&t.targetsConfig?JSON.parse(JSON.stringify(t.targetsConfig)):_a(),r=Rc(zc(o,t==null?void 0:t.rangeMode));return{showTotalDelta:r.ui.showTotalDelta,showNeedPerDay:r.ui.showNeedPerDay,showCategoryBlocks:r.ui.showCategoryBlocks,badges:r.ui.badges,includeWeekendToggle:r.ui.includeWeekendToggle,includeZeroDaysInStats:r.includeZeroDaysInStats}},controls:[{key:"showLegend",label:"Show legend",type:"toggle"},{key:"showDelta",label:"Show delta",type:"toggle"},{key:"showForecast",label:"Show forecast",type:"toggle"},{key:"showPace",label:"Show pace line",type:"toggle"},{key:"neverFinishedMode",label:"Never Finished · Stay Hard",type:"toggle"},{key:"showToday",label:"Show today overlay",type:"toggle"},{key:"useLocalConfig",label:"Use custom targets for this widget",type:"toggle"},{key:"showTotalDelta",label:"Show total delta",type:"toggle"},{key:"showNeedPerDay",label:"Show need per day",type:"toggle"},{key:"showCategoryBlocks",label:"Show categories",type:"toggle"},{key:"badges",label:"Status badges",type:"toggle"},{key:"includeWeekendToggle",label:"Weekend toggle",type:"toggle"},{key:"includeZeroDaysInStats",label:"Include zero days in pace",type:"toggle"}],buildProps:(e,t)=>{var b,c,f,g,T,S,$,C,H,O,I,_,k,m;const a=!!((b=e.options)!=null&&b.useLocalConfig),o=B0(a?(c=e.options)==null?void 0:c.localGroupsById:null),r=H0(a?(f=e.options)==null?void 0:f.localTargetsWeek:null),n=a&&((g=e.options)!=null&&g.localConfig)?JSON.parse(JSON.stringify(e.options.localConfig)):t.targetsConfig?JSON.parse(JSON.stringify(t.targetsConfig)):_a(),s=Rc(zc(n,t.rangeMode)),l=(w,D)=>{var R;((R=e.options)==null?void 0:R[w])!==void 0&&D(!!e.options[w])};l("showTotalDelta",w=>{s.ui.showTotalDelta=w}),l("showNeedPerDay",w=>{s.ui.showNeedPerDay=w}),l("showCategoryBlocks",w=>{s.ui.showCategoryBlocks=w}),l("badges",w=>{s.ui.badges=w}),l("includeWeekendToggle",w=>{s.ui.includeWeekendToggle=w}),l("includeZeroDaysInStats",w=>{s.includeZeroDaysInStats=w});const d=a&&t.stats?T1(s,{...t,groupsById:o??t.groupsById}):t.targetsSummary??t.summary,p=a?F0(r,t.rangeMode):t.currentTargets||{},u=O0({strategy:a?null:t==null?void 0:t.onboardingStrategy,config:s,currentTargets:p});Object.prototype.hasOwnProperty.call(e.options??{},"showCategoryBlocks")||(s.ui.showCategoryBlocks=u!=="single_goal");const v=a?ku({mode:u,config:s,summary:d,byCal:t.byCal||[],calendars:t.calendars||[],colorsById:t.colorsById||{},groupsById:o??t.groupsById??{},currentTargets:p,todayHoursByCalendar:t.calendarTodayHours||{}}):((T=e.props)==null?void 0:T.groups)??ku({mode:u,config:s,summary:d,byCal:t.byCal||[],calendars:t.calendars||[],colorsById:t.colorsById||{},groupsById:t.groupsById??{},currentTargets:p,todayHoursByCalendar:t.calendarTodayHours||{}});return{summary:d,config:s,groups:v,showHeader:((S=e.options)==null?void 0:S.showHeader)!==!1,showLegend:(($=e.options)==null?void 0:$.showLegend)!==!1,showDelta:((C=e.options)==null?void 0:C.showDelta)!==!1,showForecast:((H=e.options)==null?void 0:H.showForecast)!==!1,showPace:((O=e.options)==null?void 0:O.showPace)!==!1,neverFinishedMode:((I=e.options)==null?void 0:I.neverFinishedMode)===!0,showToday:((_=e.options)==null?void 0:_.showToday)!==!1,title:ia(wu,(k=e.options)==null?void 0:k.titlePrefix),cardBg:(m=e.options)==null?void 0:m.cardBg}}};function O0(e){var r;const t=String((e==null?void 0:e.strategy)??"");if(t==="total_only")return"single_goal";if(t==="total_plus_categories")return"calendar_goals";if(t==="full_granular")return"category_and_calendar_goals";if(t!=="")return"single_goal";if((Array.isArray((r=e==null?void 0:e.config)==null?void 0:r.categories)?e.config.categories:[]).length>0)return"category_and_calendar_goals";const o=e!=null&&e.currentTargets&&typeof e.currentTargets=="object"?e.currentTargets:{};return Object.keys(o).length>0?"calendar_goals":"single_goal"}function ku(e){return e.mode==="single_goal"?[]:e.mode==="calendar_goals"?M1({config:e.config,summary:e.summary,byCal:e.byCal,calendars:e.calendars,colorsById:e.colorsById,currentTargets:e.currentTargets,todayHoursByCalendar:e.todayHoursByCalendar}):$1({config:e.config,summary:e.summary,byCal:e.byCal,calendars:e.calendars,colorsById:e.colorsById,groupsById:e.groupsById,currentTargets:e.currentTargets})}function B0(e){if(!e||typeof e!="object"||Array.isArray(e))return null;const t={};return Object.entries(e).forEach(([a,o])=>{const r=String(a||"").trim();r&&(t[r]=Math.max(0,Math.min(9,Math.trunc(Number(o)||0))))}),t}function H0(e){if(!e||typeof e!="object"||Array.isArray(e))return{};const t={};return Object.entries(e).forEach(([a,o])=>{const r=String(a||"").trim(),n=Number(o);!r||!Number.isFinite(n)||(t[r]=ja(n))}),t}function F0(e,t){return String(t||"week").toLowerCase()!=="month"?{...e}:Object.fromEntries(Object.entries(e).map(([a,o])=>[a,Va(o)]))}function P0(e){var l;const t=e.basis;if(t==="off")return 0;const a={},o=(l=e.targets)!=null&&l.length?e.targets.reduce((d,p)=>d+(p.targetHours??0),0):0;t!=="calendar"&&o>0&&e.targets.forEach(d=>{const p=(d.targetHours??0)/o;a[d.id]=p});const r=new Set;if(Object.keys(e.shares||{}).forEach(d=>r.add(d)),Object.keys(a).forEach(d=>r.add(d)),r.size===0)return 0;let n=0;r.forEach(d=>{var b;const p=Number(((b=e.shares)==null?void 0:b[d])??0),u=t==="calendar"?1/r.size:a[d]??0,v=Math.abs(p-u);v>n&&(n=v)});const s=1-n;return Math.max(0,Math.min(1,Number(s.toFixed(2))))}const xu=oa(()=>sa(()=>Promise.resolve().then(()=>y8),void 0).then(e=>e.default)),yi="Period Comparison",W0=["showTotal","showAverage","showMedian","showBusiest","showWorkday","showWeekend","showWeekendShare","showCalendarSummary","showTopCategory"],z0={key:"mode",label:"Average mode",type:"select",options:[{value:"active",label:"Active days"},{value:"all",label:"All days"}]},R0=[{key:"showTotal",label:"Total hours",type:"toggle"},{key:"showAverage",label:"Average per day",type:"toggle"},{key:"showMedian",label:"Median per day",type:"toggle"},{key:"showBusiest",label:"Busiest day",type:"toggle"},{key:"showWorkday",label:"Workdays row",type:"toggle"},{key:"showWeekend",label:"Weekend row",type:"toggle"},{key:"showWeekendShare",label:"Weekend share",type:"toggle"},{key:"showCalendarSummary",label:"Top calendars",type:"toggle"},{key:"showTopCategory",label:"Top category",type:"toggle"}];function _u(){return{..._a().timeSummary,mode:"active",showToday:!0,showActivity:!0,showHistoryCoreMetrics:!0,historyView:"accordion",showActivityDetails:!0,showDelta:!0}}function j0(){return{defaultView:"auto",showDailyKpis:!0,showWeekMiniChart:!0,showEmptyLanes:!0,maxLanes:4,showRangeInTitle:!1}}function V0(e){var r;const t=String((e==null?void 0:e.onboardingStrategy)??"");if(t==="total_only")return"single_goal";if(t==="total_plus_categories")return"calendar_goals";if(t==="full_granular")return"category_and_calendar_goals";if(t!=="")return"single_goal";if((Array.isArray((r=e==null?void 0:e.targetsConfig)==null?void 0:r.categories)?e.targetsConfig.categories:[]).length>0)return"category_and_calendar_goals";const o=e!=null&&e.currentTargets&&typeof e.currentTargets=="object"?e.currentTargets:{};return Object.keys(o).length>0?"calendar_goals":"single_goal"}function Cu(e,t,a){var I,_,k,m,w,D,R,L,Z,K,Y,le,J,de,B,G,A,V,he,Me,ae,U;const o=t.targetsConfig?JSON.parse(JSON.stringify(t.targetsConfig)):_a(),r={...o,timeSummary:{...o.timeSummary}},n=String(t.rangeMode||"week").toLowerCase()==="month"?"month":"week",s=((I=e.options)==null?void 0:I.mode)??t.activeDayMode??"active",l=a.showOverview&&((_=e.options)==null?void 0:_.showToday)!==!1,d=a.showOverview&&((k=e.options)==null?void 0:k.showActivity)!==!1,p=((m=e.options)==null?void 0:m.showHistoryCoreMetrics)!==!1,u=V0(t),v=Q0(t,u),b=U0(u),c=G0((w=e.options)==null?void 0:w.defaultView,u,b),f=K0(t),g=q0(t),T=J0(t),S=String(((D=e.options)==null?void 0:D.historyView)??"").toLowerCase(),$=S==="accordion"||S==="pills"?"accordion":"timeline",C=((R=e.options)==null?void 0:R.showActivityDetails)!==!1,H=a.showLookback&&a.showDelta&&((L=e.options)==null?void 0:L.showDelta)!==!1;W0.forEach(F=>{var j;((j=e.options)==null?void 0:j[F])!==void 0&&(r.timeSummary[F]=!!e.options[F])}),((Z=e.options)==null?void 0:Z.showCalendarSummary)===void 0&&(r.timeSummary.showCalendarSummary=u!=="single_goal"),((K=e.options)==null?void 0:K.showTopCategory)===void 0&&(r.timeSummary.showTopCategory=u==="category_and_calendar_goals"),((Y=e.options)==null?void 0:Y.showBalance)===void 0&&(r.timeSummary.showBalance=u==="category_and_calendar_goals");const O=a.includeHistory&&Number(t.lookbackWeeks)>1?aw({mode:s,rangeMode:n,lookbackWeeks:Number(t.lookbackWeeks),perDaySeriesByOffset:(le=t.charts)==null?void 0:le.perDaySeriesByOffset,hodByOffset:(J=t.charts)==null?void 0:J.hodByOffset,summaryByOffset:(de=t.charts)==null?void 0:de.summaryByOffset,targetsConfig:ow(r,n),calendarCategoryMap:t.calendarCategoryMap||{},calendarGroups:Array.isArray(t.calendarGroups)?t.calendarGroups:[],categoryColorMap:t.categoryColorMap||{}}):[];return{summary:t.summary,activitySummary:t.activitySummary,mode:s,config:r.timeSummary,lookbackWeeks:Number(t.lookbackWeeks)||1,todayGroups:((B=e.props)==null?void 0:B.todayGroups)??v,calendarTodayItems:f,categoryTodayItems:g,weekDays:T,allowedViews:b,defaultView:c,showDailyKpis:((G=e.options)==null?void 0:G.showDailyKpis)!==!1,showWeekMiniChart:((A=e.options)==null?void 0:A.showWeekMiniChart)!==!1,showEmptyLanes:((V=e.options)==null?void 0:V.showEmptyLanes)!==!1,maxLanes:Number(((he=e.options)==null?void 0:he.maxLanes)??4)||4,title:ia(a.title,(Me=e.options)==null?void 0:Me.titlePrefix),cardBg:(ae=e.options)==null?void 0:ae.cardBg,displayMode:u,rangeMode:t.rangeMode,rangeStart:t.from,rangeEnd:t.to,offset:t.offset,showHeader:((U=e.options)==null?void 0:U.showHeader)!==!1,showRangeInTitle:a.showRangeInTitle!==!1,showToday:l,showActivity:d,showHistoryCoreMetrics:p,historyView:$,showActivityDetails:C,showOverview:a.showOverview,showLookback:a.showLookback,showDelta:H,history:O}}function U0(e){return e==="category_and_calendar_goals"?["daily","calendars","categories"]:e==="calendar_goals"?["daily","calendars"]:["daily"]}function G0(e,t,a){const o=String(e??"").toLowerCase();return(o==="daily"||o==="calendars"||o==="categories")&&a.includes(o)?o:t==="category_and_calendar_goals"&&a.includes("categories")?"categories":t==="calendar_goals"&&a.includes("calendars")?"calendars":"daily"}function K0(e){const t=e!=null&&e.calendarTodayHours&&typeof e.calendarTodayHours=="object"?e.calendarTodayHours:{};return(Array.isArray(e==null?void 0:e.calendars)?e.calendars:[]).map(o=>{const r=String((o==null?void 0:o.id)??"").trim();return r?{id:r,label:String((o==null?void 0:o.displayname)??(o==null?void 0:o.name)??r),todayHours:Number(t[r]??0)||0,color:typeof(o==null?void 0:o.color)=="string"?o.color:void 0}:null}).filter(Boolean).sort((o,r)=>Number((r==null?void 0:r.todayHours)??0)-Number((o==null?void 0:o.todayHours)??0))}function q0(e){const t=Array.isArray(e==null?void 0:e.groups)?e.groups:Array.isArray(e==null?void 0:e.calendarGroups)?e.calendarGroups:[],a=e!=null&&e.categoryTodayHours&&typeof e.categoryTodayHours=="object"?e.categoryTodayHours:{},o=e!=null&&e.categoryColorMap&&typeof e.categoryColorMap=="object"?e.categoryColorMap:{};return t.map(r=>{const n=String((r==null?void 0:r.id)??"").trim();if(!n)return null;const s=Number((r==null?void 0:r.todayHours)??a[n]??0)||0;return{id:n,label:String((r==null?void 0:r.label)??n),todayHours:s,color:(r==null?void 0:r.color)||o[n],isUnassigned:!!(r!=null&&r.isUnassigned)||n==="__uncategorized__"}}).filter(Boolean).sort((r,n)=>Number((n==null?void 0:n.todayHours)??0)-Number((r==null?void 0:r.todayHours)??0))}function J0(e){var v;if((String((e==null?void 0:e.rangeMode)||"week").toLowerCase()==="month"?"month":"week")!=="week")return[];const a=Nt(String((e==null?void 0:e.from)??"")),o=Nt(String((e==null?void 0:e.to)??""));if(!a||!o)return[];const r=Z0(new Date),n=Array.isArray(e==null?void 0:e.byDay)?e.byDay:[],s=new Map;n.forEach(b=>{const c=String((b==null?void 0:b.date)??"");c&&s.set(c,{hours:Number((b==null?void 0:b.total_hours)??(b==null?void 0:b.hours)??0)||0,events:Number((b==null?void 0:b.events_count)??(b==null?void 0:b.events)??0)||0})});const l=(v=e==null?void 0:e.charts)==null?void 0:v.perDay,d=Array.isArray(l==null?void 0:l.labels)?l.labels:[],p=Array.isArray(l==null?void 0:l.data)?l.data:[];d.forEach((b,c)=>{const f=String(b??"");!f||s.has(f)||s.set(f,{hours:Number(p[c]??0)||0,events:0})});const u=[];for(let b=0;b<7;b++){const c=Mo(a,b);if(c.getTime()>o.getTime())break;const f=Y0(c),g=s.get(f);u.push({date:f,label:X0(f),hours:(g==null?void 0:g.hours)??0,events:(g==null?void 0:g.events)??0,isToday:f===r})}return u}function Z0(e){const t=e.getFullYear(),a=String(e.getMonth()+1).padStart(2,"0"),o=String(e.getDate()).padStart(2,"0");return`${t}-${a}-${o}`}function Y0(e){const t=e.getUTCFullYear(),a=String(e.getUTCMonth()+1).padStart(2,"0"),o=String(e.getUTCDate()).padStart(2,"0");return`${t}-${a}-${o}`}function X0(e){const t=Nt(e);return t?["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][t.getUTCDay()]||e.slice(5):e.slice(5)||e}function Q0(e,t){if(t==="category_and_calendar_goals")return Array.isArray(e.groups)?e.groups:[];if(t!=="calendar_goals")return[];const a=e!=null&&e.calendarTodayHours&&typeof e.calendarTodayHours=="object"?e.calendarTodayHours:{},o=Array.isArray(e==null?void 0:e.calendars)?e.calendars:[],r=new Map,n=new Map;return o.forEach(s=>{const l=String((s==null?void 0:s.id)??"").trim();l&&(n.set(l,String((s==null?void 0:s.displayname)??(s==null?void 0:s.name)??l)),r.set(l,typeof(s==null?void 0:s.color)=="string"?s.color:void 0))}),Object.entries(a).map(([s,l])=>{const d=Number(l??0);return!Number.isFinite(d)||d<=0?null:{id:s,label:n.get(s)||s,todayHours:d,color:r.get(s)}}).filter(Boolean).sort((s,l)=>Number((l==null?void 0:l.todayHours)??0)-Number((s==null?void 0:s.todayHours)??0))}const ew={component:xu,defaultLayout:{width:"half",height:"l",order:9},heightMode:"auto",label:"Today's time summary",category:"Time",baseTitle:"Today's time summary",configurable:!0,defaultOptions:j0(),controls:[{key:"defaultView",label:"Default view",type:"select",options:[{value:"auto",label:"Auto"},{value:"daily",label:"Daily"},{value:"calendars",label:"Calendars"},{value:"categories",label:"Categories"}]},{key:"showDailyKpis",label:"Daily KPIs",type:"toggle"},{key:"showWeekMiniChart",label:"Week mini chart",type:"toggle"},{key:"showEmptyLanes",label:"Show empty lanes",type:"toggle"},{key:"maxLanes",label:"Max lanes",type:"number",min:1,max:12,step:1}],buildProps:(e,t)=>Cu(e,t,{title:"Today's time summary",includeHistory:!1,showOverview:!0,showLookback:!1,showDelta:!1,showRangeInTitle:!1})},tw={component:xu,defaultLayout:{width:"half",height:"l",order:19},heightMode:"auto",label:yi,category:"Time",baseTitle:yi,configurable:!0,defaultOptions:_u(),controls:[z0,{key:"showHistoryCoreMetrics",label:"History core metrics",type:"toggle"},{key:"historyView",label:"History layout",type:"select",options:[{value:"timeline",label:"Timeline"},{value:"accordion",label:"Accordion"}]},{key:"showActivityDetails",label:"Activity details",type:"toggle"},{key:"showDelta",label:"Show delta line",type:"toggle"},...R0],buildProps:(e,t)=>Cu(e,t,{title:yi,includeHistory:!0,showOverview:!1,showLookback:!0,showDelta:!0,showRangeInTitle:!0})};_u();function aw(e){const t=Array.isArray(e.perDaySeriesByOffset)?e.perDaySeriesByOffset:[];if(!t.length)return[];const a=Array.isArray(e.hodByOffset)?e.hodByOffset:[],o=Array.isArray(e.summaryByOffset)?e.summaryByOffset:[],r=new Map;t.forEach(u=>{const v=Number((u==null?void 0:u.offset)??0);Number.isFinite(v)&&r.set(v,u)});const n=new Map;a.forEach(u=>{const v=Number((u==null?void 0:u.offset)??0);Number.isFinite(v)&&n.set(v,u)});const s=new Map;o.forEach(u=>{const v=Number((u==null?void 0:u.offset)??0);Number.isFinite(v)&&s.set(v,u)});const l=Math.max(0,Math.min(6,Math.floor(e.lookbackWeeks)-1));if(l<=0)return[];const d=Fn(t).map(u=>Number((u==null?void 0:u.offset)??0)).filter(u=>Number.isFinite(u)&&u>0&&u<=l),p=new Map;return e.calendarGroups.forEach(u=>{const v=String((u==null?void 0:u.id)??"").trim();v&&p.set(v,String((u==null?void 0:u.label)??v))}),e.targetsConfig.categories.forEach(u=>{const v=String((u==null?void 0:u.id)??"").trim();v&&!p.has(v)&&p.set(v,String((u==null?void 0:u.label)??v))}),d.map(u=>{const v=r.get(u);if(!v)return null;const b=rw(v),c=s.get(u),f=n.get(u),g=va(b.totalHours),T=Number((c==null?void 0:c.events)??(c==null?void 0:c.eventsCount)??0)||0,S=Number((c==null?void 0:c.overlap_events)??(c==null?void 0:c.overlapEvents)??0)||0,$=Number((c==null?void 0:c.longest_session)??(c==null?void 0:c.longestSession)??0)||0,C=Su((c==null?void 0:c.earliest_start)??(c==null?void 0:c.earliestStart)),H=Su((c==null?void 0:c.latest_end)??(c==null?void 0:c.latestEnd)),O=f?nw(f,g):null,I=b.activeDays,_=va(wi(b.filteredTotals(e.mode))),k=va(ki(b.filteredTotals(e.mode))),m=T>0?va(g/T):0,w=va(wi(b.filteredWorkdayTotals(e.mode))),D=va(ki(b.filteredWorkdayTotals(e.mode))),R=va(wi(b.filteredWeekendTotals(e.mode))),L=va(ki(b.filteredWeekendTotals(e.mode))),Z=(O==null?void 0:O.weekendShare)??b.weekendShare,K=sw(b.calendarTotals,g),Y=iw({calendarTotals:b.calendarTotals,categoryLabelById:p,categoryColorMap:e.categoryColorMap,calendarCategoryMap:e.calendarCategoryMap,targetsConfig:e.targetsConfig}),le=lw({totalHours:g,calendarTotals:b.calendarTotals,calendarCategoryMap:e.calendarCategoryMap,targetsConfig:e.targetsConfig});return{offset:u,label:Pn({offset:u,from:v==null?void 0:v.from,to:v==null?void 0:v.to},e.rangeMode),rangeStart:String((v==null?void 0:v.from)??""),rangeEnd:String((v==null?void 0:v.to)??""),totalHours:g,avgDay:_,avgEvent:m,medianDay:k,busiest:b.busiest,workdayAvg:w,workdayMedian:D,weekendAvg:R,weekendMedian:L,weekendShare:Z,activeCalendars:b.activeCalendars,calendarSummary:K,topCategory:Y,balanceIndex:le,activity:{events:T,activeDays:I,typicalStart:(O==null?void 0:O.typicalStart)??null,typicalEnd:(O==null?void 0:O.typicalEnd)??null,weekendShare:(O==null?void 0:O.weekendShare)??null,eveningShare:(O==null?void 0:O.eveningShare)??null,earliestStart:C,latestEnd:H,overlapEvents:S,longestSession:va($),lastDayOff:b.lastDayOff,lastHalfDayOff:b.lastHalfDayOff}}}).filter(Boolean)}function ow(e,t){const a=JSON.parse(JSON.stringify(e));return t==="month"&&(a.totalHours=Va(a.totalHours),a.categories=a.categories.map(o=>({...o,targetHours:Va(o.targetHours)}))),a}function rw(e){const t=Array.isArray(e==null?void 0:e.labels)?e.labels.map(f=>String(f??"")):[],a=Array.isArray(e==null?void 0:e.series)?e.series:[],o=t.map((f,g)=>a.reduce((T,S)=>{var C;const $=Number(((C=S==null?void 0:S.data)==null?void 0:C[g])??0);return T+(Number.isFinite($)?Math.max(0,$):0)},0)),r=a.map(f=>{const g=String((f==null?void 0:f.id)??""),T=String((f==null?void 0:f.name)??(f==null?void 0:f.label)??g),S=Array.isArray(f==null?void 0:f.data)?f.data.reduce(($,C)=>{const H=Number(C??0);return $+(Number.isFinite(H)?Math.max(0,H):0)},0):0;return{id:g,name:T,total:va(S),color:f!=null&&f.color?String(f.color):void 0}}),n=o.reduce((f,g)=>f+g,0),s=r.filter(f=>f.total>0).length,l=(()=>{if(!t.length)return null;let f=-1,g=-1;return o.forEach((T,S)=>{T>f&&(f=T,g=S)}),g<0||f<=0?null:{date:t[g],hours:va(f)}})(),d=[],p=[];o.forEach((f,g)=>{const T=dw(t[g]);T!=null&&(T===0||T===6?p.push(f):d.push(f))});const u=n>0?Fr(p.reduce((f,g)=>f+g,0)/n*100):null,{lastDayOff:v,lastHalfDayOff:b}=cw(t,o),c=o.filter(f=>f>.01).length;return{labels:t,totals:o,totalHours:n,activeCalendars:s,busiest:l,workdayTotals:d,weekendTotals:p,weekendShare:u,lastDayOff:v,lastHalfDayOff:b,activeDays:c,filteredTotals:f=>f==="active"?o.filter(g=>g>0):o,filteredWorkdayTotals:f=>f==="active"?d.filter(g=>g>0):d,filteredWeekendTotals:f=>f==="active"?p.filter(g=>g>0):p,calendarTotals:r}}function nw(e,t){const a=Array.isArray(e==null?void 0:e.dows)?e.dows.map(c=>String(c??"")):[],o=Array.isArray(e==null?void 0:e.matrix)?e.matrix:[],r=new Map;a.forEach((c,f)=>{const g=Array.isArray(o[f])?o[f]:[];r.set(c,g.map(T=>Number(T??0)))});const n=Array.from({length:24},(c,f)=>Array.from(r.values()).reduce((g,T)=>g+Number(T[f]??0),0)),s=.25;let l=null,d=null;for(let c=0;c<24;c+=1)if(n[c]>=s){l=`${String(c).padStart(2,"0")}:00`;break}for(let c=23;c>=0;c-=1)if(n[c]>=s){d=`${String(c+1).padStart(2,"0")}:00`;break}const p=(r.get("Sat")||[]).reduce((c,f)=>c+Number(f??0),0)+(r.get("Sun")||[]).reduce((c,f)=>c+Number(f??0),0);let u=0;r.forEach(c=>{for(let f=18;f<24;f+=1)u+=Number(c[f]??0)});const v=t>0?Fr(p/t*100):null,b=t>0?Fr(u/t*100):null;return{typicalStart:l,typicalEnd:d,weekendShare:v,eveningShare:b}}function sw(e,t){return t<=0?"":e.slice().sort((o,r)=>r.total-o.total).filter(o=>o.total>0).slice(0,3).map(o=>`${o.name} ${Fr(o.total/t*100)}%`).join(", ")}function iw(e){var l;const t=new Map;if(e.calendarTotals.forEach(d=>{var u;const p=String(((u=e.calendarCategoryMap)==null?void 0:u[d.id])??"");p&&t.set(p,(t.get(p)||0)+d.total)}),!t.size)return null;let a="",o=-1;if(t.forEach((d,p)=>{d>o&&(o=d,a=p)}),!a)return null;const r=e.targetsConfig.categories.find(d=>String(d.id)===a),n=Number((r==null?void 0:r.targetHours)??0)||0,s=n>0?Fr(o/n*100):0;return{label:e.categoryLabelById.get(a)||a,actualHours:va(o),targetHours:va(n),percent:s,color:(l=e.categoryColorMap)==null?void 0:l[a]}}function lw(e){var o,r;if(e.totalHours<=0)return null;const t=((r=(o=e.targetsConfig.balance)==null?void 0:o.index)==null?void 0:r.basis)||"category";if(t==="off")return null;const a={};if(t==="calendar")e.calendarTotals.forEach(n=>{n.total<=0||(a[n.id]=n.total/e.totalHours)});else{const n=new Map;e.calendarTotals.forEach(s=>{var d;const l=String(((d=e.calendarCategoryMap)==null?void 0:d[s.id])??"");l&&n.set(l,(n.get(l)||0)+s.total)}),n.forEach((s,l)=>{s<=0||(a[l]=s/e.totalHours)})}return Object.keys(a).length?P0({shares:a,targets:e.targetsConfig.categories,basis:t}):null}function wi(e){return e.length?e.reduce((t,a)=>t+a,0)/e.length:0}function ki(e){if(!e.length)return 0;const t=[...e].sort((o,r)=>o-r),a=Math.floor(t.length/2);return t.length%2?t[a]:(t[a-1]+t[a])/2}function dw(e){if(!e)return null;const t=Nt(e);return t?t.getUTCDay():null}function cw(e,t){let a=null,o=null;const r=4;for(let n=e.length-1;n>=0;n-=1){const s=t[n]??0;if(!a&&s<=.01&&(a=e[n]),!o&&s>.01&&s<=r&&(o=e[n]),a&&o)break}return{lastDayOff:a,lastHalfDayOff:o}}function Fr(e){return Math.round(e*10)/10}function va(e){return Math.round(e*100)/100}function Su(e){if(e==null)return null;const t=String(e).trim();return t||null}let Tu=null;const uw={tabs:[{id:"tab-1",label:"Overview",widgets:[]}],defaultTabId:"tab-1"},gw={tabs:[{id:"tab-1",label:"Overview",widgets:[{id:"widget-targets_v2-1",type:"targets_v2",options:{showLegend:!0,showDelta:!0,showForecast:!0,showPace:!0,neverFinishedMode:!1,showToday:!0,showTotalDelta:!0,showNeedPerDay:!0,showCategoryBlocks:!0,badges:!0,includeWeekendToggle:!0,includeZeroDaysInStats:!1,useLocalConfig:!1,localConfig:null},layout:{width:"half",height:"l",order:10},version:1},{id:"widget-time_summary_overview-2",type:"time_summary_overview",options:{defaultView:"auto",showDailyKpis:!0,showWeekMiniChart:!0,showEmptyLanes:!0,maxLanes:4,showActivityNote:!0,showRangeInTitle:!1,heightMode:"auto"},layout:{width:"half",height:"l",order:20},version:1},{id:"widget-balance_index-4",type:"balance_index",options:{showTrend:!0,showMessages:!0,showConfig:!1,indexBasis:"category",noticeAbove:.15,noticeBelow:.15,warnAbove:.3,warnBelow:.3,warnIndex:.6,messageDensity:"normal",trendColor:"#2563EB",showCurrent:!0,labelMode:"period",reverseOrder:!1},layout:{width:"half",height:"m",order:30},version:1},{id:"widget-dayoff_trend-5",type:"dayoff_trend",options:{reverseOrder:!1,labelMode:"period",interpretation:"more_off_positive",toneLowColor:"#DC2626",toneHighColor:"#16A34A"},layout:{width:"half",height:"s",order:40},version:1},{id:"widget-chart_pie-7",type:"chart_pie",options:{showLegend:!0,showLabels:!0,compact:!1,heightMode:"auto",filterMode:"calendar",filterIds:[]},layout:{width:"half",height:"m",order:45},version:1},{id:"widget-calendar_table-8",type:"calendar_table",options:{calendarFilter:[],compact:!1},layout:{width:"full",height:"l",order:56},version:1},{id:"widget-chart_stacked-9",type:"chart_stacked",options:{showLegend:!0,showLabels:!1,compact:!1,forecastMode:"total",heightMode:"auto",filterMode:"calendar",filterIds:[]},layout:{width:"full",height:"l",order:57},version:1},{id:"widget-chart_per_day-10",type:"chart_per_day",options:{showLabels:!1,compact:!1,reverseOrder:!1,forecastMode:"total",filterMode:"calendar",filterIds:[]},layout:{width:"half",height:"xl",order:58},version:1},{id:"widget-chart_dow-11",type:"chart_dow",options:{showLabels:!0,compact:!1,reverseOrder:!1,forecastMode:"total",filterMode:"calendar",filterIds:[]},layout:{width:"half",height:"m",order:58.5},version:1},{id:"widget-chart_hod-12",type:"chart_hod",options:{showHint:!1,showLegend:!0,lookbackMode:"overlay",compact:!1,reverseOrder:!1},layout:{width:"full",height:"l",order:59},version:1},{id:"widget-category_mix_trend-standard",type:"category_mix_trend",options:{density:"normal",labelMode:"period",colorMode:"hybrid",trendIndicator:"none",squareCells:!1,reverseOrder:!1,showHeader:!0,showBadge:!0,shareLowColor:"#E2E8F0",shareHighColor:"#60A5FA",toneLowColor:"#E11D48",toneHighColor:"#10B981"},layout:{width:"full",height:"m",order:79},version:1}]}],defaultTabId:"tab-1"},pw={tabs:[{id:"tab-1",label:"Overview",widgets:[{id:"widget-targets_v2-1",type:"targets_v2",options:{showLegend:!0,showDelta:!0,showForecast:!0,showPace:!0,neverFinishedMode:!1,showToday:!0,showTotalDelta:!0,showNeedPerDay:!0,showCategoryBlocks:!0,badges:!0,includeWeekendToggle:!0,includeZeroDaysInStats:!1,useLocalConfig:!1,localConfig:null,heightMode:"auto",scale:"md"},layout:{width:"half",height:"xl",order:10},version:1},{id:"widget-time_summary_overview-2",type:"time_summary_overview",options:{defaultView:"auto",showDailyKpis:!0,showWeekMiniChart:!0,showEmptyLanes:!1,maxLanes:4,showActivityNote:!0,showRangeInTitle:!1,heightMode:"auto",scale:"md"},layout:{width:"half",height:"xl",order:20},version:1},{id:"widget-balance_index-4",type:"balance_index",options:{showTrend:!0,showMessages:!0,showConfig:!1,indexBasis:"both",noticeAbove:.15,noticeBelow:.15,warnAbove:.3,warnBelow:.3,warnIndex:.6,messageDensity:"many",trendColor:"#2563EB",showCurrent:!0,labelMode:"period",reverseOrder:!1,scale:"xl"},layout:{width:"full",height:"l",order:40},version:1},{id:"widget-dayoff_trend-5",type:"dayoff_trend",options:{reverseOrder:!1,labelMode:"period",interpretation:"more_off_positive",toneLowColor:"#DC2626",toneHighColor:"#16A34A",ignoreCalendarIds:[],ignoreCategoryIds:[],scale:"xl",dense:!0},layout:{width:"full",height:"m",order:60},version:1},{id:"widget-category_mix_trend-1784279284521",type:"category_mix_trend",options:{density:"normal",labelMode:"period",colorMode:"hybrid",trendIndicator:"none",squareCells:!1,reverseOrder:!1,showHeader:!0,showBadge:!0,shareLowColor:"#E2E8F0",shareHighColor:"#60A5FA",toneLowColor:"#E11D48",toneHighColor:"#10B981"},layout:{width:"full",height:"m",order:70},version:1}]},{id:"tab-mjp2ziuq",label:"Table",widgets:[{id:"widget-calendar_table-1768128709761",type:"calendar_table",options:{calendarFilter:[],compact:!1,scale:"xl"},layout:{width:"full",height:"xl",order:20},version:1}]},{id:"tab-mk4vuh6c",label:"Charts",widgets:[{id:"widget-chart_pie-112jzy",type:"chart_pie",options:{showLegend:!0,showLabels:!0,compact:!1,filterMode:"category",filterIds:[]},layout:{width:"half",height:"xl",order:58},version:1},{id:"widget-chart_pie-1768128829168",type:"chart_pie",options:{showLegend:!0,showLabels:!0,compact:!1,filterMode:"calendar",filterIds:[]},layout:{width:"half",height:"xl",order:57},version:1},{id:"widget-chart_stacked-2ttp7b",type:"chart_stacked",options:{showLegend:!0,showLabels:!1,compact:!1,forecastMode:"total",filterMode:"calendar",filterIds:[]},layout:{width:"full",height:"xl",order:59},version:1},{id:"widget-chart_per_day-5tpozm",type:"chart_per_day",options:{showLabels:!1,compact:!1,reverseOrder:!1,forecastMode:"total",filterMode:"calendar",filterIds:[]},layout:{width:"half",height:"xl",order:59.5},version:1},{id:"widget-chart_dow-za4squ",type:"chart_dow",options:{showLabels:!0,compact:!1,reverseOrder:!1,forecastMode:"total",filterMode:"calendar",filterIds:[]},layout:{width:"half",height:"xl",order:59.8},version:1},{id:"widget-chart_hod-9rg0fn",type:"chart_hod",options:{showHint:!0,showLegend:!0,lookbackMode:"overlay",compact:!0,reverseOrder:!1},layout:{width:"full",height:"l",order:60},version:1}]},{id:"tab-mk4w4rau",label:"Workspace",widgets:[{id:"widget-deck_stats-1768297160410",type:"deck_stats",options:{scope:"all",mineMode:"assignee",includeArchived:!0,includeCompleted:!0,metrics:["open_now","overdue_now","mine_open","created_in_range","completed_in_range","due_in_range"]},layout:{width:"quarter",height:"xl",order:78},version:1},{id:"widget-deck_cards-1768297173746",type:"deck_cards",options:{allowMine:!0,includeArchived:!0,includeCompleted:!0,autoScroll:!1,intervalSeconds:5,showCount:!0,minFilterCount:1,maxVisible:8,autoTagsEnabled:!0,compactList:!1,customFilters:[],filters:["focus_all","focus_mine","backlog_all","backlog_mine","all"],defaultFilter:"focus_all",mineMode:"assignee",heightMode:"fixed"},layout:{width:"half",height:"xl",order:89},version:1},{id:"widget-calendar_stats-1784281692933",type:"calendar_stats",options:{metrics:["tracked_hours","planned_later","event_count","average_event_duration"]},layout:{width:"quarter",height:"xl",order:99},version:1}]}],defaultTabId:"tab-1"};function $u(e){const t=vw(e);t&&(Tu=t)}function Mu(e){const t=Tu;if(!t)return[];const a=t[e]||[];return hw(a)}const fw={total_only:["targets_v2","time_summary_overview","dayoff_trend"],total_plus_categories:["targets_v2","time_summary_overview","dayoff_trend","chart_pie","calendar_table","chart_stacked"]};function bw(e){const t=xi(gw),a=e?fw[e]:null;return a?{...t,tabs:t.tabs.map(o=>({...o,widgets:o.widgets.filter(r=>a.includes(r.type))}))}:t}function Au(e,t){return e==="quick"?xi(uw):e==="standard"?bw(t):e==="pro"?xi(pw):{tabs:[{id:"tab-1",label:"Overview",widgets:Mu(e)}],defaultTabId:"tab-1"}}function vw(e){if(!e||typeof e!="object")return null;const t=e,a=["quick","standard","pro"],o={};for(const r of a){const n=t[r];o[r]=Array.isArray(n)?n:[]}return o}function hw(e){return JSON.parse(JSON.stringify(e||[]))}function xi(e){return JSON.parse(JSON.stringify(e))}const mw=new Set(["chart_pie","chart_stacked","chart_per_day","chart_dow"]);function yw(e){return Array.isArray(e)?e.map(t=>String(t??"").trim()).filter(Boolean):typeof e=="string"?e.split(",").map(t=>t.trim()).filter(Boolean):[]}function ww(e,t){if(!mw.has(e))return t;const a=t.scope!=null||t.calendarFilter!=null||t.categoryFilter!=null,o=t.filterMode!=null,r=t.filterIds!=null;if(!a&&!o&&!r)return t;const n={...t},s=n.filterMode==="calendar"||n.scope==="calendar"?"calendar":"category";if(o||(n.filterMode=s),!r){const l=s==="calendar"?n.calendarFilter:n.categoryFilter;n.filterIds=yw(l)}return delete n.scope,delete n.calendarFilter,delete n.categoryFilter,n}const Du=["open_all","open_mine","done_all","done_mine","archived_all","archived_mine","due_all","due_mine","due_today_all","due_today_mine","created_today_all","created_today_mine"];function kw(e,t){if(e!=="deck_cards")return t;const a=Array.isArray(t.filters)?t.filters:[];return t.defaultFilter==="open_all"&&a.length===Du.length&&a.every((r,n)=>r===Du[n])?{...t,autoScroll:!1,maxVisible:8,filters:["focus_all","focus_mine","backlog_all","backlog_mine","all"],defaultFilter:"focus_all"}:t}const Pr={time_summary_overview:ew,time_summary_lookback:tw,targets_v2:I0,balance_index:L1,dayoff_trend:c0,category_mix_trend:N1,chart_pie:J1,chart_stacked:Y1,chart_per_day:K1,chart_dow:j1,chart_hod:U1,calendar_table:e0,calendar_stats:r0,deck_cards:A0,deck_stats:L0};function Lu(e,t,a=!1){if(!Array.isArray(e))return t;const o=[],r=(n,s,l,d,p)=>{const u=Pr[n];if(!u)return;const v=String((s==null?void 0:s.id)??"")||`widget-${n}-${l+1}`,b=(s==null?void 0:s.layout)??{},c=b.width==="quarter"||b.width==="half"?b.width:"full",f=b.height==="s"||b.height==="l"||b.height==="xl"?b.height:"m",g=Number(b.order??0),T=Number.isFinite(g)?g:0;let $={...u.defaultOptions||{},...s!=null&&s.options&&typeof s.options=="object"?s.options:{}};$.heightMode==null&&((s==null?void 0:s.heightMode)==="auto"||(s==null?void 0:s.heightMode)==="fixed")&&($.heightMode=s.heightMode),$.scale==null&&$.textSize!=null&&($.scale=$.textSize,delete $.textSize),$=ww(n,$),$=kw(n,$),o.push({id:v,type:n,options:$,layout:{width:c,height:f,order:T},version:Number((s==null?void 0:s.version)??1)||1})};return e.forEach((n,s)=>{const l=String((n==null?void 0:n.type)??"");if(l){if(l==="time_summary_v2"){const d=String((n==null?void 0:n.id)??"")||`widget-time_summary_overview-${s+1}`;r("time_summary_overview",{...n,id:d},s);return}r(l,n,s)}}),o.length?o:a?[]:t}function Eu(){return $w("standard")}function Nu(e){return e==="total_only"?"single_goal":e==="total_plus_categories"?"calendar_goals":e==="full_granular"?"category_and_calendar_goals":null}function Iu(e,t){return e==="targets_v2"?t?{showCategoryBlocks:t!=="single_goal"}:{showCategoryBlocks:!0}:e==="time_summary_lookback"?t?{showCalendarSummary:t!=="single_goal",showTopCategory:t==="category_and_calendar_goals",showBalance:t==="category_and_calendar_goals"}:{showCalendarSummary:!0,showTopCategory:!0,showBalance:!0}:null}function xw(e,t,a){const o=Nu(t),r=Iu(e.type,o);if(!r)return e;const n=Nu(a),s=Iu(e.type,n);if(!s)return e;const l=e.options||{},d={...l};let p=!1;return Object.entries(r).forEach(([u,v])=>{const b=l[u],c=s[u];(b===void 0||b===c)&&b!==v&&(d[u]=v,p=!0)}),p?{...e,options:d}:e}function Ou(e,t,a){return(e||[]).map(o=>xw(o,t,a))}function _w(e,t,a){return{tabs:((e==null?void 0:e.tabs)||[]).map(o=>({...o,widgets:Ou(o.widgets||[],t,a)})),defaultTabId:(e==null?void 0:e.defaultTabId)||"tab-1"}}function Xo(e,t){const a=Au(e,t);return _w(a,t)}function Cw(e){return e==="total_only"?["category_mix_trend"]:e==="total_plus_categories"?["category_mix_trend"]:[]}function _i(e,t){var n;const a=new Set(Cw(t));if(!a.size)return e;const o=((e==null?void 0:e.tabs)||[]).map(s=>({...s,widgets:(s.widgets||[]).filter(l=>!a.has(String((l==null?void 0:l.type)??"")))})),r=o.some(s=>s.id===e.defaultTabId)?e.defaultTabId:((n=o[0])==null?void 0:n.id)||"tab-1";return{tabs:o,defaultTabId:r}}function Wr(e,t){var d,p,u,v;if(Array.isArray(e)){const b=Lu(e,((d=t.tabs[0])==null?void 0:d.widgets)||Eu()),c=((p=t.tabs[0])==null?void 0:p.id)||"tab-1";return{tabs:[{id:c,label:((u=t.tabs[0])==null?void 0:u.label)||"Overview",widgets:b}],defaultTabId:c}}if(!e||typeof e!="object")return t;const a=Array.isArray(e.tabs)?e.tabs:[],o=t.tabs||[],r=a.map((b,c)=>{var C,H;const f=String((b==null?void 0:b.id)??"").trim()||`tab-${c+1}`,g=String((b==null?void 0:b.label)??"").trim(),T=g?g.slice(0,48):`Tab ${c+1}`,S=((C=o[c])==null?void 0:C.widgets)||((H=o[0])==null?void 0:H.widgets)||Eu(),$=Lu(b==null?void 0:b.widgets,S,!0);return{id:f,label:T,widgets:$}}),n=r.length?r:o,s=String(e.defaultTabId??e.defaultTab??e.active??""),l=n.some(b=>b.id===s)?s:((v=n[0])==null?void 0:v.id)||"tab-1";return{tabs:n,defaultTabId:l}}function Sw(e,t){return!!t.isInitialLoading}function Tw(e,t){var l;const a=Pr[e.type];if(!a)return null;const o=a.buildProps(e,t)||{},r=Sw(e,t),n=(l=e.options)==null?void 0:l.heightMode,s=n==="auto"||n==="fixed"?n:a.heightMode||"fixed";return{component:a.component,props:o,loading:r,heightMode:s}}function $w(e,t){return Ou(Mu(e),t)}async function Mw(e){const t=Date.parse(e.from),a=Date.parse(e.to);if(!Number.isFinite(t)||!Number.isFinite(a)||t>a)return[];const o=e.includeCompleted!==!1,r=e.includeArchived!==!1,s=await Kn(qn("/apps/opsdash/overview/deck/cards",{from:e.from,to:e.to,includeArchived:r?1:0,includeCompleted:o?1:0}));if(s&&s.ok===!1)throw new Error(s.message||"deck_fetch_failed");return Array.isArray(s==null?void 0:s.cards)?s.cards:[]}async function Bu(){const t=await Kn(qn("/apps/opsdash/overview/deck/boards"));return t&&t.ok===!1?[]:Array.isArray(t==null?void 0:t.boards)?t.boards:[]}async function Aw(e){const a=await Kn(qn("/apps/opsdash/overview/deck/stacks",{boardId:e}));if(a&&a.ok===!1)throw new Error(a.message||"deck_stacks_fetch_failed");return Array.isArray(a==null?void 0:a.stacks)?a.stacks:[]}async function Dw(e,t){const a=await Kn(qn("/apps/opsdash/overview/deck/cards"),{method:"POST",body:JSON.stringify({title:e,stackId:t})});if(a&&a.ok===!1)throw new Error(a.message||"deck_card_create_failed")}async function Kn(e,t={}){const a={Accept:"application/json",...t.body?{"Content-Type":"application/json"}:{},...t.headers||{}},o=Ew();o&&(a.requesttoken=o);const r=await fetch(e,{...t,credentials:"same-origin",headers:a}),n=await r.text();if(!r.ok)throw new Error(`Deck request failed (${r.status})`);return n?JSON.parse(n):null}function qn(e,t){var l,d,p;const a=e.startsWith("/")?e:`/${e}`,o=t?Lw(t):"",r=typeof window<"u"?window:{};if(r.OC&&typeof r.OC.generateUrl=="function"){const u=r.OC.generateUrl(a);return o?`${u}?${o}`:u}const n=r.OC&&(r.OC.webroot||((d=(l=r.OC).getRootPath)==null?void 0:d.call(l)))||r._oc_webroot||"",s=typeof((p=r.location)==null?void 0:p.origin)=="string"?r.location.origin:"";return n?o?`${n}${a}?${o}`:`${n}${a}`:s?o?`${s}${a}?${o}`:`${s}${a}`:o?`${a}?${o}`:a}function Lw(e){const t=new URLSearchParams;return Object.entries(e).forEach(([a,o])=>{o!=null&&t.append(a,String(o))}),t.toString()}function Ew(){var a;const e=typeof window<"u"?window:{},t=((a=e.OC)==null?void 0:a.requestToken)||e.oc_requesttoken;return typeof t=="string"?t:void 0}const Nw={load:"/apps/opsdash/overview/load",loadData:"/apps/opsdash/overview/load",persist:"/apps/opsdash/overview/persist",notes:"/apps/opsdash/overview/notes",notesSave:"/apps/opsdash/overview/notes",presetsList:"/apps/opsdash/overview/presets",presetsSave:"/apps/opsdash/overview/presets",presetsLoad:"/apps/opsdash/overview/presets",presetsDelete:"/apps/opsdash/overview/presets",ping:"/apps/opsdash/overview/ping",reportTestSend:"/apps/opsdash/overview/report/test-send"};function Iw(){var t,a;const e=typeof window<"u"?window:{};return e.OC&&(e.OC.webroot||((a=(t=e.OC).getRootPath)==null?void 0:a.call(t)))||e._oc_webroot||""}function Hu(){const e=x(()=>Iw());function t(s,l){const d=typeof window<"u"?window:{},p=Nw[s];if(s==="presetsLoad"||s==="presetsDelete"){const u=`${p}/${encodeURIComponent(String(l??""))}`;return d.OC&&typeof d.OC.generateUrl=="function"?d.OC.generateUrl(u):`${e.value}${u}`}return d.OC&&typeof d.OC.generateUrl=="function"?d.OC.generateUrl(p):`${e.value}${p}`}function a(s){const l=new URLSearchParams;return Object.entries(s||{}).forEach(([d,p])=>{Array.isArray(p)?p.forEach(u=>l.append(d,String(u))):p!=null&&l.set(d,String(p))}),l.toString()}async function o(s,l){const d=a(l),p=d?`${s}${s.includes("?")?"&":"?"}${d}`:s,u=await fetch(p,{method:"GET",credentials:"same-origin"});if(!u.ok)throw new Error(`HTTP ${u.status}`);return await u.json()}async function r(s,l){var b;const d=typeof window<"u"?window:{},p=((b=d.OC)==null?void 0:b.requestToken)||d.oc_requesttoken||"",u={"Content-Type":"application/json"};p&&(u.requesttoken=p);const v=await fetch(s,{method:"POST",credentials:"same-origin",headers:u,body:JSON.stringify(l||{})});if(!v.ok)throw new Error(`HTTP ${v.status}`);return await v.json()}async function n(s){var b;const l=typeof window<"u"?window:{},d=((b=l.OC)==null?void 0:b.requestToken)||l.oc_requesttoken||"",p={};d&&(p.requesttoken=d);const u=await fetch(s,{method:"DELETE",credentials:"same-origin",headers:p});if(!u.ok)throw new Error(`HTTP ${u.status}`);const v=await u.text();return v?JSON.parse(v):{}}return{route:t,getJson:o,postJson:r,deleteJson:n,root:e}}function Ow(e){return e==="total_only"||e==="total_plus_categories"||e==="full_granular"}function Bw(e){const{props:t,emit:a}=e,{route:o,postJson:r}=Hu(),n=["intro","strategy","calendars","deck","goals","preferences","dashboard","review"],s=oe(0),l=oe("total_plus_categories"),d=oe(t.initialDashboardMode||"standard"),p=oe(t.hasExistingConfig?"existing":"new"),u=oe(t.hasExistingConfig?"existing":"quick"),v=oe(!1),b=oe(""),c=oe([]),f=oe([]),g=oe({}),T=oe({}),S=oe("auto"),$=oe(8),C=oe(null),H=oe(3),O=oe(pa(t.initialDeckSettings??Do())),I=oe({...t.initialReportingConfig??Ao()}),_=oe([]),k=oe(!1),m=oe(""),w=oe(!1),D=oe(""),R=oe([]),L=oe(null),Z=x(()=>{const q=pe=>_i(Xo(pe,l.value),l.value).tabs.reduce((Te,Le)=>Te+Le.widgets.length,0),X=pe=>`${q(pe)} widgets`;return[{id:"quick",title:"Empty",subtitle:"Start from a mostly blank dashboard and grow it later.",description:"Start from a mostly blank dashboard and grow it later.",badge:"manual build",widgets:X("quick")},{id:"standard",title:"Standard",subtitle:"Balanced default with enough structure to be useful immediately.",description:"Balanced default with enough structure to be useful immediately.",badge:"recommended",widgets:X("standard")},{id:"pro",title:"Advanced",subtitle:"Show more widgets and analysis from the first load.",description:"Show more widgets and analysis from the first load.",badge:"power users",widgets:X("pro")}]}),K=[{id:"work_hobby_sport",title:"Work / Hobby / Sport",description:"Simple split for work, play, and fitness.",categories:[{id:"work",label:"Work",targetHours:32,includeWeekend:!1,paceMode:"days_only",color:"#2563EB"},{id:"hobby",label:"Hobby",targetHours:6,includeWeekend:!0,paceMode:"days_only",color:"#F97316"},{id:"sport",label:"Sport",targetHours:4,includeWeekend:!0,paceMode:"days_only",color:"#10B981"}],colors:["#2563EB","#F97316","#10B981"]},{id:"focus_personal_recovery",title:"Focus / Personal / Recovery",description:"Balance deep work, personal time, and rest.",categories:[{id:"focus",label:"Focus",targetHours:30,includeWeekend:!1,paceMode:"days_only",color:"#6366F1"},{id:"personal",label:"Personal",targetHours:8,includeWeekend:!0,paceMode:"days_only",color:"#EC4899"},{id:"recovery",label:"Recovery",targetHours:6,includeWeekend:!0,paceMode:"days_only",color:"#14B8A6"}],colors:["#6366F1","#EC4899","#14B8A6"]},{id:"client_internal_learning",title:"Client / Internal / Learning / Admin / Recovery",description:"A broader split for delivery, upkeep, admin work, and recovery.",categories:[{id:"client",label:"Client",targetHours:28,includeWeekend:!1,paceMode:"days_only",color:"#0EA5E9"},{id:"internal",label:"Internal",targetHours:8,includeWeekend:!1,paceMode:"days_only",color:"#F59E0B"},{id:"learning",label:"Learning",targetHours:4,includeWeekend:!0,paceMode:"days_only",color:"#22C55E"},{id:"admin",label:"Admin",targetHours:3,includeWeekend:!1,paceMode:"days_only",color:"#A855F7"},{id:"recovery",label:"Recovery",targetHours:3,includeWeekend:!0,paceMode:"days_only",color:"#EC4899"}],colors:["#0EA5E9","#F59E0B","#22C55E","#A855F7","#EC4899"]}],Y=x(()=>{if(!O.value.enabled)return[];const q=new Set(O.value.hiddenBoards||[]);return _.value.filter(X=>!q.has(X.id))}),le=x(()=>{if(!O.value.enabled)return"Deck tab disabled";if(k.value)return"Deck tab enabled — loading boards…";if(m.value)return"Deck tab enabled — open Deck to finish setup.";if(!_.value.length)return"Deck tab enabled — create a Deck board to see cards.";if(!Y.value.length)return"Deck tab enabled — all boards hidden";if(Y.value.length===_.value.length){const q=Y.value.length;return q===1?"Showing 1 board":`Showing all ${q} boards`}return Y.value.length===1?`Showing ${Y.value[0].title}`:Y.value.length===2?`Showing ${Y.value[0].title} and ${Y.value[1].title}`:`Showing ${Y.value.length} boards`}),J=x(()=>{if(!I.value.enabled)return"Recap disabled";const q=[];return["week","month"].forEach(X=>{const pe=I.value.modes[X];if(!(pe!=null&&pe.enabled))return;const Te=X==="week"?"Week":"Month",Le=pe.delivery==="checkpoint_final"?"checkpoint + final recap":"final recap";q.push(`${Te}: ${Le} @ ${pe.sendTimeLocal}`)}),q.length?q.join(" • "):"Recap enabled • no active modes"}),de=oe(null),B=x(()=>S.value==="auto"?t.systemTheme==="dark"?"dark":"light":S.value),G=x(()=>t.systemTheme==="dark"?"dark":"light"),A=["#2563EB","#F97316","#10B981","#A855F7","#EC4899","#14B8A6","#F59E0B","#6366F1","#0EA5E9","#65A30D"],V=x(()=>new Map(t.calendars.map(q=>[q.id,q]))),he=x(()=>c.value.map(q=>V.value.get(q)).filter(q=>!!q)),Me=x(()=>he.value.map(q=>q.id)),ae=x(()=>f.value.reduce((q,X)=>q+(Number.isFinite(X.targetHours)?X.targetHours:0),0)),U=x(()=>he.value.reduce((q,X)=>q+(Number(is(X.id))||0),0)),F=x(()=>{const q=new Set,X=pe=>{const Te=St(pe);Te&&q.add(Te)};return t.calendars.forEach(pe=>X(pe.color)),f.value.forEach(pe=>X(pe.color)),A.forEach(pe=>q.add(pe)),Array.from(q)}),j=Fc(),ce=x(()=>j.find(q=>q.id===l.value)??j[0]),fe=x(()=>ce.value.layers.categories),N=x(()=>ce.value.layers.calendars),P=x(()=>t.closable!==!1),re=x(()=>_i(Xo(d.value,l.value),l.value)),ge=x(()=>[...n]),ee=x(()=>ge.value[Math.min(s.value,ge.value.length-1)]),be=x(()=>s.value+1),ve=x(()=>ge.value.length),xe=x(()=>t.saving===!0),_e=x(()=>t.snapshotSaving===!0),ue=x(()=>t.snapshotNotice??null),Ee="opsdash-onboarding-lock";function Se(q){if(typeof document>"u")return;const X=document.body;X&&(q?(X.classList.add(Ee),X.dataset.opsdashOnboarding="1"):(X.classList.remove(Ee),delete X.dataset.opsdashOnboarding))}Oe(()=>t.visible,q=>{q&&(te(),it(),et().catch(X=>{console.error("[opsdash] onboarding history load failed",X)})),Se(q)},{immediate:!0}),Et(()=>{typeof document<"u"&&document.addEventListener("click",Ht),kt().catch(q=>{console.error("[opsdash] deck board load failed",q)}),et().catch(q=>{console.error("[opsdash] onboarding history load failed",q)})}),Ws(()=>{typeof document<"u"&&document.removeEventListener("click",Ht),Se(!1)});function te(q){mt();const X=q??(t.hasExistingConfig?"existing":"new");p.value=X,u.value=t.hasExistingConfig?X:"quick";const pe=X==="existing",Te=L.value;s.value=0,l.value=pe?(Te==null?void 0:Te.strategy)??"total_plus_categories":"total_plus_categories",d.value=pe?(Te==null?void 0:Te.dashboardMode)??"standard":"standard";const Le=pe?[...(Te==null?void 0:Te.selection)??[]]:[];c.value=Array.from(new Set(Le.filter(at=>t.calendars.some(ot=>ot.id===at)))),S.value=pe?(Te==null?void 0:Te.themePreference)??"auto":"auto",$.value=ea(pe?(Te==null?void 0:Te.allDayHours)??8:8),C.value=ct(pe?(Te==null?void 0:Te.totalHours)??null:null),H.value=$a(pe?(Te==null?void 0:Te.trendLookback)??3:3),T.value={},pe&&Object.entries((Te==null?void 0:Te.targetsWeek)??{}).forEach(([at,ot])=>{t.calendars.some(no=>no.id===at)&&(T.value[at]=ja(ot))}),O.value=pa(pe?(Te==null?void 0:Te.deckSettings)??Do():Do()),I.value={...pe?(Te==null?void 0:Te.reportingConfig)??Ao():Ao()},t.hasExistingConfig?(v.value=X==="new",b.value=""):(v.value=!1,b.value=""),Pe(),fe.value?f.value.length?C.value=ct(ae.value):C.value=null:l.value==="total_only"?C.value=ct(pe?(Te==null?void 0:Te.totalHours)??40:40):C.value===null&&pe&&(C.value=ct((Te==null?void 0:Te.totalHours)??40)),Je()}function se(q){p.value!==q&&te(q)}function me(q){if(u.value=q,q==="existing"){p.value!=="existing"&&te("existing");return}if(q==="new"){p.value!=="new"&&te("new");return}}function $e(q){v.value=q,q||(b.value="")}function Ae(q){b.value=q}function Pe(){var X;const q=L.value;if(!fe.value){f.value=[],g.value={},st();return}if(p.value==="existing"&&((X=q==null?void 0:q.categories)!=null&&X.length))f.value=Sa(q.categories),g.value={...q.assignments??{}};else{const pe=Pc(l.value,t.calendars,c.value);l.value==="full_granular"?f.value=K[0].categories.map((Te,Le)=>({id:String(Te.id||`cat_${Le}`),label:Te.label,targetHours:Te.targetHours,includeWeekend:Te.includeWeekend,paceMode:Te.paceMode,color:Te.color??null})):f.value=pe.categories.map(Te=>({...Te})),g.value={...pe.assignments}}l.value==="full_granular"&&f.value.length===0&&(f.value=K[0].categories.map((pe,Te)=>({id:String(pe.id||`cat_${Te}`),label:pe.label,targetHours:pe.targetHours,includeWeekend:pe.includeWeekend,paceMode:pe.paceMode,color:pe.color??null})),p.value!=="existing"&&(g.value={})),Ie(),st()}function Ie(){if(!fe.value||!f.value.length){g.value={};return}const q=new Set(f.value.map(pe=>pe.id)),X={};c.value.forEach(pe=>{const Te=g.value[pe];X[pe]=q.has(Te)?Te:""}),g.value=X}const Be=x(()=>Math.max(0,Math.min(6,R.value.length))),ze=x(()=>{const q=Be.value;return q<=0?0:Math.max(1,Math.min(q,H.value))}),dt=x(()=>{const q=ze.value;return q<=0?{enabled:!1,available:0,label:"No recent history available"}:{enabled:!0,available:Be.value,label:`Suggestions use the last ${q} ${q===1?"week":"weeks"} of available history.`}}),wt=x(()=>{const q=ze.value;if(q<=0)return{};const X={},pe=R.value.slice(0,q);return t.calendars.forEach(Te=>{const Le=pe.map(ot=>Number(ot.totals[Te.id]??0));if(!Le.length)return;const at=Le.reduce((ot,no)=>ot+no,0)/Le.length;at<=0||(X[Te.id]=Qe(at))}),X}),nt=x(()=>{const q={};return f.value.forEach(X=>{const pe=Me.value.reduce((Te,Le)=>g.value[Le]!==X.id?Te:Te+Number(wt.value[Le]??0),0);pe>0&&(q[X.id]=Qe(pe))}),q}),ft=x(()=>Me.value.reduce((q,X)=>q+Number(wt.value[X]??0),0)),Dt=x(()=>he.value.filter(q=>fe.value&&!g.value[q.id])),Bt=x(()=>{const q=Me.value.filter(at=>g.value[at]).length,X=Me.value.length-q,pe=ae.value,Te=U.value,Le=Qe(Te-pe);return{assigned:q,unassigned:X,calendarTotal:Te,categoryTotal:pe,delta:Le,totalsMatch:Math.abs(Le)<.01}}),ht=x(()=>Hn(l.value,t.calendars,c.value,fe.value?{categories:f.value,assignments:g.value}:void 0)),xt=x(()=>ce.value.title);function st(){var q;if(fe.value){C.value=ct(ae.value);return}if(l.value==="total_plus_categories"){const X=U.value;C.value=X>0?ct(X):C.value;return}C.value===null&&(C.value=p.value==="existing"?ct(((q=L.value)==null?void 0:q.totalHours)??40):null)}function mt(){var q;L.value={strategy:Ow(t.initialStrategy)?t.initialStrategy:"total_plus_categories",selection:[...t.initialSelection??[]],themePreference:t.initialThemePreference??"auto",allDayHours:ea(t.initialAllDayHours??8),totalHours:ct(t.initialTotalHours??null),trendLookback:$a(((q=t.initialTargetsConfig)==null?void 0:q.balanceTrendLookback)??3),deckSettings:pa(t.initialDeckSettings??Do()),reportingConfig:{...t.initialReportingConfig??Ao()},dashboardMode:t.initialDashboardMode||"standard",targetsWeek:{...t.initialTargetsWeek??{}},categories:Sa(t.initialCategories),assignments:{...t.initialAssignments??{}}}}function Je(){if(!t.startStep)return;const q=ge.value.indexOf(t.startStep);q>=0&&(s.value=q)}function Ue(q){const X=ge.value.indexOf(q);X>=0&&(s.value=X)}function rt(q){switch(q){case"intro":return"Intro";case"strategy":return"Strategy";case"calendars":return"Calendars";case"deck":return"Deck";case"goals":return"Goals";case"preferences":return"Preferences";case"dashboard":return"Dashboard";case"review":return"Review";default:return q}}Oe(l,()=>{Pe(),s.value=Math.min(s.value,ge.value.length-1)}),Oe(ge,q=>{s.value>=q.length&&(s.value=Math.max(q.length-1,0))}),Oe(()=>t.startStep,Je),Oe(fe,()=>{st()}),Oe(ae,q=>{fe.value&&(C.value=ct(q))}),Oe(U,q=>{!fe.value&&l.value==="total_plus_categories"&&q>0&&(C.value=ct(q))}),Oe(ee,q=>{q!=="goals"&&it(),q==="goals"&&fe.value&&f.value.length===0&&(Pe(),f.value.length||jt(K[0]))}),Oe(()=>t.visible,q=>{q||it()}),Oe(c,()=>{const q=new Set(c.value),X={};Object.entries(T.value).forEach(([pe,Te])=>{q.has(pe)&&(X[pe]=Te)}),T.value=X,Ie()},{deep:!0}),Oe(f,()=>{Ie()},{deep:!0});function Q(){const q=`cat_${Date.now().toString(36)}_${f.value.length}`;f.value=[...f.value,{id:q,label:`Category ${f.value.length+1}`,targetHours:8,includeWeekend:!1,paceMode:"days_only"}],Ie()}function ie(q){f.value.length<=1||(f.value=f.value.filter(X=>X.id!==q),Ie())}function Ce(q,X){f.value=f.value.map(pe=>pe.id===q?{...pe,label:X}:pe)}function Ze(q,X){const pe=f.value.findIndex(ot=>ot.id===q);if(pe<0)return;const Te=X==="up"?pe-1:pe+1;if(Te<0||Te>=f.value.length)return;const Le=[...f.value],[at]=Le.splice(pe,1);Le.splice(Te,0,at),f.value=Le}function Mt(q,X){if(q===X)return;const pe=f.value.findIndex(ot=>ot.id===q),Te=f.value.findIndex(ot=>ot.id===X);if(pe<0||Te<0)return;const Le=[...f.value],[at]=Le.splice(pe,1);Le.splice(Te,0,at),f.value=Le}function da(q,X){if(q===X)return;const pe=c.value.findIndex(ot=>ot===q),Te=c.value.findIndex(ot=>ot===X);if(pe<0||Te<0)return;const Le=[...c.value],[at]=Le.splice(pe,1);Le.splice(Te,0,at),c.value=Le}function Rt(q,X){const pe=c.value.findIndex(ot=>ot===q);if(pe<0)return;const Te=X==="up"?pe-1:pe+1;if(Te<0||Te>=c.value.length)return;const Le=[...c.value],[at]=Le.splice(pe,1);Le.splice(Te,0,at),c.value=Le}function jt(q){f.value=q.categories.map((X,pe)=>({id:String(X.id||`cat_${pe}`),label:X.label||`Category ${pe+1}`,targetHours:Number.isFinite(X.targetHours)?Number(X.targetHours):0,includeWeekend:!!X.includeWeekend,paceMode:X.paceMode==="time_aware"?"time_aware":"days_only",color:St(X.color)??null})),g.value={},Ie(),st()}function pt(q,X){const pe=Number(X),Te=Number.isFinite(pe)?Math.max(0,Math.min(1e3,pe)):void 0;f.value=f.value.map(Le=>Le.id===q?{...Le,targetHours:Te??Le.targetHours}:Le)}function Tt(q,X){f.value=f.value.map(pe=>pe.id===q?{...pe,includeWeekend:X}:pe)}function ca(q,X){g.value={...g.value,[q]:X}}function Oa(q,X){c.value.includes(X)&&ca(X,q)}function ua(q){if(de.value===q){it();return}de.value=q,Kt(()=>{const X=document.getElementById(`onboarding-color-popover-${q}`);X==null||X.focus()})}function it(){de.value=null}function Ht(q){const X=q.target;X!=null&&X.closest("[data-color-popover]")||it()}function St(q){if(typeof q!="string")return null;const X=q.trim();if(!/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(X))return null;if(X.length===4){const[,pe,Te,Le]=X;return`#${pe}${pe}${Te}${Te}${Le}${Le}`.toUpperCase()}return X.toUpperCase()}function Sa(q){return Array.isArray(q)?q.map((X,pe)=>({id:String((X==null?void 0:X.id)??`cat_${pe}`).trim()||`cat_${pe}`,label:String((X==null?void 0:X.label)??`Category ${pe+1}`).trim()||`Category ${pe+1}`,targetHours:Number.isFinite(X==null?void 0:X.targetHours)?Number(X.targetHours):0,includeWeekend:!!(X!=null&&X.includeWeekend),paceMode:(X==null?void 0:X.paceMode)==="time_aware"?"time_aware":"days_only",color:St(X==null?void 0:X.color)??null})):[]}function Ta(q){return St(q==null?void 0:q.color)??ha.value}const ha=x(()=>F.value[0]??"#2563EB");function Ba(q,X){f.value=f.value.map(pe=>pe.id===q?{...pe,color:X}:pe)}function Vt(q,X){const pe=St(X);Ba(q,pe??ha.value)}function ga(q,X){const pe=St(X);Ba(q,pe??ha.value),it()}function ea(q){if(!Number.isFinite(q))return 8;const X=Math.max(0,Math.min(24,q));return Math.round(X*100)/100}function ct(q){if(!Number.isFinite(q))return null;const X=Math.max(0,Math.min(1e3,Number(q)));return Math.round(X*100)/100}function $a(q){return Number.isFinite(q)?Math.max(1,Math.min(6,Math.round(q))):3}function pa(q){return JSON.parse(JSON.stringify(q))}function Qe(q){return Number.isFinite(q)?Math.round(Math.max(0,q)*2)/2:0}async function kt(){if(k.value=!0,m.value="",!(typeof window<"u"&&typeof window.OC<"u")){k.value=!1,_.value=[];return}try{const X=await Bu();_.value=X,m.value=""}catch{m.value="Unable to load Deck boards. Open Deck to create one.",_.value=[]}finally{k.value=!1}}async function et(){var X,pe;w.value=!0,D.value="";const q=t.calendars.map(Te=>Te.id).filter(Boolean);if(!q.length){R.value=[],w.value=!1;return}try{const Te=[];for(let Le=1;Le<=6;Le+=1){const at=-Le,ot=await r(o("loadData"),{range:"week",offset:at,cals:q,include:["data"]}),no=Array.isArray((pe=(X=ot==null?void 0:ot.charts)==null?void 0:X.perDaySeries)==null?void 0:pe.series)?ot.charts.perDaySeries.series:[],Oo={};no.forEach(Aa=>{const Ut=String((Aa==null?void 0:Aa.id)??"");if(!Ut)return;const Bo=Array.isArray(Aa==null?void 0:Aa.data)?Aa.data:[];Oo[Ut]=Qe(Bo.reduce((Yi,Xi)=>Yi+Number(Xi||0),0))}),Object.keys(Oo).length||(Array.isArray(ot==null?void 0:ot.byCal)?ot.byCal:[]).forEach(Ut=>{const Bo=String((Ut==null?void 0:Ut.id)??(Ut==null?void 0:Ut.calendarId)??"");Bo&&(Oo[Bo]=Qe(Number((Ut==null?void 0:Ut.hours)??(Ut==null?void 0:Ut.total)??0)))}),Te.push({offset:at,totals:Oo})}R.value=Te}catch{D.value="Recent activity could not be loaded.",R.value=[]}finally{w.value=!1}}function Ma(q){O.value={...O.value,enabled:q}}function ts(q){return!(O.value.hiddenBoards||[]).includes(q)}function Bi(q,X){const pe=new Set(O.value.hiddenBoards||[]);X?pe.delete(q):pe.add(q),O.value={...O.value,hiddenBoards:Array.from(pe).sort((Te,Le)=>Te-Le)}}function No(q,X){f.value=f.value.map(pe=>pe.id===q?{...pe,paceMode:X}:pe)}function ma(q){if(fe.value)return;const X=Number(q.value);if(!Number.isFinite(X)){C.value=null;return}C.value=ct(X)}function Gr(q){const X=Number(q.value);$.value=ea(Number.isFinite(X)?X:$.value)}function Hi(q){const X=Number(q.value);Number.isFinite(X)&&(H.value=$a(X))}function Fi(){ft.value<=0||(C.value=ct(Qe(ft.value)))}function Pi(q){const X=Number(wt.value[q]??0);X<=0||ss(q,String(Qe(X)))}function as(q){const X=Number(nt.value[q]??0);X<=0||pt(q,String(Qe(X)))}function Wi(q){I.value={...I.value,enabled:q}}function zi(q,X){I.value={...I.value,modes:{...I.value.modes,[q]:{...I.value.modes[q],enabled:X}}}}function Ri(q){I.value={...I.value,...q}}function ji(q,X){I.value={...I.value,modes:{...I.value.modes,[q]:{...I.value.modes[q],delivery:X}}}}function ya(q,X){I.value={...I.value,modes:{...I.value.modes,[q]:{...I.value.modes[q],...X}}}}function ar(q){const X=/(birthday|holiday|feiertag|urlaub|contacts?)/i,pe=[4,5,6],Te={};let Le=0;return q.forEach(at=>{const ot=V.value.get(at),no=(ot==null?void 0:ot.displayname)??"";X.test(no)||(Te[at]=pe[Le%pe.length],Le+=1)}),Te}function ro(){const q=t.calendars.map(pe=>pe.id).filter(Boolean);c.value=q,l.value="total_plus_categories",d.value="standard",S.value="auto",$.value=8,I.value={...Ao(),enabled:!1},H.value=$a(ze.value||3),O.value=pa(Do()),_.value.length?(O.value.enabled=!0,O.value.hiddenBoards=[]):(O.value.enabled=!1,O.value.hiddenBoards=[]),f.value=[],g.value={};const X=Object.fromEntries(Object.entries(wt.value).filter(([pe])=>q.includes(pe)));T.value=Object.keys(X).length?X:ar(q),C.value=ct(Object.values(T.value).reduce((pe,Te)=>pe+Number(Te||0),0)||40),Io()}const os=x(()=>s.value>0),or=x(()=>s.value<ge.value.length-1),rs=x(()=>{if(ee.value==="intro")return!u.value;if(ee.value==="strategy")return!l.value;if(ee.value==="calendars")return c.value.length===0;if(ee.value==="goals"){if(l.value==="total_only")return C.value===null||C.value<=0;if(fe.value&&(!c.value.length||!f.value.length))return!0}return!!(ee.value==="preferences"&&($.value<0||$.value>24)||ee.value==="review"&&v.value&&b.value.trim()==="")});function Vi(){if(ee.value==="intro"&&u.value==="quick"){ro();return}or.value&&!rs.value&&s.value++}function Ui(){os.value&&s.value--}function Gi(){a("skip")}function ns(){P.value&&a("close")}function Io(){const q=Hn(l.value,t.calendars,c.value,fe.value?{categories:f.value.map(Le=>({...Le})),assignments:{...g.value}}:void 0),X=q.targetsConfig;if(X.allDayHours=ea($.value),X.balance||(X.balance={basis:"events",trend:{lookbackWeeks:H.value}}),X.balance.trend||(X.balance.trend={lookbackWeeks:H.value}),X.balance.trend.lookbackWeeks=$a(H.value),fe.value){const Le=ct(ae.value);Le!=null&&(X.totalHours=Le)}else if(l.value==="total_plus_categories"){const Le=ct(U.value);Le!=null&&(X.totalHours=Le)}else if(C.value!=null){const Le=ct(C.value);Le!=null&&(X.totalHours=Le)}const pe={...q.targetsWeek};Object.entries(T.value).forEach(([Le,at])=>{c.value.includes(Le)&&(pe[Le]=ja(at))});const Te=Object.fromEntries(Object.entries(pe).map(([Le,at])=>[Le,Va(at)]));Object.keys(pe).length&&(X.ui.showCalendarCharts=!0),a("complete",{strategy:l.value,selected:[...c.value],targetsConfig:X,groups:q.groups,targetsWeek:pe,targetsMonth:Te,themePreference:S.value,deckSettings:pa(O.value),reportingConfig:{...I.value},dashboardMode:d.value,widgets:re.value,saveProfile:v.value,profileName:v.value?b.value.trim():""})}function Ki(){const q=Hn(l.value,t.calendars,c.value,fe.value?{categories:f.value.map(Le=>({...Le})),assignments:{...g.value}}:void 0),X=q.targetsConfig;if(X.allDayHours=ea($.value),X.balance||(X.balance={basis:"events",trend:{lookbackWeeks:H.value}}),X.balance.trend||(X.balance.trend={lookbackWeeks:H.value}),X.balance.trend.lookbackWeeks=$a(H.value),fe.value){const Le=ct(ae.value);Le!=null&&(X.totalHours=Le)}else if(l.value==="total_plus_categories"){const Le=ct(U.value);Le!=null&&(X.totalHours=Le)}else if(C.value!=null){const Le=ct(C.value);Le!=null&&(X.totalHours=Le)}const pe={...q.targetsWeek};Object.entries(T.value).forEach(([Le,at])=>{c.value.includes(Le)&&(pe[Le]=ja(at))});const Te=Object.fromEntries(Object.entries(pe).map(([Le,at])=>[Le,Va(at)]));return Object.keys(pe).length&&(X.ui.showCalendarCharts=!0),{targetsConfig:X,groups:q.groups,targetsWeek:pe,targetsMonth:Te,selected:[...c.value]}}function qi(){return{completed:!1,version:t.onboardingVersion,strategy:l.value,completed_at:"",dashboardMode:d.value}}function Ji(q){const X=Ki(),pe=qi();return q==="intro"?{onboarding:pe}:q==="strategy"?{onboarding:pe,targets_config:X.targetsConfig,groups:X.groups,targets_week:X.targetsWeek,targets_month:X.targetsMonth}:q==="calendars"?{cals:X.selected}:q==="deck"?{deck_settings:pa(O.value)}:q==="goals"?{targets_config:X.targetsConfig,groups:X.groups,targets_week:X.targetsWeek,targets_month:X.targetsMonth}:q==="preferences"?{targets_config:X.targetsConfig,theme_preference:S.value,reporting_config:{...I.value}}:q==="dashboard"?{onboarding:pe,dashboardMode:d.value,widgets:re.value}:{cals:X.selected,targets_config:X.targetsConfig,groups:X.groups,targets_week:X.targetsWeek,targets_month:X.targetsMonth,theme_preference:S.value,deck_settings:pa(O.value),reporting_config:{...I.value},onboarding:pe}}function Zi(q,X){if(X.checked){c.value.includes(q)||(c.value=[...c.value,q]);return}c.value=c.value.filter(pe=>pe!==q)}function ss(q,X){const pe=Number(X);if(!Number.isFinite(pe)){const Te={...T.value};delete Te[q],T.value=Te;return}T.value={...T.value,[q]:ja(pe)}}function is(q){return Number.isFinite(T.value[q])?T.value[q]:""}return{stepOrder:n,stepIndex:s,selectedStrategy:l,dashboardMode:d,profileMode:p,introChoice:u,saveProfile:v,profileName:b,localSelection:c,categories:f,assignments:g,calendarTargets:T,themePreference:S,allDayHoursInput:$,totalHoursInput:C,trendLookbackInput:H,deckSettingsDraft:O,reportingDraft:I,deckBoards:_,deckBoardsLoading:k,deckBoardsError:m,suggestionsLoading:w,suggestionsError:D,dashboardPresets:Z,deckVisibleBoards:Y,deckReviewSummary:le,reportingSummary:J,openColorId:de,previewTheme:B,systemThemeLabel:G,categoryTotalHours:ae,categoryColorPalette:F,categoryPresets:K,strategies:j,categoriesEnabled:fe,calendarTargetsEnabled:N,isClosable:P,enabledSteps:ge,currentStep:ee,stepNumber:be,totalSteps:ve,saving:xe,snapshotSaving:_e,snapshotNotice:ue,selectedCalendars:he,selectedCalendarIds:Me,suggestedCalendarTargets:wt,suggestedCategoryTargets:nt,availableHistoryLookback:Be,activeHistoryLookback:ze,historySummary:dt,unassignedSelectedCalendars:Dt,goalsHealth:Bt,draft:ht,strategyTitle:xt,setProfileMode:se,setIntroChoice:me,setSaveProfile:$e,setProfileName:Ae,applyStartStep:Je,goToStep:Ue,stepLabel:rt,addCategory:Q,removeCategory:ie,moveCategory:Ze,reorderCategory:Mt,reorderSelectedCalendar:da,moveSelectedCalendar:Rt,setCategoryLabel:Ce,applyCategoryPreset:jt,setCategoryTarget:pt,toggleCategoryWeekend:Tt,assignCalendar:ca,addCalendarToCategory:Oa,setCalendarTarget:ss,getCalendarTarget:is,toggleColorPopover:ua,closeColorPopover:it,resolvedColor:Ta,applyColor:ga,onColorInput:Vt,setDeckEnabled:Ma,isDeckBoardVisible:ts,toggleDeckBoard:Bi,setCategoryPaceMode:No,onTotalHoursChange:ma,onAllDayHoursChange:Gr,onTrendLookbackChange:Hi,applySuggestedTotalTarget:Fi,applySuggestedCalendarTarget:Pi,applySuggestedCategoryTarget:as,setReportingEnabled:Wi,setReportingModeEnabled:zi,setReportingModeDelivery:ji,updateReporting:Ri,updateReportingMode:ya,canGoBack:os,canGoNext:or,nextDisabled:rs,nextStep:Vi,prevStep:Ui,handleSkip:Gi,handleClose:ns,emitComplete:Io,runQuickSetup:ro,toggleCalendar:Zi,resetWizard:te,buildStepPayload:Ji}}const Hw={class:"onboarding-header"},Fw={class:"onboarding-actions"},Pw=["disabled"],Ww={class:"onboarding-step-nav","aria-label":"Onboarding steps"},zw=["disabled","onClick"],Rw={class:"step-arrow__inner"},jw={class:"step-arrow__main"},Vw={class:"step-arrow__label"},Uw={class:"step-arrow__icon","aria-hidden":"true"},Gw={class:"step-arrow__action"},Kw={class:"onboarding-body"},qw={key:0,class:"onboarding-step"},Jw={key:1,class:"onboarding-step"},Zw={key:2,class:"onboarding-step"},Yw={key:3,class:"onboarding-step"},Xw={key:4,class:"onboarding-step"},Qw={key:5,class:"onboarding-step"},ek={key:6,class:"onboarding-step"},tk={key:7,class:"onboarding-step"},ak={class:"onboarding-footer"},ok=Ve({__name:"OnboardingWizard",props:{visible:{type:Boolean},calendars:{},initialSelection:{},initialStrategy:{},startStep:{},onboardingVersion:{},saving:{type:Boolean},closable:{type:Boolean},initialThemePreference:{},systemTheme:{},initialAllDayHours:{},initialTotalHours:{},initialDeckSettings:{},initialReportingConfig:{},hasExistingConfig:{type:Boolean},initialCategories:{},initialAssignments:{},snapshotSaving:{type:Boolean},snapshotNotice:{},initialDashboardMode:{},initialTargetsWeek:{},initialTargetsConfig:{},persistStep:{type:Function},sendTestReport:{type:Function},sendCheckpointReport:{type:Function}},emits:["close","skip","complete","save-step","save-current-config"],setup(e,{emit:t}){const a=e,o=t,{stepIndex:r,enabledSteps:n,currentStep:s,isClosable:l,saving:d,stepLabel:p,goToStep:u,handleClose:v,canGoBack:b,canGoNext:c,nextDisabled:f,prevStep:g,nextStep:T,emitComplete:S,profileMode:$,introChoice:C,saveProfile:H,profileName:O,themePreference:I,systemThemeLabel:_,previewTheme:k,totalHoursInput:m,categoryTotalHours:w,categoriesEnabled:D,calendarTargetsEnabled:R,onTotalHoursChange:L,applySuggestedTotalTarget:Z,allDayHoursInput:K,onAllDayHoursChange:Y,trendLookbackInput:le,onTrendLookbackChange:J,deckSettingsDraft:de,setDeckEnabled:B,deckBoards:G,deckBoardsLoading:A,deckBoardsError:V,isDeckBoardVisible:he,toggleDeckBoard:Me,reportingDraft:ae,setReportingEnabled:U,setReportingModeEnabled:F,setReportingModeDelivery:j,updateReporting:ce,updateReportingMode:fe,dashboardMode:N,dashboardPresets:P,strategies:re,selectedStrategy:ge,localSelection:ee,toggleCalendar:be,categories:ve,selectedCalendars:xe,suggestedCalendarTargets:_e,suggestedCategoryTargets:ue,applySuggestedCalendarTarget:Ee,applySuggestedCategoryTarget:Se,suggestionsLoading:te,suggestionsError:se,activeHistoryLookback:me,historySummary:$e,unassignedSelectedCalendars:Ae,goalsHealth:Pe,assignments:Ie,addCategory:Be,removeCategory:ze,moveCategory:dt,reorderCategory:wt,reorderSelectedCalendar:nt,moveSelectedCalendar:ft,setCategoryLabel:Dt,setCategoryTarget:Bt,setCategoryPaceMode:ht,toggleCategoryWeekend:xt,assignCalendar:st,setCalendarTarget:mt,getCalendarTarget:Je,categoryPresets:Ue,resolvedColor:rt,onColorInput:Q,draft:ie,strategyTitle:Ce,applyCategoryPreset:Ze,deckReviewSummary:Mt,deckVisibleBoards:da,reportingSummary:Rt,setIntroChoice:jt,setProfileMode:pt,setSaveProfile:Tt,setProfileName:ca,buildStepPayload:Oa}=Bw({props:a,emit:o}),ua=oe(!1),it=x(()=>d.value||ua.value);async function Ht(Qe){if(!a.persistStep)return o("save-step",Qe),!0;try{return ua.value=!0,await a.persistStep(Qe),!0}catch{return!1}finally{ua.value=!1}}async function St(){return it.value?!1:Ht(Oa(s.value))}async function Sa(Qe,kt){it.value||pa(kt)||Qe===s.value||!await St()||u(Qe)}async function Ta(){if(it.value||f.value)return;if(s.value==="intro"&&C.value==="quick"){T();return}await St()&&T()}async function ha(){it.value||!b.value||!await St()||g()}async function Ba(){it.value||!l.value||!await St()||v()}function Vt(){const Qe=Oa("review");return{selected:[...Qe.cals??[]],groups:{...Qe.groups??{}},targetsConfig:Qe.targets_config??{},reportingConfig:Qe.reporting_config??{...ae.value}}}async function ga(){a.sendTestReport&&await a.sendTestReport(Vt())}async function ea(){a.sendCheckpointReport&&await a.sendCheckpointReport(Vt())}function ct(Qe,kt){return Qe===s.value?!1:a.hasExistingConfig?!0:kt<r.value}function $a(Qe,kt){return Qe===s.value||a.hasExistingConfig?!1:kt>r.value}function pa(Qe){return a.hasExistingConfig?!1:Qe>r.value}return(Qe,kt)=>(h(),lt(li,{visible:Qe.visible,theme:M(k),"close-on-backdrop":M(l),"close-on-esc":M(l),onClose:Ba},{default:Ct(()=>[i("header",Hw,[kt[0]||(kt[0]=i("div",{class:"onboarding-title"},[i("h2",null,"Welcome to Opsdash"),i("p",{class:"subtitle"},"Build a dashboard that matches your calendars, planning style, and review rhythm.")],-1)),i("div",Fw,[M(l)?(h(),y("button",{key:0,type:"button",class:"close-btn",disabled:it.value,onClick:Ba,"aria-label":"Close onboarding"}," × ",8,Pw)):ne("",!0)])]),i("nav",Ww,[(h(!0),y(ye,null,Ne(M(n),(et,Ma)=>(h(),y("button",{key:et,type:"button",class:ke(["step-arrow",{done:ct(et,Ma),current:et===M(s),upcoming:$a(et,Ma),locked:pa(Ma)}]),disabled:it.value,onClick:ts=>Sa(et,Ma)},[i("span",Rw,[i("span",jw,[i("span",Vw,E(M(p)(et)),1),i("span",Uw,E(et===M(s)?"•":ct(et,Ma)?"✓":"•"),1)]),i("span",Gw,E(et===M(s)?"Open":ct(et,Ma)?"Edit":""),1)])],10,zw))),128))]),i("main",Kw,[M(s)==="intro"?(h(),y("section",qw,[Re(iv,{"has-existing-config":a.hasExistingConfig??!1,"snapshot-saving":a.snapshotSaving??!1,saving:it.value,"snapshot-notice":a.snapshotNotice??null,"intro-choice":M(C),"profile-mode":M($),"set-intro-choice":M(jt),"set-profile-mode":M(pt),"on-continue":Ta,"on-save-current-config":()=>o("save-current-config")},null,8,["has-existing-config","snapshot-saving","saving","snapshot-notice","intro-choice","profile-mode","set-intro-choice","set-profile-mode","on-save-current-config"])])):M(s)==="strategy"?(h(),y("section",Jw,[Re(Hh,{strategies:M(re),"selected-strategy":M(ge),"set-selected-strategy":et=>ge.value=et,"on-continue":Ta},null,8,["strategies","selected-strategy","set-selected-strategy"])])):M(s)==="calendars"?(h(),y("section",Zw,[Re(qh,{calendars:Qe.calendars,"local-selection":M(ee),"toggle-calendar":M(be)},null,8,["calendars","local-selection","toggle-calendar"])])):M(s)==="deck"?(h(),y("section",Yw,[Re(Sh,{"deck-settings-draft":M(de),"set-deck-enabled":M(B),"deck-boards":M(G),"deck-boards-loading":M(A),"deck-boards-error":M(V),"is-deck-board-visible":M(he),"toggle-deck-board":M(Me)},null,8,["deck-settings-draft","set-deck-enabled","deck-boards","deck-boards-loading","deck-boards-error","is-deck-board-visible","toggle-deck-board"])])):M(s)==="goals"?(h(),y("section",Xw,[Re(Mc,{"selected-strategy":M(ge),"selected-calendars":M(xe),categories:M(ve),assignments:M(Ie),"category-presets":M(Ue),"total-hours-input":M(m),"on-total-hours-change":M(L),"on-apply-total-suggestion":M(Z),"trend-lookback-input":M(le),"active-history-lookback":M(me),"history-summary":M($e),"suggestions-loading":M(te),"suggestions-error":M(se),"on-trend-lookback-change":M(J),"suggested-calendar-targets":M(_e),"suggested-category-targets":M(ue),"on-apply-calendar-suggestion":M(Ee),"on-apply-category-suggestion":M(Se),"add-category":M(Be),"remove-category":M(ze),"move-category":M(dt),"reorder-category":M(wt),"reorder-selected-calendar":M(nt),"move-selected-calendar":M(ft),"set-category-label":M(Dt),"apply-category-preset":M(Ze),"set-category-target":M(Bt),"set-category-pace-mode":M(ht),"toggle-category-weekend":M(xt),"assign-calendar":M(st),"set-calendar-target":M(mt),"get-calendar-target":M(Je),"unassigned-selected-calendars":M(Ae),"goals-health":M(Pe),"resolved-color":M(rt),"on-color-input":M(Q)},null,8,["selected-strategy","selected-calendars","categories","assignments","category-presets","total-hours-input","on-total-hours-change","on-apply-total-suggestion","trend-lookback-input","active-history-lookback","history-summary","suggestions-loading","suggestions-error","on-trend-lookback-change","suggested-calendar-targets","suggested-category-targets","on-apply-calendar-suggestion","on-apply-category-suggestion","add-category","remove-category","move-category","reorder-category","reorder-selected-calendar","move-selected-calendar","set-category-label","apply-category-preset","set-category-target","set-category-pace-mode","toggle-category-weekend","assign-calendar","set-calendar-target","get-calendar-target","unassigned-selected-calendars","goals-health","resolved-color","on-color-input"])])):M(s)==="preferences"?(h(),y("section",Qw,[Re(dh,{"theme-preference":M(I),"system-theme-label":M(_),"preview-theme":M(k),"set-theme-preference":et=>I.value=et,"total-hours-input":M(m),"category-total-hours":M(w),"categories-enabled":M(D),"on-total-hours-change":M(L),"all-day-hours-input":M(K),"on-all-day-hours-change":M(Y),"trend-lookback-input":M(le),"on-trend-lookback-change":M(J),"reporting-draft":M(ae),"set-reporting-enabled":M(U),"set-reporting-mode-enabled":M(F),"set-reporting-mode-delivery":M(j),"update-reporting":M(ce),"update-reporting-mode":M(fe),"send-test-report":ga,"send-checkpoint-report":ea},null,8,["theme-preference","system-theme-label","preview-theme","set-theme-preference","total-hours-input","category-total-hours","categories-enabled","on-total-hours-change","all-day-hours-input","on-all-day-hours-change","trend-lookback-input","on-trend-lookback-change","reporting-draft","set-reporting-enabled","set-reporting-mode-enabled","set-reporting-mode-delivery","update-reporting","update-reporting-mode"])])):M(s)==="dashboard"?(h(),y("section",ek,[Re(Nh,{"dashboard-mode":M(N),"set-dashboard-mode":et=>N.value=et,"on-continue":Ta,"dashboard-presets":M(P)},null,8,["dashboard-mode","set-dashboard-mode","dashboard-presets"])])):M(s)==="review"?(h(),y("section",tk,[Re(s1,{"strategy-title":M(Ce),"categories-enabled":M(D),"calendar-targets-enabled":M(R),"selected-calendars":M(xe),"draft-targets-categories":M(ie).targetsConfig.categories,"draft-total-hours":M(ie).targetsConfig.totalHours,"total-hours-input":M(m),"category-total-hours":M(w),"deck-review-summary":M(Mt),"deck-enabled":M(de).enabled,"deck-visible-boards":M(da),"reporting-enabled":M(ae).enabled,"reporting-summary":M(Rt),"theme-preference":M(I),"dashboard-mode":M(N),"save-profile":M(H),"profile-name":M(O),"show-save-profile":a.hasExistingConfig??!1,"set-save-profile":M(Tt),"set-profile-name":M(ca),"go-to-step":M(u)},null,8,["strategy-title","categories-enabled","calendar-targets-enabled","selected-calendars","draft-targets-categories","draft-total-hours","total-hours-input","category-total-hours","deck-review-summary","deck-enabled","deck-visible-boards","reporting-enabled","reporting-summary","theme-preference","dashboard-mode","save-profile","profile-name","show-save-profile","set-save-profile","set-profile-name","go-to-step"])])):ne("",!0)]),i("footer",ak,[M(s)==="intro"?(h(),y(ye,{key:0},[kt[2]||(kt[2]=i("div",{class:"onboarding-footer-spacer"},null,-1)),Re(M(ra),{type:"primary",disabled:it.value||M(f),onClick:Ta},{default:Ct(()=>[...kt[1]||(kt[1]=[Ge("Continue",-1)])]),_:1},8,["disabled"])],64)):(h(),y(ye,{key:1},[M(b)?(h(),lt(M(ra),{key:0,type:"tertiary",disabled:it.value,onClick:ha},{default:Ct(()=>[...kt[3]||(kt[3]=[Ge("Back",-1)])]),_:1},8,["disabled"])):ne("",!0),M(c)?(h(),lt(M(ra),{key:1,type:"primary",disabled:M(f)||it.value,onClick:Ta},{default:Ct(()=>[...kt[4]||(kt[4]=[Ge("Continue",-1)])]),_:1},8,["disabled"])):(h(),lt(M(ra),{key:2,type:"primary",disabled:it.value||M(f),onClick:M(S)},{default:Ct(()=>[...kt[5]||(kt[5]=[Ge(" Start dashboard ",-1)])]),_:1},8,["disabled","onClick"]))],64))])]),_:1},8,["visible","theme","close-on-backdrop","close-on-esc"]))}}),rk=["id","role","aria-labelledby"],nk={key:0,class:"sb-title"},sk={key:1,class:"sb-description"},ik={class:"setup-actions"},lk={class:"preset-form"},dk=["disabled"],ck={key:0,class:"preset-error"},uk={key:2,class:"preset-warnings"},gk={class:"preset-header"},pk={key:3,class:"preset-empty"},fk={key:4,class:"preset-list"},bk={class:"preset-meta"},vk={class:"preset-name"},hk={class:"preset-info"},mk={key:0},yk={class:"preset-actions"},wk=gt(Ve({__name:"SidebarProfilesPane",props:{presets:{},isLoading:{type:Boolean},isSaving:{type:Boolean},isApplying:{type:Boolean},warnings:{},showHeader:{type:Boolean},asPanel:{type:Boolean}},emits:["save","load","delete","refresh","clear-warnings","export-config","import-config"],setup(e,{emit:t}){const a=e,o=t,r=oe(""),n=oe(null),s=oe(null),l=x(()=>a.showHeader!==!1),d=x(()=>a.asPanel===!1?void 0:"opsdash-sidebar-pane-profiles"),p=x(()=>a.asPanel===!1?void 0:"tabpanel"),u=x(()=>a.asPanel===!1?void 0:"opsdash-sidebar-tab-profiles");function v(){const S=r.value.trim();if(!S){n.value="Enter a profile name";return}n.value=null,o("save",S),r.value=""}function b(S){o("load",S)}function c(S){window.confirm(`Delete profile "${S}"?`)&&o("delete",S)}function f(){var S;(S=s.value)==null||S.click()}function g(S){var H;const $=S.target,C=(H=$==null?void 0:$.files)==null?void 0:H[0];C&&o("import-config",C),$&&($.value="")}function T(S){if(!S)return"";const $=new Date(S);if(Number.isNaN($.getTime()))return S;const H=new Date().getTime()-$.getTime(),O=Math.round(H/6e4);if(O<1)return"just now";if(O<60)return`${O} min ago`;const I=Math.round(O/60);if(I<24)return`${I}h ago`;const _=Math.round(I/24);if(_<7)return`${_}d ago`;const k=Math.round(_/7);return k<5?`${k}w ago`:En(S,{year:"numeric",month:"2-digit",day:"2-digit"})||S}return(S,$)=>(h(),y("div",{id:d.value,class:"sb-pane",role:p.value,"aria-labelledby":u.value},[l.value?(h(),y("div",nk,"Profiles")):ne("",!0),l.value?(h(),y("p",sk," Export/import full configs or save/load named profiles (calendars, groups, targets, widgets, settings). ")):ne("",!0),i("div",ik,[Re(M(ra),{type:"tertiary",size:"small",onClick:$[0]||($[0]=C=>o("export-config"))},{default:Ct(()=>[...$[4]||($[4]=[Ge(" Export configuration ",-1)])]),_:1}),Re(M(ra),{type:"tertiary",size:"small",onClick:f},{default:Ct(()=>[...$[5]||($[5]=[Ge(" Import configuration ",-1)])]),_:1}),i("input",{ref_key:"fileInput",ref:s,type:"file",accept:"application/json",class:"import-input",onChange:g},null,544)]),i("div",lk,[$[6]||($[6]=i("label",{class:"preset-label",for:"preset-name"},"Profile name",-1)),go(i("input",{id:"preset-name","onUpdate:modelValue":$[1]||($[1]=C=>r.value=C),type:"text",placeholder:"e.g. Focus week",disabled:S.isSaving,onKeyup:Na(v,["enter"])},null,40,dk),[[An,r.value]]),n.value?(h(),y("div",ck,E(n.value),1)):ne("",!0),Re(M(ra),{class:"preset-save",type:"primary",disabled:S.isSaving||!r.value.trim(),onClick:v},{default:Ct(()=>[Ge(E(S.isSaving?"Saving…":"Save current configuration"),1)]),_:1},8,["disabled"])]),S.warnings.length?(h(),y("div",uk,[$[8]||($[8]=i("div",{class:"warnings-title"},"Warnings",-1)),i("ul",null,[(h(!0),y(ye,null,Ne(S.warnings,(C,H)=>(h(),y("li",{key:H},E(C),1))),128))]),Re(M(ra),{type:"tertiary",class:"preset-clear",onClick:$[2]||($[2]=C=>o("clear-warnings"))},{default:Ct(()=>[...$[7]||($[7]=[Ge(" Clear warnings ",-1)])]),_:1})])):ne("",!0),i("div",gk,[$[9]||($[9]=i("h3",null,"Saved profiles",-1)),Re(M(ra),{type:"tertiary",disabled:S.isLoading,onClick:$[3]||($[3]=C=>o("refresh"))},{default:Ct(()=>[Ge(E(S.isLoading?"Refreshing…":"Refresh list"),1)]),_:1},8,["disabled"])]),!S.presets.length&&!S.isLoading?(h(),y("div",pk," No profiles yet. Save one above to get started. ")):(h(),y("ul",fk,[(h(!0),y(ye,null,Ne(S.presets,C=>(h(),y("li",{key:C.name,class:"preset-item"},[i("div",bk,[i("div",vk,E(C.name),1),i("div",hk,[i("span",null,E(C.selectedCount)+" calendars",1),i("span",null,E(C.calendarCount)+" groups",1),C.updatedAt?(h(),y("span",mk,"Updated "+E(T(C.updatedAt)),1)):ne("",!0)])]),i("div",yk,[Re(M(ra),{type:"primary",disabled:S.isApplying,onClick:H=>b(C.name)},{default:Ct(()=>[Ge(E(S.isApplying?"Applying…":"Load"),1)]),_:2},1032,["disabled","onClick"]),Re(M(ra),{type:"tertiary",disabled:S.isApplying,onClick:H=>c(C.name)},{default:Ct(()=>[...$[10]||($[10]=[Ge(" Delete ",-1)])]),_:2},1032,["disabled","onClick"])])]))),128))]))],8,rk))}}),[["__scopeId","data-v-b978e1df"]]),kk={class:"onboarding-header profiles-overlay__header"},xk={class:"onboarding-actions"},_k={class:"onboarding-body profiles-overlay__body"},Ck=gt(Ve({__name:"ProfilesOverlay",props:{visible:{type:Boolean},theme:{},presets:{},isLoading:{type:Boolean},isSaving:{type:Boolean},isApplying:{type:Boolean},warnings:{}},emits:["close","save","load","delete","refresh","clear-warnings","export-config","import-config"],setup(e,{emit:t}){const a=t;return(o,r)=>(h(),lt(li,{visible:o.visible,theme:o.theme,"panel-class":"profiles-overlay","aria-labelledby":"profiles-overlay-title",onClose:r[8]||(r[8]=n=>a("close"))},{default:Ct(()=>[i("header",kk,[r[9]||(r[9]=i("div",{class:"onboarding-title"},[i("h2",{id:"profiles-overlay-title"},"Profiles"),i("p",{class:"subtitle"}," Export/import full configs or save/load named profiles (calendars, groups, targets, widgets, settings). ")],-1)),i("div",xk,[i("button",{type:"button",class:"close-btn","aria-label":"Close profiles",onClick:r[0]||(r[0]=n=>a("close"))}," x ")])]),i("main",_k,[Re(wk,{presets:o.presets,"is-loading":o.isLoading,"is-saving":o.isSaving,"is-applying":o.isApplying,warnings:o.warnings,"show-header":!1,"as-panel":!1,onSave:r[1]||(r[1]=n=>a("save",n)),onLoad:r[2]||(r[2]=n=>a("load",n)),onDelete:r[3]||(r[3]=n=>a("delete",n)),onRefresh:r[4]||(r[4]=()=>a("refresh")),onClearWarnings:r[5]||(r[5]=()=>a("clear-warnings")),onExportConfig:r[6]||(r[6]=()=>a("export-config")),onImportConfig:r[7]||(r[7]=n=>a("import-config",n))},null,8,["presets","is-loading","is-saving","is-applying","warnings"])])]),_:1},8,["visible","theme"]))}}),[["__scopeId","data-v-79f039ef"]]),Sk={key:0,class:"onboarding-overlay shortcuts-overlay",role:"dialog","aria-modal":"true","aria-labelledby":"opsdash-shortcuts-title"},Tk=["onKeydown"],$k={class:"onboarding-body shortcuts-body"},Mk={class:"shortcut-label"},Ak={key:0},Dk={class:"shortcut-combo","aria-hidden":"true"},Lk={class:"shortcuts-footer"},Ek=gt(Ve({__name:"KeyboardShortcutsModal",props:{visible:{type:Boolean},groups:{},theme:{}},emits:["close"],setup(e,{emit:t}){const a=e,o=t,r=oe(null),n=x(()=>a.theme==="dark"?"dark":"light");function s(){o("close")}return Oe(()=>a.visible,l=>{l&&Kt(()=>{var d;(d=r.value)==null||d.focus()}).catch(()=>{})}),(l,d)=>(h(),lt(rc,{name:"onboarding-fade"},{default:Ct(()=>[l.visible?(h(),y("div",Sk,[i("div",{class:"onboarding-backdrop",onClick:s}),i("div",{ref_key:"panelRef",ref:r,class:ke(["onboarding-panel shortcuts-panel",`theme-${n.value}`]),tabindex:"-1",onKeydown:Na(Xe(s,["prevent"]),["esc"])},[i("header",{class:"onboarding-header shortcuts-header"},[d[0]||(d[0]=i("div",{class:"onboarding-title shortcuts-title"},[i("h2",{id:"opsdash-shortcuts-title"},"Keyboard Shortcuts"),i("p",{class:"shortcuts-hint"},"Press Esc to close or ? to reopen.")],-1)),i("button",{type:"button",class:"close-btn shortcuts-close","aria-label":"Close shortcuts overlay",onClick:s}," × ")]),i("div",$k,[(h(!0),y(ye,null,Ne(l.groups,p=>(h(),y("section",{key:p.id,class:"shortcuts-group"},[i("h3",null,E(p.title),1),i("ul",null,[(h(!0),y(ye,null,Ne(p.items,u=>(h(),y("li",{key:u.id},[i("span",Mk,[Ge(E(u.label)+" ",1),u.description?(h(),y("small",Ak,E(u.description),1)):ne("",!0)]),i("span",Dk,[(h(!0),y(ye,null,Ne(u.combo,(v,b)=>(h(),y("kbd",{key:b},E(v),1))),128))])]))),128))])]))),128))]),i("footer",Lk,[Re(M(ra),{type:"primary",size:"small",onClick:s},{default:Ct(()=>[...d[1]||(d[1]=[Ge(" Close ",-1)])]),_:1})])],42,Tk)])):ne("",!0)]),_:1}))}}),[["__scopeId","data-v-a4c42127"]]),Nk=["draggable","aria-busy","onClick","onDragstart"],Ik={key:0,class:"widget-loading","aria-live":"polite"},Ok=24,Fu=12,Bk=gt(Ve({__name:"DashboardGrid",props:{ordered:{},editable:{type:Boolean},selectedId:{},widgetTypeList:{}},emits:["select","add","reorder","select-cell"],setup(e,{emit:t}){const a=e,o=t,r=oe(null),n=oe(null),s=oe(null),l=x(()=>a.widgetTypeList||[]),d=new Map;function p(D){return!Number.isFinite(D)||D<=0?1:Math.max(1,Math.ceil((D+Fu)/(Ok+Fu)))}function u(D){const R=D.getBoundingClientRect(),L=p(R.height);D.style.gridRowEnd=`span ${L}`}function v(D,R,L){const Z=d.get(D);if(Z&&(Z.disconnect(),d.delete(D)),!R)return;if(L!=="auto"){R.style.gridRowEnd="";return}if(u(R),typeof ResizeObserver>"u")return;const K=new ResizeObserver(()=>u(R));K.observe(R),d.set(D,K)}$t(()=>{d.forEach(D=>D.disconnect()),d.clear()});const b=x(()=>{const D=[];let R={items:[],col:1,remaining:4};const L=()=>{R.items.length&&D.push({items:R.items}),R={items:[],col:1,remaining:4}};return a.ordered.forEach(Z=>{const K=f(Z.layout.width);K>R.remaining&&L();const Y=R.col;R.items.push({...Z,span:K,start:Y}),R.col+=K,R.remaining-=K}),L(),D});function c(D){switch(D){case"quarter":return"w-quarter";case"half":return"w-half";default:return"w-full"}}function f(D){return D==="quarter"?1:D==="half"?2:4}function g(D,R){if(R==="auto")return"h-auto";switch(D){case"s":return"h-s";case"l":return"h-l";case"xl":return"h-xl";default:return"h-m"}}function T(D){const R=(D==null?void 0:D.scale)||(D==null?void 0:D.textSize)||"md";return R==="sm"?"scale-sm":R==="lg"?"scale-lg":R==="xl"?"scale-xl":"scale-md"}function S(D){const R=(D==null?void 0:D.scale)||(D==null?void 0:D.textSize)||"md",L=R==="sm"?.85:R==="lg"?1.35:R==="xl"?1.6:1.1,Z=D!=null&&D.dense?.72:1,K=L*Z,Y=L*Z,le=18*Y;return{"--widget-scale":String(L),"--widget-space":String(K),"--widget-density":String(Z),"--widget-text-scale":String(Y),"--widget-title-size":`${le}px`}}function $(D){const R=r.value;if(!R)return{row:0,col:1};const L=R.getBoundingClientRect(),Z=12,Y=(L.width-Z*3)/4,le=Math.max(0,Math.min(L.width,D.clientX-L.left)),J=Math.min(3,Math.max(0,Math.floor(le/(Y+Z))))+1,de=Math.max(0,Math.min(L.height+400,D.clientY-L.top)),B=Number.parseFloat(getComputedStyle(R).getPropertyValue("--grid-row"))||24;return{row:Math.max(0,Math.floor(de/(B+Z))),col:J}}function C(D,R){var J,de,B,G;const L=b.value,Z=L[D]||L[L.length-1]||{items:[]},K=[...Z.items||[]].filter(A=>A.start<R).sort((A,V)=>A.start-V.start).pop(),Y=[...Z.items||[]].filter(A=>A.start>=R).sort((A,V)=>A.start-V.start)[0];if(K&&Y)return(K.layout.order+Y.layout.order)/2;if(K)return(K.layout.order||0)+5;if(Y)return(Y.layout.order||0)-5;const le=L[D-1]||L[L.length-1];return le&&le.items.length?(le.items[le.items.length-1].layout.order||0)+10:((((G=(B=(de=(J=L[0])==null?void 0:J.items)==null?void 0:de[0])==null?void 0:B.layout)==null?void 0:G.order)??0)||0)-10}function H(D){if(!a.editable||!l.value.length)return;const{row:R,col:L}=$(D),Z=C(R,L);o("select-cell",Z)}function O(D){a.editable&&(D.target.closest(".layout-item")||H(D))}function I(D){a.editable&&(D.target.closest(".layout-item")||H(D))}function _(D){if(!a.editable||!n.value)return;const{row:R,col:L}=$(D);s.value=C(R,L)}function k(){if(!a.editable||!n.value)return;const D=n.value,R=s.value??void 0;n.value=null,s.value=null,o("reorder",D,R)}function m(D){a.editable&&(n.value=D,s.value=null)}function w(){n.value=null,s.value=null}return(D,R)=>(h(),y("div",{ref_key:"gridEl",ref:r,class:ke(["layout-grid",{"show-guides":D.editable}]),onClick:O,onContextmenu:Xe(I,["prevent"]),onDragover:Xe(_,["prevent"]),onDrop:Xe(k,["prevent"])},[(h(!0),y(ye,null,Ne(D.ordered,L=>(h(),y("div",{key:L.id,ref_for:!0,ref:Z=>v(L.id,Z,L.heightMode),class:ke(["layout-item",[c(L.layout.width),g(L.layout.height,L.heightMode),T(L.options),{"is-editable":D.editable,"is-selected":D.editable&&D.selectedId===L.id,"is-dragging":D.editable&&n.value===L.id,"is-loading":!!L.loading}]]),style:He(S(L.options)),draggable:D.editable,"aria-busy":L.loading?"true":"false",onClick:Xe(Z=>o("select",L.id),["stop"]),onDragstart:Z=>m(L.id),onDragend:w},[L.loading?(h(),y("div",Ik,[...R[0]||(R[0]=[i("span",{class:"widget-loading__spinner","aria-hidden":"true"},null,-1),i("span",{class:"widget-loading__label"},"Loading…",-1)])])):ne("",!0),(h(),lt(vd(L.component),Kd({ref_for:!0},L.props),null,16))],46,Nk))),128))],34))}}),[["__scopeId","data-v-178d9739"]]),Hk={key:0,class:"advanced-overlay onboarding-overlay",role:"dialog","aria-modal":"false","aria-label":"Targets configuration"},Fk={class:"advanced-panel__body advanced-panel__body--goals onboarding-body"},Pk={class:"onboarding-step"},Wk=gt(Ve({__name:"DashboardAdvancedTargetsOverlay",props:{widgetId:{},widgets:{},contextTargetsConfig:{},contextTargetsWeek:{},contextGroupsById:{},contextCalendars:{},contextSelected:{},strategy:{}},emits:["close","save","use-global","open-onboarding"],setup(e,{emit:t}){const a=e,o=t,r=["#2563EB","#F97316","#10B981","#A855F7","#EC4899","#14B8A6","#F59E0B","#6366F1","#0EA5E9","#65A30D"],n=[{id:"work_hobby_sport",title:"Work / Hobby / Sport",description:"Simple split for work, play, and fitness.",colors:["#2563EB","#F97316","#10B981"],categories:[{id:"work",label:"Work",targetHours:32,includeWeekend:!1,paceMode:"days_only",color:"#2563EB"},{id:"hobby",label:"Hobby",targetHours:6,includeWeekend:!0,paceMode:"days_only",color:"#F97316"},{id:"sport",label:"Sport",targetHours:4,includeWeekend:!0,paceMode:"days_only",color:"#10B981"}]},{id:"focus_personal_recovery",title:"Focus / Personal / Recovery",description:"Balance deep work, personal time, and rest.",colors:["#6366F1","#EC4899","#14B8A6"],categories:[{id:"focus",label:"Focus",targetHours:30,includeWeekend:!1,paceMode:"days_only",color:"#6366F1"},{id:"personal",label:"Personal",targetHours:8,includeWeekend:!0,paceMode:"days_only",color:"#EC4899"},{id:"recovery",label:"Recovery",targetHours:6,includeWeekend:!0,paceMode:"days_only",color:"#14B8A6"}]},{id:"client_internal_learning",title:"Client / Internal / Learning",description:"A fuller split for client work, internal work, learning, admin, and recovery.",colors:["#2563EB","#F97316","#10B981","#A855F7","#EC4899"],categories:[{id:"client",label:"Client",targetHours:24,includeWeekend:!1,paceMode:"days_only",color:"#2563EB"},{id:"internal",label:"Internal",targetHours:8,includeWeekend:!1,paceMode:"days_only",color:"#F97316"},{id:"learning",label:"Learning",targetHours:4,includeWeekend:!0,paceMode:"days_only",color:"#10B981"},{id:"admin",label:"Admin",targetHours:2,includeWeekend:!0,paceMode:"days_only",color:"#A855F7"},{id:"recovery",label:"Recovery",targetHours:4,includeWeekend:!0,paceMode:"days_only",color:"#EC4899"}]}],s=oe(null),l=oe("total_only"),d=oe(null),p=oe(3),u=oe([]),v=oe({}),b=oe({}),c=oe([]),f=Object.freeze({}),g=Object.freeze({enabled:!1,available:0,label:"No lookback suggestions in widget-local mode."}),T=x(()=>Array.isArray(a.contextCalendars)?a.contextCalendars:[]),S=x(()=>{const te=new Set(T.value.map(se=>se.id));return c.value.filter(se=>te.has(se))}),$=x(()=>new Map(T.value.map(te=>[te.id,te]))),C=x(()=>S.value.map(te=>$.value.get(te)).filter(te=>!!te)),H=x(()=>u.value.reduce((te,se)=>te+(Number(se.targetHours)||0),0)),O=x(()=>C.value.reduce((te,se)=>te+(Number(j(se.id))||0),0)),I=x(()=>C.value.filter(te=>!v.value[te.id])),_=x(()=>{const te=C.value.filter(Pe=>v.value[Pe.id]).length,se=Math.max(0,C.value.length-te),me=ue(O.value),$e=ue(H.value),Ae=ue($e-me);return{assigned:te,unassigned:se,calendarTotal:me,categoryTotal:$e,delta:Ae,totalsMatch:Math.abs(Ae)<=.01}});Oe(()=>[a.widgetId,a.strategy,JSON.stringify(a.contextTargetsConfig||{}),JSON.stringify(a.contextTargetsWeek||{}),JSON.stringify(a.contextGroupsById||{}),JSON.stringify(a.contextSelected||[]),JSON.stringify(a.contextCalendars||[])],()=>{k()},{immediate:!0});function k(){var ze,dt;if(!a.widgetId){s.value=null;return}const te=a.widgets.find(wt=>wt.id===a.widgetId),se=(te==null?void 0:te.options)||{},me=se.useLocalConfig===!0,$e=Qt(me&&se.localConfig?se.localConfig:a.contextTargetsConfig);s.value=Ua($e),l.value=ve($e,a.strategy),d.value=xe($e.totalHours),p.value=_e(((dt=(ze=$e==null?void 0:$e.balance)==null?void 0:ze.trend)==null?void 0:dt.lookbackWeeks)??3),u.value=ge($e.categories);const Ae=re(a.contextSelected,T.value);c.value=Ae;const Pe=P(me?se.localTargetsWeek:a.contextTargetsWeek),Ie={};Ae.forEach(wt=>{Number.isFinite(Pe[wt])&&(Ie[wt]=Pe[wt])}),b.value=Ie;const Be=N(me?se.localGroupsById:a.contextGroupsById);v.value=l.value==="full_granular"?ee(Ae,u.value,Be):{}}function m(){o("close")}function w(){if(!a.widgetId||!s.value)return;const te=Hn(l.value,T.value,S.value,l.value==="full_granular"?{categories:u.value.map($e=>({...$e})),assignments:{...v.value}}:void 0),se=be(s.value,te.targetsConfig);if(se.balance.trend.lookbackWeeks=p.value,l.value==="total_only"){const $e=xe(d.value);$e!=null&&(se.totalHours=$e)}else l.value==="total_plus_categories"?se.totalHours=ue(O.value||se.totalHours):se.totalHours=ue(H.value||se.totalHours);const me={};S.value.forEach($e=>{const Ae=Number(b.value[$e]);Number.isFinite(Ae)&&(me[$e]=ja(Ae))}),o("save",a.widgetId,{localConfig:se,localTargetsWeek:me,localGroupsById:te.groups})}function D(){a.widgetId&&o("use-global",a.widgetId)}function R(){}function L(){if(typeof document>"u")return"theme-light";const te=document.querySelector("#opsdash");return te!=null&&te.classList.contains("opsdash-theme-dark")?"theme-dark":"theme-light"}function Z(te){const se=Number(te.value);d.value=Number.isFinite(se)?xe(se):null}function K(te){const se=Number(te.value);Number.isFinite(se)&&(p.value=_e(se))}function Y(){const te=u.value.length+1,se=r[(te-1)%r.length]||"#2563EB";u.value=[...u.value,{id:`cat_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,5)}`,label:`Category ${te}`,targetHours:0,includeWeekend:!0,paceMode:"days_only",color:se}]}function le(te){u.value=u.value.filter(me=>me.id!==te);const se={...v.value};Object.keys(se).forEach(me=>{se[me]===te&&(se[me]="")}),v.value=se}function J(te,se){const me=u.value.findIndex(Ie=>Ie.id===te);if(me<0)return;const $e=se==="up"?me-1:me+1;if($e<0||$e>=u.value.length)return;const Ae=[...u.value],[Pe]=Ae.splice(me,1);Ae.splice($e,0,Pe),u.value=Ae}function de(te,se){u.value=Se(u.value,te,se)}function B(te,se){c.value=Se(c.value,te,se)}function G(te,se){const me=c.value.findIndex(Ie=>Ie===te);if(me<0)return;const $e=se==="up"?me-1:me+1;if($e<0||$e>=c.value.length)return;const Ae=[...c.value],[Pe]=Ae.splice(me,1);Ae.splice($e,0,Pe),c.value=Ae}function A(te,se){u.value=u.value.map(me=>me.id===te?{...me,label:se.trim()||me.label}:me)}function V(te){u.value=te.categories.map(me=>({...me}));const se={};S.value.forEach((me,$e)=>{const Ae=te.categories[$e%te.categories.length];se[me]=(Ae==null?void 0:Ae.id)||""}),v.value=se}function he(te,se){const me=Number(se);u.value=u.value.map($e=>$e.id===te?{...$e,targetHours:Number.isFinite(me)?ja(me):0}:$e)}function Me(te,se){u.value=u.value.map(me=>me.id===te?{...me,paceMode:se==="time_aware"?"time_aware":"days_only"}:me)}function ae(te,se){u.value=u.value.map(me=>me.id===te?{...me,includeWeekend:se}:me)}function U(te,se){v.value={...v.value,[te]:se}}function F(te,se){const me=Number(se);if(!Number.isFinite(me)){const $e={...b.value};delete $e[te],b.value=$e;return}b.value={...b.value,[te]:ja(me)}}function j(te){return Number.isFinite(b.value[te])?b.value[te]:""}function ce(te){return Ee(te==null?void 0:te.color)??r[0]}function fe(te,se){const me=Ee(se);u.value=u.value.map($e=>$e.id===te?{...$e,color:me??ce($e)}:$e)}function N(te){if(!te||typeof te!="object"||Array.isArray(te))return{};const se={};return Object.entries(te).forEach(([me,$e])=>{const Ae=String(me||"").trim();Ae&&(se[Ae]=Math.max(0,Math.min(9,Math.trunc(Number($e)||0))))}),se}function P(te){if(!te||typeof te!="object"||Array.isArray(te))return{};const se={};return Object.entries(te).forEach(([me,$e])=>{const Ae=String(me||"").trim(),Pe=Number($e);!Ae||!Number.isFinite(Pe)||(se[Ae]=ja(Pe))}),se}function re(te,se){const me=new Set(se.map($e=>$e.id));return Array.isArray(te)?te.map($e=>String($e||"")).filter($e=>me.has($e)):[]}function ge(te){return Array.isArray(te)?te.map((se,me)=>({id:String((se==null?void 0:se.id)??`cat_${me}`).trim()||`cat_${me}`,label:String((se==null?void 0:se.label)??`Category ${me+1}`).trim()||`Category ${me+1}`,targetHours:Number.isFinite(se==null?void 0:se.targetHours)?Number(se.targetHours):0,includeWeekend:(se==null?void 0:se.includeWeekend)!==!1,paceMode:(se==null?void 0:se.paceMode)==="time_aware"?"time_aware":"days_only",color:Ee(se==null?void 0:se.color)??null})):[]}function ee(te,se,me){const $e=new Map;se.forEach((Pe,Ie)=>{const Be=Ie+1;$e.set(Be,Pe.id)});const Ae={};return te.forEach(Pe=>{const Ie=Math.max(0,Math.min(9,Math.trunc(Number(me[Pe])||0)));Ae[Pe]=$e.get(Ie)||""}),Ae}function be(te,se){var $e,Ae;const me=Ua(te);return me.totalHours=se.totalHours,me.categories=se.categories,me.ui.showCategoryBlocks=se.ui.showCategoryBlocks,me.ui.showCategoryCharts=se.ui.showCategoryCharts,me.ui.showCalendarCharts=se.ui.showCalendarCharts,me.balance.categories=[...(($e=se.balance)==null?void 0:$e.categories)||[]],me.balance.useCategoryMapping=((Ae=se.balance)==null?void 0:Ae.useCategoryMapping)===!0,me}function ve(te,se){return se==="full_granular"||se==="total_plus_categories"||se==="total_only"?se:Array.isArray(te==null?void 0:te.categories)&&te.categories.length>0?"full_granular":"total_plus_categories"}function xe(te){if(!Number.isFinite(te??NaN))return null;const se=Math.max(0,Math.min(1e3,Number(te)));return Math.round(se*100)/100}function _e(te){return Number.isFinite(te)?Math.max(1,Math.min(6,Math.round(te))):3}function ue(te){return Number.isFinite(te)?Math.round(Math.max(0,te)*2)/2:0}function Ee(te){if(typeof te!="string")return null;const se=te.trim();if(!/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(se))return null;if(se.length===4){const[,me,$e,Ae]=se;return`#${me}${me}${$e}${$e}${Ae}${Ae}`.toUpperCase()}return se.toUpperCase()}function Se(te,se,me){const $e=ze=>typeof ze=="string"?ze:ze.id,Ae=te.findIndex(ze=>$e(ze)===se),Pe=te.findIndex(ze=>$e(ze)===me);if(Ae<0||Pe<0||Ae===Pe)return[...te];const Ie=[...te],[Be]=Ie.splice(Ae,1);return Ie.splice(Pe,0,Be),Ie}return(te,se)=>te.widgetId&&s.value?(h(),y("div",Hk,[i("div",{class:ke(["advanced-panel onboarding-panel",L()])},[i("button",{type:"button",class:"close-btn",onClick:m,"aria-label":"Close"},"×"),i("main",Fk,[i("section",Pk,[Re(Mc,{"selected-strategy":l.value,"selected-calendars":C.value,categories:u.value,assignments:v.value,"category-presets":n,"total-hours-input":d.value,"on-total-hours-change":Z,"on-apply-total-suggestion":R,"trend-lookback-input":p.value,"active-history-lookback":p.value,"history-summary":M(g),"suggestions-loading":!1,"suggestions-error":"","on-trend-lookback-change":K,"suggested-calendar-targets":M(f),"suggested-category-targets":M(f),"on-apply-calendar-suggestion":R,"on-apply-category-suggestion":R,"add-category":Y,"remove-category":le,"move-category":J,"reorder-category":de,"reorder-selected-calendar":B,"move-selected-calendar":G,"set-category-label":A,"apply-category-preset":V,"set-category-target":he,"set-category-pace-mode":Me,"toggle-category-weekend":ae,"assign-calendar":U,"set-calendar-target":F,"get-calendar-target":j,"unassigned-selected-calendars":I.value,"goals-health":_.value,"resolved-color":ce,"on-color-input":fe},null,8,["selected-strategy","selected-calendars","categories","assignments","total-hours-input","trend-lookback-input","active-history-lookback","history-summary","suggested-calendar-targets","suggested-category-targets","unassigned-selected-calendars","goals-health"])])]),i("footer",{class:"overlay-actions onboarding-footer"},[i("div",{class:"overlay-actions__left"},[se[0]||(se[0]=i("div",{class:"overlay-actions__hint"},"This editor only overrides this widget.",-1)),i("button",{type:"button",class:"ghost",onClick:D},"Use global targets")]),i("div",{class:"overlay-actions__right"},[i("button",{type:"button",class:"ghost",onClick:m},"Cancel"),i("button",{type:"button",class:"ghost primary",onClick:w},"Save")])])],2)])):ne("",!0)}}),[["__scopeId","data-v-0399ee27"]]),zk=gt(Ve({__name:"DashboardLayout",props:{widgets:{},context:{},editable:{type:Boolean},widgetTypes:{},presetLabel:{},tabs:{},currentTabId:{}},emits:["edit:width","edit:height","edit:remove","edit:move","edit:move-tab","edit:duplicate-tab","edit:options","edit:add","edit:reorder","open:onboarding","reset:preset","select:cell"],setup(e,{expose:t,emit:a}){const o=e,r=a,n=oe(null),s=oe(null),l=oe(null),d=x(()=>(o.widgets||[]).slice().sort((O,I)=>(O.layout.order||0)-(I.layout.order||0)).map(O=>{const I=Tw(O,o.context);if(!I)return null;const _=O.options||{};return{...I,id:O.id,layout:O.layout,type:O.type,options:_}}).filter(Boolean)),p=x(()=>d.value.find(O=>O.id===l.value)||null),u=x(()=>o.widgetTypes||[]);Oe(()=>o.editable,O=>{O||(l.value=null,n.value=null,s.value=null)},{immediate:!0}),Oe(()=>d.value.map(O=>O.id).join("|"),()=>{l.value&&!d.value.find(O=>O.id===l.value)&&(l.value=null)});function v(O){l.value=O,n.value=null}function b(){d.value.length&&(l.value=d.value[0].id)}function c(){l.value=null,n.value=null,s.value=null}function f(O){l.value=O,n.value=null,s.value=O}function g(){n.value=null,s.value=null}function T(O,I){r("edit:options",O,"localConfig",I.localConfig),r("edit:options",O,"localTargetsWeek",I.localTargetsWeek),r("edit:options",O,"localGroupsById",I.localGroupsById),r("edit:options",O,"useLocalConfig",!0),g()}function S(O){r("edit:options",O,"localTargetsWeek",null),r("edit:options",O,"localGroupsById",null),r("edit:options",O,"localConfig",null),r("edit:options",O,"useLocalConfig",!1),g()}function $(O){g(),r("open:onboarding",O)}function C(){l.value&&(n.value=l.value)}function H(O){r("select:cell",O)}return t({selectedItem:p,openOptionsForSelected:C,openAdvancedTargets:f,selectFirst:b}),(O,I)=>(h(),y("div",{class:ke(["layout-wrapper",{"editable-mode":O.editable}]),onClick:Xe(c,["self"])},[Re(Bk,{ordered:d.value,editable:O.editable,"selected-id":l.value,"widget-type-list":u.value,onSelect:v,onSelectCell:H,onAdd:I[0]||(I[0]=(_,k)=>r("edit:add",_,k)),onReorder:I[1]||(I[1]=(_,k)=>r("edit:reorder",_,k))},null,8,["ordered","editable","selected-id","widget-type-list"]),Re(Wk,{"widget-id":s.value,widgets:O.widgets,"context-targets-config":O.context.targetsConfig,"context-targets-week":O.context.targetsWeek,"context-groups-by-id":O.context.groupsById,"context-calendars":O.context.calendars,"context-selected":O.context.selected,strategy:O.context.onboardingStrategy,onClose:g,onSave:T,onUseGlobal:S,onOpenOnboarding:$},null,8,["widget-id","widgets","context-targets-config","context-targets-week","context-groups-by-id","context-calendars","context-selected","strategy"])],2))}}),[["__scopeId","data-v-365e536c"]]),Rk={key:1,class:"wp-ring-wrap"},jk={key:2,class:"wp-pie-wrap"},Vk={key:4,class:"wp-hbars"},Uk={key:5,class:"wp-heatmap"},Gk={key:8,class:"wp-note"},Kk={key:9,class:"wp-deck"},qk={key:10,class:"wp-deckstats"},Jk={key:11,class:"wp-generic"},Zk=gt(Ve({__name:"WidgetPreview",props:{type:{},selected:{type:Boolean}},setup(e){const o={time_summary_overview:"bars",time_summary_lookback:"bars",time_summary_compact:"bars",targets_v2:"ring",balance_index:"hbars",dayoff_trend:"dayoff",category_mix_trend:"heatmap",chart_per_day:"bars",chart_dow:"bars",chart_hod:"hod",chart_pie:"pie",chart_stacked:"stacked",calendar_table:"heatmap",calendar_stats:"deckstats",deck_cards:"deck",deck_stats:"deckstats"}[e.type]??"generic";function r(n){const s=[.15,.42,.12,.65,.28,.38,.1,.5,.22,.75,.18,.48,.15,.55,.3,.7,.45,.25,.6,.35,.8];return s[(n-1)%s.length]}return(n,s)=>(h(),y("div",{class:ke(["wp",[`wp--${M(o)}`,{"wp--sel":n.selected}]])},[M(o)==="bars"?(h(),y(ye,{key:0},[s[0]||(s[0]=Ya('<div class="wp-bar" style="height:40%;opacity:.35;" data-v-5ff4f026></div><div class="wp-bar" style="height:72%;opacity:.65;" data-v-5ff4f026></div><div class="wp-bar" style="height:55%;opacity:.5;" data-v-5ff4f026></div><div class="wp-bar" style="height:95%;" data-v-5ff4f026></div><div class="wp-bar" style="height:48%;opacity:.45;" data-v-5ff4f026></div><div class="wp-bar" style="height:80%;opacity:.75;" data-v-5ff4f026></div><div class="wp-bar" style="height:30%;opacity:.3;" data-v-5ff4f026></div>',7))],64)):M(o)==="ring"?(h(),y("div",Rk,[...s[1]||(s[1]=[i("div",{class:"wp-ring"},null,-1),i("span",{class:"wp-ring-label"},"67%",-1)])])):M(o)==="pie"?(h(),y("div",jk,[...s[2]||(s[2]=[i("div",{class:"wp-pie"},null,-1)])])):M(o)==="stacked"?(h(),y(ye,{key:3},[s[3]||(s[3]=Ya('<div class="wp-bar wp-bar--a" style="height:58%;" data-v-5ff4f026></div><div class="wp-bar wp-bar--b" style="height:75%;" data-v-5ff4f026></div><div class="wp-bar wp-bar--a" style="height:44%;" data-v-5ff4f026></div><div class="wp-bar wp-bar--b" style="height:90%;" data-v-5ff4f026></div><div class="wp-bar wp-bar--a" style="height:66%;" data-v-5ff4f026></div><div class="wp-bar wp-bar--b" style="height:52%;" data-v-5ff4f026></div>',6))],64)):M(o)==="hbars"?(h(),y("div",Vk,[...s[4]||(s[4]=[i("div",{class:"wp-hbar",style:{width:"78%",opacity:".85"}},null,-1),i("div",{class:"wp-hbar",style:{width:"52%",opacity:".6"}},null,-1),i("div",{class:"wp-hbar",style:{width:"65%",opacity:".7"}},null,-1),i("div",{class:"wp-hbar",style:{width:"40%",opacity:".45"}},null,-1)])])):M(o)==="heatmap"?(h(),y("div",Uk,[(h(),y(ye,null,Ne(21,l=>i("div",{key:l,class:"wp-cell",style:He({opacity:r(l)})},null,4)),64))])):M(o)==="hod"?(h(),y(ye,{key:6},[s[5]||(s[5]=Ya('<div class="wp-bar" style="height:20%;opacity:.2;" data-v-5ff4f026></div><div class="wp-bar" style="height:30%;opacity:.3;" data-v-5ff4f026></div><div class="wp-bar" style="height:85%;opacity:.8;" data-v-5ff4f026></div><div class="wp-bar" style="height:95%;" data-v-5ff4f026></div><div class="wp-bar" style="height:70%;opacity:.65;" data-v-5ff4f026></div><div class="wp-bar" style="height:40%;opacity:.38;" data-v-5ff4f026></div><div class="wp-bar" style="height:15%;opacity:.15;" data-v-5ff4f026></div>',7))],64)):M(o)==="dayoff"?(h(),y(ye,{key:7},[s[6]||(s[6]=Ya('<div class="wp-bar wp-bar--g" style="height:45%;opacity:.5;" data-v-5ff4f026></div><div class="wp-bar" style="height:70%;opacity:.65;" data-v-5ff4f026></div><div class="wp-bar wp-bar--g" style="height:35%;opacity:.4;" data-v-5ff4f026></div><div class="wp-bar" style="height:88%;" data-v-5ff4f026></div><div class="wp-bar wp-bar--g" style="height:55%;opacity:.55;" data-v-5ff4f026></div><div class="wp-bar" style="height:60%;opacity:.6;" data-v-5ff4f026></div>',6))],64)):M(o)==="note"?(h(),y("div",Gk,[...s[7]||(s[7]=[i("div",{class:"wp-noteline",style:{width:"88%"}},null,-1),i("div",{class:"wp-noteline",style:{width:"72%"}},null,-1),i("div",{class:"wp-noteline",style:{width:"60%"}},null,-1),i("div",{class:"wp-noteline",style:{width:"80%"}},null,-1)])])):M(o)==="deck"?(h(),y("div",Kk,[...s[8]||(s[8]=[i("div",{class:"wp-deckcard"},null,-1),i("div",{class:"wp-deckcard",style:{opacity:".6"}},null,-1),i("div",{class:"wp-deckcard",style:{opacity:".35"}},null,-1)])])):M(o)==="deckstats"?(h(),y("div",qk,[...s[9]||(s[9]=[i("div",{class:"wp-stat"},null,-1),i("div",{class:"wp-stat"},null,-1),i("div",{class:"wp-stat"},null,-1)])])):(h(),y("div",Jk))],2))}}),[["__scopeId","data-v-5ff4f026"]]),Yk=["onKeydown"],Xk={class:"ov-head"},Qk={class:"ov-search"},ex=["onKeydown"],tx={class:"ov-cats"},ax=["onClick"],ox={class:"ov-grid"},rx=["title","onClick"],nx={class:"ov-preview"},sx={key:0,class:"ov-empty"},ix={class:"ov-foot"},lx={class:"ov-hint"},dx={class:"ov-foot-actions"},cx=["disabled"],ux=["disabled"],gx=gt(Ve({__name:"AddWidgetModal",props:{open:{type:Boolean},widgetTypeList:{}},emits:["close","select"],setup(e,{emit:t}){const a=e,o=t,r=oe(""),n=oe(""),s=oe("All"),l=oe(null);Oe(()=>a.open,c=>{c&&(r.value="",n.value="",s.value="All",Kt(()=>{var f;return(f=l.value)==null?void 0:f.focus()}))});const d=x(()=>{const c=new Set(["All"]);return a.widgetTypeList.forEach(g=>{g.category&&c.add(g.category)}),["All","Time","Charts","Tasks","Notes"].filter(g=>c.has(g))}),p=x(()=>a.widgetTypeList.filter(c=>{const f=s.value==="All"||c.category===s.value,g=!r.value||c.label.toLowerCase().includes(r.value.toLowerCase());return f&&g})),u=x(()=>{var c;return((c=a.widgetTypeList.find(f=>f.type===n.value))==null?void 0:c.label)??""});function v(c){n.value&&(o("select",n.value),c?o("close"):n.value="")}function b(){n.value&&v(!0)}return(c,f)=>c.open?(h(),y("div",{key:0,class:"ov-backdrop",onMousedown:f[7]||(f[7]=Xe(g=>c.$emit("close"),["self"])),onKeydown:f[8]||(f[8]=Na(Xe(g=>c.$emit("close"),["stop"]),["esc"]))},[i("div",{class:"overlay-panel",role:"dialog","aria-modal":"true","aria-label":"Add a widget",onKeydown:[f[6]||(f[6]=Na(Xe(g=>c.$emit("close"),["stop"]),["esc"])),Na(Xe(b,["stop"]),["enter"])]},[i("div",Xk,[i("div",Qk,[f[9]||(f[9]=i("svg",{class:"ov-search-icon",viewBox:"0 0 13 13",width:"13",height:"13",fill:"none"},[i("circle",{cx:"5.5",cy:"5.5",r:"4",stroke:"currentColor","stroke-width":"1.6"}),i("path",{d:"M9 9l2.5 2.5",stroke:"currentColor","stroke-width":"1.6","stroke-linecap":"round"})],-1)),go(i("input",{ref_key:"searchInputRef",ref:l,"onUpdate:modelValue":f[0]||(f[0]=g=>r.value=g),class:"ov-search-input",placeholder:"Search widgets…",type:"search",onKeydown:[f[1]||(f[1]=Na(Xe(g=>c.$emit("close"),["stop"]),["esc"])),Na(Xe(b,["stop"]),["enter"])]},null,40,ex),[[An,r.value]])]),i("button",{class:"ov-cancel",type:"button",onClick:f[2]||(f[2]=g=>c.$emit("close"))},"Cancel")]),i("div",tx,[(h(!0),y(ye,null,Ne(d.value,g=>(h(),y("button",{key:g,type:"button",class:ke(["ov-cat",{on:s.value===g}]),onClick:T=>s.value=g},E(g),11,ax))),128))]),i("div",ox,[(h(!0),y(ye,null,Ne(p.value,g=>(h(),y("div",{key:g.type,class:ke(["ov-card",{on:n.value===g.type}]),role:"button",title:g.label,onClick:T=>n.value=g.type,onDblclick:f[3]||(f[3]=T=>v(!0))},[i("div",nx,[Re(Zk,{type:g.type,selected:n.value===g.type},null,8,["type","selected"])]),i("div",{class:ke(["ov-name",{on:n.value===g.type}])},E(g.label),3)],42,rx))),128)),p.value.length?ne("",!0):(h(),y("div",sx,"No widgets match your search."))]),i("div",ix,[i("span",lx,"↵ Add · Esc cancel"+E(n.value?` · ${u.value}`:""),1),i("div",dx,[i("button",{class:"ov-add-soft",type:"button",disabled:!n.value,onClick:f[4]||(f[4]=g=>v(!1))},"Add without closing",8,cx),i("button",{class:"ov-add",type:"button",disabled:!n.value,onClick:f[5]||(f[5]=g=>v(!0))}," Add"+E(u.value?` ${u.value}`:" widget"),9,ux)])])],40,Yk)],32)):ne("",!0)}}),[["__scopeId","data-v-d6b3170f"]]),px={class:"opt-section"},fx=["for"],bx=["id","min","max","step","value","onInput"],vx=["id","value","onChange"],hx=["value"],mx=["id","checked","onChange"],yx=["id","value","onInput"],wx={key:0,class:"opt-section"},kx=["for"],xx=["id","min","max","step","value","onInput"],_x=["id","value","onChange"],Cx=["value"],Sx=["id","checked","onChange"],Tx=["id","value","onInput"],$x={key:5,class:"colorlist"},Mx=["onClick"],Ax={key:6,class:"multi"},Dx=["value","checked","onChange"],Lx={key:7,class:"taglist"},Ex={key:0,class:"taglist__hint"},Nx={key:1,class:"taglist__hint"},Ix={class:"taglist__meta"},Ox=["value","checked","onChange"],Bx={class:"taglist__label"},Hx={key:0,class:"taglist__count"},Fx=["id","value","onInput"],Px={key:9,class:"filter-builder"},Wx=["value","onInput"],zx=["value","onInput"],Rx=["value","onInput"],jx=["onClick"],Vx=["onClick"],Ux={key:1,class:"opt-section"},Gx={class:"tab-actions"},Kx={class:"tab-actions__meta"},qx={class:"tab-actions__label"},Jx={key:0,class:"tab-actions__hint"},Zx={class:"tab-actions__buttons"},Yx=["disabled","onClick"],Xx=["disabled","onClick"],Qx={key:2,class:"opt-section"},e_={key:3,class:"opt-row opt-row--footer"},t_=gt(Ve({__name:"WidgetOptionsMenu",props:{entry:{},options:{},open:{type:Boolean},showAdvanced:{type:Boolean},context:{},tabs:{},currentTabId:{}},emits:["change","toggle","open-advanced","move-to-tab","duplicate-to-tab"],setup(e,{emit:t}){const a=oe(null),o=oe({});function r(){c.value=!c.value,c.value&&Kt(()=>{const B=a.value;if(!B)return;const G=B.getBoundingClientRect(),A=Math.min(440,window.innerWidth-24);let V=G.right-A;V<12&&(V=12),o.value={position:"fixed",top:`${G.bottom+8}px`,left:`${V}px`,width:`${A}px`}})}const n=e,s=t,l=oe({}),d={showHeader:!0,dense:!1,scale:"md"},p=[{key:"titlePrefix",label:"Title prefix",type:"text"},{key:"showHeader",label:"Show title",type:"toggle"},{key:"cardBg",label:"Card background",type:"color",hint:"Pick a card fill; leave empty for default."},{key:"scale",label:"Scale",type:"select",options:[{value:"sm",label:"Small"},{value:"md",label:"Normal"},{value:"lg",label:"Large"},{value:"xl",label:"Extra large"}]},{key:"dense",label:"Dense mode",type:"toggle"}],u=x(()=>{var he,Me;const B=new Set(p.map(ae=>ae.key)),G=((he=n.entry)==null?void 0:he.controls)||[],A=typeof((Me=n.entry)==null?void 0:Me.dynamicControls)=="function"?n.entry.dynamicControls(l.value||{},n.context||{}):[];return[...G,...A].filter(ae=>!B.has(ae.key))}),v=x(()=>(n.tabs||[]).map(B=>({id:String(B.id),label:String(B.label||B.id),current:String(B.id)===String(n.currentTabId||"")}))),b=x(()=>(n.tabs||[]).length===1);Oe(()=>[n.entry,n.options],([B,G])=>{const A=(B==null?void 0:B.defaultOptions)||{},V=typeof(B==null?void 0:B.resolveOptions)=="function"?B.resolveOptions(G||{},n.context||{}):{};l.value={...d,...A,...V,...G||{}}},{immediate:!0,deep:!0});const c=x({get:()=>!!n.open,set:B=>s("toggle",B)});function f(B,G){const A=Number(G.target.value);s("change",B,A)}function g(B,G){const A=G.target.value;s("change",B,A)}function T(B,G){const A=G.target.checked;s("change",B,A)}function S(B,G){const A=G.target.value;s("change",B,A)}function $(B){return Array.isArray(B==null?void 0:B.options)?B.options.map(G=>G==null?void 0:G.value):[]}function C(B,G){const A=m(B.key);return Array.isArray(A)&&A.length?A.includes(G):!!(B!=null&&B.defaultAll)}function H(B,G,A){const V=A.target.checked,he=m(B.key),Me=Array.isArray(he)&&he.length?[...he]:B!=null&&B.defaultAll?$(B):[],ae=new Set(Me);V?ae.add(G):ae.delete(G),s("change",B.key,Array.from(ae))}function O(B){return Array.isArray(B==null?void 0:B.options)?B.options.map(G=>String((G==null?void 0:G.value)??"")).filter(Boolean):[]}function I(B,G){const A=m(B.key);return(Array.isArray(A)?A.map(he=>String(he)):O(B)).includes(String(G))}function _(B){return!Array.isArray(m(B.key))}function k(B,G,A){const V=A.target.checked,he=O(B),Me=m(B.key),ae=Array.isArray(Me)?Me.map(ce=>String(ce)):he,U=new Set(ae),F=String(G);V?U.add(F):U.delete(F);const j=he.filter(ce=>U.has(ce));s("change",B.key,j)}function m(B){if(B==="scale")return l.value.scale??l.value.textSize;if(!B.includes("."))return l.value[B];const G=B.split(".");let A=l.value;for(const V of G){if(A==null)return;A=A[V]}return A}function w(B){const G=m(B);return Array.isArray(G)&&G.length?G:typeof G=="string"&&G.trim()?G.split(",").map(A=>A.trim()).filter(Boolean):L.slice(0,5)}function D(B,G,A){const V=[...w(B)];V[G]=A,s("change",B,V)}function R(B){const G=[...w(B),"#cccccc"];s("change",B,G)}const L=["#2563EB","#F97316","#10B981","#A855F7","#EC4899"];function Z(B){const G=m(B);if(Array.isArray(G))return G.map(A=>({label:String((A==null?void 0:A.label)||""),labels:Array.isArray(A==null?void 0:A.labels)?A.labels.join(", "):String((A==null?void 0:A.labels)||""),assignees:Array.isArray(A==null?void 0:A.assignees)?A.assignees.join(", "):String((A==null?void 0:A.assignees)||"")}));if(typeof G=="string"&&G.trim())try{const A=JSON.parse(G);if(Array.isArray(A))return A.map(V=>({label:String((V==null?void 0:V.label)||""),labels:Array.isArray(V==null?void 0:V.labels)?V.labels.join(", "):String((V==null?void 0:V.labels)||""),assignees:Array.isArray(V==null?void 0:V.assignees)?V.assignees.join(", "):String((V==null?void 0:V.assignees)||"")}))}catch{return[]}return[]}function K(B){const G=[...Z(B),{label:"",labels:"",assignees:""}];s("change",B,J(G))}function Y(B,G){const A=Z(B).filter((V,he)=>he!==G);s("change",B,J(A))}function le(B,G,A,V){const he=V.target.value,Me=Z(B).map((ae,U)=>U===G?{...ae,[A]:he}:ae);s("change",B,J(Me))}function J(B){return B.map(G=>({label:G.label.trim(),labels:de(G.labels),assignees:de(G.assignees)}))}function de(B){return B.split(",").map(G=>G.trim()).filter(Boolean)}return(B,G)=>(h(),y("div",{class:"options-wrapper",onKeydown:G[1]||(G[1]=Xe(()=>{},["stop"]))},[i("button",{ref_key:"triggerRef",ref:a,type:"button",class:"ic ic--config",title:"Open widget settings",onClick:Xe(r,["stop"])},[...G[2]||(G[2]=[Ya('<svg width="14" height="12" viewBox="0 0 14 12" fill="none" aria-hidden="true" data-v-2ef43534><path d="M1 3h12M1 6h12M1 9h12" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" data-v-2ef43534></path><circle cx="4" cy="3" r="1.5" stroke="currentColor" stroke-width="1.3" data-v-2ef43534></circle><circle cx="10" cy="6" r="1.5" stroke="currentColor" stroke-width="1.3" data-v-2ef43534></circle><circle cx="6" cy="9" r="1.5" stroke="currentColor" stroke-width="1.3" data-v-2ef43534></circle></svg><span class="ic-lbl" data-v-2ef43534>Settings</span>',2)])],512),c.value?(h(),y("div",{key:0,class:"options-pop",style:He(o.value)},[i("div",px,[G[3]||(G[3]=i("div",{class:"opt-section__title"},"Layout & title",-1)),(h(),y(ye,null,Ne(p,A=>i("div",{key:A.key,class:"opt-row"},[i("label",{for:`opt-${A.key}`},E(A.label),9,fx),A.type==="number"?(h(),y("input",{key:0,id:`opt-${A.key}`,type:"number",min:A.min,max:A.max,step:A.step||1,value:m(A.key)??"",onInput:V=>f(A.key,V)},null,40,bx)):A.type==="select"?(h(),y("select",{key:1,id:`opt-${A.key}`,value:m(A.key),onChange:V=>g(A.key,V)},[(h(!0),y(ye,null,Ne(A.options||[],V=>(h(),y("option",{key:V.value,value:V.value},E(V.label),9,hx))),128))],40,vx)):A.type==="toggle"?(h(),y("input",{key:2,id:`opt-${A.key}`,type:"checkbox",checked:!!m(A.key),onChange:V=>T(A.key,V)},null,40,mx)):A.type==="text"?(h(),y("input",{key:3,id:`opt-${A.key}`,type:"text",value:m(A.key)??"",onInput:V=>S(A.key,V)},null,40,yx)):A.type==="color"?(h(),lt(On,{key:4,"model-value":m(A.key)||"#ffffff","onUpdate:modelValue":V=>s("change",A.key,V)},null,8,["model-value","onUpdate:modelValue"])):ne("",!0)])),64))]),u.value.length?(h(),y("div",wx,[G[5]||(G[5]=i("div",{class:"opt-section__title"},"Widget options",-1)),(h(!0),y(ye,null,Ne(u.value,A=>(h(),y("div",{key:A.key,class:"opt-row"},[i("label",{for:`opt-${A.key}`},E(A.label),9,kx),A.type==="number"?(h(),y("input",{key:0,id:`opt-${A.key}`,type:"number",min:A.min,max:A.max,step:A.step||1,value:m(A.key)??"",onInput:V=>f(A.key,V)},null,40,xx)):A.type==="select"?(h(),y("select",{key:1,id:`opt-${A.key}`,value:m(A.key),onChange:V=>g(A.key,V)},[(h(!0),y(ye,null,Ne(A.options||[],V=>(h(),y("option",{key:V.value,value:V.value},E(V.label),9,Cx))),128))],40,_x)):A.type==="toggle"?(h(),y("input",{key:2,id:`opt-${A.key}`,type:"checkbox",checked:!!m(A.key),onChange:V=>T(A.key,V)},null,40,Sx)):A.type==="text"?(h(),y("input",{key:3,id:`opt-${A.key}`,type:"text",value:m(A.key)??"",onInput:V=>S(A.key,V)},null,40,Tx)):A.type==="color"?(h(),lt(On,{key:4,"model-value":m(A.key)||"#ffffff","onUpdate:modelValue":V=>s("change",A.key,V)},null,8,["model-value","onUpdate:modelValue"])):A.type==="colorlist"?(h(),y("div",$x,[(h(!0),y(ye,null,Ne(w(A.key),(V,he)=>(h(),lt(On,{key:`${A.key}-${he}`,"model-value":V,"onUpdate:modelValue":Me=>D(A.key,he,Me)},null,8,["model-value","onUpdate:modelValue"]))),128)),i("button",{type:"button",class:"ghost sm",onClick:V=>R(A.key)},"+",8,Mx)])):A.type==="multiselect"?(h(),y("div",Ax,[(h(!0),y(ye,null,Ne(A.options||[],V=>(h(),y("label",{key:`${A.key}-${V.value}`,class:"multi__item"},[i("input",{type:"checkbox",value:V.value,checked:C(A,V.value),onChange:he=>H(A,V.value,he)},null,40,Dx),i("span",null,E(V.label),1)]))),128))])):A.type==="taglist"?(h(),y("div",Lx,[A.hint?(h(),y("div",Ex,E(A.hint),1)):_(A)?(h(),y("div",Nx," All tags are active by default. Uncheck to hide a filter. ")):ne("",!0),(h(!0),y(ye,null,Ne(A.options||[],V=>(h(),y("label",{key:`${A.key}-${V.value}`,class:"taglist__item"},[i("span",Ix,[i("input",{type:"checkbox",value:V.value,checked:I(A,V.value),onChange:he=>k(A,V.value,he)},null,40,Ox),i("span",Bx,E(V.label),1)]),typeof V.count=="number"?(h(),y("span",Hx,E(V.count),1)):ne("",!0)]))),128))])):A.type==="textarea"?(h(),y("textarea",{key:8,id:`opt-${A.key}`,rows:"3",value:m(A.key)??"",onInput:V=>S(A.key,V)},null,40,Fx)):A.type==="filterbuilder"?(h(),y("div",Px,[G[4]||(G[4]=i("div",{class:"filter-builder__hint"},[Ge(" Tags and assigned can be used independently—leave one empty to ignore it. Use commas. Special assignees: "),i("code",null,"me"),Ge(", "),i("code",null,"unassigned"),Ge(". ")],-1)),(h(!0),y(ye,null,Ne(Z(A.key),(V,he)=>(h(),y("div",{key:`${A.key}-row-${he}`,class:"filter-builder__row"},[i("input",{type:"text",class:"filter-builder__label",value:V.label,placeholder:"Filter label",onInput:Me=>le(A.key,he,"label",Me)},null,40,Wx),i("input",{type:"text",class:"filter-builder__input",value:V.labels,placeholder:"Tags (comma separated)",onInput:Me=>le(A.key,he,"labels",Me)},null,40,zx),i("input",{type:"text",class:"filter-builder__input",value:V.assignees,placeholder:"Assigned (comma separated)",onInput:Me=>le(A.key,he,"assignees",Me)},null,40,Rx),i("button",{type:"button",class:"ghost sm",onClick:Me=>Y(A.key,he)},"✕",8,jx)]))),128)),i("button",{type:"button",class:"ghost sm",onClick:V=>K(A.key)},"+ Add filter",8,Vx)])):ne("",!0)]))),128))])):ne("",!0),v.value.length?(h(),y("div",Ux,[G[6]||(G[6]=i("div",{class:"opt-section__title"},"Tab actions",-1)),i("div",Gx,[(h(!0),y(ye,null,Ne(v.value,A=>(h(),y("div",{key:A.id,class:"tab-actions__row"},[i("div",Kx,[i("div",qx,E(A.label),1),A.current?(h(),y("div",Jx,"Current tab")):ne("",!0)]),i("div",Zx,[i("button",{type:"button",class:"ghost sm",disabled:A.current,onClick:Xe(V=>s("move-to-tab",A.id),["stop"])}," Move ",8,Yx),i("button",{type:"button",class:"ghost sm",disabled:A.current,onClick:Xe(V=>s("duplicate-to-tab",A.id),["stop"])}," Copy ",8,Xx)])]))),128))])])):b.value?(h(),y("div",Qx,[...G[7]||(G[7]=[i("div",{class:"opt-section__title"},"Tab actions",-1),i("div",{class:"tab-actions__empty"},"Add another tab to move or copy this widget between tabs.",-1)])])):ne("",!0),B.showAdvanced?(h(),y("div",e_,[i("button",{type:"button",class:"link-btn",title:"Opens a full targets editor for this widget only. Use the reset inside to go back to global.",onClick:G[0]||(G[0]=Xe(A=>s("open-advanced"),["stop"]))}," Advanced targets (widget only) ")])):ne("",!0)],4)):ne("",!0)],32))}}),[["__scopeId","data-v-2ef43534"]]);let zr=null,Ci=null,Pu=!1;function Wu(){var t;if(typeof document>"u")return null;const e=(t=document.getElementById("app"))==null?void 0:t.getAttribute("data-opsdash-theme-preference");return e==="auto"||e==="light"||e==="dark"?e:null}function a_(){if(!(typeof window>"u"))try{Jn(),o_()}catch(e){s_()&&console.warn("[opsdash] theme boot install failed",e)}}function o_(){if(zr||Ci||Pu)return;const e=[];if(document.documentElement&&e.push(document.documentElement),document.body&&document.body!==document.documentElement&&e.push(document.body),e.length&&(zr=new MutationObserver(()=>Jn()),e.forEach(t=>{zr==null||zr.observe(t,{attributes:!0,attributeFilter:["data-theme","class"]})})),window.matchMedia){const t=window.matchMedia("(prefers-color-scheme: dark)"),a=()=>Jn();typeof t.addEventListener=="function"?(t.addEventListener("change",a),Ci=()=>t.removeEventListener("change",a)):typeof t.addListener=="function"&&(t.addListener(a),Ci=()=>{t.removeListener(a)})}window.addEventListener("oc:theme:changed",Jn),Pu=!0}function Jn(){const e=r_();if(!e)return;["icon","shortcut icon"].forEach(a=>{let o=document.querySelector(`link[rel="${a}"]`);o||(o=document.createElement("link"),o.rel=a,document.head.appendChild(o)),o.type="image/svg+xml",o.href=e})}function r_(){const e=Si()==="dark",t=n_(),a=t("favicon.svg");if(a)return a;if(e){const r=t("app-dark.svg");if(r)return r}const o=t(e?"app-dark.svg":"app.svg");return o||"/apps-extra/opsdash/img/favicon.svg"}function Si(){var o,r,n,s,l;const e=(o=document.documentElement)==null?void 0:o.getAttribute("data-theme");if(e==="dark"||e==="light")return e;const t=(r=document.body)==null?void 0:r.getAttribute("data-theme");if(t==="dark"||t==="light")return t;if((n=document.body)!=null&&n.classList.contains("theme--dark"))return"dark";if((s=document.body)!=null&&s.classList.contains("theme--light"))return"light";const a=(l=window.matchMedia)==null?void 0:l.call(window,"(prefers-color-scheme: dark)");return a!=null&&a.matches?"dark":"light"}function n_(){const e=window;return t=>{var a;return typeof((a=e.OC)==null?void 0:a.imagePath)=="function"?e.OC.imagePath("opsdash",t):""}}function s_(){var t;const e=window;return!!((t=e==null?void 0:e.OC)!=null&&t.debug||e!=null&&e.__DEV__||e!=null&&e.__VUE_PROD_DEVTOOLS__)}function i_(){const e=typeof window<"u"?window:{},t=e.OC||{};try{const o=typeof t.getCurrentUser=="function"?t.getCurrentUser():t.currentUser;if(typeof o=="string")return o;if(o&&typeof o.uid=="string")return o.uid;if(o&&typeof o.userId=="string")return o.userId}catch{}const a=t.currentUser??t.userId??e._oc_current_user??"";return typeof a=="string"?a:""}function l_(e){const t=oe([]),a=oe({}),o=oe({}),r=oe({}),n=oe([]),s=oe(!1),l=oe(!1),d=x(()=>s.value&&!l.value),p=x(()=>s.value&&l.value),u=oe(!1),v=oe(null),b=oe(""),c=oe(""),f=oe(""),g=br({}),T=oe([]),S=oe([]),$=oe([]),C=oe({}),H=oe({}),O=oe({}),I=oe(Qt(_a())),_=oe(null),k=Wu()??"auto",m=oe(k),w=oe(Ao()),D=oe(Do());let R=0,L=null;function Z(){return L||(L=K().finally(()=>{L=null}),L)}async function K(){var B,G,A,V,he;const Y=++R;s.value=!0;const le={...o.value},J={...a.value};let de=!1;try{const Me=((B=e.isDebug)==null?void 0:B.call(e))===!0,ae=ee=>{const be={};return ee&&typeof ee=="object"&&Object.entries(ee).forEach(([ve,xe])=>{typeof xe=="string"&&xe.trim()!==""&&(be[String(ve)]=xe)}),be},U=()=>{var be,ve,xe,_e;let ee=!1;try{const ue=((be=C.value)==null?void 0:be.pie)||{},Ee=Array.isArray(ue.ids)?ue.ids.map(Se=>String(Se??"")):[];if(Ee.length){const Se=Array.isArray(ue.colors)?ue.colors:[],te=Ee.map((se,me)=>o.value[se]||Se[me]||"#60a5fa");C.value={...C.value||{},pie:{...ue,colors:te}},ee=!0}}catch(ue){(ve=e.isDebug)!=null&&ve.call(e)&&console.warn("recompute pie colors failed",ue)}try{const ue=(xe=C.value)==null?void 0:xe.perDaySeries;if(ue&&Array.isArray(ue.series)){const Ee=ue.series.map(Se=>{const te=String((Se==null?void 0:Se.id)??""),se=o.value[te]||Se.color||"#60a5fa";return{...Se,color:se}});C.value={...C.value||{},perDaySeries:{labels:ue.labels,series:Ee}},ee=!0}}catch(ue){(_e=e.isDebug)!=null&&_e.call(e)&&console.warn("recompute stacked colors failed",ue)}return ee},F=ee=>{var Ae,Pe,Ie,Be,ze,dt,wt,nt,ft,Dt,Bt,ht,xt,st,mt;const be=i_();b.value=be||String(((Ae=ee.meta)==null?void 0:Ae.uid)??""),c.value=String(((Pe=ee.meta)==null?void 0:Pe.from)??""),f.value=String(((Ie=ee.meta)==null?void 0:Ie.to)??""),u.value=!!((Be=ee.meta)!=null&&Be.truncated),v.value=((ze=ee.meta)==null?void 0:ze.limits)??null;const ve=ee.userSettings&&typeof ee.userSettings=="object"?ee.userSettings:null;if(ve){const Je=typeof ve.timezone=="string"?ve.timezone:"",Ue=typeof ve.locale=="string"?ve.locale:"",rt=typeof ve.firstDayOfWeek=="number"?ve.firstDayOfWeek:void 0;cb({timeZone:Je||void 0,locale:Ue||void 0,firstDayOfWeek:rt})}const xe=Array.isArray(ee.calendars)?ee.calendars:[],_e=ae((dt=ee.colors)==null?void 0:dt.byId),ue=ae((wt=ee.colors)==null?void 0:wt.byName),Ee=xe.map(Je=>{if(!Je||typeof Je!="object")return Je;const Ue={...Je},rt=String(Ue.id??""),Q=String(Ue.displayname??Ue.name??Ue.calendar??rt),ie=typeof Ue.color=="string"?Ue.color:"",Ce=typeof Ue.color_src=="string"?Ue.color_src:"",Ze=rt?_e[rt]:"",Mt=Q?ue[Q]:"",da=rt?le[rt]:"",Rt=Q?J[Q]:"",jt=da||Rt;let pt=ie;return!pt&&Ze&&(pt=Ze),!pt&&Mt&&(pt=Mt),(!pt||Ce==="fallback")&&jt&&(pt=jt),!pt&&jt&&(pt=jt),pt&&(pt!==ie&&(de=!0),Ue.color=pt,rt&&(_e[rt]=pt),Q&&(ue[Q]=pt)),Ue});if(t.value=Ee,a.value=ue,o.value=_e,Object.prototype.hasOwnProperty.call(ee,"onboarding")&&(_.value=ee.onboarding&&typeof ee.onboarding=="object"?{...ee.onboarding}:null),w.value=ui(ee.reportingConfig,w.value),D.value=gi(ee.deckSettings,D.value),ee.widgetPresets&&$u(ee.widgetPresets),e.widgetTabs){const Je=(nt=ee.onboarding)==null?void 0:nt.dashboardMode,Ue=e.widgetTabs.value||Au(Je==="quick"||Je==="pro"?Je:"standard",(ft=ee.onboarding)==null?void 0:ft.strategy);e.widgetTabs.value=Wr(ee.widgets,Ue)}const Se=((Dt=ee.groups)==null?void 0:Dt.byId)??((Bt=ee.groups)==null?void 0:Bt.byID)??((ht=ee.groups)==null?void 0:ht.ids)??{},te={};t.value.forEach(Je=>{const Ue=String((Je==null?void 0:Je.id)??""),rt=Number((Se==null?void 0:Se[Ue])??0);te[Ue]=Number.isFinite(rt)?Math.max(0,Math.min(9,Math.trunc(rt))):0}),r.value=te;const se=((xt=ee.targets)==null?void 0:xt.week)??{},me=((st=ee.targets)==null?void 0:st.month)??{};H.value=se&&typeof se=="object"?se:{},O.value=me&&typeof me=="object"?me:{},I.value=Qt(ee.targetsConfig??_a());const $e=typeof ee.themePreference=="string"?ee.themePreference:"";m.value=$e==="light"||$e==="dark"?$e:"auto",(mt=e.isDebug)!=null&&mt.call(e)&&(console.group("[opsdash] calendars/colors"),console.table((t.value||[]).map(Je=>({id:Je.id,name:Je.displayname,color:Je.color,raw:Je.color_raw,src:Je.color_src}))),console.log("colors.byId",o.value),console.log("colors.byName",a.value),ee.calDebug&&console.log("server calDebug",ee.calDebug),ee.debug&&(console.group("[opsdash] server query debug"),console.log(ee.debug),console.groupEnd()),console.groupEnd()),n.value=Array.isArray(ee.selected)?ee.selected.map(Je=>String(Je)):Array.isArray(ee.saved)?ee.saved.map(Je=>String(Je)):[],e.userChangedSelection.value=!1,de&&U()},j=async ee=>{var be,ve,xe,_e;c.value=String(((be=ee.meta)==null?void 0:be.from)??c.value),f.value=String(((ve=ee.meta)==null?void 0:ve.to)??f.value),u.value=!!((xe=ee.meta)!=null&&xe.truncated),v.value=((_e=ee.meta)==null?void 0:_e.limits)??null,Object.assign(g,ee.stats??{}),T.value=Array.isArray(ee.byCal)?ee.byCal:[],S.value=Array.isArray(ee.byDay)?ee.byDay:[],$.value=Array.isArray(ee.longest)?ee.longest:[],C.value=ee.charts??{},l.value=!0,de&&U(),await Kt(),e.scheduleDraw()},ce={range:e.range.value,offset:e.offset.value|0,include:["core"]};Me&&(ce.include=["core","debug"],ce.debug=!0);const fe=await e.getJson(e.route("loadData"),ce);if(Y!==R){(G=e.isDebug)!=null&&G.call(e)&&console.warn("discarding stale core response",{currentSeq:Y,loadSeq:R});return}F(fe),(A=e.onCoreLoaded)==null||A.call(e,fe);const N=((V=e.includeLookback)==null?void 0:V.call(e))===!0,P=["data"];N&&P.push("lookback"),Me&&P.push("debug");const re={range:e.range.value,offset:e.offset.value|0,include:P};Me&&(re.debug=!0);const ge=await e.postJson(e.route("loadData"),re);if(Y!==R){(he=e.isDebug)!=null&&he.call(e)&&console.warn("discarding stale data response",{currentSeq:Y,loadSeq:R});return}await j(ge)}catch(Me){console.error(Me),e.notifyError("Failed to load data")}finally{s.value=!1}}return{calendars:t,colorsByName:a,colorsById:o,groupsById:r,selected:n,isLoading:s,isInitialLoading:d,isRefreshing:p,isTruncated:u,truncLimits:v,uid:b,from:c,to:f,stats:g,byCal:T,byDay:S,longest:$,charts:C,targetsWeek:H,targetsMonth:O,targetsConfig:I,onboarding:_,load:Z,themePreference:m,reportingConfig:w,deckSettings:D}}const d_=[{version:"0.8.5",date:"2026-10-22",title:"Opsdash supports Nextcloud 35",teaser:"Opsdash 0.8.5 extends compatibility to Nextcloud 35.",summary:"This compatibility update adds Nextcloud 35 while retaining support for Nextcloud 31 through 34. The local development setup and shared CI matrix now include the new server release.",highlights:["Supports Nextcloud 31 through 35.","Success and error messages now use accessible app notifications.","Release notes close immediately while the dismissal is saved.","Nextcloud 35 CI coverage uses PHP 8.3, 8.4, and 8.5.","Includes a dedicated Nextcloud 35 development environment for repeatable Calendar, Deck, and dashboard checks."],actions:[{label:"↻ Reload dashboard",type:"reload"}],autoShow:!0,showInHistory:!0},{version:"0.8.3",date:"2026-07-20",title:"Time Summary now reads like a daily control panel",teaser:"Opsdash 0.8.3 turns Time Summary (Overview) into a current-week daily KPI card, adds a focused Deck action queue, and fixes missed monthly final recaps after month-end.",summary:"Version 0.8.3 focuses the Time Summary overview on what you need to read today and makes Deck cards useful as an operational queue. Time Summary starts with today’s hours and events, adapts its tabs to your goal type, fills Daily with six KPI cards, and keeps historical lookback separate. Deck cards now opens on dated active work, separates undated items into Backlog, limits the initial list, and relies on normal user-controlled scrolling. Monthly final reports also get a safer catch-up path: if the background job misses the first send slot after month-end, Opsdash still sends the completed previous month instead of dropping the recap.",highlights:["Time Summary (Overview) now centers the current day instead of mixing daily signals with old period-summary text rows.","The overview heading is now Today's time summary, so the weekly context supports the card instead of repeating in its title.","The Daily tab now uses a six-card KPI grid for average, median, avg/event, latest end, active days, and longest session.","Single Goal dashboards stay daily-only, so users are not offered calendar or category tabs that cannot add context.","Calendar Goals dashboards can switch between Daily and Calendars to inspect today’s color-filled calendar lanes without leaving the widget.","Calendar + Category Goals dashboards can switch between Daily, Calendars, and Categories for color-filled planning lanes and daily KPIs.","The compact week chart shows the current week’s rhythm directly inside the card without reintroducing lookback noise.","Widget configuration now exposes the controls that matter for this card: default view, daily KPIs, week mini chart, empty lanes, and max lanes.","The old lookback companion is no longer created for new overview layouts, while existing lookback widgets remain supported for saved dashboards.","Deck cards now starts with a Focus queue for dated active work, including overdue cards, instead of opening an unbounded list of every open item.","Undated work is available through a dedicated Backlog view; the queue starts with eight cards and expands only when you ask for the full list.","Deck card configuration now centers boards, stacks, starting view, list size, and compact rows rather than the previous broad filter matrix.","Time Off Trend exclusions now reliably update the current and historical comparison periods; choose calendars directly, or categories that have calendars assigned to them.","Rapid clicks on Refresh now reuse the active dashboard request instead of showing a rate-limit error.","Layout editing now keeps the floating widget controls aligned with the dashboard instead of drawing them over the sidebar. On smaller screens, the overlay sidebar closes before editing starts.","Scheduled monthly final reports now catch up after missed first-day runs and keep reporting the completed previous month.","Calendar stats adds a compact, configurable scan of tracked time, planned time, events, and average event duration for the selected calendars.","Deck cards can create a new Deck card directly from the dashboard after you choose its board and stack.","The active saved-profile badge moved from Targets to the tab bar; click it to open Profiles, even when the sidebar is collapsed.","Trend lookback now appears once beside the active profile as Last N weeks or months, instead of repeating in Time Off Trend and Balance Index.","Layout editing starts with a clear Select a widget prompt; after selection, the familiar slider icon appears in a prominent Settings button.","Deck Cards now retains the Compact list setting after dashboard saves and reloads.","The unused Notes widgets and API are gone; legacy data can be cleaned up safely with the supplied occ command."],images:[{src:Rr("release-notes/release-083-time-summary-overview.png"),alt:"Opsdash Time Summary overview widget with daily KPI cards, colored lanes, and a weekly mini chart",title:"Daily KPI overview for the current week",caption:"Daily is a compact KPI grid; Calendars and Categories use color-filled lanes; every tab keeps the current week rhythm underneath."}],actions:[{label:"↻ Reload dashboard",type:"reload"}],autoShow:!0,showInHistory:!0},{version:"0.8.2",date:"2026-07-09",title:"Nextcloud 34 is ready for Opsdash",teaser:"Opsdash 0.8.2 expands the supported Nextcloud window to 34 and hardens the local validation path with seeded Calendar, Deck, and browser smoke coverage.",summary:"Version 0.8.2 is a compatibility and release-readiness update. Opsdash now officially supports Nextcloud 34, the local development workflow includes a dedicated NC34 stack, and the release line has been verified on a seeded Nextcloud 34 instance with Calendar, Deck, API-level dashboard loads, and the must-pass browser smoke journey.",highlights:["Opsdash now advertises compatibility with Nextcloud 34 in addition to the existing 30-33 range.","A dedicated local Nextcloud 34 stack is now part of the repo, so compatibility work no longer depends on manual compose edits.","The standard seed flow was verified on Nextcloud 34 with both Calendar and Deck installed and enabled before seeding.","Seeded NC34 validation now covers realistic dashboard data, Deck boards/cards, and the existing overview-load smoke path.","The must-pass Playwright browser smoke suite was rerun against the seeded Nextcloud 34 lane to confirm the real UI shell still loads and the core overlays still work.","Release and contributor docs now reflect the NC34 lane so packaging and QA instructions line up with the actual compatibility target."],actions:[{label:"↻ Reload dashboard",type:"reload"}],autoShow:!0,showInHistory:!0},{version:"0.8.1",date:"2026-05-20",title:"Reporting is live, and planning modes now stay visually consistent",teaser:"Opsdash now turns your setup into real recap emails, keeps Single Goal, Calendar Goals, and Calendar + Category Goals visually aligned when you switch between them, and ships updated Standard and Advanced dashboard templates.",summary:"Version 0.8.1 makes reporting a real part of the dashboard flow, tightens up how strategy-aware widgets behave, and refreshes the default onboarding templates. You can configure weekly and monthly recaps in Preferences, send a test recap immediately, rely on widgets to follow your selected planning mode without stale category fallbacks or stray Unassigned labels, and start from Standard or Advanced layouts that now match the real current dashboard setups.",highlights:["Recap reporting now lives directly in onboarding Preferences with separate weekly and monthly settings, local send times, and a simpler final-checkpoint model.","Test sends now use the real mail pipeline, so you can verify the recap from the UI before relying on scheduled delivery.","Recap content now follows your goal setup: Single Goal, Calendar Goals, and Calendar + Category Goals each render a more fitting summary.","Scheduled recaps use your Nextcloud timezone and run through the built-in background-job system after the configured send time is reached.","The onboarding dashboard presets were refreshed: Standard now starts from the real single-tab default layout, while Advanced restores the current multi-tab workspace layout.","Targets, Time Summary, and Calendar Table now respect known planning strategies more reliably, even if older category mappings are still present in saved config.","Calendar Goals views stay focused on calendars: category-only fallback rows no longer leak back in after switching down from Calendar + Category Goals.","Time Summary no longer shows stray Unassigned category labels in the today block when the dashboard is in Calendar Goals mode."],images:[{src:Rr("release-notes/release-081-reporting-preferences.png"),alt:"Opsdash onboarding preferences with recap reporting settings",title:"Reporting now lives in Preferences",caption:"Weekly and monthly recap settings now sit in one place: enable reporting, choose the delivery mode per period, and set local send times before turning the scheduler loose."}],actions:[{label:"Open recap settings",type:"open_preferences"}],autoShow:!0,showInHistory:!0},{version:"0.8.0",date:"2026-05-06",title:"Smarter balance tracking, cleaner editing",teaser:"The Balance widget now tracks your score over time, the editing bar got a big polish, and the whole dashboard is safer under the hood.",summary:"Version 0.8.0 brings visible improvements to how Opsdash shows balance trends over time, makes layout editing feel more organised, and quietly tightens up a lot of behind-the-scenes behaviour.",highlights:["The editing bar is now cleaner and better organised: tabs stay on their own row, and the Add widget and Done editing buttons sit together in a quieter second row below.","Widget controls in the toolbar (Width, Height, Color) are now grouped into compact expandable sections, so the bar stays readable even when many options are available.","A shared color picker is now used consistently across the whole app — in calendar goals, targets, and widget customisation."],images:[{src:Rr("release-notes/release-080-composite.png"),alt:"Opsdash 0.8.0 — sidebar, browse bar, and edit bar side by side",title:"Sidebar · Browse bar · Edit bar",caption:"Left: the sidebar with your dashboard profile and quick-setup links. Right top: the clean browse bar. Right bottom: the new two-row edit bar with tabs on row 1 and actions on row 2."}],actions:[{label:"↻ Reset to default layout",type:"reload"}],autoShow:!0,showInHistory:!0},{version:"0.7.6",date:"2026-04-27",title:"What’s new now stays dismissed",teaser:"The release update panel now remembers when you have already seen the latest version.",summary:"This small update makes the in-app release notes less repetitive. After you close the latest update, Opsdash keeps it out of your way until a newer version is available.",highlights:["The latest update panel now appears only once for each app version.","Closing the panel is remembered more reliably across refreshes and dashboard saves.","Targets now show real over-goal progress above 200%, so very strong weeks no longer look capped.","You can still open release notes manually from the sidebar whenever you want to review what changed."],autoShow:!0,showInHistory:!0},{version:"0.7.5",date:"2026-04-20",title:"Updates now get their own in-app spotlight",teaser:"A cleaner in-app release note overlay now highlights what changed and keeps past updates one click away.",summary:"",highlights:["A new in-app update panel calls out the latest release in a cleaner, more readable format.","The newest version opens first, while older release notes stay available from the built-in history list.","Release copy is now written for end users, focusing on visible UI changes and feature updates instead of internal implementation details."],images:[{src:Rr("release-notes/release-075-overlay-shot.png"),alt:"Opsdash release notes overlay screenshot",title:"Live overlay preview",caption:"The first preview shows the real in-app release window as it appears in Opsdash."},{src:Rr("release-notes/release-075-overlay.svg"),alt:"Opsdash release notes layout illustration",title:"Layout concept",caption:"The second preview highlights the window structure and shared onboarding-style layout."}],autoShow:!0,showInHistory:!0},{version:"0.7.4",date:"2026-04-18",title:"Targets mode switching feels more reliable",teaser:"The Targets widget now changes cleanly between its planning modes without unexpected fallback rows.",summary:"This release smooths out one of the most visible planning flows in Opsdash: switching Targets between a single goal, per-calendar goals, and combined calendar-plus-category views.",highlights:["Switching between Targets layouts is now much clearer and no longer drops you into the wrong structure.","Calendar Goals stays focused on calendar rows instead of unexpectedly falling back to category sections.","The result is a more predictable setup flow when you adjust how planning is displayed on the dashboard."],autoShow:!0,showInHistory:!0}];function zu(e){return Lo(e).split(".").map(t=>Number.parseInt(t,10)).map(t=>Number.isFinite(t)?t:0)}function Lo(e){return String(e??"").trim().replace(/^v/i,"")}function Ru(e,t){const a=zu(e),o=zu(t),r=Math.max(a.length,o.length);for(let n=0;n<r;n+=1){const s=(o[n]??0)-(a[n]??0);if(s!==0)return s}return 0}function ju(){return[...d_].sort((e,t)=>Ru(e.version,t.version))}function Ti(e){const t=Lo(e);return ju().find(a=>a.version===t)??null}function Rr(e){const t=typeof window<"u"?window.OC:null;return typeof(t==null?void 0:t.imagePath)=="function"?t.imagePath("opsdash",e):`/apps-extra/opsdash/img/${e}`}function c_(e){const t=oe(!1);let a=null,o=0,r=0;function n(s=!0){a&&clearTimeout(a),a=setTimeout(async()=>{var d,p;a=null;const l=++o;r=l;try{t.value=!0;const u=Ua(e.targetsConfig.value),v={cals:e.selected.value,groups:e.groupsById.value,targets_week:e.targetsWeek.value,targets_month:e.targetsMonth.value,targets_config:u};e.themePreference&&(v.theme_preference=e.themePreference.value),e.reportingConfig&&(v.reporting_config=e.reportingConfig.value),e.deckSettings&&(v.deck_settings=e.deckSettings.value),e.widgetTabs&&(v.widgets=e.widgetTabs.value),(d=e.onboardingState)!=null&&d.value&&(v.onboarding=e.onboardingState.value),e.activePreset!==void 0&&(v.active_preset=e.activePreset.value??null);const b=await e.postJson(e.route("persist"),v);if(l!==r)return;Array.isArray(b.read)?e.selected.value=b.read.map(T=>String(T)):Array.isArray(b.saved)&&(e.selected.value=b.saved.map(T=>String(T)));const c=b.targets_config_read,f=b.targets_config_saved,g=p_(c??f,u);if(g&&(e.targetsConfig.value=g),e.themePreference){const T=u_(b.theme_preference_read??b.theme_preference_saved);T&&(e.themePreference.value=T)}if(e.reportingConfig){const T=ui(b.reporting_config_read??b.reporting_config_saved,e.reportingConfig.value);T&&(e.reportingConfig.value=T)}if(e.deckSettings){const T=gi(b.deck_settings_read??b.deck_settings_saved,e.deckSettings.value);T&&(e.deckSettings.value=T)}if(e.widgetTabs){const T=b.widgets_read??b.widgets_saved??b.widgets,S=e.widgetTabs.value||Xo("standard");e.widgetTabs.value=Wr(T,S)}if(e.onboardingState){const T=b.onboarding_read??b.onboarding_saved;if(T&&typeof T=="object"){const S=Lo(((p=e.onboardingState.value)==null?void 0:p.releaseNotesSeenVersion)??""),$=Lo(T.releaseNotesSeenVersion??"");e.onboardingState.value={...e.onboardingState.value||{},...T,releaseNotesSeenVersion:g_(S,$)}}}s&&e.onReload&&await e.onReload(),e.notifySuccess("Selection saved")}catch(u){if(l!==r)return;console.error(u),e.notifyError("Failed to save selection")}finally{l===r&&(t.value=!1)}},250)}return{queueSave:n,isSaving:t}}function u_(e){return e==="light"||e==="dark"||e==="auto"?e:null}function g_(e,t){return e?t&&Ru(e,t)>=0?t:e:t}function p_(e,t){if(!e)return;const a=JSON.parse(JSON.stringify(e)),o=Array.isArray(t==null?void 0:t.categories)?t.categories:[],r=new Map;return o.forEach(n=>{const s=String((n==null?void 0:n.id)??"");s&&r.set(s,n)}),Array.isArray(a.categories)&&(a.categories=a.categories.map(n=>{const s=String((n==null?void 0:n.id)??"");if(!s)return n;const l=r.get(s);return l&&((n==null?void 0:n.color)==null||n.color==="")&&typeof l.color=="string"&&l.color&&(n.color=l.color),n})),Qt(a)}function f_(e){const t=oe([]),a=oe(!1),o=oe(!1),r=oe(!1),n=oe([]),s=oe(null);async function l(){a.value=!0;try{const c=await e.getJson(e.route("presetsList"),{});t.value=Array.isArray(c==null?void 0:c.presets)?c.presets:[]}catch(c){console.error(c),e.notifyError("Failed to load presets")}finally{a.value=!1}}async function d(c,f={}){var T;const g=c.trim();if(g===""){e.notifyError("Enter a preset name.");return}o.value=!0;try{const S={name:g,selected:e.selected.value,groups:e.groupsById.value,targets_week:e.targetsWeek.value,targets_month:e.targetsMonth.value,targets_config:e.targetsConfig.value,...e.widgetTabs?{widgets:e.widgetTabs.value}:{},...(T=e.onboardingState)!=null&&T.value?{onboarding:e.onboardingState.value}:{},...e.themePreference?{theme_preference:e.themePreference.value}:{},...e.reportingConfig?{reporting_config:e.reportingConfig.value}:{},...e.deckSettings?{deck_settings:e.deckSettings.value}:{}},$=await e.postJson(e.route("presetsSave"),S);t.value=Array.isArray($==null?void 0:$.presets)?$.presets:t.value;const C=Array.isArray($==null?void 0:$.warnings)?$.warnings:[];n.value=C,s.value=g,f.notifySuccess!==!1&&e.notifySuccess(`Profile "${g}" saved`)}catch(S){console.error(S),e.notifyError("Failed to save preset")}finally{o.value=!1}}function p(c){var C,H;const f=!!(c&&Object.prototype.hasOwnProperty.call(c,"widgets"));let g=null;const T=Array.isArray(c==null?void 0:c.selected)?c.selected.map(O=>String(O)):[];e.selected.value=T;const S=c!=null&&c.groups&&typeof c.groups=="object"?c.groups:{};e.groupsById.value={...S},e.targetsWeek.value=c!=null&&c.targets_week&&typeof c.targets_week=="object"?c.targets_week:{},e.targetsMonth.value=c!=null&&c.targets_month&&typeof c.targets_month=="object"?c.targets_month:{};const $=c!=null&&c.targets_config&&typeof c.targets_config=="object"?Qt(c.targets_config):Ua(e.targetsConfig.value);if(e.targetsConfig.value=$,e.themePreference&&(c!=null&&c.theme_preference)){const O=c.theme_preference;e.setThemePreference?e.setThemePreference(O,{persist:!1}):e.themePreference.value=O}if(e.reportingConfig&&(c!=null&&c.reporting_config)&&(e.reportingConfig.value=ui(c.reporting_config,e.reportingConfig.value)),e.deckSettings&&(c!=null&&c.deck_settings)&&(e.deckSettings.value=gi(c.deck_settings,e.deckSettings.value)),e.widgetTabs&&(c!=null&&c.widgets)){const O=e.widgetTabs.value||Xo("standard");e.widgetTabs.value=Wr(c.widgets,O)}if(e.onboardingState&&(c!=null&&c.onboarding)&&typeof c.onboarding=="object"){const O=c.onboarding,I={...e.onboardingState.value||{completed:!1,version:0,strategy:"total_only",completed_at:""},...O},_=I.dashboardMode;(_==="quick"||_==="standard"||_==="pro")&&(g=_,(C=e.setDashboardMode)==null||C.call(e,_)),e.onboardingState.value=I}!f&&g&&((H=e.applyDashboardPreset)==null||H.call(e,g)),e.userChangedSelection.value=!1}async function u(c){const f=c.trim();if(f!==""){r.value=!0;try{const g=await e.getJson(e.route("presetsLoad",f),{}),T=(g==null?void 0:g.preset)??{},S=Array.isArray(T==null?void 0:T.warnings)?T.warnings:Array.isArray(g==null?void 0:g.warnings)?g.warnings:[];if(S.length){const $=`Some items in the saved profile are no longer available:
|
||
|
||
${S.map(C=>`• ${C}`).join(`
|
||
`)}
|
||
|
||
Apply the remaining values?`;if(!window.confirm($)){n.value=S,r.value=!1;return}}p(T),n.value=S,s.value=f,e.notifySuccess(`Profile "${f}" applied`),e.queueSave(!0),l().catch($=>console.warn("[opsdash] refresh presets after load failed",$))}catch(g){console.error(g),e.notifyError("Failed to load preset")}finally{r.value=!1}}}async function v(c){const f=c.trim();if(f!=="")try{const g=await e.deleteJson(e.route("presetsDelete",f));t.value=Array.isArray(g==null?void 0:g.presets)?g.presets:t.value,e.notifySuccess(`Profile "${f}" deleted`),s.value===f&&(s.value=null)}catch(g){console.error(g),e.notifyError("Failed to delete preset")}}function b(){n.value=[]}return{presets:t,presetsLoading:a,presetSaving:o,presetApplying:r,presetWarnings:n,lastLoadedPreset:s,refreshPresets:l,savePreset:d,loadPreset:u,deletePreset:v,clearPresetWarnings:b}}function b_(){let e=null;function t(){typeof window>"u"||typeof window.requestAnimationFrame!="function"||(e!==null&&window.cancelAnimationFrame(e),e=window.requestAnimationFrame(()=>{e=null,window.dispatchEvent(new Event("resize"))}))}return $t(()=>{e!==null&&typeof window<"u"&&typeof window.cancelAnimationFrame=="function"&&(window.cancelAnimationFrame(e),e=null)}),{scheduleDraw:t}}function v_(e){const t=typeof document<"u"?document.getElementById("app"):null;if(!t||!t.dataset)return"";const a=t.dataset;return a?String(a[e]??""):""}function h_(e){const t=oe(0),a=x(()=>{var u;const l=[],d=typeof window<"u"?window:{};try{if((u=d.OC)!=null&&u.imagePath){const v=d.OC.imagePath("opsdash","app.svg");v&&l.push(v)}}catch{}const p=e.root.value;return l.push(`${p}/apps/opsdash/img/app.svg`),l.push(`${p}/apps-extra/opsdash/img/app.svg`),l.push(`${p}/apps-writable/opsdash/img/app.svg`),l}),o=x(()=>a.value[Math.min(t.value,a.value.length-1)]||"");function r(){t.value+1<a.value.length&&t.value++}const n=oe(v_("opsdashVersion")||(e.pkgVersion?String(e.pkgVersion):""));async function s(){if(!n.value)try{const l=await e.getJson(e.pingUrl(),{});!n.value&&typeof(l==null?void 0:l.version)=="string"&&(n.value=l.version)}catch{}}return s(),{iconSrc:o,onIconError:r,appVersion:n}}function m_(e){const t=x(()=>{var r,n;return k_({perDaySeries:(r=e.charts.value)==null?void 0:r.perDaySeries,forecastMode:((n=e.activityCardConfig.value)==null?void 0:n.forecastMode)??"total",targetsConfig:e.targetsConfig.value,currentTargets:e.currentTargets.value,calendarCategoryMap:e.calendarCategoryMap.value})}),a=x(()=>{var r;return{pie:((r=e.charts.value)==null?void 0:r.pie)||null,stacked:t.value}}),o=x(()=>{var T,S;const r={},n=(T=e.charts.value)==null?void 0:T.pie,s=(S=e.charts.value)==null?void 0:S.perDaySeries,l=t.value||s,d=n&&Array.isArray(n.data)&&Array.isArray(n.ids),p=l&&Array.isArray(l.series)&&Array.isArray(l.labels),u=e.calendarCategoryMap.value,v=d?(n.ids||[]).map($=>String($??"")):[],b=d?(n.labels||[]).map($=>String($??"")):[],c=d?(n.data||[]).map($=>Number($)||0):[],f=d?n.colors||[]:[],g=p?l.series:[];return e.calendarGroups.value.forEach($=>{const C=[];d&&v.forEach((_,k)=>{u[_]===$.id&&C.push(k)});const H=C.length?{ids:C.map(_=>v[_]),labels:C.map(_=>b[_]),data:C.map(_=>c[_]),colors:C.map(_=>{var k;return f[_]||((k=e.colorsById.value)==null?void 0:k[v[_]])||"#60a5fa"})}:null,O=p?g.filter(_=>u[String((_==null?void 0:_.id)??"")]===$.id):[],I=O.length?{labels:l.labels,series:O}:null;r[$.id]={pie:H,stacked:I}}),r});return{calendarChartData:a,categoryChartsById:o}}const y_=/^\d{4}-\d{2}-\d{2}$/,w_="__uncategorized__";function k_(e){const t=e.perDaySeries;if(!t||!Array.isArray(t.labels)||!Array.isArray(t.series))return null;const a=t.labels.map(g=>String(g??"")),o=t.series.map(g=>{const T=String((g==null?void 0:g.id)??"");return{...g,id:T,name:String((g==null?void 0:g.name)??(g==null?void 0:g.label)??T),color:String((g==null?void 0:g.color)??""),data:a.map((S,$)=>{var H;const C=Number(((H=g==null?void 0:g.data)==null?void 0:H[$])??0);return Number.isFinite(C)?Math.max(0,C):0})}}),r=x_(e.forecastMode),n=na(new Date),s=a.map(g=>y_.test(g)&&g>n),l=[];if(s.forEach((g,T)=>{g&&l.push(T)}),!l.length||r==="off")return{labels:a,series:o};const d=e.targetsConfig??_a(),p=C_(e.currentTargets),u=e.calendarCategoryMap??{},v=l.length,b=new Map;o.forEach(g=>{let T=0;g.data.forEach((S,$)=>{s[$]||(T+=Math.max(0,S))}),b.set(g.id,T)});const c=Array.from(b.values()).reduce((g,T)=>g+T,0),f=new Map;if(o.forEach(g=>{f.set(g.id,__(a.length))}),r==="total"){const g=Math.max(0,Number(d.totalHours??0)),T=Math.max(0,g-c);if(T>1e-4){const S=T/v,$=o.map(H=>H.id),C=Vu($,b,p);$.forEach(H=>{const O=C[H]??0;if(O<=0)return;const I=f.get(H);I&&l.forEach(_=>{I[_]=Zn(S*O)})})}}else if(r==="calendar")o.forEach(g=>{const T=p[g.id]??0;if(T<=0)return;const S=Math.max(0,b.get(g.id)??0),$=Math.max(0,T-S);if($<=1e-4)return;const C=$/v,H=f.get(g.id);H&&l.forEach(O=>{H[O]=Zn(C)})});else if(r==="category"){const g=new Set,T=Array.isArray(d.categories)?d.categories:[],S=new Map;T.forEach(C=>{S.set(String(C.id),Math.max(0,Number(C.targetHours??0)))});const $=new Map;o.forEach(C=>{const H=u==null?void 0:u[C.id],O=H?String(H):w_;$.has(O)||$.set(O,[]),$.get(O).push(C.id)}),$.forEach((C,H)=>{if(!C.length)return;const O=S.get(H)??0;if(O<=0)return;const I=C.reduce((D,R)=>D+Math.max(0,b.get(R)??0),0),_=Math.max(0,O-I);if(_<=1e-4)return;const k=_/v,m={};C.forEach(D=>{m[D]=p[D]??0});const w=Vu(C,b,m);C.forEach(D=>{const R=w[D]??0;if(R<=0)return;const L=f.get(D);L&&(l.forEach(Z=>{L[Z]=Zn(k*R)}),g.add(D))})}),o.forEach(C=>{if(g.has(C.id))return;const H=p[C.id]??0;if(H<=0)return;const O=Math.max(0,b.get(C.id)??0),I=Math.max(0,H-O);if(I<=1e-4)return;const _=I/v,k=f.get(C.id);k&&l.forEach(m=>{k[m]=Zn(_)})})}return o.forEach(g=>{const T=f.get(g.id);T&&T.some(S=>S>1e-4)&&(g.forecast=T)}),{labels:a,series:o}}function x_(e){return e==="off"||e==="calendar"||e==="category"?e:"total"}function __(e){return Array.from({length:e},()=>0)}function Zn(e){const t=Math.round(e*100)/100;return Number.isFinite(t)?t:0}function C_(e){const t={};return e&&Object.entries(e).forEach(([a,o])=>{const r=Number(o);Number.isFinite(r)&&r>0&&(t[String(a)]=r)}),t}function Vu(e,t,a){const o={},r=e.reduce((l,d)=>l+Math.max(0,t.get(d)??0),0);if(r>1e-4)return e.forEach(l=>{const d=Math.max(0,t.get(l)??0);o[l]=d/r}),o;const n=e.reduce((l,d)=>l+Math.max(0,(a==null?void 0:a[d])??0),0);if(n>1e-4)return e.forEach(l=>{const d=Math.max(0,(a==null?void 0:a[l])??0);o[l]=d/n}),o;const s=e.length?1/e.length:0;return e.forEach(l=>{o[l]=s}),o}const oo="__uncategorized__",Uu="Unassigned";function S_(e){const t=x(()=>{var u;const p=(u=e.targetsConfig.value)==null?void 0:u.categories;return Array.isArray(p)?p:[]}),a=x(()=>{const p={};return t.value.forEach(u=>{p[String(u.id)]=u.label||String(u.id)}),p}),o=x(()=>{var v;const p=new Map;return(((v=e.targetsSummary.value)==null?void 0:v.categories)||[]).forEach(b=>p.set(String(b.id),b)),p}),r=x(()=>{const p=new Map;return t.value.forEach(u=>{(Array.isArray(u.groupIds)?u.groupIds:[]).forEach(b=>{const c=Math.max(0,Math.min(9,Math.trunc(Number(b)||0)));p.set(c,String(u.id))})}),p}),n=x(()=>{var v;const p=e.calendars.value;if(!Array.isArray(p))return(v=e.isDebug)!=null&&v.call(e)&&console.warn("[opsdash] calendars not array",p),{};const u={};return p.forEach(b=>{var g;const c=String((b==null?void 0:b.id)??"");if(!c)return;const f=((g=e.colorsById.value)==null?void 0:g[c])||String((b==null?void 0:b.color)||"");u[c]={name:String((b==null?void 0:b.displayname)||(b==null?void 0:b.name)||(b==null?void 0:b.calendar)||c),color:f||void 0}}),u}),s=x(()=>{var f;const p={},u=r.value,v=e.groupsById.value||{},b=g=>{const T=v==null?void 0:v[g],S=Math.max(0,Math.min(9,Math.trunc(Number(T)||0))),$=u.get(S);p[g]=$||oo},c=e.calendars.value;return Array.isArray(c)?(c.forEach(g=>{const T=String((g==null?void 0:g.id)??"");T&&b(T)}),(e.selected.value||[]).forEach(g=>{const T=String(g??"");T&&(p[T]||b(T))}),p):((f=e.isDebug)!=null&&f.call(e)&&console.warn("[opsdash] calendarCategoryMap: calendars not array",c),p)}),l=x(()=>{const p=["#60a5fa","#f59e0b","#ef4444","#10b981","#a78bfa","#fb7185","#22d3ee","#f97316"],u={};let v=0;const b=c=>{const f=String((c==null?void 0:c.id)??"");if(!f)return;if(u[f])return u[f];const g=typeof(c==null?void 0:c.color)=="string"&&c.color?c.color:void 0;if(g)return u[f]=g,g;const T=Object.entries(s.value).filter(([,$])=>$===f).map(([$])=>$);for(const $ of T){const C=n.value[$];if(C!=null&&C.color)return u[f]=C.color,C.color}const S=p[v%p.length];return v+=1,u[f]=S,S};return t.value.forEach(c=>b(c)),Object.values(s.value||{}).some(c=>c===oo)&&b({id:oo}),u}),d=x(()=>{var O,I,_,k,m,w,D,R,L,Z;const p=[],u=s.value,v=o.value,b=e.byCal.value;if(!Array.isArray(b))return(O=e.isDebug)!=null&&O.call(e)&&console.warn("[opsdash] aggregateCategoryRows: byCal not array",b),p;const c=new Map;b.forEach(K=>{const Y=String((K==null?void 0:K.id)??(K==null?void 0:K.calendar_id)??(K==null?void 0:K.calendar)??"");if(!Y)return;const le=u[Y]||oo;c.has(le)||c.set(le,[]),c.get(le).push({...K,calendarId:Y})}),(I=e.isDebug)!=null&&I.call(e)&&console.log("[opsdash] aggregateCategoryRows",{rowsSourceIsArray:Array.isArray(b),rowsSourceLength:b.length,byCat:c,assignments:u});const f=((k=(_=e.targetsSummary.value)==null?void 0:_.total)==null?void 0:k.daysLeft)??0,g=((w=(m=e.targetsSummary.value)==null?void 0:m.total)==null?void 0:w.calendarPercent)??0,T=((R=(D=e.targetsSummary.value)==null?void 0:D.total)==null?void 0:R.paceMode)??((Z=(L=e.targetsConfig.value)==null?void 0:L.pace)==null?void 0:Z.mode)??"days_only",S=K=>Math.round(K*100)/100,$=e.currentTargets.value||{},C=(K,Y,le)=>{const J=le.reduce((ae,U)=>{const F=Number($[U.calendarId]??0);return Number.isFinite(F)?ae+Math.max(0,F):ae},0),de=le.reduce((ae,U)=>{const F=Number((U==null?void 0:U.total_hours)??(U==null?void 0:U.hours)??0);return Number.isFinite(F)?ae+Math.max(0,F):ae},0),B=J>0?Math.max(0,Math.min(100,de/J*100)):0,G=de-J,A=Math.max(0,J-de),V=J<=0?"none":B>=100?"done":G>=0?"on_track":"behind",he=V==="done"?"Done":V==="on_track"?"On Track":V==="behind"?"Behind":"—",Me=f>0?A/f:0;return{id:K,label:Y,actualHours:S(de),targetHours:S(J),percent:B,deltaHours:S(G),remainingHours:S(A),needPerDay:S(Me),daysLeft:f,calendarPercent:Math.max(0,Math.min(100,g)),gap:S(B-g),status:V,statusLabel:he,includeWeekend:!0,paceMode:T}};if(t.value.map(K=>String(K.id)).forEach(K=>{const Y=a.value[K]||K,le=c.get(K)||[],J=v.get(K)||C(K,Y,le);p.push({id:K,label:Y,rows:le,summary:J,color:l.value[K]})}),c.has(oo)){const K=c.get(oo)||[];p.push({id:oo,label:Uu,rows:K,summary:C(oo,Uu,K),color:l.value[oo]})}return p});return{categoryConfigList:t,categoryLabelById:a,categoryColorMap:l,calendarCategoryMap:s,calendarGroups:d}}function $i(e){const t=Number(e);return Number.isFinite(t)?Math.round(t):0}function At(e){const t=Number(e);return Number.isFinite(t)?t:null}function Qo(e){if(e==null)return null;const t=String(e).trim();return t===""?null:t}function T_(e){const t=x(()=>{var H;const g=(H=e.charts.value)==null?void 0:H.pie;if(!g||!Array.isArray(g.data)||!Array.isArray(g.labels))return[];const T=g.data.map(O=>Number(O)||0),S=g.labels.map(O=>String(O||"")),$=T.reduce((O,I)=>O+Math.max(0,I),0);if($<=0)return[];const C=T.map((O,I)=>({name:S[I]||"",value:Math.max(0,O)}));return C.sort((O,I)=>I.value-O.value),C.slice(0,3).map(O=>({name:O.name,share:O.value/$*100}))}),a=x(()=>{var T;if(t.value.length)return t.value.map(S=>`${S.name} ${Ku(S.share)}`).join(", ");const g=(T=e.stats)==null?void 0:T.top_calendar;if(g&&g.calendar){const S=Number(g.share??0);return`${g.calendar} ${Ku(S)}`}return""}),o=x(()=>{var g;return e.selected.value.length||(((g=e.calendars.value)==null?void 0:g.length)??0)}),r=x(()=>{var C,H;const g=Array.isArray(e.byDay.value)?e.byDay.value:[],T=!!((C=e.stats)!=null&&C.current_period_clipped),S=String(((H=e.stats)==null?void 0:H.current_cutoff)??"").trim(),$=S?S.slice(0,10):"";return!T||!$?g:g.filter(O=>String((O==null?void 0:O.date)??"")<=$)}),n=x(()=>r.value.map(g=>Number((g==null?void 0:g.total_hours)??(g==null?void 0:g.hours)??0))),s=x(()=>{const g=n.value.map(T=>Number(T)||0);return e.activeDayMode.value==="active"?g.filter(T=>T>0):g}),l=x(()=>r.value.filter(g=>{const T=Gu(String(g==null?void 0:g.date));return T>=1&&T<=5}).map(g=>Number((g==null?void 0:g.total_hours)??(g==null?void 0:g.hours)??0))),d=x(()=>r.value.filter(g=>{const T=Gu(String(g==null?void 0:g.date));return T===0||T===6}).map(g=>Number((g==null?void 0:g.total_hours)??(g==null?void 0:g.hours)??0))),p=x(()=>e.activeDayMode.value==="active"?l.value.filter(g=>g>0):l.value),u=x(()=>e.activeDayMode.value==="active"?d.value.filter(g=>g>0):d.value),v=x(()=>{var S,$,C,H;const g=((S=e.stats)==null?void 0:S.balance_index)??(($=e.stats)==null?void 0:$.balanceIndex)??((H=(C=e.stats)==null?void 0:C.balance_overview)==null?void 0:H.index),T=Number(g);return Number.isFinite(T)?T:null}),b=x(()=>{var g,T,S,$,C,H,O;return{rangeLabel:e.rangeLabel.value,rangeStart:e.rangeStart.value,rangeEnd:e.rangeEnd.value,offset:e.offset.value,totalHours:Number(((g=e.stats)==null?void 0:g.total_hours)??0),futureHours:Number(((T=e.stats)==null?void 0:T.future_hours)??0),avgDay:Mi(s.value),avgEvent:Number(((S=e.stats)==null?void 0:S.avg_per_event)??0),medianDay:Ai(s.value),todayActualHours:Number((($=e.stats)==null?void 0:$.today_actual_hours)??0),todayPlannedHours:Number(((C=e.stats)==null?void 0:C.today_future_hours)??0),busiest:((H=e.stats)==null?void 0:H.busiest_day)??null,workdayAvg:Mi(p.value),workdayMedian:Ai(p.value),weekendAvg:Mi(u.value),weekendMedian:Ai(u.value),weekendShare:((O=e.stats)==null?void 0:O.weekend_share)??null,activeCalendars:o.value,calendarSummary:a.value,balanceIndex:v.value,delta:(()=>{var _;const I=(_=e.stats)==null?void 0:_.delta;return!I||typeof I!="object"?null:{totalHours:At(I.total_hours)??0,avgPerDay:At(I.avg_per_day)??0,avgPerEvent:At(I.avg_per_event)??0,events:$i(I.events)}})(),topCategory:e.topCategory.value?{label:e.topCategory.value.label,actualHours:e.topCategory.value.summary.actualHours,targetHours:e.topCategory.value.summary.targetHours,percent:e.topCategory.value.summary.percent,statusLabel:e.topCategory.value.summary.statusLabel,status:e.topCategory.value.summary.status,color:e.topCategory.value.color}:null}}),c=x(()=>{const g=e.stats,T=g==null?void 0:g.delta,S=At((T==null?void 0:T.weekend_share)??(T==null?void 0:T.weekendShare)),$=At((T==null?void 0:T.evening_share)??(T==null?void 0:T.eveningShare)),C=S!=null||$!=null?{weekendShare:S,eveningShare:$}:null;return{rangeLabel:e.rangeLabel.value,events:$i(g.events),activeDays:At(g.active_days),typicalStart:Qo(g.typical_start),typicalEnd:Qo(g.typical_end),weekendShare:At(g.weekend_share),eveningShare:At(g.evening_share),delta:C,earliestStart:Qo(g.earliest_start),latestEnd:Qo(g.latest_end),overlapEvents:At(g.overlap_events),longestSession:At(g.longest_session),lastDayOff:Qo(g.last_day_off),lastHalfDayOff:Qo(g.last_half_day_off)}}),f=x(()=>{var T;const g=(T=e.stats)==null?void 0:T.day_off_trend;return Array.isArray(g)?g.map(S=>{const $=Number((S==null?void 0:S.totalDays)??(S==null?void 0:S.total_days)??0),C=Number((S==null?void 0:S.daysOff)??(S==null?void 0:S.days_off)??0),H=Number((S==null?void 0:S.daysWorked)??(S==null?void 0:S.days_worked)??0);return{offset:Number((S==null?void 0:S.offset)??0)||0,label:String((S==null?void 0:S.label)??""),from:String((S==null?void 0:S.from)??""),to:String((S==null?void 0:S.to)??""),totalDays:Number.isFinite($)?Math.max(0,$):0,daysOff:Number.isFinite(C)?Math.max(0,C):0,daysWorked:Number.isFinite(H)?Math.max(0,H):0}}).filter(S=>S.totalDays>0):[]});return{topThree:t,topCalendarsSummary:a,timeSummary:b,activitySummary:c,activityDayOffTrend:f}}function Mi(e){return e.length?e.reduce((a,o)=>a+o,0)/e.length:0}function Ai(e){if(!e.length)return 0;const t=[...e].sort((o,r)=>o-r),a=Math.floor(t.length/2);return t.length%2?t[a]:(t[a-1]+t[a])/2}function Gu(e){return new Date(`${e}T00:00:00Z`).getUTCDay()}function Ku(e){return`${Number(e||0).toFixed(1)}%`}function $_(e){return{balanceOverview:x(()=>{var u,v,b,c;const a=(u=e.stats)==null?void 0:u.balance_overview;if(!a||typeof a!="object")return null;const o=Array.isArray(a.categories)?a.categories.map(f=>({id:String((f==null?void 0:f.id)??""),label:String((f==null?void 0:f.label)??""),hours:At(f==null?void 0:f.hours)??0,share:At(f==null?void 0:f.share)??0,prevShare:At(f==null?void 0:f.prev_share)??0,delta:At(f==null?void 0:f.delta)??0,color:e.categoryColorMap.value[String((f==null?void 0:f.id)??"")]})):[],r=Array.isArray(a.relations)?a.relations.map(f=>({label:String((f==null?void 0:f.label)??""),value:String((f==null?void 0:f.value)??"")})):[],n=Array.isArray((v=a.trend)==null?void 0:v.history)?a.trend.history:Array.isArray(a==null?void 0:a.trendHistory)?a.trendHistory:[],s={delta:Array.isArray((b=a.trend)==null?void 0:b.delta)?a.trend.delta.map(f=>({id:String((f==null?void 0:f.id)??""),label:String((f==null?void 0:f.label)??""),delta:At(f==null?void 0:f.delta)??0})):[],badge:String(((c=a.trend)==null?void 0:c.badge)??""),history:n.map(f=>({offset:$i(f==null?void 0:f.offset)??0,label:String((f==null?void 0:f.label)??""),categories:Array.isArray(f==null?void 0:f.categories)?f.categories.map(g=>({id:String((g==null?void 0:g.id)??""),label:String((g==null?void 0:g.label)??""),share:At(g==null?void 0:g.share)??0})):[]}))},l=Array.isArray(a.daily)?a.daily.map(f=>({date:String((f==null?void 0:f.date)??""),weekday:String((f==null?void 0:f.weekday)??""),total_hours:At(f==null?void 0:f.total_hours)??0,categories:Array.isArray(f==null?void 0:f.categories)?f.categories.map(g=>({id:String((g==null?void 0:g.id)??""),label:String((g==null?void 0:g.label)??""),hours:At(g==null?void 0:g.hours)??0,share:At(g==null?void 0:g.share)??0})):[]})):[],d=Array.isArray(a.warnings)?a.warnings.map(f=>String(f)):[];return{index:At(a.index)??0,categories:o,relations:r,trend:s,daily:l,warnings:d}})}}const jr=oe("auto"),Yn=oe("light"),qu=oe(!1),Vr=x(()=>jr.value==="auto"?Yn.value:jr.value);function M_(){return Wu()??"auto"}function Xn(e){if(typeof document>"u")return;const a=[document.getElementById("opsdash"),document.body].filter(Boolean);a.length&&(a.forEach(o=>o.classList.remove("opsdash-theme-light","opsdash-theme-dark")),e==="dark"?a.forEach(o=>o.classList.add("opsdash-theme-dark")):a.forEach(o=>o.classList.add("opsdash-theme-light")))}function Di(){Yn.value=Si()}let Ca=null,Eo=null;function A_(){typeof window>"u"||Ca||(Ca=window.matchMedia("(prefers-color-scheme: dark)"),Eo=()=>Di(),typeof Ca.addEventListener=="function"?Ca.addEventListener("change",Eo):typeof Ca.addListener=="function"&&Ca.addListener(Eo))}function D_(){Ca&&(Eo&&(typeof Ca.removeEventListener=="function"?Ca.removeEventListener("change",Eo):typeof Ca.removeListener=="function"&&Ca.removeListener(Eo)),Ca=null,Eo=null)}function L_(){qu.value||(jr.value=M_(),Yn.value=Si(),Xn(Vr.value),qu.value=!0),Et(()=>{typeof window<"u"&&window.addEventListener("oc:theme:changed",Di),A_(),Xn(Vr.value)}),$t(()=>{typeof window<"u"&&window.removeEventListener("oc:theme:changed",Di),D_()}),Oe(Vr,t=>{Xn(t)});function e(t){jr.value=t,Xn(Vr.value)}return{preference:jr,effectiveTheme:Vr,systemTheme:Yn,setThemePreference:e}}const Li=e=>e==="light"||e==="dark"?e:"auto";function E_(e){const t=oe(!1),a=oe(Li(e.serverPreference.value));let o=null;const r=typeof e.debounceMs=="number"?e.debounceMs:250,n=()=>{o&&(clearTimeout(o),o=null)};_n()&&$t(()=>{n()}),Oe(e.serverPreference,d=>{const p=Li(d);a.value=p,e.localPreference.value!==p&&(t.value=!0,e.applyLocalPreference(p),t.value=!1)},{immediate:!0});function s(d){t.value||d!==a.value&&(n(),o=setTimeout(async()=>{o=null;try{await e.postJson(e.route("persist"),{theme_preference:d}),a.value=d,e.notifySuccess("Theme preference saved")}catch(p){console.error(p),e.notifyError("Failed to save theme preference")}},r))}function l(d,p){const u=Li(d);e.applyLocalPreference(u),(p==null?void 0:p.persist)!==!1&&s(u)}return{setThemePreference:l}}function N_(e){const{preference:t,effectiveTheme:a,systemTheme:o,setThemePreference:r}=L_(),{setThemePreference:n}=E_({serverPreference:e.serverPreference,localPreference:t,applyLocalPreference:r,route:e.route,postJson:e.postJson,notifySuccess:e.notifySuccess,notifyError:e.notifyError});function s(l,d){n(l,d)}return{themePreference:t,effectiveTheme:a,systemTheme:o,setThemePreference:s}}const I_=Qt(_a()),O_=Zu(I_.categories);function Ju(e){return e==="total_only"||e==="total_plus_categories"||e==="full_granular"}function Zu(e){return Array.isArray(e)?JSON.stringify(e.map(t=>({id:String((t==null?void 0:t.id)??""),label:String((t==null?void 0:t.label)??""),targetHours:Number.isFinite(Number(t==null?void 0:t.targetHours))?Number(t.targetHours):0,includeWeekend:!!(t!=null&&t.includeWeekend),paceMode:(t==null?void 0:t.paceMode)==="time_aware"?"time_aware":"days_only",color:typeof(t==null?void 0:t.color)=="string"?t.color.toUpperCase():null,groupIds:Array.isArray(t==null?void 0:t.groupIds)?t.groupIds.map(a=>Number(a)).filter(a=>Number.isFinite(a)).sort((a,o)=>a-o):[]}))):"[]"}function B_(e){const{autoWizardNeeded:t,manualWizardOpen:a,onboardingRunId:o,onboardingWizardVisible:r,openWizardFromSidebar:n,wizardStartStep:s}=i1(),l=x(()=>Object.values(e.targetsWeek.value||{}).some(J=>Number(J)>0)),d=x(()=>{const J=(e.calendars.value||[]).length,de=new Set((e.selected.value||[]).filter(Boolean)).size;return J>0&&de>0&&de<J}),p=x(()=>{const J=new Set(e.selected.value||[]);return Object.entries(e.groupsById.value||{}).some(([de,B])=>J.has(de)&&Number(B)>0)}),u=x(()=>{var de;const J=(de=e.targetsConfig.value)==null?void 0:de.categories;return Array.isArray(J)&&J.length>0&&Zu(J)!==O_}),v=x(()=>{var J,de;return!!((J=e.onboardingState.value)!=null&&J.completed)||Ju((de=e.onboardingState.value)==null?void 0:de.strategy)||l.value||p.value||d.value||u.value}),b=e.actions.isOnboardingSaving,c=e.actions.isSnapshotSaving,f=e.actions.snapshotNotice,g=x(()=>(e.calendars.value||[]).map(J=>({id:String((J==null?void 0:J.id)??""),displayname:String((J==null?void 0:J.displayname)??(J==null?void 0:J.name)??(J==null?void 0:J.id)??""),color:typeof(J==null?void 0:J.color)=="string"?J.color:""})).filter(J=>J.id)),T=x(()=>[...e.selected.value]),S=x(()=>{var de;const J=(de=e.onboardingState.value)==null?void 0:de.strategy;return Ju(J)?J:u.value||p.value?"full_granular":l.value?"total_plus_categories":"total_only"}),$=x(()=>{var J;return((J=e.targetsConfig.value)==null?void 0:J.allDayHours)??8}),C=x(()=>{var J;return((J=e.targetsConfig.value)==null?void 0:J.totalHours)??40}),H=x(()=>{var J,de,B;return{balanceTrendLookback:((B=(de=(J=e.targetsConfig.value)==null?void 0:J.balance)==null?void 0:de.trend)==null?void 0:B.lookbackWeeks)??3}}),O=J=>{if(typeof J!="string")return null;const de=J.trim();if(!/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(de))return null;if(de.length===4){const[,B,G,A]=de;return`#${B}${B}${G}${G}${A}${A}`.toUpperCase()}return de.toUpperCase()},I=x(()=>{var de;return(Array.isArray((de=e.targetsConfig.value)==null?void 0:de.categories)?e.targetsConfig.value.categories:[]).map((B,G)=>({id:String((B==null?void 0:B.id)??`cat_${G}`),label:String((B==null?void 0:B.label)??`Category ${G+1}`),targetHours:Number.isFinite(B==null?void 0:B.targetHours)?Number(B.targetHours):0,includeWeekend:!!(B!=null&&B.includeWeekend),paceMode:(B==null?void 0:B.paceMode)==="time_aware"?"time_aware":"days_only",color:O(B==null?void 0:B.color)??null}))}),_=x(()=>{var A;const J={},de=new Map;(Array.isArray((A=e.targetsConfig.value)==null?void 0:A.categories)?e.targetsConfig.value.categories:[]).forEach(V=>{const he=Array.isArray(V==null?void 0:V.groupIds)?Number(V.groupIds[0]):Number(V==null?void 0:V.groupId);Number.isFinite(he)&&de.set(he,String((V==null?void 0:V.id)??""))});const G=new Set(e.selected.value||[]);return Object.entries(e.groupsById.value||{}).forEach(([V,he])=>{if(!G.has(V))return;const Me=de.get(Number(he));Me&&(J[V]=Me)}),J}),k=x(()=>({...e.deckSettings.value||{}})),m=x(()=>({...e.reportingConfig.value||{}})),w=x(()=>{var J;return((J=e.onboardingState.value)==null?void 0:J.dashboardMode)||"standard"});function D(J){if(!J)return!0;const de=J.version_required??ho;return!J.completed||(J.version??0)<de}function R(J){return J!=null&&J.resetRequested?!0:v.value?!1:D(J)}function L(J){const de=J??e.onboardingState.value;if(!e.hasInitialLoad.value&&!de)return;const B=D(de);t.value=R(de),(B||de!=null&&de.resetRequested)&&(s.value=null),de!=null&&de.resetRequested&&(a.value=!0)}Oe(()=>e.onboardingState.value,J=>{e.hasInitialLoad.value&&L(J)});async function Z(J){try{await e.actions.complete(J),a.value=!1,t.value=!1}catch(de){console.error("[opsdash] onboarding complete failed",de)}}async function K(){const J=t.value,de=a.value;try{a.value=!1,t.value=!1,await e.actions.skip()}catch(B){a.value=de,t.value=J,console.error("[opsdash] onboarding skip failed",B)}}function Y(){t.value||(t.value=!1,a.value=!1)}async function le(){try{await e.actions.saveSnapshot()}catch(J){console.error("[opsdash] onboarding snapshot failed",J)}}return{autoWizardNeeded:t,manualWizardOpen:a,onboardingRunId:o,onboardingWizardVisible:r,openWizardFromSidebar:n,wizardStartStep:s,hasExistingConfig:v,wizardCalendars:g,wizardInitialSelection:T,wizardInitialStrategy:S,wizardInitialCategories:I,wizardInitialAssignments:_,wizardInitialAllDayHours:$,wizardInitialTotalHours:C,wizardInitialTargetsConfig:H,wizardInitialDeckSettings:k,wizardInitialReportingConfig:m,wizardInitialDashboardMode:w,isOnboardingSaving:b,isSnapshotSaving:c,snapshotNotice:f,evaluateOnboarding:L,handleWizardComplete:Z,handleWizardSkip:K,handleWizardClose:Y,handleWizardSaveSnapshot:le}}function H_(e){const t=oe(!1),a=oe(!1),o=oe(""),r=x(()=>ju().filter(g=>g.showInHistory!==!1)),n=x(()=>Lo(e.appVersion.value)),s=x(()=>Ti(n.value)),l=x(()=>{const g=Lo(o.value);return Ti(g)}),d=x(()=>l.value??s.value),p=x(()=>{var g;return Lo(((g=e.onboardingState.value)==null?void 0:g.releaseNotesSeenVersion)??"")}),u=x(()=>{var g;return e.hasInitialLoad.value&&!e.isBlocked.value&&!!((g=s.value)!=null&&g.autoShow)&&n.value!==""&&n.value!==p.value});function v(){s.value&&(o.value=s.value.version,t.value=!0)}function b(g){const T=Ti(g);T&&(o.value=T.version,t.value=!0)}Oe(u,g=>{g&&!t.value&&v()},{immediate:!0}),Oe(()=>e.isBlocked.value,g=>{var T;g&&u.value&&((T=d.value)==null?void 0:T.version)===n.value?t.value=!1:!g&&u.value&&!t.value&&v()});async function c(){if(!s.value||p.value===s.value.version)return;const g={...e.onboardingState.value||{completed:!1,version:0,strategy:"",completed_at:"",dashboardMode:"standard"},releaseNotesSeenVersion:s.value.version};await e.postJson(e.route("persist"),{onboarding:g}),e.onboardingState.value=g}async function f(){var T;const g=((T=d.value)==null?void 0:T.version)===n.value&&!!s.value;t.value=!1;try{g&&(a.value=!0,await c()),t.value=!1}catch(S){t.value=!0,console.error("[opsdash] release notes persist failed",S),e.notifyError("Failed to save release note state")}finally{a.value=!1}}return{isOpen:t,isSaving:a,entries:r,currentVersion:n,currentEntry:s,activeEntry:d,selectedVersion:o,openCurrent:v,openVersion:b,closeOverlay:f}}function F_(e){const t=x(()=>!e.navOpen.value),a=x(()=>e.range.value==="week"?"Switch to month":"Switch to week"),o=x(()=>!e.from.value||!e.to.value?"":Er(e.from.value,e.to.value,{year:"numeric",month:"2-digit",day:"2-digit"}));function r(){try{const p=e.performLoad();if(p&&typeof p.then=="function")return p.catch(u=>{console.error("[opsdash] range load failed",u)})}catch(p){console.error("[opsdash] range load failed",p)}}function n(){r()}function s(){e.range.value=e.range.value==="week"?"month":"week",e.offset.value=0,r()}function l(){e.offset.value=(e.offset.value||0)-1,r()}function d(){e.offset.value=(e.offset.value||0)+1,r()}return{showCollapsedRangeControls:t,rangeToggleLabel:a,rangeDateLabel:o,loadCurrent:n,toggleRangeCollapsed:s,goPrevious:l,goNext:d}}const Yu=["cals","groups","targets_week","targets_month","targets_config","theme_preference","onboarding","widgets"],P_=new Set(["auto","light","dark"]);function W_(e){if(!e||typeof e!="object")return{cleaned:{},ignored:["<invalid-payload>"]};const t=e,a={},o=[];if(Yu.forEach(r=>{t[r]!==void 0&&(a[r]=t[r])}),Object.keys(t).forEach(r=>{Yu.includes(r)||o.push(r)}),a.cals&&!Array.isArray(a.cals)&&(o.push("cals"),delete a.cals),"groups"in a&&(!a.groups||typeof a.groups!="object")&&(o.push("groups"),delete a.groups),"targets_week"in a&&(!a.targets_week||typeof a.targets_week!="object")&&(o.push("targets_week"),delete a.targets_week),"targets_month"in a&&(!a.targets_month||typeof a.targets_month!="object")&&(o.push("targets_month"),delete a.targets_month),"targets_config"in a&&(!a.targets_config||typeof a.targets_config!="object")&&(o.push("targets_config"),delete a.targets_config),a.theme_preference&&!P_.has(String(a.theme_preference))&&(o.push("theme_preference"),delete a.theme_preference),"onboarding"in a&&(a.onboarding==null||typeof a.onboarding!="object")&&(o.push("onboarding"),delete a.onboarding),"widgets"in a){const r=a.widgets,n=Array.isArray(r),s=r&&typeof r=="object"&&Array.isArray(r.tabs);!n&&!s&&(o.push("widgets"),delete a.widgets)}return{cleaned:a,ignored:o}}function z_(e,t="0.6.0"){return{version:t,generated:new Date().toISOString(),payload:e}}function R_(e){function t(){const s={cals:[...e.selected.value],groups:{...e.groupsById.value},targets_week:{...e.targetsWeek.value},targets_month:{...e.targetsMonth.value},targets_config:Ua(e.targetsConfig.value),theme_preference:e.themePreference.value};return e.onboardingState.value&&(s.onboarding={...e.onboardingState.value}),e.widgetTabs&&(s.widgets=e.widgetTabs.value),s}function a(s,l){if(e.createDownload){e.createDownload(s,l);return}const d=new Blob([JSON.stringify(l,null,2)],{type:"application/json"}),p=URL.createObjectURL(d),u=document.createElement("a");u.href=p,u.download=s,document.body.appendChild(u),u.click(),document.body.removeChild(u),URL.revokeObjectURL(p)}function o(){try{const s=t(),l=z_(s),d=`opsdash-config-${l.generated.slice(0,10)}.json`;a(d,l),e.notifySuccess("Configuration exported")}catch(s){console.error(s),e.notifyError("Failed to export configuration")}}async function r(s){const{cleaned:l,ignored:d}=W_(s);if(!Object.keys(l).length){e.notifyError("No recognised configuration keys found in file");return}if(l.cals&&(e.selected.value=l.cals.map(p=>String(p))),l.groups){const p={};Object.entries(l.groups).forEach(([u,v])=>{const b=Number(v);p[String(u)]=Number.isFinite(b)?b:0}),e.groupsById.value=p}if(l.targets_week){const p={};Object.entries(l.targets_week).forEach(([u,v])=>{const b=Number(v);Number.isFinite(b)&&(p[String(u)]=b)}),e.targetsWeek.value=p}if(l.targets_month){const p={};Object.entries(l.targets_month).forEach(([u,v])=>{const b=Number(v);Number.isFinite(b)&&(p[String(u)]=b)}),e.targetsMonth.value=p}if(l.targets_config&&(e.targetsConfig.value=Qt(l.targets_config)),l.theme_preference&&e.setThemePreference(l.theme_preference,{persist:!1}),l.onboarding&&typeof l.onboarding=="object"&&(e.onboardingState.value={...l.onboarding}),e.widgetTabs&&l.widgets){const p=e.widgetTabs.value||Xo("standard");e.widgetTabs.value=Wr(l.widgets,p)}await e.postJson(e.route("persist"),l),await e.performLoad(),d.length?e.notifyError(`Configuration imported with ignored keys: ${d.join(", ")}`):e.notifySuccess("Configuration imported")}async function n(s){try{const l=await s.text(),d=JSON.parse(l),p=d!=null&&d.payload&&typeof d.payload=="object"?d.payload:d;await r(p)}catch(l){console.error(l),e.notifyError("Failed to import configuration")}}return{collectSidebarPayload:t,exportSidebarConfig:o,importSidebarConfig:n,applyConfigSource:r}}function j_(e=null){const t=oe(e);function a(o){t.value=t.value===o?null:o}return{detailsIndex:t,toggle:a}}const Xu="opsdash.sidebarOpen";function V_(){var e;if(typeof window>"u")return!0;try{const t=(e=window.localStorage)==null?void 0:e.getItem(Xu);if(t==="true")return!0;if(t==="false")return!1}catch{return!0}return!0}function U_(){const e=oe(V_());Oe(e,r=>{var n;if(typeof window<"u"){try{(n=window.localStorage)==null||n.setItem(Xu,r?"true":"false")}catch{}Kt(()=>{window.dispatchEvent(new Event("resize"))}).catch(()=>{})}},{immediate:!1});const t=()=>{e.value=!e.value},a=x(()=>e.value?"Hide sidebar":"Show sidebar"),o=x(()=>e.value?"⟨":"⟩");return{navOpen:e,toggleNav:t,navToggleLabel:a,navToggleIcon:o}}const G_=[{id:"navigation",title:"Navigation",items:[{id:"nav-prev",label:"Previous period",combo:["Alt","←"],description:"Go to the previous week or month"},{id:"nav-next",label:"Next period",combo:["Alt","→"],description:"Go to the next week or month"},{id:"nav-toggle-range",label:"Toggle week/month",combo:["Alt","Shift","R"],description:"Switch between week and month range"}]},{id:"targets",title:"Targets",items:[{id:"targets-focus",label:"Open Theme",combo:["Alt","T"],description:"Jump to theme controls"}]},{id:"misc",title:"Misc",items:[{id:"shortcuts-open",label:"Open cheat sheet",combo:["?"],description:"Display this overlay"},{id:"widget-options",label:"Open widget options",combo:["Shift","C"],description:"Toggle options for the selected widget (edit mode)"},{id:"layout-edit",label:"Toggle edit layout",combo:["Shift","E"],description:"Enter or exit widget layout editing"}]}];function K_(e){const t=oe(!1),a=oe(null);let o=!1;const r=!!_n();function n(c){c&&(a.value=c),t.value=!0}function s(){t.value=!1;const c=a.value;if(a.value=null,c&&typeof c.focus=="function")try{c.focus()}catch{}}function l(){typeof e.ensureSidebarVisible=="function"&&e.ensureSidebarVisible()}function d(c,f){f.preventDefault(),l(),c()}function p(c){var S;const f=c;if(!f)return!1;if(f.isContentEditable)return!0;const g=f.tagName;if(!g)return!1;if(["INPUT","TEXTAREA","SELECT"].includes(g))return!0;const T=(S=f.getAttribute)==null?void 0:S.call(f,"role");return!!(T&&["textbox","combobox"].includes(T))}function u(c){if(c.defaultPrevented)return;const f=p(c.target);if((c.key==="Escape"||c.key==="Esc")&&t.value){c.preventDefault(),s();return}if(!c.altKey&&!c.ctrlKey&&!c.metaKey&&!f&&(c.key==="?"||c.shiftKey&&c.key==="/")){c.preventDefault(),n(c.target instanceof HTMLElement?c.target:null);return}if(c.altKey&&!c.ctrlKey&&!c.metaKey){const g=c.key;if(g==="ArrowLeft"){d(e.goPrevious,c);return}if(g==="ArrowRight"){d(e.goNext,c);return}if(c.shiftKey&&(g==="R"||g==="r")){d(e.toggleRange,c);return}if(g==="T"||g==="t"){e.openConfigPanel&&(c.preventDefault(),l(),e.openConfigPanel());return}}if(c.shiftKey&&!c.altKey&&!c.metaKey&&!c.ctrlKey){if((c.key==="e"||c.key==="E")&&e.toggleEditLayout&&!f){c.preventDefault(),e.toggleEditLayout();return}if((c.key==="c"||c.key==="C")&&e.openWidgetOptions&&!f){c.preventDefault(),e.openWidgetOptions();return}}}function v(){o||typeof document>"u"||(document.addEventListener("keydown",u),o=!0)}function b(){!o||typeof document>"u"||(document.removeEventListener("keydown",u),o=!1)}return v(),r&&(Et(()=>{v()}),$t(()=>{b()})),{shortcutsOpen:t,openShortcuts:n,closeShortcuts:s,shortcutGroups:G_,unbindShortcuts:b}}function q_(e){const t=oe(!1),a=oe(!1),o=oe(null);async function r(d){var p,u,v,b,c,f;try{t.value=!0,o.value=null,e.setThemePreference(d.themePreference,{persist:!1});const g={cals:d.selected,groups:d.groups,targets_week:d.targetsWeek,targets_month:d.targetsMonth,targets_config:d.targetsConfig,theme_preference:d.themePreference,deck_settings:d.deckSettings,reporting_config:d.reportingConfig,onboarding:{completed:!0,version:ho,strategy:d.strategy,dashboardMode:d.dashboardMode,completed_at:new Date().toISOString(),releaseNotesSeenVersion:((p=e.onboardingState.value)==null?void 0:p.releaseNotesSeenVersion)??""}};d.widgets&&(g.widgets=d.widgets),await e.postJson(e.route("persist"),g),e.setSelected(d.selected),e.setTargetsWeek(d.targetsWeek),e.setTargetsMonth(d.targetsMonth),e.setTargetsConfig(d.targetsConfig),e.setGroupsById(d.groups),(u=e.setDashboardMode)==null||u.call(e,d.dashboardMode),d.widgets&&((v=e.setWidgetTabs)==null||v.call(e,d.widgets)),(c=e.setOnboardingState)==null||c.call(e,{completed:!0,version:ho,strategy:d.strategy,dashboardMode:d.dashboardMode,version_required:ho,resetRequested:!1,releaseNotesSeenVersion:((b=e.onboardingState.value)==null?void 0:b.releaseNotesSeenVersion)??""});const T=(f=d.profileName)==null?void 0:f.trim();d.saveProfile&&T&&await e.savePreset(T),await e.reloadAfterPersist(),e.notifySuccess("Onboarding saved")}catch(g){throw console.error(g),e.notifyError("Failed to save onboarding"),g}finally{t.value=!1}}async function n(d){var p,u,v,b,c,f,g,T;try{t.value=!0,o.value=null,d.theme_preference&&e.setThemePreference(d.theme_preference,{persist:!1}),await e.postJson(e.route("persist"),d),d.cals&&e.setSelected(d.cals),d.targets_week&&e.setTargetsWeek(d.targets_week),d.targets_month&&e.setTargetsMonth(d.targets_month),d.targets_config&&e.setTargetsConfig(d.targets_config),d.groups&&e.setGroupsById(d.groups),d.deck_settings&&((p=e.setDeckSettings)==null||p.call(e,d.deck_settings)),d.reporting_config&&((u=e.setReportingConfig)==null||u.call(e,d.reporting_config)),d.onboarding&&((f=e.setOnboardingState)==null||f.call(e,{completed:d.onboarding.completed??!1,version:d.onboarding.version??ho,strategy:d.onboarding.strategy??((v=e.onboardingState.value)==null?void 0:v.strategy)??"total_only",completed_at:d.onboarding.completed_at??"",dashboardMode:d.onboarding.dashboardMode??((b=e.onboardingState.value)==null?void 0:b.dashboardMode),version_required:ho,resetRequested:!1,releaseNotesSeenVersion:d.onboarding.releaseNotesSeenVersion??((c=e.onboardingState.value)==null?void 0:c.releaseNotesSeenVersion)??""})),d.dashboardMode&&((g=e.setDashboardMode)==null||g.call(e,d.dashboardMode)),d.widgets&&((T=e.setWidgetTabs)==null||T.call(e,d.widgets))}catch(S){throw console.error(S),e.notifyError("Failed to save step"),S}finally{t.value=!1}}async function s(){var d,p;try{t.value=!0,o.value=null,await e.postJson(e.route("persist"),{onboarding:{completed:!0,version:ho,strategy:((d=e.onboardingState.value)==null?void 0:d.strategy)??"total_only",completed_at:new Date().toISOString(),releaseNotesSeenVersion:((p=e.onboardingState.value)==null?void 0:p.releaseNotesSeenVersion)??""}}),await e.reloadAfterPersist(),e.notifySuccess("You can revisit the setup wizard any time from Guided Setup.")}catch(u){throw console.error(u),e.notifyError("Failed to update onboarding state"),u}finally{t.value=!1}}async function l(){try{a.value=!0,o.value=null;const p=`Before onboarding ${new Date().toISOString().slice(0,16).replace("T"," ")}`;await e.savePreset(p,{notifySuccess:!1}),o.value={type:"success",message:`Profile "${p}" saved — find it under Config & Setup.`}}catch(d){throw console.error("[opsdash] profile backup failed",d),o.value={type:"error",message:"Failed to save profile backup. Please try again."},d}finally{a.value=!1}}return{isOnboardingSaving:t,isSnapshotSaving:a,snapshotNotice:o,complete:r,saveStep:n,skip:s,saveSnapshot:l}}function J_(e){const t=oe([]),a=oe(!1),o=oe(""),r=oe(null);let n=0;const s=new Map;let l="";function d(u,v){return`${u}::${v}`}async function p(u=!1){const v=(e.from.value||"").trim(),b=(e.to.value||"").trim();if(!v||!b){t.value=[],o.value="",a.value=!1,r.value=null,l="";return}const c=d(v,b);if(!u&&s.has(c)){const g=s.get(c);t.value=g.cards,r.value=g.fetchedAt,o.value="",a.value=!1,l=c;return}const f=++n;a.value=!0,o.value="";try{const g=await Mw({from:v,to:b});if(f===n){const T=new Date().toISOString();t.value=g,r.value=T,s.set(c,{cards:g,fetchedAt:T}),l=c}}catch(g){f===n&&(t.value=[],o.value=g instanceof Error?g.message:"deck_fetch_failed",e.notifyError&&e.notifyError("Unable to fetch Deck cards. Check the Deck app or try again."))}finally{f===n&&(a.value=!1)}}return Oe(()=>[e.from.value,e.to.value],([u,v],[b,c])=>{if(!u||!v){t.value=[];return}u===b&&v===c||p()}),{deckCards:t,deckLoading:a,deckError:o,deckLastFetchedAt:r,refreshDeck:p}}function Ei(e){return["all","mine","open_all","open_mine","done_all","done_mine","archived_all","archived_mine","due_all","due_mine","due_today_all","due_today_mine"].includes(e)?e:"all"}function yo(e,t,a){const o=e.status;return t==="open"?o==="active":t==="archived"?o==="archived":t==="done"?o==="done"?!0:a&&o==="archived":!1}function Ni(e){return e.dueTs!=null||e.match==="due"}function Ii(e){if(e.dueTs==null)return!1;const t=new Date,a=new Date(t.getFullYear(),t.getMonth(),t.getDate()).getTime(),o=a+24*60*60*1e3;return e.dueTs>=a&&e.dueTs<o}function Z_(e){const{deckSettings:t,deckCards:a,uid:o,root:r}=e,n=oe(Ei(t.value.defaultFilter));Oe(()=>t.value.defaultFilter,f=>{const g=Ei(f);g!==n.value&&(n.value=g)});const s=x(()=>{const f=new Set((t.value.hiddenBoards||[]).map(g=>Number(g)).filter(g=>Number.isFinite(g)));return(a.value||[]).filter(g=>!f.has(Number(g.boardId)))}),l=x(()=>{const f=t.value.mineMode??"assignee",g=(o.value||"").trim().toLowerCase();return T=>{if(!g)return!1;const S=(T.assignees||[]).some(I=>typeof I.uid=="string"&&I.uid.toLowerCase()===g),$=typeof T.createdBy=="string"?T.createdBy.trim().toLowerCase():"",C=$&&$===g,H=typeof T.doneBy=="string"?T.doneBy.trim().toLowerCase():"",O=H&&H===g;return f==="creator"?C||O:f==="assignee"?S||O:S||C||O}}),d=x(()=>{const f=l.value,g=t.value.solvedIncludesArchived!==!1,T=n.value,S=s.value;if(T==="all")return S;if(T==="mine")return S.filter(H=>f(H));if(T.startsWith("due_today")){const H=T.endsWith("_mine");return S.filter(O=>{const I=Ii(O),_=H?f(O):!0;return I&&_})}if(T.startsWith("due_")){const H=T.endsWith("_mine");return S.filter(O=>{const I=Ni(O),_=H?f(O):!0;return I&&_})}const[$,C]=T.split("_");return S.filter(H=>{const O=yo(H,$,g),I=C==="all"?!0:f(H);return O&&I})}),p=x(()=>{const f=l.value,g=t.value.solvedIncludesArchived!==!1,T=s.value;return[{value:"all",label:"All cards",mine:!1,matches:()=>!0},{value:"open_all",label:"Open · All",mine:!1,matches:$=>yo($,"open",g)},{value:"open_mine",label:"Open · Mine",mine:!0,matches:$=>yo($,"open",g)&&f($)},{value:"done_all",label:"Done · All",mine:!1,matches:$=>yo($,"done",g)},{value:"done_mine",label:"Done · Mine",mine:!0,matches:$=>yo($,"done",g)&&f($)},{value:"archived_all",label:"Archived · All",mine:!1,matches:$=>yo($,"archived",g)},{value:"archived_mine",label:"Archived · Mine",mine:!0,matches:$=>yo($,"archived",g)&&f($)},{value:"due_all",label:"Due · All",mine:!1,matches:$=>Ni($)},{value:"due_mine",label:"Due · Mine",mine:!0,matches:$=>Ni($)&&f($)},{value:"due_today_all",label:"Due today · All",mine:!1,matches:$=>Ii($)},{value:"due_today_mine",label:"Due today · Mine",mine:!0,matches:$=>Ii($)&&f($)}].map($=>({value:$.value,label:$.label,mine:$.mine,count:T.filter($.matches).length}))}),u=x(()=>{const f=l.value,g=t.value.solvedIncludesArchived!==!1,T=s.value,S=[];return[{key:"open_all",label:"Open · All",status:"open",mine:!1},{key:"open_mine",label:"Open · Mine",status:"open",mine:!0},{key:"done_all",label:"Done · All",status:"done",mine:!1},{key:"done_mine",label:"Done · Mine",status:"done",mine:!0},{key:"archived_all",label:"Archived · All",status:"archived",mine:!1},{key:"archived_mine",label:"Archived · Mine",status:"archived",mine:!0}].forEach(C=>{const H=T.filter(_=>{const k=yo(_,C.status,g),m=C.mine?f(_):!0;return k&&m}),O=new Map;H.forEach(_=>{if(_.boardId==null)return;const k=Number(_.boardId),m=O.get(k)||{count:0,title:_.boardTitle||"",color:_.boardColor};m.count+=1,m.title=_.boardTitle||m.title,m.color=_.boardColor??m.color,O.set(k,m)});let I;if(O.size){const _=Array.from(O.entries()).sort((k,m)=>m[1].count-k[1].count);I={title:_[0][1].title,color:_[0][1].color}}S.push({key:C.key,label:C.label,titles:H.map(_=>_.title||`Card ${_.id}`),count:H.length,board:I})}),S}),v=x(()=>{const f=t.value.ticker||{autoScroll:!0,intervalSeconds:5},g=Math.min(10,Math.max(3,Number(f.intervalSeconds??5)||5));return{autoScroll:f.autoScroll!==!1,intervalSeconds:g}}),b=x(()=>t.value.filtersEnabled&&t.value.enabled&&!!(o.value||"").trim()),c=x(()=>`${r.value||""}/apps/deck/`);return{deckFilter:n,deckVisibleCards:s,deckMineMatcher:l,deckFilteredCards:d,deckSummaryBuckets:u,deckTickerConfig:v,deckCanFilterMine:b,deckUrl:c,deckFilterOptions:p}}const Y_=new Set(["deck_cards","deck_stats"]);function X_(e){const{widgetsRegistry:t,createDefaultTabs:a,normalizeWidgetTabs:o,dashboardMode:r,deckEnabled:n,hasInitialLoad:s,queueSaveRef:l}=e;function d(){return a()}const p=oe(d().tabs),u=oe(d().defaultTabId),v=oe(u.value),b=oe(!1),c=oe(!1),f=oe("");function g(){var ae;s.value&&b.value&&((ae=l.value)==null||ae.call(l,!1),b.value=!1)}Oe(()=>s.value,ae=>{ae&&b.value&&g()});const T=x(()=>p.value.find(ae=>ae.id===v.value)||p.value[0]);function S(ae){p.value.some(U=>U.id===ae)&&(v.value=ae)}function $(ae){p.value.some(U=>U.id===ae)&&(u.value=ae,v.value=ae,b.value=!0,g())}const C=x(()=>{var U;const ae=((U=T.value)==null?void 0:U.widgets)||[];return n.value?ae:ae.filter(F=>!Y_.has(F.type))}),H=x(()=>Object.keys(t).filter(ae=>ae!=="time_summary_lookback").map(ae=>{var U,F;return{type:ae,label:((U=t[ae])==null?void 0:U.label)||ae,category:(F=t[ae])==null?void 0:F.category}}));function O(ae){r.value=ae;const U=a();p.value=G(U.tabs,ae),u.value=U.defaultTabId,v.value=U.defaultTabId,b.value=!0,g()}function I(ae,U){p.value=p.value.map(F=>F.id===ae?{...F,widgets:U([...F.widgets])}:F)}function _(ae,U){var j;const F=(j=T.value)==null?void 0:j.id;F&&(I(F,ce=>ce.map(fe=>fe.id===ae?U({...fe,layout:{...fe.layout}}):fe)),b.value=!0,g())}function k(ae){const U=["quarter","half","full"];_(ae,F=>{const j=U.indexOf(F.layout.width),ce=U[(j+1)%U.length];return{...F,layout:{...F.layout,width:ce}}})}function m(ae){const U=["s","m","l","xl"];_(ae,F=>{const j=U.indexOf(F.layout.height),ce=U[(j+1)%U.length];return{...F,layout:{...F.layout,height:ce}}})}function w(ae,U){var P;const F=[...C.value].sort((re,ge)=>(re.layout.order||0)-(ge.layout.order||0)),j=F.findIndex(re=>re.id===ae);if(j<0)return;const ce=U==="up"?j-1:j+1;if(ce<0||ce>=F.length)return;const fe=F[j].layout.order;F[j].layout.order=F[ce].layout.order,F[ce].layout.order=fe;const N=(P=T.value)==null?void 0:P.id;N&&(I(N,()=>F),b.value=!0,g())}function D(ae){var F;const U=(F=T.value)==null?void 0:F.id;U&&(I(U,j=>j.filter(ce=>ce.id!==ae)),b.value=!0,g())}function R(ae){const U=p.value.find(j=>j.id===ae);return((U==null?void 0:U.widgets)||[]).reduce((j,ce)=>Math.max(j,ce.layout.order||0),0)+10}function L(ae,U={}){return{...ae,...U,layout:{...ae.layout,...U.layout||{}},options:ae.options?JSON.parse(JSON.stringify(ae.options)):{}}}function Z(ae,U){var N;const F=(N=T.value)==null?void 0:N.id;if(!F||F===U)return!1;const j=p.value.find(P=>P.id===F),ce=j==null?void 0:j.widgets.find(P=>P.id===ae);if(!ce||!p.value.some(P=>P.id===U))return!1;const fe=L(ce,{layout:{...ce.layout,order:R(U)}});return p.value=p.value.map(P=>P.id===F?{...P,widgets:P.widgets.filter(re=>re.id!==ae)}:P.id===U?{...P,widgets:[...P.widgets,fe]}:P),v.value=U,b.value=!0,g(),!0}function K(ae,U){var N;const F=(N=T.value)==null?void 0:N.id;if(!F||F===U)return null;const j=p.value.find(P=>P.id===F),ce=j==null?void 0:j.widgets.find(P=>P.id===ae);if(!ce||!p.value.some(P=>P.id===U))return null;const fe=L(ce,{id:`widget-${ce.type}-${Date.now().toString(36)}`,layout:{...ce.layout,order:R(U)}});return p.value=p.value.map(P=>P.id===U?{...P,widgets:[...P.widgets,fe]}:P),b.value=!0,g(),fe.id}function Y(ae){var fe;const U=t[ae];if(!U)return;const F=C.value.reduce((N,P)=>Math.max(N,P.layout.order||0),0),j={id:`widget-${ae}-${Date.now()}`,type:ae,options:{},layout:{...U.defaultLayout,order:F+10},version:1},ce=(fe=T.value)==null?void 0:fe.id;ce&&(I(ce,N=>[...N,j]),f.value="",b.value=!0,g())}function le(ae,U){var P;const F=t[ae];if(!F)return;const j=C.value.reduce((re,ge)=>Math.max(re,ge.layout.order||0),0);let ce=Number.isFinite(U)?Number(U):j+10;for(Number.isFinite(ce)||(ce=j+10);C.value.some(re=>re.layout.order===ce);)ce+=.1;const fe={id:`widget-${ae}-${Date.now()}`,type:ae,options:{},layout:{...F.defaultLayout,order:ce},version:1},N=(P=T.value)==null?void 0:P.id;N&&(I(N,re=>[...re,fe]),b.value=!0,g())}function J(ae,U){var fe;if(!Number.isFinite(U??NaN))return;const F=Number(U),j=C.value.map(N=>N.id===ae?{...N,layout:{...N.layout,order:F}}:{...N});j.sort((N,P)=>(N.layout.order||0)-(P.layout.order||0));const ce=(fe=T.value)==null?void 0:fe.id;ce&&(I(ce,()=>j.map((N,P)=>({...N,layout:{...N.layout,order:(P+1)*10}}))),b.value=!0,g())}function de(ae,U,F){var ce;const j=(ce=T.value)==null?void 0:ce.id;j&&(I(j,fe=>fe.map(N=>{if(N.id!==ae)return N;const P={...N.options||{}};if(U.includes(".")){const re=U.split("."),ge={...P};let ee=ge;for(let be=0;be<re.length-1;be+=1){const ve=re[be];ee[ve]={...ee[ve]||{}},ee=ee[ve]}return ee[re[re.length-1]]=F,{...N,options:ge}}return U==="scale"?(P.scale=F,"textSize"in P&&delete P.textSize,{...N,options:P}):(P[U]=F,{...N,options:P})})),b.value=!0,g())}function B(){const ae=a();p.value=G(ae.tabs,r.value),u.value=ae.defaultTabId,v.value=ae.defaultTabId,b.value=!0,g()}function G(ae,U){return U!=="pro"?ae:ae.map(F=>F.id==="tab-1"?{...F,widgets:F.widgets.filter(j=>j.type!=="deck_stats")}:F)}function A(ae){const U=`tab-${Date.now().toString(36)}`,F=String(ae??"").trim()||`Tab ${p.value.length+1}`,j={id:U,label:F.slice(0,48),widgets:[]};p.value=[...p.value,j],v.value=j.id,b.value=!0,g()}function V(ae,U){const F=String(U||"").trim().slice(0,48);F&&(p.value=p.value.map(j=>j.id===ae?{...j,label:F}:j),b.value=!0,g())}function he(ae){var U,F;p.value.length<=1||(p.value=p.value.filter(j=>j.id!==ae),u.value===ae&&(u.value=((U=p.value[0])==null?void 0:U.id)||""),v.value===ae&&(v.value=((F=p.value[0])==null?void 0:F.id)||""),b.value=!0,g())}function Me(ae){const U=a(),F=o(ae,U);p.value=F.tabs,u.value=F.defaultTabId;const j=v.value;j&&F.tabs.some(ce=>ce.id===j)?v.value=j:v.value=F.defaultTabId}return{layoutTabs:p,defaultTabId:u,activeTabId:v,widgetsDirty:b,isLayoutEditing:c,newWidgetType:f,widgets:C,availableWidgetTypes:H,persistWidgets:g,applyDashboardPreset:O,updateWidget:_,cycleWidth:k,cycleHeight:m,moveWidget:w,moveWidgetToTab:Z,duplicateWidgetToTab:K,removeWidget:D,addWidget:Y,addWidgetAt:le,reorderWidget:J,updateWidgetOptions:de,resetWidgets:B,activeTab:T,setActiveTab:S,setDefaultTab:$,addTab:A,renameTab:V,removeTab:he,setTabsFromPayload:Me}}function Q_(e){const{performLoad:t,refreshPresets:a,onboardingState:o,hasInitialLoad:r,evaluateOnboarding:n,dashboardMode:s}=e;Oe(o,l=>{r.value&&n(l)}),Oe(o,l=>{const d=l==null?void 0:l.dashboardMode;(d==="quick"||d==="standard"||d==="pro")&&(s.value=d)}),Et(async()=>{console.info("[opsdash] start");try{await t()}catch(l){console.error(l),alert("Initial load failed")}a().catch(l=>console.warn("[opsdash] presets fetch failed",l))})}function e2(e){return Array.from(e.reduce((t,a)=>(a.boardId==null||t.has(a.boardId)||t.set(a.boardId,{id:a.boardId,title:a.boardTitle,color:a.boardColor}),t),new Map).values())}function t2(e){return{widgetContext:x(()=>{var a,o,r;return{summary:e.timeSummary.value,activeDayMode:e.activeDayMode.value,targetsSummary:e.targetsSummary.value,targetsConfig:e.targetsConfig.value,stats:e.stats,byDay:e.byDay.value,byCal:e.byCal.value,groupsById:e.groupsById.value,groups:e.calendarGroupsWithToday.value,balanceOverview:e.balanceOverview.value,balanceConfig:e.balanceCardConfig.value,rangeLabel:e.rangeLabel.value,rangeMode:e.range.value,offset:e.offset.value,from:e.from.value,to:e.to.value,lookbackWeeks:e.trendLookbackWeeks.value,balanceNote:e.balanceNote.value,activitySummary:e.activitySummary.value,activityConfig:e.activityCardConfig.value,activityDayOffTrend:e.activityDayOffTrend.value,activityTrendUnit:e.range.value==="month"?"mo":"wk",activityDayOffLookback:e.trendLookbackWeeks.value,deckBuckets:e.deckSummaryBuckets.value,deckRangeLabel:e.rangeLabel.value,deckLoading:e.deckLoading.value,deckError:e.deckError.value,deckTicker:e.deckTickerConfig.value,deckFilter:e.deckFilter.value,onDeckFilter:n=>e.setDeckFilter(n),deckShowBoardBadges:((o=(a=e.deckSettings.value)==null?void 0:a.ticker)==null?void 0:o.showBoardBadges)!==!1,deckUrl:e.deckUrl.value,deckCards:e.deckCards.value,onDeckCardsChanged:()=>e.refreshDeck(!0),deckBoards:e2(e.deckCards.value||[]),uid:e.uid.value,isLoading:e.isLoading.value,isInitialLoading:e.isInitialLoading.value,isRefreshing:e.isRefreshing.value,hasInitialLoad:e.hasInitialLoad.value,isLayoutEditing:e.isLayoutEditing.value,onUpdateWidgetOptions:(n,s,l)=>{e.updateWidgetOptions(n,s,l)},charts:e.charts.value,calendarChartData:e.calendarChartData.value,categoryChartsById:e.categoryChartsById.value,calendarGroups:e.calendarGroupsWithToday.value,calendars:e.calendars.value,calendarCategoryMap:e.calendarCategoryMap.value,categoryColorMap:e.categoryColorMap.value,colorsById:e.colorsById.value,colorsByName:e.colorsByName.value,currentTargets:e.currentTargets.value,targetsWeek:e.targetsWeek.value,selected:e.selected.value,calendarTodayHours:e.calendarTodayHours.value,categoryTodayHours:e.categoryTodayHours.value,onboardingStrategy:e.onboardingStrategy.value,activePreset:((r=e.activePreset)==null?void 0:r.value)??null}})}}function a2(e){const t=oe(""),a=oe(null),o=oe({open:!1,x:0,y:0,tabId:null}),r=oe(null),n=()=>{a.value=null,o.value={open:!1,x:0,y:0,tabId:null},r.value=null};Oe(()=>e.activeTabId.value,()=>{a.value||(t.value=e.activeTabLabel.value)},{immediate:!0}),Oe(()=>e.isLayoutEditing.value,$=>{$||n()});function s($){if(!e.isLayoutEditing.value){e.setActiveTab($),r.value=null;return}if(e.activeTabId.value!==$){e.setActiveTab($),a.value=null,r.value=null;return}a.value=$;const C=e.layoutTabs.value.find(H=>H.id===$);t.value=(C==null?void 0:C.label)||""}function l($,C,H){o.value={open:!0,x:$,y:C,tabId:H}}function d($,C){e.isLayoutEditing.value&&l($.clientX,$.clientY,C)}function p($,C){if(!e.isLayoutEditing.value)return;const H=$.currentTarget;if(!H){l($.clientX,$.clientY,C);return}const O=H.getBoundingClientRect();l(O.left,O.bottom+6,C)}function u(){o.value={open:!1,x:0,y:0,tabId:null}}function v(){o.value.tabId&&(e.setDefaultTab(o.value.tabId),u())}function b(){o.value.tabId&&(e.removeTab(o.value.tabId),u())}function c(){if(!o.value.tabId)return;a.value=o.value.tabId;const $=e.layoutTabs.value.find(C=>C.id===o.value.tabId);t.value=($==null?void 0:$.label)||"",u()}function f(){if(!a.value)return;const $=t.value.trim(),C=e.layoutTabs.value.find(H=>H.id===a.value);if(!C){a.value=null;return}if(!$){t.value=C.label,a.value=null;return}$!==C.label&&e.renameTab(C.id,$),a.value=null}function g(){if(!a.value)return;const $=e.layoutTabs.value.find(C=>C.id===a.value);t.value=($==null?void 0:$.label)||"",a.value=null}function T($){r.value=Number.isFinite($??NaN)?Number($):null}function S($){if(!o.value.open)return;const C=$.target;C&&(C.closest(".tab-context-menu")||C.closest(".tab-btn")||C.closest(".tab-menu-btn")||u())}return Et(()=>{typeof window<"u"&&window.addEventListener("click",S)}),$t(()=>{typeof window<"u"&&window.removeEventListener("click",S)}),{tabLabelDraft:t,tabEditingId:a,tabContext:o,addOrderHint:r,handleTabClick:s,openTabContextMenu:d,openTabContextMenuFromButton:p,setDefaultTabFromMenu:v,removeTabFromMenu:b,renameTabFromMenu:c,commitTabLabel:f,cancelTabLabel:g,setAddHint:T,resetContext:n}}const o2={class:"onboarding-header version-notes-overlay__header"},r2={class:"onboarding-title version-notes-overlay__title"},n2={id:"version-notes-title"},s2={class:"version-notes-overlay__teaser"},i2={class:"onboarding-actions version-notes-overlay__actions"},l2={key:0,class:"version-notes-overlay__pill version-notes-overlay__pill--accent"},d2={class:"version-notes-overlay__pill"},c2=["disabled"],u2={class:"onboarding-body version-notes-overlay__body"},g2={class:"version-notes-overlay__content"},p2={class:"version-notes-overlay__section version-notes-overlay__section--intro"},f2={class:"version-notes-overlay__intro-copy"},b2={key:0,class:"version-notes-overlay__apply-block"},v2={class:"version-notes-overlay__apply-row"},h2={class:"version-notes-overlay__apply-text"},m2={class:"version-notes-overlay__apply-actions"},y2=["onClick"],w2={class:"version-notes-overlay__section"},k2={class:"version-notes-overlay__highlights"},x2={key:0,class:"version-notes-overlay__section"},_2={class:"version-notes-overlay__images"},C2=["href"],S2=["src","alt"],T2={class:"version-notes-overlay__image-meta"},$2={key:0},M2={class:"version-notes-overlay__history"},A2={class:"version-notes-overlay__history-list"},D2=["onClick"],L2={class:"version-notes-overlay__history-top"},E2={class:"version-notes-overlay__history-title"},N2={class:"onboarding-footer version-notes-overlay__footer"},I2={class:"version-notes-overlay__footer-note"},O2={key:0,class:"version-notes-overlay__link-row"},B2=["href"],H2=gt(Ve({__name:"VersionNotesOverlay",props:{visible:{type:Boolean},theme:{},entry:{},history:{},selectedVersion:{},isSaving:{type:Boolean}},emits:["close","select-version","action"],setup(e,{emit:t}){const a=e,o=t,r=x(()=>(a.entry.actions??[]).filter(u=>u.type==="link")),n=x(()=>(a.entry.actions??[]).filter(u=>u.type!=="link")),s=x(()=>n.value.some(u=>u.type==="open_preferences")?"Want to turn recap reporting on?":"Want the new layout right now?"),l=x(()=>n.value.some(u=>u.type==="open_preferences")?"Reporting stays off by default. Jump straight into Preferences to enable weekly or monthly recaps and set the send times that should drive scheduled delivery.":"This release ships with an updated default dashboard. Clicking the button below resets your current tab to the default layout for your selected dashboard profile — no manual rebuilding needed."),d=x(()=>new Intl.DateTimeFormat(void 0,{year:"numeric",month:"short",day:"numeric"}));function p(u){const v=new Date(u);return Number.isNaN(v.getTime())?u:d.value.format(v)}return(u,v)=>(h(),lt(li,{visible:u.visible,theme:u.theme,"panel-class":"version-notes-overlay","aria-labelledby":"version-notes-title",onClose:v[2]||(v[2]=b=>o("close"))},{default:Ct(()=>{var b;return[i("header",o2,[i("div",r2,[v[3]||(v[3]=i("div",{class:"version-notes-overlay__eyebrow"},"What's new",-1)),i("h2",n2,"Opsdash "+E(u.entry.version),1),i("p",s2,E(u.entry.teaser),1)]),i("div",i2,[u.entry.version===u.selectedVersion?(h(),y("span",l2,"Current")):ne("",!0),i("span",d2,E(p(u.entry.date)),1),i("button",{type:"button",class:"close-btn",disabled:u.isSaving,"aria-label":"Close release notes",onClick:v[0]||(v[0]=c=>o("close"))}," × ",8,c2)])]),i("main",u2,[i("section",g2,[i("section",p2,[v[4]||(v[4]=i("div",{class:"version-notes-overlay__section-head"},[i("h4",null,"Release focus"),i("span",{class:"version-notes-overlay__section-label"},"Why this matters")],-1)),i("p",f2,E(u.entry.summary||u.entry.teaser),1),n.value.length?(h(),y("div",b2,[i("div",v2,[i("div",h2,[i("strong",null,E(s.value),1),Ge(" "+E(l.value),1)]),i("div",m2,[(h(!0),y(ye,null,Ne(n.value,c=>(h(),y("button",{key:`${u.entry.version}-${c.label}`,type:"button",class:"version-notes-overlay__reload-btn",onClick:f=>o("action",c.type)},E(c.label),9,y2))),128))])])])):ne("",!0)]),i("section",w2,[v[5]||(v[5]=i("div",{class:"version-notes-overlay__section-head"},[i("h4",null,"Highlights"),i("span",{class:"version-notes-overlay__section-label"},"Short version")],-1)),i("ul",k2,[(h(!0),y(ye,null,Ne(u.entry.highlights,c=>(h(),y("li",{key:c},E(c),1))),128))])]),(b=u.entry.images)!=null&&b.length?(h(),y("section",x2,[v[6]||(v[6]=i("div",{class:"version-notes-overlay__section-head"},[i("h4",null,"Preview"),i("span",{class:"version-notes-overlay__section-label"},"Screenshots")],-1)),i("div",_2,[(h(!0),y(ye,null,Ne(u.entry.images,c=>(h(),y("a",{key:`${u.entry.version}-${c.src}`,class:"version-notes-overlay__image-card",href:c.src,target:"_blank",rel:"noopener noreferrer"},[i("img",{src:c.src,alt:c.alt},null,8,S2),i("div",T2,[i("strong",null,E(c.title),1),c.caption?(h(),y("span",$2,E(c.caption),1)):ne("",!0)])],8,C2))),128))])])):ne("",!0)]),i("aside",M2,[v[7]||(v[7]=i("div",{class:"version-notes-overlay__section-head version-notes-overlay__section-head--history"},[i("h4",null,"Version history"),i("span",{class:"version-notes-overlay__section-label"},"Available releases")],-1)),i("div",A2,[(h(!0),y(ye,null,Ne(u.history,c=>(h(),y("button",{key:c.version,type:"button",class:ke(["version-notes-overlay__history-item",{"is-active":c.version===u.selectedVersion}]),onClick:f=>o("select-version",c.version)},[i("div",L2,[i("strong",null,"v"+E(c.version),1),i("span",null,E(c.version===u.entry.version?"Open now":p(c.date)),1)]),i("div",E2,E(c.title),1),i("p",null,E(c.teaser),1)],10,D2))),128))])])]),i("footer",N2,[i("div",I2,[v[8]||(v[8]=Ge(" The latest release opens first. Older updates stay available here whenever you want to look back. ",-1)),r.value.length?(h(),y("div",O2,[(h(!0),y(ye,null,Ne(r.value,c=>(h(),y("a",{key:`${u.entry.version}-${c.label}`,class:"version-notes-overlay__link",href:c.href,target:"_blank",rel:"noopener noreferrer"},E(c.label),9,B2))),128))])):ne("",!0)]),Re(M(ra),{type:"primary",disabled:u.isSaving,onClick:v[1]||(v[1]=c=>o("close"))},{default:Ct(()=>[Ge(E(u.isSaving?"Saving…":"Back to dashboard"),1)]),_:1},8,["disabled"])])]}),_:1},8,["visible","theme"]))}}),[["__scopeId","data-v-3771dea1"]]),Ur={name:"opsdash",version:"0.8.5",private:!0,type:"module",scripts:{dev:"vite",build:"vite build",typecheck:"tsc --noEmit",preview:"vite preview",test:"vitest","test:unit":"vitest --run","test:e2e":"playwright test","test:e2e:mustpass":"playwright test tests/e2e/dashboard.mustpass.spec.ts","i18n:scan":"node ../tools/i18n/scan_strings.mjs","i18n:extract":"../tools/i18n/extract.sh"},dependencies:{vue:"^3.4.27"},devDependencies:{"@playwright/test":"^1.56.1","@vitejs/plugin-vue":"^5.0.0","@vue/test-utils":"^2.4.6",jsdom:"^27.0.1",typescript:"^5.4.0",vite:"^5.0.0",vitest:"^1.6.0"}},F2=["role"],P2={class:"app-shell"},W2={class:"app-main"},z2={class:"app-container"},R2=["title"],j2={key:0,class:"bar-row"},V2=["aria-label"],U2={class:"app-seg w2"},G2=["disabled"],K2=["disabled"],q2={class:"app-navc"},J2=["disabled"],Z2={class:"navc-date"},Y2={class:"navc-sub"},X2={class:"navc-date-start"},Q2={class:"navc-title"},eC={class:"navc-date-end"},tC=["disabled"],aC=["disabled"],oC={class:"tab-strip",role:"tablist","aria-label":"Dashboard tabs"},rC=["aria-selected","onClick","onContextmenu"],nC={class:"tab-label"},sC={key:0,class:"tab-default-badge"},iC={key:0,class:"dashboard-context-badges"},lC={key:1,class:"global-lookback-badge",title:"Global trend lookback"},dC={key:1,class:"refresh-badge",role:"status","aria-live":"polite"},cC={class:"bar-row"},uC=["aria-label"],gC={class:"tab-strip",role:"tablist","aria-label":"Dashboard tabs"},pC=["aria-selected","onClick","onContextmenu"],fC={key:1,class:"tab-label"},bC=["aria-label","onClick"],vC={key:1,class:"dashboard-context-badges"},hC={key:1,class:"global-lookback-badge",title:"Global trend lookback"},mC={class:"bar-row sep bar-row--edit-actions"},yC={class:"itb"},wC={key:0,class:"sel-chip sel-chip--named"},kC={class:"sel-chip__body"},xC={class:"sel-chip__type"},_C=["value","placeholder"],CC={key:1,class:"sel-chip sel-chip--empty"},SC=["disabled"],TC={key:0,class:"ic-group__rail"},$C=["disabled"],MC=["disabled"],AC=["disabled"],DC=["disabled"],LC={key:0,class:"ic-group__rail"},EC=["disabled"],NC=["disabled"],IC=["disabled"],OC=["disabled"],BC=["disabled"],HC=["disabled"],FC={key:0,class:"ic-group__rail"},PC=["disabled"],WC=["disabled"],zC=["disabled"],RC=["disabled"],jC=["disabled"],VC={key:0,class:"ic-group__rail ic-group__rail--color"},UC=["title","onClick"],GC={class:"ic-color-custom",title:"Custom color"},KC=["value"],qC={class:"ic-config-wrap"},JC={key:1,class:"ic ic--config",type:"button",disabled:"",title:"Widget settings"},ZC=["disabled"],YC=["disabled"],XC=["disabled"],QC={key:3,class:"itb-empty-preview","aria-hidden":"true"},e4=["disabled"],t4={class:"cards"},a4={class:"hint footer"},o4=Ve({__name:"App",setup(e){const t=oe(null);let a;function o(W,z){clearTimeout(a),t.value={message:W,kind:z},a=setTimeout(()=>{t.value=null},8e3)}function r(W){o(W,"success")}function n(W){o(W,"error")}$t(()=>clearTimeout(a));const{navOpen:s,toggleNav:l,navToggleLabel:d,navToggleIcon:p}=U_(),u=oe(!1);function v(){return typeof window<"u"&&window.matchMedia("(max-width: 1100px)").matches}function b(){le.value&&v()&&Dt(),s.value||l()}function c(){b()}function f(){b(),u.value=!0}Oe(()=>s.value,W=>{if(typeof document>"u")return;const z=W?"var(--app-navigation-width, 300px)":"0px";document.body.style.setProperty("--opsdash-nav-offset",z)},{immediate:!0}),$t(()=>{typeof document>"u"||(document.body.style.removeProperty("--opsdash-nav-offset"),document.body.style.removeProperty("--opsdash-sticky-left"))});const g=oe("week"),T=oe(0),S=x(()=>{const W=ha.value;if(!W)return"Partial data due to caps";const z=[];return W.maxPerCal!=null&&z.push(`cap per calendar: ${W.maxPerCal}`),W.maxTotal!=null&&z.push(`cap total: ${W.maxTotal}`),W.totalProcessed!=null&&z.push(`processed: ${W.totalProcessed}`),z.join(" · ")}),$=oe(!1),{scheduleDraw:C}=b_(),{route:H,getJson:O,postJson:I,deleteJson:_,root:k}=Hu(),m=oe(!1),w=oe("standard"),D=oe(null),R=oe(null),L=oe(!0),{layoutTabs:Z,defaultTabId:K,activeTabId:Y,isLayoutEditing:le,widgets:J,availableWidgetTypes:de,activeTab:B,setActiveTab:G,setDefaultTab:A,addTab:V,renameTab:he,removeTab:Me,setTabsFromPayload:ae,applyDashboardPreset:U,cycleWidth:F,cycleHeight:j,moveWidget:ce,moveWidgetToTab:fe,duplicateWidgetToTab:N,removeWidget:P,addWidgetAt:re,reorderWidget:ge,updateWidgetOptions:ee}=X_({widgetsRegistry:Pr,createDefaultTabs:()=>_i(Xo(w.value,D.value),D.value),normalizeWidgetTabs:Wr,dashboardMode:w,deckEnabled:L,hasInitialLoad:m,queueSaveRef:R}),be=x(()=>({tabs:Z.value,defaultTabId:K.value})),ve=x({get:()=>be.value,set:W=>{W&&ae(W)}}),xe=new Set(["chart_per_day","chart_dow","chart_hod","time_summary_lookback","time_summary_v2","dayoff_trend"]),_e=()=>{var W;if(sl.value<=1)return!1;for(const z of Z.value||[]){const De=(z==null?void 0:z.widgets)||[];for(const Fe of De){const Ye=String((Fe==null?void 0:Fe.type)??"");if(xe.has(Ye)&&!(Ye==="time_summary_v2"&&((W=Fe==null?void 0:Fe.options)==null?void 0:W.showHistory)===!1))return!0}}return!1},{tabLabelDraft:ue,tabEditingId:Ee,tabContext:Se,addOrderHint:te,handleTabClick:se,openTabContextMenu:me,openTabContextMenuFromButton:$e,setDefaultTabFromMenu:Ae,removeTabFromMenu:Pe,renameTabFromMenu:Ie,commitTabLabel:Be,cancelTabLabel:ze,setAddHint:dt,resetContext:wt}=a2({layoutTabs:Z,activeTabId:Y,activeTabLabel:x(()=>{var W;return((W=B.value)==null?void 0:W.label)||""}),isLayoutEditing:le,setActiveTab:G,setDefaultTab:A,removeTab:Me,renameTab:he});function nt(W,z){const De=Z.value.find(Ye=>Ye.id===z);if(!De)return;fe(W,z)&&r(`Moved widget to ${De.label}`)}function ft(W,z){const De=Z.value.find(Ye=>Ye.id===z);if(!De)return;N(W,z)&&r(`Copied widget to ${De.label}`)}function Dt(){!le.value&&s.value&&v()&&l(),le.value=!le.value,le.value||(wt(),xt.value=!1,Ft.value=null)}function Bt(){le.value&&s.value&&v()&&l()}Oe(s,W=>{W&&le.value&&v()&&Dt()});const ht=oe(!1),xt=oe(!1),st=oe(null),mt=oe(null),Je=oe(!1),Ue=oe(null),rt=oe(null),Q=oe(null),ie=oe(null);let Ce=null;function Ze(){Ce==null||Ce();const W=document.querySelector(".app-main");if(!W)return;const z=()=>{Rt(W),De()},De=()=>{if(!Q.value||!le.value){Je.value=!1;return}Je.value=W.scrollTop>da};W.addEventListener("scroll",De,{passive:!0}),window.addEventListener("resize",z,{passive:!0}),Ce=()=>{W.removeEventListener("scroll",De),window.removeEventListener("resize",z)},z()}const Mt=oe(0);let da=0;function Rt(W){const z=rt.value,De=Q.value,Fe=ie.value;if(!De||!z){Mt.value=0,da=0;return}document.body.style.setProperty("--opsdash-sticky-left",`${Math.round(z.getBoundingClientRect().left)}px`);const Ye=jt(),we=De.getBoundingClientRect(),Ke=W.getBoundingClientRect(),ta=(Fe??De).getBoundingClientRect();Mt.value=Math.ceil(we.height),da=Math.max(0,ta.top-Ke.top+W.scrollTop-Ye)}function jt(){if(typeof window>"u")return 62;const W=getComputedStyle(document.documentElement).getPropertyValue("--header-height").trim(),z=Number.parseFloat(W||"50");return(Number.isFinite(z)?z:50)+12}Et(()=>{Ze(),window.addEventListener("resize",Bt,{passive:!0}),Bt()}),Oe(le,async W=>{if(!W){Je.value=!1,Mt.value=0;return}await Kt(),requestAnimationFrame(()=>{Ze()})}),$t(()=>{Ce==null||Ce(),window.removeEventListener("resize",Bt)});function pt(W){g.value=W,T.value=0,so()}function Tt(W){ht.value=!1;const z=Number.isFinite(te.value??NaN)?te.value??void 0:void 0;re(W,z),te.value=null}const{calendars:ca,colorsByName:Oa,colorsById:ua,groupsById:it,selected:Ht,isInitialLoading:St,isRefreshing:Sa,isTruncated:Ta,truncLimits:ha,uid:Ba,from:Vt,to:ga,stats:ea,byCal:ct,byDay:$a,charts:pa,targetsWeek:Qe,targetsMonth:kt,targetsConfig:et,onboarding:Ma,load:ts,themePreference:Bi,reportingConfig:No,deckSettings:ma}=l_({range:g,offset:T,userChangedSelection:$,route:W=>H(W),getJson:O,postJson:I,notifyError:n,scheduleDraw:C,isDebug:vg,includeLookback:()=>_e(),widgetTabs:ve,onCoreLoaded:W=>{m.value||(m.value=!0),Qi((W==null?void 0:W.onboarding)??null),typeof(W==null?void 0:W.activePreset)=="string"&&W.activePreset!==""&&(mt.value=W.activePreset)}});Oe(()=>ma.value.enabled,W=>{L.value=W},{immediate:!0});const{deckCards:Gr,deckLoading:Hi,deckError:Fi,refreshDeck:Pi}=J_({from:Vt,to:ga,notifyError:n}),{deckFilter:as,deckSummaryBuckets:Wi,deckTickerConfig:zi,deckUrl:Ri}=Z_({deckSettings:ma,deckCards:Gr,uid:Ba,root:k}),ji=W=>{as.value=Ei(W)},ya=Ma;Oe(()=>{var W;return((W=ya.value)==null?void 0:W.strategy)??null},W=>{D.value=W},{immediate:!0});const{themePreference:ar,effectiveTheme:ro,systemTheme:os,setThemePreference:or}=N_({serverPreference:Bi,route:W=>H(W),postJson:I,notifySuccess:r,notifyError:n}),rs=x(()=>ro.value==="dark"?"opsdash-theme-dark":"opsdash-theme-light");function Vi(W){Aa(W||"goals")}const{exportSidebarConfig:Ui,importSidebarConfig:Gi}=R_({selected:Ht,groupsById:it,targetsWeek:Qe,targetsMonth:kt,targetsConfig:et,themePreference:ar,onboardingState:ya,widgetTabs:ve,setThemePreference:or,postJson:I,route:W=>H(W),performLoad:()=>so(),notifySuccess:r,notifyError:n}),{queueSave:ns}=c_({route:W=>H(W),postJson:I,notifyError:n,notifySuccess:r,onReload:()=>so(),selected:Ht,groupsById:it,targetsWeek:Qe,targetsMonth:kt,targetsConfig:et,themePreference:ar,reportingConfig:No,deckSettings:ma,widgetTabs:ve,onboardingState:ya,activePreset:mt});R.value=ns;const Io=de,{presets:Ki,presetsLoading:qi,presetSaving:Ji,presetApplying:Zi,presetWarnings:ss,lastLoadedPreset:is,refreshPresets:q,savePreset:X,loadPreset:pe,deletePreset:Te,clearPresetWarnings:Le}=f_({route:(W,z)=>H(W,z),getJson:O,postJson:I,deleteJson:_,notifyError:n,notifySuccess:r,queueSave:ns,selected:Ht,groupsById:it,targetsWeek:Qe,targetsMonth:kt,targetsConfig:et,themePreference:ar,setThemePreference:or,reportingConfig:No,deckSettings:ma,widgetTabs:ve,onboardingState:ya,setDashboardMode:W=>{w.value=W},applyDashboardPreset:W=>{U(W)},userChangedSelection:$});Oe(is,W=>{mt.value=W},{immediate:!0});const at=q_({onboardingState:ya,route:W=>H(W),postJson:I,notifySuccess:r,notifyError:n,setThemePreference:or,savePreset:X,reloadAfterPersist:()=>so(),setSelected:W=>{Ht.value=[...W]},setTargetsWeek:W=>{Qe.value={...W}},setTargetsMonth:W=>{kt.value={...W}},setTargetsConfig:W=>{et.value=Ua(W)},setGroupsById:W=>{it.value={...W}},setDeckSettings:W=>{ma.value={...W}},setReportingConfig:W=>{No.value={...W}},setOnboardingState:W=>{Ma.value={...Ma.value||{},...W}},setDashboardMode:W=>{w.value=W},setWidgetTabs:W=>{ae(W)}}),{autoWizardNeeded:ot,onboardingRunId:no,onboardingWizardVisible:Oo,openWizardFromSidebar:Aa,wizardStartStep:Ut,hasExistingConfig:Bo,wizardCalendars:Yi,wizardInitialSelection:Xi,wizardInitialStrategy:w8,wizardInitialAllDayHours:k8,wizardInitialTotalHours:x8,wizardInitialTargetsConfig:_8,wizardInitialDeckSettings:C8,wizardInitialReportingConfig:S8,wizardInitialDashboardMode:T8,wizardInitialCategories:$8,wizardInitialAssignments:M8,isOnboardingSaving:A8,isSnapshotSaving:D8,snapshotNotice:L8,evaluateOnboarding:Qi,handleWizardComplete:E8,handleWizardSkip:N8,handleWizardClose:I8,handleWizardSaveSnapshot:O8}=B_({onboardingState:ya,calendars:ca,selected:Ht,targetsWeek:Qe,groupsById:it,targetsConfig:et,deckSettings:ma,reportingConfig:No,hasInitialLoad:m,actions:at}),B8=async W=>{await E8(W),W!=null&&W.dashboardMode&&U(W.dashboardMode)},H8=async W=>{W!=null&&W.dashboardMode&&U(W.dashboardMode),await at.saveStep(W)};async function rg(W,z,De){try{const Fe=await I(H("reportTestSend"),{range:g.value,offset:z,cals:W.selected,groups:W.groups,targets_config:W.targetsConfig,reporting_config:W.reportingConfig});r(`Test ${De} sent to ${Fe.email}`)}catch(Fe){console.error(Fe),n(`Failed to send test ${De}`)}}const F8=W=>rg(W,-1,"recap"),P8=W=>rg(W,0,"checkpoint");async function so(){await ts(),st.value=new Date,m.value||(m.value=!0),Qi()}const{rangeDateLabel:W8,loadCurrent:ng,toggleRangeCollapsed:z8,goPrevious:el,goNext:tl}=F_({navOpen:s,range:g,offset:T,from:Vt,to:ga,isLoading:St,performLoad:()=>so()}),{shortcutsOpen:sg,openShortcuts:R8,closeShortcuts:j8,shortcutGroups:V8}=K_({goPrevious:el,goNext:tl,toggleRange:z8,openConfigPanel:()=>b(),toggleEditLayout:Dt,openWidgetOptions:()=>{var W,z;le.value&&((z=(W=ls.value)==null?void 0:W.openOptionsForSelected)==null||z.call(W))},ensureSidebarVisible:b}),{appVersion:al}=h_({pingUrl:()=>H("ping"),getJson:O,pkgVersion:Ur!=null&&Ur.version?String(Ur.version):"",root:k}),U8=x(()=>Oo.value||u.value||sg.value),{isOpen:ig,isSaving:G8,entries:K8,currentEntry:q8,activeEntry:lg,selectedVersion:J8,openCurrent:Z8,openVersion:Y8,closeOverlay:dg}=H_({appVersion:al,onboardingState:ya,hasInitialLoad:m,isBlocked:U8,route:W=>H(W),postJson:I,notifyError:n}),X8=x(()=>!!q8.value);function Q8(W){if(W==="reload"){U(w.value);return}W==="open_preferences"&&(dg(),Aa("preferences"))}const cg=oe("active"),ug=x(()=>g.value==="month"?"Month":"Week");x(()=>g.value==="month"?"This month":"This week");const eT=x(()=>{const W=Nt(Vt.value);return W?g.value==="month"?`Month ${W.getUTCMonth()+1}`:`Week ${to(W)}`:g.value==="month"?"Month":"Week"}),ls=oe(null);x(()=>{const W=Nt(Vt.value);return W?g.value==="month"?`MONTH ${W.getUTCMonth()+1}`:`WEEK ${to(W)}`:g.value.toUpperCase()}),x(()=>W8.value);const ol=x(()=>{const W=Ua(et.value);return g.value==="month"&&(W.totalHours=Va(W.totalHours),W.categories=W.categories.map(z=>({...z,targetHours:Va(z.targetHours)}))),W}),gg=x(()=>{const W=ol.value;try{return Ec({config:W,stats:ea,byDay:$a.value||[],byCal:ct.value||[],groupsById:it.value||{},range:g.value,from:Vt.value,to:ga.value})}catch(z){return console.error("[opsdash] targets summary failed",z),Lc(W)}}),rl=x(()=>{if(g.value==="month"){const W=kt.value||{};if(W&&Object.keys(W).length>0)return W;const z=Qe.value||{},De={};return Object.entries(z).forEach(([Fe,Ye])=>{const we=Number(Ye);Number.isFinite(we)&&(De[Fe]=Va(we))}),De}return Qe.value||{}}),nl=x(()=>{var W;return{...Dc(),...((W=et.value)==null?void 0:W.activityCard)??{}}}),pg=x(()=>{var De;const W=Jo(),z=((De=et.value)==null?void 0:De.balance)??W;return{...W,...z,thresholds:{...W.thresholds,...z.thresholds??{}},relations:{...W.relations,...z.relations??{}},trend:{...W.trend,...z.trend??{}},dayparts:{...W.dayparts,...z.dayparts??{}},ui:{...W.ui,...z.ui??{}}}}),tT=x(()=>({showNotes:!!pg.value.ui.showNotes})),sl=x(()=>{var W;return Math.max(1,Math.min(6,((W=pg.value.trend)==null?void 0:W.lookbackWeeks)??1))}),rr=x(()=>{const W=sl.value;if(W<=1)return"";const z=g.value==="month"?"month":"week";return`Last ${W} ${W===1?z:`${z}s`}`}),aT=x(()=>""),{categoryLabelById:oT,categoryColorMap:fg,calendarCategoryMap:il,calendarGroups:ds}=S_({calendars:ca,selected:Ht,groupsById:it,colorsById:ua,targetsConfig:ol,targetsSummary:gg,byCal:ct,currentTargets:rl,isDebug:vg}),{balanceOverview:rT}=$_({stats:ea,categoryColorMap:fg});x(()=>{var De,Fe;if(!nl.value.showHint)return"";const z=(Array.isArray((Fe=(De=et.value)==null?void 0:De.balance)==null?void 0:Fe.categories)?et.value.balance.categories:[]).map(Ye=>{const we=String(Ye??"").trim();if(!we)return"";const Ke=oT.value[we];return Ke||we.toUpperCase()}).filter(Ye=>Ye);return z.length?`Mapping via Sidebar – ${z.join(" / ")}`:""});const{calendarChartData:ll,categoryChartsById:nT}=m_({charts:pa,colorsById:ua,calendarGroups:ds,calendarCategoryMap:il,targetsConfig:ol,currentTargets:rl,activityCardConfig:nl}),sT=x(()=>{var Ye;const W=(Ye=ll.value)==null?void 0:Ye.stacked;if(!W||!Array.isArray(W.labels)||!Array.isArray(W.series))return{};const z=na(new Date),De=W.labels.findIndex(we=>String(we??"")===z);if(De<0)return{};const Fe={};return W.series.forEach(we=>{var ir;const Ke=String((we==null?void 0:we.id)??""),ta=Number(((ir=we==null?void 0:we.data)==null?void 0:ir[De])??0),fl=Number.isFinite(ta)?Math.max(0,ta):0;Ke&&(Fe[Ke]=(Fe[Ke]||0)+fl)}),Fe}),bg=x(()=>{var Ke;const W=(Ke=ll.value)==null?void 0:Ke.stacked,z=W==null?void 0:W.labels,De=W==null?void 0:W.series;if(!W||!Array.isArray(z)||!Array.isArray(De))return{};const Fe=na(new Date),Ye=z.findIndex(ta=>String(ta??"")===Fe);if(Ye<0)return{};const we={};return De.forEach(ta=>{var kg,xg;const fl=String((ta==null?void 0:ta.id)??""),ir=(kg=il.value)==null?void 0:kg[fl];if(!ir)return;const wg=Number(((xg=ta==null?void 0:ta.data)==null?void 0:xg[Ye])??0),HT=Number.isFinite(wg)?Math.max(0,wg):0;we[ir]=(we[ir]||0)+HT}),we}),iT=x(()=>ds.value.map(W=>({...W,todayHours:bg.value[W.id]||0}))),lT=x(()=>{const W=ds.value||[];return W.length&&[...W].sort((De,Fe)=>(Fe.summary.actualHours||0)-(De.summary.actualHours||0))[0]||null}),{timeSummary:dT,activitySummary:cT,activityDayOffTrend:uT}=T_({stats:ea,byDay:$a,charts:pa,calendars:ca,selected:Ht,rangeLabel:ug,rangeStart:Vt,rangeEnd:ga,offset:T,activeDayMode:cg,topCategory:lT});j_();function vg(){return!1}const{widgetContext:hg}=t2({timeSummary:dT,activeDayMode:cg,targetsSummary:gg,targetsConfig:et,stats:ea,byDay:$a,byCal:ct,groupsById:it,calendarGroupsWithToday:iT,balanceOverview:rT,balanceCardConfig:tT,rangeLabel:ug,range:g,offset:T,from:Vt,to:ga,trendLookbackWeeks:sl,balanceNote:aT,activitySummary:cT,activityCardConfig:nl,activityDayOffTrend:uT,deckSummaryBuckets:Wi,deckLoading:Hi,deckError:Fi,deckTickerConfig:zi,deckFilter:as,setDeckFilter:ji,deckSettings:ma,deckUrl:Ri,deckCards:Gr,refreshDeck:Pi,uid:Ba,isLoading:St,isInitialLoading:St,isRefreshing:Sa,hasInitialLoad:m,isLayoutEditing:le,updateWidgetOptions:ee,charts:pa,calendarChartData:ll,categoryChartsById:nT,calendarGroups:ds,calendars:ca,calendarCategoryMap:il,categoryColorMap:fg,colorsById:ua,colorsByName:Oa,currentTargets:rl,targetsWeek:Qe,selected:Ht,calendarTodayHours:sT,categoryTodayHours:bg,onboardingStrategy:x(()=>{var W;return((W=ya.value)==null?void 0:W.strategy)??null}),activePreset:mt}),gT=x(()=>w.value==="quick"?"Empty preset":w.value==="pro"?"Advanced preset":"Standard preset");function pT(W){return Number(W??0).toFixed(1)}function fT(W){const z=Number(W??0);return Number.isFinite(z)?Number.isInteger(z)?String(z):z.toFixed(1):"0"}const dl=x(()=>{var De;const W=(De=ya.value)==null?void 0:De.strategy;if(!W)return"—";const z=Fc().find(Fe=>Fe.id===W);return(z==null?void 0:z.title)??String(W)}),bT=x(()=>{const W=new Map((ca.value||[]).map(De=>[String((De==null?void 0:De.id)??""),String((De==null?void 0:De.displayname)??(De==null?void 0:De.name)??(De==null?void 0:De.calendar)??(De==null?void 0:De.id)??"Calendar")])),z=(Ht.value||[]).map(De=>W.get(String(De))).filter(De=>!!De);return z.length?z:["None selected"]});function vT(W,z,De=", "){const Fe=W.filter(Ke=>Ke&&Ke!=="None selected"),Ye=Fe.slice(0,z),we=Fe.length-Ye.length;return Ye.length?we>0?`${Ye.join(De)} +${we}`:Ye.join(De):"None selected"}function cs(W,z,De=" · "){const Fe=W.filter(Boolean),Ye=Fe.slice(0,z),we=Fe.length-Ye.length;return Ye.length?we>0?`${Ye.join(De)} +${we}`:Ye.join(De):""}function hT(W){return W.replace(/\s+—\s+/g," ").replace(/\s+h$/,"h")}const mT=x(()=>{var z;const W=((z=et.value)==null?void 0:z.categories)??[];return W.length?W.map(De=>`${De.label||De.id} — ${fT(De.targetHours)} h`):["No category targets"]}),cl=x(()=>{var W;return`${pT(((W=et.value)==null?void 0:W.totalHours)??0)} h`}),yT=x(()=>w.value==="pro"?"Advanced layout":w.value==="quick"?"Empty layout":"Standard layout"),wT=x(()=>ro.value==="dark"?"Dark":"Light"),ul=x(()=>{var Ye;if(!((Ye=ma.value)!=null&&Ye.enabled))return{status:"Deck tab disabled",boards:[]};const W=new Set((ma.value.hiddenBoards||[]).map(we=>Number(we))),z=new Map;(Gr.value||[]).forEach(we=>{const Ke=Number(we==null?void 0:we.boardId);if(!Number.isFinite(Ke)||W.has(Ke))return;const ta=String((we==null?void 0:we.boardTitle)??`Board ${Ke}`);z.has(Ke)||z.set(Ke,ta)});const De=Array.from(z.values());return{status:`Showing ${De.length} board${De.length===1?"":"s"}`,boards:De}}),kT=x(()=>{var W;return(W=ma.value)!=null&&W.enabled?ul.value.boards.length===1?`Deck — ${ul.value.boards[0]}`:`Deck — ${ul.value.boards.length} boards`:"Deck — off"}),xT=x(()=>{const W=mT.value;if(!W.length)return"";if(W.length===1&&W[0]==="No category targets")return"No targets";const z=cs(W.map(hT),3);return z?`${z} · Total ${cl.value}`:""}),_T=x(()=>cs([yT.value],2)),CT=x(()=>dl.value&&dl.value!=="—"?dl.value:"Choose a planning model"),ST=x(()=>vT(bT.value,2)),TT=x(()=>kT.value),$T=x(()=>{var W;return cs([`Theme — ${wT.value}`,(W=No.value)!=null&&W.enabled?"Recap on":"Recap off"],2)}),MT=x(()=>cs([cl.value?`Total ${cl.value}`:""],2)),AT=x(()=>({strategy:CT.value,deck:TT.value,goals:xT.value,dashboard:_T.value,calendars:ST.value,preferences:$T.value,review:MT.value})),DT=x(()=>{var W,z,De,Fe,Ye,we;return{strategy:(W=ya.value)!=null&&W.strategy?"done":"dim",calendars:(((z=Ht.value)==null?void 0:z.length)??0)>0?"done":"dim",deck:(De=ma.value)!=null&&De.enabled?"done":"skip",goals:(((Ye=(Fe=et.value)==null?void 0:Fe.categories)==null?void 0:Ye.length)??0)>0?"done":"warn",preferences:"done",dashboard:(((we=J.value)==null?void 0:we.length)??0)>0?"done":"dim",review:Bo.value?"done":"dim"}}),LT=x(()=>{if(Sa.value)return"Syncing…";if(!st.value)return null;const W=Math.floor((Date.now()-st.value.getTime())/6e4);return W<1?"Just now":`${W}m ago`}),We=x(()=>{var W;return((W=ls.value)==null?void 0:W.selectedItem)??null});x(()=>{var z;if(!We.value)return"";const W=Io.value.find(De=>De.type===We.value.type);return((z=We.value.options)==null?void 0:z.titlePrefix)||(W==null?void 0:W.label)||We.value.type});const mg=x(()=>{if(!We.value)return"";const W=Io.value.find(z=>z.type===We.value.type);return(W==null?void 0:W.label)||We.value.type}),gl=x(()=>{var W,z;return((z=(W=We.value)==null?void 0:W.layout)==null?void 0:z.width)??null}),us=x(()=>{var W,z;return((z=(W=We.value)==null?void 0:W.layout)==null?void 0:z.height)??null}),nr=x(()=>{var W;return((W=We.value)==null?void 0:W.heightMode)==="auto"}),sr=x(()=>{var W,z;return((z=(W=We.value)==null?void 0:W.options)==null?void 0:z.cardBg)??null}),ET=x(()=>{var W,z;return((z=(W=We.value)==null?void 0:W.options)==null?void 0:z.titlePrefix)??""}),gs=x(()=>{var W,z,De,Fe;return((z=(W=We.value)==null?void 0:W.options)==null?void 0:z.scale)??((Fe=(De=We.value)==null?void 0:De.options)==null?void 0:Fe.textSize)??"md"}),NT=x(()=>ro.value==="dark"?["#1e293b","#1e3a5f","#2d1b69","#14532d","#451a03","#4c0519","#f8fafc"]:["#ffffff","#DBEAFE","#EDE9FE","#DCFCE7","#FEF3C7","#FFE4E6","#1E293B"]),Ft=oe(null);function Ho(W,z){We.value&&ee(We.value.id,W,z)}function yg(W){We.value&&ce(We.value.id,W)}function IT(){We.value&&P(We.value.id)}function OT(){We.value&&Ho("heightMode",nr.value?"fixed":"auto")}function ps(W){We.value&&Ho("scale",W)}function fs(W){We.value&&(Ft.value=Ft.value===W?null:W)}function pl(W){if(!We.value)return;const z=["quarter","half","full"],De=z.indexOf(We.value.layout.width),Fe=z.indexOf(W);if(De===-1||Fe===-1||De===Fe)return;const Ye=We.value.id,we=(Fe-De+3)%3;for(let Ke=0;Ke<we;Ke++)F(Ye)}function bs(W){if(!We.value)return;const z=["s","m","l","xl"],De=z.indexOf(We.value.layout.height),Fe=z.indexOf(W);if(De===-1||Fe===-1||De===Fe)return;const Ye=We.value.id,we=(Fe-De+4)%4;for(let Ke=0;Ke<we;Ke++)j(Ye)}function BT(){var W;We.value&&(xt.value=!1,(W=ls.value)==null||W.openAdvancedTargets(We.value.id))}return Q_({performLoad:so,refreshPresets:q,onboardingState:ya,hasInitialLoad:m,evaluateOnboarding:Qi,dashboardMode:w}),(W,z)=>{const De=Hp("NcAppSidebarToggle");return h(),y("div",{id:"opsdash",class:ke(["opsdash",[{"is-nav-collapsed":!M(s)},rs.value]])},[(h(),lt(xp,{to:"body"},[t.value?(h(),y("div",{key:0,class:"opsdash-notification",role:t.value.kind==="error"?"alert":"status"},E(t.value.message),9,F2)):ne("",!0)])),(h(),lt(ok,{key:M(no),visible:M(Oo),calendars:M(Yi),"initial-selection":M(Xi),"initial-strategy":M(w8),"onboarding-version":M(ho),closable:!M(ot),"initial-theme-preference":M(ar),"system-theme":M(os),"initial-all-day-hours":M(k8),"initial-total-hours":M(x8),"initial-targets-config":M(_8),"initial-targets-week":M(Qe),"initial-deck-settings":M(C8),"initial-reporting-config":M(S8),"initial-dashboard-mode":M(T8),"initial-categories":M($8),"initial-assignments":M(M8),"start-step":M(Ut),"has-existing-config":M(Bo),saving:M(A8),"snapshot-saving":M(D8),"snapshot-notice":M(L8),"persist-step":H8,"send-test-report":F8,"send-checkpoint-report":P8,onClose:M(I8),onSkip:M(N8),onComplete:B8,onSaveCurrentConfig:M(O8)},null,8,["visible","calendars","initial-selection","initial-strategy","onboarding-version","closable","initial-theme-preference","system-theme","initial-all-day-hours","initial-total-hours","initial-targets-config","initial-targets-week","initial-deck-settings","initial-reporting-config","initial-dashboard-mode","initial-categories","initial-assignments","start-step","has-existing-config","saving","snapshot-saving","snapshot-notice","onClose","onSkip","onSaveCurrentConfig"])),Re(Ck,{visible:u.value,theme:M(ro),presets:M(Ki),"is-loading":M(qi),"is-saving":M(Ji),"is-applying":M(Zi),warnings:M(ss),onClose:z[0]||(z[0]=Fe=>u.value=!1),onSave:M(X),onLoad:M(pe),onDelete:M(Te),onRefresh:M(q),onClearWarnings:M(Le),onExportConfig:M(Ui),onImportConfig:M(Gi)},null,8,["visible","theme","presets","is-loading","is-saving","is-applying","warnings","onSave","onLoad","onDelete","onRefresh","onClearWarnings","onExportConfig","onImportConfig"]),M(lg)?(h(),lt(H2,{key:0,visible:M(ig),theme:M(ro),entry:M(lg),history:M(K8),"selected-version":M(J8),"is-saving":M(G8),onClose:M(dg),onSelectVersion:M(Y8),onAction:Q8},null,8,["visible","theme","entry","history","selected-version","is-saving","onClose","onSelectVersion"])):ne("",!0),Re(M(nb),{"app-name":"Operational Dashboard","show-navigation":M(s)},{navigation:Ct(()=>[Re(Xb,{id:"opsdash-sidebar","is-loading":M(St),range:g.value,offset:T.value,from:M(Vt),to:M(ga),"nav-toggle-label":M(d),"nav-toggle-icon":M(p),"dashboard-mode":w.value,"guided-hints":AT.value,"guided-hint-statuses":DT.value,"last-sync":LT.value,"release-notes-available":X8.value,"release-notes-open":M(ig),onLoad:so,"onUpdate:range":z[1]||(z[1]=Fe=>{g.value=Fe,T.value=0,so()}),"onUpdate:offset":z[2]||(z[2]=Fe=>{T.value=Fe,so()}),onToggleNav:M(l),onRerunOnboarding:M(Aa),onOpenProfiles:f,onOpenReleaseNotes:M(Z8),onOpenShortcuts:z[3]||(z[3]=Fe=>M(R8)(Fe))},null,8,["is-loading","range","offset","from","to","nav-toggle-label","nav-toggle-icon","dashboard-mode","guided-hints","guided-hint-statuses","last-sync","release-notes-available","release-notes-open","onToggleNav","onRerunOnboarding","onOpenReleaseNotes"])]),"sidebar-toggle":Ct(()=>[Re(De,{open:M(s),onToggle:M(l)},null,8,["open","onToggle"])]),default:Ct(()=>{var Fe,Ye;return[i("div",P2,[i("div",W2,[i("div",z2,[M(Ta)?(h(),y("div",{key:0,class:"banner warn",title:S.value},[z[46]||(z[46]=Ge(" Showing partial data to keep things fast. ",-1)),M(ha)&&M(ha).totalProcessed!=null?(h(),y(ye,{key:0},[Ge(" Processed "+E(M(ha).totalProcessed)+" items. ",1)],64)):ne("",!0)],8,R2)):ne("",!0),i("div",{ref_key:"appBarSlotRef",ref:Ue,class:"app-bar-slot"},[i("div",{ref_key:"appBarRef",ref:rt,class:ke(["app-bar",{"app-bar--editing":M(le)}])},[M(le)?(h(),y(ye,{key:1},[i("div",cC,[M(s)?ne("",!0):(h(),y("button",{key:0,class:"show-btn",type:"button",title:"Open sidebar","aria-label":M(d),onClick:c},[...z[52]||(z[52]=[i("svg",{width:"10",height:"11",viewBox:"0 0 10 11",fill:"none"},[i("path",{d:"M1 1l4 4.5L1 10M5 1l4 4.5L5 10",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])],8,uC)),i("div",gC,[(h(!0),y(ye,null,Ne(M(Z),we=>(h(),y("div",{key:we.id,class:"tab-item"},[i("button",{type:"button",class:ke(["tab",{on:we.id===M(Y)}]),role:"tab","aria-selected":we.id===M(Y),onClick:Ke=>M(se)(we.id),onContextmenu:Xe(Ke=>M(me)(Ke,we.id),["prevent"])},[M(Ee)===we.id?go((h(),y("input",{key:0,class:"tab-input","onUpdate:modelValue":z[10]||(z[10]=Ke=>Lt(ue)?ue.value=Ke:null),onBlur:z[11]||(z[11]=(...Ke)=>M(Be)&&M(Be)(...Ke)),onKeydown:[z[12]||(z[12]=Na(Xe((...Ke)=>M(Be)&&M(Be)(...Ke),["prevent"]),["enter"])),z[13]||(z[13]=Na(Xe((...Ke)=>M(ze)&&M(ze)(...Ke),["prevent"]),["esc"]))],onClick:z[14]||(z[14]=Xe(()=>{},["stop"]))},null,544)),[[An,M(ue)]]):(h(),y("span",fC,E(we.label),1))],42,pC),i("button",{type:"button",class:"tab-menu-btn","aria-label":`Tab actions for ${we.label}`,onClick:Xe(Ke=>M($e)(Ke,we.id),["stop"])},"⋯",8,bC)]))),128)),i("button",{type:"button",class:"tab tab--add",onClick:z[15]||(z[15]=we=>M(V)())},"+ Tab")]),z[54]||(z[54]=i("div",{class:"bar-flex1"},null,-1)),mt.value||rr.value?(h(),y("div",vC,[mt.value?(h(),y("button",{key:0,class:"active-profile-badge",type:"button",title:"Open profiles",onClick:f},E(mt.value),1)):ne("",!0),rr.value?(h(),y("span",hC,[z[53]||(z[53]=i("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none","aria-hidden":"true"},[i("path",{d:"M10.5 6a4.5 4.5 0 1 1-1.32-3.18",stroke:"currentColor","stroke-width":"1.4","stroke-linecap":"round"}),i("path",{d:"M10.5 1.5v3h-3",stroke:"currentColor","stroke-width":"1.4","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),Ge(" "+E(rr.value),1)])):ne("",!0)])):ne("",!0)]),i("div",mC,[z[55]||(z[55]=i("span",{class:"mode-hint"},"Editing layout · no date navigation",-1)),i("button",{class:"btn-ghost btn-ghost--primary",type:"button",onClick:z[16]||(z[16]=we=>ht.value=!0)},"Add widget"),i("button",{class:"btn-done",type:"button",onClick:Dt},"Done editing")]),i("div",{ref_key:"itbRowSlotRef",ref:ie,class:"itb-row-slot",style:He(Je.value&&Mt.value?{minHeight:`${Mt.value}px`}:void 0)},[i("div",{ref_key:"itbRowRef",ref:Q,class:ke(["bar-row sep itb-row",{"itb-row--floating":Je.value,"itb-row--empty":!We.value}])},[i("div",yC,[We.value?(h(),y("div",wC,[z[56]||(z[56]=i("div",{class:"sel-dot"},null,-1)),i("div",kC,[i("div",xC,E(mg.value),1),i("input",{type:"text",class:"sel-chip__name",value:ET.value,placeholder:mg.value,onInput:z[17]||(z[17]=we=>Ho("titlePrefix",we.target.value))},null,40,_C)])])):(h(),y("div",CC,[...z[57]||(z[57]=[i("div",{class:"sel-dot sel-dot--empty"},null,-1),i("span",{class:"sel-chip__empty-copy"},[i("strong",null,"Select a widget"),i("span",null,"to edit its layout and settings")],-1)])])),We.value?(h(),y(ye,{key:2},[z[78]||(z[78]=i("div",{class:"vsep"},null,-1)),i("div",{class:ke(["ic-group",{open:Ft.value==="width"}])},[i("button",{class:ke(["ic ic-group__trigger",{on:Ft.value==="width"}]),type:"button",disabled:!We.value,title:"Width options",onClick:z[18]||(z[18]=we=>fs("width"))},[...z[58]||(z[58]=[i("svg",{width:"16",height:"12",viewBox:"0 0 16 12",fill:"none"},[i("rect",{x:"1",y:"2",width:"14",height:"8",rx:"2",stroke:"currentColor","stroke-width":"1.4"}),i("path",{d:"M5 1v10M11 1v10",stroke:"currentColor","stroke-width":"1.2","stroke-linecap":"round",opacity:".55"})],-1),i("span",{class:"ic-lbl"},"Width",-1)])],10,SC),Ft.value==="width"?(h(),y("div",TC,[i("button",{class:ke(["ic ic-sub",{on:gl.value==="quarter"}]),type:"button",disabled:!We.value,title:"Quarter width",onClick:z[19]||(z[19]=we=>pl("quarter"))},[...z[59]||(z[59]=[i("svg",{width:"14",height:"12",viewBox:"0 0 14 12",fill:"none"},[i("rect",{x:"1",y:"1",width:"3",height:"10",rx:"1.4",stroke:"currentColor","stroke-width":"1.4"})],-1),i("span",{class:"ic-lbl"},"¼",-1)])],10,$C),i("button",{class:ke(["ic ic-sub",{on:gl.value==="half"}]),type:"button",disabled:!We.value,title:"Half width",onClick:z[20]||(z[20]=we=>pl("half"))},[...z[60]||(z[60]=[i("svg",{width:"14",height:"12",viewBox:"0 0 14 12",fill:"none"},[i("rect",{x:"1",y:"1",width:"5",height:"10",rx:"1.5",stroke:"currentColor","stroke-width":"1.4"})],-1),i("span",{class:"ic-lbl"},"½",-1)])],10,MC),i("button",{class:ke(["ic ic-sub",{on:gl.value==="full"}]),type:"button",disabled:!We.value,title:"Full width",onClick:z[21]||(z[21]=we=>pl("full"))},[...z[61]||(z[61]=[i("svg",{width:"14",height:"12",viewBox:"0 0 14 12",fill:"none"},[i("rect",{x:"1",y:"1",width:"12",height:"10",rx:"1.5",stroke:"currentColor","stroke-width":"1.4"})],-1),i("span",{class:"ic-lbl"},"Full",-1)])],10,AC)])):ne("",!0)],2),z[79]||(z[79]=i("div",{class:"vsep"},null,-1)),i("div",{class:ke(["ic-group",{open:Ft.value==="height"}])},[i("button",{class:ke(["ic ic-group__trigger",{on:Ft.value==="height"}]),type:"button",disabled:!We.value,title:"Height options",onClick:z[22]||(z[22]=we=>fs("height"))},[...z[62]||(z[62]=[i("svg",{width:"12",height:"16",viewBox:"0 0 12 16",fill:"none"},[i("rect",{x:"2",y:"1",width:"8",height:"14",rx:"2",stroke:"currentColor","stroke-width":"1.4"}),i("path",{d:"M1 5h10M1 11h10",stroke:"currentColor","stroke-width":"1.2","stroke-linecap":"round",opacity:".55"})],-1),i("span",{class:"ic-lbl"},"Height",-1)])],10,DC),Ft.value==="height"?(h(),y("div",LC,[i("button",{class:ke(["ic ic-sub",{on:us.value==="s"&&!nr.value}]),type:"button",disabled:!We.value,title:"Small height",onClick:z[23]||(z[23]=we=>bs("s"))},[...z[63]||(z[63]=[i("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none"},[i("rect",{x:"1",y:"4",width:"10",height:"4",rx:"1.4",stroke:"currentColor","stroke-width":"1.4"})],-1),i("span",{class:"ic-lbl"},"S",-1)])],10,EC),i("button",{class:ke(["ic ic-sub",{on:us.value==="m"&&!nr.value}]),type:"button",disabled:!We.value,title:"Medium height",onClick:z[24]||(z[24]=we=>bs("m"))},[...z[64]||(z[64]=[i("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none"},[i("rect",{x:"1",y:"2.5",width:"10",height:"7",rx:"1.4",stroke:"currentColor","stroke-width":"1.4"})],-1),i("span",{class:"ic-lbl"},"M",-1)])],10,NC),i("button",{class:ke(["ic ic-sub",{on:us.value==="l"&&!nr.value}]),type:"button",disabled:!We.value,title:"Large height",onClick:z[25]||(z[25]=we=>bs("l"))},[...z[65]||(z[65]=[i("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none"},[i("rect",{x:"1",y:"1",width:"10",height:"10",rx:"1.4",stroke:"currentColor","stroke-width":"1.4"})],-1),i("span",{class:"ic-lbl"},"L",-1)])],10,IC),i("button",{class:ke(["ic ic-sub",{on:us.value==="xl"&&!nr.value}]),type:"button",disabled:!We.value,title:"Extra large height",onClick:z[26]||(z[26]=we=>bs("xl"))},[...z[66]||(z[66]=[i("svg",{width:"12",height:"13",viewBox:"0 0 12 13",fill:"none"},[i("rect",{x:"1",y:"1",width:"10",height:"11",rx:"1.4",stroke:"currentColor","stroke-width":"1.4"}),i("path",{d:"M4 5h4",stroke:"currentColor","stroke-width":"1.2","stroke-linecap":"round"})],-1),i("span",{class:"ic-lbl"},"XL",-1)])],10,OC),i("button",{class:ke(["ic ic-sub",{on:nr.value}]),type:"button",disabled:!We.value,title:"Auto height",onClick:OT},[...z[67]||(z[67]=[i("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none"},[i("path",{d:"M6 1v10M3.5 3.5L6 1l2.5 2.5M3.5 8.5L6 11l2.5-2.5",stroke:"currentColor","stroke-width":"1.4","stroke-linecap":"round","stroke-linejoin":"round"})],-1),i("span",{class:"ic-lbl"},"Auto",-1)])],10,BC)])):ne("",!0)],2),z[80]||(z[80]=i("div",{class:"vsep"},null,-1)),i("div",{class:ke(["ic-group",{open:Ft.value==="scale"}])},[i("button",{class:ke(["ic ic-group__trigger",{on:Ft.value==="scale"}]),type:"button",disabled:!We.value,title:"Scale options",onClick:z[27]||(z[27]=we=>fs("scale"))},[...z[68]||(z[68]=[i("svg",{width:"16",height:"16",viewBox:"0 0 16 16",fill:"none"},[i("path",{d:"M3 11L11 3M6 3h5v5",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"}),i("path",{d:"M10 13H3V6",stroke:"currentColor","stroke-width":"1.3","stroke-linecap":"round","stroke-linejoin":"round",opacity:".7"})],-1),i("span",{class:"ic-lbl"},"Scale",-1)])],10,HC),Ft.value==="scale"?(h(),y("div",FC,[i("button",{class:ke(["ic ic-sub",{on:gs.value==="sm"}]),type:"button",disabled:!We.value,title:"Small scale",onClick:z[28]||(z[28]=we=>ps("sm"))},[...z[69]||(z[69]=[i("span",{class:"ic-lbl"},"S-",-1)])],10,PC),i("button",{class:ke(["ic ic-sub",{on:gs.value==="md"}]),type:"button",disabled:!We.value,title:"Normal scale",onClick:z[29]||(z[29]=we=>ps("md"))},[...z[70]||(z[70]=[i("span",{class:"ic-lbl"},"M",-1)])],10,WC),i("button",{class:ke(["ic ic-sub",{on:gs.value==="lg"}]),type:"button",disabled:!We.value,title:"Large scale",onClick:z[30]||(z[30]=we=>ps("lg"))},[...z[71]||(z[71]=[i("span",{class:"ic-lbl"},"L+",-1)])],10,zC),i("button",{class:ke(["ic ic-sub",{on:gs.value==="xl"}]),type:"button",disabled:!We.value,title:"Extra large scale",onClick:z[31]||(z[31]=we=>ps("xl"))},[...z[72]||(z[72]=[i("span",{class:"ic-lbl"},"XL",-1)])],10,RC)])):ne("",!0)],2),z[81]||(z[81]=i("div",{class:"vsep"},null,-1)),i("div",{class:ke(["ic-group",{open:Ft.value==="color"}])},[i("button",{class:ke(["ic ic-group__trigger",{on:Ft.value==="color"}]),type:"button",disabled:!We.value,title:"Card background color",onClick:z[32]||(z[32]=we=>fs("color"))},[i("span",{class:ke(["ic-color-dot",{"ic-color-dot--none":!sr.value}]),style:He(sr.value?{background:sr.value}:{})},null,6),z[73]||(z[73]=i("span",{class:"ic-lbl"},"Color",-1))],10,jC),Ft.value==="color"?(h(),y("div",VC,[i("button",{type:"button",class:ke(["ic-color-swatch ic-color-reset",{on:!sr.value}]),title:"Default background",onClick:z[33]||(z[33]=Xe(()=>{Ho("cardBg",null),Ft.value=null},["stop"]))},null,2),(h(!0),y(ye,null,Ne(NT.value,we=>{var Ke;return h(),y("button",{key:we,type:"button",class:ke(["ic-color-swatch",{on:((Ke=sr.value)==null?void 0:Ke.toUpperCase())===we.toUpperCase()}]),style:He({background:we}),title:we,onClick:Xe(()=>{Ho("cardBg",we),Ft.value=null},["stop"])},null,14,UC)}),128)),i("label",GC,[i("input",{type:"color",value:sr.value??"#ffffff",onChange:z[34]||(z[34]=Xe(we=>{Ho("cardBg",we.target.value),Ft.value=null},["stop"]))},null,40,KC)])])):ne("",!0)],2),i("div",qC,[We.value&&((Fe=M(Pr)[We.value.type])!=null&&Fe.configurable)?(h(),lt(t_,{key:0,entry:M(Pr)[We.value.type],options:We.value.options,open:xt.value,"show-advanced":We.value.type==="targets_v2",context:M(hg),tabs:M(Z).map(we=>({id:we.id,label:we.label})),"current-tab-id":M(Y),onToggle:z[35]||(z[35]=we=>{xt.value=we}),onOpenAdvanced:BT,onChange:z[36]||(z[36]=(we,Ke)=>Ho(we,Ke)),onMoveToTab:z[37]||(z[37]=we=>nt(We.value.id,we)),onDuplicateToTab:z[38]||(z[38]=we=>ft(We.value.id,we))},null,8,["entry","options","open","show-advanced","context","tabs","current-tab-id"])):(h(),y("button",JC,[...z[74]||(z[74]=[i("svg",{width:"14",height:"12",viewBox:"0 0 14 12",fill:"none"},[i("path",{d:"M1 3h12M1 6h12M1 9h12",stroke:"currentColor","stroke-width":"1.4","stroke-linecap":"round"}),i("circle",{cx:"4",cy:"3",r:"1.5",stroke:"currentColor","stroke-width":"1.3"}),i("circle",{cx:"10",cy:"6",r:"1.5",stroke:"currentColor","stroke-width":"1.3"}),i("circle",{cx:"6",cy:"9",r:"1.5",stroke:"currentColor","stroke-width":"1.3"})],-1),i("span",{class:"ic-lbl"},"Settings",-1)])]))]),i("button",{class:"ic",type:"button",disabled:!We.value,title:"Move earlier",onClick:z[39]||(z[39]=we=>yg("up"))},[...z[75]||(z[75]=[i("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none"},[i("path",{d:"M6 9V3M3 6l3-3 3 3",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1),i("span",{class:"ic-lbl"},"Up",-1)])],8,ZC),i("button",{class:"ic",type:"button",disabled:!We.value,title:"Move later",onClick:z[40]||(z[40]=we=>yg("down"))},[...z[76]||(z[76]=[i("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none"},[i("path",{d:"M6 3v6M3 6l3 3 3-3",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round"})],-1),i("span",{class:"ic-lbl"},"Down",-1)])],8,YC),i("button",{class:"ic ic-danger",type:"button",disabled:!We.value,title:"Remove widget",onClick:IT},[...z[77]||(z[77]=[i("svg",{width:"11",height:"12",viewBox:"0 0 11 12",fill:"none"},[i("path",{d:"M1 3h9M3.5 3V2a.5.5 0 01.5-.5h2a.5.5 0 01.5.5v1M4.5 5.5v3.5M6.5 5.5v3.5M2 3l.6 7a.5.5 0 00.5.5h4.8a.5.5 0 00.5-.5L9 3",stroke:"currentColor","stroke-width":"1.3","stroke-linecap":"round","stroke-linejoin":"round"})],-1),i("span",{class:"ic-lbl"},"Remove",-1)])],8,XC)],64)):(h(),y("div",QC,[...z[82]||(z[82]=[i("svg",{width:"16",height:"14",viewBox:"0 0 14 12",fill:"none"},[i("path",{d:"M1 3h12M1 6h12M1 9h12",stroke:"currentColor","stroke-width":"1.4","stroke-linecap":"round"}),i("circle",{cx:"4",cy:"3",r:"1.5",stroke:"currentColor","stroke-width":"1.3"}),i("circle",{cx:"10",cy:"6",r:"1.5",stroke:"currentColor","stroke-width":"1.3"}),i("circle",{cx:"6",cy:"9",r:"1.5",stroke:"currentColor","stroke-width":"1.3"})],-1),i("span",null,"Settings and layout controls appear here",-1)])]))])],2)],4)],64)):(h(),y(ye,{key:0},[M(s)?ne("",!0):(h(),y("div",j2,[i("button",{class:"show-btn",type:"button",onClick:z[4]||(z[4]=(...we)=>M(l)&&M(l)(...we)),"aria-label":M(d)},[...z[47]||(z[47]=[i("svg",{width:"10",height:"11",viewBox:"0 0 10 11",fill:"none"},[i("path",{d:"M1 1l4 4.5L1 10M5 1l4 4.5L5 10",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])],8,V2),i("div",U2,[i("button",{type:"button",class:ke({on:g.value==="week"}),disabled:M(St),onClick:z[5]||(z[5]=we=>pt("week"))},"Week",10,G2),i("button",{type:"button",class:ke({on:g.value==="month"}),disabled:M(St),onClick:z[6]||(z[6]=we=>pt("month"))},"Month",10,K2)]),i("div",q2,[i("button",{class:"navc-btn",type:"button",disabled:M(St),onClick:z[7]||(z[7]=(...we)=>M(el)&&M(el)(...we))},[...z[48]||(z[48]=[i("svg",{width:"6",height:"11",viewBox:"0 0 6 11",fill:"none"},[i("path",{d:"M5 1L1 5.5l4 4.5",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])],8,J2),i("div",Z2,[i("span",Y2,[i("span",X2,E(M(Vt)),1),i("span",Q2,E(eT.value),1),i("span",eC,E(M(ga)),1)])]),i("button",{class:"navc-btn",type:"button",disabled:M(St),onClick:z[8]||(z[8]=(...we)=>M(tl)&&M(tl)(...we))},[...z[49]||(z[49]=[i("svg",{width:"6",height:"11",viewBox:"0 0 6 11",fill:"none"},[i("path",{d:"M1 1l4 4.5L1 10",stroke:"currentColor","stroke-width":"1.8","stroke-linecap":"round","stroke-linejoin":"round"})],-1)])],8,tC)]),i("button",{class:"bar-btn-ref",type:"button",disabled:M(St)||M(Sa),onClick:z[9]||(z[9]=(...we)=>M(ng)&&M(ng)(...we))},"Refresh",8,aC)])),i("div",{class:ke(["bar-row",{sep:!M(s)}])},[i("div",oC,[(h(!0),y(ye,null,Ne(M(Z),we=>(h(),y("div",{key:we.id,class:"tab-item"},[i("button",{type:"button",class:ke(["tab",{on:we.id===M(Y)}]),role:"tab","aria-selected":we.id===M(Y),onClick:Ke=>M(se)(we.id),onContextmenu:Xe(Ke=>M(me)(Ke,we.id),["prevent"])},[i("span",nC,E(we.label),1),we.id===M(K)?(h(),y("span",sC,"Default")):ne("",!0)],42,rC)]))),128))]),z[51]||(z[51]=i("div",{class:"bar-flex1"},null,-1)),mt.value||rr.value?(h(),y("div",iC,[mt.value?(h(),y("button",{key:0,class:"active-profile-badge",type:"button",title:"Open profiles",onClick:f},E(mt.value),1)):ne("",!0),rr.value?(h(),y("span",lC,[z[50]||(z[50]=i("svg",{width:"12",height:"12",viewBox:"0 0 12 12",fill:"none","aria-hidden":"true"},[i("path",{d:"M10.5 6a4.5 4.5 0 1 1-1.32-3.18",stroke:"currentColor","stroke-width":"1.4","stroke-linecap":"round"}),i("path",{d:"M10.5 1.5v3h-3",stroke:"currentColor","stroke-width":"1.4","stroke-linecap":"round","stroke-linejoin":"round"})],-1)),Ge(" "+E(rr.value),1)])):ne("",!0)])):ne("",!0),M(Sa)?(h(),y("span",dC,"Updating…")):ne("",!0),i("button",{class:"btn-ghost",type:"button",onClick:Dt},"Edit layout")],2)],64))],2)],512),M(Se).open?(h(),y("div",{key:1,class:"tab-context-menu",style:He({top:`${M(Se).y}px`,left:`${M(Se).x}px`}),role:"menu"},[i("button",{type:"button",role:"menuitem",onClick:z[41]||(z[41]=(...we)=>M(Ae)&&M(Ae)(...we))},"Set as default"),i("button",{type:"button",role:"menuitem",onClick:z[42]||(z[42]=(...we)=>M(Ie)&&M(Ie)(...we))},"Rename"),i("button",{type:"button",role:"menuitem",disabled:M(Z).length<=1,onClick:z[43]||(z[43]=(...we)=>M(Pe)&&M(Pe)(...we))}," Remove ",8,e4)],4)):ne("",!0),Re(gx,{open:ht.value,"widget-type-list":M(Io),onClose:z[44]||(z[44]=we=>ht.value=!1),onSelect:Tt},null,8,["open","widget-type-list"]),i("div",t4,[Re(zk,{ref_key:"layoutRef",ref:ls,widgets:M(J),context:M(hg),editable:M(le),"widget-types":M(Io),"preset-label":gT.value,tabs:M(Z).map(we=>({id:we.id,label:we.label})),"current-tab-id":M(Y),"onEdit:width":M(F),"onEdit:height":M(j),"onEdit:remove":M(P),"onEdit:move":M(ce),"onEdit:moveTab":nt,"onEdit:duplicateTab":ft,"onEdit:options":M(ee),"onEdit:add":M(re),"onEdit:reorder":M(ge),"onOpen:onboarding":Vi,"onReset:preset":z[45]||(z[45]=we=>M(U)(w.value.value)),"onSelect:cell":M(dt)},null,8,["widgets","context","editable","widget-types","preset-label","tabs","current-tab-id","onEdit:width","onEdit:height","onEdit:remove","onEdit:move","onEdit:options","onEdit:add","onEdit:reorder","onSelect:cell"])]),i("div",a4,[M(al)?(h(),y(ye,{key:0},[Ge(" Operational Dashboard • v"+E(M(al))+" • Built by Blade34242 @ Gellert Innovation ",1)],64)):(h(),y(ye,{key:1},[Ge(" Operational Dashboard • v"+E(((Ye=M(Ur))==null?void 0:Ye.version)||"0.6.0")+" • Built by Blade34242 @ Gellert Innovation ",1)],64))])])])])]}),_:1},8,["show-navigation"]),Re(Ek,{visible:M(sg),groups:M(V8),theme:M(ro),onClose:M(j8)},null,8,["visible","groups","theme","onClose"])],2)}}});function Qn(){var t;const e=typeof window<"u"?window:{};return!!((t=e==null?void 0:e.OC)!=null&&t.debug||e!=null&&e.__DEV__||e!=null&&e.__VUE_PROD_DEVTOOLS__)}function Qu(...e){Qn()&&console.log(...e)}function r4(...e){Qn()&&console.warn(...e)}function Oi(){var t;const e=document.getElementById("app");if(e){try{Qu("[opsdash] booting");const a=(t=e.dataset)==null?void 0:t.opsdashDefaultWidgets;if(a)try{$u(JSON.parse(a))}catch(s){r4("[opsdash] failed to parse bootstrap widgets",s)}const o=ab(o4);o.config.errorHandler=(s,l,d)=>{const p=l==null?void 0:l.type,u=p&&p.name?p.name:"";if(Qn()){const v={err:s,info:d,name:u,stack:s instanceof Error?s.stack:void 0},b=window;Array.isArray(b.__opsdashErrors)||(b.__opsdashErrors=[]),b.__opsdashErrors.push(v),console.error("[opsdash] Vue error",v);return}console.error("[opsdash] Vue error")};const r=o.mount(e),n=window;n.__opsdashApp=o,n.__opsdashRoot=r,a_(),Qu("[opsdash] mounted")}catch(a){Qn()?console.error("Mount failed",a):console.error("Mount failed")}return}document.readyState==="complete"||document.readyState==="interactive"?setTimeout(Oi,50):window.addEventListener("DOMContentLoaded",Oi,{once:!0})}Oi();const n4={key:0,class:"title-row"},s4={class:"title"},i4=["title"],l4={class:"index-badge__ring","aria-hidden":"true"},d4={class:"index-badge__value"},c4={class:"index-badge__meta"},u4={key:0,class:"index-badge__range"},g4={key:0,class:"trend"},p4=["title"],f4={class:"trend-line-row"},b4={class:"trend-value"},v4={class:"trend-range"},h4={class:"trend-offset"},m4={key:1,class:"messages"},y4={key:2,class:"config"},w4={key:3,class:"empty"},k4=Object.freeze(Object.defineProperty({__proto__:null,default:gt(Ve({__name:"BalanceIndexCard",props:{overview:{},rangeLabel:{},showBadge:{type:Boolean},showTrend:{type:Boolean},showMessages:{type:Boolean},showConfig:{type:Boolean},messageLimit:{},lookbackWeeks:{},loopbackCount:{},indexBasis:{},showCurrent:{type:Boolean,default:!0},labelMode:{},reverseOrder:{type:Boolean},from:{},to:{},rangeMode:{},thresholds:{},title:{},cardBg:{},showHeader:{type:Boolean},targetsCategories:{},trendColor:{}},setup(e){const t=e,a=x(()=>t.title||"Balance Index"),o=x(()=>t.showHeader!==!1),r=x(()=>(t.rangeMode||"").toLowerCase()==="month"?"mo":"wk"),n=x(()=>{var B,G,A;return Array.isArray((G=(B=t.overview)==null?void 0:B.trend)==null?void 0:G.history)?t.overview.trend.history:Array.isArray((A=t.overview)==null?void 0:A.trendHistory)?t.overview.trendHistory:[]}),s=x(()=>{const B=Number.isFinite(t.lookbackWeeks)?Number(t.lookbackWeeks):Number.isFinite(t.loopbackCount)?Number(t.loopbackCount):null;if(B!=null)return Math.max(0,Math.min(6,Math.floor(B)));const G=n.value.filter(A=>Number((A==null?void 0:A.offset)??0)>0);return Math.max(0,Math.min(6,G.length))}),l=x(()=>{const B=new Map,G=t.targetsCategories||[],A=t.indexBasis;return n.value.forEach((V,he)=>{const Me=Number((V==null?void 0:V.offset)??(V==null?void 0:V.step)),ae=Number.isFinite(Me)&&Me>0?Math.round(Me):he+1,U=Number(V==null?void 0:V.index);if(Number.isFinite(U)){B.set(ae,{index:Math.max(0,Math.min(1,U)),label:(V==null?void 0:V.label)||""});return}const F={};Array.isArray(V==null?void 0:V.categories)&&V.categories.forEach(re=>{F[String(re.id)]=Number(re.share??0)});const j=Object.values(F),ce=j.length?Math.max(...j):0,fe=j.reduce((re,ge)=>re+ge,0);(ce>1||fe>1.5)&&Object.keys(F).forEach(re=>{F[re]=F[re]/100});const N=Object.values(F).reduce((re,ge)=>re+ge,0);N>1.0001&&N>0&&Object.keys(F).forEach(re=>{F[re]=F[re]/N});const P=O({shares:F,targets:G,basis:A});B.set(ae,{index:P,label:(V==null?void 0:V.label)||""})}),B}),d=x(()=>{var A;const B=[],G=s.value;for(let V=G;V>=1;V-=1){const he=l.value.get(V);B.push({offset:V,index:he==null?void 0:he.index,label:(he==null?void 0:he.label)||`-${V} ${r.value}`})}return B.push({offset:0,index:typeof((A=t.overview)==null?void 0:A.index)=="number"?t.overview.index:void 0,label:t.rangeLabel||""}),B}),p=x(()=>t.showCurrent!==!1),u=x(()=>{let B=d.value.slice();return p.value||(B=B.filter(G=>((G==null?void 0:G.offset)??0)!==0)),t.reverseOrder===!0?B.slice().reverse():B}),v=x(()=>u.value.length>0),b=x(()=>{var B;return((B=t.overview)==null?void 0:B.warnings)||[]}),c=x(()=>{const B=b.value,G=Number.isFinite(t.messageLimit)?Number(t.messageLimit):1/0;return!Number.isFinite(G)||G<=0?B:B.slice(0,G)}),f=x(()=>({background:t.cardBg||void 0})),g=x(()=>{var A,V,he,Me,ae;const B=Jo(),G={noticeAbove:((A=t.thresholds)==null?void 0:A.noticeAbove)??B.thresholds.noticeAbove,noticeBelow:((V=t.thresholds)==null?void 0:V.noticeBelow)??B.thresholds.noticeBelow,warnAbove:((he=t.thresholds)==null?void 0:he.warnAbove)??B.thresholds.warnAbove,warnBelow:((Me=t.thresholds)==null?void 0:Me.warnBelow)??B.thresholds.warnBelow,warnIndex:((ae=t.thresholds)==null?void 0:ae.warnIndex)??B.thresholds.warnIndex};return{basis:t.indexBasis||B.index.basis,...G}}),T=x(()=>{const B=t.showTrend===!1||!v.value,G=t.showMessages===!1||c.value.length===0,A=t.showConfig===!1;return B&&G&&A}),S=x(()=>{var A;const B=(A=t.overview)==null?void 0:A.index,G=typeof B=="number"?B:Number(B??NaN);return Number.isFinite(G)?Math.max(0,Math.min(1,G)):null}),$=x(()=>I(S.value??void 0)),C=x(()=>{const B=S.value;if(B==null)return{};const G=Math.round(B*100);let A="#dc2626";return B>=.8?A="#16a34a":B>=.65&&(A="#f59e0b"),{"--index-fill":`${G}%`,"--index-color":A}}),H=x(()=>S.value==null?"":`Balance index ${S.value.toFixed(2)}`),O=B=>{var ae;const G=B.basis||"category";if(G==="off")return 0;const A={},V=(ae=B.targets)!=null&&ae.length?B.targets.reduce((U,F)=>U+(F.targetHours??0),0):0;G!=="calendar"&&V>0&&B.targets.forEach(U=>{A[String(U.id)]=(U.targetHours??0)/V});const he=new Set([...Object.keys(B.shares||{}),...Object.keys(A)]);if(he.size===0)return 0;let Me=0;return he.forEach(U=>{var ce;const F=Number(((ce=B.shares)==null?void 0:ce[U])??0),j=G==="calendar"?1/he.size:A[U]??0;Me=Math.max(Me,Math.abs(F-j))}),Math.max(0,Math.min(1,Number((1-Me).toFixed(2))))},I=B=>Number.isFinite(B)?B.toFixed(2):"—",_=x(()=>t.trendColor||"#2563EB"),k=x(()=>{const B=(t.labelMode||"period").toString().toLowerCase();return B==="date"||B==="offset"?B:"period"}),m=x(()=>({gridTemplateColumns:`repeat(auto-fit, minmax(${k.value==="date"?108:88}px, 1fr))`}));function w(B,G){const A=B.replace("#",""),V=parseInt(A.substring(0,2),16),he=parseInt(A.substring(2,4),16),Me=parseInt(A.substring(4,6),16),ae=U=>Math.max(0,Math.min(255,Math.round(U*(1-G))));return`rgb(${ae(V)}, ${ae(he)}, ${ae(Me)})`}const D=B=>{const G=_.value,A=u.value[B],V=Number((A==null?void 0:A.index)??0),he=Math.min(1,Math.max(0,1-V));return{background:w(G,he*.6)}},R=B=>{if(k.value!=="date")return"";const G=u.value[B],A=((G==null?void 0:G.offset)??0)===0;return(G==null?void 0:G.label)||A&&t.rangeLabel||""},L=B=>!!R(B),Z=B=>{var A;if(k.value!=="offset")return"";const G=((A=u.value[B])==null?void 0:A.offset)??B;return G===0?"Current":`-${G}`},K=B=>{var V;if(k.value!=="date")return"";const G=R(B);return G||((((V=u.value[B])==null?void 0:V.offset)??B)===0&&t.rangeLabel?t.rangeLabel:"")};function Y(B){return B?/^-\d+\s*(wk|mo)$/i.test(B.trim()):!0}function le(B,G){if(!B||!G)return"";const A=na(B,"UTC"),V=na(G,"UTC");return Er(A,V,{day:"2-digit",month:"2-digit"})}function J(B){var U,F;const G=((U=u.value[B])==null?void 0:U.offset)??B;if(!t.from||!t.to){const j=(F=u.value[B])==null?void 0:F.label;return Y(j)?"":j||""}const A=(t.rangeMode||"").toLowerCase(),V=Nt(t.from),he=Nt(t.to);if(!V||!he)return"";if(A==="month"){const j=In(V,-G),ce=$c(j);return le(j,ce)}const Me=Mo(V,-7*G),ae=Mo(he,-7*G);return le(Me,ae)}function de(B){var F;const G=((F=u.value[B])==null?void 0:F.offset)??B,A=(t.rangeMode||"").toLowerCase();if(!t.from)return G===0?"Current":`- ${G} wk`;const V=Nt(t.from),he=V?A==="month"?In(V,-G):Mo(V,-7*G):null;if(!he)return G===0?"Current":`- ${G} wk`;if(A==="month"){const j=he.getUTCMonth()+1,ce=V?V.getUTCMonth()+1:j;return`MONTH ${G===0?ce:j}`}const Me=to(he),ae=V?to(V):Me;return`WEEK ${G===0?ae:Me}`}return(B,G)=>(h(),y("div",{class:"balance-card",style:He(f.value)},[i("div",{class:ke(["header",{compact:T.value}])},[o.value?(h(),y("div",n4,[i("span",s4,E(a.value),1)])):ne("",!0),B.overview?(h(),y("div",{key:1,class:ke(["index",{centered:T.value}])},[i("div",{class:"index-badge",style:He(C.value),title:H.value},[i("div",l4,[i("span",d4,E($.value),1)]),i("div",c4,[G[0]||(G[0]=i("div",{class:"index-badge__label"},"Current index",-1)),B.rangeLabel?(h(),y("div",u4,E(B.rangeLabel),1)):ne("",!0)])],12,i4)],2)):ne("",!0)],2),B.showTrend&&v.value?(h(),y("div",g4,[i("div",{class:"trend-line",style:He(m.value)},[(h(!0),y(ye,null,Ne(u.value,(A,V)=>(h(),y("div",{key:V,class:ke(["trend-block",{current:A.offset===0,"no-range":!L(V)}]),title:A.label||"",style:He(D(V))},[i("div",f4,[i("span",b4,E(I(A.index)),1),i("span",v4,E(k.value==="date"?J(V)||K(V):""),1),i("span",h4,[k.value==="period"?(h(),y(ye,{key:0},[Ge(E(de(V)),1)],64)):k.value==="offset"?(h(),y(ye,{key:1},[Ge(E(Z(V)),1)],64)):ne("",!0)])])],14,p4))),128))],4)])):ne("",!0),B.showMessages&&c.value.length?(h(),y("div",m4,[G[1]||(G[1]=i("div",{class:"section-title"},"Messages",-1)),i("ul",null,[(h(!0),y(ye,null,Ne(c.value,(A,V)=>(h(),y("li",{key:V},E(A),1))),128))])])):ne("",!0),B.showConfig?(h(),y("div",y4,[i("div",null,"Basis: "+E(g.value.basis),1),i("div",null,"Notice ±: +"+E(g.value.noticeAbove??"—")+" / -"+E(g.value.noticeBelow??"—"),1),i("div",null,"Warn ±: +"+E(g.value.warnAbove??"—")+" / -"+E(g.value.warnBelow??"—"),1),i("div",null,"Warn index: "+E(g.value.warnIndex??"—"),1)])):ne("",!0),B.overview?ne("",!0):(h(),y("div",w4,"No balance data."))],4))}}),[["__scopeId","data-v-6f9b087b"]])},Symbol.toStringTag,{value:"Module"})),x4={key:0,class:"mix-header"},_4={class:"mix-title"},C4={class:"mix-subtitle"},S4={key:0,class:"mix-badge"},T4={key:2,class:"mix-list"},$4={class:"mix-label"},M4=["title"],A4={class:"mix-cell__value"},D4={key:0,class:"mix-cell__indicator"},L4={key:3,class:"hint"},E4=Object.freeze(Object.defineProperty({__proto__:null,default:gt(Ve({__name:"CategoryMixTrendCard",props:{overview:{},rangeMode:{},lookbackWeeks:{},showBadge:{type:Boolean},showHeader:{type:Boolean},colorMode:{},density:{},labelMode:{},squareCells:{type:Boolean},reverseOrder:{type:Boolean},trendIndicator:{},rangeLabel:{},from:{},to:{},title:{},cardBg:{},toneLowColor:{},toneHighColor:{},shareLowColor:{},shareHighColor:{}},setup(e){const t=e,a=x(()=>t.showHeader!==!1),o=x(()=>t.density==="dense"?"dense":"normal"),r=x(()=>{const F=(t.labelMode||"period").toString().toLowerCase();return F==="offset"||F==="label"||F==="compact"||F==="date"?F:"period"}),n=x(()=>t.squareCells===!0),s=x(()=>{const F=t.colorMode;return F==="trend"||F==="share"||F==="hybrid"?F:"hybrid"}),l=x(()=>{const F=String(t.trendIndicator??"").toLowerCase();return F==="symbol"||F==="delta"||F==="both"?F:"none"}),d=x(()=>{var F,j;return t.showBadge===!1?"":((j=(F=t.overview)==null?void 0:F.trend)==null?void 0:j.badge)??""}),p=x(()=>t.rangeMode==="month"?"MO":"WE"),u=x(()=>t.rangeMode==="month"?"M":"W"),v=x(()=>G()),b=x(()=>Math.max(1,Math.min(6,t.lookbackWeeks||1))),c=x(()=>t.title||"Category mix trend"),f=x(()=>({background:t.cardBg||void 0})),g=x(()=>{var j,ce,fe;const F=((ce=(j=t.overview)==null?void 0:j.trend)==null?void 0:ce.history)??((fe=t.overview)==null?void 0:fe.trendHistory)??[];return Array.isArray(F)?F.map(N=>({offset:Number((N==null?void 0:N.offset)??(N==null?void 0:N.step)??0)||0,label:String((N==null?void 0:N.label)??""),categories:Array.isArray(N==null?void 0:N.categories)?N.categories.map(P=>({id:String((P==null?void 0:P.id)??""),label:String((P==null?void 0:P.label)??""),share:Number((P==null?void 0:P.share)??0)||0})):[]})).filter(N=>N.offset>0):[]}),T=F=>`-${F} ${p.value}`,S=(F,j)=>r.value==="label"&&j?j:r.value==="date"?de(F,j)||T(F):r.value==="offset"?`-${F}`:r.value==="compact"?`${u.value}-${F}`:B(F),$=x(()=>{if(!t.overview)return[];const F=b.value,j=new Map;return g.value.forEach(ce=>{const fe=Math.max(1,Math.min(12,Math.round(ce.offset)));if(!fe||fe>F)return;const N={};ce.categories.forEach(P=>{P.id&&(N[P.id]=Number.isFinite(P.share)?P.share:0)}),j.set(fe,{offset:fe,label:S(fe,ce.label),shares:N})}),Array.from(j.values()).sort((ce,fe)=>fe.offset-ce.offset)}),C=x(()=>{const F=[...$.value.map(j=>({key:`col-${j.offset}`,offset:j.offset,label:j.label,isCurrent:!1,shares:j.shares})),{key:"col-current",offset:0,label:v.value,isCurrent:!0,shares:null}];return t.reverseOrder===!0?F.slice().reverse():F}),H=x(()=>C.value.length),O=x(()=>({gridTemplateColumns:`minmax(0, var(--mix-label-width, 52px)) repeat(${Math.max(H.value,1)}, minmax(0, 1fr))`})),I=x(()=>({gridTemplateColumns:`repeat(${Math.max(H.value,1)}, minmax(0, 1fr))`})),_=x(()=>{const F=A(t.toneLowColor)||"#e11d48",j=A(t.toneHighColor)||"#10b981",ce=V(F,j,.5);return{down:ae(F),flat:ae(ce),up:ae(j)}}),k=x(()=>{const F=A(t.shareLowColor)||"#e2e8f0",j=A(t.shareHighColor)||"#60a5fa";return{low:F,high:j}}),m=F=>{const j=U(F,0,100)/100;return V(k.value.low,k.value.high,j)},w=F=>F>1?"up":F<-1?"down":"flat",D=x(()=>t.overview?(t.overview.categories??[]).map(j=>{const ce=typeof j.share=="number"?j.share:0,fe=C.value.map(P=>{var re;return{label:P.label,share:P.isCurrent?ce:((re=P.shares)==null?void 0:re[j.id])??0,isCurrent:P.isCurrent}}),N=fe.map((P,re)=>{const ge=re>0,ee=ge?fe[re-1].share:P.share,be=P.share-ee,ve=ge?w(be):"flat",xe=s.value,_e=_.value[ve],ue=m(P.share),Ee=ae(ue),Se=xe==="trend"?_e.background:ue,te=xe==="trend"?_e.color:Ee.color;return{label:P.label,share:P.share,isCurrent:!!P.isCurrent,trend:ve,indicator:Y(ve,be,ge),style:{"--mix-bg":Se,"--mix-fg":te,"--mix-accent":_e.background}}});return{id:j.id,label:j.label,cells:N}}):[]),R=x(()=>{var j;const F=b.value;if(F>1){const ce=t.rangeMode==="month"?"months":"weeks";return`History · last ${F} ${ce}`}return F===1&&$.value.length?((j=$.value[$.value.length-1])==null?void 0:j.label)||T(1):T(F||1)}),L=F=>`${Math.max(0,Math.round(F))}%`;function Z(F){return F==="up"?"↑":F==="down"?"↓":"→"}function K(F){const j=Math.round(F);return!Number.isFinite(j)||j===0?"0pp":`${j>0?"+":""}${j}pp`}function Y(F,j,ce){if(!ce)return"";const fe=l.value;return fe==="none"?"":fe==="symbol"?Z(F):fe==="delta"?K(j):`${Z(F)} ${K(j)}`}const le={day:"2-digit",month:"2-digit"};function J(F,j){if(!F||!j)return"";const ce=na(F,"UTC"),fe=na(j,"UTC");return Er(ce,fe,le)}function de(F,j){if(!t.from||!t.to)return j||"";const ce=(t.rangeMode||"").toLowerCase(),fe=Nt(t.from),N=Nt(t.to);if(!fe||!N)return j||"";if(ce==="month"){const ge=In(fe,-F),ee=$c(ge);return J(ge,ee)}const P=Mo(fe,-7*F),re=Mo(N,-7*F);return J(P,re)}function B(F){const j=(t.rangeMode||"").toLowerCase();if(!t.from)return F===0?"Current":j==="month"?`-${F} mo`:`-${F} wk`;const ce=Nt(t.from),fe=ce?j==="month"?In(ce,-F):Mo(ce,-7*F):null;if(!fe)return F===0?"Current":j==="month"?`-${F} mo`:`-${F} wk`;if(j==="month"){const re=ce?ce.getUTCMonth()+1:fe.getUTCMonth()+1;return`MONTH ${F===0?re:fe.getUTCMonth()+1}`}const N=to(ce||fe);return`WEEK ${F===0?N:to(fe)}`}function G(){return r.value==="offset"?"Current":r.value==="compact"?"CUR":r.value==="label"?t.rangeLabel||(t.rangeMode==="month"?"This month":"This week"):r.value==="date"?de(0,t.rangeLabel||"")||(t.rangeMode==="month"?"This month":"This week"):B(0)}function A(F){if(!F||typeof F!="string")return null;const j=F.trim();return/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(j)?j:null}function V(F,j,ce=.5){const fe=he(F),N=he(j);if(!fe||!N)return F;const P=U(Math.round(fe.r+(N.r-fe.r)*ce),0,255),re=U(Math.round(fe.g+(N.g-fe.g)*ce),0,255),ge=U(Math.round(fe.b+(N.b-fe.b)*ce),0,255);return`#${[P,re,ge].map(ee=>ee.toString(16).padStart(2,"0")).join("")}`}function he(F){const j=F.replace("#","");if(j.length===3){const[ce,fe,N]=j.split("").map(P=>parseInt(P.repeat(2),16));return{r:ce,g:fe,b:N}}if(j.length===6){const ce=parseInt(j.slice(0,2),16),fe=parseInt(j.slice(2,4),16),N=parseInt(j.slice(4,6),16);return{r:ce,g:fe,b:N}}return null}function Me(F){const j=he(F);return j?(.2126*j.r+.7152*j.g+.0722*j.b)/255:0}function ae(F){const j=Me(F)>.6?"#0f172a":"#fff";return{background:F,color:j}}function U(F,j,ce){return Math.min(ce,Math.max(j,F))}return(F,j)=>(h(),y("div",{class:ke(["card mix-card",{"mix-card--no-header":!a.value,"mix-card--dense":o.value==="dense","mix-card--square":n.value}]),style:He(f.value)},[a.value?(h(),y("div",x4,[i("div",null,[i("div",_4,E(c.value),1),i("div",C4,E(R.value),1)]),d.value?(h(),y("span",S4,E(d.value),1)):ne("",!0)])):ne("",!0),$.value.length||D.value.length?(h(),y("div",{key:1,class:"mix-columns",style:He(O.value)},[j[0]||(j[0]=i("span",{class:"mix-column-label mix-column-label--label"},"CAT",-1)),(h(!0),y(ye,null,Ne(C.value,ce=>(h(),y("span",{key:ce.key,class:ke(["mix-column-label",{"mix-column-label--current":ce.isCurrent}])},E(ce.label),3))),128))],4)):ne("",!0),D.value.length?(h(),y("ul",T4,[(h(!0),y(ye,null,Ne(D.value,ce=>(h(),y("li",{key:ce.id,class:"mix-row"},[i("span",$4,E(ce.label)+":",1),i("div",{class:"mix-cells",style:He(I.value)},[(h(!0),y(ye,null,Ne(ce.cells,(fe,N)=>(h(),y("div",{key:`${ce.id}-cell-${N}`,class:ke(["mix-cell",[`mix-cell--trend-${fe.trend}`,`mix-cell--mode-${s.value}`,{"mix-cell--current":fe.isCurrent}]]),style:He(fe.style),title:`${ce.label} · ${fe.label} · ${L(fe.share)}`},[i("span",A4,E(L(fe.share)),1),fe.indicator?(h(),y("span",D4,E(fe.indicator),1)):ne("",!0)],14,M4))),128))],4)]))),128))])):(h(),y("div",L4,"No category mix history."))],6))}}),[["__scopeId","data-v-ff363a60"]])},Symbol.toStringTag,{value:"Module"}));function er(e){if(!e)return null;const t=window.devicePixelRatio||1,a=e.getBoundingClientRect();if(a.width<2||a.height<2)return null;const o=Math.floor(a.width*t),r=Math.floor(a.height*t);e.width!==o&&(e.width=o),e.height!==r&&(e.height=r);const n=e.getContext("2d");return n?(n.setTransform(t,0,0,t,0,0),n):null}function la(e,t,a){var s;if(typeof document>"u")return a;const o=((s=e==null?void 0:e.closest)==null?void 0:s.call(e,"#opsdash"))??document.getElementById("opsdash"),r=o?getComputedStyle(o):null;return(r==null?void 0:r.getPropertyValue(t).trim())||a}function tr(e){const t=/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(e||"");return t?{r:parseInt(t[1],16),g:parseInt(t[2],16),b:parseInt(t[3],16)}:null}function eg(e,t,a){const o=n=>Math.max(0,Math.min(255,Math.round(n))),r=n=>o(n).toString(16).padStart(2,"0");return`#${r(e)}${r(t)}${r(a)}`}function tg(e){const a=Math.pow((c=>c<0?0:c>1?1:c)(e),.6),o=typeof document<"u"?document.getElementById("opsdash"):null,r=o?getComputedStyle(o):null,n=(r==null?void 0:r.getPropertyValue("--heatmap-low").trim())||"#e0f2fe",s=(r==null?void 0:r.getPropertyValue("--heatmap-high").trim())||"#7c3aed",l=tr(n),d=tr(s);if(!l||!d)return"#7c3aed";const p=(c,f,g)=>Math.round(c+(f-c)*g),u=p(l.r,d.r,a),v=p(l.g,d.g,a),b=p(l.b,d.b,a);return`rgb(${u}, ${v}, ${b})`}const N4=Ve({__name:"GroupedBars",props:{data:{},showLabels:{type:Boolean},xLabel:{},yLabel:{}},setup(e){const t=e,a=oe(null);let o=null,r=null;function n(d){const p=Math.max(0,Number(d)||0);return(Math.round(p*10)/10).toFixed(1)}function s(){const d=a.value;if(!d||!t.data)return;const p=er(d);if(!p)return;const u=getComputedStyle(d),v=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-scale"))||1),b=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-space"))||v),c=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-density"))||1),f=v*c,g=c<1?b/c:b,T=d.clientWidth,S=d.clientHeight,$=28*g,C=$*1.4,H=S-$,O=T-$,I=la(d,"--line","#e5e7eb"),_=la(d,"--fg","#0f172a");p.clearRect(0,0,T,S),p.strokeStyle=I,p.lineWidth=1,p.beginPath(),p.moveTo(C,H),p.lineTo(O,H),p.moveTo(C,H),p.lineTo(C,$),p.stroke(),p.fillStyle=_,p.font=`${12*f}px ui-sans-serif,system-ui`;const k=String(t.xLabel??"").trim();if(k){const G=p.measureText(k).width,A=Math.min(S-6*f,H+18*f);p.fillText(k,C+(O-C)/2-G/2,A)}const m=String(t.yLabel??"").trim();m&&p.fillText(m,6*g,$*.8);const w=(t.data.labels||[]).map(G=>String(G??"")),D=Array.isArray(t.data.series)?t.data.series:[];if(!w.length||!D.length)return;const R=[];D.forEach(G=>{(Array.isArray(G.data)?G.data:[]).forEach(V=>R.push(Math.max(0,Number(V)||0)))});const L=Math.max(1,...R),Z=w.length,K=Math.max(1,D.length),Y=10*b,le=4*b,J=Math.max(12*b,(O-C-Y*(Z+1))/Z),de=Math.max(4*b,(J-le*(K-1))/K),B=(H-$)/L;w.forEach((G,A)=>{const V=C+Y+A*(J+Y);if(D.forEach((he,Me)=>{var ce;const ae=Math.max(0,Number(((ce=he==null?void 0:he.data)==null?void 0:ce[A])??0)),U=Math.max(0,ae*B),F=V+Me*(de+le),j=H-U;if(p.fillStyle=(he==null?void 0:he.color)||"#93c5fd",p.fillRect(F,j,de,U),t.showLabels!==!1&&U>14*f&&de>20*f&&ae>.01){p.fillStyle=_,p.font=`${12*f}px ui-sans-serif,system-ui`;const fe=`${n(ae)}h`,N=p.measureText(fe).width;p.fillText(fe,F+de/2-N/2,j+U/2+4*f)}}),J>26*f){p.fillStyle=_,p.font=`${12*f}px ui-sans-serif,system-ui`;const he=p.measureText(G).width;p.fillText(G,V+J/2-he/2,H+14*f)}})}function l(){var d,p;try{o=new ResizeObserver(()=>s()),a.value&&o.observe(a.value)}catch{}try{const u=((d=a.value)==null?void 0:d.closest(".layout-item"))||((p=a.value)==null?void 0:p.parentElement);u&&(r=new MutationObserver(()=>s()),r.observe(u,{attributes:!0,attributeFilter:["style","class"]}))}catch{}}return Et(()=>{s(),l(),window.addEventListener("resize",s)}),$t(()=>{try{window.removeEventListener("resize",s)}catch{}try{o&&a.value&&o.unobserve(a.value)}catch{}try{r&&r.disconnect()}catch{}o=null,r=null}),Oe(()=>t.data,()=>s(),{deep:!0}),Oe(()=>t.showLabels,()=>s()),(d,p)=>(h(),y("canvas",{ref_key:"cv",ref:a,class:"chart"},null,512))}}),ag=Ve({__name:"SimpleBars",props:{data:{},showLabels:{type:Boolean},xLabel:{},yLabel:{}},setup(e){const t=e,a=oe(null);let o=null,r=null;function n(d){const p=Math.max(0,Number(d)||0);return(Math.round(p*10)/10).toFixed(1)}function s(){const d=a.value;if(!d||!t.data)return;const p=er(d);if(!p)return;const u=getComputedStyle(d),v=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-scale"))||1),b=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-space"))||v),c=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-density"))||1),f=v*c,g=c<1?b/c:b,T=d.clientWidth,S=d.clientHeight,$=28*g,C=$*1.4,H=S-$,O=T-$,I=la(d,"--line","#e5e7eb"),_=la(d,"--fg","#0f172a");p.clearRect(0,0,T,S),p.strokeStyle=I,p.lineWidth=1,p.beginPath(),p.moveTo(C,H),p.lineTo(O,H),p.moveTo(C,H),p.lineTo(C,$),p.stroke(),p.fillStyle=_,p.font=`${12*f}px ui-sans-serif,system-ui`;const k=String(t.xLabel??"").trim();if(k){const J=p.measureText(k).width,de=Math.min(S-6*f,H+18*f);p.fillText(k,C+(O-C)/2-J/2,de)}const m=String(t.yLabel??"").trim();m&&p.fillText(m,6*g,$*.8);const w=(t.data.labels||[]).map(J=>String(J??"")),D=(t.data.data||[]).map(J=>Math.max(0,Number(J)||0)),R=Array.isArray(t.data.colors)?t.data.colors:[];if(!w.length||!D.length)return;const L=Math.max(1,...D),Z=w.length,K=8*b,Y=Math.max(6*b,(O-C-K*(Z+1))/Z),le=(H-$)/L;w.forEach((J,de)=>{const B=D[de]??0,G=Math.max(0,B*le),A=C+K+de*(Y+K),V=H-G;if(p.fillStyle=R[de]||"#93c5fd",p.fillRect(A,V,Y,G),p.fillStyle=_,p.font=`${12*f}px ui-sans-serif,system-ui`,Y>26){const he=p.measureText(J).width;p.fillText(J,A+Y/2-he/2,H+14*f)}if(t.showLabels!==!1&&G>14*f&&Y>22*f&&B>.01){const he=`${n(B)}h`,Me=p.measureText(he).width;p.fillText(he,A+Y/2-Me/2,V+G/2+4*f)}})}function l(){var d,p;try{o=new ResizeObserver(()=>s()),a.value&&o.observe(a.value)}catch{}try{const u=((d=a.value)==null?void 0:d.closest(".layout-item"))||((p=a.value)==null?void 0:p.parentElement);u&&(r=new MutationObserver(()=>s()),r.observe(u,{attributes:!0,attributeFilter:["style","class"]}))}catch{}}return Et(()=>{s(),l(),window.addEventListener("resize",s)}),$t(()=>{try{window.removeEventListener("resize",s)}catch{}try{o&&a.value&&o.unobserve(a.value)}catch{}try{r&&r.disconnect()}catch{}o=null,r=null}),Oe(()=>t.data,()=>s(),{deep:!0}),Oe(()=>t.showLabels,()=>s()),(d,p)=>(h(),y("canvas",{ref_key:"cv",ref:a,class:"chart"},null,512))}}),I4={key:0,class:"chart-widget__header"},O4={class:"chart-widget__title"},B4={key:0,class:"chart-widget__subtitle"},H4={key:3,class:"chart-widget__empty"},F4={key:4,class:"chart-widget__legend"},P4=Object.freeze(Object.defineProperty({__proto__:null,default:gt(Ve({__name:"ChartDowWidget",props:{title:{},subtitle:{},cardBg:{},showHeader:{type:Boolean},showLabels:{type:Boolean},xLabel:{},yLabel:{},chartData:{},groupedData:{},legendItems:{}},setup(e){const t=e,a=x(()=>t.showHeader!==!1),o=x(()=>t.title||"Day of week"),r=x(()=>({background:t.cardBg||void 0})),n=x(()=>t.legendItems||[]),s=x(()=>t.xLabel||""),l=x(()=>t.yLabel||"");return(d,p)=>(h(),y("div",{class:"card chart-widget",style:He(r.value)},[a.value?(h(),y("div",I4,[i("div",O4,E(o.value),1),d.subtitle?(h(),y("div",B4,E(d.subtitle),1)):ne("",!0)])):ne("",!0),d.groupedData?(h(),lt(N4,{key:1,data:d.groupedData,"show-labels":d.showLabels,"x-label":s.value,"y-label":l.value},null,8,["data","show-labels","x-label","y-label"])):d.chartData?(h(),lt(ag,{key:2,data:d.chartData,"show-labels":d.showLabels,"x-label":s.value,"y-label":l.value},null,8,["data","show-labels","x-label","y-label"])):(h(),y("div",H4,"No data")),n.value.length?(h(),y("ul",F4,[(h(!0),y(ye,null,Ne(n.value,u=>(h(),y("li",{key:u.id},[i("span",{class:"dot",style:He({background:u.color})},null,4),i("span",null,E(u.label),1)]))),128))])):ne("",!0)],4))}}),[["__scopeId","data-v-9d9b0ba6"]])},Symbol.toStringTag,{value:"Module"})),og=Ve({__name:"HeatmapCanvas",props:{hod:{},baseColor:{}},setup(e){const t=e,a=oe(null);let o=null;function r(){var Y;const n=a.value,s=t.hod;if(!n)return;if(!s){console.info("[opsdash] heatmap: no data provided");return}const l=er(n);if(!l)return;const d=getComputedStyle(n),p=Math.max(.5,Number.parseFloat(d.getPropertyValue("--widget-scale"))||1),u=Math.max(.5,Number.parseFloat(d.getPropertyValue("--widget-space"))||p),v=Math.max(.5,Number.parseFloat(d.getPropertyValue("--widget-density"))||1),b=p*v,c=v<1?u/v:u,f=n.clientWidth,g=n.clientHeight,T=s.dows||[],S=s.hours||[],$=s.matrix||[];l.clearRect(0,0,f,g);const C=36*c,H=C,O=C,I=f-C,_=g-C,k=(I-H)/Math.max(1,S.length),m=(_-O)/Math.max(1,T.length),w=Math.max(0,...$.flat())||1,D=typeof t.baseColor=="string"?t.baseColor.trim():"",R=la(n,"--heatmap-low","#e0f2fe"),L=tr(R),Z=tr(D),K=le=>{const J=Math.max(0,Math.min(1,le)),de=Math.pow(J,.6);if(!L||!Z)return tg(de);const B=(G,A,V)=>Math.round(G+(A-G)*V);return eg(B(L.r,Z.r,de),B(L.g,Z.g,de),B(L.b,Z.b,de))};T.length&&S.length&&console.info("[opsdash] heatmap draw",{rows:T.length,cols:S.length,vmax:w});for(let le=0;le<T.length;le++)for(let J=0;J<S.length;J++){const B=(((Y=$[le])==null?void 0:Y[J])||0)/w,G=H+J*k,A=O+le*m;l.fillStyle=K(B),l.fillRect(G,A,k-1,m-1)}l.fillStyle=la(n,"--fg","#0f172a"),l.font=`${12*b}px ui-sans-serif,system-ui`,T.forEach((le,J)=>l.fillText(le,8,O+J*m+12*b)),S.forEach((le,J)=>{J%2===0&&l.fillText(String(le),H+J*k+2,O-6*b)})}return Et(async()=>{await Kt(),r();try{o=new ResizeObserver(()=>r()),a.value&&o.observe(a.value)}catch{}window.addEventListener("resize",r)}),$t(()=>{try{window.removeEventListener("resize",r)}catch{}try{o&&a.value&&o.unobserve(a.value)}catch{}o=null}),Oe(()=>t.hod,()=>r(),{deep:!0}),(n,s)=>(h(),y("canvas",{ref_key:"cv",ref:a,class:"chart"},null,512))}}),W4={class:"heatmap-lookback"},z4={class:"heatmap-lookback__stacked"},R4={class:"heatmap-lookback__label"},j4={key:0,class:"heatmap-lookback__legend"},V4={class:"heatmap-lookback__legend-scale"},U4={class:"heatmap-lookback__legend-meta"},G4={class:"heatmap-lookback__legend-weeks"},K4=gt(Ve({__name:"HeatmapLookback",props:{entries:{},mode:{},showLegend:{type:Boolean}},setup(e){const t=e,a=oe(null);let o=null;const r=x(()=>Array.isArray(t.entries)?t.entries:[]),n=x(()=>t.mode==="overlay"?"overlay":"stacked"),s=x(()=>t.showLegend!==!1),l=x(()=>{let c=0;return r.value.forEach(f=>{var g,T;(T=(g=f==null?void 0:f.hod)==null?void 0:g.matrix)==null||T.forEach(S=>{S.forEach($=>{const C=Number($);Number.isFinite(C)&&(c=Math.max(c,Math.max(0,C)))})})}),{max:c}}),d=x(()=>"Less hours"),p=x(()=>"More hours"),u=x(()=>{const c=l.value.max;return!Number.isFinite(c)||c<=0?"No activity yet":`0 to ${Number.isInteger(c)?String(c):c.toFixed(1)} h`});function v(){var Me;if(n.value!=="overlay")return;const c=r.value;if(!c.length)return;const f=a.value;if(!f)return;const g=er(f);if(!g)return;const T=getComputedStyle(f),S=Math.max(.5,Number.parseFloat(T.getPropertyValue("--widget-scale"))||1),$=Math.max(.5,Number.parseFloat(T.getPropertyValue("--widget-space"))||S),C=Math.max(.5,Number.parseFloat(T.getPropertyValue("--widget-density"))||1),H=S*C,O=C<1?$/C:$,I=f.clientWidth,_=f.clientHeight,k=(Me=c[0])==null?void 0:Me.hod,m=(k==null?void 0:k.dows)||[],w=(k==null?void 0:k.hours)||[];if(!m.length||!w.length)return;let D=0;c.forEach(ae=>{var U,F;(F=(U=ae.hod)==null?void 0:U.matrix)==null||F.forEach(j=>{j.forEach(ce=>{D=Math.max(D,Math.max(0,Number(ce)||0))})})}),D<=0&&(D=1);const R=36*O,L=R,Z=R,K=I-R,Y=_-R,le=(K-L)/Math.max(1,w.length),J=(Y-Z)/Math.max(1,m.length),de=la(f,"--heatmap-low","#e0f2fe"),B=tr(de),G=c.map(ae=>tr(ae.color)),A=ae=>Math.max(0,Math.min(1,ae)),V=(ae,U,F)=>Math.round(ae+(U-ae)*F),he=Math.max(1,c.length);g.clearRect(0,0,I,_);for(let ae=0;ae<m.length;ae++)for(let U=0;U<w.length;U++){const F=L+U*le,j=Z+ae*J,ce=le/he;c.forEach((fe,N)=>{var ve,xe,_e;const P=Math.max(0,Number(((_e=(xe=(ve=fe==null?void 0:fe.hod)==null?void 0:ve.matrix)==null?void 0:xe[ae])==null?void 0:_e[U])??0)),re=A(P/D),ge=Math.pow(re,.6),ee=G[N],be=B&&ee?eg(V(B.r,ee.r,ge),V(B.g,ee.g,ge),V(B.b,ee.b,ge)):tg(ge);g.fillStyle=be,g.fillRect(F+N*ce,j,ce,J-1)})}g.fillStyle=la(f,"--fg","#0f172a"),g.font=`${12*H}px ui-sans-serif,system-ui`,m.forEach((ae,U)=>g.fillText(ae,8,Z+U*J+12*H)),w.forEach((ae,U)=>{U%2===0&&g.fillText(String(ae),L+U*le+2,Z-6*H)})}function b(){try{o=new ResizeObserver(()=>v()),a.value&&o.observe(a.value)}catch{}window.addEventListener("resize",v)}return Et(async()=>{await Kt(),v(),b()}),$t(()=>{try{window.removeEventListener("resize",v)}catch{}try{o&&a.value&&o.unobserve(a.value)}catch{}o=null}),Oe(()=>[r.value,n.value],()=>{n.value==="overlay"&&Kt().then(()=>v())},{deep:!0}),(c,f)=>(h(),y("div",W4,[go(i("div",z4,[(h(!0),y(ye,null,Ne(r.value,g=>(h(),y("div",{key:g.id,class:"heatmap-lookback__panel"},[i("div",R4,[i("span",{class:"dot",style:He({background:g.color})},null,4),i("span",null,E(g.label),1)]),Re(og,{hod:g.hod,"base-color":g.color},null,8,["hod","base-color"])]))),128))],512),[[gc,n.value==="stacked"]]),go(i("canvas",{ref_key:"cv",ref:a,class:"chart heatmap-lookback__overlay"},null,512),[[gc,n.value==="overlay"]]),s.value&&r.value.length?(h(),y("div",j4,[i("div",V4,[i("span",null,E(d.value),1),f[0]||(f[0]=i("span",{class:"heatmap-lookback__legend-bar","aria-hidden":"true"},null,-1)),i("span",null,E(p.value),1)]),i("div",U4,[i("span",null,E(u.value),1)]),i("ul",G4,[(h(!0),y(ye,null,Ne(r.value,g=>(h(),y("li",{key:g.id},[i("span",{class:"dot",style:He({background:g.color})},null,4),i("span",null,E(g.label),1)]))),128))])])):ne("",!0)]))}}),[["__scopeId","data-v-9b113ef0"]]),q4={key:0,class:"chart-widget__header"},J4={class:"chart-widget__title"},Z4={key:0,class:"chart-widget__subtitle"},Y4={key:1,class:"chart-widget__meta"},X4={key:3,class:"chart-widget__empty"},Q4={key:4,class:"chart-widget__hint"},e5=Object.freeze(Object.defineProperty({__proto__:null,default:gt(Ve({__name:"ChartHodWidget",props:{title:{},subtitle:{},cardBg:{},showHeader:{type:Boolean},showHint:{type:Boolean},showLegend:{type:Boolean},lookbackMode:{},lookbackWeeks:{},rangeMode:{},hodData:{},lookbackEntries:{}},setup(e){const t=e,a=x(()=>t.showHeader!==!1),o=x(()=>t.title||"Hours of day"),r=x(()=>({background:t.cardBg||void 0})),n=x(()=>t.lookbackEntries||[]),s=x(()=>t.showLegend!==!1),l=x(()=>t.lookbackMode||"stacked"),d=x(()=>{const p=typeof t.lookbackWeeks=="number"?Math.max(0,Math.round(t.lookbackWeeks)):0;if(!p)return"";const u=(t.rangeMode||"").toString().toLowerCase()==="month"?"month":"week";return`History · last ${p} ${p===1?u:`${u}s`}`});return(p,u)=>(h(),y("div",{class:"card chart-widget chart-widget--hod",style:He(r.value)},[a.value?(h(),y("div",q4,[i("div",J4,E(o.value),1),p.subtitle?(h(),y("div",Z4,E(p.subtitle),1)):ne("",!0),d.value?(h(),y("div",Y4,E(d.value),1)):ne("",!0)])):ne("",!0),n.value.length?(h(),lt(K4,{key:1,entries:n.value,mode:l.value,"show-legend":s.value},null,8,["entries","mode","show-legend"])):p.hodData?(h(),lt(og,{key:2,hod:p.hodData},null,8,["hod"])):(h(),y("div",X4,"No data")),p.showHint&&p.hodData?(h(),y("div",Q4,"24×7 Heatmap: hours by weekday and hour.")):ne("",!0)],4))}}),[["__scopeId","data-v-ca4a5fd8"]])},Symbol.toStringTag,{value:"Module"})),t5={key:0,class:"chart-widget__header"},a5={class:"chart-widget__title"},o5={key:0,class:"chart-widget__subtitle"},r5={key:2,class:"chart-widget__empty"},n5={key:3,class:"chart-widget__legend"},s5=Object.freeze(Object.defineProperty({__proto__:null,default:gt(Ve({__name:"ChartPerDayWidget",props:{title:{},subtitle:{},cardBg:{},showHeader:{type:Boolean},showLabels:{type:Boolean},xLabel:{},yLabel:{},chartData:{},legendItems:{}},setup(e){const t=e,a=x(()=>t.showHeader!==!1),o=x(()=>t.title||"Per-day totals"),r=x(()=>({background:t.cardBg||void 0})),n=x(()=>t.legendItems||[]),s=x(()=>t.xLabel||""),l=x(()=>t.yLabel||"");return(d,p)=>(h(),y("div",{class:"card chart-widget",style:He(r.value)},[a.value?(h(),y("div",t5,[i("div",a5,E(o.value),1),d.subtitle?(h(),y("div",o5,E(d.subtitle),1)):ne("",!0)])):ne("",!0),d.chartData?(h(),lt(ag,{key:1,data:d.chartData,"show-labels":d.showLabels,"x-label":s.value,"y-label":l.value},null,8,["data","show-labels","x-label","y-label"])):(h(),y("div",r5,"No data")),n.value.length?(h(),y("ul",n5,[(h(!0),y(ye,null,Ne(n.value,u=>(h(),y("li",{key:u.id},[i("span",{class:"dot",style:He({background:u.color})},null,4),i("span",null,E(u.label),1)]))),128))])):ne("",!0)],4))}}),[["__scopeId","data-v-08a193fb"]])},Symbol.toStringTag,{value:"Module"})),i5=gt(Ve({__name:"PieChart",props:{data:{},colorsById:{},colorsByName:{},showLabels:{type:Boolean},highlightId:{}},setup(e){const t=e,a=oe(null);let o=null,r=null,n=null;const s=oe(null);function l(){const v=t.data,b=a.value;if(!b||!v)return;const c=er(b);if(!c)return;const f=getComputedStyle(b),g=Math.max(.5,Number.parseFloat(f.getPropertyValue("--widget-scale"))||1),T=Math.max(.5,Number.parseFloat(f.getPropertyValue("--widget-space"))||g),S=Math.max(.5,Number.parseFloat(f.getPropertyValue("--widget-density"))||1),$=Math.max(.6,Number.parseFloat(f.getPropertyValue("--pie-scale"))||.85),C=g*S*$,H=b.clientWidth,O=b.clientHeight,I=H/2,_=O/2,k=Math.min(H,O)*(.35*T*$),m=v.data||[],w=v.labels||[],D=v.ids||[],R=v.colors||[],L=[];for(let U=0;U<m.length;U++)(Number(m[U])||0)>0&&L.push(U);if(c.clearRect(0,0,H,O),L.length===0)return;const Z=L.map(U=>Number(m[U])||0),K=L.map(U=>String(w[U]||"")),Y=L.map(U=>String(D[U]||"")),le=L.map(U=>R[U]),J=Z.reduce((U,F)=>U+Math.max(0,F),0)||1;let de=-Math.PI/2;const B=la(b,"--line","#e5e7eb"),G=la(b,"--fg","#0f172a"),A=la(b,"--bg","#ffffff");c.lineWidth=1,c.strokeStyle=B;const V=["#60a5fa","#f59e0b","#ef4444","#10b981","#a78bfa","#fb7185","#22d3ee","#f97316"];s.value&&!Y.includes(s.value)&&(s.value=null);const he=t.highlightId??s.value?String(t.highlightId??s.value):"",Me=!!(he&&Y.includes(he)),ae=[];Z.forEach((U,F)=>{var xe,_e;const j=Math.max(0,U)/J,ce=de+j*2*Math.PI,fe=String((K==null?void 0:K[F])||""),N=String((Y==null?void 0:Y[F])||""),P=le[F],re=(xe=t.colorsById)==null?void 0:xe[N],ge=(_e=t.colorsByName)==null?void 0:_e[fe];let ee=re||ge||P||V[F%V.length];const be=Me&&N===he,ve=Me&&!be;if(c.save(),ve&&(c.globalAlpha=.25),c.beginPath(),c.moveTo(I,_),c.arc(I,_,k,de,ce),c.closePath(),c.fillStyle=ee,c.fill(),c.lineWidth=be?2:1,c.strokeStyle=be?"rgba(255,255,255,0.9)":B,c.stroke(),c.restore(),t.showLabels!==!1){const ue=(de+ce)/2,Ee=I+Math.cos(ue)*(k+12*T*$),Se=_+Math.sin(ue)*(k+12*T*$);c.save(),c.font=`${12*C}px ui-sans-serif,system-ui`,c.fillStyle=G,c.strokeStyle=A,c.lineWidth=3,c.textAlign="center",c.textBaseline="middle";const te=Math.max(0,Number(U)||0)/J*100,se=`${K!=null&&K[F]?K[F]+" ":""}${Number(U).toFixed(2)}h · ${te.toFixed(1)}%`;c.strokeText(se,Ee,Se),c.fillText(se,Ee,Se),c.restore()}ae.push({start:de,end:ce,id:N}),de=ce}),n={cx:I,cy:_,r:k,segments:ae}}function d(){var v,b;try{o=new ResizeObserver(()=>l()),a.value&&o.observe(a.value)}catch{}try{const c=((v=a.value)==null?void 0:v.closest(".layout-item"))||((b=a.value)==null?void 0:b.parentElement);c&&(r=new MutationObserver(()=>l()),r.observe(c,{attributes:!0,attributeFilter:["style","class"]}))}catch{}}Et(()=>{l(),d(),window.addEventListener("resize",l)}),$t(()=>{try{window.removeEventListener("resize",l)}catch{}try{o&&a.value&&o.unobserve(a.value)}catch{}try{r&&r.disconnect()}catch{}try{const v=a.value;v&&(v.removeEventListener("mousemove",p),v.removeEventListener("mouseleave",u))}catch{}o=null,r=null}),Oe(()=>t.data,()=>l(),{deep:!0}),Oe(()=>t.colorsById,()=>l(),{deep:!0}),Oe(()=>t.showLabels,()=>l()),Oe(()=>t.highlightId,()=>l());function p(v){const b=a.value;if(!b||!n)return;const c=b.getBoundingClientRect(),f=v.clientX-c.left,g=v.clientY-c.top,T=f-n.cx,S=g-n.cy,$=Math.sqrt(T*T+S*S);if(!Number.isFinite($)||$>n.r){s.value&&(s.value=null,l());return}let C=Math.atan2(S,T);C<-Math.PI/2&&(C+=Math.PI*2);const H=n.segments.find(I=>C>=I.start&&C<=I.end),O=H?H.id:null;O!==s.value&&(s.value=O,l())}function u(){s.value&&(s.value=null,l())}return Oe(()=>a.value,(v,b)=>{b&&(b.removeEventListener("mousemove",p),b.removeEventListener("mouseleave",u)),v&&(v.addEventListener("mousemove",p),v.addEventListener("mouseleave",u))},{immediate:!0}),(v,b)=>(h(),y("canvas",{ref_key:"cv",ref:a,class:"chart"},null,512))}}),[["__scopeId","data-v-d6565e06"]]),l5={key:0,class:"chart-widget__header"},d5={class:"chart-widget__title"},c5={key:0,class:"chart-widget__subtitle"},u5={key:2,class:"chart-widget__empty"},g5={key:3,class:"chart-widget__legend"},p5=["onMouseenter","onFocus"],f5={class:"val"},b5=Object.freeze(Object.defineProperty({__proto__:null,default:gt(Ve({__name:"ChartPieWidget",props:{title:{},subtitle:{},cardBg:{},showHeader:{type:Boolean},compact:{type:Boolean},showLegend:{type:Boolean},showLabels:{type:Boolean},chartData:{},colorsById:{},colorsByName:{}},setup(e){const t=e,a=x(()=>t.showHeader!==!1),o=x(()=>t.title||"Pie chart"),r=x(()=>({background:t.cardBg||void 0})),n=x(()=>t.colorsById||{}),s=x(()=>t.colorsByName||{}),l=oe(null),d=x(()=>{const p=t.chartData;if(!p||!Array.isArray(p.data))return[];const u=p.data.reduce((v,b)=>v+Math.max(0,Number(b)||0),0)||1;return p.data.map((v,b)=>{var C,H,O;const c=Math.max(0,Number(v)||0),f=String(((C=p.labels)==null?void 0:C[b])??""),g=String(((H=p.ids)==null?void 0:H[b])??f??b),T=((O=p.colors)==null?void 0:O[b])||n.value[g]||s.value[f]||"#60a5fa",S=c/u*100,$=Math.round(S);return{id:g,label:f,color:T,raw:c,pctRounded:$,value:`${c.toFixed(1)}h · ${$}%`}}).filter(v=>v.pctRounded>0).sort((v,b)=>b.raw-v.raw)});return(p,u)=>(h(),y("div",{class:"card chart-widget",style:He(r.value)},[a.value?(h(),y("div",l5,[i("div",d5,E(o.value),1),p.subtitle?(h(),y("div",c5,E(p.subtitle),1)):ne("",!0)])):ne("",!0),p.chartData?(h(),lt(i5,{key:1,data:p.chartData,"colors-by-id":n.value,"colors-by-name":s.value,"show-labels":p.showLabels,"highlight-id":l.value},null,8,["data","colors-by-id","colors-by-name","show-labels","highlight-id"])):(h(),y("div",u5,"No data")),p.showLegend&&d.value.length?(h(),y("ul",g5,[(h(!0),y(ye,null,Ne(d.value,v=>(h(),y("li",{key:v.id,class:ke({hovered:l.value===v.id}),onMouseenter:b=>l.value=v.id,onMouseleave:u[0]||(u[0]=b=>l.value=null),onFocus:b=>l.value=v.id,onBlur:u[1]||(u[1]=b=>l.value=null),tabindex:"0"},[i("span",{class:"dot",style:He({background:v.color})},null,4),i("span",null,E(v.label),1),i("span",f5,E(v.value),1)],42,p5))),128))])):ne("",!0)],4))}}),[["__scopeId","data-v-df59c238"]])},Symbol.toStringTag,{value:"Module"})),v5=gt(Ve({__name:"StackedBars",props:{stacked:{},colorsById:{},showLabels:{type:Boolean},highlightId:{}},setup(e){const t=e,a=oe(null);let o=null,r=null,n=null;const s=oe(null);function l(I,_,k,m,w){I.save(),w!=null&&w.font&&(I.font=w.font),w!=null&&w.align&&(I.textAlign=w.align),w!=null&&w.baseline&&(I.textBaseline=w.baseline),I.lineWidth=3,I.strokeStyle=(w==null?void 0:w.stroke)||"rgba(0,0,0,0.55)",I.strokeText(_,k,m),I.fillStyle=(w==null?void 0:w.fill)||"#ffffff",I.fillText(_,k,m),I.restore()}function d(I){const _=/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(I||"");return _?{r:parseInt(_[1],16),g:parseInt(_[2],16),b:parseInt(_[3],16)}:null}function p(I,_){const k=d(I);return k&&(.2126*k.r+.7152*k.g+.0722*k.b)/255<.55?"#ffffff":_}function u(I){const _=Math.max(0,Number(I)||0);return(Math.round(_*10)/10).toFixed(1)}function v(I,_=.5){const k=d(I);if(!k)return I;const m=Math.max(0,Math.min(1,_)),w=Math.round(k.r+(255-k.r)*m),D=Math.round(k.g+(255-k.g)*m),R=Math.round(k.b+(255-k.b)*m);return`rgb(${w},${D},${R})`}function b(I,_=.5){const k=d(I);if(!k)return I;const m=Math.max(0,Math.min(1,_)),w=Math.round(k.r*(1-m)),D=Math.round(k.g*(1-m)),R=Math.round(k.b*(1-m));return`rgb(${w},${D},${R})`}function c(I,_){const{x:k,y:m,width:w,height:D,baseColor:R,variant:L}=_,Z=L==="mixed",K=Math.max(0,Math.min(1,Number(_.alphaScale))),Y=Math.min(w*(Z?.35:.22),6),le=Math.max(2,Z?w*.45:w-Y*2),J=Z?k+w-le-Y:k+(w-le)/2,de=v(R,Z?.6:.45),B=b(R,Z?.4:.35);I.save(),I.fillStyle=de,I.globalAlpha=(Z?.12:.16)*K,I.fillRect(J,m,le,D),I.restore(),I.save(),I.strokeStyle=B,I.lineWidth=Z?1.25:1.5,I.globalAlpha=(Z?.6:.75)*K,I.setLineDash([4,4]),I.strokeRect(J,m,le,D),I.restore(),I.save(),I.strokeStyle=B,I.globalAlpha=(Z?.35:.45)*K,I.lineWidth=1,I.beginPath(),I.moveTo(J,m),I.lineTo(J+le,m),I.stroke(),I.restore()}function f(){const I=a.value;if(!I)return;const _=er(I);if(!_)return;const k=getComputedStyle(I),m=Math.max(.5,Number.parseFloat(k.getPropertyValue("--widget-scale"))||1),w=Math.max(.5,Number.parseFloat(k.getPropertyValue("--widget-space"))||m),D=Math.max(.5,Number.parseFloat(k.getPropertyValue("--widget-density"))||1),R=Math.max(.6,Number.parseFloat(k.getPropertyValue("--stacked-scale"))||.85),L=m*D*R,Z=D<1?w/D:w,K=`${11*L}px ui-sans-serif,system-ui`,Y=I.clientWidth,le=I.clientHeight,J=28*Z,de=J*1.4,B=le-J,G=Y-J,A=la(I,"--line","#e5e7eb"),V=la(I,"--fg","#0f172a"),he=la(I,"--bg","#ffffff");_.clearRect(0,0,Y,le),_.strokeStyle=A,_.lineWidth=1,_.beginPath(),_.moveTo(de,B),_.lineTo(G,B),_.moveTo(de,B),_.lineTo(de,J),_.stroke();const Me=t.stacked;if(Me&&Me.labels&&Me.series){const ae=[];let U=Me.labels||[],F=Me.series||[];const j=$(U,F);U=j.labels,F=j.series;const ce=F.map(Ae=>String((Ae==null?void 0:Ae.id)??""));s.value&&!ce.includes(s.value)&&(s.value=null);const fe=t.highlightId??s.value?String(t.highlightId??s.value):"",N=!!(fe&&ce.includes(fe)),P=U.map((Ae,Pe)=>F.reduce((Ie,Be)=>{var ze;return Ie+Math.max(0,Number(((ze=Be.data)==null?void 0:ze[Pe])||0))},0)),re=U.map((Ae,Pe)=>F.reduce((Ie,Be)=>{var ze;return Ie+Math.max(0,Number(((ze=Be.forecast)==null?void 0:ze[Pe])||0))},0)),ge=P.map((Ae,Pe)=>Ae+re[Pe]),ee=Math.max(1,...ge),be=U.length||1,ve=8*w,xe=Math.max(6*w,(G-de-ve*(be+1))/be),_e=ve*R,ue=Math.max(4*w*R,xe*R),Ee=ue*be+_e*(be+1),Se=de+Math.max(0,(G-de-Ee)/2),te=(B-J)/ee*R;let se=0,me=0;U.forEach((Ae,Pe)=>{const Ie=Se+_e+Pe*(ue+_e);let Be=B,ze=0;const dt=[];F.forEach(ht=>{var Q;const xt=Math.max(0,Number(((Q=ht.data)==null?void 0:Q[Pe])||0)),st=xt*te;Be-=st;const mt=String(ht.id??""),Je=t.colorsById[ht.id]||ht.color||"#93c5fd",Ue=N&&mt===fe,rt=N&&!Ue;if(st>.5&&(_.save(),rt&&(_.globalAlpha=.25),_.fillStyle=Je,_.fillRect(Ie,Be,ue,st),Ue&&(_.strokeStyle="rgba(255,255,255,0.9)",_.lineWidth=1.5,_.strokeRect(Ie,Be,ue,st)),_.restore()),t.showLabels!==!1&&xt>.01){const ie=u(xt);_.font=K;const Ce=_.measureText(ie).width;if(st>14*L&&ue>Ce+6*L)_.save(),rt&&(_.globalAlpha=.25),_.fillStyle=p(Je,V),_.font=K,_.fillText(ie,Ie+ue/2-Ce/2,Be+st/2+4),_.restore();else if(st>.5){const Mt=Be+st/2,da=6*w,Rt=Ie+ue+da,jt=Ie-da,pt=Rt+Ce<=G,Tt=pt?Rt:jt,ca=pt?"left":"right",Oa=pt?Ie+ue:Ie,ua=pt?Tt-4*w:Tt+4*w;dt.push({y:Mt,text:ie,align:ca,textX:Tt,lineStartX:Oa,lineEndX:ua,alpha:rt?.25:1})}}st>.5&&ae.push({x:Ie,y:Be,width:ue,height:st,id:mt}),ze+=xt});let nt=Be,ft=0;if(F.forEach(ht=>{var Q;const xt=Math.max(0,Number(((Q=ht.forecast)==null?void 0:Q[Pe])||0));if(xt<=0)return;const st=xt*te;if(nt-=st,ft+=xt,st<=.5)return;const mt=String(ht.id??""),Je=t.colorsById[ht.id]||ht.color||"#93c5fd",rt=N&&!(N&&mt===fe);c(_,{x:Ie,y:nt,width:ue,height:st,baseColor:Je,variant:ze>.01?"mixed":"future",alphaScale:rt?.25:1})}),t.showLabels!==!1&&dt.length){const ht=12*L,xt=J+6*L,st=B-6*L;dt.sort((Ue,rt)=>Ue.y-rt.y),dt.forEach((Ue,rt)=>{rt===0?Ue.y=Math.max(Ue.y,xt):Ue.y=Math.max(Ue.y,dt[rt-1].y+ht)});const mt=dt[dt.length-1].y-st;mt>0&&dt.forEach(Ue=>{Ue.y-=mt});const Je=xt-dt[0].y;Je>0&&dt.forEach(Ue=>{Ue.y+=Je}),_.save(),_.font=K,_.textBaseline="middle",dt.forEach(Ue=>{_.save(),_.globalAlpha=Ue.alpha,_.strokeStyle=A,_.lineWidth=1,_.beginPath(),_.moveTo(Ue.lineStartX,Ue.y),_.lineTo(Ue.lineEndX,Ue.y),_.stroke(),_.fillStyle=V,_.textAlign=Ue.align,_.fillText(Ue.text,Ue.textX,Ue.y),_.restore()}),_.restore()}se+=ze,me+=ft,_.fillStyle=V,_.font=`${12*L}px ui-sans-serif,system-ui`;const Dt=C(String(U[Pe]||""));if(ue>26*L){const ht=_.measureText(Dt).width;_.fillText(Dt,Ie+ue/2-ht/2,B+14*L)}const Bt=ft>.01?`~${u(ze+ft)}h`:ze>.01?`${u(ze)}h`:"";t.showLabels!==!1&&Bt&&l(_,Bt,Ie+ue/2,Math.max(J+4*L,nt-2),{align:"center",baseline:"bottom",font:`${11*L}px ui-sans-serif,system-ui`,fill:V,stroke:he})});const $e=me>.01?`~${u(se+me)}h expected`:`${u(se)}h total`;t.showLabels!==!1&&l(_,$e,G-4,J+4*L,{align:"right",baseline:"top",font:`${12*L}px ui-sans-serif,system-ui`,fill:V,stroke:he}),n={segments:ae};return}n=null}function g(){var I,_;try{o=new ResizeObserver(()=>f()),a.value&&o.observe(a.value)}catch{}try{const k=((I=a.value)==null?void 0:I.closest(".layout-item"))||((_=a.value)==null?void 0:_.parentElement);k&&(r=new MutationObserver(()=>f()),r.observe(k,{attributes:!0,attributeFilter:["style","class"]}))}catch{}}Et(()=>{f(),g(),window.addEventListener("resize",f)}),$t(()=>{try{window.removeEventListener("resize",f)}catch{}try{o&&a.value&&o.unobserve(a.value)}catch{}try{r&&r.disconnect()}catch{}try{const I=a.value;I&&(I.removeEventListener("mousemove",T),I.removeEventListener("mouseleave",S))}catch{}o=null,r=null}),Oe(()=>t.stacked,()=>f(),{deep:!0}),Oe(()=>t.colorsById,()=>f(),{deep:!0}),Oe(()=>t.showLabels,()=>f()),Oe(()=>t.highlightId,()=>f());function T(I){const _=a.value;if(!_||!n)return;const k=_.getBoundingClientRect(),m=I.clientX-k.left,w=I.clientY-k.top;let D=null;for(let R=n.segments.length-1;R>=0;R-=1){const L=n.segments[R];if(m>=L.x&&m<=L.x+L.width&&w>=L.y&&w<=L.y+L.height){D=L.id;break}}D!==s.value&&(s.value=D,f())}function S(){s.value&&(s.value=null,f())}Oe(()=>a.value,(I,_)=>{_&&(_.removeEventListener("mousemove",T),_.removeEventListener("mouseleave",S)),I&&(I.addEventListener("mousemove",T),I.addEventListener("mouseleave",S))},{immediate:!0});function $(I,_){if(!Array.isArray(I)||I.length!==7)return{labels:I,series:_};const k=I.map(Y=>H(Y));if(k.some(Y=>!Y))return{labels:I,series:_};const m=k.map(Y=>O(Y)),w=ni(),D=[];for(let Y=0;Y<7;Y+=1){const le=(w+Y)%7;D.push(le===0?7:le)}if(m.join(",")===D.join(","))return{labels:I,series:_};const R={};if(m.forEach((Y,le)=>{R[Y]=le}),!D.every(Y=>Y in R))return{labels:I,series:_};const L=D.map(Y=>R[Y]),Z=L.map(Y=>I[Y]),K=(_||[]).map(Y=>{const le=Array.isArray(Y.data)?Y.data:[],J=Array.isArray(Y.forecast)?Y.forecast:null,de=L.map(A=>le[A]??0),B=J?L.map(A=>J[A]??0):void 0,G={...Y,data:de};return B&&(G.forecast=B),G});return{labels:Z,series:K}}function C(I){return Ln(I,{weekday:"short"})||I}function H(I){return Nt(I)}function O(I){const _=I.getUTCDay();return _===0?7:_}return(I,_)=>(h(),y("canvas",{ref_key:"cv",ref:a,class:"chart"},null,512))}}),[["__scopeId","data-v-aef1be0d"]]),h5={key:0,class:"chart-widget__header"},m5={class:"chart-widget__title"},y5={key:0,class:"chart-widget__subtitle"},w5={key:2,class:"chart-widget__empty"},k5={key:3,class:"chart-widget__legend"},x5=["onMouseenter","onFocus"],_5=Object.freeze(Object.defineProperty({__proto__:null,default:gt(Ve({__name:"ChartStackedWidget",props:{title:{},subtitle:{},cardBg:{},showHeader:{type:Boolean},compact:{type:Boolean},showLegend:{type:Boolean},showLabels:{type:Boolean},stacked:{},colorsById:{}},setup(e){const t=e,a=x(()=>t.showHeader!==!1),o=x(()=>t.title||"Stacked bars"),r=x(()=>({background:t.cardBg||void 0})),n=x(()=>t.colorsById||{}),s=oe(null),l=x(()=>{var v;const d=((v=t.stacked)==null?void 0:v.series)||[],p=d.map(b=>(Array.isArray(b==null?void 0:b.data)?b.data:[]).reduce((c,f)=>{const g=Number(f);return c+(Number.isFinite(g)?Math.max(0,g):0)},0)),u=p.reduce((b,c)=>b+c,0)||1;return d.map((b,c)=>{const f=String((b==null?void 0:b.id)??""),g=String((b==null?void 0:b.name)??(b==null?void 0:b.label)??f),T=(b==null?void 0:b.color)||n.value[f]||"#60a5fa",S=p[c]||0,$=Math.round(S/u*100);return{id:f,label:g,color:T,total:S,pctRounded:$}}).filter(b=>b.pctRounded>0).sort((b,c)=>c.total-b.total)});return(d,p)=>(h(),y("div",{class:"card chart-widget",style:He(r.value)},[a.value?(h(),y("div",h5,[i("div",m5,E(o.value),1),d.subtitle?(h(),y("div",y5,E(d.subtitle),1)):ne("",!0)])):ne("",!0),d.stacked?(h(),lt(v5,{key:1,stacked:d.stacked,"colors-by-id":n.value,"show-labels":d.showLabels,"highlight-id":s.value},null,8,["stacked","colors-by-id","show-labels","highlight-id"])):(h(),y("div",w5,"No data")),d.showLegend&&l.value.length?(h(),y("ul",k5,[(h(!0),y(ye,null,Ne(l.value,u=>(h(),y("li",{key:u.id,class:ke({hovered:s.value===u.id}),onMouseenter:v=>s.value=u.id,onMouseleave:p[0]||(p[0]=v=>s.value=null),onFocus:v=>s.value=u.id,onBlur:p[1]||(p[1]=v=>s.value=null),tabindex:"0"},[i("span",{class:"dot",style:He({background:u.color})},null,4),i("span",null,E(u.label),1)],42,x5))),128))])):ne("",!0)],4))}}),[["__scopeId","data-v-2ce5d838"]])},Symbol.toStringTag,{value:"Module"})),C5={class:"group-row"},S5={colspan:"5"},T5={class:"group-header"},$5={class:"group-main"},M5={class:"group-label"},A5={class:"name"},D5={key:0,class:"group-progress"},L5={key:0,class:"group-meta"},E5={class:"summary"},N5={key:0,class:"summary-percent"},I5={key:1,class:"group-meta"},O5={class:"summary"},B5={key:0},H5=["title"],F5={class:"row-name"},P5={key:0,class:"progress"},W5={class:"num"},z5={class:"num hours-cell"},R5={key:0,class:"hint planned-sub"},j5={class:"num"},V5={class:"num"},U5={key:0,class:"hint"},G5={key:0,class:"empty-row"},K5=gt(Ve({__name:"ByCalendarTable",props:{rows:{},n2:{type:Function},targets:{},groups:{},todayHours:{}},setup(e){const t=e,a=x(()=>Array.isArray(t.groups)&&t.groups.length?t.groups.map(_=>({id:_.id,label:_.label,summary:_.summary??null,color:_.color,todayHours:Number(_.todayHours??0)||0,rows:(_.rows||[]).map(o)})):[{id:"__all__",label:"Calendars",summary:null,color:void 0,rows:(t.rows||[]).map(o)}]);function o(_){const k=r(_);return{..._,calendarId:k}}function r(_){return _?_.calendarId?String(_.calendarId):_.id?String(_.id):_.calendar_id?String(_.calendar_id):_.calendar?String(_.calendar):"":""}function n(_){return String(_.calendar||_.displayname||_.name||_.calendarId||"")}function s(_){return r(_)||n(_)}function l(_){const k=C(_);if(!k)return!1;const m=t.targets||{},w=Number(m[k]);return isFinite(w)&&w>0}function d(_){const k=C(_);if(!k)return 0;const m=t.targets||{},w=Number(m[k]);return isFinite(w)?w:0}function p(_){const k=d(_);return k>0?(Math.round(k*100)/100).toFixed(2):"—"}function u(_,k){return _-k>=0?"delta pos":"delta neg"}function v(_,k){const m=_-k,w=Math.abs(Math.round(m*100)/100).toFixed(2);return(m>=0?"+":"-")+w+"h"}function b(_,k){return Math.max(0,Math.min(100,k>0?_/k*100:0)).toFixed(0)+"%"}function c(_,k){return Math.max(0,Math.min(100,k>0?_/k*100:0))}function f(_){const k=C(_);if(!k)return 0;const m=t.todayHours||{},w=Number(m[k]??0);return Number.isFinite(w)?Math.max(0,w):0}function g(_){const k=d(r(_)),m=f(r(_));if(k<=0||m<=1e-4)return null;const w=Math.max(2,Math.min(120,m/k*100)),D=c(_.total_hours,k),R=Math.max(0,D-w);return{pct:w,left:R}}function T(_){return!!_.summary&&Number(_.summary.targetHours??0)>0}function S(_){if(!_.summary)return 0;const k=Number(_.summary.actualHours??0),m=Number(_.summary.targetHours??0);return c(k,m)}function $(_){if(!_.summary)return null;const k=Number(_.summary.targetHours??0),m=Number(_.todayHours??0);if(k<=0||m<=1e-4)return null;const w=Math.max(2,Math.min(120,m/k*100)),D=S(_),R=Math.max(0,D-w);return{pct:w,left:R}}function C(_){return _==null?"":String(_)}function H(_){const k=_.summary;if(!k)return`${_.rows.length} calendar${_.rows.length===1?"":"s"}`;const m=t.n2(k.actualHours),w=Number(k.plannedHours??0);return k.targetHours>0?`${m} h / ${t.n2(k.targetHours)} h${w>0?` · +${t.n2(w)} h planned`:""}`:`${m} h${w>0?` · +${t.n2(w)} h planned`:""}`}function O(_){const k=_.summary;return!k||k.targetHours<=0?"":`${Math.round(k.percent)}%`}function I(_){switch(_){case"on_track":return"status-on";case"at_risk":return"status-risk";case"behind":return"status-behind";case"done":return"status-done";default:return"status-none"}}return(_,k)=>(h(),y("table",null,[k[1]||(k[1]=i("colgroup",null,[i("col",{class:"col-w-42"}),i("col",{class:"col-w-12"}),i("col",{class:"col-w-14"}),i("col",{class:"col-w-14"}),i("col",{class:"col-w-18"})],-1)),k[2]||(k[2]=i("thead",null,[i("tr",null,[i("th",{class:"nowrap"},"Calendar"),i("th",{class:"num"},"Events"),i("th",{class:"num"},"Hours"),i("th",{class:"num"},"Target"),i("th",{class:"num"},"Δ / %")])],-1)),i("tbody",null,[(h(!0),y(ye,null,Ne(a.value,m=>(h(),y(ye,{key:m.id},[i("tr",C5,[i("td",S5,[i("div",T5,[i("div",$5,[i("div",M5,[i("span",{class:"dot",style:He({background:m.color||"var(--brand)"})},null,4),i("span",A5,E(m.label),1)]),T(m)?(h(),y("div",D5,[i("div",{class:"group-progress__bar",style:He({width:S(m)+"%",background:m.color||void 0})},null,4),$(m)?(h(),y("div",{key:0,class:"group-progress__today",style:He({left:$(m).left+"%",width:$(m).pct+"%",background:m.color||"var(--brand)"})},null,4)):ne("",!0)])):ne("",!0)]),m.summary?(h(),y("div",L5,[i("span",E5,E(H(m)),1),O(m)?(h(),y("span",N5,E(O(m)),1)):ne("",!0),m.summary.statusLabel?(h(),y("span",{key:1,class:ke(["badge",I(m.summary.status)])},E(m.summary.statusLabel),3)):ne("",!0)])):(h(),y("div",I5,[i("span",O5,[Ge(E(m.rows.length)+" calendar",1),m.rows.length!==1?(h(),y("span",B5,"s")):ne("",!0)])]))])])]),(h(!0),y(ye,null,Ne(m.rows,w=>(h(),y("tr",{key:s(w)},[i("td",null,[i("div",{class:"cell",title:n(w)},[i("div",F5,E(n(w)),1),l(r(w))&&d(r(w))>0?(h(),y("div",P5,[i("div",{class:"progress-bar",style:He({width:c(w.total_hours,d(r(w)))+"%",background:m.color||void 0})},null,4),g(w)?(h(),y("div",{key:0,class:"progress-today",style:He({left:g(w).left+"%",width:g(w).pct+"%",background:m.color||"var(--brand)"})},null,4)):ne("",!0)])):ne("",!0)],8,H5)]),i("td",W5,E(w.events_count),1),i("td",z5,[i("div",null,E(_.n2(w.total_hours)),1),Number(w.future_hours??0)>1e-4?(h(),y("div",R5,"+"+E(_.n2(w.future_hours))+" planned",1)):ne("",!0)]),i("td",j5,E(p(r(w))),1),i("td",V5,[l(r(w))?(h(),y(ye,{key:0},[i("span",{class:ke(u(w.total_hours,d(r(w))))},E(v(w.total_hours,d(r(w)))),3),d(r(w))>0?(h(),y("span",U5," ("+E(b(w.total_hours,d(r(w))))+")",1)):ne("",!0)],64)):(h(),y(ye,{key:1},[Ge("—")],64))])]))),128)),m.rows.length?ne("",!0):(h(),y("tr",G5,[...k[0]||(k[0]=[i("td",{colspan:"5",class:"empty"},"No calendars assigned",-1)])]))],64))),128))])]))}}),[["__scopeId","data-v-bade1032"]]),q5={key:0,class:"table-widget__header"},J5={class:"table-widget__title"},Z5={key:0,class:"table-widget__subtitle"},Y5={key:1,class:"table-widget__context"},X5={key:0,class:"table-widget__context-text"},Q5={key:1,class:"table-widget__context-text"},e3={key:2,class:"table-widget__context"},t3={key:4,class:"table-widget__empty"},a3=Object.freeze(Object.defineProperty({__proto__:null,default:gt(Ve({__name:"CalendarTableWidget",props:{title:{},subtitle:{},cardBg:{},showHeader:{type:Boolean},rows:{},targets:{},groups:{},todayHours:{},mode:{},totalTarget:{}},setup(e){const t=e,a=x(()=>t.showHeader!==!1),o=x(()=>t.title||"By calendar"),r=x(()=>({background:t.cardBg||void 0})),n=s=>Number(s??0).toFixed(2);return(s,l)=>(h(),y("div",{class:"card table-widget",style:He(r.value)},[a.value?(h(),y("div",q5,[i("div",J5,E(o.value),1),s.subtitle?(h(),y("div",Z5,E(s.subtitle),1)):ne("",!0)])):ne("",!0),s.mode==="single_goal"?(h(),y("div",Y5,[l[0]||(l[0]=i("span",{class:"table-widget__badge"},"Single Goal",-1)),s.totalTarget>0?(h(),y("span",X5,"Shared total target: "+E(n(s.totalTarget))+" h",1)):(h(),y("span",Q5,"Shared total goal without per-calendar targets"))])):s.mode==="category_and_calendar_goals"?(h(),y("div",e3,[...l[1]||(l[1]=[i("span",{class:"table-widget__badge"},"Category + Calendar Goals",-1),i("span",{class:"table-widget__context-text"},"Grouped by category assignment with per-calendar targets.",-1)])])):ne("",!0),s.rows&&s.rows.length?(h(),lt(K5,{key:3,rows:s.rows,n2:n,targets:s.targets,groups:s.groups,"today-hours":s.todayHours},null,8,["rows","targets","groups","today-hours"])):(h(),y("div",t3,"No data"))],4))}}),[["__scopeId","data-v-2bdf226f"]])},Symbol.toStringTag,{value:"Module"})),o3={key:0,class:"calendar-stats__header"},r3={class:"calendar-stats__title"},n3={class:"calendar-stats__subtitle"},s3={key:1,class:"calendar-stats__state"},i3={key:2,class:"calendar-stats__rows"},l3={class:"calendar-stats__label"},d3={class:"calendar-stats__hint"},c3={class:"calendar-stats__value"},u3=Object.freeze(Object.defineProperty({__proto__:null,default:gt(Ve({__name:"CalendarStatsWidget",props:{byCal:{},rangeLabel:{},metrics:{},title:{},cardBg:{},showHeader:{type:Boolean}},setup(e){const t=e,a=x(()=>t0(t.byCal||[],t.metrics,t.rangeLabel||"")),o=x(()=>t.title||"Calendar stats"),r=x(()=>(t.rangeLabel||"current range").toLowerCase()),n=x(()=>({background:t.cardBg||void 0})),s=x(()=>t.showHeader!==!1);return(l,d)=>(h(),y("div",{class:"card calendar-stats",style:He(n.value)},[s.value?(h(),y("div",o3,[i("div",null,[i("div",r3,E(o.value),1),i("div",n3,"Showing "+E(r.value),1)]),d[0]||(d[0]=i("div",{class:"calendar-stats__scope"},"Selected calendars",-1))])):ne("",!0),a.value.length?(h(),y("ul",i3,[(h(!0),y(ye,null,Ne(a.value,p=>(h(),y("li",{key:p.key,class:"calendar-stats__row"},[i("div",null,[i("div",l3,E(p.label),1),i("div",d3,E(p.hint),1)]),i("div",c3,E(p.value),1)]))),128))])):(h(),y("div",s3,"No metrics configured"))],4))}}),[["__scopeId","data-v-3cc8996b"]])},Symbol.toStringTag,{value:"Module"})),g3={key:0,class:"dayoff-card__header"},p3=["title"],f3={class:"dayoff-tile__label"},b3={class:"dayoff-tile__value"},v3={class:"dayoff-tile__meta"},h3={key:2,class:"hint"},m3=Object.freeze(Object.defineProperty({__proto__:null,default:gt(Ve({__name:"DayOffTrendCard",props:{trend:{},unit:{},lookback:{},title:{},cardBg:{},toneLowColor:{},toneHighColor:{},showHeader:{type:Boolean},labelMode:{},reverseOrder:{type:Boolean},interpretation:{}},setup(e){const t=e,a=x(()=>t.unit==="mo"?"mo":"wk"),o=x(()=>t.unit==="mo"?"This month":"This week"),r=x(()=>{const K=(t.labelMode||"period").toString().toLowerCase();return K==="date"||K==="offset"?K:"period"}),n=x(()=>String(t.interpretation??"").toLowerCase()==="more_off_warning"?"more_off_warning":"more_off_positive"),s=x(()=>{const K=typeof t.lookback=="number"?t.lookback:null;if(K!=null)return Math.max(0,Math.min(6,Math.floor(K)));const Y=(t.trend??[]).filter(le=>Number((le==null?void 0:le.offset)??0)>0);return Math.max(0,Math.min(6,Y.length))}),l=x(()=>{const K=Array.isArray(t.trend)?t.trend:[],Y=new Map;K.forEach(A=>{const V=Number((A==null?void 0:A.offset)??0)||0;Y.set(V,{offset:V,label:(A==null?void 0:A.label)??"",from:(A==null?void 0:A.from)??"",to:(A==null?void 0:A.to)??"",totalDays:Number((A==null?void 0:A.totalDays)??(A==null?void 0:A.total_days)??0)||0,daysOff:Number((A==null?void 0:A.daysOff)??(A==null?void 0:A.days_off)??0)||0,daysWorked:Number((A==null?void 0:A.daysWorked)??(A==null?void 0:A.days_worked)??0)||0})});const le=a.value,J=o.value,de=[],B=Y.get(0)??{offset:0,label:J,from:"",to:"",totalDays:0,daysOff:0,daysWorked:0};de.push(B);const G=s.value;for(let A=1;A<=G;A+=1){const V=Y.get(A)??{offset:A,label:`-${A} ${le}`,from:"",to:"",totalDays:0,daysOff:0,daysWorked:0};de.push(V)}return de}),d=x(()=>{const K=l.value.map(Y=>{const le=Math.max(0,Number(Y.totalDays)||0),J=Math.max(0,Math.min(le,Number(Y.daysOff)||0)),de=le>0?J/le:0;return{...Y,label:k(Y),share:de}});return t.reverseOrder===!0?K:K.slice().reverse()}),p=x(()=>t.title||"Days off trend"),u=x(()=>({background:t.cardBg||void 0})),v=x(()=>t.showHeader!==!1),b=oe(null),c=oe(0),f=x(()=>{const K=m(t.toneLowColor)||"#dc2626",Y=m(t.toneHighColor)||"#16a34a";return{low:K,high:Y}}),g=x(()=>{const K=Number(c.value)||0;return K<=0?!1:K<d.value.length*124});let T=null;function S(){var K;c.value=((K=b.value)==null?void 0:K.clientWidth)||0}Et(async()=>{await Kt(),S(),!(typeof ResizeObserver!="function"||!b.value)&&(T=new ResizeObserver(()=>S()),T.observe(b.value))}),$t(()=>{T==null||T.disconnect(),T=null});function $(K){const Y=Math.max(0,Math.min(1,K));return`${Math.round(Y*100)}% off`}function C(K){const Y=Z(Number(K.share)||0,0,1),le=n.value==="more_off_warning"?1-Y:Y,J=w(f.value.low,f.value.high,le),de=L(J);return{"--tile-bg":de.background,"--tile-fg":de.color,background:de.background,color:de.color}}function H(K){return K?Nt(K):null}function O(K,Y){return!K||!Y?"":Er(K,Y,{day:"2-digit",month:"2-digit"})}function I(K,Y){return Y||(K===0?o.value:`-${K} ${a.value}`)}function _(K){const Y=H(K.from)||H(K.to);return Y?a.value==="mo"?`MONTH ${Y.getUTCMonth()+1}`:`WEEK ${to(Y)}`:I(K.offset,K.label)}function k(K){const Y=Number(K.offset??0)||0;return r.value==="offset"?Y===0?"Current":`-${Y}`:r.value==="date"?O(K.from,K.to)||I(Y,K.label):_(K)}function m(K){if(!K||typeof K!="string")return null;const Y=K.trim();return/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(Y)?Y:null}function w(K,Y,le=.5){const J=D(K),de=D(Y);if(!J||!de)return K;const B=Z(le,0,1),G=Z(Math.round(J.r+(de.r-J.r)*B),0,255),A=Z(Math.round(J.g+(de.g-J.g)*B),0,255),V=Z(Math.round(J.b+(de.b-J.b)*B),0,255);return`rgb(${G}, ${A}, ${V})`}function D(K){const Y=K.trim(),le=Y.match(/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/i);if(le)return{r:Z(Number(le[1]),0,255),g:Z(Number(le[2]),0,255),b:Z(Number(le[3]),0,255)};const J=Y.replace("#","");if(J.length===3){const[de,B,G]=J.split("").map(A=>parseInt(A.repeat(2),16));return{r:de,g:B,b:G}}if(J.length===6){const de=parseInt(J.slice(0,2),16),B=parseInt(J.slice(2,4),16),G=parseInt(J.slice(4,6),16);return{r:de,g:B,b:G}}return null}function R(K){const Y=D(K);return Y?(.2126*Y.r+.7152*Y.g+.0722*Y.b)/255:0}function L(K){const Y=R(K)>.6?"#0f172a":"#fff";return{background:K,color:Y}}function Z(K,Y,le){return Math.min(le,Math.max(Y,K))}return(K,Y)=>(h(),y("div",{class:"card dayoff-card",style:He(u.value)},[v.value?(h(),y("div",g3,[i("span",null,E(p.value),1)])):ne("",!0),d.value.length?(h(),y("div",{key:1,ref_key:"heatmapEl",ref:b,class:ke(["dayoff-heatmap",{"dayoff-heatmap--row":!g.value,"dayoff-heatmap--stacked":g.value}]),style:He({"--dayoff-tile-count":String(Math.max(1,d.value.length))})},[(h(!0),y(ye,null,Ne(d.value,le=>(h(),y("div",{key:le.offset,class:ke(["dayoff-tile",{"dayoff-tile--current":le.offset===0}]),style:He(C(le)),title:`${le.label} · ${$(le.share)}`},[i("div",f3,E(le.label),1),i("div",b3,E($(le.share)),1),i("div",v3,E(le.daysOff)+" off · "+E(le.daysWorked)+" on ",1)],14,p3))),128))],6)):(h(),y("div",h3,"No day-off history for this range."))],4))}}),[["__scopeId","data-v-9c0ed5c7"]])},Symbol.toStringTag,{value:"Module"})),y3={key:0,class:"deck-panel__header"},w3={class:"deck-panel__heading"},k3={class:"deck-panel__title"},x3={key:0,class:"deck-panel__subtitle"},_3={key:1,class:"deck-panel__subtitle"},C3={class:"deck-panel__actions"},S3={key:0,class:"deck-panel__count"},T3=["href"],$3=["disabled"],M3={class:"deck-create__field deck-create__field--title"},A3=["disabled"],D3={class:"deck-create__field"},L3=["disabled"],E3=["value"],N3={class:"deck-create__field"},I3=["disabled"],O3={value:0,disabled:""},B3=["value"],H3=["disabled"],F3={key:0,class:"deck-create__error"},P3={key:2,class:"deck-panel__filters",role:"group","aria-label":"Deck card filters"},W3=["aria-pressed","disabled","title","draggable","onClick","onDragstart","onDragover","onDrop"],z3={class:"deck-filter-label"},R3={class:"deck-filter-label-main"},j3={key:0,class:"deck-filter-label-context"},V3={key:0,class:"deck-filter-count"},U3={key:0,class:"deck-panel__loading"},G3={key:0,class:"deck-panel__error"},K3=["data-idx"],q3={key:0,class:"deck-card__row"},J3={key:0,class:"deck-card__time"},Z3={key:1,class:"deck-card__time"},Y3={class:"deck-card__title"},X3={class:"deck-card__meta"},Q3={class:"deck-card__stack"},eS={key:2,class:"deck-card__labels"},tS={key:3,class:"deck-card__assignees"},aS={class:"deck-card__status-row"},oS={key:0,class:"deck-card__time"},rS={key:1,class:"deck-card__time"},nS={class:"deck-card__title"},sS={class:"deck-card__meta"},iS={class:"deck-card__stack"},lS={key:0,class:"deck-card__labels"},dS={key:1,class:"deck-card__assignees"},cS=gt(Ve({__name:"DeckCardsPanel",props:{cards:{},loading:{type:Boolean},rangeLabel:{},lastFetchedAt:{},deckUrl:{},error:{},filter:{},canFilterMine:{type:Boolean},filtersEnabled:{type:Boolean},filterOptions:{},orderableValues:{},editable:{type:Boolean},allowMineOverride:{type:Boolean},autoScroll:{type:Boolean},intervalSeconds:{},showCount:{type:Boolean},maxVisible:{},compact:{type:Boolean},title:{},cardBg:{},showHeader:{type:Boolean},boards:{},onCardsChanged:{type:Function}},emits:["refresh","update:filter","reorder:filters"],setup(e,{emit:t}){function a(U,F){if(!U)return F;const j=U.trim();return/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(j)||/^[a-zA-Z]+$/.test(j)?j:F}const o=e,r=t,n=x(()=>o.filter??"all"),s=x(()=>{const U=Number(o.maxVisible??8);return Number.isFinite(U)?Math.max(3,Math.min(50,Math.trunc(U))):8}),l=oe(!1),d=x(()=>l.value?o.cards:o.cards.slice(0,s.value)),p=x(()=>o.cards.length>s.value),u=x(()=>o.title||"Deck cards"),v=x(()=>({background:o.cardBg||void 0})),b=x(()=>o.showHeader!==!1),c=x(()=>o.filtersEnabled!==!1&&g.value.length>1),f=x(()=>c.value&&o.canFilterMine!==!1&&o.allowMineOverride!==!1),g=x(()=>o.filterOptions&&o.filterOptions.length?o.filterOptions.map(U=>({...U,mine:!!U.mine})):[{value:"all",label:"All cards",mine:!1},{value:"open_all",label:"Open · All",mine:!1},{value:"open_mine",label:"Open · Mine",mine:!0},{value:"done_all",label:"Done · All",mine:!1},{value:"done_mine",label:"Done · Mine",mine:!0},{value:"archived_all",label:"Archived · All",mine:!1},{value:"archived_mine",label:"Archived · Mine",mine:!0},{value:"due_all",label:"Due · All",mine:!1},{value:"due_mine",label:"Due · Mine",mine:!0},{value:"due_today_all",label:"Due today · All",mine:!1},{value:"due_today_mine",label:"Due today · Mine",mine:!0}]),T=x(()=>o.orderableValues&&o.orderableValues.length?o.orderableValues:g.value.map(U=>U.value).filter(U=>!String(U).startsWith("custom_"))),S=oe(null),$=oe(!1),C=oe(!1),H=oe(""),O=oe(""),I=oe(0),_=oe(0),k=oe([]),m=oe(!1),w=x(()=>o.boards||[]);Oe(w,U=>{!I.value&&U.length&&(I.value=U[0].id)},{immediate:!0}),Oe(I,async U=>{if(_.value=0,k.value=[],!!U){m.value=!0;try{k.value=await Aw(U),k.value.length&&(_.value=k.value[0].id)}catch{H.value="Could not load Deck stacks."}finally{m.value=!1}}},{immediate:!0});async function D(){var U;if(!(!O.value||!_.value||C.value)){C.value=!0,H.value="";try{await Dw(O.value,_.value),O.value="",$.value=!1,await((U=o.onCardsChanged)==null?void 0:U.call(o))}catch{H.value="Could not create the Deck card. Check your Deck permissions and try again."}finally{C.value=!1}}}const R=oe(null),L=oe(null),Z=oe(null),K=oe(0),Y=x(()=>{const U=Math.max(3,Math.min(10,Number(o.intervalSeconds??5)))*1e3;return Number.isFinite(U)?U:5e3});Oe(()=>o.autoScroll,()=>{G(),A()}),Oe(l,()=>{G(),A()}),Oe(()=>o.cards,()=>{K.value=0,l.value=!1,G(),A()},{deep:!0}),Et(()=>{A()}),$t(()=>{G()});function le(U,F){!o.editable||!T.value.includes(U)||(S.value=U,F.dataTransfer&&(F.dataTransfer.effectAllowed="move",F.dataTransfer.setData("text/plain",String(U))))}function J(U){!o.editable||!S.value||T.value.includes(U)}function de(U){if(!o.editable||!S.value||!T.value.includes(U))return;const F=T.value.slice(),j=F.indexOf(S.value),ce=F.indexOf(U);if(j<0||ce<0||j===ce){S.value=null;return}if(F.splice(j,1),F.splice(ce,0,S.value),S.value=null,F.length){const fe=g.value.map(P=>P.value).filter(P=>String(P).startsWith("custom_")),N=[...F,...fe];o.orderableValues&&o.orderableValues.length?r("reorder:filters",F):r("reorder:filters",N)}}function B(){S.value=null}function G(){Z.value&&(clearInterval(Z.value),Z.value=null)}function A(){!o.autoScroll||!l.value||d.value.length<=1||(G(),Z.value=window.setInterval(()=>{const U=d.value.length;K.value=(K.value+1)%U,V(K.value)},Y.value))}function V(U){if(!R.value||!L.value)return;const F=L.value.querySelector(`[data-idx="${U}"]`);if(!F)return;const j=F.offsetTop-L.value.offsetTop;R.value.scrollTo({top:j,behavior:"smooth"})}const he=x(()=>{if(!o.lastFetchedAt)return"";const U=ii(o.lastFetchedAt);return U?En(U,{weekday:"short",month:"short",day:"numeric"}):""});function Me(U){return En(U,{weekday:"short",month:"short",day:"numeric"})||U}function ae(U){return U==="done"?"Done":U==="archived"?"Archived":"Active"}return(U,F)=>(h(),y("div",{class:ke(["card deck-panel",{"deck-panel--compact":o.compact}]),style:He(v.value)},[b.value?(h(),y("div",y3,[i("div",w3,[i("div",k3,E(u.value),1),he.value?(h(),y("div",x3," Updated "+E(he.value),1)):(h(),y("div",_3," Showing "+E(U.rangeLabel.toLowerCase())+" selection ",1))]),i("div",C3,[U.showCount?(h(),y("div",S3,E(U.cards.length)+" cards",1)):ne("",!0),U.deckUrl?(h(),y("a",{key:1,class:"deck-panel__link",href:U.deckUrl,target:"_blank",rel:"noopener"}," Open Deck ↗ ",8,T3)):ne("",!0),i("button",{type:"button",class:"deck-panel__create",onClick:F[0]||(F[0]=j=>$.value=!$.value)},E($.value?"Cancel":"+ Add card"),1),i("button",{type:"button",class:"deck-panel__refresh",onClick:F[1]||(F[1]=j=>U.$emit("refresh")),disabled:U.loading}," Refresh ",8,$3)])])):ne("",!0),$.value?(h(),y("form",{key:1,class:"deck-create",onSubmit:Xe(D,["prevent"])},[i("label",M3,[F[6]||(F[6]=i("span",null,"New card",-1)),go(i("input",{"onUpdate:modelValue":F[2]||(F[2]=j=>O.value=j),disabled:C.value,required:"",maxlength:"255",placeholder:"What needs doing?"},null,8,A3),[[An,O.value,void 0,{trim:!0}]])]),i("label",D3,[F[8]||(F[8]=i("span",null,"Board",-1)),go(i("select",{"onUpdate:modelValue":F[3]||(F[3]=j=>I.value=j),disabled:C.value||!w.value.length},[F[7]||(F[7]=i("option",{value:0,disabled:""},"Select board",-1)),(h(!0),y(ye,null,Ne(w.value,j=>(h(),y("option",{key:j.id,value:j.id},E(j.title),9,E3))),128))],8,L3),[[xc,I.value,void 0,{number:!0}]])]),i("label",N3,[F[9]||(F[9]=i("span",null,"Stack",-1)),go(i("select",{"onUpdate:modelValue":F[4]||(F[4]=j=>_.value=j),disabled:C.value||!k.value.length},[i("option",O3,E(m.value?"Loading stacks…":"Select stack"),1),(h(!0),y(ye,null,Ne(k.value,j=>(h(),y("option",{key:j.id,value:j.id},E(j.title),9,B3))),128))],8,I3),[[xc,_.value,void 0,{number:!0}]])]),i("button",{class:"deck-create__submit",type:"submit",disabled:C.value||!O.value||!_.value},E(C.value?"Saving…":"Create card"),9,H3),H.value?(h(),y("p",F3,E(H.value),1)):ne("",!0)],32)):ne("",!0),c.value?(h(),y("div",P3,[(h(!0),y(ye,null,Ne(g.value,j=>(h(),y("button",{key:j.value,type:"button",class:ke(["deck-filter-btn",{active:n.value===j.value,"is-draggable":o.editable&&T.value.includes(j.value)}]),"aria-pressed":n.value===j.value,disabled:j.mine&&!f.value,title:j.contextLabel?`${j.label} · ${j.contextLabel}`:j.label,draggable:o.editable&&T.value.includes(j.value),onClick:ce=>U.$emit("update:filter",j.value),onDragstart:ce=>le(j.value,ce),onDragover:Xe(ce=>J(j.value),["prevent"]),onDrop:Xe(ce=>de(j.value),["prevent"]),onDragend:B},[i("span",z3,[i("span",R3,E(j.label),1),j.contextLabel?(h(),y("span",j3,[i("span",{class:"deck-filter-board-dot",style:He({backgroundColor:j.contextColor||"var(--line)"})},null,4),Ge(" "+E(j.contextLabel),1)])):ne("",!0)]),typeof j.count=="number"?(h(),y("span",V3,E(j.count),1)):ne("",!0)],42,W3))),128))])):ne("",!0),i("div",{class:"deck-panel__body",ref_key:"bodyEl",ref:R},[U.loading?(h(),y("div",U3,[Re(M(lb),{size:20}),F[10]||(F[10]=i("span",null,"Loading Deck cards…",-1))])):(h(),y(ye,{key:1},[U.error?(h(),y("div",G3,E(U.error),1)):U.cards.length?(h(),y("ul",{key:2,class:"deck-card-list",ref_key:"listEl",ref:L},[(h(!0),y(ye,null,Ne(d.value,(j,ce)=>(h(),y("li",{key:j.id,class:"deck-card","data-idx":ce},[o.compact?(h(),y("div",q3,[i("span",{class:ke(["deck-card__status",j.status])},E(ae(j.status)),3),j.match==="due"&&j.due?(h(),y("span",J3," Due "+E(Me(j.due)),1)):j.done?(h(),y("span",Z3," Completed "+E(Me(j.done)),1)):ne("",!0),i("span",Y3,E(j.title),1),i("span",X3,[i("span",{class:"deck-card__board",style:He({borderColor:a(j.boardColor,"var(--brand)")})},E(j.boardTitle),5),i("span",Q3,E(j.stackTitle),1)]),j.labels.length?(h(),y("span",eS,[(h(!0),y(ye,null,Ne(j.labels,fe=>(h(),y("span",{key:`deck-label-${j.id}-${fe.id??fe.title}`,class:"deck-card__label",style:He({background:a(fe.color,"var(--soft)")})},E(fe.title),5))),128))])):ne("",!0),j.assignees.length?(h(),y("span",tS,[F[11]||(F[11]=i("span",{class:"deck-card__assignees-label"},"Assigned:",-1)),(h(!0),y(ye,null,Ne(j.assignees,fe=>(h(),y("span",{key:`deck-assignee-${j.id}-${fe.uid??fe.id}`,class:"deck-card__assignee"},E(fe.displayName||fe.uid),1))),128))])):ne("",!0)])):(h(),y(ye,{key:1},[i("div",aS,[i("span",{class:ke(["deck-card__status",j.status])},E(ae(j.status)),3),j.match==="due"&&j.due?(h(),y("span",oS," Due "+E(Me(j.due)),1)):j.done?(h(),y("span",rS," Completed "+E(Me(j.done)),1)):ne("",!0)]),i("div",nS,E(j.title),1),i("div",sS,[i("span",{class:"deck-card__board",style:He({borderColor:a(j.boardColor,"var(--brand)")})},E(j.boardTitle),5),i("span",iS,E(j.stackTitle),1)]),j.labels.length?(h(),y("div",lS,[(h(!0),y(ye,null,Ne(j.labels,fe=>(h(),y("span",{key:`deck-label-${j.id}-${fe.id??fe.title}`,class:"deck-card__label",style:He({background:a(fe.color,"var(--soft)")})},E(fe.title),5))),128))])):ne("",!0),j.assignees.length?(h(),y("div",dS,[F[12]||(F[12]=i("span",{class:"deck-card__assignees-label"},"Assigned:",-1)),(h(!0),y(ye,null,Ne(j.assignees,fe=>(h(),y("span",{key:`deck-assignee-${j.id}-${fe.uid??fe.id}`,class:"deck-card__assignee"},E(fe.displayName||fe.uid),1))),128))])):ne("",!0)],64))],8,K3))),128))],512)):(h(),lt(M(ib),{key:1,name:"No Deck cards",description:`No cards matched this ${U.rangeLabel.toLowerCase()}. Confirm Deck due dates or rerun seeding.`},null,8,["description"])),p.value?(h(),y("button",{key:3,type:"button",class:"deck-panel__show-all",onClick:F[5]||(F[5]=j=>l.value=!l.value)},E(l.value?"Show fewer cards":`Show all ${U.cards.length} cards`),1)):ne("",!0)],64))],512)],6))}}),[["__scopeId","data-v-647b107d"]]),uS=Object.freeze(Object.defineProperty({__proto__:null,default:Ve({__name:"DeckCardsWidget",props:{cards:{},rangeLabel:{},from:{},to:{},uid:{},deckUrl:{},lastFetchedAt:{},loading:{type:Boolean},error:{},boardIds:{},stackIds:{},filters:{},defaultFilter:{},allowMine:{type:Boolean},mineMode:{},includeArchived:{type:Boolean},includeCompleted:{type:Boolean},autoScroll:{type:Boolean},intervalSeconds:{},showCount:{type:Boolean},maxVisible:{},minFilterCount:{},showHeader:{type:Boolean},title:{},cardBg:{},customFilters:{},autoTagsEnabled:{type:Boolean,default:!0},autoTagSelection:{},compactList:{type:Boolean},editable:{type:Boolean},onUpdateFilters:{},onDeckCardsChanged:{}},emits:["refresh"],setup(e){const t=e,a=["focus_all","focus_mine","backlog_all","backlog_mine","all"],o=oe([]);oe({}),Et(async()=>{try{o.value=await Bu()}catch{o.value=[]}});const r=x(()=>mo(t.cards||[],{boardIds:t.boardIds,stackIds:t.stackIds,includeArchived:!0,includeCompleted:!0})),n=x(()=>mo(r.value,{includeArchived:t.includeArchived!==!1,includeCompleted:t.includeCompleted!==!1})),s=x(()=>t.autoTagsEnabled===!1?[]:vi(n.value)),l=x(()=>Array.isArray(t.autoTagSelection)?new Set(t.autoTagSelection.map(k=>String(k))):null),d=x(()=>{if(t.autoTagsEnabled===!1)return[];const k=s.value;if(!k.length)return[];const m=l.value;return m?k.filter(w=>m.has(w.value)):k}),p=x(()=>(t.customFilters||[]).map(k=>`custom_${k.id}`)),u=x(()=>{const k=t.filters&&t.filters.length?t.filters:a,m=d.value.map(w=>w.value);return[...k,...p.value,...m]}),v=x(()=>{const k=t.includeArchived!==!1,m=n.value,w=new Map;return u.value.forEach(D=>{w.set(D,bu(D,m,{uid:t.uid,mineMode:t.mineMode||"assignee",from:t.from,to:t.to,includeCompleted:t.includeCompleted!==!1,includeArchivedInDone:k,customFilters:t.customFilters||[]}).length)}),w}),b=oe(null),c=x(()=>b.value?b.value:(t.filters&&t.filters.length?t.filters:a).filter(Boolean)),f=x(()=>{const k=c.value,m={all:"All cards",mine:"Mine (any status)",focus_all:"Focus",focus_mine:"My focus",backlog_all:"Backlog",backlog_mine:"My backlog",open_all:"Open · All",open_mine:"Open · Mine",done_all:"Done · All",done_mine:"Done · Mine",archived_all:"Archived · All",archived_mine:"Archived · Mine",due_all:"Due · All",due_mine:"Due · Mine",due_today_all:"Due today · All",due_today_mine:"Due today · Mine",created_today_all:"Created today · All",created_today_mine:"Created today · Mine",created_range_all:"Created this range · All",created_range_mine:"Created this range · Mine"},w=v.value,D=k.map(Z=>({value:Z,label:m[Z]||Z,mine:Z.endsWith("_mine")||Z==="mine",count:w.get(Z)??0})),R=(t.customFilters||[]).filter(Z=>Z&&Z.id&&Z.label).map(Z=>({value:`custom_${Z.id}`,label:Z.label,mine:!1,count:w.get(`custom_${Z.id}`)??0})),L=d.value.map(Z=>({value:Z.value,label:Z.label,mine:!1,count:w.get(Z.value)??Z.count??0,contextLabel:Z.contextLabel,contextColor:Z.contextColor}));return[...D,...R,...L]}),g=x(()=>{const k=Number(t.minFilterCount??0);return Number.isFinite(k)?Math.max(0,Math.trunc(k)):0}),T=x(()=>g.value<=0?f.value:f.value.filter(k=>Number(k.count??0)>=g.value)),S=oe(O());Oe(()=>t.defaultFilter,()=>{S.value=O()}),Oe(()=>T.value.map(k=>k.value).join("|"),()=>{const k=T.value;k.length&&(k.some(m=>m.value===S.value)||(S.value=k[0].value))});const $=x(()=>T.value.length>1),C=x(()=>t.allowMine!==!1&&!!(t.uid||"").trim()),H=x(()=>{const k=t.includeArchived!==!1||S.value.startsWith("archived"),m=mo(r.value,{includeArchived:k,includeCompleted:t.includeCompleted!==!1});return bu(S.value,m,{uid:t.uid,mineMode:t.mineMode||"assignee",from:t.from,to:t.to,includeCompleted:t.includeCompleted!==!1,includeArchivedInDone:k,customFilters:t.customFilters||[]})});function O(){const k=T.value.map(w=>w.value),m=t.defaultFilter||k[0]||"all";return k.includes(m)?m:k[0]||"all"}function I(k){S.value=k}function _(k){var m;k.length&&(b.value=[...k],(m=t.onUpdateFilters)==null||m.call(t,k),k.includes(S.value)||(S.value=k[0]))}return(k,m)=>(h(),lt(cS,{cards:H.value,loading:k.loading,"range-label":k.rangeLabel,"last-fetched-at":k.lastFetchedAt,"deck-url":k.deckUrl,error:k.error,filter:S.value,"filters-enabled":$.value,"can-filter-mine":C.value,"allow-mine-override":C.value,"filter-options":T.value,"auto-scroll":t.autoScroll!==!1,"interval-seconds":t.intervalSeconds,"show-count":t.showCount!==!1,"max-visible":t.maxVisible,compact:t.compactList===!0,title:t.title,"card-bg":t.cardBg,"show-header":t.showHeader!==!1,editable:t.editable===!0,"on-cards-changed":t.onDeckCardsChanged,boards:o.value,"orderable-values":c.value,onRefresh:m[0]||(m[0]=w=>k.$emit("refresh")),"onUpdate:filter":I,"onReorder:filters":_},null,8,["cards","loading","range-label","last-fetched-at","deck-url","error","filter","filters-enabled","can-filter-mine","allow-mine-override","filter-options","auto-scroll","interval-seconds","show-count","max-visible","compact","title","card-bg","show-header","editable","on-cards-changed","boards","orderable-values"]))}})},Symbol.toStringTag,{value:"Module"})),gS={key:0,class:"deck-stats-widget__header"},pS={class:"deck-stats-widget__title"},fS={class:"deck-stats-widget__subtitle"},bS={key:0,class:"deck-stats-widget__scope"},vS={key:1,class:"deck-stats-widget__state"},hS={key:2,class:"deck-stats-widget__state deck-stats-widget__state--error"},mS={key:3,class:"deck-stats-widget__state"},yS={key:4,class:"deck-stats-widget__rows"},wS={class:"deck-stats-widget__meta"},kS={class:"deck-stats-widget__label"},xS={class:"deck-stats-widget__hint"},_S={class:"deck-stats-widget__value"},CS=Object.freeze(Object.defineProperty({__proto__:null,default:gt(Ve({__name:"DeckStatsWidget",props:{cards:{},rangeLabel:{},from:{},to:{},uid:{},loading:{type:Boolean,default:!1},error:{},boardIds:{},stackIds:{},tagIds:{},metrics:{},scope:{},mineMode:{},includeArchived:{type:Boolean,default:!0},includeCompleted:{type:Boolean,default:!0},title:{},cardBg:{},showHeader:{type:Boolean,default:!0},selectionText:{}},setup(e){const t=e,a=x(()=>h0(t.cards||[],{boardIds:t.boardIds,stackIds:t.stackIds,includeArchived:t.includeArchived!==!1,includeCompleted:t.includeCompleted!==!1,scope:t.scope||"all",uid:t.uid,mineMode:t.mineMode||"assignee",tagIds:t.tagIds,metrics:t.metrics,from:t.from,to:t.to,rangeLabel:t.rangeLabel})),o=x(()=>({background:t.cardBg||void 0})),r=x(()=>t.title||"Deck stats"),n=x(()=>(t.rangeLabel||"current range").toLowerCase()),s=x(()=>String(t.selectionText||"").trim()),l=x(()=>t.showHeader!==!1);return(d,p)=>(h(),y("div",{class:"card deck-stats-widget",style:He(o.value)},[l.value?(h(),y("div",gS,[i("div",null,[i("div",pS,E(r.value),1),i("div",fS,"Showing "+E(n.value),1)]),s.value?(h(),y("div",bS,E(s.value),1)):ne("",!0)])):ne("",!0),d.loading?(h(),y("div",vS," Loading Deck stats… ")):d.error?(h(),y("div",hS,E(d.error),1)):a.value.length?(h(),y("ul",yS,[(h(!0),y(ye,null,Ne(a.value,u=>(h(),y("li",{key:u.key,class:"deck-stats-widget__row"},[i("div",wS,[i("div",kS,E(u.label),1),i("div",xS,E(u.hint),1)]),i("div",_S,E(u.value),1)]))),128))])):(h(),y("div",mS," No metrics configured "))],4))}}),[["__scopeId","data-v-cb54adec"]])},Symbol.toStringTag,{value:"Module"}));function es(e,t){return Ve({name:e,inheritAttrs:!1,setup(a,{attrs:o}){return()=>ba("svg",{...o,class:[o.class,a.class],width:"24",height:"24",viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg",stroke:"currentColor","stroke-width":"1.5","stroke-linecap":"round","stroke-linejoin":"round","aria-hidden":"true"},t.map(r=>ba("path",{d:r})))}})}const SS=es("HustleRunIcon",["M15 7C16.1046 7 17 6.10457 17 5C17 3.89543 16.1046 3 15 3C13.8954 3 13 3.89543 13 5C13 6.10457 13.8954 7 15 7Z","M12.6133 8.26691L9.30505 12.4021L13.4403 16.5374L11.3727 21.0861","M6.4104 9.5075L9.79728 6.19931L12.6132 8.26692L15.508 11.5752H19.2297","M8.89152 15.7103L7.65095 16.5374H4.34277"]),TS=es("HustleSwimIcon",["M3 15C5.48276 15 7.34483 12 7.34483 12C7.34483 12 9.2069 15 11.6897 15C14.1724 15 16.6552 12 16.6552 12C16.6552 12 19.1379 15 21 15","M3 20C5.48276 20 7.34483 17 7.34483 17C7.34483 17 9.2069 20 11.6897 20C14.1724 20 16.6552 17 16.6552 17C16.6552 17 19.1379 20 21 20","M5 10.5L9 8L7.81306 6.51633C7.36819 5.96024 7.47151 5.14637 8.04123 4.71908V4.71908C8.57851 4.31612 9.33729 4.40475 9.76724 4.92069L14 10","M16.5 8C17.8807 8 19 6.88071 19 5.5C19 4.11929 17.8807 3 16.5 3C15.1193 3 14 4.11929 14 5.5C14 6.88071 15.1193 8 16.5 8Z"]),$S=es("HustleRideIcon",["M5 19C7.20914 19 9 17.2091 9 15C9 12.7909 7.20914 11 5 11C2.79086 11 1 12.7909 1 15C1 17.2091 2.79086 19 5 19Z","M8.5 7.5L14.5 7.5M19 15L15 7.5L14.5 7.5M14.5 7.5L16.5 4.5M16.5 4.5L14 4.5M16.5 4.5L18.5 4.5","M5 15L8.5 7.5L12 14L15 14","M8.5 7.5C8.16667 6.5 7 4.5 5 4.5","M19 19C21.2091 19 23 17.2091 23 15C23 12.7909 21.2091 11 19 11C16.7909 11 15 12.7909 15 15C15 17.2091 16.7909 19 19 19Z"]),MS=es("HustleDeadliftIcon",["M7.4 7H4.6C4.26863 7 4 7.26863 4 7.6V16.4C4 16.7314 4.26863 17 4.6 17H7.4C7.73137 17 8 16.7314 8 16.4V7.6C8 7.26863 7.73137 7 7.4 7Z","M19.4 7H16.6C16.2686 7 16 7.26863 16 7.6V16.4C16 16.7314 16.2686 17 16.6 17H19.4C19.7314 17 20 16.7314 20 16.4V7.6C20 7.26863 19.7314 7 19.4 7Z","M1 14.4V9.6C1 9.26863 1.26863 9 1.6 9H3.4C3.73137 9 4 9.26863 4 9.6V14.4C4 14.7314 3.73137 15 3.4 15H1.6C1.26863 15 1 14.7314 1 14.4Z","M23 14.4V9.6C23 9.26863 22.7314 9 22.4 9H20.6C20.2686 9 20 9.26863 20 9.6V14.4C20 14.7314 20.2686 15 20.6 15H22.4C22.7314 15 23 14.7314 23 14.4Z","M8 12H16"]),AS={key:0,class:"targets-fireframe","aria-hidden":"true"},DS={key:1,class:"targets-header"},LS={class:"targets-header__title"},ES={key:0,class:"hint"},NS={key:2,class:"targets-hustle"},IS={class:"targets-hustle__badge"},OS={class:"targets-hustle__orb","aria-hidden":"true"},BS={class:"targets-main"},HS={class:"line total-line"},FS={class:"value"},PS={key:0,class:"line"},WS={key:1,class:"line"},zS={key:2,class:"line"},RS={key:3,class:"line forecast"},jS={class:"hint"},VS={key:3,class:"targets-badges"},US={key:4,class:"targets-categories"},GS={class:"cat-top"},KS={class:"cat-label"},qS={class:"name"},JS={key:0,class:"unassigned-hint",title:"Hours from calendars not assigned to a category. Open Settings → Categories to assign them."},ZS={class:"cat-meta"},YS={class:"percent"},XS={class:"bar"},QS={class:"bar-track"},e6={class:"cat-metrics"},t6={class:"hint"},a6={key:1,class:"hint today-inline"},o6={key:2,class:"hint planned-inline"},r6={key:3,class:"hint"},n6={key:0,class:"cat-footer"},s6={class:"hint"},i6=Object.freeze(Object.defineProperty({__proto__:null,default:gt(Ve({__name:"TimeTargetsCard",props:{summary:{},config:{},groups:{},showDelta:{type:Boolean,default:!0},showPace:{type:Boolean,default:!0},showForecast:{type:Boolean,default:!0},neverFinishedMode:{type:Boolean,default:!1},showHeader:{type:Boolean},title:{default:"Targets"},cardBg:{default:null}},setup(e){const t=e,a=x(()=>{var _;return((_=t.summary)==null?void 0:_.total)??$("total","Total")}),o=x(()=>t.neverFinishedMode===!0),r=x(()=>t.showHeader!==!1),n=oe(0),s=oe(.42);let l=null;Et(()=>{s.value=(Date.now()%997+1)/998,l=setInterval(()=>{n.value=(n.value+1)%24},780)}),$t(()=>{l&&clearInterval(l)});const d=[{id:"run",label:"Run",icon:SS},{id:"swim",label:"Swim",icon:TS},{id:"ride",label:"Ride",icon:$S},{id:"lift",label:"Lifting",icon:MS}],p=x(()=>n.value%d.length),u=x(()=>{var k;return Array.isArray(t.groups)?t.groups.map(m=>({id:m.id,label:m.label,summary:m.summary??$(m.id,m.label),color:m.color,rows:m.rows,todayHours:m.todayHours})):(((k=t.summary)==null?void 0:k.categories)??[]).map(m=>({id:m.id,label:m.label,summary:m,color:void 0,rows:[]}))}),v=x(()=>({background:t.cardBg||void 0})),b=x(()=>g(a.value,"pace")),c=x(()=>u.value.map(_=>{const k=_.summary??$(_.id,_.label),m=Number(_.todayHours??0),w=k.targetHours,D=Math.max(0,k.actualHours-w),R=Math.min(D,m),L=m>0,Z=w>0?m/w*100:0,K=g(k,"badge"),Y=K.progress;return{id:_.id,label:_.label||k.label,actualHours:k.actualHours,plannedHours:Number(k.plannedHours??0),targetHours:w,percent:K.percent,percentText:K.percentText,deltaHours:k.deltaHours,needPerDay:k.needPerDay,daysLeft:k.daysLeft,calendarPercent:k.calendarPercent,gap:k.gap,status:k.status,statusLabel:K.badgeLabel,badgeLabel:K.badgeLabel,statusClass:K.statusClass,color:_.color,isUnassigned:_.isUnassigned===!0,calendarCount:Array.isArray(_.rows)?_.rows.length:0,progress:Y,isEndless:K.isEndless,todayHours:m,overToday:R,todayWidth:L&&w>0?C(Z,2,200):0,todayRight:Math.max(0,100-Y),todayText:R>0?`Today ${f(m)} (+${f(R)})`:`Today ${f(m)}`,todayColor:_.color?I(_.color,.65):"var(--brand)",calendarLabel:Array.isArray(_.rows)&&_.rows.length===1?"calendar":"calendars"}}).filter(_=>_.targetHours>0||_.actualHours>0||_.calendarCount>0));function f(_){if(!isFinite(_))return"0";const k=Math.round(_*10)/10;return Math.abs(k-Math.round(k))<.05?String(Math.round(k)):k.toFixed(1)}function g(_,k){const m=C(_.percent,0,999);if(!(o.value&&_.targetHours>0&&m>=80))return{percent:m,percentText:m.toFixed(0),progress:C(m,0,999),badgeLabel:_.statusLabel,paceLabel:_.statusLabel,statusClass:S(_.status),isEndless:!1};const D=Math.min(1,Math.max(0,(m-80)/20)),R=80.5+D*7,L=90.5+D*8,Z=H(Math.min(98.8,R+s.value*(L-R)));return{percent:Z,percentText:Z.toFixed(0),progress:C(Z,80,99),badgeLabel:"Never Finished",paceLabel:k==="pace"?"Stay Hard":"Never Finished",statusClass:"status-endless",isEndless:!0}}function T(_){return!isFinite(_)||Math.abs(_)<.005?"0.0":(_>=0?"+":"−")+f(Math.abs(_))}function S(_){switch(_){case"on_track":return"status-on";case"at_risk":return"status-risk";case"behind":return"status-behind";case"done":return"status-done";default:return"status-none"}}function $(_,k){return{id:_,label:k,actualHours:0,plannedHours:0,targetHours:0,percent:0,deltaHours:0,remainingHours:0,needPerDay:0,daysLeft:0,calendarPercent:0,gap:0,status:"none",statusLabel:"—",includeWeekend:!0,paceMode:"days_only"}}function C(_,k,m){return!isFinite(_)||_<k?k:_>m?m:_}function H(_){return Math.round(_*10)/10}function O(_){return _==="momentum"?"Momentum":"Linear"}function I(_,k=.5){const m=/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(_||"");if(!m)return _;const w=parseInt(m[1],16),D=parseInt(m[2],16),R=parseInt(m[3],16),L=Math.max(0,Math.min(1,k));return`rgb(${Math.round(w+(255-w)*L)},${Math.round(D+(255-D)*L)},${Math.round(R+(255-R)*L)})`}return(_,k)=>(h(),y("div",{class:ke(["card targets-card",{"targets-card--endless":o.value}]),style:He(v.value)},[o.value?(h(),y("div",AS)):ne("",!0),r.value?(h(),y("div",DS,[i("div",LS,[i("strong",null,E(_.title||"Targets"),1)]),a.value.targetHours>0?(h(),y("span",ES,E(b.value.percentText)+"%",1)):ne("",!0)])):ne("",!0),o.value?(h(),y("div",NS,[i("div",IS,[i("div",OS,[(h(),y(ye,null,Ne(d,(m,w)=>i("div",{key:m.id,class:ke(["targets-hustle__scene",{"is-active":w===p.value}])},[(h(),lt(vd(m.icon),{class:"targets-hustle__icon","aria-hidden":"true"}))],2)),64))])])])):ne("",!0),i("div",BS,[i("div",HS,[i("span",FS,[i("strong",null,E(f(a.value.actualHours)),1),Ge(" / "+E(f(a.value.targetHours))+" h",1)]),_.showDelta&&_.config.ui.showTotalDelta&&a.value.targetHours>0?(h(),y("span",{key:0,class:ke(["delta",a.value.deltaHours>=0?"pos":"neg"])}," Δ "+E(T(a.value.deltaHours))+"h ",3)):ne("",!0)]),a.value.plannedHours>0?(h(),y("div",PS," Planned "+E(f(a.value.plannedHours))+" h upcoming ",1)):ne("",!0),_.config.ui.showNeedPerDay&&a.value.targetHours>0?(h(),y("div",WS," Days left "+E(a.value.daysLeft)+" • Need "+E(f(a.value.needPerDay))+" h/day ",1)):ne("",!0),_.showPace&&a.value.targetHours>0?(h(),y("div",zS,[Ge(" Pace: "+E(b.value.percentText)+"% vs "+E(a.value.calendarPercent.toFixed(0))+"% → ",1),i("span",{class:ke(["status-label",b.value.statusClass])},E(b.value.paceLabel),3)])):ne("",!0),_.showForecast?(h(),y("div",RS,[Ge(" Forecast: "+E(_.summary.forecast.text)+" ",1),i("span",jS," Linear "+E(f(_.summary.forecast.linear))+"h · Momentum "+E(f(_.summary.forecast.momentum))+"h · Primary: "+E(O(_.summary.forecast.primaryMethod)),1)])):ne("",!0)]),_.config.ui.badges&&a.value.targetHours>0?(h(),y("div",VS,[i("span",{class:ke(["badge",b.value.statusClass])},E(b.value.badgeLabel),3)])):ne("",!0),_.config.ui.showCategoryBlocks&&c.value.length?(h(),y("div",US,[(h(!0),y(ye,null,Ne(c.value,m=>(h(),y("div",{class:"category",key:m.id},[i("div",GS,[i("div",KS,[i("span",{class:"dot",style:He({background:m.color||"var(--brand)"})},null,4),i("span",qS,E(m.label),1),m.isUnassigned?(h(),y("span",JS,"ⓘ")):ne("",!0)]),i("div",ZS,[i("span",YS,E(m.percentText)+"%",1),_.config.ui.badges&&m.targetHours>0?(h(),y("span",{key:0,class:ke(["badge",m.statusClass])},E(m.badgeLabel),3)):ne("",!0)])]),i("div",{class:ke(["cat-progress",{"is-endless":m.isEndless}])},[i("div",XS,[i("div",QS,[i("div",{class:ke(["fill",{"fill-endless":m.isEndless}]),style:He({width:m.progress+"%","--fill-color":m.color||"var(--brand)"})},null,6),m.todayWidth>0?(h(),y("div",{key:0,class:"today-overlay",style:He({width:m.todayWidth+"%",right:m.todayRight+"%",background:m.todayColor})},null,4)):ne("",!0)])])],2),i("div",e6,[i("strong",null,E(f(m.actualHours))+"h",1),i("span",t6,"/ "+E(f(m.targetHours))+"h",1),_.showDelta&&m.targetHours>0?(h(),y("span",{key:0,class:ke(["delta",m.deltaHours>=0?"pos":"neg"])}," Δ "+E(T(m.deltaHours))+"h ",3)):ne("",!0),m.todayHours>0?(h(),y("span",a6,E(m.todayText),1)):ne("",!0),m.plannedHours>0?(h(),y("span",o6," Planned "+E(f(m.plannedHours))+"h ",1)):ne("",!0),_.config.ui.showNeedPerDay&&m.targetHours>0?(h(),y("span",r6," Need "+E(f(m.needPerDay))+"h/day · "+E(m.daysLeft)+" days left ",1)):ne("",!0)]),m.calendarCount>0?(h(),y("div",n6,[i("span",s6,E(m.calendarCount)+" "+E(m.calendarLabel),1)])):ne("",!0)]))),128))])):ne("",!0)],6))}}),[["__scopeId","data-v-6aab0d1d"]])},Symbol.toStringTag,{value:"Module"})),l6={key:0,class:"time-summary-firstline"},d6={key:1,class:"time-summary-daily"},c6={key:0,class:"time-summary-hero"},u6={class:"time-summary-hero__value"},g6={key:0,class:"time-summary-hero__planned"},p6={class:"time-summary-hero__side"},f6={key:0},b6=["onClick"],v6={class:"time-summary-tab-panel"},h6={key:0,class:"time-summary-kpis"},m6={class:"time-summary-kpi time-summary-kpi--compare"},y6={key:0},w6={class:"time-summary-kpi time-summary-kpi--compare"},k6={class:"time-summary-kpi"},x6={class:"time-summary-kpi"},_6={class:"time-summary-kpi"},C6={class:"time-summary-kpi"},S6={key:1,class:"time-summary-lanes"},T6={class:"time-summary-section-head"},$6={class:"name"},M6={class:"value"},A6={key:0,class:"time-summary-more"},D6={key:2,class:"time-summary-lanes"},L6={class:"time-summary-section-head"},E6={class:"name"},N6={key:0,class:"unassigned-hint",title:"Hours from calendars not assigned to a category. Open Settings → Categories to assign them."},I6={class:"value"},O6={key:0,class:"time-summary-more"},B6={key:2,class:"time-summary-week"},H6=["title"],F6={key:2,class:"time-summary-history"},P6={class:"time-summary-history__header"},W6={class:"time-summary-history__mode"},z6={key:0,class:"time-summary-history__timeline"},R6={class:"history-timeline-entry__header"},j6={class:"history-timeline-entry__title"},V6={key:0,class:"history-timeline-entry__range"},U6={key:1,class:"history-timeline-entry__delta"},G6={class:"history-timeline-entry__metrics"},K6={key:0,class:"history-timeline-cell"},q6={class:"history-timeline-cell__value"},J6={key:1,class:"history-timeline-cell"},Z6={class:"history-timeline-cell__value"},Y6={key:2,class:"history-timeline-cell"},X6={class:"history-timeline-cell__value"},Q6={key:3,class:"history-timeline-cell"},e8={class:"history-timeline-cell__value"},t8={key:4,class:"history-timeline-cell"},a8={class:"history-timeline-cell__value"},o8={key:1,class:"time-summary-history__accordion"},r8=["onClick"],n8={class:"history-accordion-entry__title"},s8={key:0,class:"history-accordion-entry__range"},i8={key:1,class:"history-accordion-entry__summary"},l8={key:2,class:"history-accordion-entry__delta"},d8={class:"history-accordion-entry__caret"},c8={key:0,class:"history-accordion-entry__body"},u8={class:"history-accordion-group__title"},g8={class:"history-accordion-group__metrics"},p8={class:"history-accordion-group__metric-label"},f8={class:"history-accordion-group__metric-value"},b8={key:3,class:"time-summary-history time-summary-history--empty"},v8={class:"time-summary-history__empty"},h8={class:"time-summary-history__empty-title"},m8={class:"time-summary-history__empty-copy"},y8=Object.freeze(Object.defineProperty({__proto__:null,default:gt(Ve({__name:"TimeSummaryCard",props:{summary:{},activitySummary:{},mode:{},config:{},todayGroups:{},calendarTodayItems:{},categoryTodayItems:{},weekDays:{},allowedViews:{},defaultView:{},showWeekMiniChart:{type:Boolean,default:!0},showDailyKpis:{type:Boolean,default:!0},showEmptyLanes:{type:Boolean,default:!0},maxLanes:{default:4},showActivityNote:{type:Boolean,default:!0},showRangeInTitle:{type:Boolean,default:!0},title:{},cardBg:{},rangeMode:{},rangeStart:{},rangeEnd:{},offset:{},lookbackWeeks:{},showHeader:{type:Boolean,default:!0},showToday:{type:Boolean,default:!0},showActivity:{type:Boolean,default:!0},history:{},showHistoryCoreMetrics:{type:Boolean,default:!0},historyView:{},showActivityDetails:{type:Boolean,default:!0},showOverview:{type:Boolean,default:!0},showLookback:{type:Boolean,default:!1},showDelta:{type:Boolean,default:!0},displayMode:{}},setup(e){const t={showTotal:!0,showAverage:!0,showMedian:!0,showBusiest:!0,showWorkday:!0,showWeekend:!0,showWeekendShare:!0,showCalendarSummary:!0,showTopCategory:!0,showBalance:!0},a=e,o=x(()=>Object.assign({},t,a.config??{})),r=x(()=>{const Q=String(a.displayMode??"");return Q==="calendar_goals"||Q==="category_and_calendar_goals"?Q:"single_goal"}),n=x(()=>a.mode==="active"?"active days":"all days"),s=x(()=>(a.todayGroups||[]).filter(Q=>Number(Q.todayHours)>0).map(Q=>({...Q,todayHours:Number(Q.todayHours)||0,color:Q.color||"var(--brand)"}))),l=x(()=>{var ie;if(s.value.length)return s.value.reduce((Ce,Ze)=>Ce+Ze.todayHours,0);if(Number.isFinite(a.summary.todayActualHours))return a.summary.todayActualHours;const Q=(ie=a.summary)==null?void 0:ie.todayHours;return typeof Q=="number"&&Number.isFinite(Q)?Q:null}),d=x(()=>{var ie;const Q=Number(((ie=a.summary)==null?void 0:ie.todayPlannedHours)??0);return Number.isFinite(Q)?Math.max(0,Q):0}),p=x(()=>a.title||"Time Summary");x(()=>r.value==="single_goal"?"":`${a.summary.activeCalendars} calendars`),x(()=>r.value==="category_and_calendar_goals"?"Top category":"Top focus");const u=x(()=>r.value==="calendar_goals"?"Calendars":r.value==="category_and_calendar_goals"?"Categories & calendars":"Focus"),v=x(()=>{var Ce;const Q=p.value,ie=((Ce=a.summary)==null?void 0:Ce.rangeLabel)||"";return a.showRangeInTitle!==!1&&ie?`${Q} · ${ie}`:Q}),b=x(()=>({background:a.cardBg||void 0})),c=x(()=>a.showHeader),f=x(()=>a.showToday);x(()=>a.showActivity);const g=x(()=>a.showHistoryCoreMetrics),T=x(()=>{const Q=String(a.historyView??"").toLowerCase();return Q==="timeline"||Q==="list"?"timeline":"accordion"}),S=x(()=>T.value==="accordion"?"Accordion":"Timeline"),$=x(()=>a.showActivityDetails),C=x(()=>a.showOverview!==!1),H=x(()=>a.showLookback!==!1),O=x(()=>a.showDelta!==!1),I=x(()=>a.showWeekMiniChart!==!1),_=x(()=>a.showDailyKpis!==!1),k=x(()=>a.showEmptyLanes!==!1);x(()=>a.showActivityNote!==!1);const m=x(()=>{const Q=Number(a.maxLanes??4);return Number.isFinite(Q)?Math.max(1,Math.min(12,Math.trunc(Q))):4}),w=x(()=>{const ie=(Array.isArray(a.allowedViews)?a.allowedViews:[]).filter(Ce=>Ce==="daily"||Ce==="calendars"||Ce==="categories");return ie.length?ie:r.value==="category_and_calendar_goals"?["daily","calendars","categories"]:r.value==="calendar_goals"?["daily","calendars"]:["daily"]}),D=oe("daily"),R=oe(!1),L=x(()=>{const Q=a.defaultView;return Q&&w.value.includes(Q)?Q:r.value==="category_and_calendar_goals"&&w.value.includes("categories")?"categories":r.value==="calendar_goals"&&w.value.includes("calendars")?"calendars":"daily"});Oe([w,L],([Q,ie])=>{if(!R.value){D.value=ie,R.value=!0;return}Q.includes(D.value)||(D.value=ie)},{immediate:!0});const Z=x(()=>w.value.length>1),K=x(()=>Array.isArray(a.weekDays)?a.weekDays:[]),Y=x(()=>K.value.find(Q=>Q.isToday)??null),le=x(()=>{var ie,Ce;const Q=Number(((ie=Y.value)==null?void 0:ie.events)??NaN);return Number.isFinite(Q)?Math.max(0,Math.trunc(Q)):Math.max(0,Math.trunc(Number(((Ce=ve.value)==null?void 0:Ce.events)??0)))}),J=x(()=>le.value>0&&l.value!=null?l.value/le.value:l.value!=null?0:a.summary.avgEvent),de=x(()=>Math.max(0,...K.value.map(Q=>Number(Q.hours)||0))),B=x(()=>{var ie;const Q=(ie=a.summary.delta)==null?void 0:ie.avgPerDay;return Q==null||!Number.isFinite(Q)||Math.abs(Q)<.005?"":`${Q>0?"+":"−"}${Be(Math.abs(Q))}h`}),G=x(()=>$e(a.calendarTodayItems??s.value)),A=x(()=>$e(a.categoryTodayItems??s.value)),V=x(()=>Ae(G.value)),he=x(()=>Ae(A.value)),Me=x(()=>V.value.slice(0,m.value)),ae=x(()=>he.value.slice(0,m.value)),U=x(()=>Math.max(0,V.value.length-Me.value.length)),F=x(()=>Math.max(0,he.value.length-ae.value.length)),j=x(()=>{const Q=Number(a.lookbackWeeks??1);return Number.isFinite(Q)?Math.max(1,Math.trunc(Q)):1}),ce=x(()=>j.value<=1),fe=x(()=>String(a.rangeMode).toLowerCase()==="month"?"months":"weeks"),N=x(()=>ce.value?"Lookback data required":"No lookback data available"),P=x(()=>ce.value?`Increase trend lookback above 1 to compare previous ${fe.value} here.`:`No previous ${fe.value} are available for this comparison yet.`),re=x(()=>Number.isFinite(a.summary.offset)?a.summary.offset:a.offset??0),ge=x(()=>re.value-1),ee=x(()=>nt(ge.value));x(()=>re.value===0?"":` (offset ${nt(re.value)})`),x(()=>{if(!o.value.showWeekendShare)return"";const Q=a.summary.weekendShare;return Q==null?"":`${Ie(Q)}%`}),x(()=>{if(!o.value.showTopCategory)return null;const Q=a.summary.topCategory;if(!Q)return null;const ie=Be(Q.actualHours),Ce=Number(Q.percent??0).toFixed(0),Ze=Q.targetHours>0?` (${Ce}% of ${Be(Q.targetHours)} h)`:"";return{text:`${Q.label} — ${ie} h${Ze}`,badge:Q.statusLabel||"",badgeClass:dt(Q.status)}});const be=x(()=>{if(!o.value.showBusiest)return"";const Q=a.summary.busiest;if(!Q||!Q.date)return"";const ie=Number(Q.hours??0);return`Busiest ${Q.date} — ${Be(ie)} h`});x(()=>{const Q=[];return o.value.showAverage&&(Q.push(`${Be(a.summary.avgDay)} h/day (${n.value})`),Q.push(`${Be(a.summary.avgEvent)} h/event`)),o.value.showMedian&&Q.push(`${Be(a.summary.medianDay)} h median/day`),Q.filter(Boolean).join(" · ")});const ve=x(()=>a.activitySummary??null);x(()=>{var Q;return((Q=ve.value)==null?void 0:Q.lastDayOff)||"—"}),x(()=>{var Ce,Ze;const Q=ze(((Ce=ve.value)==null?void 0:Ce.typicalStart)??null),ie=ze(((Ze=ve.value)==null?void 0:Ze.typicalEnd)??null);return Q&&ie?`${Q}–${ie}`:Q?`${Q}→`:ie?`→${ie}`:"—"}),x(()=>{var Ce,Ze;const Q=ze(((Ce=ve.value)==null?void 0:Ce.earliestStart)??null),ie=ze(((Ze=ve.value)==null?void 0:Ze.latestEnd)??null);return!Q&&!ie?"—":`${Q||"—"} / ${ie||"—"}`});const xe=x(()=>{var ie;const Q=(ie=ve.value)==null?void 0:ie.longestSession;return Q==null?"—":`${Number(Q).toFixed(1)} h`}),_e=x(()=>{var ie;return ze(((ie=ve.value)==null?void 0:ie.latestEnd)??null)||"—"}),ue=x(()=>{var ie;const Q=(ie=ve.value)==null?void 0:ie.activeDays;return Q==null||!Number.isFinite(Number(Q))?"—":String(Math.max(0,Math.trunc(Number(Q))))});x(()=>{var ie,Ce,Ze;const Q=[];return be.value&&Q.push(be.value.replace(/^Busiest\s+/,"busiest ")),((ie=ve.value)==null?void 0:ie.activeDays)!=null&&Q.push(`${ve.value.activeDays} active days`),((Ce=ve.value)==null?void 0:Ce.weekendShare)!=null&&Q.push(`weekend ${wt(ve.value.weekendShare)}`),((Ze=ve.value)==null?void 0:Ze.eveningShare)!=null&&Q.push(`evening ${wt(ve.value.eveningShare)}`),Q.join(" · ")}),x(()=>{var Q;return(Q=ve.value)!=null&&Q.delta?rt(ve.value.weekendShare,ve.value.delta.weekendShare):""}),x(()=>{var Q;return(Q=ve.value)!=null&&Q.delta?rt(ve.value.eveningShare,ve.value.delta.eveningShare):""});const Ee=x(()=>{const Q=Array.isArray(a.history)?a.history:[];return Q.map((ie,Ce)=>{var Oa,ua,it,Ht,St,Sa,Ta,ha,Ba,Vt,ga,ea;const Ze=Q[Ce+1],Mt=Ze?Number(ie.totalHours)-Number(Ze.totalHours):null,da=Ze&&Number(Ze.totalHours)!==0?Number(Mt)/Number(Ze.totalHours)*100:null,Rt=[];o.value.showTotal&&Rt.push({label:"Total",value:`${Be(ie.totalHours)} h`}),o.value.showAverage&&(Rt.push({label:`Avg/day (${n.value})`,value:`${Be(ie.avgDay)} h`}),Rt.push({label:"Avg/event",value:`${Be(ie.avgEvent)} h`})),o.value.showMedian&&Rt.push({label:"Median/day",value:`${Be(ie.medianDay)} h`}),o.value.showBalance&&Rt.push({label:"Balance index",value:ie.balanceIndex==null?"—":ie.balanceIndex.toFixed(2)});const jt=[];if(o.value.showWorkday&&jt.push({label:"Workdays",value:`${Be(ie.workdayAvg)} h avg · ${Be(ie.workdayMedian)} h median`}),o.value.showWeekend){const ct=o.value.showWeekendShare&&ie.weekendShare!=null?` (${Ie(ie.weekendShare)}%)`:"";jt.push({label:"Weekend",value:`${Be(ie.weekendAvg)} h avg · ${Be(ie.weekendMedian)} h median${ct}`})}const pt=[];o.value.showTopCategory&&pt.push({label:"Top category",value:Bt(ie.topCategory)}),o.value.showCalendarSummary&&pt.push({label:`${ie.activeCalendars} calendars`,value:ie.calendarSummary||"—"});const Tt=[];o.value.showBusiest&&Tt.push({label:"Busiest",value:Dt(ie.busiest)}),g.value&&(Tt.push({label:"Events",value:String(((Oa=ie.activity)==null?void 0:Oa.events)??0)}),Tt.push({label:"Active days",value:String(((ua=ie.activity)==null?void 0:ua.activeDays)??0)}),Tt.push({label:"Typical",value:mt((it=ie.activity)==null?void 0:it.typicalStart,(Ht=ie.activity)==null?void 0:Ht.typicalEnd)})),$.value&&(Tt.push({label:"Weekend share",value:((St=ie.activity)==null?void 0:St.weekendShare)==null?"—":`${Ie(ie.activity.weekendShare)}%`}),Tt.push({label:"Evening share",value:((Sa=ie.activity)==null?void 0:Sa.eveningShare)==null?"—":`${Ie(ie.activity.eveningShare)}%`}),Tt.push({label:"Earliest/Late",value:Je((Ta=ie.activity)==null?void 0:Ta.earliestStart,(ha=ie.activity)==null?void 0:ha.latestEnd)}),Tt.push({label:"Overlaps",value:String(((Ba=ie.activity)==null?void 0:Ba.overlapEvents)??0)}),Tt.push({label:"Longest",value:Ue((Vt=ie.activity)==null?void 0:Vt.longestSession)}),Tt.push({label:"Last day off",value:((ga=ie.activity)==null?void 0:ga.lastDayOff)||"—"}),Tt.push({label:"Last half day",value:((ea=ie.activity)==null?void 0:ea.lastHalfDayOff)||"—"}));const ca=[{key:"core",label:"Core",metrics:Rt},{key:"pace",label:"Pace",metrics:jt},{key:"category",label:u.value,metrics:pt},{key:"pattern",label:"Pattern",metrics:Tt}].filter(ct=>ct.metrics.length>0);return{offset:ie.offset,label:ie.label||`Offset ${nt(ie.offset)}`,range:ft(ie.rangeStart,ie.rangeEnd),totalHours:`${Be(ie.totalHours)} h`,avgDay:`${Be(ie.avgDay)} h`,balanceIndex:ie.balanceIndex==null?"—":ie.balanceIndex.toFixed(2),weekendShare:ie.weekendShare==null?"—":`${Ie(ie.weekendShare)}%`,topCategoryBrief:ht(ie.topCategory),deltaHours:xt(Mt),deltaPercent:st(da),sections:ca}})}),Se=oe(null);Oe(Ee,Q=>{if(!Q.length){Se.value=null;return}Q.some(ie=>ie.offset===Se.value)||(Se.value=Q[0].offset)},{immediate:!0});function te(Q){return Se.value===Q}function se(Q){Se.value=Se.value===Q?null:Q}function me(Q){return Q==="calendars"?"Calendars":Q==="categories"?"Categories":"Daily"}function $e(Q){return(Array.isArray(Q)?Q:[]).map(ie=>({...ie,id:String((ie==null?void 0:ie.id)??""),label:String((ie==null?void 0:ie.label)??(ie==null?void 0:ie.id)??""),todayHours:Number((ie==null?void 0:ie.todayHours)??0)||0,color:(ie==null?void 0:ie.color)||"var(--brand)"})).filter(ie=>ie.id&&ie.label).sort((ie,Ce)=>Number(Ce.todayHours??0)-Number(ie.todayHours??0))}function Ae(Q){return k.value?Q:Q.filter(ie=>Number(ie.todayHours)>0)}function Pe(Q){const ie=Math.max(0,Number(Q)||0),Ce=de.value;return Ce<=0?8:Math.max(8,Math.min(100,ie/Ce*100))}function Ie(Q){return Number(Q??0).toFixed(1)}function Be(Q){return Number(Q??0).toFixed(2)}function ze(Q){return Q?/^\d{2}:\d{2}$/.test(Q)?Q:fb(Q):""}function dt(Q){switch(Q){case"on_track":return"status-on";case"at_risk":return"status-risk";case"behind":return"status-behind";case"done":return"status-done";default:return"status-none"}}function wt(Q){return Q==null?"0.0%":`${Math.max(0,Math.min(100,Number(Q))).toFixed(1)}%`}function nt(Q){return Q===0?"0":Q>0?`+${Q}`:`${Q}`}function ft(Q,ie){return!Q||!ie?"":Er(Q,ie,{month:"short",day:"numeric"})}function Dt(Q){if(!(Q!=null&&Q.date))return"—";const ie=Number((Q==null?void 0:Q.hours)??0);return`${Ln(Q.date,{month:"short",day:"numeric"})||Q.date} · ${Be(ie)} h`}function Bt(Q){if(!Q)return"—";const ie=Q.targetHours>0?` (${Math.round(Q.percent)}% of ${Be(Q.targetHours)} h)`:"";return`${Q.label} — ${Be(Q.actualHours)} h${ie}`}function ht(Q){return Q?`${Q.label} ${Math.round(Q.percent)}%`:"—"}function xt(Q){return Q==null||!Number.isFinite(Q)?"":`${Q>=0?"+":"−"}${Be(Math.abs(Q))} h`}function st(Q){return Q==null||!Number.isFinite(Q)?"":`${Q>=0?"+":"−"}${Math.abs(Q).toFixed(1)}%`}function mt(Q,ie){const Ce=ze(Q||null),Ze=ze(ie||null);return Ce&&Ze?`${Ce}–${Ze}`:Ce?`${Ce}→`:Ze?`→${Ze}`:"—"}function Je(Q,ie){const Ce=ze(Q||null),Ze=ze(ie||null);return!Ce&&!Ze?"—":`${Ce||"—"} / ${Ze||"—"}`}function Ue(Q){return Q==null?"—":`${Number(Q).toFixed(1)} h`}function rt(Q,ie){if(ie==null||Q==null)return"";const Ce=Q-ie;return`Δ vs. offset ${ee.value} → ${wt(Ce)}`}return(Q,ie)=>(h(),y("div",{class:"card time-summary compact",style:He(b.value)},[c.value?(h(),y("div",l6,[i("span",null,E(v.value),1)])):ne("",!0),C.value?(h(),y("div",d6,[f.value&&l.value!==null?(h(),y("div",c6,[i("div",null,[ie[1]||(ie[1]=i("div",{class:"time-summary-hero__label"},"Today",-1)),i("div",u6,[Ge(E(Ie(l.value)),1),ie[0]||(ie[0]=i("span",null,"h",-1))]),d.value>0?(h(),y("div",g6,E(Ie(d.value))+" h planned later",1)):ne("",!0)]),i("div",p6,[i("strong",null,E(le.value),1),ie[2]||(ie[2]=i("span",null,"events",-1)),le.value>0&&xe.value!=="—"?(h(),y("span",f6,E(xe.value)+" longest",1)):ne("",!0)])])):ne("",!0),Z.value?(h(),y("div",{key:1,class:ke(["time-summary-tabs",`time-summary-tabs--${w.value.length}`])},[(h(!0),y(ye,null,Ne(w.value,Ce=>(h(),y("button",{key:Ce,type:"button",class:ke({active:D.value===Ce}),onClick:Ze=>D.value=Ce},E(me(Ce)),11,b6))),128))],2)):ne("",!0),i("div",v6,[D.value==="daily"&&_.value?(h(),y("div",h6,[i("div",m6,[i("strong",null,E(Be(Q.summary.avgDay))+" h",1),ie[3]||(ie[3]=i("span",null,"avg/day",-1)),B.value?(h(),y("em",y6,E(B.value),1)):ne("",!0)]),i("div",w6,[i("strong",null,E(Be(Q.summary.medianDay))+" h",1),ie[4]||(ie[4]=i("span",null,"median/day",-1))]),i("div",k6,[i("strong",null,E(Be(J.value))+" h",1),ie[5]||(ie[5]=i("span",null,"avg/event",-1))]),i("div",x6,[i("strong",null,E(_e.value),1),ie[6]||(ie[6]=i("span",null,"latest end",-1))]),i("div",_6,[i("strong",null,E(ue.value),1),ie[7]||(ie[7]=i("span",null,"active days",-1))]),i("div",C6,[i("strong",null,E(xe.value),1),ie[8]||(ie[8]=i("span",null,"longest",-1))])])):D.value==="calendars"?(h(),y("div",S6,[i("div",T6,[ie[9]||(ie[9]=i("strong",null,"Today by calendar",-1)),i("span",null,E(Me.value.length)+" calendar"+E(Me.value.length===1?"":"s"),1)]),(h(!0),y(ye,null,Ne(Me.value,Ce=>(h(),y("div",{class:"time-summary-lane",key:Ce.id,style:He({"--lane-color":Ce.color||"var(--brand)"})},[i("span",{class:"dot",style:He({background:Ce.color||"var(--brand)"})},null,4),i("span",$6,E(Ce.label),1),i("span",M6,E(Ie(Ce.todayHours))+" h",1)],4))),128)),U.value>0?(h(),y("div",A6,"+ "+E(U.value)+" more",1)):ne("",!0)])):D.value==="categories"?(h(),y("div",D6,[i("div",L6,[ie[10]||(ie[10]=i("strong",null,"Today by category",-1)),i("span",null,E(ae.value.length)+" lane"+E(ae.value.length===1?"":"s"),1)]),(h(!0),y(ye,null,Ne(ae.value,Ce=>(h(),y("div",{class:"time-summary-lane",key:Ce.id,style:He({"--lane-color":Ce.color||"var(--brand)"})},[i("span",{class:"dot",style:He({background:Ce.color||"var(--brand)"})},null,4),i("span",E6,[Ge(E(Ce.label)+" ",1),Ce.isUnassigned?(h(),y("span",N6,"ⓘ")):ne("",!0)]),i("span",I6,E(Ie(Ce.todayHours))+" h",1)],4))),128)),F.value>0?(h(),y("div",O6,"+ "+E(F.value)+" more",1)):ne("",!0)])):ne("",!0)]),I.value&&K.value.length?(h(),y("div",B6,[(h(!0),y(ye,null,Ne(K.value,Ce=>(h(),y("div",{key:Ce.date,class:ke(["time-summary-week__day",{active:Ce.isToday}]),title:`${Ce.label}: ${Ie(Ce.hours)} h`},[i("i",{class:"time-summary-week__bar",style:He({height:`${Pe(Ce.hours)}%`})},[i("strong",null,E(Ie(Ce.hours))+"h",1)],4),i("span",null,E(Ce.label),1)],10,H6))),128))])):ne("",!0)])):ne("",!0),H.value&&Ee.value.length?(h(),y("div",F6,[i("div",P6,[ie[11]||(ie[11]=i("div",{class:"time-summary-history__title"},"Lookback",-1)),i("div",W6,E(S.value),1)]),T.value==="timeline"?(h(),y("div",z6,[(h(!0),y(ye,null,Ne(Ee.value,Ce=>(h(),y("div",{class:"history-timeline-entry",key:Ce.offset},[i("div",R6,[i("span",j6,E(Ce.label),1),Ce.range?(h(),y("span",V6,E(Ce.range),1)):ne("",!0),O.value&&Ce.deltaHours?(h(),y("span",U6,[Ge(E(Ce.deltaHours),1),Ce.deltaPercent?(h(),y(ye,{key:0},[Ge(" · "+E(Ce.deltaPercent),1)],64)):ne("",!0)])):ne("",!0)]),i("div",G6,[o.value.showTotal?(h(),y("div",K6,[ie[12]||(ie[12]=i("span",{class:"history-timeline-cell__label"},"Total",-1)),i("span",q6,E(Ce.totalHours),1)])):ne("",!0),o.value.showAverage?(h(),y("div",J6,[ie[13]||(ie[13]=i("span",{class:"history-timeline-cell__label"},"Avg/day",-1)),i("span",Z6,E(Ce.avgDay),1)])):ne("",!0),o.value.showBalance?(h(),y("div",Y6,[ie[14]||(ie[14]=i("span",{class:"history-timeline-cell__label"},"Balance",-1)),i("span",X6,E(Ce.balanceIndex),1)])):ne("",!0),o.value.showWeekendShare?(h(),y("div",Q6,[ie[15]||(ie[15]=i("span",{class:"history-timeline-cell__label"},"Weekend %",-1)),i("span",e8,E(Ce.weekendShare),1)])):ne("",!0),o.value.showTopCategory?(h(),y("div",t8,[ie[16]||(ie[16]=i("span",{class:"history-timeline-cell__label"},"Top category",-1)),i("span",a8,E(Ce.topCategoryBrief),1)])):ne("",!0)])]))),128))])):(h(),y("div",o8,[(h(!0),y(ye,null,Ne(Ee.value,Ce=>(h(),y("div",{class:"history-accordion-entry",key:Ce.offset},[i("button",{class:"history-accordion-entry__header",type:"button",onClick:Ze=>se(Ce.offset)},[i("span",n8,E(Ce.label),1),Ce.range?(h(),y("span",s8,E(Ce.range),1)):ne("",!0),o.value.showTotal?(h(),y("span",i8,E(Ce.totalHours),1)):ne("",!0),O.value&&Ce.deltaHours?(h(),y("span",l8,[Ge(E(Ce.deltaHours),1),Ce.deltaPercent?(h(),y(ye,{key:0},[Ge(" · "+E(Ce.deltaPercent),1)],64)):ne("",!0)])):ne("",!0),i("span",d8,E(te(Ce.offset)?"−":"+"),1)],8,r8),te(Ce.offset)?(h(),y("div",c8,[(h(!0),y(ye,null,Ne(Ce.sections,Ze=>(h(),y("div",{class:"history-accordion-group",key:Ze.key},[i("div",u8,E(Ze.label),1),i("div",g8,[(h(!0),y(ye,null,Ne(Ze.metrics,Mt=>(h(),y("div",{class:"history-accordion-group__metric",key:Mt.label},[i("span",p8,E(Mt.label),1),i("span",f8,E(Mt.value),1)]))),128))])]))),128))])):ne("",!0)]))),128))]))])):H.value?(h(),y("div",b8,[ie[17]||(ie[17]=i("div",{class:"time-summary-history__header"},[i("div",{class:"time-summary-history__title"},"Lookback")],-1)),i("div",v8,[i("div",h8,E(N.value),1),i("div",m8,E(P.value),1)])])):ne("",!0)],4))}}),[["__scopeId","data-v-d1e57a51"]])},Symbol.toStringTag,{value:"Module"}))})();
|