opsdash-app/opsdash/js/assets/main-NYoJnb5T.js
blade34242 69696a4a00
All checks were successful
Nextcloud Server Tests / version-consistency (push) Successful in 48s
Nextcloud Server Tests / matrix-config (push) Successful in 34s
Nextcloud Server Tests / Nextcloud stable31 / PHP 8.2 (stable31, 8.2) (push) Successful in 20m34s
Nextcloud Server Tests / Nextcloud stable31 / PHP 8.3 (stable31, 8.3) (push) Successful in 19m33s
Nextcloud Server Tests / Nextcloud stable32 / PHP 8.2 (stable32, 8.2) (push) Successful in 20m6s
Nextcloud Server Tests / Nextcloud stable32 / PHP 8.3 (stable32, 8.3) (push) Successful in 20m52s
Nextcloud Server Tests / Nextcloud stable33 / PHP 8.2 (stable33, 8.2) (push) Successful in 19m40s
Nextcloud Server Tests / Nextcloud stable33 / PHP 8.3 (stable33, 8.3) (push) Successful in 20m33s
Nextcloud Server Tests / Nextcloud stable34 / PHP 8.2 (stable34, 8.2) (push) Successful in 19m43s
Nextcloud Server Tests / Nextcloud stable34 / PHP 8.3 (stable34, 8.3) (push) Successful in 18m46s
Refine dashboard edit and lookback context
2026-07-20 13:19:34 +07:00

26 lines
757 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

(function(){"use strict";var cl=document.createElement("style");cl.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(cl);/**
* @vue/shared v3.5.20
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**//*! #__NO_SIDE_EFFECTS__ */function bs(e){const t=Object.create(null);for(const a of e.split(","))t[a]=1;return a=>a in t}const vt={},Oo=[],Na=()=>{},ul=()=>!1,Gr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),vs=e=>e.startsWith("onUpdate:"),Ft=Object.assign,hs=(e,t)=>{const a=e.indexOf(t);a>-1&&e.splice(a,1)},pg=Object.prototype.hasOwnProperty,lt=(e,t)=>pg.call(e,t),je=Array.isArray,Bo=e=>sr(e)==="[object Map]",Kr=e=>sr(e)==="[object Set]",gl=e=>sr(e)==="[object Date]",qe=e=>typeof e=="function",_t=e=>typeof e=="string",Ta=e=>typeof e=="symbol",ht=e=>e!==null&&typeof e=="object",pl=e=>(ht(e)||qe(e))&&qe(e.then)&&qe(e.catch),fl=Object.prototype.toString,sr=e=>fl.call(e),fg=e=>sr(e).slice(8,-1),bl=e=>sr(e)==="[object Object]",ms=e=>_t(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,ir=bs(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),qr=e=>{const t=Object.create(null);return a=>t[a]||(t[a]=e(a))},bg=/-(\w)/g,xa=qr(e=>e.replace(bg,(t,a)=>a?a.toUpperCase():"")),vg=/\B([A-Z])/g,so=qr(e=>e.replace(vg,"-$1").toLowerCase()),Jr=qr(e=>e.charAt(0).toUpperCase()+e.slice(1)),ys=qr(e=>e?`on${Jr(e)}`:""),io=(e,t)=>!Object.is(e,t),Zr=(e,...t)=>{for(let a=0;a<e.length;a++)e[a](...t)},vl=(e,t,a,o=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:o,value:a})},Yr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},hg=e=>{const t=_t(e)?Number(e):NaN;return isNaN(t)?e:t};let hl;const Xr=()=>hl||(hl=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)?kg(o):He(o);if(r)for(const n in r)t[n]=r[n]}return t}else if(_t(e)||ht(e))return e}const mg=/;(?![^(]*\))/g,yg=/:([^]+)/,wg=/\/\*[^]*?\*\//g;function kg(e){const t={};return e.replace(wg,"").split(mg).forEach(a=>{if(a){const o=a.split(yg);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(ht(e))for(const a in e)e[a]&&(t+=a+" ");return t.trim()}const xg=bs("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function ml(e){return!!e||e===""}function _g(e,t){if(e.length!==t.length)return!1;let a=!0;for(let o=0;a&&o<e.length;o++)a=Qr(e[o],t[o]);return a}function Qr(e,t){if(e===t)return!0;let a=gl(e),o=gl(t);if(a||o)return a&&o?e.getTime()===t.getTime():!1;if(a=Ta(e),o=Ta(t),a||o)return e===t;if(a=je(e),o=je(t),a||o)return a&&o?_g(e,t):!1;if(a=ht(e),o=ht(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||!Qr(e[s],t[s]))return!1}}return String(e)===String(t)}function Cg(e,t){return e.findIndex(a=>Qr(a,t))}const yl=e=>!!(e&&e.__v_isRef===!0),N=e=>_t(e)?e:e==null?"":je(e)||ht(e)&&(e.toString===fl||!qe(e.toString))?yl(e)?N(e.value):JSON.stringify(e,wl,2):String(e),wl=(e,t)=>yl(t)?wl(e,t.value):Bo(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((a,[o,r],n)=>(a[ws(o,n)+" =>"]=r,a),{})}:Kr(t)?{[`Set(${t.size})`]:[...t.values()].map(a=>ws(a))}:Ta(t)?ws(t):ht(t)&&!je(t)&&!bl(t)?String(t):t,ws=(e,t="")=>{var a;return Ta(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 ra;class Sg{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=ra,!t&&ra&&(this.index=(ra.scopes||(ra.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=ra;try{return ra=this,t()}finally{ra=a}}}on(){++this._on===1&&(this.prevScope=ra,ra=this)}off(){this._on>0&&--this._on===0&&(ra=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 $g(){return ra}let mt;const ks=new WeakSet;class kl{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,ra&&ra.active&&ra.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,ks.has(this)&&(ks.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||_l(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Ml(this),Cl(this);const t=mt,a=Ma;mt=this,Ma=!0;try{return this.fn()}finally{Sl(this),mt=t,Ma=a,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)Ss(t);this.deps=this.depsTail=void 0,Ml(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?ks.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){Cs(this)&&this.run()}get dirty(){return Cs(this)}}let xl=0,lr,dr;function _l(e,t=!1){if(e.flags|=8,t){e.next=dr,dr=e;return}e.next=lr,lr=e}function xs(){xl++}function _s(){if(--xl>0)return;if(dr){let t=dr;for(dr=void 0;t;){const a=t.next;t.next=void 0,t.flags&=-9,t=a}}let e;for(;lr;){let t=lr;for(lr=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 Cl(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function Sl(e){let t,a=e.depsTail,o=a;for(;o;){const r=o.prevDep;o.version===-1?(o===a&&(a=r),Ss(o),Tg(o)):t=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0,o=r}e.deps=t,e.depsTail=a}function Cs(e){for(let t=e.deps;t;t=t.nextDep)if(t.dep.version!==t.version||t.dep.computed&&($l(t.dep.computed)||t.dep.version!==t.version))return!0;return!!e._dirty}function $l(e){if(e.flags&4&&!(e.flags&16)||(e.flags&=-17,e.globalVersion===cr)||(e.globalVersion=cr,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!Cs(e))))return;e.flags|=2;const t=e.dep,a=mt,o=Ma;mt=e,Ma=!0;try{Cl(e);const r=e.fn(e._value);(t.version===0||io(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{mt=a,Ma=o,Sl(e),e.flags&=-3}}function Ss(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)Ss(n,!0)}!t&&!--a.sc&&a.map&&a.map.delete(a.key)}function Tg(e){const{prevDep:t,nextDep:a}=e;t&&(t.nextDep=a,e.prevDep=void 0),a&&(a.prevDep=t,e.nextDep=void 0)}let Ma=!0;const Tl=[];function Ia(){Tl.push(Ma),Ma=!1}function Oa(){const e=Tl.pop();Ma=e===void 0?!0:e}function Ml(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const a=mt;mt=void 0;try{t()}finally{mt=a}}}let cr=0;class Mg{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(!mt||!Ma||mt===this.computed)return;let a=this.activeLink;if(a===void 0||a.sub!==mt)a=this.activeLink=new Mg(mt,this),mt.deps?(a.prevDep=mt.depsTail,mt.depsTail.nextDep=a,mt.depsTail=a):mt.deps=mt.depsTail=a,Al(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=mt.depsTail,a.nextDep=void 0,mt.depsTail.nextDep=a,mt.depsTail=a,mt.deps===a&&(mt.deps=o)}return a}trigger(t){this.version++,cr++,this.notify(t)}notify(t){xs();try{for(let a=this.subs;a;a=a.prevSub)a.sub.notify()&&a.sub.dep.notify()}finally{_s()}}}function Al(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)Al(o)}const a=e.dep.subs;a!==e&&(e.prevSub=a,a&&(a.nextSub=e)),e.dep.subs=e}}const en=new WeakMap,wo=Symbol(""),Ts=Symbol(""),ur=Symbol("");function Jt(e,t,a){if(Ma&&mt){let o=en.get(e);o||en.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 Ua(e,t,a,o,r,n){const s=en.get(e);if(!s){cr++;return}const l=d=>{d&&d.trigger()};if(xs(),t==="clear")s.forEach(l);else{const d=je(e),g=d&&ms(a);if(d&&a==="length"){const u=Number(o);s.forEach((v,f)=>{(f==="length"||f===ur||!Ta(f)&&f>=u)&&l(v)})}else switch((a!==void 0||s.has(void 0))&&l(s.get(a)),g&&l(s.get(ur)),t){case"add":d?g&&l(s.get("length")):(l(s.get(wo)),Bo(e)&&l(s.get(Ts)));break;case"delete":d||(l(s.get(wo)),Bo(e)&&l(s.get(Ts)));break;case"set":Bo(e)&&l(s.get(wo));break}}_s()}function Ag(e,t){const a=en.get(e);return a&&a.get(t)}function Ho(e){const t=ot(e);return t===e?t:(Jt(t,"iterate",ur),_a(e)?t:t.map(Rt))}function tn(e){return Jt(e=ot(e),"iterate",ur),e}const Dg={__proto__:null,[Symbol.iterator](){return Ms(this,Symbol.iterator,Rt)},concat(...e){return Ho(this).concat(...e.map(t=>je(t)?Ho(t):t))},entries(){return Ms(this,"entries",e=>(e[1]=Rt(e[1]),e))},every(e,t){return Ga(this,"every",e,t,void 0,arguments)},filter(e,t){return Ga(this,"filter",e,t,a=>a.map(Rt),arguments)},find(e,t){return Ga(this,"find",e,t,Rt,arguments)},findIndex(e,t){return Ga(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return Ga(this,"findLast",e,t,Rt,arguments)},findLastIndex(e,t){return Ga(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return Ga(this,"forEach",e,t,void 0,arguments)},includes(...e){return As(this,"includes",e)},indexOf(...e){return As(this,"indexOf",e)},join(e){return Ho(this).join(e)},lastIndexOf(...e){return As(this,"lastIndexOf",e)},map(e,t){return Ga(this,"map",e,t,void 0,arguments)},pop(){return gr(this,"pop")},push(...e){return gr(this,"push",e)},reduce(e,...t){return Dl(this,"reduce",e,t)},reduceRight(e,...t){return Dl(this,"reduceRight",e,t)},shift(){return gr(this,"shift")},some(e,t){return Ga(this,"some",e,t,void 0,arguments)},splice(...e){return gr(this,"splice",e)},toReversed(){return Ho(this).toReversed()},toSorted(e){return Ho(this).toSorted(e)},toSpliced(...e){return Ho(this).toSpliced(...e)},unshift(...e){return gr(this,"unshift",e)},values(){return Ms(this,"values",Rt)}};function Ms(e,t,a){const o=tn(e),r=o[t]();return o!==e&&!_a(e)&&(r._next=r.next,r.next=()=>{const n=r._next();return n.value&&(n.value=a(n.value)),n}),r}const Lg=Array.prototype;function Ga(e,t,a,o,r,n){const s=tn(e),l=s!==e&&!_a(e),d=s[t];if(d!==Lg[t]){const v=d.apply(e,n);return l?Rt(v):v}let g=a;s!==e&&(l?g=function(v,f){return a.call(this,Rt(v),f,e)}:a.length>2&&(g=function(v,f){return a.call(this,v,f,e)}));const u=d.call(s,g,o);return l&&r?r(u):u}function Dl(e,t,a,o){const r=tn(e);let n=a;return r!==e&&(_a(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,Rt(l),d,e)}),r[t](n,...o)}function As(e,t,a){const o=ot(e);Jt(o,"iterate",ur);const r=o[t](...a);return(r===-1||r===!1)&&Ls(a[0])?(a[0]=ot(a[0]),o[t](...a)):r}function gr(e,t,a=[]){Ia(),xs();const o=ot(e)[t].apply(e,a);return _s(),Oa(),o}const Eg=bs("__proto__,__v_isRef,__isVue"),Ll=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(Ta));function Ng(e){Ta(e)||(e=String(e));const t=ot(this);return Jt(t,"has",e),t.hasOwnProperty(e)}class El{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?Fl:Hl:n?Bl:Ol).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const s=je(t);if(!r){let d;if(s&&(d=Dg[a]))return d;if(a==="hasOwnProperty")return Ng}const l=Reflect.get(t,a,Et(t)?t:o);return(Ta(a)?Ll.has(a):Eg(a))||(r||Jt(t,"get",a),n)?l:Et(l)?s&&ms(a)?l:l.value:ht(l)?r?Pl(l):pr(l):l}}class Nl extends El{constructor(t=!1){super(!1,t)}set(t,a,o,r){let n=t[a];if(!this._isShallow){const d=lo(n);if(!_a(o)&&!lo(o)&&(n=ot(n),o=ot(o)),!je(t)&&Et(n)&&!Et(o))return d||(n.value=o),!0}const s=je(t)&&ms(a)?Number(a)<t.length:lt(t,a),l=Reflect.set(t,a,o,Et(t)?t:r);return t===ot(r)&&(s?io(o,n)&&Ua(t,"set",a,o):Ua(t,"add",a,o)),l}deleteProperty(t,a){const o=lt(t,a);t[a];const r=Reflect.deleteProperty(t,a);return r&&o&&Ua(t,"delete",a,void 0),r}has(t,a){const o=Reflect.has(t,a);return(!Ta(a)||!Ll.has(a))&&Jt(t,"has",a),o}ownKeys(t){return Jt(t,"iterate",je(t)?"length":wo),Reflect.ownKeys(t)}}class Il extends El{constructor(t=!1){super(!0,t)}set(t,a){return!0}deleteProperty(t,a){return!0}}const Ig=new Nl,Og=new Il,Bg=new Nl(!0),Hg=new Il(!0),Ds=e=>e,an=e=>Reflect.getPrototypeOf(e);function Fg(e,t,a){return function(...o){const r=this.__v_raw,n=ot(r),s=Bo(n),l=e==="entries"||e===Symbol.iterator&&s,d=e==="keys"&&s,g=r[e](...o),u=a?Ds:t?sn:Rt;return!t&&Jt(n,"iterate",d?Ts:wo),{next(){const{value:v,done:f}=g.next();return f?{value:v,done:f}:{value:l?[u(v[0]),u(v[1])]:u(v),done:f}},[Symbol.iterator](){return this}}}}function on(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Pg(e,t){const a={get(r){const n=this.__v_raw,s=ot(n),l=ot(r);e||(io(r,l)&&Jt(s,"get",r),Jt(s,"get",l));const{has:d}=an(s),g=t?Ds:e?sn:Rt;if(d.call(s,r))return g(n.get(r));if(d.call(s,l))return g(n.get(l));n!==s&&n.get(r)},get size(){const r=this.__v_raw;return!e&&Jt(ot(r),"iterate",wo),r.size},has(r){const n=this.__v_raw,s=ot(n),l=ot(r);return e||(io(r,l)&&Jt(s,"has",r),Jt(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=ot(l),g=t?Ds:e?sn:Rt;return!e&&Jt(d,"iterate",wo),l.forEach((u,v)=>r.call(n,g(u),g(v),s))}};return Ft(a,e?{add:on("add"),set:on("set"),delete:on("delete"),clear:on("clear")}:{add(r){!t&&!_a(r)&&!lo(r)&&(r=ot(r));const n=ot(this);return an(n).has.call(n,r)||(n.add(r),Ua(n,"add",r,r)),this},set(r,n){!t&&!_a(n)&&!lo(n)&&(n=ot(n));const s=ot(this),{has:l,get:d}=an(s);let g=l.call(s,r);g||(r=ot(r),g=l.call(s,r));const u=d.call(s,r);return s.set(r,n),g?io(n,u)&&Ua(s,"set",r,n):Ua(s,"add",r,n),this},delete(r){const n=ot(this),{has:s,get:l}=an(n);let d=s.call(n,r);d||(r=ot(r),d=s.call(n,r)),l&&l.call(n,r);const g=n.delete(r);return d&&Ua(n,"delete",r,void 0),g},clear(){const r=ot(this),n=r.size!==0,s=r.clear();return n&&Ua(r,"clear",void 0,void 0),s}}),["keys","values","entries",Symbol.iterator].forEach(r=>{a[r]=Fg(r,e,t)}),a}function rn(e,t){const a=Pg(e,t);return(o,r,n)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?o:Reflect.get(lt(a,r)&&r in o?a:o,r,n)}const Wg={get:rn(!1,!1)},zg={get:rn(!1,!0)},Rg={get:rn(!0,!1)},jg={get:rn(!0,!0)},Ol=new WeakMap,Bl=new WeakMap,Hl=new WeakMap,Fl=new WeakMap;function Vg(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function Ug(e){return e.__v_skip||!Object.isExtensible(e)?0:Vg(fg(e))}function pr(e){return lo(e)?e:nn(e,!1,Ig,Wg,Ol)}function Gg(e){return nn(e,!1,Bg,zg,Bl)}function Pl(e){return nn(e,!0,Og,Rg,Hl)}function C7(e){return nn(e,!0,Hg,jg,Fl)}function nn(e,t,a,o,r){if(!ht(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const n=Ug(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 Fo(e){return lo(e)?Fo(e.__v_raw):!!(e&&e.__v_isReactive)}function lo(e){return!!(e&&e.__v_isReadonly)}function _a(e){return!!(e&&e.__v_isShallow)}function Ls(e){return e?!!e.__v_raw:!1}function ot(e){const t=e&&e.__v_raw;return t?ot(t):e}function Kg(e){return!lt(e,"__v_skip")&&Object.isExtensible(e)&&vl(e,"__v_skip",!0),e}const Rt=e=>ht(e)?pr(e):e,sn=e=>ht(e)?Pl(e):e;function Et(e){return e?e.__v_isRef===!0:!1}function oe(e){return qg(e,!1)}function qg(e,t){return Et(e)?e:new Jg(e,t)}class Jg{constructor(t,a){this.dep=new $s,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=a?t:ot(t),this._value=a?t:Rt(t),this.__v_isShallow=a}get value(){return this.dep.track(),this._value}set value(t){const a=this._rawValue,o=this.__v_isShallow||_a(t)||lo(t);t=o?t:ot(t),io(t,a)&&(this._rawValue=t,this._value=o?t:Rt(t),this.dep.trigger())}}function M(e){return Et(e)?e.value:e}const Zg={get:(e,t,a)=>t==="__v_raw"?e:M(Reflect.get(e,t,a)),set:(e,t,a,o)=>{const r=e[t];return Et(r)&&!Et(a)?(r.value=a,!0):Reflect.set(e,t,a,o)}};function Wl(e){return Fo(e)?e:new Proxy(e,Zg)}function Yg(e){const t=je(e)?new Array(e.length):{};for(const a in e)t[a]=Qg(e,a);return t}class Xg{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 Ag(ot(this._object),this._key)}}function Qg(e,t,a){const o=e[t];return Et(o)?o:new Xg(e,t,a)}class ep{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=cr-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!a,this.isSSR=o}notify(){if(this.flags|=16,!(this.flags&8)&&mt!==this)return _l(this,!0),!0}get value(){const t=this.dep.track();return $l(this),t&&(t.version=this.dep.version),this._value}set value(t){this.setter&&this.setter(t)}}function tp(e,t,a=!1){let o,r;return qe(e)?o=e:(o=e.get,r=e.set),new ep(o,r,a)}const ln={},dn=new WeakMap;let ko;function ap(e,t=!1,a=ko){if(a){let o=dn.get(a);o||dn.set(a,o=[]),o.push(e)}}function op(e,t,a=vt){const{immediate:o,deep:r,once:n,scheduler:s,augmentJob:l,call:d}=a,g=P=>r?P:_a(P)||r===!1||r===0?Ka(P,1):Ka(P);let u,v,f,c,b=!1,p=!1;if(Et(e)?(v=()=>e.value,b=_a(e)):Fo(e)?(v=()=>g(e),b=!0):je(e)?(p=!0,b=e.some(P=>Fo(P)||_a(P)),v=()=>e.map(P=>{if(Et(P))return P.value;if(Fo(P))return g(P);if(qe(P))return d?d(P,2):P()})):qe(e)?t?v=d?()=>d(e,2):e:v=()=>{if(f){Ia();try{f()}finally{Oa()}}const P=ko;ko=u;try{return d?d(e,3,[c]):e(c)}finally{ko=P}}:v=Na,t&&r){const P=v,O=r===!0?1/0:r;v=()=>Ka(P(),O)}const $=$g(),S=()=>{u.stop(),$&&$.active&&hs($.effects,u)};if(n&&t){const P=t;t=(...O)=>{P(...O),S()}}let T=p?new Array(e.length).fill(ln):ln;const C=P=>{if(!(!(u.flags&1)||!u.dirty&&!P))if(t){const O=u.run();if(r||b||(p?O.some((I,_)=>io(I,T[_])):io(O,T))){f&&f();const I=ko;ko=u;try{const _=[O,T===ln?void 0:p&&T[0]===ln?[]:T,c];T=O,d?d(t,3,_):t(..._)}finally{ko=I}}}else u.run()};return l&&l(C),u=new kl(v),u.scheduler=s?()=>s(C,!1):C,c=P=>ap(P,!1,u),f=u.onStop=()=>{const P=dn.get(u);if(P){if(d)d(P,4);else for(const O of P)O();dn.delete(u)}},t?o?C(!0):T=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 Ka(e,t=1/0,a){if(t<=0||!ht(e)||e.__v_skip||(a=a||new Set,a.has(e)))return e;if(a.add(e),t--,Et(e))Ka(e.value,t,a);else if(je(e))for(let o=0;o<e.length;o++)Ka(e[o],t,a);else if(Kr(e)||Bo(e))e.forEach(o=>{Ka(o,t,a)});else if(bl(e)){for(const o in e)Ka(e[o],t,a);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&Ka(e[o],t,a)}return e}/**
* @vue/runtime-core v3.5.20
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/const fr=[];let Es=!1;function S7(e,...t){if(Es)return;Es=!0,Ia();const a=fr.length?fr[fr.length-1].component:null,o=a&&a.appContext.config.warnHandler,r=rp();if(o)Po(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 <${jd(a,n.type)}>`).join(`
`),r]);else{const n=[`[Vue warn]: ${e}`,...t];r.length&&n.push(`
`,...np(r)),console.warn(...n)}Oa(),Es=!1}function rp(){let e=fr[fr.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 np(e){const t=[];return e.forEach((a,o)=>{t.push(...o===0?[]:[`
`],...sp(a))}),t}function sp({vnode:e,recurseCount:t}){const a=t>0?`... (${t} recursive calls)`:"",o=e.component?e.component.parent==null:!1,r=` at <${jd(e.component,e.type,o)}`,n=">"+a;return e.props?[r,...ip(e.props),n]:[r+n]}function ip(e){const t=[],a=Object.keys(e);return a.slice(0,3).forEach(o=>{t.push(...zl(o,e[o]))}),a.length>3&&t.push(" ..."),t}function zl(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}`]:Et(t)?(t=zl(e,ot(t.value),!0),a?t:[`${e}=Ref<`,t,">"]):qe(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=ot(t),a?t:[`${e}=`,t])}function Po(e,t,a,o){try{return o?e(...o):e()}catch(r){br(r,t,a)}}function Aa(e,t,a,o){if(qe(e)){const r=Po(e,t,a,o);return r&&pl(r)&&r.catch(n=>{br(n,t,a)}),r}if(je(e)){const r=[];for(let n=0;n<e.length;n++)r.push(Aa(e[n],t,a,o));return r}}function br(e,t,a,o=!0){const r=t?t.vnode:null,{errorHandler:n,throwUnhandledErrorInProduction:s}=t&&t.appContext.config||vt;if(t){let l=t.parent;const d=t.proxy,g=`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,g)===!1)return}l=l.parent}if(n){Ia(),Po(n,null,10,[e,d,g]),Oa();return}}lp(e,a,r,o,s)}function lp(e,t,a,o=!0,r=!1){if(r)throw e;console.error(e)}const Qt=[];let Ba=-1;const Wo=[];let co=null,zo=0;const Rl=Promise.resolve();let cn=null;function Zt(e){const t=cn||Rl;return e?t.then(this?e.bind(this):e):t}function dp(e){let t=Ba+1,a=Qt.length;for(;t<a;){const o=t+a>>>1,r=Qt[o],n=vr(r);n<e||n===e&&r.flags&2?t=o+1:a=o}return t}function Ns(e){if(!(e.flags&1)){const t=vr(e),a=Qt[Qt.length-1];!a||!(e.flags&2)&&t>=vr(a)?Qt.push(e):Qt.splice(dp(t),0,e),e.flags|=1,jl()}}function jl(){cn||(cn=Rl.then(Gl))}function cp(e){je(e)?Wo.push(...e):co&&e.id===-1?co.splice(zo+1,0,e):e.flags&1||(Wo.push(e),e.flags|=1),jl()}function Vl(e,t,a=Ba+1){for(;a<Qt.length;a++){const o=Qt[a];if(o&&o.flags&2){if(e&&o.id!==e.uid)continue;Qt.splice(a,1),a--,o.flags&4&&(o.flags&=-2),o(),o.flags&4||(o.flags&=-2)}}}function Ul(e){if(Wo.length){const t=[...new Set(Wo)].sort((a,o)=>vr(a)-vr(o));if(Wo.length=0,co){co.push(...t);return}for(co=t,zo=0;zo<co.length;zo++){const a=co[zo];a.flags&4&&(a.flags&=-2),a.flags&8||a(),a.flags&=-2}co=null,zo=0}}const vr=e=>e.id==null?e.flags&2?-1:1/0:e.id;function Gl(e){try{for(Ba=0;Ba<Qt.length;Ba++){const t=Qt[Ba];t&&!(t.flags&8)&&(t.flags&4&&(t.flags&=-2),Po(t,t.i,t.i?15:14),t.flags&4||(t.flags&=-2))}}finally{for(;Ba<Qt.length;Ba++){const t=Qt[Ba];t&&(t.flags&=-2)}Ba=-1,Qt.length=0,Ul(),cn=null,(Qt.length||Wo.length)&&Gl()}}let jt=null,Kl=null;function un(e){const t=jt;return jt=e,Kl=e&&e.type.__scopeId||null,t}function kt(e,t=jt,a){if(!t||e._n)return e;const o=(...r)=>{o._d&&Id(-1);const n=un(t);let s;try{s=e(...r)}finally{un(n),o._d&&Id(1)}return s};return o._n=!0,o._c=!0,o._d=!0,o}function uo(e,t){if(jt===null)return e;const a=xn(jt),o=e.dirs||(e.dirs=[]);for(let r=0;r<t.length;r++){let[n,s,l,d=vt]=t[r];n&&(qe(n)&&(n={mounted:n,updated:n}),n.deep&&Ka(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&&(Ia(),Aa(d,a,8,[e.el,l,e,t]),Oa())}}const up=Symbol("_vte"),ql=e=>e.__isTeleport,qa=Symbol("_leaveCb"),gn=Symbol("_enterCb");function gp(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Nt(()=>{e.isMounted=!0}),Tt(()=>{e.isUnmounting=!0}),e}const Ca=[Function,Array],Jl={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:Ca,onEnter:Ca,onAfterEnter:Ca,onEnterCancelled:Ca,onBeforeLeave:Ca,onLeave:Ca,onAfterLeave:Ca,onLeaveCancelled:Ca,onBeforeAppear:Ca,onAppear:Ca,onAfterAppear:Ca,onAppearCancelled:Ca},Zl=e=>{const t=e.subTree;return t.component?Zl(t.component):t},pp={name:"BaseTransition",props:Jl,setup(e,{slots:t}){const a=wn(),o=gp();return()=>{const r=t.default&&ed(t.default(),!0);if(!r||!r.length)return;const n=Yl(r),s=ot(e),{mode:l}=s;if(o.isLeaving)return Os(n);const d=Ql(n);if(!d)return Os(n);let g=Is(d,s,o,a,v=>g=v);d.type!==Yt&&hr(d,g);let u=a.subTree&&Ql(a.subTree);if(u&&u.type!==Yt&&!Co(d,u)&&Zl(a).type!==Yt){let v=Is(u,s,o,a);if(hr(u,v),l==="out-in"&&d.type!==Yt)return o.isLeaving=!0,v.afterLeave=()=>{o.isLeaving=!1,a.job.flags&8||a.update(),delete v.afterLeave,u=void 0},Os(n);l==="in-out"&&d.type!==Yt?v.delayLeave=(f,c,b)=>{const p=Xl(o,u);p[String(u.key)]=u,f[qa]=()=>{c(),f[qa]=void 0,delete g.delayedLeave,u=void 0},g.delayedLeave=()=>{b(),delete g.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return n}}};function Yl(e){let t=e[0];if(e.length>1){for(const a of e)if(a.type!==Yt){t=a;break}}return t}const fp=pp;function Xl(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 Is(e,t,a,o,r){const{appear:n,mode:s,persisted:l=!1,onBeforeEnter:d,onEnter:g,onAfterEnter:u,onEnterCancelled:v,onBeforeLeave:f,onLeave:c,onAfterLeave:b,onLeaveCancelled:p,onBeforeAppear:$,onAppear:S,onAfterAppear:T,onAppearCancelled:C}=t,P=String(e.key),O=Xl(a,e),I=(m,k)=>{m&&Aa(m,o,9,k)},_=(m,k)=>{const A=k[1];I(m,k),je(m)?m.every(R=>R.length<=1)&&A():m.length<=1&&A()},w={mode:s,persisted:l,beforeEnter(m){let k=d;if(!a.isMounted)if(n)k=$||d;else return;m[qa]&&m[qa](!0);const A=O[P];A&&Co(e,A)&&A.el[qa]&&A.el[qa](),I(k,[m])},enter(m){let k=g,A=u,R=v;if(!a.isMounted)if(n)k=S||g,A=T||u,R=C||v;else return;let L=!1;const J=m[gn]=K=>{L||(L=!0,K?I(R,[m]):I(A,[m]),w.delayedLeave&&w.delayedLeave(),m[gn]=void 0)};k?_(k,[m,J]):J()},leave(m,k){const A=String(e.key);if(m[gn]&&m[gn](!0),a.isUnmounting)return k();I(f,[m]);let R=!1;const L=m[qa]=J=>{R||(R=!0,k(),J?I(p,[m]):I(b,[m]),m[qa]=void 0,O[A]===e&&delete O[A])};O[A]=e,c?_(c,[m,L]):L()},clone(m){const k=Is(m,t,a,o,r);return r&&r(k),k}};return w}function Os(e){if(yr(e))return e=go(e),e.children=null,e}function Ql(e){if(!yr(e))return ql(e.type)&&e.children?Yl(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 hr(e,t){e.shapeFlag&6&&e.component?(e.transition=t,hr(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 ed(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(ed(s.children,t,l))):(t||s.type!==Yt)&&o.push(l!=null?go(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)?Ft({name:e.name},t,{setup:e}):e}function Bs(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function mr(e,t,a,o,r=!1){if(je(e)){e.forEach((b,p)=>mr(b,t&&(je(t)?t[p]:t),a,o,r));return}if(Ro(o)&&!r){o.shapeFlag&512&&o.type.__asyncResolved&&o.component.subTree.component&&mr(e,t,a,o.component.subTree);return}const n=o.shapeFlag&4?xn(o.component):o.el,s=r?null:n,{i:l,r:d}=e,g=t&&t.r,u=l.refs===vt?l.refs={}:l.refs,v=l.setupState,f=ot(v),c=v===vt?ul:b=>lt(f,b);if(g!=null&&g!==d){if(_t(g))u[g]=null,c(g)&&(v[g]=null);else if(Et(g)){g.value=null;const b=t;b.k&&(u[b.k]=null)}}if(qe(d))Po(d,l,12,[s,u]);else{const b=_t(d),p=Et(d);if(b||p){const $=()=>{if(e.f){const S=b?c(d)?v[d]:u[d]:d.value;if(r)je(S)&&hs(S,n);else if(je(S))S.includes(n)||S.push(n);else if(b)u[d]=[n],c(d)&&(v[d]=u[d]);else{const T=[n];d.value=T,e.k&&(u[e.k]=T)}}else b?(u[d]=s,c(d)&&(v[d]=s)):p&&(d.value=s,e.k&&(u[e.k]=s))};s?($.id=-1,ba($,a)):$()}}}const td=e=>e.nodeType===8;Xr().requestIdleCallback,Xr().cancelIdleCallback;function bp(e,t){if(td(e)&&e.data==="["){let a=1,o=e.nextSibling;for(;o;){if(o.nodeType===1){if(t(o)===!1)break}else if(td(o))if(o.data==="]"){if(--a===0)break}else o.data==="["&&a++;o=o.nextSibling}}else t(e)}const Ro=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function na(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 g=null,u,v=0;const f=()=>(v++,g=null,c()),c=()=>{let b;return g||(b=g=t().catch(p=>{if(p=p instanceof Error?p:new Error(String(p)),d)return new Promise(($,S)=>{d(p,()=>$(f()),()=>S(p),v+1)});throw p}).then(p=>b!==g&&g?g:(p&&(p.__esModule||p[Symbol.toStringTag]==="Module")&&(p=p.default),u=p,p)))};return Ve({name:"AsyncComponentWrapper",__asyncLoader:c,__asyncHydrate(b,p,$){let S=!1;(p.bu||(p.bu=[])).push(()=>S=!0);const T=()=>{S||$()},C=n?()=>{const P=n(T,O=>bp(b,O));P&&(p.bum||(p.bum=[])).push(P)}:T;u?C():c().then(()=>!p.isUnmounted&&C())},get __asyncResolved(){return u},setup(){const b=Vt;if(Bs(b),u)return()=>Hs(u,b);const p=C=>{g=null,br(C,b,13,!o)};if(l&&b.suspense||Vo)return c().then(C=>()=>Hs(C,b)).catch(C=>(p(C),()=>o?Re(o,{error:C}):null));const $=oe(!1),S=oe(),T=oe(!!r);return r&&setTimeout(()=>{T.value=!1},r),s!=null&&setTimeout(()=>{if(!$.value&&!S.value){const C=new Error(`Async component timed out after ${s}ms.`);p(C),S.value=C}},s),c().then(()=>{$.value=!0,b.parent&&yr(b.parent.vnode)&&b.parent.update()}).catch(C=>{p(C),S.value=C}),()=>{if($.value&&u)return Hs(u,b);if(S.value&&o)return Re(o,{error:S.value});if(a&&!T.value)return Re(a)}}})}function Hs(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 yr=e=>e.type.__isKeepAlive;function vp(e,t){ad(e,"a",t)}function hp(e,t){ad(e,"da",t)}function ad(e,t,a=Vt){const o=e.__wdc||(e.__wdc=()=>{let r=a;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(pn(t,o,a),a){let r=a.parent;for(;r&&r.parent;)yr(r.parent.vnode)&&mp(o,t,a,r),r=r.parent}}function mp(e,t,a,o){const r=pn(t,e,o,!0);Fs(()=>{hs(o[t],r)},a)}function pn(e,t,a=Vt,o=!1){if(a){const r=a[e]||(a[e]=[]),n=t.__weh||(t.__weh=(...s)=>{Ia();const l=Sr(a),d=Aa(t,a,e,s);return l(),Oa(),d});return o?r.unshift(n):r.push(n),n}}const Ja=e=>(t,a=Vt)=>{(!Vo||e==="sp")&&pn(e,(...o)=>t(...o),a)},yp=Ja("bm"),Nt=Ja("m"),wp=Ja("bu"),kp=Ja("u"),Tt=Ja("bum"),Fs=Ja("um"),xp=Ja("sp"),_p=Ja("rtg"),Cp=Ja("rtc");function Sp(e,t=Vt){pn("ec",e,t)}const od="components";function $p(e,t){return sd(od,e,!0,t)||e}const rd=Symbol.for("v-ndc");function nd(e){return _t(e)?sd(od,e,!1)||e:e||rd}function sd(e,t,a=!0,o=!1){const r=jt||Vt;if(r){const n=r.type;{const l=Rd(n,!1);if(l&&(l===t||l===xa(t)||l===Jr(xa(t))))return n}const s=id(r[e]||n[e],t)||id(r.appContext[e],t);return!s&&o?n:s}}function id(e,t){return e&&(e[t]||e[xa(t)]||e[Jr(xa(t))])}function Ne(e,t,a,o){let r;const n=a,s=je(e);if(s||_t(e)){const l=s&&Fo(e);let d=!1,g=!1;l&&(d=!_a(e),g=lo(e),e=tn(e)),r=new Array(e.length);for(let u=0,v=e.length;u<v;u++)r[u]=t(d?g?sn(Rt(e[u])):Rt(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(ht(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,g=l.length;d<g;d++){const u=l[d];r[d]=t(e[u],u,d,n)}}else r=[];return r}function Ps(e,t,a={},o,r){if(jt.ce||jt.parent&&Ro(jt.parent)&&jt.parent.ce)return t!=="default"&&(a.name=t),h(),dt(ye,null,[Re("slot",a,o&&o())],64);let n=e[t];n&&n._c&&(n._d=!1),h();const s=n&&ld(n(a)),l=a.key||s&&s.key,d=dt(ye,{key:(l&&!Ta(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 ld(e){return e.some(t=>Cr(t)?!(t.type===Yt||t.type===ye&&!ld(t.children)):!0)?e:null}const Ws=e=>e?Pd(e)?xn(e):Ws(e.parent):null,wr=Ft(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=>Ws(e.parent),$root:e=>Ws(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>gd(e),$forceUpdate:e=>e.f||(e.f=()=>{Ns(e.update)}),$nextTick:e=>e.n||(e.n=Zt.bind(e.proxy)),$watch:e=>qp.bind(e)}),zs=(e,t)=>e!==vt&&!e.__isScriptSetup&&lt(e,t),Tp={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 g;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(zs(o,t))return s[t]=1,o[t];if(r!==vt&&lt(r,t))return s[t]=2,r[t];if((g=e.propsOptions[0])&&lt(g,t))return s[t]=3,n[t];if(a!==vt&&lt(a,t))return s[t]=4,a[t];Rs&&(s[t]=0)}}const u=wr[t];let v,f;if(u)return t==="$attrs"&&Jt(e.attrs,"get",""),u(e);if((v=l.__cssModules)&&(v=v[t]))return v;if(a!==vt&&lt(a,t))return s[t]=4,a[t];if(f=d.config.globalProperties,lt(f,t))return f[t]},set({_:e},t,a){const{data:o,setupState:r,ctx:n}=e;return zs(r,t)?(r[t]=a,!0):o!==vt&&lt(o,t)?(o[t]=a,!0):lt(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,g;return!!(a[l]||e!==vt&&l[0]!=="$"&&lt(e,l)||zs(t,l)||(d=n[0])&&lt(d,l)||lt(o,l)||lt(wr,l)||lt(r.config.globalProperties,l)||(g=s.__cssModules)&&g[l])},defineProperty(e,t,a){return a.get!=null?e._.accessCache[t]=0:lt(a,"value")&&this.set(e,t,a.value,null),Reflect.defineProperty(e,t,a)}};function dd(e){return je(e)?e.reduce((t,a)=>(t[a]=null,t),{}):e}let Rs=!0;function Mp(e){const t=gd(e),a=e.proxy,o=e.ctx;Rs=!1,t.beforeCreate&&cd(t.beforeCreate,e,"bc");const{data:r,computed:n,methods:s,watch:l,provide:d,inject:g,created:u,beforeMount:v,mounted:f,beforeUpdate:c,updated:b,activated:p,deactivated:$,beforeDestroy:S,beforeUnmount:T,destroyed:C,unmounted:P,render:O,renderTracked:I,renderTriggered:_,errorCaptured:w,serverPrefetch:m,expose:k,inheritAttrs:A,components:R,directives:L,filters:J}=t;if(g&&Ap(g,o,null),s)for(const le in s){const Z=s[le];qe(Z)&&(o[le]=Z.bind(a))}if(r){const le=r.call(a,a);ht(le)&&(e.data=pr(le))}if(Rs=!0,n)for(const le in n){const Z=n[le],de=qe(Z)?Z.bind(a,a):qe(Z.get)?Z.get.bind(a,a):Na,B=!qe(Z)&&qe(Z.set)?Z.set.bind(a):Na,G=x({get:de,set:B});Object.defineProperty(o,le,{enumerable:!0,configurable:!0,get:()=>G.value,set:D=>G.value=D})}if(l)for(const le in l)ud(l[le],o,a,le);if(d){const le=qe(d)?d.call(a):d;Reflect.ownKeys(le).forEach(Z=>{Op(Z,le[Z])})}u&&cd(u,e,"c");function Y(le,Z){je(Z)?Z.forEach(de=>le(de.bind(a))):Z&&le(Z.bind(a))}if(Y(yp,v),Y(Nt,f),Y(wp,c),Y(kp,b),Y(vp,p),Y(hp,$),Y(Sp,w),Y(Cp,I),Y(_p,_),Y(Tt,T),Y(Fs,P),Y(xp,m),je(k))if(k.length){const le=e.exposed||(e.exposed={});k.forEach(Z=>{Object.defineProperty(le,Z,{get:()=>a[Z],set:de=>a[Z]=de,enumerable:!0})})}else e.exposed||(e.exposed={});O&&e.render===Na&&(e.render=O),A!=null&&(e.inheritAttrs=A),R&&(e.components=R),L&&(e.directives=L),m&&Bs(e)}function Ap(e,t,a=Na){je(e)&&(e=js(e));for(const o in e){const r=e[o];let n;ht(r)?"default"in r?n=bn(r.from||o,r.default,!0):n=bn(r.from||o):n=bn(r),Et(n)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>n.value,set:s=>n.value=s}):t[o]=n}}function cd(e,t,a){Aa(je(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,a)}function ud(e,t,a,o){let r=o.includes(".")?Ad(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(ht(e))if(je(e))e.forEach(n=>ud(n,t,a,o));else{const n=qe(e.handler)?e.handler.bind(a):t[e.handler];qe(n)&&Oe(r,n,e)}}function gd(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(g=>fn(d,g,s,!0)),fn(d,t,s)),ht(t)&&n.set(t,d),d}function fn(e,t,a,o=!1){const{mixins:r,extends:n}=t;n&&fn(e,n,a,!0),r&&r.forEach(s=>fn(e,s,a,!0));for(const s in t)if(!(o&&s==="expose")){const l=Dp[s]||a&&a[s];e[s]=l?l(e[s],t[s]):t[s]}return e}const Dp={data:pd,props:fd,emits:fd,methods:kr,computed:kr,beforeCreate:ea,created:ea,beforeMount:ea,mounted:ea,beforeUpdate:ea,updated:ea,beforeDestroy:ea,beforeUnmount:ea,destroyed:ea,unmounted:ea,activated:ea,deactivated:ea,errorCaptured:ea,serverPrefetch:ea,components:kr,directives:kr,watch:Ep,provide:pd,inject:Lp};function pd(e,t){return t?e?function(){return Ft(qe(e)?e.call(this,this):e,qe(t)?t.call(this,this):t)}:t:e}function Lp(e,t){return kr(js(e),js(t))}function js(e){if(je(e)){const t={};for(let a=0;a<e.length;a++)t[e[a]]=e[a];return t}return e}function ea(e,t){return e?[...new Set([].concat(e,t))]:t}function kr(e,t){return e?Ft(Object.create(null),e,t):t}function fd(e,t){return e?je(e)&&je(t)?[...new Set([...e,...t])]:Ft(Object.create(null),dd(e),dd(t??{})):t}function Ep(e,t){if(!e)return t;if(!t)return e;const a=Ft(Object.create(null),e);for(const o in t)a[o]=ea(e[o],t[o]);return a}function bd(){return{app:null,config:{isNativeTag:ul,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 Np=0;function Ip(e,t){return function(o,r=null){qe(o)||(o=Ft({},o)),r!=null&&!ht(r)&&(r=null);const n=bd(),s=new WeakSet,l=[];let d=!1;const g=n.app={_uid:Np++,_component:o,_props:r,_container:null,_context:n,_instance:null,version:vf,get config(){return n.config},set config(u){},use(u,...v){return s.has(u)||(u&&qe(u.install)?(s.add(u),u.install(g,...v)):qe(u)&&(s.add(u),u(g,...v))),g},mixin(u){return n.mixins.includes(u)||n.mixins.push(u),g},component(u,v){return v?(n.components[u]=v,g):n.components[u]},directive(u,v){return v?(n.directives[u]=v,g):n.directives[u]},mount(u,v,f){if(!d){const c=g._ceVNode||Re(o,r);return c.appContext=n,f===!0?f="svg":f===!1&&(f=void 0),e(c,u,f),d=!0,g._container=u,u.__vue_app__=g,xn(c.component)}},onUnmount(u){l.push(u)},unmount(){d&&(Aa(l,g._instance,16),e(null,g._container),delete g._container.__vue_app__)},provide(u,v){return n.provides[u]=v,g},runWithContext(u){const v=jo;jo=g;try{return u()}finally{jo=v}}};return g}}let jo=null;function Op(e,t){if(Vt){let a=Vt.provides;const o=Vt.parent&&Vt.parent.provides;o===a&&(a=Vt.provides=Object.create(o)),a[e]=t}}function bn(e,t,a=!1){const o=wn();if(o||jo){let r=jo?jo._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 vd={},hd=()=>Object.create(vd),md=e=>Object.getPrototypeOf(e)===vd;function Bp(e,t,a,o=!1){const r={},n=hd();e.propsDefaults=Object.create(null),yd(e,t,r,n);for(const s in e.propsOptions[0])s in r||(r[s]=void 0);a?e.props=o?r:Gg(r):e.type.props?e.props=r:e.props=n,e.attrs=n}function Hp(e,t,a,o){const{props:r,attrs:n,vnode:{patchFlag:s}}=e,l=ot(r),[d]=e.propsOptions;let g=!1;if((o||s>0)&&!(s&16)){if(s&8){const u=e.vnode.dynamicProps;for(let v=0;v<u.length;v++){let f=u[v];if(vn(e.emitsOptions,f))continue;const c=t[f];if(d)if(lt(n,f))c!==n[f]&&(n[f]=c,g=!0);else{const b=xa(f);r[b]=Vs(d,l,b,c,e,!1)}else c!==n[f]&&(n[f]=c,g=!0)}}}else{yd(e,t,r,n)&&(g=!0);let u;for(const v in l)(!t||!lt(t,v)&&((u=so(v))===v||!lt(t,u)))&&(d?a&&(a[v]!==void 0||a[u]!==void 0)&&(r[v]=Vs(d,l,v,void 0,e,!0)):delete r[v]);if(n!==l)for(const v in n)(!t||!lt(t,v))&&(delete n[v],g=!0)}g&&Ua(e.attrs,"set","")}function yd(e,t,a,o){const[r,n]=e.propsOptions;let s=!1,l;if(t)for(let d in t){if(ir(d))continue;const g=t[d];let u;r&&lt(r,u=xa(d))?!n||!n.includes(u)?a[u]=g:(l||(l={}))[u]=g:vn(e.emitsOptions,d)||(!(d in o)||g!==o[d])&&(o[d]=g,s=!0)}if(n){const d=ot(a),g=l||vt;for(let u=0;u<n.length;u++){const v=n[u];a[v]=Vs(r,d,v,g[v],e,!lt(g,v))}}return s}function Vs(e,t,a,o,r,n){const s=e[a];if(s!=null){const l=lt(s,"default");if(l&&o===void 0){const d=s.default;if(s.type!==Function&&!s.skipFactory&&qe(d)){const{propsDefaults:g}=r;if(a in g)o=g[a];else{const u=Sr(r);o=g[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===so(a))&&(o=!0))}return o}const Fp=new WeakMap;function wd(e,t,a=!1){const o=a?Fp: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[f,c]=wd(v,t,!0);Ft(s,f),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 ht(e)&&o.set(e,Oo),Oo;if(je(n))for(let u=0;u<n.length;u++){const v=xa(n[u]);kd(v)&&(s[v]=vt)}else if(n)for(const u in n){const v=xa(u);if(kd(v)){const f=n[u],c=s[v]=je(f)||qe(f)?{type:f}:Ft({},f),b=c.type;let p=!1,$=!0;if(je(b))for(let S=0;S<b.length;++S){const T=b[S],C=qe(T)&&T.name;if(C==="Boolean"){p=!0;break}else C==="String"&&($=!1)}else p=qe(b)&&b.name==="Boolean";c[0]=p,c[1]=$,(p||lt(c,"default"))&&l.push(v)}}const g=[s,l];return ht(e)&&o.set(e,g),g}function kd(e){return e[0]!=="$"&&!ir(e)}const Us=e=>e==="_"||e==="_ctx"||e==="$stable",Gs=e=>je(e)?e.map(Ha):[Ha(e)],Pp=(e,t,a)=>{if(t._n)return t;const o=kt((...r)=>Gs(t(...r)),a);return o._c=!1,o},xd=(e,t,a)=>{const o=e._ctx;for(const r in e){if(Us(r))continue;const n=e[r];if(qe(n))t[r]=Pp(r,n,o);else if(n!=null){const s=Gs(n);t[r]=()=>s}}},_d=(e,t)=>{const a=Gs(t);e.slots.default=()=>a},Cd=(e,t,a)=>{for(const o in t)(a||!Us(o))&&(e[o]=t[o])},Wp=(e,t,a)=>{const o=e.slots=hd();if(e.vnode.shapeFlag&32){const r=t._;r?(Cd(o,t,a),a&&vl(o,"_",r,!0)):xd(t,o)}else t&&_d(e,t)},zp=(e,t,a)=>{const{vnode:o,slots:r}=e;let n=!0,s=vt;if(o.shapeFlag&32){const l=t._;l?a&&l===1?n=!1:Cd(r,t,a):(n=!t.$stable,xd(t,r)),s=t}else t&&(_d(e,t),s={default:1});if(n)for(const l in r)!Us(l)&&s[l]==null&&delete r[l]},ba=tf;function Rp(e){return jp(e)}function jp(e,t){const a=Xr();a.__VUE__=!0;const{insert:o,remove:r,patchProp:n,createElement:s,createText:l,createComment:d,setText:g,setElementText:u,parentNode:v,nextSibling:f,setScopeId:c=Na,insertStaticContent:b}=e,p=(E,W,re,ue=null,ee=null,be=null,ve=void 0,_e=null,xe=!!W.dynamicChildren)=>{if(E===W)return;E&&!Co(E,W)&&(ue=U(E),D(E,ee,be,!0),E=null),W.patchFlag===-2&&(xe=!1,W.dynamicChildren=null);const{type:ge,ref:Ee,shapeFlag:Se}=W;switch(ge){case hn:$(E,W,re,ue);break;case Yt:S(E,W,re,ue);break;case mn:E==null&&T(W,re,ue,ve);break;case ye:R(E,W,re,ue,ee,be,ve,_e,xe);break;default:Se&1?O(E,W,re,ue,ee,be,ve,_e,xe):Se&6?L(E,W,re,ue,ee,be,ve,_e,xe):(Se&64||Se&128)&&ge.process(E,W,re,ue,ee,be,ve,_e,xe,ce)}Ee!=null&&ee?mr(Ee,E&&E.ref,be,W||E,!W):Ee==null&&E&&E.ref!=null&&mr(E.ref,null,be,E,!0)},$=(E,W,re,ue)=>{if(E==null)o(W.el=l(W.children),re,ue);else{const ee=W.el=E.el;W.children!==E.children&&g(ee,W.children)}},S=(E,W,re,ue)=>{E==null?o(W.el=d(W.children||""),re,ue):W.el=E.el},T=(E,W,re,ue)=>{[E.el,E.anchor]=b(E.children,W,re,ue,E.el,E.anchor)},C=({el:E,anchor:W},re,ue)=>{let ee;for(;E&&E!==W;)ee=f(E),o(E,re,ue),E=ee;o(W,re,ue)},P=({el:E,anchor:W})=>{let re;for(;E&&E!==W;)re=f(E),r(E),E=re;r(W)},O=(E,W,re,ue,ee,be,ve,_e,xe)=>{W.type==="svg"?ve="svg":W.type==="math"&&(ve="mathml"),E==null?I(W,re,ue,ee,be,ve,_e,xe):m(E,W,ee,be,ve,_e,xe)},I=(E,W,re,ue,ee,be,ve,_e)=>{let xe,ge;const{props:Ee,shapeFlag:Se,transition:te,dirs:ie}=E;if(xe=E.el=s(E.type,be,Ee&&Ee.is,Ee),Se&8?u(xe,E.children):Se&16&&w(E.children,xe,null,ue,ee,Ks(E,be),ve,_e),ie&&xo(E,null,ue,"created"),_(xe,E,E.scopeId,ve,ue),Ee){for(const Te in Ee)Te!=="value"&&!ir(Te)&&n(xe,Te,null,Ee[Te],be,ue);"value"in Ee&&n(xe,"value",null,Ee.value,be),(ge=Ee.onVnodeBeforeMount)&&Fa(ge,ue,E)}ie&&xo(E,null,ue,"beforeMount");const me=Vp(ee,te);me&&te.beforeEnter(xe),o(xe,W,re),((ge=Ee&&Ee.onVnodeMounted)||me||ie)&&ba(()=>{ge&&Fa(ge,ue,E),me&&te.enter(xe),ie&&xo(E,null,ue,"mounted")},ee)},_=(E,W,re,ue,ee)=>{if(re&&c(E,re),ue)for(let be=0;be<ue.length;be++)c(E,ue[be]);if(ee){let be=ee.subTree;if(W===be||Nd(be.type)&&(be.ssContent===W||be.ssFallback===W)){const ve=ee.vnode;_(E,ve,ve.scopeId,ve.slotScopeIds,ee.parent)}}},w=(E,W,re,ue,ee,be,ve,_e,xe=0)=>{for(let ge=xe;ge<E.length;ge++){const Ee=E[ge]=_e?po(E[ge]):Ha(E[ge]);p(null,Ee,W,re,ue,ee,be,ve,_e)}},m=(E,W,re,ue,ee,be,ve)=>{const _e=W.el=E.el;let{patchFlag:xe,dynamicChildren:ge,dirs:Ee}=W;xe|=E.patchFlag&16;const Se=E.props||vt,te=W.props||vt;let ie;if(re&&_o(re,!1),(ie=te.onVnodeBeforeUpdate)&&Fa(ie,re,W,E),Ee&&xo(W,E,re,"beforeUpdate"),re&&_o(re,!0),(Se.innerHTML&&te.innerHTML==null||Se.textContent&&te.textContent==null)&&u(_e,""),ge?k(E.dynamicChildren,ge,_e,re,ue,Ks(W,ee),be):ve||Z(E,W,_e,null,re,ue,Ks(W,ee),be,!1),xe>0){if(xe&16)A(_e,Se,te,re,ee);else if(xe&2&&Se.class!==te.class&&n(_e,"class",null,te.class,ee),xe&4&&n(_e,"style",Se.style,te.style,ee),xe&8){const me=W.dynamicProps;for(let Te=0;Te<me.length;Te++){const De=me[Te],Pe=Se[De],Ie=te[De];(Ie!==Pe||De==="value")&&n(_e,De,Pe,Ie,ee,re)}}xe&1&&E.children!==W.children&&u(_e,W.children)}else!ve&&ge==null&&A(_e,Se,te,re,ee);((ie=te.onVnodeUpdated)||Ee)&&ba(()=>{ie&&Fa(ie,re,W,E),Ee&&xo(W,E,re,"updated")},ue)},k=(E,W,re,ue,ee,be,ve)=>{for(let _e=0;_e<W.length;_e++){const xe=E[_e],ge=W[_e],Ee=xe.el&&(xe.type===ye||!Co(xe,ge)||xe.shapeFlag&198)?v(xe.el):re;p(xe,ge,Ee,null,ue,ee,be,ve,!0)}},A=(E,W,re,ue,ee)=>{if(W!==re){if(W!==vt)for(const be in W)!ir(be)&&!(be in re)&&n(E,be,W[be],null,ee,ue);for(const be in re){if(ir(be))continue;const ve=re[be],_e=W[be];ve!==_e&&be!=="value"&&n(E,be,_e,ve,ee,ue)}"value"in re&&n(E,"value",W.value,re.value,ee)}},R=(E,W,re,ue,ee,be,ve,_e,xe)=>{const ge=W.el=E?E.el:l(""),Ee=W.anchor=E?E.anchor:l("");let{patchFlag:Se,dynamicChildren:te,slotScopeIds:ie}=W;ie&&(_e=_e?_e.concat(ie):ie),E==null?(o(ge,re,ue),o(Ee,re,ue),w(W.children||[],re,Ee,ee,be,ve,_e,xe)):Se>0&&Se&64&&te&&E.dynamicChildren?(k(E.dynamicChildren,te,re,ee,be,ve,_e),(W.key!=null||ee&&W===ee.subTree)&&Sd(E,W,!0)):Z(E,W,re,Ee,ee,be,ve,_e,xe)},L=(E,W,re,ue,ee,be,ve,_e,xe)=>{W.slotScopeIds=_e,E==null?W.shapeFlag&512?ee.ctx.activate(W,re,ue,ve,xe):J(W,re,ue,ee,be,ve,xe):K(E,W,xe)},J=(E,W,re,ue,ee,be,ve)=>{const _e=E.component=lf(E,ue,ee);if(yr(E)&&(_e.ctx.renderer=ce),df(_e,!1,ve),_e.asyncDep){if(ee&&ee.registerDep(_e,Y,ve),!E.el){const xe=_e.subTree=Re(Yt);S(null,xe,W,re),E.placeholder=xe.el}}else Y(_e,E,W,re,ee,be,ve)},K=(E,W,re)=>{const ue=W.component=E.component;if(Qp(E,W,re))if(ue.asyncDep&&!ue.asyncResolved){le(ue,W,re);return}else ue.next=W,ue.update();else W.el=E.el,ue.vnode=W},Y=(E,W,re,ue,ee,be,ve)=>{const _e=()=>{if(E.isMounted){let{next:Se,bu:te,u:ie,parent:me,vnode:Te}=E;{const ze=$d(E);if(ze){Se&&(Se.el=Te.el,le(E,Se,ve)),ze.asyncDep.then(()=>{E.isUnmounted||_e()});return}}let De=Se,Pe;_o(E,!1),Se?(Se.el=Te.el,le(E,Se,ve)):Se=Te,te&&Zr(te),(Pe=Se.props&&Se.props.onVnodeBeforeUpdate)&&Fa(Pe,me,Se,Te),_o(E,!0);const Ie=Ld(E),Fe=E.subTree;E.subTree=Ie,p(Fe,Ie,v(Fe.el),U(Fe),E,ee,be),Se.el=Ie.el,De===null&&ef(E,Ie.el),ie&&ba(ie,ee),(Pe=Se.props&&Se.props.onVnodeUpdated)&&ba(()=>Fa(Pe,me,Se,Te),ee)}else{let Se;const{el:te,props:ie}=W,{bm:me,m:Te,parent:De,root:Pe,type:Ie}=E,Fe=Ro(W);_o(E,!1),me&&Zr(me),!Fe&&(Se=ie&&ie.onVnodeBeforeMount)&&Fa(Se,De,W),_o(E,!0);{Pe.ce&&Pe.ce._def.shadowRoot!==!1&&Pe.ce._injectChildStyle(Ie);const ze=E.subTree=Ld(E);p(null,ze,re,ue,E,ee,be),W.el=ze.el}if(Te&&ba(Te,ee),!Fe&&(Se=ie&&ie.onVnodeMounted)){const ze=W;ba(()=>Fa(Se,De,ze),ee)}(W.shapeFlag&256||De&&Ro(De.vnode)&&De.vnode.shapeFlag&256)&&E.a&&ba(E.a,ee),E.isMounted=!0,W=re=ue=null}};E.scope.on();const xe=E.effect=new kl(_e);E.scope.off();const ge=E.update=xe.run.bind(xe),Ee=E.job=xe.runIfDirty.bind(xe);Ee.i=E,Ee.id=E.uid,xe.scheduler=()=>Ns(Ee),_o(E,!0),ge()},le=(E,W,re)=>{W.component=E;const ue=E.vnode.props;E.vnode=W,E.next=null,Hp(E,W.props,ue,re),zp(E,W.children,re),Ia(),Vl(E),Oa()},Z=(E,W,re,ue,ee,be,ve,_e,xe=!1)=>{const ge=E&&E.children,Ee=E?E.shapeFlag:0,Se=W.children,{patchFlag:te,shapeFlag:ie}=W;if(te>0){if(te&128){B(ge,Se,re,ue,ee,be,ve,_e,xe);return}else if(te&256){de(ge,Se,re,ue,ee,be,ve,_e,xe);return}}ie&8?(Ee&16&&ae(ge,ee,be),Se!==ge&&u(re,Se)):Ee&16?ie&16?B(ge,Se,re,ue,ee,be,ve,_e,xe):ae(ge,ee,be,!0):(Ee&8&&u(re,""),ie&16&&w(Se,re,ue,ee,be,ve,_e,xe))},de=(E,W,re,ue,ee,be,ve,_e,xe)=>{E=E||Oo,W=W||Oo;const ge=E.length,Ee=W.length,Se=Math.min(ge,Ee);let te;for(te=0;te<Se;te++){const ie=W[te]=xe?po(W[te]):Ha(W[te]);p(E[te],ie,re,null,ee,be,ve,_e,xe)}ge>Ee?ae(E,ee,be,!0,!1,Se):w(W,re,ue,ee,be,ve,_e,xe,Se)},B=(E,W,re,ue,ee,be,ve,_e,xe)=>{let ge=0;const Ee=W.length;let Se=E.length-1,te=Ee-1;for(;ge<=Se&&ge<=te;){const ie=E[ge],me=W[ge]=xe?po(W[ge]):Ha(W[ge]);if(Co(ie,me))p(ie,me,re,null,ee,be,ve,_e,xe);else break;ge++}for(;ge<=Se&&ge<=te;){const ie=E[Se],me=W[te]=xe?po(W[te]):Ha(W[te]);if(Co(ie,me))p(ie,me,re,null,ee,be,ve,_e,xe);else break;Se--,te--}if(ge>Se){if(ge<=te){const ie=te+1,me=ie<Ee?W[ie].el:ue;for(;ge<=te;)p(null,W[ge]=xe?po(W[ge]):Ha(W[ge]),re,me,ee,be,ve,_e,xe),ge++}}else if(ge>te)for(;ge<=Se;)D(E[ge],ee,be,!0),ge++;else{const ie=ge,me=ge,Te=new Map;for(ge=me;ge<=te;ge++){const nt=W[ge]=xe?po(W[ge]):Ha(W[ge]);nt.key!=null&&Te.set(nt.key,ge)}let De,Pe=0;const Ie=te-me+1;let Fe=!1,ze=0;const it=new Array(Ie);for(ge=0;ge<Ie;ge++)it[ge]=0;for(ge=ie;ge<=Se;ge++){const nt=E[ge];if(Pe>=Ie){D(nt,ee,be,!0);continue}let gt;if(nt.key!=null)gt=Te.get(nt.key);else for(De=me;De<=te;De++)if(it[De-me]===0&&Co(nt,W[De])){gt=De;break}gt===void 0?D(nt,ee,be,!0):(it[gt-me]=ge+1,gt>=ze?ze=gt:Fe=!0,p(nt,W[gt],re,null,ee,be,ve,_e,xe),Pe++)}const ut=Fe?Up(it):Oo;for(De=ut.length-1,ge=Ie-1;ge>=0;ge--){const nt=me+ge,gt=W[nt],Ot=W[nt+1],Wt=nt+1<Ee?Ot.el||Ot.placeholder:ue;it[ge]===0?p(null,gt,re,Wt,ee,be,ve,_e,xe):Fe&&(De<0||ge!==ut[De]?G(gt,re,Wt,2):De--)}}},G=(E,W,re,ue,ee=null)=>{const{el:be,type:ve,transition:_e,children:xe,shapeFlag:ge}=E;if(ge&6){G(E.component.subTree,W,re,ue);return}if(ge&128){E.suspense.move(W,re,ue);return}if(ge&64){ve.move(E,W,re,ce);return}if(ve===ye){o(be,W,re);for(let Se=0;Se<xe.length;Se++)G(xe[Se],W,re,ue);o(E.anchor,W,re);return}if(ve===mn){C(E,W,re);return}if(ue!==2&&ge&1&&_e)if(ue===0)_e.beforeEnter(be),o(be,W,re),ba(()=>_e.enter(be),ee);else{const{leave:Se,delayLeave:te,afterLeave:ie}=_e,me=()=>{E.ctx.isUnmounted?r(be):o(be,W,re)},Te=()=>{be._isLeaving&&be[qa](!0),Se(be,()=>{me(),ie&&ie()})};te?te(be,me,Te):Te()}else o(be,W,re)},D=(E,W,re,ue=!1,ee=!1)=>{const{type:be,props:ve,ref:_e,children:xe,dynamicChildren:ge,shapeFlag:Ee,patchFlag:Se,dirs:te,cacheIndex:ie}=E;if(Se===-2&&(ee=!1),_e!=null&&(Ia(),mr(_e,null,re,E,!0),Oa()),ie!=null&&(W.renderCache[ie]=void 0),Ee&256){W.ctx.deactivate(E);return}const me=Ee&1&&te,Te=!Ro(E);let De;if(Te&&(De=ve&&ve.onVnodeBeforeUnmount)&&Fa(De,W,E),Ee&6)Me(E.component,re,ue);else{if(Ee&128){E.suspense.unmount(re,ue);return}me&&xo(E,null,W,"beforeUnmount"),Ee&64?E.type.remove(E,W,re,ce,ue):ge&&!ge.hasOnce&&(be!==ye||Se>0&&Se&64)?ae(ge,W,re,!1,!0):(be===ye&&Se&384||!ee&&Ee&16)&&ae(xe,W,re),ue&&V(E)}(Te&&(De=ve&&ve.onVnodeUnmounted)||me)&&ba(()=>{De&&Fa(De,W,E),me&&xo(E,null,W,"unmounted")},re)},V=E=>{const{type:W,el:re,anchor:ue,transition:ee}=E;if(W===ye){he(re,ue);return}if(W===mn){P(E);return}const be=()=>{r(re),ee&&!ee.persisted&&ee.afterLeave&&ee.afterLeave()};if(E.shapeFlag&1&&ee&&!ee.persisted){const{leave:ve,delayLeave:_e}=ee,xe=()=>ve(re,be);_e?_e(E.el,be,xe):xe()}else be()},he=(E,W)=>{let re;for(;E!==W;)re=f(E),r(E),E=re;r(W)},Me=(E,W,re)=>{const{bum:ue,scope:ee,job:be,subTree:ve,um:_e,m:xe,a:ge}=E;Td(xe),Td(ge),ue&&Zr(ue),ee.stop(),be&&(be.flags|=8,D(ve,E,W,re)),_e&&ba(_e,W),ba(()=>{E.isUnmounted=!0},W)},ae=(E,W,re,ue=!1,ee=!1,be=0)=>{for(let ve=be;ve<E.length;ve++)D(E[ve],W,re,ue,ee)},U=E=>{if(E.shapeFlag&6)return U(E.component.subTree);if(E.shapeFlag&128)return E.suspense.next();const W=f(E.anchor||E.el),re=W&&W[up];return re?f(re):W};let H=!1;const j=(E,W,re)=>{E==null?W._vnode&&D(W._vnode,null,null,!0):p(W._vnode||null,E,W,null,null,null,re),W._vnode=E,H||(H=!0,Vl(),Ul(),H=!1)},ce={p,um:D,m:G,r:V,mt:J,mc:w,pc:Z,pbc:k,n:U,o:e};return{render:j,hydrate:void 0,createApp:Ip(j)}}function Ks({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 Vp(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function Sd(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]=po(r[n]),l.el=s.el),!a&&l.patchFlag!==-2&&Sd(s,l)),l.type===hn&&l.patchFlag!==-1&&(l.el=s.el),l.type===Yt&&!l.el&&(l.el=s.el)}}function Up(e){const t=e.slice(),a=[0];let o,r,n,s,l;const d=e.length;for(o=0;o<d;o++){const g=e[o];if(g!==0){if(r=a[a.length-1],e[r]<g){t[o]=r,a.push(o);continue}for(n=0,s=a.length-1;n<s;)l=n+s>>1,e[a[l]]<g?n=l+1:s=l;g<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 $d(e){const t=e.subTree.component;if(t)return t.asyncDep&&!t.asyncResolved?t:$d(t)}function Td(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const Gp=Symbol.for("v-scx"),Kp=()=>bn(Gp);function Oe(e,t,a){return Md(e,t,a)}function Md(e,t,a=vt){const{immediate:o,deep:r,flush:n,once:s}=a,l=Ft({},a),d=t&&o||!t&&n!=="post";let g;if(Vo){if(n==="sync"){const c=Kp();g=c.__watcherHandles||(c.__watcherHandles=[])}else if(!d){const c=()=>{};return c.stop=Na,c.resume=Na,c.pause=Na,c}}const u=Vt;l.call=(c,b,p)=>Aa(c,u,b,p);let v=!1;n==="post"?l.scheduler=c=>{ba(c,u&&u.suspense)}:n!=="sync"&&(v=!0,l.scheduler=(c,b)=>{b?c():Ns(c)}),l.augmentJob=c=>{t&&(c.flags|=4),v&&(c.flags|=2,u&&(c.id=u.uid,c.i=u))};const f=op(e,t,l);return Vo&&(g?g.push(f):d&&f()),f}function qp(e,t,a){const o=this.proxy,r=_t(e)?e.includes(".")?Ad(o,e):()=>o[e]:e.bind(o,o);let n;qe(t)?n=t:(n=t.handler,a=t);const s=Sr(this),l=Md(r,n.bind(o),a);return s(),l}function Ad(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 Jp=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${xa(t)}Modifiers`]||e[`${so(t)}Modifiers`];function Zp(e,t,...a){if(e.isUnmounted)return;const o=e.vnode.props||vt;let r=a;const n=t.startsWith("update:"),s=n&&Jp(o,t.slice(7));s&&(s.trim&&(r=a.map(u=>_t(u)?u.trim():u)),s.number&&(r=a.map(Yr)));let l,d=o[l=ys(t)]||o[l=ys(xa(t))];!d&&n&&(d=o[l=ys(so(t))]),d&&Aa(d,e,6,r);const g=o[l+"Once"];if(g){if(!e.emitted)e.emitted={};else if(e.emitted[l])return;e.emitted[l]=!0,Aa(g,e,6,r)}}function Dd(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=g=>{const u=Dd(g,t,!0);u&&(l=!0,Ft(s,u))};!a&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!n&&!l?(ht(e)&&o.set(e,null),null):(je(n)?n.forEach(d=>s[d]=null):Ft(s,n),ht(e)&&o.set(e,s),s)}function vn(e,t){return!e||!Gr(t)?!1:(t=t.slice(2).replace(/Once$/,""),lt(e,t[0].toLowerCase()+t.slice(1))||lt(e,so(t))||lt(e,t))}function $7(){}function Ld(e){const{type:t,vnode:a,proxy:o,withProxy:r,propsOptions:[n],slots:s,attrs:l,emit:d,render:g,renderCache:u,props:v,data:f,setupState:c,ctx:b,inheritAttrs:p}=e,$=un(e);let S,T;try{if(a.shapeFlag&4){const P=r||o,O=P;S=Ha(g.call(O,P,u,v,c,f,b)),T=l}else{const P=t;S=Ha(P.length>1?P(v,{attrs:l,slots:s,emit:d}):P(v,null)),T=t.props?l:Yp(l)}}catch(P){xr.length=0,br(P,e,1),S=Re(Yt)}let C=S;if(T&&p!==!1){const P=Object.keys(T),{shapeFlag:O}=C;P.length&&O&7&&(n&&P.some(vs)&&(T=Xp(T,n)),C=go(C,T,!1,!0))}return a.dirs&&(C=go(C,null,!1,!0),C.dirs=C.dirs?C.dirs.concat(a.dirs):a.dirs),a.transition&&hr(C,a.transition),S=C,un($),S}const Yp=e=>{let t;for(const a in e)(a==="class"||a==="style"||Gr(a))&&((t||(t={}))[a]=e[a]);return t},Xp=(e,t)=>{const a={};for(const o in e)(!vs(o)||!(o.slice(9)in t))&&(a[o]=e[o]);return a};function Qp(e,t,a){const{props:o,children:r,component:n}=e,{props:s,children:l,patchFlag:d}=t,g=n.emitsOptions;if(t.dirs||t.transition)return!0;if(a&&d>=0){if(d&1024)return!0;if(d&16)return o?Ed(o,s,g):!!s;if(d&8){const u=t.dynamicProps;for(let v=0;v<u.length;v++){const f=u[v];if(s[f]!==o[f]&&!vn(g,f))return!0}}}else return(r||l)&&(!l||!l.$stable)?!0:o===s?!1:o?s?Ed(o,s,g):!0:!!s;return!1}function Ed(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]&&!vn(a,n))return!0}return!1}function ef({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 Nd=e=>e.__isSuspense;function tf(e,t){t&&t.pendingBranch?je(e)?t.effects.push(...e):t.effects.push(e):cp(e)}const ye=Symbol.for("v-fgt"),hn=Symbol.for("v-txt"),Yt=Symbol.for("v-cmt"),mn=Symbol.for("v-stc"),xr=[];let va=null;function h(e=!1){xr.push(va=e?null:[])}function af(){xr.pop(),va=xr[xr.length-1]||null}let _r=1;function Id(e,t=!1){_r+=e,e<0&&va&&t&&(va.hasOnce=!0)}function Od(e){return e.dynamicChildren=_r>0?va||Oo:null,af(),_r>0&&va&&va.push(e),e}function y(e,t,a,o,r,n){return Od(i(e,t,a,o,r,n,!0))}function dt(e,t,a,o,r){return Od(Re(e,t,a,o,r,!0))}function Cr(e){return e?e.__v_isVNode===!0:!1}function Co(e,t){return e.type===t.type&&e.key===t.key}const Bd=({key:e})=>e??null,yn=({ref:e,ref_key:t,ref_for:a})=>(typeof e=="number"&&(e=""+e),e!=null?_t(e)||Et(e)||qe(e)?{i:jt,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&&Bd(t),ref:t&&yn(t),scopeId:Kl,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:jt};return l?(qs(d,a),n&128&&e.normalize(d)):a&&(d.shapeFlag|=_t(a)?8:16),_r>0&&!s&&va&&(d.patchFlag>0||n&6)&&d.patchFlag!==32&&va.push(d),d}const Re=of;function of(e,t=null,a=null,o=0,r=null,n=!1){if((!e||e===rd)&&(e=Yt),Cr(e)){const l=go(e,t,!0);return a&&qs(l,a),_r>0&&!n&&va&&(l.shapeFlag&6?va[va.indexOf(e)]=l:va.push(l)),l.patchFlag=-2,l}if(bf(e)&&(e=e.__vccOpts),t){t=rf(t);let{class:l,style:d}=t;l&&!_t(l)&&(t.class=ke(l)),ht(d)&&(Ls(d)&&!je(d)&&(d=Ft({},d)),t.style=He(d))}const s=_t(e)?1:Nd(e)?128:ql(e)?64:ht(e)?4:qe(e)?2:0;return i(e,t,a,o,r,s,n,!0)}function rf(e){return e?Ls(e)||md(e)?Ft({},e):e:null}function go(e,t,a=!1,o=!1){const{props:r,ref:n,patchFlag:s,children:l,transition:d}=e,g=t?Hd(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:g,key:g&&Bd(g),ref:t&&t.ref?a&&n?je(n)?n.concat(yn(t)):[n,yn(t)]:yn(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&&go(e.ssContent),ssFallback:e.ssFallback&&go(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return d&&o&&hr(u,d.clone(u)),u}function Ge(e=" ",t=0){return Re(hn,null,e,t)}function Za(e,t){const a=Re(mn,null,e);return a.staticCount=t,a}function ne(e="",t=!1){return t?(h(),dt(Yt,null,e)):Re(Yt,null,e)}function Ha(e){return e==null||typeof e=="boolean"?Re(Yt):je(e)?Re(ye,null,e.slice()):Cr(e)?po(e):Re(hn,null,String(e))}function po(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:go(e)}function qs(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),qs(e,r()),r._c&&(r._d=!0));return}else{a=32;const r=t._;!r&&!md(t)?t._ctx=jt:r===3&&jt&&(jt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else qe(t)?(t={default:t,_ctx:jt},a=32):(t=String(t),o&64?(a=16,t=[Ge(t)]):a=8);e.children=t,e.shapeFlag|=a}function Hd(...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(Gr(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 Fa(e,t,a,o=null){Aa(e,t,7,[a,o])}const nf=bd();let sf=0;function lf(e,t,a){const o=e.type,r=(t?t.appContext:e.appContext)||nf,n={uid:sf++,vnode:e,type:o,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new Sg(!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:wd(o,r),emitsOptions:Dd(o,r),emit:null,emitted:null,propsDefaults:vt,inheritAttrs:o.inheritAttrs,ctx:vt,data:vt,props:vt,attrs:vt,slots:vt,refs:vt,setupState:vt,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=Zp.bind(null,n),e.ce&&e.ce(n),n}let Vt=null;const wn=()=>Vt||jt;let kn,Js;{const e=Xr(),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)}};kn=t("__VUE_INSTANCE_SETTERS__",a=>Vt=a),Js=t("__VUE_SSR_SETTERS__",a=>Vo=a)}const Sr=e=>{const t=Vt;return kn(e),e.scope.on(),()=>{e.scope.off(),kn(t)}},Fd=()=>{Vt&&Vt.scope.off(),kn(null)};function Pd(e){return e.vnode.shapeFlag&4}let Vo=!1;function df(e,t=!1,a=!1){t&&Js(t);const{props:o,children:r}=e.vnode,n=Pd(e);Bp(e,o,n,t),Wp(e,r,a||t);const s=n?cf(e,t):void 0;return t&&Js(!1),s}function cf(e,t){const a=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Tp);const{setup:o}=a;if(o){Ia();const r=e.setupContext=o.length>1?gf(e):null,n=Sr(e),s=Po(o,e,0,[e.props,r]),l=pl(s);if(Oa(),n(),(l||e.sp)&&!Ro(e)&&Bs(e),l){if(s.then(Fd,Fd),t)return s.then(d=>{Wd(e,d)}).catch(d=>{br(d,e,0)});e.asyncDep=s}else Wd(e,s)}else zd(e)}function Wd(e,t,a){qe(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:ht(t)&&(e.setupState=Wl(t)),zd(e)}function zd(e,t,a){const o=e.type;e.render||(e.render=o.render||Na);{const r=Sr(e);Ia();try{Mp(e)}finally{Oa(),r()}}}const uf={get(e,t){return Jt(e,"get",""),e[t]}};function gf(e){const t=a=>{e.exposed=a||{}};return{attrs:new Proxy(e.attrs,uf),slots:e.slots,emit:e.emit,expose:t}}function xn(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Wl(Kg(e.exposed)),{get(t,a){if(a in t)return t[a];if(a in wr)return wr[a](e)},has(t,a){return a in t||a in wr}})):e.proxy}const pf=/(?:^|[-_])(\w)/g,ff=e=>e.replace(pf,t=>t.toUpperCase()).replace(/[-_]/g,"");function Rd(e,t=!0){return qe(e)?e.displayName||e.name:e.name||t&&e.__name}function jd(e,t,a=!1){let o=Rd(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?ff(o):a?"App":"Anonymous"}function bf(e){return qe(e)&&"__vccOpts"in e}const x=(e,t)=>tp(e,t,Vo);function ha(e,t,a){const o=arguments.length;return o===2?ht(t)&&!je(t)?Cr(t)?Re(e,null,[t]):Re(e,t):Re(e,null,t):(o>3?a=Array.prototype.slice.call(arguments,2):o===3&&Cr(a)&&(a=[a]),Re(e,t,a))}const vf="3.5.20";/**
* @vue/runtime-dom v3.5.20
* (c) 2018-present Yuxi (Evan) You and Vue contributors
* @license MIT
**/let Zs;const Vd=typeof window<"u"&&window.trustedTypes;if(Vd)try{Zs=Vd.createPolicy("vue",{createHTML:e=>e})}catch{}const Ud=Zs?e=>Zs.createHTML(e):e=>e,hf="http://www.w3.org/2000/svg",mf="http://www.w3.org/1998/Math/MathML",Ya=typeof document<"u"?document:null,Gd=Ya&&Ya.createElement("template"),yf={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"?Ya.createElementNS(hf,e):t==="mathml"?Ya.createElementNS(mf,e):a?Ya.createElement(e,{is:a}):Ya.createElement(e);return e==="select"&&o&&o.multiple!=null&&r.setAttribute("multiple",o.multiple),r},createText:e=>Ya.createTextNode(e),createComment:e=>Ya.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ya.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{Gd.innerHTML=Ud(o==="svg"?`<svg>${e}</svg>`:o==="mathml"?`<math>${e}</math>`:e);const l=Gd.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]}},fo="transition",$r="animation",Tr=Symbol("_vtc"),Kd={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},wf=Ft({},Jl,Kd),qd=(e=>(e.displayName="Transition",e.props=wf,e))((e,{slots:t})=>ha(fp,kf(e),t)),So=(e,t=[])=>{je(e)?e.forEach(a=>a(...t)):e&&e(...t)},Jd=e=>e?je(e)?e.some(t=>t.length>1):e.length>1:!1;function kf(e){const t={};for(const R in e)R in Kd||(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:g=s,appearToClass:u=l,leaveFromClass:v=`${a}-leave-from`,leaveActiveClass:f=`${a}-leave-active`,leaveToClass:c=`${a}-leave-to`}=e,b=xf(r),p=b&&b[0],$=b&&b[1],{onBeforeEnter:S,onEnter:T,onEnterCancelled:C,onLeave:P,onLeaveCancelled:O,onBeforeAppear:I=S,onAppear:_=T,onAppearCancelled:w=C}=t,m=(R,L,J,K)=>{R._enterCancelled=K,$o(R,L?u:l),$o(R,L?g:s),J&&J()},k=(R,L)=>{R._isLeaving=!1,$o(R,v),$o(R,c),$o(R,f),L&&L()},A=R=>(L,J)=>{const K=R?_:T,Y=()=>m(L,R,J);So(K,[L,Y]),Zd(()=>{$o(L,R?d:n),Xa(L,R?u:l),Jd(K)||Yd(L,o,p,Y)})};return Ft(t,{onBeforeEnter(R){So(S,[R]),Xa(R,n),Xa(R,s)},onBeforeAppear(R){So(I,[R]),Xa(R,d),Xa(R,g)},onEnter:A(!1),onAppear:A(!0),onLeave(R,L){R._isLeaving=!0;const J=()=>k(R,L);Xa(R,v),R._enterCancelled?(Xa(R,f),ec()):(ec(),Xa(R,f)),Zd(()=>{R._isLeaving&&($o(R,v),Xa(R,c),Jd(P)||Yd(R,o,$,J))}),So(P,[R,J])},onEnterCancelled(R){m(R,!1,void 0,!0),So(C,[R])},onAppearCancelled(R){m(R,!0,void 0,!0),So(w,[R])},onLeaveCancelled(R){k(R),So(O,[R])}})}function xf(e){if(e==null)return null;if(ht(e))return[Ys(e.enter),Ys(e.leave)];{const t=Ys(e);return[t,t]}}function Ys(e){return hg(e)}function Xa(e,t){t.split(/\s+/).forEach(a=>a&&e.classList.add(a)),(e[Tr]||(e[Tr]=new Set)).add(t)}function $o(e,t){t.split(/\s+/).forEach(o=>o&&e.classList.remove(o));const a=e[Tr];a&&(a.delete(t),a.size||(e[Tr]=void 0))}function Zd(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let _f=0;function Yd(e,t,a,o){const r=e._endId=++_f,n=()=>{r===e._endId&&o()};if(a!=null)return setTimeout(n,a);const{type:s,timeout:l,propCount:d}=Cf(e,t);if(!s)return o();const g=s+"end";let u=0;const v=()=>{e.removeEventListener(g,f),n()},f=c=>{c.target===e&&++u>=d&&v()};setTimeout(()=>{u<d&&v()},l+1),e.addEventListener(g,f)}function Cf(e,t){const a=window.getComputedStyle(e),o=b=>(a[b]||"").split(", "),r=o(`${fo}Delay`),n=o(`${fo}Duration`),s=Xd(r,n),l=o(`${$r}Delay`),d=o(`${$r}Duration`),g=Xd(l,d);let u=null,v=0,f=0;t===fo?s>0&&(u=fo,v=s,f=n.length):t===$r?g>0&&(u=$r,v=g,f=d.length):(v=Math.max(s,g),u=v>0?s>g?fo:$r:null,f=u?u===fo?n.length:d.length:0);const c=u===fo&&/\b(transform|all)(,|$)/.test(o(`${fo}Property`).toString());return{type:u,timeout:v,propCount:f,hasTransform:c}}function Xd(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((a,o)=>Qd(a)+Qd(e[o])))}function Qd(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function ec(){return document.body.offsetHeight}function Sf(e,t,a){const o=e[Tr];o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):a?e.setAttribute("class",t):e.className=t}const _n=Symbol("_vod"),tc=Symbol("_vsh"),ac={name:"show",beforeMount(e,{value:t},{transition:a}){e[_n]=e.style.display==="none"?"":e.style.display,a&&t?a.beforeEnter(e):Mr(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),Mr(e,!0),o.enter(e)):o.leave(e,()=>{Mr(e,!1)}):Mr(e,t))},beforeUnmount(e,{value:t}){Mr(e,t)}};function Mr(e,t){e.style.display=t?e[_n]:"none",e[tc]=!t}const $f=Symbol(""),Tf=/(^|;)\s*display\s*:/;function Mf(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&&Cn(o,l,"")}else for(const s in t)a[s]==null&&Cn(o,s,"");for(const s in a)s==="display"&&(n=!0),Cn(o,s,a[s])}else if(r){if(t!==a){const s=o[$f];s&&(a+=";"+s),o.cssText=a,n=Tf.test(a)}}else t&&e.removeAttribute("style");_n in e&&(e[_n]=n?o.display:"",e[tc]&&(o.display="none"))}const oc=/\s*!important$/;function Cn(e,t,a){if(je(a))a.forEach(o=>Cn(e,t,o));else if(a==null&&(a=""),t.startsWith("--"))e.setProperty(t,a);else{const o=Af(e,t);oc.test(a)?e.setProperty(so(o),a.replace(oc,""),"important"):e[o]=a}}const rc=["Webkit","Moz","ms"],Xs={};function Af(e,t){const a=Xs[t];if(a)return a;let o=xa(t);if(o!=="filter"&&o in e)return Xs[t]=o;o=Jr(o);for(let r=0;r<rc.length;r++){const n=rc[r]+o;if(n in e)return Xs[t]=n}return t}const nc="http://www.w3.org/1999/xlink";function sc(e,t,a,o,r,n=xg(t)){o&&t.startsWith("xlink:")?a==null?e.removeAttributeNS(nc,t.slice(6,t.length)):e.setAttributeNS(nc,t,a):a==null||n&&!ml(a)?e.removeAttribute(t):e.setAttribute(t,n?"":Ta(a)?String(a):a)}function ic(e,t,a,o,r){if(t==="innerHTML"||t==="textContent"){a!=null&&(e[t]=t==="innerHTML"?Ud(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=ml(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 To(e,t,a,o){e.addEventListener(t,a,o)}function Df(e,t,a,o){e.removeEventListener(t,a,o)}const lc=Symbol("_vei");function Lf(e,t,a,o,r=null){const n=e[lc]||(e[lc]={}),s=n[t];if(o&&s)s.value=o;else{const[l,d]=Ef(t);if(o){const g=n[t]=Of(o,r);To(e,l,g,d)}else s&&(Df(e,l,s,d),n[t]=void 0)}}const dc=/(?:Once|Passive|Capture)$/;function Ef(e){let t;if(dc.test(e)){t={};let o;for(;o=e.match(dc);)e=e.slice(0,e.length-o[0].length),t[o[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):so(e.slice(2)),t]}let Qs=0;const Nf=Promise.resolve(),If=()=>Qs||(Nf.then(()=>Qs=0),Qs=Date.now());function Of(e,t){const a=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=a.attached)return;Aa(Bf(o,a.value),t,5,[o])};return a.value=e,a.attached=If(),a}function Bf(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 cc=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Hf=(e,t,a,o,r,n)=>{const s=r==="svg";t==="class"?Sf(e,o,s):t==="style"?Mf(e,a,o):Gr(t)?vs(t)||Lf(e,t,a,o,n):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Ff(e,t,o,s))?(ic(e,t,o),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&sc(e,t,o,s,n,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!_t(o))?ic(e,xa(t),o,n,t):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),sc(e,t,o,s))};function Ff(e,t,a,o){if(o)return!!(t==="innerHTML"||t==="textContent"||t in e&&cc(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 cc(t)&&_t(a)?!1:t in e}const Sn=e=>{const t=e.props["onUpdate:modelValue"]||!1;return je(t)?a=>Zr(t,a):t};function Pf(e){e.target.composing=!0}function uc(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Uo=Symbol("_assign"),$n={created(e,{modifiers:{lazy:t,trim:a,number:o}},r){e[Uo]=Sn(r);const n=o||r.props&&r.props.type==="number";To(e,t?"change":"input",s=>{if(s.target.composing)return;let l=e.value;a&&(l=l.trim()),n&&(l=Yr(l)),e[Uo](l)}),a&&To(e,"change",()=>{e.value=e.value.trim()}),t||(To(e,"compositionstart",Pf),To(e,"compositionend",uc),To(e,"change",uc))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:a,modifiers:{lazy:o,trim:r,number:n}},s){if(e[Uo]=Sn(s),e.composing)return;const l=(n||e.type==="number")&&!/^0\d/.test(e.value)?Yr(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))}},gc={deep:!0,created(e,{value:t,modifiers:{number:a}},o){const r=Kr(t);To(e,"change",()=>{const n=Array.prototype.filter.call(e.options,s=>s.selected).map(s=>a?Yr(Tn(s)):Tn(s));e[Uo](e.multiple?r?new Set(n):n:n[0]),e._assigning=!0,Zt(()=>{e._assigning=!1})}),e[Uo]=Sn(o)},mounted(e,{value:t}){pc(e,t)},beforeUpdate(e,t,a){e[Uo]=Sn(a)},updated(e,{value:t}){e._assigning||pc(e,t)}};function pc(e,t){const a=e.multiple,o=je(t);if(!(a&&!o&&!Kr(t))){for(let r=0,n=e.options.length;r<n;r++){const s=e.options[r],l=Tn(s);if(a)if(o){const d=typeof l;d==="string"||d==="number"?s.selected=t.some(g=>String(g)===String(l)):s.selected=Cg(t,l)>-1}else s.selected=t.has(l);else if(Qr(Tn(s),t)){e.selectedIndex!==r&&(e.selectedIndex=r);return}}!a&&e.selectedIndex!==-1&&(e.selectedIndex=-1)}}function Tn(e){return"_value"in e?e._value:e.value}const Wf=["ctrl","shift","alt","meta"],zf={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)=>Wf.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=zf[t[s]];if(l&&l(r,t))return}return e(r,...n)})},Rf={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},Da=(e,t)=>{const a=e._withKeys||(e._withKeys={}),o=t.join(".");return a[o]||(a[o]=r=>{if(!("key"in r))return;const n=so(r.key);if(t.some(s=>s===n||Rf[s]===n))return e(r)})},jf=Ft({patchProp:Hf},yf);let fc;function Vf(){return fc||(fc=Rp(jf))}const Uf=(...e)=>{const t=Vf().createApp(...e),{mount:a}=t;return t.mount=o=>{const r=Kf(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,Gf(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),s},t};function Gf(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Kf(e){return _t(e)?document.querySelector(e):e}const qf=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 ha("div",r,[ha("aside",n,t.navigation?t.navigation():[]),ha("section",{class:"app-content__main",role:"main"},t.default?t.default():[])])}}}),Jf=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(ha("div",{class:"app-navigation__actions"},t.actions())),t.default&&r.push(...t.default()),ha("nav",o,r)}}}),sa=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"),ha("button",r,a.default?a.default():[])}}}),Zf=Ve({name:"NcEmptyContent",props:{name:{type:String,default:""},description:{type:String,default:""}},setup(e,{attrs:t}){return()=>ha("div",{...t,class:[t.class,"card empty"]},[ha("div",{class:"value"},e.name),ha("div",{class:"hint"},e.description)])}}),Yf=Ve({name:"NcLoadingIcon",props:{size:{type:[String,Number],default:16}},setup(e,{attrs:t}){return()=>ha("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`})}}),Qa=pr({locale:"",timeZone:"",firstDayOfWeek:void 0}),ei=new Map;function Xf(){ei.clear()}function Qf(e){if(!(!e||typeof e!="object")){if(typeof e.locale=="string"&&(Qa.locale=e.locale),typeof e.timeZone=="string"&&(Qa.timeZone=e.timeZone),typeof e.firstDayOfWeek=="number"&&Number.isFinite(e.firstDayOfWeek)){const t=(Math.trunc(e.firstDayOfWeek)%7+7)%7;Qa.firstDayOfWeek=t}Xf()}}function ti(){if(Qa.locale)return Qa.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 bc(){if(Qa.timeZone)return Qa.timeZone;try{const e=Intl.DateTimeFormat().resolvedOptions().timeZone;if(e)return e}catch{}return"UTC"}function ai(){var e,t;if(typeof Qa.firstDayOfWeek=="number")return Qa.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(ti()))==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 eb(){const e=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],t=ai();return e.slice(t).concat(e.slice(0,t))}function eo(e){var u;const t=ti();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=ai(),r=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())),n=7*864e5,s=v=>{const f=new Date(Date.UTC(v,0,1)),b=(f.getUTCDay()-o+7)%7,p=new Date(f);return p.setUTCDate(f.getUTCDate()-b),7-b<a&&p.setUTCDate(p.getUTCDate()+7),p},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 g=s(l+1);return r.getTime()>=g.getTime()?Math.floor((r.getTime()-g.getTime())/n)+1:Math.floor((r.getTime()-d.getTime())/n)+1}function oi(e,t){const a=(t==null?void 0:t.locale)??ti(),o=(t==null?void 0:t.timeZone)??e.timeZone??bc(),r={...e,timeZone:o},n=JSON.stringify({locale:a,options:r}),s=ei.get(n);if(s)return s;const l=new Intl.DateTimeFormat(a,r);return ei.set(n,l),l}const vc=/^(\d{4})-(\d{2})-(\d{2})$/,tb=/^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2})(?::(\d{2}))?(Z|[+-]\d{2}:?\d{2})?$/,ab=/^(\d{1,2}):(\d{2})(?::(\d{2}))?$/;function It(e){if(!e)return null;const t=vc.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 ri(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=ab.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(vc.exec(t))return It(t);const r=tb.exec(t);if(r){const s=r[1],l=r[2],d=r[3],g=r[4],u=r[5],v=r[6]||"00",f=r[7];if(f){const b=f.length===5&&f[3]!==":"?`${f.slice(0,3)}:${f.slice(3)}`:f,p=new Date(`${s}-${l}-${d}T${g}:${u}:${v}${b}`);return Number.isNaN(p.getTime())?null:p}const c=new Date(Number(s),Number(l)-1,Number(d),Number(g),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 Mn(e,t={year:"numeric",month:"2-digit",day:"2-digit"}){const a=It(e??"");if(!a)return e?String(e):"";try{return oi(t,{timeZone:"UTC"}).format(a)}catch{return e?String(e):""}}function An(e,t,a){const o=ri(e);if(!o)return e?String(e):"";try{return oi(t,a).format(o)}catch{return e?String(e):""}}function ob(e){return An(e,{hour:"2-digit",minute:"2-digit"})}function Ar(e,t,a={month:"short",day:"numeric"}){const o=Mn(e??"",a),r=Mn(t??"",a);return!o||!r?"":o===r?o:`${o}${r}`}function ia(e,t){const a=t||bc(),r=oi({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 Dn(e){const t=new Date(e);return t.setUTCHours(0,0,0,0),t}function rb(e,t){const a=[];let o=Dn(e);const r=Dn(t).getTime();for(;o.getTime()<=r;)a.push(new Date(o)),o=new Date(o.getTime()+24*60*60*1e3);return a}function nb(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 Ln(e,t){const a=new Date(e.getTime());return a.setUTCMonth(a.getUTCMonth()+t),a}function hc(e){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+1,0))}const sb={class:"sb-inner"},ib={class:"rc hero"},lb={class:"hero-topbar"},db=["aria-label","title"],cb={class:"seg w2 hero-seg"},ub={class:"ew"},gb={class:"rc-big"},pb={class:"navrow arw-layout"},fb=["disabled","aria-label"],bb={class:"date-pill"},vb=["disabled","aria-label"],hb={class:"sync-row"},mb={class:"sync-left"},yb={class:"sync-txt"},wb=["disabled"],kb={class:"sc"},xb={class:"sc-hd"},_b={key:0,class:"badge"},Cb={key:1,class:"badge badge--std"},Sb={class:"steps"},$b=["onClick","title"],Tb={class:"sn"},Mb={viewBox:"0 0 24 24",width:"13",height:"13",fill:"currentColor"},Ab=["d"],Db={class:"sb-txt"},Lb={class:"dock"},Eb=["disabled"],Nb="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",Ib="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",Ob="M16,5V18H21V5M4,18H9V5H4M10,18H15V5H10V18Z",Bb="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",Hb="M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z",Fb="M3 11H11V3H3M5 5H9V9H5M13 21H21V13H13M15 15H19V19H15M3 21H11V13H3M5 15H9V19H5M13 3V11H21V3M19 9H15V5H19Z",Pb="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",Wb=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:Nb,placeholder:"Choose a planning model"},{id:"calendars",label:"Calendars",icon:Ib,placeholder:"No calendars selected"},{id:"deck",label:"Deck",icon:Ob,placeholder:"Deck integration"},{id:"goals",label:"Goals",icon:Bb,placeholder:"Set weekly targets"},{id:"preferences",label:"Preferences",icon:Hb,placeholder:"Theme and hours"},{id:"dashboard",label:"Dashboard",icon:Fb,placeholder:"Layout preset"},{id:"review",label:"Review",icon:Pb,placeholder:"Confirm and save"}],o=e,r=x(()=>o.range==="month"?"This month":"This week"),n=x(()=>{const l=It(o.from);return l?o.range==="month"?`Month ${l.getUTCMonth()+1}`:`Week ${eo(l)}`:o.range==="month"?"Month":"Week"}),s=x(()=>o.isLoading?"Syncing…":o.lastSync??"Ready");return(l,d)=>(h(),dt(M(Jf),null,{default:kt(()=>[Ps(l.$slots,"actions",{},void 0,!0),i("div",sb,[i("div",ib,[i("div",lb,[i("button",{class:"hide-btn",type:"button",onClick:d[0]||(d[0]=g=>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,db),i("div",cb,[i("button",{type:"button",class:ke({on:l.range==="week"}),onClick:d[1]||(d[1]=g=>l.$emit("update:range","week"))},"Week",2),i("button",{type:"button",class:ke({on:l.range==="month"}),onClick:d[2]||(d[2]=g=>l.$emit("update:range","month"))},"Month",2)])]),i("div",ub,N(r.value),1),i("div",gb,N(n.value),1),i("div",pb,[i("button",{class:"arw",type:"button",disabled:l.isLoading,"aria-label":"Previous "+(l.range==="month"?"month":"week"),onClick:d[3]||(d[3]=g=>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,fb),i("div",bb,N(l.from)+" "+N(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]=g=>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,vb)]),i("div",hb,[i("div",mb,[i("div",{class:ke(["sync-dot",{syncing:l.isLoading}])},null,2),i("span",yb,N(s.value),1)]),i("button",{class:"btn-ref",type:"button",disabled:l.isLoading,onClick:d[5]||(d[5]=g=>l.$emit("load"))},"Refresh",8,wb)])]),i("div",kb,[i("div",xb,[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",_b,"Pro")):l.dashboardMode==="standard"?(h(),y("span",Cb,"Std")):ne("",!0)]),i("button",{class:"wiz",type:"button",onClick:d[6]||(d[6]=g=>l.$emit("rerun-onboarding"))}," Open setup wizard "),i("ol",Sb,[(h(),y(ye,null,Ne(a,g=>{var u,v;return i("li",{key:g.id,class:ke(["step",((u=l.guidedHintStatuses)==null?void 0:u[g.id])??"dim"]),onClick:f=>l.$emit("rerun-onboarding",g.id),role:"button",title:"Go to "+g.label},[i("span",Tb,[(h(),y("svg",Mb,[i("path",{d:g.icon},null,8,Ab)]))]),i("div",Db,[i("strong",null,N(g.label),1),i("small",null,N(((v=l.guidedHints)==null?void 0:v[g.id])||g.placeholder),1)])],10,$b)}),64))])]),i("div",Lb,[i("button",{class:"dk-btn",type:"button",title:"Keyboard shortcuts","aria-label":"Keyboard shortcuts",onClick:d[7]||(d[7]=g=>l.$emit("open-shortcuts",g.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]=g=>l.$emit("open-release-notes"))},[...d[15]||(d[15]=[i("b",null,"✦",-1),i("span",null,"New",-1)])],10,Eb),i("button",{class:"dk-btn",type:"button",title:"Profiles and backups","aria-label":"Profiles and backups",onClick:d[9]||(d[9]=g=>l.$emit("open-profiles"))},[...d[16]||(d[16]=[i("b",null,"◎",-1),i("span",null,"Profiles",-1)])])])])]),_:3}))}}),ct=(e,t)=>{const a=e.__vccOpts||e;for(const[o,r]of t)a[o]=r;return a},zb=ct(Wb,[["__scopeId","data-v-88e39507"]]),Rb=["aria-labelledby","aria-label"],jb=["onKeydown"],ni=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&&Zt(()=>{var g;(g=r.value)==null||g.focus()}).catch(()=>{})}),(d,g)=>(h(),dt(qd,{name:"onboarding-fade"},{default:kt(()=>[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:g[0]||(g[0]=Xe(()=>{},["stop"])),onKeydown:Da(Xe(l,["prevent"]),["esc"])},[Ps(d.$slots,"default")],42,jb)],8,Rb)):ne("",!0)]),_:3}))}}),Vb={class:"intro-step"},Ub={key:0,class:"intro-route-grid intro-route-grid--three"},Gb={key:1,class:"intro-route-grid intro-route-grid--two"},Kb={key:2,class:"config-warning"},qb={class:"config-warning__actions"},Jb={class:"hint"},Zb=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",Vb,[a[17]||(a[17]=Za('<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",Ub,[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",Gb,[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",Kb,[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",qb,[Re(M(sa),{type:"tertiary",size:"small",disabled:t.snapshotSaving||t.saving,"aria-busy":t.snapshotSaving,onClick:t.onSaveCurrentConfig},{default:kt(()=>[...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"},N(t.snapshotNotice.message),3)):ne("",!0)])):ne("",!0),i("p",Jb,N(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)]))}}),Yb={class:"preferences-step"},Xb={class:"preferences-grid preferences-grid--core-optional"},Qb={class:"pref-card pref-card--core pref-card--stack"},ev={class:"field-row"},tv={class:"field-actions"},av={class:"value-chip"},ov={key:0,class:"editor-card"},rv={class:"choice-strip"},nv={class:"quiet"},sv={class:"field-row"},iv={class:"field-actions"},lv={class:"value-chip"},dv={key:1,class:"editor-card"},cv={class:"choice-strip"},uv={class:"inline-input"},gv=["value"],pv={class:"field-row"},fv={class:"field-actions"},bv={class:"value-chip"},vv={key:2,class:"editor-card"},hv={class:"choice-strip compact"},mv=["onClick"],yv={class:"pref-card pref-card--stack"},wv={class:"module-card"},kv={class:"row"},xv={class:"soft-pill"},_v={key:0,class:"editor-card"},Cv={class:"field-row"},Sv={class:"field-actions"},$v={key:0,class:"editor-card"},Tv={class:"field-row"},Mv={class:"field-actions"},Av={key:0,class:"field-row"},Dv={class:"field-actions field-actions--wrap"},Lv={key:1,class:"field-row"},Ev={class:"field-actions"},Nv=["value"],Iv={key:1,class:"editor-card"},Ov={class:"field-row"},Bv={class:"field-actions"},Hv={key:0,class:"field-row"},Fv={class:"field-actions field-actions--wrap"},Pv={key:1,class:"field-row"},Wv={class:"field-actions"},zv=["value"],Rv={class:"field-row"},jv={class:"field-actions"},Vv={key:2,class:"field-row"},Uv={class:"field-actions field-actions--wrap"},Gv={key:3,class:"field-row"},Kv={class:"field-actions field-actions--wrap"},qv={key:4,class:"field-row"},Jv={class:"field-actions"},Zv=["disabled"],Yv=["disabled"],Xv=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`),g=x(()=>`${t.trendLookbackInput}`);function u(R){a.value=(a.value===R,R)}function v(R){t.onAllDayHoursChange({value:String(R)})}function f(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 b(){if(!(!t.sendCheckpointReport||n.value)){n.value=!0;try{await t.sendCheckpointReport()}finally{n.value=!1}}}const{themePreference:p,previewTheme:$,allDayHoursInput:S,trendLookbackInput:T,reportingDraft:C}=Yg(t),{setThemePreference:P,onAllDayHoursChange:O,setReportingEnabled:I,setReportingModeEnabled:_,setReportingModeDelivery:w,updateReporting:m,updateReportingMode:k,sendTestReport:A}=t;return(R,L)=>(h(),y("div",Yb,[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",Xb,[i("section",Qb,[L[36]||(L[36]=i("h4",null,"Core defaults",-1)),i("div",ev,[L[26]||(L[26]=i("div",{class:"field-copy"},[i("strong",null,"Theme"),i("p",null,"Follow Nextcloud / light / dark")],-1)),i("div",tv,[i("span",av,N(l.value),1),i("button",{type:"button",class:"action-chip",onClick:L[0]||(L[0]=J=>u("theme"))},"Choose")])]),a.value==="theme"?(h(),y("div",ov,[L[27]||(L[27]=i("strong",null,"Open theme selection",-1)),i("div",rv,[i("button",{type:"button",class:ke(["choice-pill",{active:M(p)==="auto"}]),onClick:L[1]||(L[1]=J=>M(P)("auto"))}," Follow Nextcloud ",2),i("button",{type:"button",class:ke(["choice-pill",{active:M(p)==="light"}]),onClick:L[2]||(L[2]=J=>M(P)("light"))}," Light ",2),i("button",{type:"button",class:ke(["choice-pill",{active:M(p)==="dark"}]),onClick:L[3]||(L[3]=J=>M(P)("dark"))}," Dark ",2)]),i("p",nv,"Current preview follows "+N(M($)==="dark"?"dark":"light")+" mode.",1)])):ne("",!0),i("div",sv,[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",iv,[i("span",lv,N(d.value),1),i("button",{type:"button",class:"action-chip",onClick:L[4]||(L[4]=J=>u("allDay"))},"Edit")])]),a.value==="allDay"?(h(),y("div",dv,[L[31]||(L[31]=i("strong",null,"Open all-day hours editor",-1)),i("div",cv,[i("button",{type:"button",class:ke(["choice-pill",{active:M(S)===6}]),onClick:L[5]||(L[5]=J=>v(6))}," 6 h ",2),i("button",{type:"button",class:ke(["choice-pill",{active:M(S)===8}]),onClick:L[6]||(L[6]=J=>v(8))}," 8 h ",2),i("button",{type:"button",class:ke(["choice-pill",{active:M(S)===10}]),onClick:L[7]||(L[7]=J=>v(10))}," 10 h ",2),i("label",uv,[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]=J=>M(O)(J.target))},null,40,gv),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",pv,[L[33]||(L[33]=i("div",{class:"field-copy"},[i("strong",null,"Trend lookback"),i("p",null,"Global default for trends.")],-1)),i("div",fv,[i("span",bv,N(g.value),1),i("button",{type:"button",class:"action-chip",onClick:L[9]||(L[9]=J=>u("lookback"))},"Choose")])]),a.value==="lookback"?(h(),y("div",vv,[L[34]||(L[34]=i("strong",null,"Open trend lookback selection",-1)),i("div",hv,[(h(),y(ye,null,Ne(s,J=>i("button",{key:J,type:"button",class:ke(["choice-pill",{active:M(T)===J}]),onClick:K=>f(J)},N(J)+" week"+N(J===1?"":"s"),11,mv)),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",yv,[L[53]||(L[53]=i("h4",null,"Add-on modules",-1)),i("div",wv,[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",kv,[i("span",xv,N(M(C).enabled?"Recap on":"Recap off"),1),i("button",{type:"button",class:"action-chip",onClick:L[10]||(L[10]=J=>o.value=!o.value)},N(o.value?"Close module":"Open module"),1)])]),o.value?(h(),y("div",_v,[L[52]||(L[52]=i("strong",null,"Open recap reporting module",-1)),i("div",Cv,[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",Sv,[i("button",{type:"button",class:ke(["toggle-chip",{on:M(C).enabled}]),onClick:L[11]||(L[11]=J=>M(I)(!M(C).enabled))},N(M(C).enabled?"On":"Off"),3)])]),M(C).enabled?(h(),y("div",$v,[L[43]||(L[43]=i("strong",null,"Weekly recap",-1)),i("div",Tv,[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",Mv,[i("button",{type:"button",class:ke(["toggle-chip",{on:M(C).modes.week.enabled}]),onClick:L[12]||(L[12]=J=>M(_)("week",!M(C).modes.week.enabled))},N(M(C).modes.week.enabled?"On":"Off"),3)])]),M(C).modes.week.enabled?(h(),y("div",Av,[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",Dv,[i("button",{type:"button",class:ke(["choice-pill",{active:M(C).modes.week.delivery==="final"}]),onClick:L[13]||(L[13]=J=>M(w)("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]=J=>M(w)("week","checkpoint_final"))}," Checkpoint + final ",2)])])):ne("",!0),M(C).modes.week.enabled?(h(),y("div",Lv,[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",Ev,[i("input",{class:"time-input",type:"time",step:"900",value:M(C).modes.week.sendTimeLocal,onInput:L[15]||(L[15]=J=>M(k)("week",{sendTimeLocal:J.target.value||"06:00"}))},null,40,Nv)])])):ne("",!0)])):ne("",!0),M(C).enabled?(h(),y("div",Iv,[L[47]||(L[47]=i("strong",null,"Monthly recap",-1)),i("div",Ov,[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",Bv,[i("button",{type:"button",class:ke(["toggle-chip",{on:M(C).modes.month.enabled}]),onClick:L[16]||(L[16]=J=>M(_)("month",!M(C).modes.month.enabled))},N(M(C).modes.month.enabled?"On":"Off"),3)])]),M(C).modes.month.enabled?(h(),y("div",Hv,[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",Fv,[i("button",{type:"button",class:ke(["choice-pill",{active:M(C).modes.month.delivery==="final"}]),onClick:L[17]||(L[17]=J=>M(w)("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]=J=>M(w)("month","checkpoint_final"))}," Checkpoint + final ",2)])])):ne("",!0),M(C).modes.month.enabled?(h(),y("div",Pv,[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",Wv,[i("input",{class:"time-input",type:"time",step:"900",value:M(C).modes.month.sendTimeLocal,onInput:L[19]||(L[19]=J=>M(k)("month",{sendTimeLocal:J.target.value||"18:00"}))},null,40,zv)])])):ne("",!0)])):ne("",!0),i("div",Rv,[L[48]||(L[48]=i("div",{class:"field-copy"},[i("strong",null,"Risk alert"),i("p",null,"Highlight if targets drift.")],-1)),i("div",jv,[i("button",{type:"button",class:ke(["toggle-chip",{on:M(C).alertOnRisk}]),onClick:L[20]||(L[20]=J=>M(m)({alertOnRisk:!M(C).alertOnRisk}))},N(M(C).alertOnRisk?"On":"Off"),3)])]),M(C).enabled?(h(),y("div",Vv,[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",Uv,[i("button",{type:"button",class:ke(["choice-pill",{active:M(C).riskThreshold===.7}]),onClick:L[21]||(L[21]=J=>M(m)({riskThreshold:.7}))}," 70% ",2),i("button",{type:"button",class:ke(["choice-pill",{active:M(C).riskThreshold===.85}]),onClick:L[22]||(L[22]=J=>M(m)({riskThreshold:.85}))}," 85% ",2),i("button",{type:"button",class:ke(["choice-pill",{active:M(C).riskThreshold===.95}]),onClick:L[23]||(L[23]=J=>M(m)({riskThreshold:.95}))}," 95% ",2)])])):ne("",!0),M(C).enabled?(h(),y("div",Gv,[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",Kv,[i("button",{type:"button",class:ke(["toggle-chip",{on:M(C).notifyEmail}]),onClick:L[24]||(L[24]=J=>M(m)({notifyEmail:!M(C).notifyEmail}))}," Email "+N(M(C).notifyEmail?"On":"Off"),3),i("button",{type:"button",class:ke(["toggle-chip",{on:M(C).notifyNotification}]),onClick:L[25]||(L[25]=J=>M(m)({notifyNotification:!M(C).notifyNotification}))}," In-app "+N(M(C).notifyNotification?"On":"Off"),3)])])):ne("",!0),M(C).enabled&&(M(A)||R.sendCheckpointReport)?(h(),y("div",qv,[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",Jv,[R.sendCheckpointReport?(h(),y("button",{key:0,type:"button",class:"action-chip",disabled:n.value||r.value,onClick:b},N(n.value?"Sending…":"Checkpoint"),9,Zv)):ne("",!0),M(A)?(h(),y("button",{key:1,type:"button",class:"action-chip",disabled:r.value||n.value,onClick:c},N(r.value?"Sending…":"Recap"),9,Yv)):ne("",!0)])])):ne("",!0)])):ne("",!0)])])]))}}),Qv={class:"pref-card pref-card--deck deck-step-card"},eh={class:"toggle-row"},th=["checked"],ah={key:0,class:"selection-step-toolbar"},oh={class:"selection-step-toolbar__meta"},rh={class:"selection-step-toolbar__actions"},nh=["disabled"],sh=["disabled"],ih={class:"deck-board-list deck-board-list--scroll"},lh={key:0,class:"deck-status"},dh={key:1,class:"deck-status deck-status--error"},ch={key:0,class:"deck-status"},uh={key:1,class:"deck-board-options deck-board-options--list",role:"list"},gh=["checked","onChange"],ph={class:"calendar-item__state"},fh=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",Qv,[i("label",eh,[i("input",{type:"checkbox",checked:s.deckSettingsDraft.enabled,onChange:l[0]||(l[0]=d=>s.setDeckEnabled(d.target.checked))},null,40,th),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",ah,[i("span",oh,N(a.value)+" of "+N(s.deckBoards.length)+" boards selected",1),i("div",rh,[i("button",{type:"button",class:"ghost-btn",disabled:o.value,onClick:r},"Select all",8,nh),i("button",{type:"button",class:"ghost-btn",disabled:a.value===0,onClick:n},"Deselect all",8,sh)])])):ne("",!0),i("div",ih,[s.deckBoardsLoading?(h(),y("p",lh,"Loading Deck boards…")):s.deckBoardsError?(h(),y("p",dh,N(s.deckBoardsError),1)):(h(),y(ye,{key:2},[s.deckBoards.length?(h(),y("div",uh,[(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:g=>s.toggleDeckBoard(d.id,g.target.checked)},null,40,gh),l[2]||(l[2]=i("span",{class:"dot"},null,-1)),i("span",null,N(d.title),1),i("span",ph,N(s.isDeckBoardVisible(d.id)?"selected":"not selected"),1)]))),128))])):(h(),y("p",ch,"No boards yet."))],64))])],64)):ne("",!0)])],64))}}),bh={class:"strategy-grid dashboard-preset-grid"},vh=["onClick"],hh={class:"dashboard-tab-strip"},mh={class:"subtitle"},yh={class:"mini-row"},wh={class:"pill"},kh={class:"pill"},xh=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",bh,[(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",hh,[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]=Za('<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]=Za('<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]=Za('<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,N(o.title),1),i("p",mh,N(o.subtitle),1),i("div",yh,[i("span",wh,N(o.widgets),1),i("span",kh,N(o.badge),1)])],42,vh))),128))])],64))}}),_h={class:"strategy-grid"},Ch=["onClick"],Sh={class:"subtitle"},$h=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",_h,[(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,N(o.title),1),i("p",Sh,N(o.subtitle),1),i("ul",null,[(h(!0),y(ye,null,Ne(o.highlights,r=>(h(),y("li",{key:r},N(r),1))),128))]),i("footer",null,"Best for: "+N(o.recommendedFor),1)],42,Ch))),128))])],64))}}),Th={key:0,class:"selection-step-toolbar"},Mh={class:"selection-step-toolbar__meta"},Ah={class:"selection-step-toolbar__actions"},Dh=["disabled"],Lh=["disabled"],Eh={class:"calendar-list calendar-list--scroll"},Nh=["value","checked","onChange"],Ih={class:"calendar-item__label"},Oh={class:"calendar-item__state"},Bh={key:1,class:"warning"},Hh=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",Th,[i("span",Mh,N(n.localSelection.length)+" of "+N(n.calendars.length)+" selected",1),i("div",Ah,[i("button",{type:"button",class:"ghost-btn",disabled:a.value,onClick:o},"Select all",8,Dh),i("button",{type:"button",class:"ghost-btn",disabled:!n.localSelection.length,onClick:r},"Deselect all",8,Lh)])])):ne("",!0),i("div",Eh,[(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,Nh),i("span",{class:"dot",style:He({backgroundColor:l.color||"#3B82F6"})},null,4),i("span",Ih,N(l.displayname),1),i("span",Oh,N(n.localSelection.includes(l.id)?"selected":"not selected"),1)],2))),128))]),n.localSelection.length?ne("",!0):(h(),y("div",Bh,"Select at least one calendar to continue."))],64))}}),Fh={class:"cpp-wrap","data-color-popover":""},Ph=["disabled","aria-expanded","aria-label"],Wh=["onKeydown"],zh={class:"cpp-grid",role:"group","aria-label":"Preset colors"},Rh=["title","aria-label","onClick"],jh={class:"cpp-custom"},Vh=["value"],En=ct(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&&Zt(()=>{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 g(v){const f=v.target.value;/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(f)&&o("update:modelValue",f)}function u(v){v.target.closest("[data-color-popover]")||l()}return Nt(()=>document.addEventListener("click",u)),Tt(()=>document.removeEventListener("click",u)),(v,f)=>(h(),y("div",Fh,[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),Ps(v.$slots,"default",{},()=>[f[0]||(f[0]=Ge("Color",-1))],!0)],8,Ph),r.value?(h(),y("div",{key:0,ref_key:"popoverRef",ref:n,class:"cpp-popover",tabindex:"-1",onKeydown:Da(Xe(l,["prevent"]),["esc"])},[i("div",zh,[(h(!0),y(ye,null,Ne(v.palette,c=>{var b;return h(),y("button",{key:c,type:"button",class:ke(["cpp-swatch",{active:((b=v.modelValue)==null?void 0:b.toUpperCase())===c.toUpperCase()}]),style:He({background:c}),title:c,"aria-label":c,onClick:p=>d(c)},null,14,Rh)}),128))]),i("label",jh,[f[1]||(f[1]=i("span",null,"Custom",-1)),i("input",{type:"color",class:"cpp-custom-input",value:v.modelValue,onInput:g},null,40,Vh)])],40,Wh)):ne("",!0)]))}}),[["__scopeId","data-v-81fba48e"]]),Uh={class:"goals-step"},Gh={key:0,class:"goal-single"},Kh={class:"goal-single__editor"},qh={class:"field"},Jh={class:"input-unit"},Zh=["value"],Yh={key:0,class:"hint"},Xh={key:1,class:"goal-calendar"},Qh={key:0,class:"goal-suggestion-toolbar"},em={class:"goal-suggestion-toolbar__cluster"},tm={key:0,class:"goal-suggestion-inline-editor"},am=["max","value"],om={class:"goal-suggestion-inline-editor__meta"},rm={class:"goal-suggestion-toolbar__meta"},nm={class:"goal-calendar-list"},sm={class:"goal-calendar-row__main"},im={class:"goal-suggestion-inline"},lm=["onClick"],dm={key:1},cm={class:"input-unit"},um=["value","onInput"],gm={key:2,class:"goal-advanced goal-advanced--b26"},pm={class:"goal-template-strip"},fm=["onClick"],bm={class:"goal-preset-swatches"},vm={class:"goal-panel-card"},hm={class:"goal-panel-card__head"},mm={class:"goal-panel-pills"},ym={class:"pill"},wm={class:"pill"},km={key:0,class:"goal-suggestion-toolbar goal-suggestion-toolbar--panel"},xm={class:"goal-suggestion-toolbar__cluster"},_m={key:0,class:"goal-suggestion-inline-editor"},Cm=["max","value"],Sm={class:"goal-suggestion-inline-editor__meta"},$m={class:"goal-suggestion-toolbar__meta"},Tm={key:1,class:"goal-mismatch-box"},Mm={key:2,class:"goal-mismatch-box goal-mismatch-box--ok"},Am={class:"goal-category-list goal-category-list--accordion"},Dm=["onDragstart","onDrop"],Lm={class:"goal-category-titlebar"},Em=["value","onInput"],Nm={class:"value-pill"},Im={class:"goal-category-action-card"},Om={class:"field goal-field-stack goal-inline-target goal-action-block"},Bm={class:"input-unit input-unit--small"},Hm=["value","onInput"],Fm={class:"field goal-field-stack goal-color-stack goal-color-stack--inline goal-action-block"},Pm={class:"field goal-checkbox goal-action-block"},Wm={class:"goal-checkbox__control"},zm=["checked","onChange"],Rm={class:"field goal-pace-field goal-action-block"},jm=["value","onChange"],Vm={class:"goal-suggestion-stack goal-suggestion-stack--inline goal-action-block"},Um=["onClick"],Gm={key:1,class:"goal-suggestion-pill goal-suggestion-pill--muted"},Km={class:"goal-category-action-icons"},qm=["title"],Jm=["aria-label","onChange"],Zm={value:""},Ym=["value"],Xm=["disabled","onClick"],Qm={class:"goal-reorder-tools goal-reorder-tools--surface goal-reorder-tools--compact","aria-label":"Category reorder controls"},ey=["onClick"],ty=["onClick"],ay=["onClick"],oy={class:"mini-pills"},ry={class:"chevron-pill"},ny={class:"row-name"},sy={class:"value-pill"},iy={key:0,class:"goal-category-assigned-badges","aria-label":"Assigned calendars"},ly={class:"goal-calendar-badge__name"},dy={class:"goal-calendar-badge__hours"},cy={key:0,class:"goal-category-editor"},uy={class:"goal-category-row-bottom"},gy={class:"goal-nice-select"},py={key:0,class:"goal-calendar-sublist"},fy=["onDragstart","onDrop"],by={class:"goal-calendar-subrow__main"},vy={class:"row-name"},hy={class:"input-unit input-unit--small"},my=["value","onInput"],yy={class:"goal-calendar-subrow__status"},wy=["disabled","onClick"],ky={class:"goal-calendar-subrow__actions"},xy={class:"goal-reorder-tools goal-reorder-tools--calendar goal-reorder-tools--surface","aria-label":"Calendar reorder controls"},_y=["onClick"],Cy=["onClick"],Sy=["aria-label","title","onClick"],$y={key:1,class:"hint"},Ty={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((w,m)=>w+Number(t.suggestedCalendarTargets[m.id]??0),0)),g=x(()=>w=>t.selectedCalendars.filter(m=>t.assignments[m.id]===w)),u=x(()=>w=>t.selectedCalendars.filter(m=>{const k=t.assignments[m.id];return!k||k===w})),v=x(()=>t.categories.map(w=>{const m=t.selectedCalendars.filter(L=>t.assignments[L.id]===w.id),k=m.reduce((L,J)=>L+Number(t.getCalendarTarget(J.id)||0),0),A=Number(w.targetHours||0),R=Math.abs(A-k);return{id:w.id,label:w.label||"Untitled category",assigned:k,target:A,mismatch:R,count:m.length}})),f=x(()=>v.value.filter(m=>m.mismatch>.01).sort((m,k)=>k.mismatch-m.mismatch)[0]??null);Oe(()=>{var w;return[t.categories.map(m=>m.id).join(","),(w=f.value)==null?void 0:w.id].join("::")},()=>{var w,m,k;if((w=f.value)!=null&&w.id){r.value=f.value.id;return}t.categories.find(A=>A.id===r.value)?r.value||(r.value=((k=t.categories[0])==null?void 0:k.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 w=t.categoryPresets[0];n.value=w.id,l&&clearTimeout(l),l=setTimeout(()=>{t.applyCategoryPreset(w)},0)}},{immediate:!0});function c(w){a.value=w}function b(w){a.value&&(t.reorderCategory(a.value,w),a.value="")}function p(w){o.value=w}function $(w){o.value&&(t.reorderSelectedCalendar(o.value,w),o.value="")}function S(w,m){const k=m.value;k&&(t.assignCalendar(k,w),m.value="")}function T(w){return v.value.find(m=>m.id===w.id)??{id:w.id,label:w.label||"Untitled category",assigned:0,target:Number(w.targetHours||0),mismatch:Number(w.targetHours||0),count:0}}function C(w){const m=T(w);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 P(w){return`${Number(t.getCalendarTarget(w)||0).toFixed(1)} h`}function O(w){const m=Number(t.suggestedCalendarTargets[w]??0);return m>0?`Suggested ${m.toFixed(1)} h`:`Assigned ${P(w)}`}function I(w){return w===0?"is-cool":w===1?"is-warm":"is-forest"}function _(w){t.categories.length>0&&n.value!==w.id&&!(typeof window>"u"||window.confirm("Replace the current categories with this example set?"))||(n.value=w.id,t.applyCategoryPreset(w))}return(w,m)=>(h(),y("div",Uh,[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)),w.selectedStrategy==="total_only"?(h(),y("section",Gh,[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",Kh,[i("label",qh,[m[11]||(m[11]=i("span",{class:"label"},"Weekly target",-1)),i("div",Jh,[i("input",{type:"number",min:"0",max:"1000",step:"0.5",value:w.totalHoursInput??"",onInput:m[0]||(m[0]=k=>w.onTotalHoursChange(k.target))},null,40,Zh),m[10]||(m[10]=i("span",{class:"unit"},"h / week",-1))])]),d.value>0?(h(),y("p",Yh,[m[12]||(m[12]=Ge(" Suggested from recent activity: ",-1)),i("button",{type:"button",class:"goal-suggestion-link",onClick:m[1]||(m[1]=(...k)=>w.onApplyTotalSuggestion&&w.onApplyTotalSuggestion(...k))},[i("strong",null,N(d.value.toFixed(1))+" h / week",1)])])):ne("",!0)])])):w.selectedStrategy==="total_plus_categories"?(h(),y("section",Xh,[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)),w.historySummary.available?(h(),y("div",Qh,[i("div",em,[i("button",{type:"button",class:ke(["goal-suggestion-toggle",{"is-open":s.value}]),onClick:m[2]||(m[2]=k=>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",tm,[m[15]||(m[15]=i("span",{class:"goal-suggestion-inline-editor__label"},"Lookback",-1)),i("input",{type:"number",min:"1",max:w.historySummary.available,value:w.activeHistoryLookback,onInput:m[3]||(m[3]=k=>w.onTrendLookbackChange(k.target))},null,40,am),i("span",om,"/ "+N(w.historySummary.available)+" weeks",1)])):ne("",!0)]),i("span",rm,"Using last "+N(w.activeHistoryLookback)+" week"+N(w.activeHistoryLookback===1?"":"s")+" for calendar suggestions",1)])):ne("",!0),i("div",nm,[(h(!0),y(ye,null,Ne(w.selectedCalendars,k=>(h(),y("div",{key:k.id,class:"goal-calendar-row"},[i("div",sm,[i("span",{class:"dot",style:He({backgroundColor:k.color||"#3B82F6"})},null,4),i("div",null,[i("strong",null,N(k.displayname),1),i("div",im,[w.suggestedCalendarTargets[k.id]?(h(),y("button",{key:0,type:"button",class:"goal-suggestion-link",onClick:A=>w.onApplyCalendarSuggestion(k.id)}," Suggested "+N(w.suggestedCalendarTargets[k.id].toFixed(1))+" h ",9,lm)):(h(),y("span",dm,"No recent suggestion"))])])]),i("div",cm,[i("input",{type:"number",min:"0",step:"0.25",value:w.getCalendarTarget(k.id),onInput:A=>w.setCalendarTarget(k.id,A.target.value)},null,40,um),m[16]||(m[16]=i("span",{class:"unit"},"h / week",-1))])]))),128))])])):(h(),y("section",gm,[i("div",pm,[(h(!0),y(ye,null,Ne(w.categoryPresets,(k,A)=>(h(),y("button",{key:k.id,type:"button",class:ke(["goal-template-card",[{active:n.value===k.id},I(A)]]),onClick:R=>_(k)},[i("strong",null,"Example set "+N(String.fromCharCode(65+A)),1),i("p",null,N(k.colors.length)+" categories · sample only",1),i("div",bm,[(h(!0),y(ye,null,Ne(k.colors,R=>(h(),y("span",{key:`${k.id}-${R}`,class:"goal-preset-swatch",style:He({backgroundColor:R})},null,4))),128))])],10,fm))),128))]),i("article",vm,[i("div",hm,[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",mm,[i("span",ym,N(w.categories.length)+" categories",1),i("span",wm,N(w.selectedCalendars.length)+" calendars selected",1),i("span",{class:ke(["pill",{"pill--warn":f.value}])},N(f.value?"1 mismatch open":"All rows aligned"),3),i("button",{type:"button",class:"ghost-btn",onClick:m[4]||(m[4]=(...k)=>w.addCategory&&w.addCategory(...k))},"Add category")])]),w.historySummary.available?(h(),y("div",km,[i("div",xm,[i("button",{type:"button",class:ke(["goal-suggestion-toggle",{"is-open":s.value}]),onClick:m[5]||(m[5]=k=>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",_m,[m[20]||(m[20]=i("span",{class:"goal-suggestion-inline-editor__label"},"Lookback",-1)),i("input",{type:"number",min:"1",max:w.historySummary.available,value:w.activeHistoryLookback,onInput:m[6]||(m[6]=k=>w.onTrendLookbackChange(k.target))},null,40,Cm),i("span",Sm,"/ "+N(w.historySummary.available)+" weeks",1)])):ne("",!0)]),i("span",$m,"Using last "+N(w.activeHistoryLookback)+" week"+N(w.activeHistoryLookback===1?"":"s")+" for calendar and category suggestions",1)])):ne("",!0),f.value?(h(),y("div",Tm,[i("strong",null,N(f.value.label)+" needs attention first",1),i("p",null,[Ge(N(f.value.label)+" is currently set to ",1),i("strong",null,N(f.value.target.toFixed(1))+" h",1),m[21]||(m[21]=Ge(", but the assigned calendar totals ",-1)),i("strong",null,N(f.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",Mm,[...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",Am,[(h(!0),y(ye,null,Ne(w.categories,k=>(h(),y("article",{key:k.id,class:ke(["goal-category-card goal-category-card--accordion",{"is-open":r.value===k.id}]),draggable:"true",onDragstart:A=>c(k.id),onDragover:m[9]||(m[9]=Xe(()=>{},["prevent"])),onDrop:Xe(A=>b(k.id),["prevent"])},[i("div",{class:ke(["goal-category-top",{"is-open":r.value===k.id}])},[r.value===k.id?(h(),y(ye,{key:0},[i("div",Lm,[i("button",{type:"button",class:"goal-category-collapse","aria-label":"Collapse category",title:"Collapse category",onClick:m[7]||(m[7]=A=>r.value="")}," "),i("span",{class:"color-dot",style:He({backgroundColor:w.resolvedColor(k)})},null,4),i("input",{class:"goal-category-title-input",type:"text",value:k.label,placeholder:"Category title",onInput:A=>w.setCategoryLabel(k.id,A.target.value)},null,40,Em),i("span",Nm,N(Number(k.targetHours||0).toFixed(1))+" h / week",1),i("span",{class:ke(["suggest-pill",{"suggest-pill--warn":T(k).mismatch>.01}])},N(C(k)),3)]),i("div",Im,[m[32]||(m[32]=i("span",{class:"goal-card-corner-grip",title:"Drag to reorder category","aria-hidden":"true"},"⋮⋮",-1)),i("label",Om,[m[25]||(m[25]=i("span",{class:"label"},"Weekly target",-1)),i("div",Bm,[i("input",{type:"number",min:"0",step:"0.5",value:k.targetHours,onInput:A=>w.setCategoryTarget(k.id,A.target.value)},null,40,Hm),m[24]||(m[24]=i("span",{class:"unit"},"h",-1))])]),i("div",Fm,[m[26]||(m[26]=i("span",{class:"label"},"Color",-1)),Re(En,{"model-value":w.resolvedColor(k),"onUpdate:modelValue":A=>w.onColorInput(k.id,A)},null,8,["model-value","onUpdate:modelValue"])]),i("label",Pm,[m[27]||(m[27]=i("span",{class:"label"},"Weekend",-1)),i("span",Wm,[i("input",{type:"checkbox",checked:k.includeWeekend,onChange:A=>w.toggleCategoryWeekend(k.id,A.target.checked)},null,40,zm)])]),i("label",Rm,[m[29]||(m[29]=i("span",{class:"label"},"Pacing",-1)),i("select",{value:k.paceMode,onChange:A=>w.setCategoryPaceMode(k.id,A.target.value)},[...m[28]||(m[28]=[i("option",{value:"days_only"},"Days only",-1),i("option",{value:"time_aware"},"Time aware",-1)])],40,jm)]),i("div",Vm,[m[30]||(m[30]=i("span",{class:"label"},"Suggestion",-1)),w.suggestedCategoryTargets[k.id]?(h(),y("button",{key:0,type:"button",class:"goal-suggestion-pill goal-suggestion-pill--action",onClick:A=>w.onApplyCategorySuggestion(k.id)}," Suggested "+N(w.suggestedCategoryTargets[k.id].toFixed(1))+" h ",9,Um)):(h(),y("span",Gm,"No recent suggestion"))]),i("div",Km,[i("label",{class:ke(["goal-add-calendar-control",{"goal-add-calendar-control--empty":!u.value(k.id).length}]),title:u.value(k.id).length?`Add calendar to ${k.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(k.id).length?`Add calendar to ${k.label||"category"}`:"No calendars left to assign",onChange:A=>S(k.id,A.target)},[i("option",Zm,N(u.value(k.id).length?"Add calendar":"No calendars left"),1),(h(!0),y(ye,null,Ne(u.value(k.id),A=>(h(),y("option",{key:`${k.id}-${A.id}`,value:A.id},N(A.displayname),9,Ym))),128))],40,Jm)],10,qm),i("button",{class:"goal-row-icon-btn",type:"button",disabled:w.categories.length<=1,"aria-label":"Remove category",title:"Remove category",onClick:A=>w.removeCategory(k.id)}," × ",8,Xm),i("div",Qm,[i("button",{type:"button",class:"reorder-icon-btn",title:"Move category up","aria-label":"Move category up",onClick:Xe(A=>w.moveCategory(k.id,"up"),["stop"])},"↑",8,ey),i("button",{type:"button",class:"reorder-icon-btn",title:"Move category down","aria-label":"Move category down",onClick:Xe(A=>w.moveCategory(k.id,"down"),["stop"])},"↓",8,ty)])])])],64)):(h(),y(ye,{key:1},[i("button",{type:"button",class:"goal-category-summary",onClick:A=>r.value=k.id},[i("span",oy,[i("span",ry,N(r.value===k.id?"⌄":""),1),i("span",{class:"color-dot",style:He({backgroundColor:w.resolvedColor(k)})},null,4),i("strong",ny,N(k.label||"Untitled category"),1)]),i("span",sy,N(Number(k.targetHours||0).toFixed(1))+" h / week",1),i("span",{class:ke(["suggest-pill",{"suggest-pill--warn":T(k).mismatch>.01}])},N(C(k)),3)],8,ay),g.value(k.id).length?(h(),y("div",iy,[(h(!0),y(ye,null,Ne(g.value(k.id),A=>(h(),y("span",{key:`${k.id}-${A.id}-badge`,class:"goal-calendar-badge"},[i("span",{class:"goal-calendar-color",style:He({backgroundColor:A.color||"#3B82F6"})},null,4),i("span",ly,N(A.displayname),1),i("span",dy,N(P(A.id)),1)]))),128))])):ne("",!0)],64))],2),r.value===k.id?(h(),y("div",cy,[i("div",uy,[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",gy,[(h(!0),y(ye,null,Ne(g.value(k.id),A=>(h(),y("span",{key:`${k.id}-${A.id}-token`,class:"select-pill"},[i("span",{class:"goal-calendar-color",style:He({backgroundColor:A.color||"#3B82F6"})},null,4),Ge(" "+N(A.displayname),1)]))),128))])]),g.value(k.id).length?(h(),y("div",py,[(h(!0),y(ye,null,Ne(g.value(k.id),A=>(h(),y("div",{key:`${k.id}-${A.id}`,class:"goal-calendar-subrow",draggable:"true",onDragstart:R=>p(A.id),onDragover:m[8]||(m[8]=Xe(()=>{},["prevent"])),onDrop:Xe(R=>$(A.id),["prevent"])},[m[36]||(m[36]=i("span",{class:"goal-calendar-corner-grip",title:"Drag to reorder calendar","aria-hidden":"true"},"⋮⋮",-1)),i("div",by,[i("span",{class:"goal-calendar-color",style:He({backgroundColor:A.color||"#3B82F6"})},null,4),i("strong",vy,N(A.displayname),1)]),i("div",hy,[i("input",{type:"number",min:"0",step:"0.25",value:w.getCalendarTarget(A.id),onInput:R=>w.setCalendarTarget(A.id,R.target.value)},null,40,my),m[34]||(m[34]=i("span",{class:"unit"},"h",-1))]),i("div",yy,[m[35]||(m[35]=i("span",{class:"label"},"Suggestion",-1)),i("button",{type:"button",class:ke(["suggest-pill",{"suggest-pill--muted":!w.suggestedCalendarTargets[A.id],"suggest-pill--action":!!w.suggestedCalendarTargets[A.id]}]),disabled:!w.suggestedCalendarTargets[A.id],onClick:R=>w.onApplyCalendarSuggestion(A.id)},N(O(A.id)),11,wy)]),i("div",ky,[i("div",xy,[i("button",{type:"button",class:"reorder-icon-btn",title:"Move calendar up","aria-label":"Move calendar up",onClick:Xe(R=>w.moveSelectedCalendar(A.id,"up"),["stop"])},"↑",8,_y),i("button",{type:"button",class:"reorder-icon-btn",title:"Move calendar down","aria-label":"Move calendar down",onClick:Xe(R=>w.moveSelectedCalendar(A.id,"down"),["stop"])},"↓",8,Cy)]),i("button",{class:"goal-row-icon-btn",type:"button","aria-label":`Unassign ${A.displayname}`,title:`Unassign ${A.displayname}`,onClick:R=>w.assignCalendar(A.id,"")}," × ",8,Sy)])],40,fy))),128))])):(h(),y("p",$y,"No calendars assigned yet."))])):ne("",!0)],42,Dm))),128))]),w.unassignedSelectedCalendars.length?(h(),y("p",Ty," Unassigned: "+N(w.unassignedSelectedCalendars.map(k=>k.displayname).join(", ")),1)):ne("",!0)])]))]))}}),My={class:"review-layout"},Ay={class:"review-main"},Dy={class:"review-section"},Ly={class:"review-row-list"},Ey={class:"review-row"},Ny={class:"review-row"},Iy={class:"review-row"},Oy={class:"review-row"},By={class:"review-row"},Hy={class:"review-row"},Fy={class:"review-side"},Py={class:"review-section"},Wy={class:"review-checklist"},zy={class:"review-status"},Ry={class:"review-checklist__copy"},jy=["onClick"],Vy={key:0,class:"review-section review-profile"},Uy={class:"toggle-row"},Gy=["checked"],Ky={key:0,class:"field"},qy=["value"],Jy=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 f=t.selectedCalendars.slice(0,3).map(b=>b.displayname),c=t.selectedCalendars.length-f.length;return c>0?`${f.join(", ")} +${c} more`:f.join(", ")}),l=x(()=>{if(t.categoriesEnabled&&t.draftTargetsCategories.length){const f=t.draftTargetsCategories.slice(0,3).map(b=>`${b.label} ${b.targetHours}h`),c=t.draftTargetsCategories.length-f.length;return`${f.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 f=t.deckVisibleBoards.slice(0,2).map(b=>b.title),c=t.deckVisibleBoards.length-f.length;return c>0?`${f.join(", ")} +${c} more`:f.join(", ")}),g=x(()=>`${r.value} · ${t.reportingEnabled?t.reportingSummary:"Recap disabled"}`),u=x(()=>`${o.value} with the selected widget and tab preset.`),v=x(()=>{const f=[];return f.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}),f.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}),f.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}),f.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}),f});return(f,c)=>(h(),y("div",My,[i("div",Ay,[i("section",Dy,[c[14]||(c[14]=i("h4",null,"Configuration summary",-1)),i("div",Ly,[i("article",Ey,[i("div",null,[c[8]||(c[8]=i("strong",null,"Strategy",-1)),i("p",null,N(n.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[0]||(c[0]=b=>f.goToStep("strategy"))},"Edit")]),i("article",Ny,[i("div",null,[c[9]||(c[9]=i("strong",null,"Calendars",-1)),i("p",null,N(s.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[1]||(c[1]=b=>f.goToStep("calendars"))},"Edit")]),i("article",Iy,[i("div",null,[c[10]||(c[10]=i("strong",null,"Deck",-1)),i("p",null,N(d.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[2]||(c[2]=b=>f.goToStep("deck"))},"Edit")]),i("article",Oy,[i("div",null,[c[11]||(c[11]=i("strong",null,"Goals",-1)),i("p",null,N(l.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[3]||(c[3]=b=>f.goToStep("goals"))},"Edit")]),i("article",By,[i("div",null,[c[12]||(c[12]=i("strong",null,"Preferences",-1)),i("p",null,N(g.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[4]||(c[4]=b=>f.goToStep("preferences"))},"Edit")]),i("article",Hy,[i("div",null,[c[13]||(c[13]=i("strong",null,"Dashboard",-1)),i("p",null,N(u.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[5]||(c[5]=b=>f.goToStep("dashboard"))},"Edit")])])])]),i("aside",Fy,[i("section",Py,[c[15]||(c[15]=i("h4",null,"Readiness",-1)),i("ul",Wy,[(h(!0),y(ye,null,Ne(v.value,b=>(h(),y("li",{key:b.id,class:ke(b.ok?"is-ok":"is-warn")},[i("span",zy,N(b.ok?"Ready":"Action needed"),1),i("div",Ry,[i("strong",null,N(b.title),1),i("p",null,N(b.detail),1)]),!b.ok&&b.canFix?(h(),y("button",{key:0,type:"button",class:"review-inline-btn",onClick:p=>f.goToStep(b.step)}," Fix ",8,jy)):ne("",!0)],2))),128))])]),f.showSaveProfile?(h(),y("section",Vy,[c[18]||(c[18]=i("h4",null,"Save profile",-1)),i("label",Uy,[i("input",{type:"checkbox",checked:f.saveProfile,onChange:c[6]||(c[6]=b=>f.setSaveProfile(b.target.checked))},null,40,Gy),c[16]||(c[16]=i("span",null,"Save as new profile",-1))]),f.saveProfile?(h(),y("div",Ky,[c[17]||(c[17]=i("span",{class:"label"},"Profile name",-1)),i("input",{type:"text",value:f.profileName,placeholder:"e.g. Team workload",onInput:c[7]||(c[7]=b=>f.setProfileName(b.target.value))},null,40,qy)])):ne("",!0),c[19]||(c[19]=i("p",{class:"hint"},"Profiles store widgets/tabs, targets, theme, Deck, and reporting settings.",-1))])):ne("",!0)])]))}});function Zy(){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 Zt()}return{autoWizardNeeded:e,manualWizardOpen:t,onboardingRunId:a,onboardingWizardVisible:r,openWizardFromSidebar:n,wizardStartStep:o}}const yc=24*60*60*1e3;function La(e,t,a){const o=Number(e);return Number.isFinite(o)?Math.min(a,Math.max(t,Math.round(o*100)/100)):t}function Yy(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 ta(e){return Number.isFinite(e)?Number(e.toFixed(2)):0}function si(e){return Number.isFinite(e)?Math.max(0,Math.min(999,Number(e.toFixed(2)))):0}function ii(e){if(!Number.isFinite(e))return"0";const t=ta(Math.max(0,e));return Math.abs(t-Math.round(t))<.05?Math.round(t).toString():t.toFixed(1)}function Pa(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 Wa(e){return Pa(Number(e)*4)}function wc(){return{showWeekendShare:!0,showEveningShare:!0,showEarliestLatest:!0,showOverlaps:!0,showLongestSession:!0,showLastDayOff:!0,showDayOffTrend:!0,showHint:!0,forecastMode:"total"}}function Go(){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 Sa(){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:wc(),balance:Go(),includeZeroDaysInStats:!1}}function za(e){return JSON.parse(JSON.stringify(aa(e)))}function aa(e){var s,l,d,g,u,v,f,c,b,p,$,S,T,C,P,O,I,_,w,m,k,A,R,L,J;if(typeof e=="string")try{const K=JSON.parse(e);return aa(K)}catch{return aa(void 0)}const t=Sa(),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:"")||a1(String((K==null?void 0:K.label)??"cat")),le=typeof(K==null?void 0:K.label)=="string"&&K.label.trim()!==""?K.label.trim():t1(Y),Z=La(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=e1(K==null?void 0:K.color),D=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:Z,includeWeekend:de,paceMode:B,color:G,groupIds:D}}),r=o.length?o:t.categories;return{totalHours:La(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:La(((g=(d=a.pace)==null?void 0:d.thresholds)==null?void 0:g.onTrack)??t.pace.thresholds.onTrack,-100,100),atRisk:La(((v=(u=a.pace)==null?void 0:u.thresholds)==null?void 0:v.atRisk)??t.pace.thresholds.atRisk,-100,100)}},forecast:{methodPrimary:((f=a.forecast)==null?void 0:f.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:La(((c=a.forecast)==null?void 0:c.padding)??t.forecast.padding,0,100)},ui:{showTotalDelta:!!(((b=a.ui)==null?void 0:b.showTotalDelta)??t.ui.showTotalDelta),showNeedPerDay:!!(((p=a.ui)==null?void 0:p.showNeedPerDay)??t.ui.showNeedPerDay),showCategoryBlocks:!!((($=a.ui)==null?void 0:$.showCategoryBlocks)??t.ui.showCategoryBlocks),badges:!!(((S=a.ui)==null?void 0:S.badges)??t.ui.badges),includeWeekendToggle:!!(((T=a.ui)==null?void 0:T.includeWeekendToggle)??t.ui.includeWeekendToggle),showCalendarCharts:((C=a.ui)==null?void 0:C.showCalendarCharts)===void 0?t.ui.showCalendarCharts:!!a.ui.showCalendarCharts,showCategoryCharts:((P=a.ui)==null?void 0:P.showCategoryCharts)===void 0?t.ui.showCategoryCharts:!!a.ui.showCategoryCharts},allDayHours:La(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:((w=a.timeSummary)==null?void 0:w.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:((k=a.timeSummary)==null?void 0:k.showWeekend)===void 0?t.timeSummary.showWeekend:!!a.timeSummary.showWeekend,showWeekendShare:((A=a.timeSummary)==null?void 0:A.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:((J=a.timeSummary)==null?void 0:J.showBalance)===void 0?t.timeSummary.showBalance:!!a.timeSummary.showBalance},activityCard:Xy(a.activityCard,t.activityCard),balance:Qy(a.balance,r,t.balance),includeZeroDaysInStats:!!(a.includeZeroDaysInStats??t.includeZeroDaysInStats)}}function Xy(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 Qy(e,t,a){var u,v,f;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 b=typeof c=="string"?c.trim():String(c??"").trim();b&&(r.size&&!r.has(b)||s.includes(b)||s.push(b))}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)??{},g=(e==null?void 0:e.index)??{};return{categories:s,useCategoryMapping:!!((e==null?void 0:e.useCategoryMapping)??a.useCategoryMapping),index:{method:(g==null?void 0:g.method)==="shannon_evenness"?"shannon_evenness":a.index.method,basis:(g==null?void 0:g.basis)==="calendar"||(g==null?void 0:g.basis)==="both"||(g==null?void 0:g.basis)==="off"?g.basis:a.index.basis},thresholds:{noticeAbove:La(l.noticeAbove??a.thresholds.noticeAbove,0,1),noticeBelow:La(l.noticeBelow??a.thresholds.noticeBelow,0,1),warnAbove:La(l.warnAbove??a.thresholds.warnAbove,0,1),warnBelow:La(l.warnBelow??a.thresholds.warnBelow,0,1),warnIndex:La(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:Yy(((v=e==null?void 0:e.trend)==null?void 0:v.lookbackWeeks)??a.trend.lookbackWeeks,1,6)},dayparts:{enabled:!!(((f=e==null?void 0:e.dayparts)==null?void 0:f.enabled)??a.dayparts.enabled)},ui:{showNotes:!!(d.showNotes??a.ui.showNotes)}}}function e1(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 t1(e){return e?e.charAt(0).toUpperCase()+e.slice(1):""}function a1(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 o1(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=r1(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",g=d==="momentum"?n:a,u=Math.max(0,g-e.config.forecast.padding),v=Math.max(0,g+e.config.forecast.padding),f=d==="momentum"?"Momentum":"Linear";return{linear:ta(a),momentum:ta(n),low:ta(Math.max(0,s)),high:ta(Math.max(0,l)),text:`${f} ±${ii(e.config.forecast.padding)}h ≈ ${ii(u)}${ii(v)} h`,primaryMethod:d,primary:ta(g),bandLow:ta(u),bandHigh:ta(v)}}function r1(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 n1(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 Ko=n1;function kc(e){const t=e?aa(e):Sa(),a=(t==null?void 0:t.totalHours)??0,o=(t==null?void 0:t.categories)??[],r={id:"total",label:Ko("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:"~00 h",primaryMethod:(t==null?void 0:t.forecast.methodPrimary)??"linear",primary:0,bandLow:0,bandHigh:0}}}function xc(e){const t=e.config,a=$c(e.from),o=$c(e.to),r=d1(e.byDay),n=(e.byCal||[]).reduce((f,c)=>{const b=Number((c==null?void 0:c.total_hours)??(c==null?void 0:c.hours)??0);return Number.isFinite(b)?f+b:f},0),s=(e.byCal||[]).reduce((f,c)=>{const b=Number((c==null?void 0:c.future_hours)??(c==null?void 0:c.planned_hours)??0);return Number.isFinite(b)?f+b:f},0),l=t.totalHours||0,d=_c({includeWeekend:t.pace.includeWeekendTotal,mode:t.pace.mode,includeZeroDays:t.includeZeroDaysInStats,start:a,end:o,dailyHours:r}),g=Cc({id:"total",label:Ko("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(f=>{const c=l1(f,e.byCal,e.groupsById),b=Sc(f,e.byCal,e.groupsById,"future_hours"),p=f.paceMode||t.pace.mode,$=_c({includeWeekend:f.includeWeekend,mode:p,includeZeroDays:t.includeZeroDaysInStats,start:a,end:o,dailyHours:r});return Cc({id:f.id,label:f.label,actual:c,planned:b,target:f.targetHours,pace:$,thresholds:t.pace.thresholds,includeWeekend:f.includeWeekend,paceMode:p})}),v=o1({config:t,totalProgress:g,dailyHours:r,pace:d});return{total:g,categories:u,forecast:v}}function _c(e){const{start:t,end:a}=e;if(!t||!a)return{totalEligible:0,elapsedEligible:0,daysLeft:0,calendarPercent:0};const o=Dn(new Date),r=bo(t),n=bo(a),s=rb(t,a).filter(v=>e.includeWeekend||!nb(v)),l=s.length;if(l===0)return{totalEligible:0,elapsedEligible:0,daysLeft:0,calendarPercent:0};if(bo(o)>n)return{totalEligible:l,elapsedEligible:l,daysLeft:0,calendarPercent:100};if(bo(o)<r)return{totalEligible:l,elapsedEligible:0,daysLeft:l,calendarPercent:0};let d=0;for(const v of s){const f=bo(v),c=e.dailyHours.get(f)??0;if(!(!e.includeZeroDays&&c<=0&&f!==bo(o))){if(f<bo(o))d+=1;else if(f===bo(o))if(e.mode==="time_aware"){const p=Math.min(new Date().getTime(),v.getTime()+yc)-v.getTime(),$=Math.max(0,Math.min(1,p/yc));(e.includeZeroDays||c>0||$>0)&&(d+=$)}else(e.includeZeroDays||c>0)&&(d+=1)}}const g=si(d/l*100),u=Math.max(0,l-d);return{totalEligible:l,elapsedEligible:d,daysLeft:u,calendarPercent:g}}function Cc(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?si(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,g=s1({percent:r,target:t,gap:d,thresholds:e.thresholds});return{id:e.id,label:e.label,actualHours:ta(a),plannedHours:ta(o),targetHours:ta(t),percent:r,deltaHours:ta(s),remainingHours:ta(Math.max(0,n)),needPerDay:ta(l),daysLeft:Math.max(0,Math.ceil(e.pace.daysLeft)),calendarPercent:si(e.pace.calendarPercent),gap:ta(d),status:g,statusLabel:i1(g),includeWeekend:e.includeWeekend,paceMode:e.paceMode}}function s1(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 i1(e){switch(e){case"on_track":return Ko("On Track");case"at_risk":return Ko("At Risk");case"behind":return Ko("Behind");case"done":return Ko("Done");default:return"—"}}function l1(e,t,a){return Sc(e,t,a,"total_hours")}function Sc(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)??""),g=Number((s==null?void 0:s.group)??(s==null?void 0:s.group_id)??(a==null?void 0:a[d])??0);r&&!r.has(g)||(n+=l)}return n}function d1(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 $c(e){if(!e)return null;const t=It(e);return t?Dn(t):null}function bo(e){return ia(e,"UTC")}const vo=1,c1=[{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"}],Tc=["#2563EB","#F97316","#10B981","#A855F7","#EC4899","#14B8A6","#F59E0B","#6366F1"];function u1(e){const t={};return Object.entries(e).forEach(([a,o])=>{t[a]=Number((o*4).toFixed(2))}),t}function Nn(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 g1(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:Nn(o==null?void 0:o.color)??null}))}),a}function p1(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 Mc(){return c1}function Ac(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 In(e,t,a,o){var $;const r=[...new Set(a.filter(S=>t.some(T=>T.id===S)))],n=aa(Sa()),s={},l={};if(e==="total_only"){const S=za(n);return S.totalHours=S.totalHours||40,S.categories=[],S.ui.showCategoryBlocks=!1,S.ui.showCategoryCharts=!1,S.ui.showCalendarCharts=!1,{selected:r,targetsConfig:aa(S),groups:s,targetsWeek:l,targetsMonth:{}}}if(e==="total_plus_categories"){const S=za(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:aa(S),groups:s,targetsWeek:l,targetsMonth:{}}}const d=Ac(e,t,r),g=g1(($=o==null?void 0:o.categories)!=null&&$.length?o.categories:d.categories),u=p1(r,g.length?g:d.categories,(o==null?void 0:o.assignments)??d.assignments),v=za(n),f=new Map;let c=0;const b=S=>{const T=Nn(S.color);if(T)return T;const C=t.find(O=>u[O.id]===S.id&&Nn(O.color));if(C)return Nn(C.color)??null;const P=Tc[c%Tc.length];return c+=1,P??null};v.categories=g.map((S,T)=>{const C=T+1;return f.set(S.id,C),{id:S.id,label:S.label,targetHours:Number(S.targetHours.toFixed(2)),includeWeekend:S.includeWeekend,paceMode:S.paceMode,color:b(S),groupIds:[C]}}),v.totalHours=v.categories.reduce((S,T)=>S+T.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 p={};return Object.values(u).forEach(S=>{p[S]=(p[S]??0)+1}),Object.entries(u).forEach(([S,T])=>{const C=f.get(T);if(C&&(s[S]=C,e==="full_granular")){const P=v.categories.find(_=>_.id===T);if(!P)return;const O=p[T]||1,I=Number((P.targetHours/O).toFixed(2));l[S]=I}}),{selected:r,targetsConfig:aa(v),groups:s,targetsWeek:l,targetsMonth:u1(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 Dc(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 li(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:Dc(e.modes.week,a.modes.week),month:Dc(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 di(e,t){var v,f,c;const a=t??Do();if(!e||typeof e!="object")return{...a};const o=(b,p)=>{if(typeof b=="boolean")return b;if(typeof b=="number")return b===1?!0:b===0?!1:p;if(typeof b=="string"){const $=b.trim().toLowerCase();if(["1","true","yes","on"].includes($))return!0;if(["0","false","no","off","null",""].includes($))return!1}return p},r=b=>{const p=Number(b);return!Number.isInteger(p)||p<=0||p>1e5?null:p},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),g={autoScroll:o((v=e.ticker)==null?void 0:v.autoScroll,a.ticker.autoScroll),intervalSeconds:f1((f=e.ticker)==null?void 0:f.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(b=>r(b)).filter(b=>Number.isInteger(b)&&b>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:g}}function f1(e,t){const a=Number(e);return Number.isFinite(a)?Math.min(10,Math.max(3,Math.trunc(a))):t}const A7="modulepreload",D7=function(e){return"/"+e},L7={},la=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 Lc(e,t){const a=JSON.parse(JSON.stringify(e||{}));return t==="month"&&(a.totalHours=Wa(a.totalHours??0),a.categories=(a.categories||[]).map(o=>({...o,targetHours:Wa(o.targetHours??0)}))),a}function Ec(e){return{...e,ui:{...(e==null?void 0:e.ui)??{}}}}function b1(e,t){try{return xc({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),kc(e)}}function v1(e){var $,S,T,C,P,O,I,_,w,m;const t=Array.isArray(($=e.config)==null?void 0:$.categories)?e.config.categories:[],a=new Map;(((S=e.summary)==null?void 0:S.categories)||[]).forEach(k=>{a.set(String(k.id),k)});const o=new Map,r={};t.forEach(k=>{const A=String((k==null?void 0:k.id)??"");A&&(r[A]=String((k==null?void 0:k.label)||A),(Array.isArray(k==null?void 0:k.groupIds)?k.groupIds:[]).forEach(R=>{const L=Ic(R);o.set(L,A)}))});const n=new Map,s=new Map;(Array.isArray(e.calendars)?e.calendars:[]).forEach(k=>{var L;const A=String((k==null?void 0:k.id)??"");if(!A)return;const R=((L=e.colorsById)==null?void 0:L[A])||String((k==null?void 0:k.color)||"");s.set(A,{name:String((k==null?void 0:k.displayname)||(k==null?void 0:k.name)||A),color:R||void 0})});const l={};Object.keys(e.groupsById||{}).forEach(k=>{var R;const A=Ic((R=e.groupsById)==null?void 0:R[k]);l[k]=o.get(A)||"__uncategorized__"});const d=new Map;(Array.isArray(e.byCal)?e.byCal:[]).forEach(k=>{const A=String((k==null?void 0:k.id)??(k==null?void 0:k.calendar_id)??(k==null?void 0:k.calendar)??"");if(!A)return;const R=l[A]||"__uncategorized__";d.has(R)||d.set(R,[]),d.get(R).push({...k,calendarId:A})});const g=k=>{var J;if(n.has(k))return n.get(k);const A=t.find(K=>String((K==null?void 0:K.id)??"")===k),R=typeof(A==null?void 0:A.color)=="string"&&A.color?A.color:"";if(R)return n.set(k,R),R;const L=d.get(k)||[];for(const K of L){const Y=(J=s.get(String(K.calendarId)))==null?void 0:J.color;if(Y)return n.set(k,Y),Y}},u=e.currentTargets||{},v=Number(((C=(T=e.summary)==null?void 0:T.total)==null?void 0:C.daysLeft)??0),f=Number(((O=(P=e.summary)==null?void 0:P.total)==null?void 0:O.calendarPercent)??0),c=((_=(I=e.summary)==null?void 0:I.total)==null?void 0:_.paceMode)??((m=(w=e.config)==null?void 0:w.pace)==null?void 0:m.mode)??"days_only",b=(k,A,R)=>{const L=R.reduce((D,V)=>{const he=Number(u[String(V.calendarId)]??0);return Number.isFinite(he)?D+Math.max(0,he):D},0),J=R.reduce((D,V)=>{const he=Number((V==null?void 0:V.total_hours)??(V==null?void 0:V.hours)??0);return Number.isFinite(he)?D+Math.max(0,he):D},0),K=R.reduce((D,V)=>{const he=Number((V==null?void 0:V.future_hours)??(V==null?void 0:V.planned_hours)??0);return Number.isFinite(he)?D+Math.max(0,he):D},0),Y=L>0?Oc(J/L*100):0,le=J-L,Z=Math.max(0,L-J),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?Z/v:0;return{id:k,label:A,actualHours:Pt(J),plannedHours:Pt(K),targetHours:Pt(L),percent:Pt(Y),deltaHours:Pt(le),remainingHours:Pt(Z),needPerDay:Pt(G),daysLeft:v,calendarPercent:Pt(Math.max(0,Math.min(100,f))),gap:Pt(Y-f),status:de,statusLabel:B,includeWeekend:!0,paceMode:c}},p=[];if(t.forEach(k=>{const A=String((k==null?void 0:k.id)??"");if(!A)return;const R=d.get(A)||[];p.push({id:A,label:r[A]||A,rows:R,summary:a.get(A)||b(A,r[A]||A,R),color:g(A)})}),d.has("__uncategorized__")){const k=d.get("__uncategorized__")||[];p.push({id:"__uncategorized__",label:"Unassigned",rows:k,summary:b("__uncategorized__","Unassigned",k),color:g("__uncategorized__"),isUnassigned:!0})}return p}function h1(e){var c,b,p,$,S,T,C,P,O,I,_,w;const t=e.currentTargets||{},a=Array.isArray(e.byCal)?e.byCal:[],o=e.todayHoursByCalendar||{},r=((b=(c=e.config)==null?void 0:c.pace)==null?void 0:b.thresholds)??{onTrack:-2,atRisk:-10},n=!!((($=(p=e.config)==null?void 0:p.pace)==null?void 0:$.includeWeekendTotal)??!0),s=((T=(S=e.summary)==null?void 0:S.total)==null?void 0:T.paceMode)??((P=(C=e.config)==null?void 0:C.pace)==null?void 0:P.mode)??"days_only",l=Number(((I=(O=e.summary)==null?void 0:O.total)==null?void 0:I.daysLeft)??0),d=Number(((w=(_=e.summary)==null?void 0:_.total)==null?void 0:w.calendarPercent)??0),g=new Map;(Array.isArray(e.calendars)?e.calendars:[]).forEach(m=>{var R;const k=String((m==null?void 0:m.id)??"");if(!k)return;const A=((R=e.colorsById)==null?void 0:R[k])||String((m==null?void 0:m.color)||"");g.set(k,{label:String((m==null?void 0:m.displayname)||(m==null?void 0:m.name)||k),color:A||void 0})});const u=new Map;a.forEach(m=>{const k=String((m==null?void 0:m.id)??(m==null?void 0:m.calendar_id)??(m==null?void 0:m.calendar)??"");k&&u.set(k,{...m,calendarId:k})});const v=[],f=m=>{!m||v.includes(m)||v.push(m)};return(Array.isArray(e.calendars)?e.calendars:[]).forEach(m=>{const k=String((m==null?void 0:m.id)??"");k&&(Object.prototype.hasOwnProperty.call(t,k)||u.has(k))&&f(k)}),Object.keys(t).forEach(f),Array.from(u.keys()).forEach(f),v.map(m=>{var Me,ae,U;const k=u.get(m)||{id:m,calendarId:m,total_hours:0,future_hours:0},A=((Me=g.get(m))==null?void 0:Me.label)||String((k==null?void 0:k.calendar)??(k==null?void 0:k.name)??m),R=((ae=g.get(m))==null?void 0:ae.color)||((U=e.colorsById)==null?void 0:U[m]),L=Number(t[m]??0),J=Number((k==null?void 0:k.total_hours)??(k==null?void 0:k.hours)??0),K=Number((k==null?void 0:k.future_hours)??(k==null?void 0:k.planned_hours)??0),Y=Number.isFinite(L)?Math.max(0,L):0,le=Number.isFinite(J)?Math.max(0,J):0,Z=Number.isFinite(K)?Math.max(0,K):0,de=Y>0?Pt(Oc(le/Y*100)):0,B=Pt(le-Y),G=Pt(Math.max(0,Y-le)),D=Pt(de-d),V=Y<=0?"none":de>=100?"done":D>=Number(r.onTrack??-2)?"on_track":D>=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:A,rows:[k],color:R,todayHours:Number(o[m]??0),summary:{id:m,label:A,actualHours:Pt(le),plannedHours:Pt(Z),targetHours:Pt(Y),percent:de,deltaHours:B,remainingHours:G,needPerDay:l>0?Pt(G/l):0,daysLeft:l,calendarPercent:Pt(Math.max(0,Math.min(100,d))),gap:D,status:V,statusLabel:he,includeWeekend:n,paceMode:s}}})}function da(e,t){if(!t)return e;const a=String(t).trim();return a?`${a} · ${e}`:e}function Dr(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 Lr(e){return Array.isArray(e)?Array.from(new Set(e.map(t=>Number(t)).filter(t=>Number.isInteger(t)&&t>0))):typeof e=="string"?Lr(e.split(",")):[]}function Nc(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 m1(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 Ic(e){const t=Number(e);return Number.isFinite(t)?Math.max(0,Math.min(9,Math.trunc(t))):0}function Pt(e){return Math.round(e*100)/100}function Oc(e){return Number.isFinite(e)?Math.max(0,Math.min(999,e)):0}const y1=na(()=>la(()=>Promise.resolve().then(()=>d4),void 0).then(e=>e.default)),Bc="Balance Index",w1={component:y1,defaultLayout:{width:"half",height:"s",order:32},label:"Balance Index",category:"Time",baseTitle:Bc,configurable:!0,supportsColors:!0,defaultOptions:(()=>{const e=Go();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 p,$,S,T,C,P,O,I,_,w,m,k,A,R,L,J,K,Y,le,Z,de,B,G,D,V,he,Me,ae,U,H,j;const a=t.balanceConfig?JSON.parse(JSON.stringify(t.balanceConfig)):Go(),o=Go(),r=((p=e.options)==null?void 0:p.showBadge)!==!1,n=(($=e.options)==null?void 0:$.showTrend)!==!1,s=((S=e.options)==null?void 0:S.showMessages)??((T=a.ui)==null?void 0:T.showMessages)??!0,l=((C=e.options)==null?void 0:C.messageDensity)||"normal",d=l==="few"?1:l==="many"?1/0:3,g=Number.isFinite(t.lookbackWeeks)?Number(t.lookbackWeeks):((P=o.trend)==null?void 0:P.lookbackWeeks)??3,u={noticeAbove:Dr((O=a==null?void 0:a.thresholds)==null?void 0:O.noticeAbove,(I=e.options)==null?void 0:I.noticeAbove),noticeBelow:Dr((_=a==null?void 0:a.thresholds)==null?void 0:_.noticeBelow,(w=e.options)==null?void 0:w.noticeBelow),warnAbove:Dr((m=a==null?void 0:a.thresholds)==null?void 0:m.warnAbove,(k=e.options)==null?void 0:k.warnAbove),warnBelow:Dr((A=a==null?void 0:a.thresholds)==null?void 0:A.warnBelow,(R=e.options)==null?void 0:R.warnBelow),warnIndex:Dr((L=a==null?void 0:a.thresholds)==null?void 0:L.warnIndex,(J=e.options)==null?void 0:J.warnIndex)},v=((K=e.options)==null?void 0:K.indexBasis)||((Y=a==null?void 0:a.index)==null?void 0:Y.basis)||"category",f=(a==null?void 0:a.useCategoryMapping)===!1&&v==="category"?"calendar":v,c=typeof((le=e.options)==null?void 0:le.trendColor)=="string"&&((Z=e.options)!=null&&Z.trendColor.trim())?e.options.trendColor.trim():"#2563EB",b=Math.max(1,Math.min(6,Number.isFinite(g)?Number(g):((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:((D=e.options)==null?void 0:D.showConfig)!==!1,messageLimit:d,lookbackWeeks:b,loopbackCount:b,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:f,thresholds:u,title:da(Bc,(ae=e.options)==null?void 0:ae.titlePrefix),cardBg:((H=(U=e.options)==null?void 0:U.colors)==null?void 0:H.background)??((j=e.options)==null?void 0:j.cardBg),trendColor:c,from:t.from,to:t.to,rangeMode:t.rangeMode}}},k1=na(()=>la(()=>Promise.resolve().then(()=>w4),void 0).then(e=>e.default)),Hc="Category Mix Trend",x1={component:k1,defaultLayout:{width:"half",height:"m",order:47},heightMode:"auto",label:"Category Mix Trend",category:"Charts",baseTitle:Hc,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,g,u,v,f,c,b,p;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:(g=e.options)==null?void 0:g.trendIndicator,title:da(Hc,(u=e.options)==null?void 0:u.titlePrefix),cardBg:(v=e.options)==null?void 0:v.cardBg,toneLowColor:(f=e.options)==null?void 0:f.toneLowColor,toneHighColor:(c=e.options)==null?void 0:c.toneHighColor,shareLowColor:(b=e.options)==null?void 0:b.shareLowColor,shareHighColor:(p=e.options)==null?void 0:p.shareHighColor}}},Fc=["#9aa6b2","#8895a3","#778697","#68788a","#596b7e","#4d6074"];function ci(e){return Fc[e%Fc.length]||"#6f8193"}function On(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 Bn(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 Hn(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 Pc(e){return e==="calendar"?"calendar":"category"}function Fn(e,t){const a=Pc(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 Pn(e){return{mode:Pc(e==null?void 0:e.filterMode),ids:new Set(Hn(e==null?void 0:e.filterIds))}}function _1(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 Er(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 Nr(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)??""),g=String((t==null?void 0:t[d])??"");if(!g||a.size&&!a.has(g))return;n.has(g)||n.set(g,Array.from({length:r.length},()=>0));const u=n.get(g),v=Array.isArray(l==null?void 0:l.data)?l.data:[];u&&r.forEach((f,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 Wn(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 Wc(e){if(!e)return null;const t=eb(),a=new Map;return t.forEach(o=>a.set(o,0)),e.labels.forEach((o,r)=>{const n=S1(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 C1(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 Ir(e){const t=e.perDaySeries;if(!t||!Array.isArray(t.labels)||!Array.isArray(t.series))return null;const a=t.labels.map(p=>String(p??"")),o=t.series.map(p=>{const $=String((p==null?void 0:p.id)??"");return{...p,id:$,name:String((p==null?void 0:p.name)??(p==null?void 0:p.label)??$),color:String((p==null?void 0:p.color)??""),data:a.map((S,T)=>{var P;const C=Number(((P=p==null?void 0:p.data)==null?void 0:P[T])??0);return Number.isFinite(C)?Math.max(0,C):0})}}),r=M1(e.forecastMode),n=ia(new Date),s=a.map(p=>$1.test(p)&&p>n),l=[];if(s.forEach((p,$)=>{p&&l.push($)}),!l.length||r==="off")return{labels:a,series:o};const d=e.targetsConfig??Sa(),g=D1(e.currentTargets),u=e.calendarCategoryMap??{},v=l.length,f=new Map;o.forEach(p=>{let $=0;p.data.forEach((S,T)=>{s[T]||($+=Math.max(0,S))}),f.set(p.id,$)});const c=Array.from(f.values()).reduce((p,$)=>p+$,0),b=new Map;if(o.forEach(p=>{b.set(p.id,A1(a.length))}),r==="total"){const p=Math.max(0,Number(d.totalHours??0)),$=Math.max(0,p-c);if($>1e-4){const S=$/v,T=o.map(P=>P.id),C=zc(T,f,g);T.forEach(P=>{const O=C[P]??0;if(O<=0)return;const I=b.get(P);I&&l.forEach(_=>{I[_]=zn(S*O)})})}}else if(r==="calendar")o.forEach(p=>{const $=g[p.id]??0;if($<=0)return;const S=Math.max(0,f.get(p.id)??0),T=Math.max(0,$-S);if(T<=1e-4)return;const C=T/v,P=b.get(p.id);P&&l.forEach(O=>{P[O]=zn(C)})});else if(r==="category"){const p=new Set,$=Array.isArray(d.categories)?d.categories:[],S=new Map;$.forEach(C=>{S.set(String(C.id),Math.max(0,Number(C.targetHours??0)))});const T=new Map;o.forEach(C=>{const P=u==null?void 0:u[C.id],O=P?String(P):T1;T.has(O)||T.set(O,[]),T.get(O).push(C.id)}),T.forEach((C,P)=>{if(!C.length)return;const O=S.get(P)??0;if(O<=0)return;const I=C.reduce((A,R)=>A+Math.max(0,f.get(R)??0),0),_=Math.max(0,O-I);if(_<=1e-4)return;const w=_/v,m={};C.forEach(A=>{m[A]=g[A]??0});const k=zc(C,f,m);C.forEach(A=>{const R=k[A]??0;if(R<=0)return;const L=b.get(A);L&&(l.forEach(J=>{L[J]=zn(w*R)}),p.add(A))})}),o.forEach(C=>{if(p.has(C.id))return;const P=g[C.id]??0;if(P<=0)return;const O=Math.max(0,f.get(C.id)??0),I=Math.max(0,P-O);if(I<=1e-4)return;const _=I/v,w=b.get(C.id);w&&l.forEach(m=>{w[m]=zn(_)})})}return o.forEach(p=>{const $=b.get(p.id);$&&$.some(S=>S>1e-4)&&(p.forecast=$)}),{labels:a,series:o}}function S1(e){const t=It(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 $1=/^\d{4}-\d{2}-\d{2}$/,T1="__uncategorized__";function M1(e){return e==="off"||e==="calendar"||e==="category"?e:"total"}function A1(e){return Array.from({length:e},()=>0)}function zn(e){const t=Math.round(e*100)/100;return Number.isFinite(t)?t:0}function D1(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 zc(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 L1=na(()=>la(()=>Promise.resolve().then(()=>T4),void 0).then(e=>e.default)),Rc="Day-of-Week Chart",E1={component:L1,defaultLayout:{width:"half",height:"m",order:84},label:"Day-of-Week Chart",category:"Charts",baseTitle:Rc,configurable:!0,defaultOptions:{showLabels:!0,compact:!1,reverseOrder:!1,forecastMode:"total"},dynamicControls:(e,t)=>[...Fn(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,f,c,b,p,$,S,T,C;const{mode:a,ids:o}=Pn(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=((f=e.options)==null?void 0:f.reverseOrder)===!0;let d=null,g=null,u=[];if(s&&s.length){const P=On(s),O=l?P:P.slice().reverse(),I=[],_=[];u=[],O.forEach((w,m)=>{var Z;const k={labels:w.labels||[],series:w.series||[]},A=Ir({perDaySeries:k,forecastMode:(Z=e.options)==null?void 0:Z.forecastMode,targetsConfig:t.targetsConfig,currentTargets:t.currentTargets,calendarCategoryMap:t.calendarCategoryMap}),R=a==="category"?Nr(A,t.calendarCategoryMap||{},o,r):Er(A,o),L=Wn(R),J=Wc(L);if(!J)return;I.length||I.push(...J.labels||[]);const K=ci(m),Y=Bn(w,t.rangeMode),le=(J.data||[]).reduce((de,B)=>de+Math.max(0,Number(B)||0),0);_.push({id:`offset-${w.offset??m}`,name:Y,label:Y,color:K,data:J.data||[]}),le>0&&u.push({id:`offset-${w.offset??m}`,label:Y,color:K})}),g=I.length&&_.length?{labels:I,series:_}:null}else{const P=(c=t.charts)==null?void 0:c.perDaySeries,O=Ir({perDaySeries:P,forecastMode:(b=e.options)==null?void 0:b.forecastMode,targetsConfig:t.targetsConfig,currentTargets:t.currentTargets,calendarCategoryMap:t.calendarCategoryMap}),I=a==="category"?Nr(O,t.calendarCategoryMap||{},o,r):Er(O,o),_=Wn(I);d=Wc(_)}return{title:da(Rc,(p=e.options)==null?void 0:p.titlePrefix),subtitle:a==="category"?"By category":"By calendar",cardBg:($=e.options)==null?void 0:$.cardBg,showHeader:((S=e.options)==null?void 0:S.showHeader)!==!1,showLabels:((T=e.options)==null?void 0:T.showLabels)!==!1,compact:((C=e.options)==null?void 0:C.compact)===!0,xLabel:"Weekday",yLabel:"Hours (h)",chartData:d,groupedData:g,legendItems:u}}},N1=na(()=>la(()=>Promise.resolve().then(()=>R4),void 0).then(e=>e.default)),jc="Time-of-Day Chart",I1={component:N1,defaultLayout:{width:"full",height:"l",order:86},label:"Time-of-Day Chart",category:"Charts",baseTitle:jc,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 g,u,v,f,c,b,p,$,S,T;const a=Number.isFinite(t.lookbackWeeks)?Math.max(1,Math.min(6,Number(t.lookbackWeeks))):1,o=a>1&&Array.isArray((g=t.charts)==null?void 0:g.hodByOffset)?t.charts.hodByOffset:null,r=((u=e.options)==null?void 0:u.reverseOrder)===!0,n=o?On(o):[],l=(r?n:n.slice().reverse()).map((C,P)=>{const O=Array.isArray(C.matrix)?C.matrix:[],I=O.reduce((w,m)=>{const k=Array.isArray(m)?m.reduce((A,R)=>A+Math.max(0,Number(R)||0),0):0;return w+k},0),_=ci(P);return{id:`offset-${C.offset??P}`,label:Bn(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:((f=t.charts)==null?void 0:f.hod)||null;return{title:da(jc,(c=e.options)==null?void 0:c.titlePrefix),cardBg:(b=e.options)==null?void 0:b.cardBg,showHeader:((p=e.options)==null?void 0:p.showHeader)!==!1,showHint:(($=e.options)==null?void 0:$.showHint)===!0,showLegend:((S=e.options)==null?void 0:S.showLegend)!==!1,lookbackMode:(T=e.options)==null?void 0:T.lookbackMode,lookbackWeeks:t.lookbackWeeks,rangeMode:t.rangeMode,hodData:d,lookbackEntries:l}}},O1=na(()=>la(()=>Promise.resolve().then(()=>q4),void 0).then(e=>e.default)),Vc="Daily Chart",B1={component:O1,defaultLayout:{width:"half",height:"m",order:82},label:"Daily Chart",category:"Charts",baseTitle:Vc,configurable:!0,defaultOptions:{showLabels:!1,compact:!1,reverseOrder:!1,forecastMode:"total"},dynamicControls:(e,t)=>[...Fn(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,f,c,b,p,$,S,T;const{mode:a,ids:o}=Pn(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,g=[];if(s&&s.length){const C=On(s),P=l?C:C.slice().reverse(),O=[],I=[],_=[];g=[],P.forEach((w,m)=>{var Y;const k={labels:w.labels||[],series:w.series||[]},A=Ir({perDaySeries:k,forecastMode:(Y=e.options)==null?void 0:Y.forecastMode,targetsConfig:t.targetsConfig,currentTargets:t.currentTargets,calendarCategoryMap:t.calendarCategoryMap}),R=a==="category"?Nr(A,t.calendarCategoryMap||{},o,r):Er(A,o),L=Wn(R);if(!L)return;const J=ci(m);O.push(...L.labels),I.push(...L.data),_.push(...L.data.map(()=>J)),L.data.reduce((le,Z)=>le+Math.max(0,Number(Z)||0),0)>0&&g.push({id:`offset-${w.offset??m}`,label:Bn(w,t.rangeMode),color:J})}),d=O.length?{labels:O,data:I,colors:_}:null}else{const C=Ir({perDaySeries:(f=t.charts)==null?void 0:f.perDaySeries,forecastMode:(c=e.options)==null?void 0:c.forecastMode,targetsConfig:t.targetsConfig,currentTargets:t.currentTargets,calendarCategoryMap:t.calendarCategoryMap}),P=a==="category"?Nr(C,t.calendarCategoryMap||{},o,r):Er(C,o);d=Wn(P)}return{title:da(Vc,(b=e.options)==null?void 0:b.titlePrefix),subtitle:a==="category"?"Totals by category":"Totals by calendar",cardBg:(p=e.options)==null?void 0:p.cardBg,showHeader:(($=e.options)==null?void 0:$.showHeader)!==!1,showLabels:((S=e.options)==null?void 0:S.showLabels)===!0,compact:((T=e.options)==null?void 0:T.compact)===!0,xLabel:"Date",yLabel:"Hours (h)",chartData:d,legendItems:g}}},H1=na(()=>la(()=>Promise.resolve().then(()=>o5),void 0).then(e=>e.default)),Uc="Pie Chart",F1={component:H1,defaultLayout:{width:"half",height:"m",order:75},label:"Pie Chart",category:"Charts",baseTitle:Uc,configurable:!0,defaultOptions:{showLegend:!0,showLabels:!0,compact:!1},dynamicControls:(e,t)=>[...Fn(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,g,u,v,f,c,b;const{mode:a,ids:o}=Pn(e.options),r=t.colorsById||{},n=t.colorsByName||{},s=t.categoryColorMap||{},l=a==="category"?C1(t.calendarGroups||[],o,s):_1(((d=t.calendarChartData)==null?void 0:d.pie)||null,o);return{title:da(Uc,(g=e.options)==null?void 0:g.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:((f=e.options)==null?void 0:f.compact)===!0,showLegend:((c=e.options)==null?void 0:c.showLegend)!==!1,showLabels:((b=e.options)==null?void 0:b.showLabels)!==!1,chartData:l,colorsById:r,colorsByName:n}}},P1=na(()=>la(()=>Promise.resolve().then(()=>u5),void 0).then(e=>e.default)),Gc="Stacked Chart",W1={component:P1,defaultLayout:{width:"full",height:"l",order:80},label:"Stacked Chart",category:"Charts",baseTitle:Gc,configurable:!0,defaultOptions:{showLegend:!0,showLabels:!1,compact:!1,forecastMode:"total"},dynamicControls:(e,t)=>[...Fn(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,g,u,v,f,c,b;const{mode:a,ids:o}=Pn(e.options),r=t.categoryColorMap||{},n=Ir({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"?Nr(n,t.calendarCategoryMap||{},o,r):Er(n,o);return{title:da(Gc,(g=e.options)==null?void 0:g.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:((f=e.options)==null?void 0:f.compact)===!0,showLegend:((c=e.options)==null?void 0:c.showLegend)!==!1,showLabels:((b=e.options)==null?void 0:b.showLabels)===!0,stacked:s,colorsById:t.colorsById||{}}}},z1=na(()=>la(()=>Promise.resolve().then(()=>V5),void 0).then(e=>e.default)),Kc="Calendar Table";function R1(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 j1={component:z1,defaultLayout:{width:"full",height:"l",order:70},heightMode:"auto",label:"Calendar Table",category:"Time",baseTitle:Kc,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,g,u,v,f;const a=R1(t),o=new Set(Hn((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:da(Kc,(g=e.options)==null?void 0:g.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(((f=t==null?void 0:t.targetsConfig)==null?void 0:f.totalHours)??0)||0}}},qc=["tracked_hours","planned_later","total_with_planned","event_count","average_event_duration"],Jc=["tracked_hours","planned_later","event_count","average_event_duration"];function Zc(e){const t=Array.isArray(e)?e:typeof e=="string"?e.split(","):[],a=new Set(qc),o=Array.from(new Set(t.map(r=>String(r).trim()).filter(r=>a.has(r))));return o.length?o:[...Jc]}function V1(e,t,a=""){const o=(e||[]).reduce((s,l)=>(s.tracked+=ui(l==null?void 0:l.total_hours),s.planned+=ui((l==null?void 0:l.future_hours)??(l==null?void 0:l.planned_hours)),s.events+=ui((l==null?void 0:l.events_count)??(l==null?void 0:l.events)),s),{tracked:0,planned:0,events:0}),r=Zc(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:Rn(o.tracked)};case"planned_later":return{key:s,label:"Planned later",hint:"Still upcoming",value:Rn(o.planned)};case"total_with_planned":return{key:s,label:"Total incl. planned",hint:n,value:Rn(o.tracked+o.planned)};case"event_count":return{key:s,label:"Events",hint:n,value:U1(o.events)};case"average_event_duration":return{key:s,label:"Avg. event",hint:"Tracked time per event",value:o.events>0?Rn(o.tracked/o.events):"—"}}})}function ui(e){const t=Number(e);return Number.isFinite(t)?Math.max(0,t):0}function Rn(e){return`${Number(e.toFixed(1))} h`}function U1(e){return new Intl.NumberFormat().format(Math.round(e))}const G1=na(()=>la(()=>Promise.resolve().then(()=>Q5),void 0).then(e=>e.default)),Yc="Calendar stats",K1={component:G1,defaultLayout:{width:"half",height:"m",order:54},label:"Calendar stats",category:"Time",baseTitle:Yc,configurable:!0,defaultOptions:{metrics:[...Jc]},controls:[{key:"metrics",label:"Metrics",type:"multiselect",options:[]}],dynamicControls:()=>[{key:"metrics",label:"Metrics",type:"multiselect",options:qc.map(e=>({value:e,label:q1(e)}))}],buildProps:(e,t)=>{var a,o,r,n;return{title:da(Yc,(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:Zc((n=e.options)==null?void 0:n.metrics),byCal:t.byCal||[],rangeLabel:t.rangeLabel||""}}};function q1(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 J1=na(()=>la(()=>Promise.resolve().then(()=>s3),void 0).then(e=>e.default)),Xc="Time Off Trend";function Z1(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 Y1(e,t){const a=new Set(Hn(e==null?void 0:e.ignoreCalendarIds)),o=new Set(Hn(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 X1(e,t,a){const o=Z1(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(f=>String(f)):[],d=Array.isArray(s==null?void 0:s.series)?s.series:[],g=l.map((f,c)=>({date:f,index:c})).filter(({date:f})=>f>=n.from&&f<=n.to).map(({index:f})=>f);if(g.length!==n.totalDays)return n;const u=d.filter(f=>!a.has(String((f==null?void 0:f.id)??""))),v=g.reduce((f,c)=>u.reduce((p,$)=>{var S;return p+Math.max(0,Number(((S=$==null?void 0:$.data)==null?void 0:S[c])??0)||0)},0)>.01?f+1:f,0);return{...n,daysWorked:v,daysOff:Math.max(0,n.totalDays-v)}})}const Q1={component:J1,defaultLayout:{width:"quarter",height:"s",order:45},heightMode:"auto",label:"Time Off Trend",category:"Time",baseTitle:Xc,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,g,u;return{trend:X1(t.activityDayOffTrend,(a=t.charts)==null?void 0:a.perDaySeriesByOffset,Y1(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:da(Xc,(l=e.options)==null?void 0:l.titlePrefix),cardBg:(d=e.options)==null?void 0:d.cardBg,toneLowColor:(g=e.options)==null?void 0:g.toneLowColor,toneHighColor:(u=e.options)==null?void 0:u.toneHighColor}}};function Qc(e){const t=typeof e.title=="string"?e.title.trim():"";if(!t)return null;const o=(e.id!=null?String(e.id).trim():"")||t0(t);return o?`tag_${o}`:null}function e0(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=a0(r.boardColor);s.forEach(g=>{const u=Qc(g),v=typeof g.title=="string"?g.title.trim():"";if(!u||!v||n.has(u))return;n.add(u);const f=t.get(u)||{label:v,count:0,boardTitle:l,boardColor:d};f.count+=1,t.set(u,f)})});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 eu(e,t){return(Array.isArray(e.labels)?e.labels:[]).some(o=>Qc(o)===t)}function t0(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"")}function a0(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 tu=["open_now","overdue_now","unassigned_open","mine_open","created_in_range","completed_in_range","due_in_range","done_now","archived_now"],au=["open_now","overdue_now","created_in_range","completed_in_range","due_in_range"];function to(e){return Array.isArray(e)?Array.from(new Set(e.map(t=>Number(t)).filter(t=>Number.isInteger(t)&&t>0))):typeof e=="string"?to(e.split(",")):[]}function jn(e){return Array.isArray(e)?Array.from(new Set(e.map(t=>String(t??"").trim()).filter(Boolean))):typeof e=="string"?jn(e.split(",")):[]}function ou(e,t=au){const a=Array.isArray(e)?e:typeof e=="string"?e.split(","):[],o=new Set(tu),r=Array.from(new Set(a.map(n=>String(n??"").trim()).filter(n=>o.has(n))));return r.length?r:[...t]}function o0(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=v0(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 gi(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 ho(e,t){const a=new Set(to(t.boardIds)),o=new Set(to(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 ru(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 pi(e,t){return e0(e)}function r0(e,t){const a=t.scope,o=gi(t.uid||"",t.mineMode),r=jn(t.tagIds);return e.filter(n=>!(a==="mine"&&!o(n)||a==="unassigned"&&(n.assignees||[]).length>0||r.length&&!r.some(s=>eu(n,s))))}function nu(e,t,a){const o=gi(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)&&u0(s));if(e.startsWith("created_range"))return t.filter(s=>(e.endsWith("_mine")?o(s):!0)&&iu(s,a.from,a.to));if(e.startsWith("due_today"))return t.filter(s=>(e.endsWith("_mine")?o(s):!0)&&p0(s));if(e.startsWith("due_"))return t.filter(s=>(e.endsWith("_mine")?o(s):!0)&&fi(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=>b0(d,l,o)):[]}if(e.startsWith("tag_"))return t.filter(s=>eu(s,e));if(e.includes("_")){const[s,l]=e.split("_");return t.filter(d=>{const g=c0(d,s,r,n),u=l==="all"?!0:o(d);return g&&u})}return t}function n0(e,t,a){const o=gi(a.uid||"",a.mineMode);switch(e){case"open_now":return t.filter(r=>r.status==="active").length;case"overdue_now":return t.filter(r=>f0(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=>iu(r,a.from,a.to)).length;case"completed_in_range":return t.filter(r=>g0(r,a.from,a.to)).length;case"due_in_range":return t.filter(r=>fi(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 s0(e,t){const a=ho(e,{boardIds:t.boardIds,stackIds:t.stackIds,includeArchived:t.includeArchived,includeCompleted:t.includeCompleted}),o=r0(a,{scope:t.scope,uid:t.uid,mineMode:t.mineMode,tagIds:t.tagIds});return ou(t.metrics).map(n=>({key:n,label:i0(n),hint:l0(n,t.rangeLabel||""),value:n0(n,o,{uid:t.uid,mineMode:t.mineMode,from:t.from,to:t.to})}))}function i0(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 l0(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 d0(e){const t=[],a=to(e.boardIds),o=to(e.stackIds),r=jn(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 c0(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"?fi(e):!1}function su(e){if(!e)return null;const t=e.trim();if(/^\d{4}-\d{2}-\d{2}$/.test(t))return t;const a=ri(t);return a?ia(a):null}function qo(e){return e==null?null:ia(new Date(e))}function u0(e){const t=qo(e.createdTs);return t?t===ia(new Date):!1}function iu(e,t,a){return bi(qo(e.createdTs),t,a)}function g0(e,t,a){return bi(qo(e.doneTs),t,a)}function fi(e,t,a){return bi(qo(e.dueTs),t,a)}function p0(e){const t=qo(e.dueTs??null);return t?t===ia(new Date):!1}function f0(e){if(e.status!=="active")return!1;const t=qo(e.dueTs??null);return t?t<ia(new Date):!1}function bi(e,t,a){const o=su(t||null),r=su(a||null);return!e||!o||!r?!1:e>=o&&e<=r}function b0(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 g=!0;if(s||l){const v=(e.labels||[]).map(c=>c.id!=null?String(c.id).trim().toLowerCase():"").filter(Boolean),f=(e.labels||[]).map(c=>String(c.title||"").trim().toLowerCase()).filter(Boolean);g=(!s||o.some(c=>v.includes(c)))&&(!l||r.some(c=>f.includes(c)))}let u=!0;if(d){const v=(e.assignees||[]).map(f=>String(f.uid||"").trim().toLowerCase()).filter(Boolean);u=n.some(f=>v.includes(f)),!u&&n.includes("me")&&(u=a(e)),!u&&n.includes("unassigned")&&(u=v.length===0)}return g&&u}function v0(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"")}const h0=na(()=>la(()=>Promise.resolve().then(()=>Q3),void 0).then(e=>e.default)),lu="Deck cards",m0={component:h0,defaultLayout:{width:"half",height:"m",order:52},heightMode:"fixed",label:"Deck cards",category:"Tasks",baseTitle:lu,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=Nc(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(b=>a.includes(b)).map(b=>({value:b,label:m1(b)}))},r=Array.isArray(t.deckBoards)?t.deckBoards.map(b=>({value:b.id,label:b.title||`Board ${b.id}`})):[],n=Array.isArray(t.deckCards)?t.deckCards:[],s=Array.isArray(e.boardIds)?e.boardIds:Lr(e.boardIds),l=to(e.stackIds),d=ho(n,{boardIds:s,includeArchived:e.includeArchived!==!1,includeCompleted:e.includeCompleted!==!1}),g=ho(d,{stackIds:l,includeArchived:e.includeArchived!==!1,includeCompleted:e.includeCompleted!==!1}),u=ru(d),v=pi(g),f=[];return e.autoTagsEnabled!==!1&&v.length&&f.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},...f]},buildProps:(e,t)=>{var l,d,g,u,v,f,c,b,p,$,S,T,C,P,O,I,_,w,m,k,A,R,L,J,K;const a=Nc(((l=e.options)==null?void 0:l.filters)??((g=(d=e.options)==null?void 0:d.defaultOptions)==null?void 0:g.filters)),o=Array.isArray((u=e.options)==null?void 0:u.boardIds)?e.options.boardIds:Lr((v=e.options)==null?void 0:v.boardIds),r=to((f=e.options)==null?void 0:f.stackIds),n=a.includes((c=e.options)==null?void 0:c.defaultFilter)?(b=e.options)==null?void 0:b.defaultFilter:a[0]||"all",s=o0((p=e.options)==null?void 0:p.customFilters);return{title:da(lu,($=e.options)==null?void 0:$.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:((T=e.options)==null?void 0:T.allowMine)!==!1,mineMode:((C=e.options)==null?void 0:C.mineMode)||"assignee",includeArchived:((P=e.options)==null?void 0:P.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:((w=e.options)==null?void 0:w.showCount)!==!1,minFilterCount:Number(((m=e.options)==null?void 0:m.minFilterCount)??0),maxVisible:Number(((k=e.options)==null?void 0:k.maxVisible)??8),compactList:((A=e.options)==null?void 0:A.compactList)===!0,autoTagsEnabled:((R=e.options)==null?void 0:R.autoTagsEnabled)!==!1,autoTagSelection:Array.isArray((L=e.options)==null?void 0:L.autoTagSelection)?(J=e.options)==null?void 0:J.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)}}}},y0=na(()=>la(()=>Promise.resolve().then(()=>gS),void 0).then(e=>e.default)),du="Deck stats",w0={component:y0,defaultLayout:{width:"half",height:"m",order:53},label:"Deck stats",category:"Tasks",baseTitle:du,configurable:!0,defaultOptions:{scope:"all",mineMode:"assignee",includeArchived:!0,includeCompleted:!0,metrics:[...au]},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:Lr(e.boardIds),n=to(e.stackIds),s=ho(o,{boardIds:r,includeArchived:e.includeArchived!==!1,includeCompleted:e.includeCompleted!==!1}),l=ho(s,{stackIds:n,includeArchived:e.includeArchived!==!1,includeCompleted:e.includeCompleted!==!1}),d=ru(s),g=pi(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:tu.map(u=>({value:u,label:k0(u)}))},...g.length?[{key:"tagIds",label:"Tags",type:"taglist",options:g,hint:"All tags are included by default. Uncheck tags to narrow the stat population."}]:[]]},buildProps:(e,t)=>{var l,d,g,u,v,f,c,b,p,$,S,T,C;const a=Array.isArray((l=e.options)==null?void 0:l.boardIds)?e.options.boardIds:Lr((d=e.options)==null?void 0:d.boardIds),o=to((g=e.options)==null?void 0:g.stackIds),r=jn((u=e.options)==null?void 0:u.tagIds),n=ou((v=e.options)==null?void 0:v.metrics),s=((f=e.options)==null?void 0:f.scope)==="mine"||((c=e.options)==null?void 0:c.scope)==="unassigned"?e.options.scope:"all";return{title:da(du,(b=e.options)==null?void 0:b.titlePrefix),cardBg:(p=e.options)==null?void 0:p.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:(($=e.options)==null?void 0:$.mineMode)||"assignee",includeArchived:((S=e.options)==null?void 0:S.includeArchived)!==!1,includeCompleted:((T=e.options)==null?void 0:T.includeCompleted)!==!1,showHeader:((C=e.options)==null?void 0:C.showHeader)!==!1,selectionText:d0({boardIds:a,stackIds:o,tagIds:r,scope:s})}}};function k0(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 x0=na(()=>la(()=>Promise.resolve().then(()=>JS),void 0).then(e=>e.default)),cu="Targets",_0={component:x0,defaultLayout:{width:"half",height:"m",order:18},heightMode:"auto",label:"Targets",category:"Time",baseTitle:cu,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)):Sa(),r=Ec(Lc(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 f,c,b,p,$,S,T,C,P,O,I,_,w,m;const a=!!((f=e.options)!=null&&f.useLocalConfig),o=S0(a?(c=e.options)==null?void 0:c.localGroupsById:null),r=$0(a?(b=e.options)==null?void 0:b.localTargetsWeek:null),n=a&&((p=e.options)!=null&&p.localConfig)?JSON.parse(JSON.stringify(e.options.localConfig)):t.targetsConfig?JSON.parse(JSON.stringify(t.targetsConfig)):Sa(),s=Ec(Lc(n,t.rangeMode)),l=(k,A)=>{var R;((R=e.options)==null?void 0:R[k])!==void 0&&A(!!e.options[k])};l("showTotalDelta",k=>{s.ui.showTotalDelta=k}),l("showNeedPerDay",k=>{s.ui.showNeedPerDay=k}),l("showCategoryBlocks",k=>{s.ui.showCategoryBlocks=k}),l("badges",k=>{s.ui.badges=k}),l("includeWeekendToggle",k=>{s.ui.includeWeekendToggle=k}),l("includeZeroDaysInStats",k=>{s.includeZeroDaysInStats=k});const d=a&&t.stats?b1(s,{...t,groupsById:o??t.groupsById}):t.targetsSummary??t.summary,g=a?T0(r,t.rangeMode):t.currentTargets||{},u=C0({strategy:a?null:t==null?void 0:t.onboardingStrategy,config:s,currentTargets:g});Object.prototype.hasOwnProperty.call(e.options??{},"showCategoryBlocks")||(s.ui.showCategoryBlocks=u!=="single_goal");const v=a?uu({mode:u,config:s,summary:d,byCal:t.byCal||[],calendars:t.calendars||[],colorsById:t.colorsById||{},groupsById:o??t.groupsById??{},currentTargets:g,todayHoursByCalendar:t.calendarTodayHours||{}}):(($=e.props)==null?void 0:$.groups)??uu({mode:u,config:s,summary:d,byCal:t.byCal||[],calendars:t.calendars||[],colorsById:t.colorsById||{},groupsById:t.groupsById??{},currentTargets:g,todayHoursByCalendar:t.calendarTodayHours||{}});return{summary:d,config:s,groups:v,showHeader:((S=e.options)==null?void 0:S.showHeader)!==!1,showLegend:((T=e.options)==null?void 0:T.showLegend)!==!1,showDelta:((C=e.options)==null?void 0:C.showDelta)!==!1,showForecast:((P=e.options)==null?void 0:P.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:da(cu,(w=e.options)==null?void 0:w.titlePrefix),cardBg:(m=e.options)==null?void 0:m.cardBg}}};function C0(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 uu(e){return e.mode==="single_goal"?[]:e.mode==="calendar_goals"?h1({config:e.config,summary:e.summary,byCal:e.byCal,calendars:e.calendars,colorsById:e.colorsById,currentTargets:e.currentTargets,todayHoursByCalendar:e.todayHoursByCalendar}):v1({config:e.config,summary:e.summary,byCal:e.byCal,calendars:e.calendars,colorsById:e.colorsById,groupsById:e.groupsById,currentTargets:e.currentTargets})}function S0(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 $0(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]=Pa(n))}),t}function T0(e,t){return String(t||"week").toLowerCase()!=="month"?{...e}:Object.fromEntries(Object.entries(e).map(([a,o])=>[a,Wa(o)]))}function M0(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,g)=>d+(g.targetHours??0),0):0;t!=="calendar"&&o>0&&e.targets.forEach(d=>{const g=(d.targetHours??0)/o;a[d.id]=g});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 f;const g=Number(((f=e.shares)==null?void 0:f[d])??0),u=t==="calendar"?1/r.size:a[d]??0,v=Math.abs(g-u);v>n&&(n=v)});const s=1-n;return Math.max(0,Math.min(1,Number(s.toFixed(2))))}const gu=na(()=>la(()=>Promise.resolve().then(()=>i8),void 0).then(e=>e.default)),vi="Period Comparison",A0=["showTotal","showAverage","showMedian","showBusiest","showWorkday","showWeekend","showWeekendShare","showCalendarSummary","showTopCategory"],D0={key:"mode",label:"Average mode",type:"select",options:[{value:"active",label:"Active days"},{value:"all",label:"All days"}]},L0=[{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 pu(){return{...Sa().timeSummary,mode:"active",showToday:!0,showActivity:!0,showHistoryCoreMetrics:!0,historyView:"accordion",showActivityDetails:!0,showDelta:!0}}function E0(){return{defaultView:"auto",showDailyKpis:!0,showWeekMiniChart:!0,showEmptyLanes:!0,maxLanes:4,showRangeInTitle:!1}}function N0(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 fu(e,t,a){var I,_,w,m,k,A,R,L,J,K,Y,le,Z,de,B,G,D,V,he,Me,ae,U;const o=t.targetsConfig?JSON.parse(JSON.stringify(t.targetsConfig)):Sa(),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&&((w=e.options)==null?void 0:w.showActivity)!==!1,g=((m=e.options)==null?void 0:m.showHistoryCoreMetrics)!==!1,u=N0(t),v=R0(t,u),f=I0(u),c=O0((k=e.options)==null?void 0:k.defaultView,u,f),b=B0(t),p=H0(t),$=F0(t),S=String(((A=e.options)==null?void 0:A.historyView)??"").toLowerCase(),T=S==="accordion"||S==="pills"?"accordion":"timeline",C=((R=e.options)==null?void 0:R.showActivityDetails)!==!1,P=a.showLookback&&a.showDelta&&((L=e.options)==null?void 0:L.showDelta)!==!1;A0.forEach(H=>{var j;((j=e.options)==null?void 0:j[H])!==void 0&&(r.timeSummary[H]=!!e.options[H])}),((J=e.options)==null?void 0:J.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?U0({mode:s,rangeMode:n,lookbackWeeks:Number(t.lookbackWeeks),perDaySeriesByOffset:(le=t.charts)==null?void 0:le.perDaySeriesByOffset,hodByOffset:(Z=t.charts)==null?void 0:Z.hodByOffset,summaryByOffset:(de=t.charts)==null?void 0:de.summaryByOffset,targetsConfig:G0(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:b,categoryTodayItems:p,weekDays:$,allowedViews:f,defaultView:c,showDailyKpis:((G=e.options)==null?void 0:G.showDailyKpis)!==!1,showWeekMiniChart:((D=e.options)==null?void 0:D.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:da(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:g,historyView:T,showActivityDetails:C,showOverview:a.showOverview,showLookback:a.showLookback,showDelta:P,history:O}}function I0(e){return e==="category_and_calendar_goals"?["daily","calendars","categories"]:e==="calendar_goals"?["daily","calendars"]:["daily"]}function O0(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 B0(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 H0(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 F0(e){var v;if((String((e==null?void 0:e.rangeMode)||"week").toLowerCase()==="month"?"month":"week")!=="week")return[];const a=It(String((e==null?void 0:e.from)??"")),o=It(String((e==null?void 0:e.to)??""));if(!a||!o)return[];const r=P0(new Date),n=Array.isArray(e==null?void 0:e.byDay)?e.byDay:[],s=new Map;n.forEach(f=>{const c=String((f==null?void 0:f.date)??"");c&&s.set(c,{hours:Number((f==null?void 0:f.total_hours)??(f==null?void 0:f.hours)??0)||0,events:Number((f==null?void 0:f.events_count)??(f==null?void 0:f.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:[],g=Array.isArray(l==null?void 0:l.data)?l.data:[];d.forEach((f,c)=>{const b=String(f??"");!b||s.has(b)||s.set(b,{hours:Number(g[c]??0)||0,events:0})});const u=[];for(let f=0;f<7;f++){const c=Mo(a,f);if(c.getTime()>o.getTime())break;const b=W0(c),p=s.get(b);u.push({date:b,label:z0(b),hours:(p==null?void 0:p.hours)??0,events:(p==null?void 0:p.events)??0,isToday:b===r})}return u}function P0(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 W0(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 z0(e){const t=It(e);return t?["Sun","Mon","Tue","Wed","Thu","Fri","Sat"][t.getUTCDay()]||e.slice(5):e.slice(5)||e}function R0(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 j0={component:gu,defaultLayout:{width:"half",height:"l",order:9},heightMode:"auto",label:"Today's time summary",category:"Time",baseTitle:"Today's time summary",configurable:!0,defaultOptions:E0(),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)=>fu(e,t,{title:"Today's time summary",includeHistory:!1,showOverview:!0,showLookback:!1,showDelta:!1,showRangeInTitle:!1})},V0={component:gu,defaultLayout:{width:"half",height:"l",order:19},heightMode:"auto",label:vi,category:"Time",baseTitle:vi,configurable:!0,defaultOptions:pu(),controls:[D0,{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"},...L0],buildProps:(e,t)=>fu(e,t,{title:vi,includeHistory:!0,showOverview:!1,showLookback:!0,showDelta:!0,showRangeInTitle:!0})};pu();function U0(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=On(t).map(u=>Number((u==null?void 0:u.offset)??0)).filter(u=>Number.isFinite(u)&&u>0&&u<=l),g=new Map;return e.calendarGroups.forEach(u=>{const v=String((u==null?void 0:u.id)??"").trim();v&&g.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&&!g.has(v)&&g.set(v,String((u==null?void 0:u.label)??v))}),d.map(u=>{const v=r.get(u);if(!v)return null;const f=K0(v),c=s.get(u),b=n.get(u),p=ma(f.totalHours),$=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,T=Number((c==null?void 0:c.longest_session)??(c==null?void 0:c.longestSession)??0)||0,C=bu((c==null?void 0:c.earliest_start)??(c==null?void 0:c.earliestStart)),P=bu((c==null?void 0:c.latest_end)??(c==null?void 0:c.latestEnd)),O=b?q0(b,p):null,I=f.activeDays,_=ma(hi(f.filteredTotals(e.mode))),w=ma(mi(f.filteredTotals(e.mode))),m=$>0?ma(p/$):0,k=ma(hi(f.filteredWorkdayTotals(e.mode))),A=ma(mi(f.filteredWorkdayTotals(e.mode))),R=ma(hi(f.filteredWeekendTotals(e.mode))),L=ma(mi(f.filteredWeekendTotals(e.mode))),J=(O==null?void 0:O.weekendShare)??f.weekendShare,K=J0(f.calendarTotals,p),Y=Z0({calendarTotals:f.calendarTotals,categoryLabelById:g,categoryColorMap:e.categoryColorMap,calendarCategoryMap:e.calendarCategoryMap,targetsConfig:e.targetsConfig}),le=Y0({totalHours:p,calendarTotals:f.calendarTotals,calendarCategoryMap:e.calendarCategoryMap,targetsConfig:e.targetsConfig});return{offset:u,label:Bn({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:p,avgDay:_,avgEvent:m,medianDay:w,busiest:f.busiest,workdayAvg:k,workdayMedian:A,weekendAvg:R,weekendMedian:L,weekendShare:J,activeCalendars:f.activeCalendars,calendarSummary:K,topCategory:Y,balanceIndex:le,activity:{events:$,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:P,overlapEvents:S,longestSession:ma(T),lastDayOff:f.lastDayOff,lastHalfDayOff:f.lastHalfDayOff}}}).filter(Boolean)}function G0(e,t){const a=JSON.parse(JSON.stringify(e));return t==="month"&&(a.totalHours=Wa(a.totalHours),a.categories=a.categories.map(o=>({...o,targetHours:Wa(o.targetHours)}))),a}function K0(e){const t=Array.isArray(e==null?void 0:e.labels)?e.labels.map(b=>String(b??"")):[],a=Array.isArray(e==null?void 0:e.series)?e.series:[],o=t.map((b,p)=>a.reduce(($,S)=>{var C;const T=Number(((C=S==null?void 0:S.data)==null?void 0:C[p])??0);return $+(Number.isFinite(T)?Math.max(0,T):0)},0)),r=a.map(b=>{const p=String((b==null?void 0:b.id)??""),$=String((b==null?void 0:b.name)??(b==null?void 0:b.label)??p),S=Array.isArray(b==null?void 0:b.data)?b.data.reduce((T,C)=>{const P=Number(C??0);return T+(Number.isFinite(P)?Math.max(0,P):0)},0):0;return{id:p,name:$,total:ma(S),color:b!=null&&b.color?String(b.color):void 0}}),n=o.reduce((b,p)=>b+p,0),s=r.filter(b=>b.total>0).length,l=(()=>{if(!t.length)return null;let b=-1,p=-1;return o.forEach(($,S)=>{$>b&&(b=$,p=S)}),p<0||b<=0?null:{date:t[p],hours:ma(b)}})(),d=[],g=[];o.forEach((b,p)=>{const $=X0(t[p]);$!=null&&($===0||$===6?g.push(b):d.push(b))});const u=n>0?Or(g.reduce((b,p)=>b+p,0)/n*100):null,{lastDayOff:v,lastHalfDayOff:f}=Q0(t,o),c=o.filter(b=>b>.01).length;return{labels:t,totals:o,totalHours:n,activeCalendars:s,busiest:l,workdayTotals:d,weekendTotals:g,weekendShare:u,lastDayOff:v,lastHalfDayOff:f,activeDays:c,filteredTotals:b=>b==="active"?o.filter(p=>p>0):o,filteredWorkdayTotals:b=>b==="active"?d.filter(p=>p>0):d,filteredWeekendTotals:b=>b==="active"?g.filter(p=>p>0):g,calendarTotals:r}}function q0(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,b)=>{const p=Array.isArray(o[b])?o[b]:[];r.set(c,p.map($=>Number($??0)))});const n=Array.from({length:24},(c,b)=>Array.from(r.values()).reduce((p,$)=>p+Number($[b]??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 g=(r.get("Sat")||[]).reduce((c,b)=>c+Number(b??0),0)+(r.get("Sun")||[]).reduce((c,b)=>c+Number(b??0),0);let u=0;r.forEach(c=>{for(let b=18;b<24;b+=1)u+=Number(c[b]??0)});const v=t>0?Or(g/t*100):null,f=t>0?Or(u/t*100):null;return{typicalStart:l,typicalEnd:d,weekendShare:v,eveningShare:f}}function J0(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} ${Or(o.total/t*100)}%`).join(", ")}function Z0(e){var l;const t=new Map;if(e.calendarTotals.forEach(d=>{var u;const g=String(((u=e.calendarCategoryMap)==null?void 0:u[d.id])??"");g&&t.set(g,(t.get(g)||0)+d.total)}),!t.size)return null;let a="",o=-1;if(t.forEach((d,g)=>{d>o&&(o=d,a=g)}),!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?Or(o/n*100):0;return{label:e.categoryLabelById.get(a)||a,actualHours:ma(o),targetHours:ma(n),percent:s,color:(l=e.categoryColorMap)==null?void 0:l[a]}}function Y0(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?M0({shares:a,targets:e.targetsConfig.categories,basis:t}):null}function hi(e){return e.length?e.reduce((t,a)=>t+a,0)/e.length:0}function mi(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 X0(e){if(!e)return null;const t=It(e);return t?t.getUTCDay():null}function Q0(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 Or(e){return Math.round(e*10)/10}function ma(e){return Math.round(e*100)/100}function bu(e){if(e==null)return null;const t=String(e).trim();return t||null}let vu=null;const ew={tabs:[{id:"tab-1",label:"Overview",widgets:[]}],defaultTabId:"tab-1"},tw={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"},aw={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 hu(e){const t=nw(e);t&&(vu=t)}function mu(e){const t=vu;if(!t)return[];const a=t[e]||[];return sw(a)}const ow={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 rw(e){const t=yi(tw),a=e?ow[e]:null;return a?{...t,tabs:t.tabs.map(o=>({...o,widgets:o.widgets.filter(r=>a.includes(r.type))}))}:t}function yu(e,t){return e==="quick"?yi(ew):e==="standard"?rw(t):e==="pro"?yi(aw):{tabs:[{id:"tab-1",label:"Overview",widgets:mu(e)}],defaultTabId:"tab-1"}}function nw(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 sw(e){return JSON.parse(JSON.stringify(e||[]))}function yi(e){return JSON.parse(JSON.stringify(e))}const iw=new Set(["chart_pie","chart_stacked","chart_per_day","chart_dow"]);function lw(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 dw(e,t){if(!iw.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=lw(l)}return delete n.scope,delete n.calendarFilter,delete n.categoryFilter,n}const wu=["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 cw(e,t){if(e!=="deck_cards")return t;const a=Array.isArray(t.filters)?t.filters:[];return t.defaultFilter==="open_all"&&a.length===wu.length&&a.every((r,n)=>r===wu[n])?{...t,autoScroll:!1,maxVisible:8,filters:["focus_all","focus_mine","backlog_all","backlog_mine","all"],defaultFilter:"focus_all"}:t}const Br={time_summary_overview:j0,time_summary_lookback:V0,targets_v2:_0,balance_index:w1,dayoff_trend:Q1,category_mix_trend:x1,chart_pie:F1,chart_stacked:W1,chart_per_day:B1,chart_dow:E1,chart_hod:I1,calendar_table:j1,calendar_stats:K1,deck_cards:m0,deck_stats:w0};function ku(e,t,a=!1){if(!Array.isArray(e))return t;const o=[],r=(n,s,l,d,g)=>{const u=Br[n];if(!u)return;const v=String((s==null?void 0:s.id)??"")||`widget-${n}-${l+1}`,f=(s==null?void 0:s.layout)??{},c=f.width==="quarter"||f.width==="half"?f.width:"full",b=f.height==="s"||f.height==="l"||f.height==="xl"?f.height:"m",p=Number(f.order??0),$=Number.isFinite(p)?p:0;let T={...u.defaultOptions||{},...s!=null&&s.options&&typeof s.options=="object"?s.options:{}};T.heightMode==null&&((s==null?void 0:s.heightMode)==="auto"||(s==null?void 0:s.heightMode)==="fixed")&&(T.heightMode=s.heightMode),T.scale==null&&T.textSize!=null&&(T.scale=T.textSize,delete T.textSize),T=dw(n,T),T=cw(n,T),o.push({id:v,type:n,options:T,layout:{width:c,height:b,order:$},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 xu(){return vw("standard")}function _u(e){return e==="total_only"?"single_goal":e==="total_plus_categories"?"calendar_goals":e==="full_granular"?"category_and_calendar_goals":null}function Cu(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 uw(e,t,a){const o=_u(t),r=Cu(e.type,o);if(!r)return e;const n=_u(a),s=Cu(e.type,n);if(!s)return e;const l=e.options||{},d={...l};let g=!1;return Object.entries(r).forEach(([u,v])=>{const f=l[u],c=s[u];(f===void 0||f===c)&&f!==v&&(d[u]=v,g=!0)}),g?{...e,options:d}:e}function Su(e,t,a){return(e||[]).map(o=>uw(o,t,a))}function gw(e,t,a){return{tabs:((e==null?void 0:e.tabs)||[]).map(o=>({...o,widgets:Su(o.widgets||[],t,a)})),defaultTabId:(e==null?void 0:e.defaultTabId)||"tab-1"}}function Jo(e,t){const a=yu(e,t);return gw(a,t)}function pw(e){return e==="total_only"?["category_mix_trend"]:e==="total_plus_categories"?["category_mix_trend"]:[]}function wi(e,t){var n;const a=new Set(pw(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 Hr(e,t){var d,g,u,v;if(Array.isArray(e)){const f=ku(e,((d=t.tabs[0])==null?void 0:d.widgets)||xu()),c=((g=t.tabs[0])==null?void 0:g.id)||"tab-1";return{tabs:[{id:c,label:((u=t.tabs[0])==null?void 0:u.label)||"Overview",widgets:f}],defaultTabId:c}}if(!e||typeof e!="object")return t;const a=Array.isArray(e.tabs)?e.tabs:[],o=t.tabs||[],r=a.map((f,c)=>{var C,P;const b=String((f==null?void 0:f.id)??"").trim()||`tab-${c+1}`,p=String((f==null?void 0:f.label)??"").trim(),$=p?p.slice(0,48):`Tab ${c+1}`,S=((C=o[c])==null?void 0:C.widgets)||((P=o[0])==null?void 0:P.widgets)||xu(),T=ku(f==null?void 0:f.widgets,S,!0);return{id:b,label:$,widgets:T}}),n=r.length?r:o,s=String(e.defaultTabId??e.defaultTab??e.active??""),l=n.some(f=>f.id===s)?s:((v=n[0])==null?void 0:v.id)||"tab-1";return{tabs:n,defaultTabId:l}}function fw(e,t){return!!t.isInitialLoading}function bw(e,t){var l;const a=Br[e.type];if(!a)return null;const o=a.buildProps(e,t)||{},r=fw(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 vw(e,t){return Su(mu(e),t)}async function hw(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 Vn(Un("/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 $u(){const t=await Vn(Un("/apps/opsdash/overview/deck/boards"));return t&&t.ok===!1?[]:Array.isArray(t==null?void 0:t.boards)?t.boards:[]}async function mw(e){const a=await Vn(Un("/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 yw(e,t){const a=await Vn(Un("/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 Vn(e,t={}){const a={Accept:"application/json",...t.body?{"Content-Type":"application/json"}:{},...t.headers||{}},o=kw();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 Un(e,t){var l,d,g;const a=e.startsWith("/")?e:`/${e}`,o=t?ww(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((g=r.location)==null?void 0:g.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 ww(e){const t=new URLSearchParams;return Object.entries(e).forEach(([a,o])=>{o!=null&&t.append(a,String(o))}),t.toString()}function kw(){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 xw={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 _w(){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 Tu(){const e=x(()=>_w());function t(s,l){const d=typeof window<"u"?window:{},g=xw[s];if(s==="presetsLoad"||s==="presetsDelete"){const u=`${g}/${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(g):`${e.value}${g}`}function a(s){const l=new URLSearchParams;return Object.entries(s||{}).forEach(([d,g])=>{Array.isArray(g)?g.forEach(u=>l.append(d,String(u))):g!=null&&l.set(d,String(g))}),l.toString()}async function o(s,l){const d=a(l),g=d?`${s}${s.includes("?")?"&":"?"}${d}`:s,u=await fetch(g,{method:"GET",credentials:"same-origin"});if(!u.ok)throw new Error(`HTTP ${u.status}`);return await u.json()}async function r(s,l){var f;const d=typeof window<"u"?window:{},g=((f=d.OC)==null?void 0:f.requestToken)||d.oc_requesttoken||"",u={"Content-Type":"application/json"};g&&(u.requesttoken=g);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 f;const l=typeof window<"u"?window:{},d=((f=l.OC)==null?void 0:f.requestToken)||l.oc_requesttoken||"",g={};d&&(g.requesttoken=d);const u=await fetch(s,{method:"DELETE",credentials:"same-origin",headers:g});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 Cw(e){return e==="total_only"||e==="total_plus_categories"||e==="full_granular"}function Sw(e){const{props:t,emit:a}=e,{route:o,postJson:r}=Tu(),n=["intro","strategy","calendars","deck","goals","preferences","dashboard","review"],s=oe(0),l=oe("total_plus_categories"),d=oe(t.initialDashboardMode||"standard"),g=oe(t.hasExistingConfig?"existing":"new"),u=oe(t.hasExistingConfig?"existing":"quick"),v=oe(!1),f=oe(""),c=oe([]),b=oe([]),p=oe({}),$=oe({}),S=oe("auto"),T=oe(8),C=oe(null),P=oe(3),O=oe(wt(t.initialDeckSettings??Do())),I=oe({...t.initialReportingConfig??Ao()}),_=oe([]),w=oe(!1),m=oe(""),k=oe(!1),A=oe(""),R=oe([]),L=oe(null),J=x(()=>{const q=pe=>wi(Jo(pe,l.value),l.value).tabs.reduce((Ce,Le)=>Ce+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(w.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`}),Z=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 Ce=X==="week"?"Week":"Month",Le=pe.delivery==="checkpoint_final"?"checkpoint + final recap":"final recap";q.push(`${Ce}: ${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"),D=["#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(()=>b.value.reduce((q,X)=>q+(Number.isFinite(X.targetHours)?X.targetHours:0),0)),U=x(()=>he.value.reduce((q,X)=>q+(Number(ss(X.id))||0),0)),H=x(()=>{const q=new Set,X=pe=>{const Ce=Ht(pe);Ce&&q.add(Ce)};return t.calendars.forEach(pe=>X(pe.color)),b.value.forEach(pe=>X(pe.color)),D.forEach(pe=>q.add(pe)),Array.from(q)}),j=Mc(),ce=x(()=>j.find(q=>q.id===l.value)??j[0]),fe=x(()=>ce.value.layers.categories),E=x(()=>ce.value.layers.calendars),W=x(()=>t.closable!==!1),re=x(()=>wi(Jo(d.value,l.value),l.value)),ue=x(()=>[...n]),ee=x(()=>ue.value[Math.min(s.value,ue.value.length-1)]),be=x(()=>s.value+1),ve=x(()=>ue.value.length),_e=x(()=>t.saving===!0),xe=x(()=>t.snapshotSaving===!0),ge=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(),bt(),St().catch(X=>{console.error("[opsdash] onboarding history load failed",X)})),Se(q)},{immediate:!0}),Nt(()=>{typeof document<"u"&&document.addEventListener("click",oo),Ct().catch(q=>{console.error("[opsdash] deck board load failed",q)}),St().catch(q=>{console.error("[opsdash] onboarding history load failed",q)})}),Fs(()=>{typeof document<"u"&&document.removeEventListener("click",oo),Se(!1)});function te(q){Bt();const X=q??(t.hasExistingConfig?"existing":"new");g.value=X,u.value=t.hasExistingConfig?X:"quick";const pe=X==="existing",Ce=L.value;s.value=0,l.value=pe?(Ce==null?void 0:Ce.strategy)??"total_plus_categories":"total_plus_categories",d.value=pe?(Ce==null?void 0:Ce.dashboardMode)??"standard":"standard";const Le=pe?[...(Ce==null?void 0:Ce.selection)??[]]:[];c.value=Array.from(new Set(Le.filter(rt=>t.calendars.some(tt=>tt.id===rt)))),S.value=pe?(Ce==null?void 0:Ce.themePreference)??"auto":"auto",T.value=ua(pe?(Ce==null?void 0:Ce.allDayHours)??8:8),C.value=et(pe?(Ce==null?void 0:Ce.totalHours)??null:null),P.value=ga(pe?(Ce==null?void 0:Ce.trendLookback)??3:3),$.value={},pe&&Object.entries((Ce==null?void 0:Ce.targetsWeek)??{}).forEach(([rt,tt])=>{t.calendars.some(ro=>ro.id===rt)&&($.value[rt]=Pa(tt))}),O.value=wt(pe?(Ce==null?void 0:Ce.deckSettings)??Do():Do()),I.value={...pe?(Ce==null?void 0:Ce.reportingConfig)??Ao():Ao()},t.hasExistingConfig?(v.value=X==="new",f.value=""):(v.value=!1,f.value=""),Pe(),fe.value?b.value.length?C.value=et(ae.value):C.value=null:l.value==="total_only"?C.value=et(pe?(Ce==null?void 0:Ce.totalHours)??40:40):C.value===null&&pe&&(C.value=et((Ce==null?void 0:Ce.totalHours)??40)),Je()}function ie(q){g.value!==q&&te(q)}function me(q){if(u.value=q,q==="existing"){g.value!=="existing"&&te("existing");return}if(q==="new"){g.value!=="new"&&te("new");return}}function Te(q){v.value=q,q||(f.value="")}function De(q){f.value=q}function Pe(){var X;const q=L.value;if(!fe.value){b.value=[],p.value={},pt();return}if(g.value==="existing"&&((X=q==null?void 0:q.categories)!=null&&X.length))b.value=Ra(q.categories),p.value={...q.assignments??{}};else{const pe=Ac(l.value,t.calendars,c.value);l.value==="full_granular"?b.value=K[0].categories.map((Ce,Le)=>({id:String(Ce.id||`cat_${Le}`),label:Ce.label,targetHours:Ce.targetHours,includeWeekend:Ce.includeWeekend,paceMode:Ce.paceMode,color:Ce.color??null})):b.value=pe.categories.map(Ce=>({...Ce})),p.value={...pe.assignments}}l.value==="full_granular"&&b.value.length===0&&(b.value=K[0].categories.map((pe,Ce)=>({id:String(pe.id||`cat_${Ce}`),label:pe.label,targetHours:pe.targetHours,includeWeekend:pe.includeWeekend,paceMode:pe.paceMode,color:pe.color??null})),g.value!=="existing"&&(p.value={})),Ie(),pt()}function Ie(){if(!fe.value||!b.value.length){p.value={};return}const q=new Set(b.value.map(pe=>pe.id)),X={};c.value.forEach(pe=>{const Ce=p.value[pe];X[pe]=q.has(Ce)?Ce:""}),p.value=X}const Fe=x(()=>Math.max(0,Math.min(6,R.value.length))),ze=x(()=>{const q=Fe.value;return q<=0?0:Math.max(1,Math.min(q,P.value))}),it=x(()=>{const q=ze.value;return q<=0?{enabled:!1,available:0,label:"No recent history available"}:{enabled:!0,available:Fe.value,label:`Suggestions use the last ${q} ${q===1?"week":"weeks"} of available history.`}}),ut=x(()=>{const q=ze.value;if(q<=0)return{};const X={},pe=R.value.slice(0,q);return t.calendars.forEach(Ce=>{const Le=pe.map(tt=>Number(tt.totals[Ce.id]??0));if(!Le.length)return;const rt=Le.reduce((tt,ro)=>tt+ro,0)/Le.length;rt<=0||(X[Ce.id]=at(rt))}),X}),nt=x(()=>{const q={};return b.value.forEach(X=>{const pe=Me.value.reduce((Ce,Le)=>p.value[Le]!==X.id?Ce:Ce+Number(ut.value[Le]??0),0);pe>0&&(q[X.id]=at(pe))}),q}),gt=x(()=>Me.value.reduce((q,X)=>q+Number(ut.value[X]??0),0)),Ot=x(()=>he.value.filter(q=>fe.value&&!p.value[q.id])),Wt=x(()=>{const q=Me.value.filter(rt=>p.value[rt]).length,X=Me.value.length-q,pe=ae.value,Ce=U.value,Le=at(Ce-pe);return{assigned:q,unassigned:X,calendarTotal:Ce,categoryTotal:pe,delta:Le,totalsMatch:Math.abs(Le)<.01}}),st=x(()=>In(l.value,t.calendars,c.value,fe.value?{categories:b.value,assignments:p.value}:void 0)),yt=x(()=>ce.value.title);function pt(){var q;if(fe.value){C.value=et(ae.value);return}if(l.value==="total_plus_categories"){const X=U.value;C.value=X>0?et(X):C.value;return}C.value===null&&(C.value=g.value==="existing"?et(((q=L.value)==null?void 0:q.totalHours)??40):null)}function Bt(){var q;L.value={strategy:Cw(t.initialStrategy)?t.initialStrategy:"total_plus_categories",selection:[...t.initialSelection??[]],themePreference:t.initialThemePreference??"auto",allDayHours:ua(t.initialAllDayHours??8),totalHours:et(t.initialTotalHours??null),trendLookback:ga(((q=t.initialTargetsConfig)==null?void 0:q.balanceTrendLookback)??3),deckSettings:wt(t.initialDeckSettings??Do()),reportingConfig:{...t.initialReportingConfig??Ao()},dashboardMode:t.initialDashboardMode||"standard",targetsWeek:{...t.initialTargetsWeek??{}},categories:Ra(t.initialCategories),assignments:{...t.initialAssignments??{}}}}function Je(){if(!t.startStep)return;const q=ue.value.indexOf(t.startStep);q>=0&&(s.value=q)}function Ue(q){const X=ue.value.indexOf(q);X>=0&&(s.value=X)}function Qe(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,ue.value.length-1)}),Oe(ue,q=>{s.value>=q.length&&(s.value=Math.max(q.length-1,0))}),Oe(()=>t.startStep,Je),Oe(fe,()=>{pt()}),Oe(ae,q=>{fe.value&&(C.value=et(q))}),Oe(U,q=>{!fe.value&&l.value==="total_plus_categories"&&q>0&&(C.value=et(q))}),Oe(ee,q=>{q!=="goals"&&bt(),q==="goals"&&fe.value&&b.value.length===0&&(Pe(),b.value.length||$t(K[0]))}),Oe(()=>t.visible,q=>{q||bt()}),Oe(c,()=>{const q=new Set(c.value),X={};Object.entries($.value).forEach(([pe,Ce])=>{q.has(pe)&&(X[pe]=Ce)}),$.value=X,Ie()},{deep:!0}),Oe(b,()=>{Ie()},{deep:!0});function Q(){const q=`cat_${Date.now().toString(36)}_${b.value.length}`;b.value=[...b.value,{id:q,label:`Category ${b.value.length+1}`,targetHours:8,includeWeekend:!1,paceMode:"days_only"}],Ie()}function se(q){b.value.length<=1||(b.value=b.value.filter(X=>X.id!==q),Ie())}function $e(q,X){b.value=b.value.map(pe=>pe.id===q?{...pe,label:X}:pe)}function Ye(q,X){const pe=b.value.findIndex(tt=>tt.id===q);if(pe<0)return;const Ce=X==="up"?pe-1:pe+1;if(Ce<0||Ce>=b.value.length)return;const Le=[...b.value],[rt]=Le.splice(pe,1);Le.splice(Ce,0,rt),b.value=Le}function Ut(q,X){if(q===X)return;const pe=b.value.findIndex(tt=>tt.id===q),Ce=b.value.findIndex(tt=>tt.id===X);if(pe<0||Ce<0)return;const Le=[...b.value],[rt]=Le.splice(pe,1);Le.splice(Ce,0,rt),b.value=Le}function ya(q,X){if(q===X)return;const pe=c.value.findIndex(tt=>tt===q),Ce=c.value.findIndex(tt=>tt===X);if(pe<0||Ce<0)return;const Le=[...c.value],[rt]=Le.splice(pe,1);Le.splice(Ce,0,rt),c.value=Le}function Gt(q,X){const pe=c.value.findIndex(tt=>tt===q);if(pe<0)return;const Ce=X==="up"?pe-1:pe+1;if(Ce<0||Ce>=c.value.length)return;const Le=[...c.value],[rt]=Le.splice(pe,1);Le.splice(Ce,0,rt),c.value=Le}function $t(q){b.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:Ht(X.color)??null})),p.value={},Ie(),pt()}function ft(q,X){const pe=Number(X),Ce=Number.isFinite(pe)?Math.max(0,Math.min(1e3,pe)):void 0;b.value=b.value.map(Le=>Le.id===q?{...Le,targetHours:Ce??Le.targetHours}:Le)}function xt(q,X){b.value=b.value.map(pe=>pe.id===q?{...pe,includeWeekend:X}:pe)}function Kt(q,X){p.value={...p.value,[q]:X}}function At(q,X){c.value.includes(X)&&Kt(X,q)}function Dt(q){if(de.value===q){bt();return}de.value=q,Zt(()=>{const X=document.getElementById(`onboarding-color-popover-${q}`);X==null||X.focus()})}function bt(){de.value=null}function oo(q){const X=q.target;X!=null&&X.closest("[data-color-popover]")||bt()}function Ht(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,Ce,Le]=X;return`#${pe}${pe}${Ce}${Ce}${Le}${Le}`.toUpperCase()}return X.toUpperCase()}function Ra(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:Ht(X==null?void 0:X.color)??null})):[]}function Lt(q){return Ht(q==null?void 0:q.color)??Xt.value}const Xt=x(()=>H.value[0]??"#2563EB");function wa(q,X){b.value=b.value.map(pe=>pe.id===q?{...pe,color:X}:pe)}function Ea(q,X){const pe=Ht(X);wa(q,pe??Xt.value)}function ja(q,X){const pe=Ht(X);wa(q,pe??Xt.value),bt()}function ua(q){if(!Number.isFinite(q))return 8;const X=Math.max(0,Math.min(24,q));return Math.round(X*100)/100}function et(q){if(!Number.isFinite(q))return null;const X=Math.max(0,Math.min(1e3,Number(q)));return Math.round(X*100)/100}function ga(q){return Number.isFinite(q)?Math.max(1,Math.min(6,Math.round(q))):3}function wt(q){return JSON.parse(JSON.stringify(q))}function at(q){return Number.isFinite(q)?Math.round(Math.max(0,q)*2)/2:0}async function Ct(){if(w.value=!0,m.value="",!(typeof window<"u"&&typeof window.OC<"u")){w.value=!1,_.value=[];return}try{const X=await $u();_.value=X,m.value=""}catch{m.value="Unable to load Deck boards. Open Deck to create one.",_.value=[]}finally{w.value=!1}}async function St(){var X,pe;k.value=!0,A.value="";const q=t.calendars.map(Ce=>Ce.id).filter(Boolean);if(!q.length){R.value=[],k.value=!1;return}try{const Ce=[];for(let Le=1;Le<=6;Le+=1){const rt=-Le,tt=await r(o("loadData"),{range:"week",offset:rt,cals:q,include:["data"]}),ro=Array.isArray((pe=(X=tt==null?void 0:tt.charts)==null?void 0:X.perDaySeries)==null?void 0:pe.series)?tt.charts.perDaySeries.series:[],No={};ro.forEach(Va=>{const qt=String((Va==null?void 0:Va.id)??"");if(!qt)return;const tr=Array.isArray(Va==null?void 0:Va.data)?Va.data:[];No[qt]=at(tr.reduce((Gi,Ki)=>Gi+Number(Ki||0),0))}),Object.keys(No).length||(Array.isArray(tt==null?void 0:tt.byCal)?tt.byCal:[]).forEach(qt=>{const tr=String((qt==null?void 0:qt.id)??(qt==null?void 0:qt.calendarId)??"");tr&&(No[tr]=at(Number((qt==null?void 0:qt.hours)??(qt==null?void 0:qt.total)??0)))}),Ce.push({offset:rt,totals:No})}R.value=Ce}catch{A.value="Recent activity could not be loaded.",R.value=[]}finally{k.value=!1}}function pa(q){O.value={...O.value,enabled:q}}function fa(q){return!(O.value.hiddenBoards||[]).includes(q)}function jr(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((Ce,Le)=>Ce-Le)}}function Ni(q,X){b.value=b.value.map(pe=>pe.id===q?{...pe,paceMode:X}:pe)}function Ii(q){if(fe.value)return;const X=Number(q.value);if(!Number.isFinite(X)){C.value=null;return}C.value=et(X)}function Oi(q){const X=Number(q.value);T.value=ua(Number.isFinite(X)?X:T.value)}function Xn(q){const X=Number(q.value);Number.isFinite(X)&&(P.value=ga(X))}function Bi(){gt.value<=0||(C.value=et(at(gt.value)))}function Hi(q){const X=Number(ut.value[q]??0);X<=0||Ur(q,String(at(X)))}function Fi(q){const X=Number(nt.value[q]??0);X<=0||ft(q,String(at(X)))}function Pi(q){I.value={...I.value,enabled:q}}function ka(q,X){I.value={...I.value,modes:{...I.value.modes,[q]:{...I.value.modes[q],enabled:X}}}}function Qo(q){I.value={...I.value,...q}}function yo(q,X){I.value={...I.value,modes:{...I.value.modes,[q]:{...I.value.modes[q],delivery:X}}}}function Wi(q,X){I.value={...I.value,modes:{...I.value.modes,[q]:{...I.value.modes[q],...X}}}}function Vr(q){const X=/(birthday|holiday|feiertag|urlaub|contacts?)/i,pe=[4,5,6],Ce={};let Le=0;return q.forEach(rt=>{const tt=V.value.get(rt),ro=(tt==null?void 0:tt.displayname)??"";X.test(ro)||(Ce[rt]=pe[Le%pe.length],Le+=1)}),Ce}function Qn(){const q=t.calendars.map(pe=>pe.id).filter(Boolean);c.value=q,l.value="total_plus_categories",d.value="standard",S.value="auto",T.value=8,I.value={...Ao(),enabled:!1},P.value=ga(ze.value||3),O.value=wt(Do()),_.value.length?(O.value.enabled=!0,O.value.hiddenBoards=[]):(O.value.enabled=!1,O.value.hiddenBoards=[]),b.value=[],p.value={};const X=Object.fromEntries(Object.entries(ut.value).filter(([pe])=>q.includes(pe)));$.value=Object.keys(X).length?X:Vr(q),C.value=et(Object.values($.value).reduce((pe,Ce)=>pe+Number(Ce||0),0)||40),rs()}const es=x(()=>s.value>0),ts=x(()=>s.value<ue.value.length-1),as=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||!b.value.length))return!0}return!!(ee.value==="preferences"&&(T.value<0||T.value>24)||ee.value==="review"&&v.value&&f.value.trim()==="")});function os(){if(ee.value==="intro"&&u.value==="quick"){Qn();return}ts.value&&!as.value&&s.value++}function er(){es.value&&s.value--}function zi(){a("skip")}function Ri(){W.value&&a("close")}function rs(){const q=In(l.value,t.calendars,c.value,fe.value?{categories:b.value.map(Le=>({...Le})),assignments:{...p.value}}:void 0),X=q.targetsConfig;if(X.allDayHours=ua(T.value),X.balance||(X.balance={basis:"events",trend:{lookbackWeeks:P.value}}),X.balance.trend||(X.balance.trend={lookbackWeeks:P.value}),X.balance.trend.lookbackWeeks=ga(P.value),fe.value){const Le=et(ae.value);Le!=null&&(X.totalHours=Le)}else if(l.value==="total_plus_categories"){const Le=et(U.value);Le!=null&&(X.totalHours=Le)}else if(C.value!=null){const Le=et(C.value);Le!=null&&(X.totalHours=Le)}const pe={...q.targetsWeek};Object.entries($.value).forEach(([Le,rt])=>{c.value.includes(Le)&&(pe[Le]=Pa(rt))});const Ce=Object.fromEntries(Object.entries(pe).map(([Le,rt])=>[Le,Wa(rt)]));Object.keys(pe).length&&(X.ui.showCalendarCharts=!0),a("complete",{strategy:l.value,selected:[...c.value],targetsConfig:X,groups:q.groups,targetsWeek:pe,targetsMonth:Ce,themePreference:S.value,deckSettings:wt(O.value),reportingConfig:{...I.value},dashboardMode:d.value,widgets:re.value,saveProfile:v.value,profileName:v.value?f.value.trim():""})}function ji(){const q=In(l.value,t.calendars,c.value,fe.value?{categories:b.value.map(Le=>({...Le})),assignments:{...p.value}}:void 0),X=q.targetsConfig;if(X.allDayHours=ua(T.value),X.balance||(X.balance={basis:"events",trend:{lookbackWeeks:P.value}}),X.balance.trend||(X.balance.trend={lookbackWeeks:P.value}),X.balance.trend.lookbackWeeks=ga(P.value),fe.value){const Le=et(ae.value);Le!=null&&(X.totalHours=Le)}else if(l.value==="total_plus_categories"){const Le=et(U.value);Le!=null&&(X.totalHours=Le)}else if(C.value!=null){const Le=et(C.value);Le!=null&&(X.totalHours=Le)}const pe={...q.targetsWeek};Object.entries($.value).forEach(([Le,rt])=>{c.value.includes(Le)&&(pe[Le]=Pa(rt))});const Ce=Object.fromEntries(Object.entries(pe).map(([Le,rt])=>[Le,Wa(rt)]));return Object.keys(pe).length&&(X.ui.showCalendarCharts=!0),{targetsConfig:X,groups:q.groups,targetsWeek:pe,targetsMonth:Ce,selected:[...c.value]}}function Vi(){return{completed:!1,version:t.onboardingVersion,strategy:l.value,completed_at:"",dashboardMode:d.value}}function Ui(q){const X=ji(),pe=Vi();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:wt(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:wt(O.value),reporting_config:{...I.value},onboarding:pe}}function ns(q,X){if(X.checked){c.value.includes(q)||(c.value=[...c.value,q]);return}c.value=c.value.filter(pe=>pe!==q)}function Ur(q,X){const pe=Number(X);if(!Number.isFinite(pe)){const Ce={...$.value};delete Ce[q],$.value=Ce;return}$.value={...$.value,[q]:Pa(pe)}}function ss(q){return Number.isFinite($.value[q])?$.value[q]:""}return{stepOrder:n,stepIndex:s,selectedStrategy:l,dashboardMode:d,profileMode:g,introChoice:u,saveProfile:v,profileName:f,localSelection:c,categories:b,assignments:p,calendarTargets:$,themePreference:S,allDayHoursInput:T,totalHoursInput:C,trendLookbackInput:P,deckSettingsDraft:O,reportingDraft:I,deckBoards:_,deckBoardsLoading:w,deckBoardsError:m,suggestionsLoading:k,suggestionsError:A,dashboardPresets:J,deckVisibleBoards:Y,deckReviewSummary:le,reportingSummary:Z,openColorId:de,previewTheme:B,systemThemeLabel:G,categoryTotalHours:ae,categoryColorPalette:H,categoryPresets:K,strategies:j,categoriesEnabled:fe,calendarTargetsEnabled:E,isClosable:W,enabledSteps:ue,currentStep:ee,stepNumber:be,totalSteps:ve,saving:_e,snapshotSaving:xe,snapshotNotice:ge,selectedCalendars:he,selectedCalendarIds:Me,suggestedCalendarTargets:ut,suggestedCategoryTargets:nt,availableHistoryLookback:Fe,activeHistoryLookback:ze,historySummary:it,unassignedSelectedCalendars:Ot,goalsHealth:Wt,draft:st,strategyTitle:yt,setProfileMode:ie,setIntroChoice:me,setSaveProfile:Te,setProfileName:De,applyStartStep:Je,goToStep:Ue,stepLabel:Qe,addCategory:Q,removeCategory:se,moveCategory:Ye,reorderCategory:Ut,reorderSelectedCalendar:ya,moveSelectedCalendar:Gt,setCategoryLabel:$e,applyCategoryPreset:$t,setCategoryTarget:ft,toggleCategoryWeekend:xt,assignCalendar:Kt,addCalendarToCategory:At,setCalendarTarget:Ur,getCalendarTarget:ss,toggleColorPopover:Dt,closeColorPopover:bt,resolvedColor:Lt,applyColor:ja,onColorInput:Ea,setDeckEnabled:pa,isDeckBoardVisible:fa,toggleDeckBoard:jr,setCategoryPaceMode:Ni,onTotalHoursChange:Ii,onAllDayHoursChange:Oi,onTrendLookbackChange:Xn,applySuggestedTotalTarget:Bi,applySuggestedCalendarTarget:Hi,applySuggestedCategoryTarget:Fi,setReportingEnabled:Pi,setReportingModeEnabled:ka,setReportingModeDelivery:yo,updateReporting:Qo,updateReportingMode:Wi,canGoBack:es,canGoNext:ts,nextDisabled:as,nextStep:os,prevStep:er,handleSkip:zi,handleClose:Ri,emitComplete:rs,runQuickSetup:Qn,toggleCalendar:ns,resetWizard:te,buildStepPayload:Ui}}const $w={class:"onboarding-header"},Tw={class:"onboarding-actions"},Mw=["disabled"],Aw={class:"onboarding-step-nav","aria-label":"Onboarding steps"},Dw=["disabled","onClick"],Lw={class:"step-arrow__inner"},Ew={class:"step-arrow__main"},Nw={class:"step-arrow__label"},Iw={class:"step-arrow__icon","aria-hidden":"true"},Ow={class:"step-arrow__action"},Bw={class:"onboarding-body"},Hw={key:0,class:"onboarding-step"},Fw={key:1,class:"onboarding-step"},Pw={key:2,class:"onboarding-step"},Ww={key:3,class:"onboarding-step"},zw={key:4,class:"onboarding-step"},Rw={key:5,class:"onboarding-step"},jw={key:6,class:"onboarding-step"},Vw={key:7,class:"onboarding-step"},Uw={class:"onboarding-footer"},Gw=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:g,goToStep:u,handleClose:v,canGoBack:f,canGoNext:c,nextDisabled:b,prevStep:p,nextStep:$,emitComplete:S,profileMode:T,introChoice:C,saveProfile:P,profileName:O,themePreference:I,systemThemeLabel:_,previewTheme:w,totalHoursInput:m,categoryTotalHours:k,categoriesEnabled:A,calendarTargetsEnabled:R,onTotalHoursChange:L,applySuggestedTotalTarget:J,allDayHoursInput:K,onAllDayHoursChange:Y,trendLookbackInput:le,onTrendLookbackChange:Z,deckSettingsDraft:de,setDeckEnabled:B,deckBoards:G,deckBoardsLoading:D,deckBoardsError:V,isDeckBoardVisible:he,toggleDeckBoard:Me,reportingDraft:ae,setReportingEnabled:U,setReportingModeEnabled:H,setReportingModeDelivery:j,updateReporting:ce,updateReportingMode:fe,dashboardMode:E,dashboardPresets:W,strategies:re,selectedStrategy:ue,localSelection:ee,toggleCalendar:be,categories:ve,selectedCalendars:_e,suggestedCalendarTargets:xe,suggestedCategoryTargets:ge,applySuggestedCalendarTarget:Ee,applySuggestedCategoryTarget:Se,suggestionsLoading:te,suggestionsError:ie,activeHistoryLookback:me,historySummary:Te,unassignedSelectedCalendars:De,goalsHealth:Pe,assignments:Ie,addCategory:Fe,removeCategory:ze,moveCategory:it,reorderCategory:ut,reorderSelectedCalendar:nt,moveSelectedCalendar:gt,setCategoryLabel:Ot,setCategoryTarget:Wt,setCategoryPaceMode:st,toggleCategoryWeekend:yt,assignCalendar:pt,setCalendarTarget:Bt,getCalendarTarget:Je,categoryPresets:Ue,resolvedColor:Qe,onColorInput:Q,draft:se,strategyTitle:$e,applyCategoryPreset:Ye,deckReviewSummary:Ut,deckVisibleBoards:ya,reportingSummary:Gt,setIntroChoice:$t,setProfileMode:ft,setSaveProfile:xt,setProfileName:Kt,buildStepPayload:At}=Sw({props:a,emit:o}),Dt=oe(!1),bt=x(()=>d.value||Dt.value);async function oo(at){if(!a.persistStep)return o("save-step",at),!0;try{return Dt.value=!0,await a.persistStep(at),!0}catch{return!1}finally{Dt.value=!1}}async function Ht(){return bt.value?!1:oo(At(s.value))}async function Ra(at,Ct){bt.value||wt(Ct)||at===s.value||!await Ht()||u(at)}async function Lt(){if(bt.value||b.value)return;if(s.value==="intro"&&C.value==="quick"){$();return}await Ht()&&$()}async function Xt(){bt.value||!f.value||!await Ht()||p()}async function wa(){bt.value||!l.value||!await Ht()||v()}function Ea(){const at=At("review");return{selected:[...at.cals??[]],groups:{...at.groups??{}},targetsConfig:at.targets_config??{},reportingConfig:at.reporting_config??{...ae.value}}}async function ja(){a.sendTestReport&&await a.sendTestReport(Ea())}async function ua(){a.sendCheckpointReport&&await a.sendCheckpointReport(Ea())}function et(at,Ct){return at===s.value?!1:a.hasExistingConfig?!0:Ct<r.value}function ga(at,Ct){return at===s.value||a.hasExistingConfig?!1:Ct>r.value}function wt(at){return a.hasExistingConfig?!1:at>r.value}return(at,Ct)=>(h(),dt(ni,{visible:at.visible,theme:M(w),"close-on-backdrop":M(l),"close-on-esc":M(l),onClose:wa},{default:kt(()=>[i("header",$w,[Ct[0]||(Ct[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",Tw,[M(l)?(h(),y("button",{key:0,type:"button",class:"close-btn",disabled:bt.value,onClick:wa,"aria-label":"Close onboarding"}," × ",8,Mw)):ne("",!0)])]),i("nav",Aw,[(h(!0),y(ye,null,Ne(M(n),(St,pa)=>(h(),y("button",{key:St,type:"button",class:ke(["step-arrow",{done:et(St,pa),current:St===M(s),upcoming:ga(St,pa),locked:wt(pa)}]),disabled:bt.value,onClick:fa=>Ra(St,pa)},[i("span",Lw,[i("span",Ew,[i("span",Nw,N(M(g)(St)),1),i("span",Iw,N(St===M(s)?"•":et(St,pa)?"✓":"•"),1)]),i("span",Ow,N(St===M(s)?"Open":et(St,pa)?"Edit":""),1)])],10,Dw))),128))]),i("main",Bw,[M(s)==="intro"?(h(),y("section",Hw,[Re(Zb,{"has-existing-config":a.hasExistingConfig??!1,"snapshot-saving":a.snapshotSaving??!1,saving:bt.value,"snapshot-notice":a.snapshotNotice??null,"intro-choice":M(C),"profile-mode":M(T),"set-intro-choice":M($t),"set-profile-mode":M(ft),"on-continue":Lt,"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",Fw,[Re($h,{strategies:M(re),"selected-strategy":M(ue),"set-selected-strategy":St=>ue.value=St,"on-continue":Lt},null,8,["strategies","selected-strategy","set-selected-strategy"])])):M(s)==="calendars"?(h(),y("section",Pw,[Re(Hh,{calendars:at.calendars,"local-selection":M(ee),"toggle-calendar":M(be)},null,8,["calendars","local-selection","toggle-calendar"])])):M(s)==="deck"?(h(),y("section",Ww,[Re(fh,{"deck-settings-draft":M(de),"set-deck-enabled":M(B),"deck-boards":M(G),"deck-boards-loading":M(D),"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",zw,[Re(mc,{"selected-strategy":M(ue),"selected-calendars":M(_e),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(J),"trend-lookback-input":M(le),"active-history-lookback":M(me),"history-summary":M(Te),"suggestions-loading":M(te),"suggestions-error":M(ie),"on-trend-lookback-change":M(Z),"suggested-calendar-targets":M(xe),"suggested-category-targets":M(ge),"on-apply-calendar-suggestion":M(Ee),"on-apply-category-suggestion":M(Se),"add-category":M(Fe),"remove-category":M(ze),"move-category":M(it),"reorder-category":M(ut),"reorder-selected-calendar":M(nt),"move-selected-calendar":M(gt),"set-category-label":M(Ot),"apply-category-preset":M(Ye),"set-category-target":M(Wt),"set-category-pace-mode":M(st),"toggle-category-weekend":M(yt),"assign-calendar":M(pt),"set-calendar-target":M(Bt),"get-calendar-target":M(Je),"unassigned-selected-calendars":M(De),"goals-health":M(Pe),"resolved-color":M(Qe),"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",Rw,[Re(Xv,{"theme-preference":M(I),"system-theme-label":M(_),"preview-theme":M(w),"set-theme-preference":St=>I.value=St,"total-hours-input":M(m),"category-total-hours":M(k),"categories-enabled":M(A),"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(Z),"reporting-draft":M(ae),"set-reporting-enabled":M(U),"set-reporting-mode-enabled":M(H),"set-reporting-mode-delivery":M(j),"update-reporting":M(ce),"update-reporting-mode":M(fe),"send-test-report":ja,"send-checkpoint-report":ua},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",jw,[Re(xh,{"dashboard-mode":M(E),"set-dashboard-mode":St=>E.value=St,"on-continue":Lt,"dashboard-presets":M(W)},null,8,["dashboard-mode","set-dashboard-mode","dashboard-presets"])])):M(s)==="review"?(h(),y("section",Vw,[Re(Jy,{"strategy-title":M($e),"categories-enabled":M(A),"calendar-targets-enabled":M(R),"selected-calendars":M(_e),"draft-targets-categories":M(se).targetsConfig.categories,"draft-total-hours":M(se).targetsConfig.totalHours,"total-hours-input":M(m),"category-total-hours":M(k),"deck-review-summary":M(Ut),"deck-enabled":M(de).enabled,"deck-visible-boards":M(ya),"reporting-enabled":M(ae).enabled,"reporting-summary":M(Gt),"theme-preference":M(I),"dashboard-mode":M(E),"save-profile":M(P),"profile-name":M(O),"show-save-profile":a.hasExistingConfig??!1,"set-save-profile":M(xt),"set-profile-name":M(Kt),"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",Uw,[M(s)==="intro"?(h(),y(ye,{key:0},[Ct[2]||(Ct[2]=i("div",{class:"onboarding-footer-spacer"},null,-1)),Re(M(sa),{type:"primary",disabled:bt.value||M(b),onClick:Lt},{default:kt(()=>[...Ct[1]||(Ct[1]=[Ge("Continue",-1)])]),_:1},8,["disabled"])],64)):(h(),y(ye,{key:1},[M(f)?(h(),dt(M(sa),{key:0,type:"tertiary",disabled:bt.value,onClick:Xt},{default:kt(()=>[...Ct[3]||(Ct[3]=[Ge("Back",-1)])]),_:1},8,["disabled"])):ne("",!0),M(c)?(h(),dt(M(sa),{key:1,type:"primary",disabled:M(b)||bt.value,onClick:Lt},{default:kt(()=>[...Ct[4]||(Ct[4]=[Ge("Continue",-1)])]),_:1},8,["disabled"])):(h(),dt(M(sa),{key:2,type:"primary",disabled:bt.value||M(b),onClick:M(S)},{default:kt(()=>[...Ct[5]||(Ct[5]=[Ge(" Start dashboard ",-1)])]),_:1},8,["disabled","onClick"]))],64))])]),_:1},8,["visible","theme","close-on-backdrop","close-on-esc"]))}}),Kw=["id","role","aria-labelledby"],qw={key:0,class:"sb-title"},Jw={key:1,class:"sb-description"},Zw={class:"setup-actions"},Yw={class:"preset-form"},Xw=["disabled"],Qw={key:0,class:"preset-error"},ek={key:2,class:"preset-warnings"},tk={class:"preset-header"},ak={key:3,class:"preset-empty"},ok={key:4,class:"preset-list"},rk={class:"preset-meta"},nk={class:"preset-name"},sk={class:"preset-info"},ik={key:0},lk={class:"preset-actions"},dk=ct(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"),g=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 f(S){o("load",S)}function c(S){window.confirm(`Delete profile "${S}"?`)&&o("delete",S)}function b(){var S;(S=s.value)==null||S.click()}function p(S){var P;const T=S.target,C=(P=T==null?void 0:T.files)==null?void 0:P[0];C&&o("import-config",C),T&&(T.value="")}function $(S){if(!S)return"";const T=new Date(S);if(Number.isNaN(T.getTime()))return S;const P=new Date().getTime()-T.getTime(),O=Math.round(P/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 w=Math.round(_/7);return w<5?`${w}w ago`:An(S,{year:"numeric",month:"2-digit",day:"2-digit"})||S}return(S,T)=>(h(),y("div",{id:d.value,class:"sb-pane",role:g.value,"aria-labelledby":u.value},[l.value?(h(),y("div",qw,"Profiles")):ne("",!0),l.value?(h(),y("p",Jw," Export/import full configs or save/load named profiles (calendars, groups, targets, widgets, settings). ")):ne("",!0),i("div",Zw,[Re(M(sa),{type:"tertiary",size:"small",onClick:T[0]||(T[0]=C=>o("export-config"))},{default:kt(()=>[...T[4]||(T[4]=[Ge(" Export configuration ",-1)])]),_:1}),Re(M(sa),{type:"tertiary",size:"small",onClick:b},{default:kt(()=>[...T[5]||(T[5]=[Ge(" Import configuration ",-1)])]),_:1}),i("input",{ref_key:"fileInput",ref:s,type:"file",accept:"application/json",class:"import-input",onChange:p},null,544)]),i("div",Yw,[T[6]||(T[6]=i("label",{class:"preset-label",for:"preset-name"},"Profile name",-1)),uo(i("input",{id:"preset-name","onUpdate:modelValue":T[1]||(T[1]=C=>r.value=C),type:"text",placeholder:"e.g. Focus week",disabled:S.isSaving,onKeyup:Da(v,["enter"])},null,40,Xw),[[$n,r.value]]),n.value?(h(),y("div",Qw,N(n.value),1)):ne("",!0),Re(M(sa),{class:"preset-save",type:"primary",disabled:S.isSaving||!r.value.trim(),onClick:v},{default:kt(()=>[Ge(N(S.isSaving?"Saving…":"Save current configuration"),1)]),_:1},8,["disabled"])]),S.warnings.length?(h(),y("div",ek,[T[8]||(T[8]=i("div",{class:"warnings-title"},"Warnings",-1)),i("ul",null,[(h(!0),y(ye,null,Ne(S.warnings,(C,P)=>(h(),y("li",{key:P},N(C),1))),128))]),Re(M(sa),{type:"tertiary",class:"preset-clear",onClick:T[2]||(T[2]=C=>o("clear-warnings"))},{default:kt(()=>[...T[7]||(T[7]=[Ge(" Clear warnings ",-1)])]),_:1})])):ne("",!0),i("div",tk,[T[9]||(T[9]=i("h3",null,"Saved profiles",-1)),Re(M(sa),{type:"tertiary",disabled:S.isLoading,onClick:T[3]||(T[3]=C=>o("refresh"))},{default:kt(()=>[Ge(N(S.isLoading?"Refreshing…":"Refresh list"),1)]),_:1},8,["disabled"])]),!S.presets.length&&!S.isLoading?(h(),y("div",ak," No profiles yet. Save one above to get started. ")):(h(),y("ul",ok,[(h(!0),y(ye,null,Ne(S.presets,C=>(h(),y("li",{key:C.name,class:"preset-item"},[i("div",rk,[i("div",nk,N(C.name),1),i("div",sk,[i("span",null,N(C.selectedCount)+" calendars",1),i("span",null,N(C.calendarCount)+" groups",1),C.updatedAt?(h(),y("span",ik,"Updated "+N($(C.updatedAt)),1)):ne("",!0)])]),i("div",lk,[Re(M(sa),{type:"primary",disabled:S.isApplying,onClick:P=>f(C.name)},{default:kt(()=>[Ge(N(S.isApplying?"Applying…":"Load"),1)]),_:2},1032,["disabled","onClick"]),Re(M(sa),{type:"tertiary",disabled:S.isApplying,onClick:P=>c(C.name)},{default:kt(()=>[...T[10]||(T[10]=[Ge(" Delete ",-1)])]),_:2},1032,["disabled","onClick"])])]))),128))]))],8,Kw))}}),[["__scopeId","data-v-b978e1df"]]),ck={class:"onboarding-header profiles-overlay__header"},uk={class:"onboarding-actions"},gk={class:"onboarding-body profiles-overlay__body"},pk=ct(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(),dt(ni,{visible:o.visible,theme:o.theme,"panel-class":"profiles-overlay","aria-labelledby":"profiles-overlay-title",onClose:r[8]||(r[8]=n=>a("close"))},{default:kt(()=>[i("header",ck,[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",uk,[i("button",{type:"button",class:"close-btn","aria-label":"Close profiles",onClick:r[0]||(r[0]=n=>a("close"))}," x ")])]),i("main",gk,[Re(dk,{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"]]),fk={key:0,class:"onboarding-overlay shortcuts-overlay",role:"dialog","aria-modal":"true","aria-labelledby":"opsdash-shortcuts-title"},bk=["onKeydown"],vk={class:"onboarding-body shortcuts-body"},hk={class:"shortcut-label"},mk={key:0},yk={class:"shortcut-combo","aria-hidden":"true"},wk={class:"shortcuts-footer"},kk=ct(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&&Zt(()=>{var d;(d=r.value)==null||d.focus()}).catch(()=>{})}),(l,d)=>(h(),dt(qd,{name:"onboarding-fade"},{default:kt(()=>[l.visible?(h(),y("div",fk,[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:Da(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",vk,[(h(!0),y(ye,null,Ne(l.groups,g=>(h(),y("section",{key:g.id,class:"shortcuts-group"},[i("h3",null,N(g.title),1),i("ul",null,[(h(!0),y(ye,null,Ne(g.items,u=>(h(),y("li",{key:u.id},[i("span",hk,[Ge(N(u.label)+" ",1),u.description?(h(),y("small",mk,N(u.description),1)):ne("",!0)]),i("span",yk,[(h(!0),y(ye,null,Ne(u.combo,(v,f)=>(h(),y("kbd",{key:f},N(v),1))),128))])]))),128))])]))),128))]),i("footer",wk,[Re(M(sa),{type:"primary",size:"small",onClick:s},{default:kt(()=>[...d[1]||(d[1]=[Ge(" Close ",-1)])]),_:1})])],42,bk)])):ne("",!0)]),_:1}))}}),[["__scopeId","data-v-a4c42127"]]),xk=["draggable","aria-busy","onClick","onDragstart"],_k={key:0,class:"widget-loading","aria-live":"polite"},Ck=24,Mu=12,Sk=ct(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 g(A){return!Number.isFinite(A)||A<=0?1:Math.max(1,Math.ceil((A+Mu)/(Ck+Mu)))}function u(A){const R=A.getBoundingClientRect(),L=g(R.height);A.style.gridRowEnd=`span ${L}`}function v(A,R,L){const J=d.get(A);if(J&&(J.disconnect(),d.delete(A)),!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(A,K)}Tt(()=>{d.forEach(A=>A.disconnect()),d.clear()});const f=x(()=>{const A=[];let R={items:[],col:1,remaining:4};const L=()=>{R.items.length&&A.push({items:R.items}),R={items:[],col:1,remaining:4}};return a.ordered.forEach(J=>{const K=b(J.layout.width);K>R.remaining&&L();const Y=R.col;R.items.push({...J,span:K,start:Y}),R.col+=K,R.remaining-=K}),L(),A});function c(A){switch(A){case"quarter":return"w-quarter";case"half":return"w-half";default:return"w-full"}}function b(A){return A==="quarter"?1:A==="half"?2:4}function p(A,R){if(R==="auto")return"h-auto";switch(A){case"s":return"h-s";case"l":return"h-l";case"xl":return"h-xl";default:return"h-m"}}function $(A){const R=(A==null?void 0:A.scale)||(A==null?void 0:A.textSize)||"md";return R==="sm"?"scale-sm":R==="lg"?"scale-lg":R==="xl"?"scale-xl":"scale-md"}function S(A){const R=(A==null?void 0:A.scale)||(A==null?void 0:A.textSize)||"md",L=R==="sm"?.85:R==="lg"?1.35:R==="xl"?1.6:1.1,J=A!=null&&A.dense?.72:1,K=L*J,Y=L*J,le=18*Y;return{"--widget-scale":String(L),"--widget-space":String(K),"--widget-density":String(J),"--widget-text-scale":String(Y),"--widget-title-size":`${le}px`}}function T(A){const R=r.value;if(!R)return{row:0,col:1};const L=R.getBoundingClientRect(),J=12,Y=(L.width-J*3)/4,le=Math.max(0,Math.min(L.width,A.clientX-L.left)),Z=Math.min(3,Math.max(0,Math.floor(le/(Y+J))))+1,de=Math.max(0,Math.min(L.height+400,A.clientY-L.top)),B=Number.parseFloat(getComputedStyle(R).getPropertyValue("--grid-row"))||24;return{row:Math.max(0,Math.floor(de/(B+J))),col:Z}}function C(A,R){var Z,de,B,G;const L=f.value,J=L[A]||L[L.length-1]||{items:[]},K=[...J.items||[]].filter(D=>D.start<R).sort((D,V)=>D.start-V.start).pop(),Y=[...J.items||[]].filter(D=>D.start>=R).sort((D,V)=>D.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[A-1]||L[L.length-1];return le&&le.items.length?(le.items[le.items.length-1].layout.order||0)+10:((((G=(B=(de=(Z=L[0])==null?void 0:Z.items)==null?void 0:de[0])==null?void 0:B.layout)==null?void 0:G.order)??0)||0)-10}function P(A){if(!a.editable||!l.value.length)return;const{row:R,col:L}=T(A),J=C(R,L);o("select-cell",J)}function O(A){a.editable&&(A.target.closest(".layout-item")||P(A))}function I(A){a.editable&&(A.target.closest(".layout-item")||P(A))}function _(A){if(!a.editable||!n.value)return;const{row:R,col:L}=T(A);s.value=C(R,L)}function w(){if(!a.editable||!n.value)return;const A=n.value,R=s.value??void 0;n.value=null,s.value=null,o("reorder",A,R)}function m(A){a.editable&&(n.value=A,s.value=null)}function k(){n.value=null,s.value=null}return(A,R)=>(h(),y("div",{ref_key:"gridEl",ref:r,class:ke(["layout-grid",{"show-guides":A.editable}]),onClick:O,onContextmenu:Xe(I,["prevent"]),onDragover:Xe(_,["prevent"]),onDrop:Xe(w,["prevent"])},[(h(!0),y(ye,null,Ne(A.ordered,L=>(h(),y("div",{key:L.id,ref_for:!0,ref:J=>v(L.id,J,L.heightMode),class:ke(["layout-item",[c(L.layout.width),p(L.layout.height,L.heightMode),$(L.options),{"is-editable":A.editable,"is-selected":A.editable&&A.selectedId===L.id,"is-dragging":A.editable&&n.value===L.id,"is-loading":!!L.loading}]]),style:He(S(L.options)),draggable:A.editable,"aria-busy":L.loading?"true":"false",onClick:Xe(J=>o("select",L.id),["stop"]),onDragstart:J=>m(L.id),onDragend:k},[L.loading?(h(),y("div",_k,[...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(),dt(nd(L.component),Hd({ref_for:!0},L.props),null,16))],46,xk))),128))],34))}}),[["__scopeId","data-v-178d9739"]]),$k={key:0,class:"advanced-overlay onboarding-overlay",role:"dialog","aria-modal":"false","aria-label":"Targets configuration"},Tk={class:"advanced-panel__body advanced-panel__body--goals onboarding-body"},Mk={class:"onboarding-step"},Ak=ct(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),g=oe(3),u=oe([]),v=oe({}),f=oe({}),c=oe([]),b=Object.freeze({}),p=Object.freeze({enabled:!1,available:0,label:"No lookback suggestions in widget-local mode."}),$=x(()=>Array.isArray(a.contextCalendars)?a.contextCalendars:[]),S=x(()=>{const te=new Set($.value.map(ie=>ie.id));return c.value.filter(ie=>te.has(ie))}),T=x(()=>new Map($.value.map(te=>[te.id,te]))),C=x(()=>S.value.map(te=>T.value.get(te)).filter(te=>!!te)),P=x(()=>u.value.reduce((te,ie)=>te+(Number(ie.targetHours)||0),0)),O=x(()=>C.value.reduce((te,ie)=>te+(Number(j(ie.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,ie=Math.max(0,C.value.length-te),me=ge(O.value),Te=ge(P.value),De=ge(Te-me);return{assigned:te,unassigned:ie,calendarTotal:me,categoryTotal:Te,delta:De,totalsMatch:Math.abs(De)<=.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||[])],()=>{w()},{immediate:!0});function w(){var ze,it;if(!a.widgetId){s.value=null;return}const te=a.widgets.find(ut=>ut.id===a.widgetId),ie=(te==null?void 0:te.options)||{},me=ie.useLocalConfig===!0,Te=aa(me&&ie.localConfig?ie.localConfig:a.contextTargetsConfig);s.value=za(Te),l.value=ve(Te,a.strategy),d.value=_e(Te.totalHours),g.value=xe(((it=(ze=Te==null?void 0:Te.balance)==null?void 0:ze.trend)==null?void 0:it.lookbackWeeks)??3),u.value=ue(Te.categories);const De=re(a.contextSelected,$.value);c.value=De;const Pe=W(me?ie.localTargetsWeek:a.contextTargetsWeek),Ie={};De.forEach(ut=>{Number.isFinite(Pe[ut])&&(Ie[ut]=Pe[ut])}),f.value=Ie;const Fe=E(me?ie.localGroupsById:a.contextGroupsById);v.value=l.value==="full_granular"?ee(De,u.value,Fe):{}}function m(){o("close")}function k(){if(!a.widgetId||!s.value)return;const te=In(l.value,$.value,S.value,l.value==="full_granular"?{categories:u.value.map(Te=>({...Te})),assignments:{...v.value}}:void 0),ie=be(s.value,te.targetsConfig);if(ie.balance.trend.lookbackWeeks=g.value,l.value==="total_only"){const Te=_e(d.value);Te!=null&&(ie.totalHours=Te)}else l.value==="total_plus_categories"?ie.totalHours=ge(O.value||ie.totalHours):ie.totalHours=ge(P.value||ie.totalHours);const me={};S.value.forEach(Te=>{const De=Number(f.value[Te]);Number.isFinite(De)&&(me[Te]=Pa(De))}),o("save",a.widgetId,{localConfig:ie,localTargetsWeek:me,localGroupsById:te.groups})}function A(){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 J(te){const ie=Number(te.value);d.value=Number.isFinite(ie)?_e(ie):null}function K(te){const ie=Number(te.value);Number.isFinite(ie)&&(g.value=xe(ie))}function Y(){const te=u.value.length+1,ie=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:ie}]}function le(te){u.value=u.value.filter(me=>me.id!==te);const ie={...v.value};Object.keys(ie).forEach(me=>{ie[me]===te&&(ie[me]="")}),v.value=ie}function Z(te,ie){const me=u.value.findIndex(Ie=>Ie.id===te);if(me<0)return;const Te=ie==="up"?me-1:me+1;if(Te<0||Te>=u.value.length)return;const De=[...u.value],[Pe]=De.splice(me,1);De.splice(Te,0,Pe),u.value=De}function de(te,ie){u.value=Se(u.value,te,ie)}function B(te,ie){c.value=Se(c.value,te,ie)}function G(te,ie){const me=c.value.findIndex(Ie=>Ie===te);if(me<0)return;const Te=ie==="up"?me-1:me+1;if(Te<0||Te>=c.value.length)return;const De=[...c.value],[Pe]=De.splice(me,1);De.splice(Te,0,Pe),c.value=De}function D(te,ie){u.value=u.value.map(me=>me.id===te?{...me,label:ie.trim()||me.label}:me)}function V(te){u.value=te.categories.map(me=>({...me}));const ie={};S.value.forEach((me,Te)=>{const De=te.categories[Te%te.categories.length];ie[me]=(De==null?void 0:De.id)||""}),v.value=ie}function he(te,ie){const me=Number(ie);u.value=u.value.map(Te=>Te.id===te?{...Te,targetHours:Number.isFinite(me)?Pa(me):0}:Te)}function Me(te,ie){u.value=u.value.map(me=>me.id===te?{...me,paceMode:ie==="time_aware"?"time_aware":"days_only"}:me)}function ae(te,ie){u.value=u.value.map(me=>me.id===te?{...me,includeWeekend:ie}:me)}function U(te,ie){v.value={...v.value,[te]:ie}}function H(te,ie){const me=Number(ie);if(!Number.isFinite(me)){const Te={...f.value};delete Te[te],f.value=Te;return}f.value={...f.value,[te]:Pa(me)}}function j(te){return Number.isFinite(f.value[te])?f.value[te]:""}function ce(te){return Ee(te==null?void 0:te.color)??r[0]}function fe(te,ie){const me=Ee(ie);u.value=u.value.map(Te=>Te.id===te?{...Te,color:me??ce(Te)}:Te)}function E(te){if(!te||typeof te!="object"||Array.isArray(te))return{};const ie={};return Object.entries(te).forEach(([me,Te])=>{const De=String(me||"").trim();De&&(ie[De]=Math.max(0,Math.min(9,Math.trunc(Number(Te)||0))))}),ie}function W(te){if(!te||typeof te!="object"||Array.isArray(te))return{};const ie={};return Object.entries(te).forEach(([me,Te])=>{const De=String(me||"").trim(),Pe=Number(Te);!De||!Number.isFinite(Pe)||(ie[De]=Pa(Pe))}),ie}function re(te,ie){const me=new Set(ie.map(Te=>Te.id));return Array.isArray(te)?te.map(Te=>String(Te||"")).filter(Te=>me.has(Te)):[]}function ue(te){return Array.isArray(te)?te.map((ie,me)=>({id:String((ie==null?void 0:ie.id)??`cat_${me}`).trim()||`cat_${me}`,label:String((ie==null?void 0:ie.label)??`Category ${me+1}`).trim()||`Category ${me+1}`,targetHours:Number.isFinite(ie==null?void 0:ie.targetHours)?Number(ie.targetHours):0,includeWeekend:(ie==null?void 0:ie.includeWeekend)!==!1,paceMode:(ie==null?void 0:ie.paceMode)==="time_aware"?"time_aware":"days_only",color:Ee(ie==null?void 0:ie.color)??null})):[]}function ee(te,ie,me){const Te=new Map;ie.forEach((Pe,Ie)=>{const Fe=Ie+1;Te.set(Fe,Pe.id)});const De={};return te.forEach(Pe=>{const Ie=Math.max(0,Math.min(9,Math.trunc(Number(me[Pe])||0)));De[Pe]=Te.get(Ie)||""}),De}function be(te,ie){var Te,De;const me=za(te);return me.totalHours=ie.totalHours,me.categories=ie.categories,me.ui.showCategoryBlocks=ie.ui.showCategoryBlocks,me.ui.showCategoryCharts=ie.ui.showCategoryCharts,me.ui.showCalendarCharts=ie.ui.showCalendarCharts,me.balance.categories=[...((Te=ie.balance)==null?void 0:Te.categories)||[]],me.balance.useCategoryMapping=((De=ie.balance)==null?void 0:De.useCategoryMapping)===!0,me}function ve(te,ie){return ie==="full_granular"||ie==="total_plus_categories"||ie==="total_only"?ie:Array.isArray(te==null?void 0:te.categories)&&te.categories.length>0?"full_granular":"total_plus_categories"}function _e(te){if(!Number.isFinite(te??NaN))return null;const ie=Math.max(0,Math.min(1e3,Number(te)));return Math.round(ie*100)/100}function xe(te){return Number.isFinite(te)?Math.max(1,Math.min(6,Math.round(te))):3}function ge(te){return Number.isFinite(te)?Math.round(Math.max(0,te)*2)/2:0}function Ee(te){if(typeof te!="string")return null;const ie=te.trim();if(!/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(ie))return null;if(ie.length===4){const[,me,Te,De]=ie;return`#${me}${me}${Te}${Te}${De}${De}`.toUpperCase()}return ie.toUpperCase()}function Se(te,ie,me){const Te=ze=>typeof ze=="string"?ze:ze.id,De=te.findIndex(ze=>Te(ze)===ie),Pe=te.findIndex(ze=>Te(ze)===me);if(De<0||Pe<0||De===Pe)return[...te];const Ie=[...te],[Fe]=Ie.splice(De,1);return Ie.splice(Pe,0,Fe),Ie}return(te,ie)=>te.widgetId&&s.value?(h(),y("div",$k,[i("div",{class:ke(["advanced-panel onboarding-panel",L()])},[i("button",{type:"button",class:"close-btn",onClick:m,"aria-label":"Close"},"×"),i("main",Tk,[i("section",Mk,[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":J,"on-apply-total-suggestion":R,"trend-lookback-input":g.value,"active-history-lookback":g.value,"history-summary":M(p),"suggestions-loading":!1,"suggestions-error":"","on-trend-lookback-change":K,"suggested-calendar-targets":M(b),"suggested-category-targets":M(b),"on-apply-calendar-suggestion":R,"on-apply-category-suggestion":R,"add-category":Y,"remove-category":le,"move-category":Z,"reorder-category":de,"reorder-selected-calendar":B,"move-selected-calendar":G,"set-category-label":D,"apply-category-preset":V,"set-category-target":he,"set-category-pace-mode":Me,"toggle-category-weekend":ae,"assign-calendar":U,"set-calendar-target":H,"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"},[ie[0]||(ie[0]=i("div",{class:"overlay-actions__hint"},"This editor only overrides this widget.",-1)),i("button",{type:"button",class:"ghost",onClick:A},"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:k},"Save")])])],2)])):ne("",!0)}}),[["__scopeId","data-v-0399ee27"]]),Dk=ct(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=bw(O,o.context);if(!I)return null;const _=O.options||{};return{...I,id:O.id,layout:O.layout,type:O.type,options:_}}).filter(Boolean)),g=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 f(){d.value.length&&(l.value=d.value[0].id)}function c(){l.value=null,n.value=null,s.value=null}function b(O){l.value=O,n.value=null,s.value=O}function p(){n.value=null,s.value=null}function $(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),p()}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),p()}function T(O){p(),r("open:onboarding",O)}function C(){l.value&&(n.value=l.value)}function P(O){r("select:cell",O)}return t({selectedItem:g,openOptionsForSelected:C,openAdvancedTargets:b,selectFirst:f}),(O,I)=>(h(),y("div",{class:ke(["layout-wrapper",{"editable-mode":O.editable}]),onClick:Xe(c,["self"])},[Re(Sk,{ordered:d.value,editable:O.editable,"selected-id":l.value,"widget-type-list":u.value,onSelect:v,onSelectCell:P,onAdd:I[0]||(I[0]=(_,w)=>r("edit:add",_,w)),onReorder:I[1]||(I[1]=(_,w)=>r("edit:reorder",_,w))},null,8,["ordered","editable","selected-id","widget-type-list"]),Re(Ak,{"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:p,onSave:$,onUseGlobal:S,onOpenOnboarding:T},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"]]),Lk={key:1,class:"wp-ring-wrap"},Ek={key:2,class:"wp-pie-wrap"},Nk={key:4,class:"wp-hbars"},Ik={key:5,class:"wp-heatmap"},Ok={key:8,class:"wp-note"},Bk={key:9,class:"wp-deck"},Hk={key:10,class:"wp-deckstats"},Fk={key:11,class:"wp-generic"},Pk=ct(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]=Za('<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",Lk,[...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",Ek,[...s[2]||(s[2]=[i("div",{class:"wp-pie"},null,-1)])])):M(o)==="stacked"?(h(),y(ye,{key:3},[s[3]||(s[3]=Za('<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",Nk,[...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",Ik,[(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]=Za('<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]=Za('<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",Ok,[...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",Bk,[...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",Hk,[...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",Fk))],2))}}),[["__scopeId","data-v-5ff4f026"]]),Wk=["onKeydown"],zk={class:"ov-head"},Rk={class:"ov-search"},jk=["onKeydown"],Vk={class:"ov-cats"},Uk=["onClick"],Gk={class:"ov-grid"},Kk=["title","onClick"],qk={class:"ov-preview"},Jk={key:0,class:"ov-empty"},Zk={class:"ov-foot"},Yk={class:"ov-hint"},Xk={class:"ov-foot-actions"},Qk=["disabled"],ex=["disabled"],tx=ct(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",Zt(()=>{var b;return(b=l.value)==null?void 0:b.focus()}))});const d=x(()=>{const c=new Set(["All"]);return a.widgetTypeList.forEach(p=>{p.category&&c.add(p.category)}),["All","Time","Charts","Tasks","Notes"].filter(p=>c.has(p))}),g=x(()=>a.widgetTypeList.filter(c=>{const b=s.value==="All"||c.category===s.value,p=!r.value||c.label.toLowerCase().includes(r.value.toLowerCase());return b&&p})),u=x(()=>{var c;return((c=a.widgetTypeList.find(b=>b.type===n.value))==null?void 0:c.label)??""});function v(c){n.value&&(o("select",n.value),c?o("close"):n.value="")}function f(){n.value&&v(!0)}return(c,b)=>c.open?(h(),y("div",{key:0,class:"ov-backdrop",onMousedown:b[7]||(b[7]=Xe(p=>c.$emit("close"),["self"])),onKeydown:b[8]||(b[8]=Da(Xe(p=>c.$emit("close"),["stop"]),["esc"]))},[i("div",{class:"overlay-panel",role:"dialog","aria-modal":"true","aria-label":"Add a widget",onKeydown:[b[6]||(b[6]=Da(Xe(p=>c.$emit("close"),["stop"]),["esc"])),Da(Xe(f,["stop"]),["enter"])]},[i("div",zk,[i("div",Rk,[b[9]||(b[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)),uo(i("input",{ref_key:"searchInputRef",ref:l,"onUpdate:modelValue":b[0]||(b[0]=p=>r.value=p),class:"ov-search-input",placeholder:"Search widgets…",type:"search",onKeydown:[b[1]||(b[1]=Da(Xe(p=>c.$emit("close"),["stop"]),["esc"])),Da(Xe(f,["stop"]),["enter"])]},null,40,jk),[[$n,r.value]])]),i("button",{class:"ov-cancel",type:"button",onClick:b[2]||(b[2]=p=>c.$emit("close"))},"Cancel")]),i("div",Vk,[(h(!0),y(ye,null,Ne(d.value,p=>(h(),y("button",{key:p,type:"button",class:ke(["ov-cat",{on:s.value===p}]),onClick:$=>s.value=p},N(p),11,Uk))),128))]),i("div",Gk,[(h(!0),y(ye,null,Ne(g.value,p=>(h(),y("div",{key:p.type,class:ke(["ov-card",{on:n.value===p.type}]),role:"button",title:p.label,onClick:$=>n.value=p.type,onDblclick:b[3]||(b[3]=$=>v(!0))},[i("div",qk,[Re(Pk,{type:p.type,selected:n.value===p.type},null,8,["type","selected"])]),i("div",{class:ke(["ov-name",{on:n.value===p.type}])},N(p.label),3)],42,Kk))),128)),g.value.length?ne("",!0):(h(),y("div",Jk,"No widgets match your search."))]),i("div",Zk,[i("span",Yk,"↵ Add · Esc cancel"+N(n.value?` · ${u.value}`:""),1),i("div",Xk,[i("button",{class:"ov-add-soft",type:"button",disabled:!n.value,onClick:b[4]||(b[4]=p=>v(!1))},"Add without closing",8,Qk),i("button",{class:"ov-add",type:"button",disabled:!n.value,onClick:b[5]||(b[5]=p=>v(!0))}," Add"+N(u.value?` ${u.value}`:" widget"),9,ex)])])],40,Wk)],32)):ne("",!0)}}),[["__scopeId","data-v-d6b3170f"]]),ax={class:"opt-section"},ox=["for"],rx=["id","min","max","step","value","onInput"],nx=["id","value","onChange"],sx=["value"],ix=["id","checked","onChange"],lx=["id","value","onInput"],dx={key:0,class:"opt-section"},cx=["for"],ux=["id","min","max","step","value","onInput"],gx=["id","value","onChange"],px=["value"],fx=["id","checked","onChange"],bx=["id","value","onInput"],vx={key:5,class:"colorlist"},hx=["onClick"],mx={key:6,class:"multi"},yx=["value","checked","onChange"],wx={key:7,class:"taglist"},kx={key:0,class:"taglist__hint"},xx={key:1,class:"taglist__hint"},_x={class:"taglist__meta"},Cx=["value","checked","onChange"],Sx={class:"taglist__label"},$x={key:0,class:"taglist__count"},Tx=["id","value","onInput"],Mx={key:9,class:"filter-builder"},Ax=["value","onInput"],Dx=["value","onInput"],Lx=["value","onInput"],Ex=["onClick"],Nx=["onClick"],Ix={key:1,class:"opt-section"},Ox={class:"tab-actions"},Bx={class:"tab-actions__meta"},Hx={class:"tab-actions__label"},Fx={key:0,class:"tab-actions__hint"},Px={class:"tab-actions__buttons"},Wx=["disabled","onClick"],zx=["disabled","onClick"],Rx={key:2,class:"opt-section"},jx={key:3,class:"opt-row opt-row--footer"},Vx=ct(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&&Zt(()=>{const B=a.value;if(!B)return;const G=B.getBoundingClientRect(),D=Math.min(440,window.innerWidth-24);let V=G.right-D;V<12&&(V=12),o.value={position:"fixed",top:`${G.bottom+8}px`,left:`${V}px`,width:`${D}px`}})}const n=e,s=t,l=oe({}),d={showHeader:!0,dense:!1,scale:"md"},g=[{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(g.map(ae=>ae.key)),G=((he=n.entry)==null?void 0:he.controls)||[],D=typeof((Me=n.entry)==null?void 0:Me.dynamicControls)=="function"?n.entry.dynamicControls(l.value||{},n.context||{}):[];return[...G,...D].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||"")}))),f=x(()=>(n.tabs||[]).length===1);Oe(()=>[n.entry,n.options],([B,G])=>{const D=(B==null?void 0:B.defaultOptions)||{},V=typeof(B==null?void 0:B.resolveOptions)=="function"?B.resolveOptions(G||{},n.context||{}):{};l.value={...d,...D,...V,...G||{}}},{immediate:!0,deep:!0});const c=x({get:()=>!!n.open,set:B=>s("toggle",B)});function b(B,G){const D=Number(G.target.value);s("change",B,D)}function p(B,G){const D=G.target.value;s("change",B,D)}function $(B,G){const D=G.target.checked;s("change",B,D)}function S(B,G){const D=G.target.value;s("change",B,D)}function T(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 D=m(B.key);return Array.isArray(D)&&D.length?D.includes(G):!!(B!=null&&B.defaultAll)}function P(B,G,D){const V=D.target.checked,he=m(B.key),Me=Array.isArray(he)&&he.length?[...he]:B!=null&&B.defaultAll?T(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 D=m(B.key);return(Array.isArray(D)?D.map(he=>String(he)):O(B)).includes(String(G))}function _(B){return!Array.isArray(m(B.key))}function w(B,G,D){const V=D.target.checked,he=O(B),Me=m(B.key),ae=Array.isArray(Me)?Me.map(ce=>String(ce)):he,U=new Set(ae),H=String(G);V?U.add(H):U.delete(H);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 D=l.value;for(const V of G){if(D==null)return;D=D[V]}return D}function k(B){const G=m(B);return Array.isArray(G)&&G.length?G:typeof G=="string"&&G.trim()?G.split(",").map(D=>D.trim()).filter(Boolean):L.slice(0,5)}function A(B,G,D){const V=[...k(B)];V[G]=D,s("change",B,V)}function R(B){const G=[...k(B),"#cccccc"];s("change",B,G)}const L=["#2563EB","#F97316","#10B981","#A855F7","#EC4899"];function J(B){const G=m(B);if(Array.isArray(G))return G.map(D=>({label:String((D==null?void 0:D.label)||""),labels:Array.isArray(D==null?void 0:D.labels)?D.labels.join(", "):String((D==null?void 0:D.labels)||""),assignees:Array.isArray(D==null?void 0:D.assignees)?D.assignees.join(", "):String((D==null?void 0:D.assignees)||"")}));if(typeof G=="string"&&G.trim())try{const D=JSON.parse(G);if(Array.isArray(D))return D.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=[...J(B),{label:"",labels:"",assignees:""}];s("change",B,Z(G))}function Y(B,G){const D=J(B).filter((V,he)=>he!==G);s("change",B,Z(D))}function le(B,G,D,V){const he=V.target.value,Me=J(B).map((ae,U)=>U===G?{...ae,[D]:he}:ae);s("change",B,Z(Me))}function Z(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]=[Za('<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",ax,[G[3]||(G[3]=i("div",{class:"opt-section__title"},"Layout & title",-1)),(h(),y(ye,null,Ne(g,D=>i("div",{key:D.key,class:"opt-row"},[i("label",{for:`opt-${D.key}`},N(D.label),9,ox),D.type==="number"?(h(),y("input",{key:0,id:`opt-${D.key}`,type:"number",min:D.min,max:D.max,step:D.step||1,value:m(D.key)??"",onInput:V=>b(D.key,V)},null,40,rx)):D.type==="select"?(h(),y("select",{key:1,id:`opt-${D.key}`,value:m(D.key),onChange:V=>p(D.key,V)},[(h(!0),y(ye,null,Ne(D.options||[],V=>(h(),y("option",{key:V.value,value:V.value},N(V.label),9,sx))),128))],40,nx)):D.type==="toggle"?(h(),y("input",{key:2,id:`opt-${D.key}`,type:"checkbox",checked:!!m(D.key),onChange:V=>$(D.key,V)},null,40,ix)):D.type==="text"?(h(),y("input",{key:3,id:`opt-${D.key}`,type:"text",value:m(D.key)??"",onInput:V=>S(D.key,V)},null,40,lx)):D.type==="color"?(h(),dt(En,{key:4,"model-value":m(D.key)||"#ffffff","onUpdate:modelValue":V=>s("change",D.key,V)},null,8,["model-value","onUpdate:modelValue"])):ne("",!0)])),64))]),u.value.length?(h(),y("div",dx,[G[5]||(G[5]=i("div",{class:"opt-section__title"},"Widget options",-1)),(h(!0),y(ye,null,Ne(u.value,D=>(h(),y("div",{key:D.key,class:"opt-row"},[i("label",{for:`opt-${D.key}`},N(D.label),9,cx),D.type==="number"?(h(),y("input",{key:0,id:`opt-${D.key}`,type:"number",min:D.min,max:D.max,step:D.step||1,value:m(D.key)??"",onInput:V=>b(D.key,V)},null,40,ux)):D.type==="select"?(h(),y("select",{key:1,id:`opt-${D.key}`,value:m(D.key),onChange:V=>p(D.key,V)},[(h(!0),y(ye,null,Ne(D.options||[],V=>(h(),y("option",{key:V.value,value:V.value},N(V.label),9,px))),128))],40,gx)):D.type==="toggle"?(h(),y("input",{key:2,id:`opt-${D.key}`,type:"checkbox",checked:!!m(D.key),onChange:V=>$(D.key,V)},null,40,fx)):D.type==="text"?(h(),y("input",{key:3,id:`opt-${D.key}`,type:"text",value:m(D.key)??"",onInput:V=>S(D.key,V)},null,40,bx)):D.type==="color"?(h(),dt(En,{key:4,"model-value":m(D.key)||"#ffffff","onUpdate:modelValue":V=>s("change",D.key,V)},null,8,["model-value","onUpdate:modelValue"])):D.type==="colorlist"?(h(),y("div",vx,[(h(!0),y(ye,null,Ne(k(D.key),(V,he)=>(h(),dt(En,{key:`${D.key}-${he}`,"model-value":V,"onUpdate:modelValue":Me=>A(D.key,he,Me)},null,8,["model-value","onUpdate:modelValue"]))),128)),i("button",{type:"button",class:"ghost sm",onClick:V=>R(D.key)},"+",8,hx)])):D.type==="multiselect"?(h(),y("div",mx,[(h(!0),y(ye,null,Ne(D.options||[],V=>(h(),y("label",{key:`${D.key}-${V.value}`,class:"multi__item"},[i("input",{type:"checkbox",value:V.value,checked:C(D,V.value),onChange:he=>P(D,V.value,he)},null,40,yx),i("span",null,N(V.label),1)]))),128))])):D.type==="taglist"?(h(),y("div",wx,[D.hint?(h(),y("div",kx,N(D.hint),1)):_(D)?(h(),y("div",xx," All tags are active by default. Uncheck to hide a filter. ")):ne("",!0),(h(!0),y(ye,null,Ne(D.options||[],V=>(h(),y("label",{key:`${D.key}-${V.value}`,class:"taglist__item"},[i("span",_x,[i("input",{type:"checkbox",value:V.value,checked:I(D,V.value),onChange:he=>w(D,V.value,he)},null,40,Cx),i("span",Sx,N(V.label),1)]),typeof V.count=="number"?(h(),y("span",$x,N(V.count),1)):ne("",!0)]))),128))])):D.type==="textarea"?(h(),y("textarea",{key:8,id:`opt-${D.key}`,rows:"3",value:m(D.key)??"",onInput:V=>S(D.key,V)},null,40,Tx)):D.type==="filterbuilder"?(h(),y("div",Mx,[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(J(D.key),(V,he)=>(h(),y("div",{key:`${D.key}-row-${he}`,class:"filter-builder__row"},[i("input",{type:"text",class:"filter-builder__label",value:V.label,placeholder:"Filter label",onInput:Me=>le(D.key,he,"label",Me)},null,40,Ax),i("input",{type:"text",class:"filter-builder__input",value:V.labels,placeholder:"Tags (comma separated)",onInput:Me=>le(D.key,he,"labels",Me)},null,40,Dx),i("input",{type:"text",class:"filter-builder__input",value:V.assignees,placeholder:"Assigned (comma separated)",onInput:Me=>le(D.key,he,"assignees",Me)},null,40,Lx),i("button",{type:"button",class:"ghost sm",onClick:Me=>Y(D.key,he)},"✕",8,Ex)]))),128)),i("button",{type:"button",class:"ghost sm",onClick:V=>K(D.key)},"+ Add filter",8,Nx)])):ne("",!0)]))),128))])):ne("",!0),v.value.length?(h(),y("div",Ix,[G[6]||(G[6]=i("div",{class:"opt-section__title"},"Tab actions",-1)),i("div",Ox,[(h(!0),y(ye,null,Ne(v.value,D=>(h(),y("div",{key:D.id,class:"tab-actions__row"},[i("div",Bx,[i("div",Hx,N(D.label),1),D.current?(h(),y("div",Fx,"Current tab")):ne("",!0)]),i("div",Px,[i("button",{type:"button",class:"ghost sm",disabled:D.current,onClick:Xe(V=>s("move-to-tab",D.id),["stop"])}," Move ",8,Wx),i("button",{type:"button",class:"ghost sm",disabled:D.current,onClick:Xe(V=>s("duplicate-to-tab",D.id),["stop"])}," Copy ",8,zx)])]))),128))])])):f.value?(h(),y("div",Rx,[...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",jx,[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(D=>s("open-advanced"),["stop"]))}," Advanced targets (widget only) ")])):ne("",!0)],4)):ne("",!0)],32))}}),[["__scopeId","data-v-2ef43534"]]);let Fr=null,ki=null,Au=!1;function Du(){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 Ux(){if(!(typeof window>"u"))try{Gn(),Gx()}catch(e){Jx()&&console.warn("[opsdash] theme boot install failed",e)}}function Gx(){if(Fr||ki||Au)return;const e=[];if(document.documentElement&&e.push(document.documentElement),document.body&&document.body!==document.documentElement&&e.push(document.body),e.length&&(Fr=new MutationObserver(()=>Gn()),e.forEach(t=>{Fr==null||Fr.observe(t,{attributes:!0,attributeFilter:["data-theme","class"]})})),window.matchMedia){const t=window.matchMedia("(prefers-color-scheme: dark)"),a=()=>Gn();typeof t.addEventListener=="function"?(t.addEventListener("change",a),ki=()=>t.removeEventListener("change",a)):typeof t.addListener=="function"&&(t.addListener(a),ki=()=>{t.removeListener(a)})}window.addEventListener("oc:theme:changed",Gn),Au=!0}function Gn(){const e=Kx();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 Kx(){const e=xi()==="dark",t=qx(),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 xi(){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 qx(){const e=window;return t=>{var a;return typeof((a=e.OC)==null?void 0:a.imagePath)=="function"?e.OC.imagePath("opsdash",t):""}}function Jx(){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 Zx(){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 Yx(e){const t=oe([]),a=oe({}),o=oe({}),r=oe({}),n=oe([]),s=oe(!1),l=oe(!1),d=x(()=>s.value&&!l.value),g=x(()=>s.value&&l.value),u=oe(!1),v=oe(null),f=oe(""),c=oe(""),b=oe(""),p=pr({}),$=oe([]),S=oe([]),T=oe([]),C=oe({}),P=oe({}),O=oe({}),I=oe(aa(Sa())),_=oe(null),w=Du()??"auto",m=oe(w),k=oe(Ao()),A=oe(Do());let R=0,L=null;function J(){return L||(L=K().finally(()=>{L=null}),L)}async function K(){var B,G,D,V,he;const Y=++R;s.value=!0;const le={...o.value},Z={...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,_e])=>{typeof _e=="string"&&_e.trim()!==""&&(be[String(ve)]=_e)}),be},U=()=>{var be,ve,_e,xe;let ee=!1;try{const ge=((be=C.value)==null?void 0:be.pie)||{},Ee=Array.isArray(ge.ids)?ge.ids.map(Se=>String(Se??"")):[];if(Ee.length){const Se=Array.isArray(ge.colors)?ge.colors:[],te=Ee.map((ie,me)=>o.value[ie]||Se[me]||"#60a5fa");C.value={...C.value||{},pie:{...ge,colors:te}},ee=!0}}catch(ge){(ve=e.isDebug)!=null&&ve.call(e)&&console.warn("recompute pie colors failed",ge)}try{const ge=(_e=C.value)==null?void 0:_e.perDaySeries;if(ge&&Array.isArray(ge.series)){const Ee=ge.series.map(Se=>{const te=String((Se==null?void 0:Se.id)??""),ie=o.value[te]||Se.color||"#60a5fa";return{...Se,color:ie}});C.value={...C.value||{},perDaySeries:{labels:ge.labels,series:Ee}},ee=!0}}catch(ge){(xe=e.isDebug)!=null&&xe.call(e)&&console.warn("recompute stacked colors failed",ge)}return ee},H=ee=>{var De,Pe,Ie,Fe,ze,it,ut,nt,gt,Ot,Wt,st,yt,pt,Bt;const be=Zx();f.value=be||String(((De=ee.meta)==null?void 0:De.uid)??""),c.value=String(((Pe=ee.meta)==null?void 0:Pe.from)??""),b.value=String(((Ie=ee.meta)==null?void 0:Ie.to)??""),u.value=!!((Fe=ee.meta)!=null&&Fe.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:"",Qe=typeof ve.firstDayOfWeek=="number"?ve.firstDayOfWeek:void 0;Qf({timeZone:Je||void 0,locale:Ue||void 0,firstDayOfWeek:Qe})}const _e=Array.isArray(ee.calendars)?ee.calendars:[],xe=ae((it=ee.colors)==null?void 0:it.byId),ge=ae((ut=ee.colors)==null?void 0:ut.byName),Ee=_e.map(Je=>{if(!Je||typeof Je!="object")return Je;const Ue={...Je},Qe=String(Ue.id??""),Q=String(Ue.displayname??Ue.name??Ue.calendar??Qe),se=typeof Ue.color=="string"?Ue.color:"",$e=typeof Ue.color_src=="string"?Ue.color_src:"",Ye=Qe?xe[Qe]:"",Ut=Q?ge[Q]:"",ya=Qe?le[Qe]:"",Gt=Q?Z[Q]:"",$t=ya||Gt;let ft=se;return!ft&&Ye&&(ft=Ye),!ft&&Ut&&(ft=Ut),(!ft||$e==="fallback")&&$t&&(ft=$t),!ft&&$t&&(ft=$t),ft&&(ft!==se&&(de=!0),Ue.color=ft,Qe&&(xe[Qe]=ft),Q&&(ge[Q]=ft)),Ue});if(t.value=Ee,a.value=ge,o.value=xe,Object.prototype.hasOwnProperty.call(ee,"onboarding")&&(_.value=ee.onboarding&&typeof ee.onboarding=="object"?{...ee.onboarding}:null),k.value=li(ee.reportingConfig,k.value),A.value=di(ee.deckSettings,A.value),ee.widgetPresets&&hu(ee.widgetPresets),e.widgetTabs){const Je=(nt=ee.onboarding)==null?void 0:nt.dashboardMode,Ue=e.widgetTabs.value||yu(Je==="quick"||Je==="pro"?Je:"standard",(gt=ee.onboarding)==null?void 0:gt.strategy);e.widgetTabs.value=Hr(ee.widgets,Ue)}const Se=((Ot=ee.groups)==null?void 0:Ot.byId)??((Wt=ee.groups)==null?void 0:Wt.byID)??((st=ee.groups)==null?void 0:st.ids)??{},te={};t.value.forEach(Je=>{const Ue=String((Je==null?void 0:Je.id)??""),Qe=Number((Se==null?void 0:Se[Ue])??0);te[Ue]=Number.isFinite(Qe)?Math.max(0,Math.min(9,Math.trunc(Qe))):0}),r.value=te;const ie=((yt=ee.targets)==null?void 0:yt.week)??{},me=((pt=ee.targets)==null?void 0:pt.month)??{};P.value=ie&&typeof ie=="object"?ie:{},O.value=me&&typeof me=="object"?me:{},I.value=aa(ee.targetsConfig??Sa());const Te=typeof ee.themePreference=="string"?ee.themePreference:"";m.value=Te==="light"||Te==="dark"?Te:"auto",(Bt=e.isDebug)!=null&&Bt.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,_e,xe;c.value=String(((be=ee.meta)==null?void 0:be.from)??c.value),b.value=String(((ve=ee.meta)==null?void 0:ve.to)??b.value),u.value=!!((_e=ee.meta)!=null&&_e.truncated),v.value=((xe=ee.meta)==null?void 0:xe.limits)??null,Object.assign(p,ee.stats??{}),$.value=Array.isArray(ee.byCal)?ee.byCal:[],S.value=Array.isArray(ee.byDay)?ee.byDay:[],T.value=Array.isArray(ee.longest)?ee.longest:[],C.value=ee.charts??{},l.value=!0,de&&U(),await Zt(),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}H(fe),(D=e.onCoreLoaded)==null||D.call(e,fe);const E=((V=e.includeLookback)==null?void 0:V.call(e))===!0,W=["data"];E&&W.push("lookback"),Me&&W.push("debug");const re={range:e.range.value,offset:e.offset.value|0,include:W};Me&&(re.debug=!0);const ue=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(ue)}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:g,isTruncated:u,truncLimits:v,uid:f,from:c,to:b,stats:p,byCal:$,byDay:S,longest:T,charts:C,targetsWeek:P,targetsMonth:O,targetsConfig:I,onboarding:_,load:J,themePreference:m,reportingConfig:k,deckSettings:A}}const Xx=[{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 todays 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 todays 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 weeks 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:Pr("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:Pr("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:Pr("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:"Whats 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:Pr("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:Pr("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 Lu(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 Eu(e,t){const a=Lu(e),o=Lu(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 Nu(){return[...Xx].sort((e,t)=>Eu(e.version,t.version))}function _i(e){const t=Lo(e);return Nu().find(a=>a.version===t)??null}function Pr(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 Qx(e){const t=oe(!1);let a=null,o=0,r=0;function n(s=!0){a&&clearTimeout(a),a=setTimeout(async()=>{var d,g;a=null;const l=++o;r=l;try{t.value=!0;const u=za(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 f=await e.postJson(e.route("persist"),v);if(l!==r)return;Array.isArray(f.read)?e.selected.value=f.read.map($=>String($)):Array.isArray(f.saved)&&(e.selected.value=f.saved.map($=>String($)));const c=f.targets_config_read,b=f.targets_config_saved,p=a_(c??b,u);if(p&&(e.targetsConfig.value=p),e.themePreference){const $=e_(f.theme_preference_read??f.theme_preference_saved);$&&(e.themePreference.value=$)}if(e.reportingConfig){const $=li(f.reporting_config_read??f.reporting_config_saved,e.reportingConfig.value);$&&(e.reportingConfig.value=$)}if(e.deckSettings){const $=di(f.deck_settings_read??f.deck_settings_saved,e.deckSettings.value);$&&(e.deckSettings.value=$)}if(e.widgetTabs){const $=f.widgets_read??f.widgets_saved??f.widgets,S=e.widgetTabs.value||Jo("standard");e.widgetTabs.value=Hr($,S)}if(e.onboardingState){const $=f.onboarding_read??f.onboarding_saved;if($&&typeof $=="object"){const S=Lo(((g=e.onboardingState.value)==null?void 0:g.releaseNotesSeenVersion)??""),T=Lo($.releaseNotesSeenVersion??"");e.onboardingState.value={...e.onboardingState.value||{},...$,releaseNotesSeenVersion:t_(S,T)}}}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 e_(e){return e==="light"||e==="dark"||e==="auto"?e:null}function t_(e,t){return e?t&&Eu(e,t)>=0?t:e:t}function a_(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})),aa(a)}function o_(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,b={}){var $;const p=c.trim();if(p===""){e.notifyError("Enter a preset name.");return}o.value=!0;try{const S={name:p,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}:{},...($=e.onboardingState)!=null&&$.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}:{}},T=await e.postJson(e.route("presetsSave"),S);t.value=Array.isArray(T==null?void 0:T.presets)?T.presets:t.value;const C=Array.isArray(T==null?void 0:T.warnings)?T.warnings:[];n.value=C,s.value=p,b.notifySuccess!==!1&&e.notifySuccess(`Profile "${p}" saved`)}catch(S){console.error(S),e.notifyError("Failed to save preset")}finally{o.value=!1}}function g(c){var C,P;const b=!!(c&&Object.prototype.hasOwnProperty.call(c,"widgets"));let p=null;const $=Array.isArray(c==null?void 0:c.selected)?c.selected.map(O=>String(O)):[];e.selected.value=$;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 T=c!=null&&c.targets_config&&typeof c.targets_config=="object"?aa(c.targets_config):za(e.targetsConfig.value);if(e.targetsConfig.value=T,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=li(c.reporting_config,e.reportingConfig.value)),e.deckSettings&&(c!=null&&c.deck_settings)&&(e.deckSettings.value=di(c.deck_settings,e.deckSettings.value)),e.widgetTabs&&(c!=null&&c.widgets)){const O=e.widgetTabs.value||Jo("standard");e.widgetTabs.value=Hr(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")&&(p=_,(C=e.setDashboardMode)==null||C.call(e,_)),e.onboardingState.value=I}!b&&p&&((P=e.applyDashboardPreset)==null||P.call(e,p)),e.userChangedSelection.value=!1}async function u(c){const b=c.trim();if(b!==""){r.value=!0;try{const p=await e.getJson(e.route("presetsLoad",b),{}),$=(p==null?void 0:p.preset)??{},S=Array.isArray($==null?void 0:$.warnings)?$.warnings:Array.isArray(p==null?void 0:p.warnings)?p.warnings:[];if(S.length){const T=`Some items in the saved profile are no longer available:
${S.map(C=>`${C}`).join(`
`)}
Apply the remaining values?`;if(!window.confirm(T)){n.value=S,r.value=!1;return}}g($),n.value=S,s.value=b,e.notifySuccess(`Profile "${b}" applied`),e.queueSave(!0),l().catch(T=>console.warn("[opsdash] refresh presets after load failed",T))}catch(p){console.error(p),e.notifyError("Failed to load preset")}finally{r.value=!1}}}async function v(c){const b=c.trim();if(b!=="")try{const p=await e.deleteJson(e.route("presetsDelete",b));t.value=Array.isArray(p==null?void 0:p.presets)?p.presets:t.value,e.notifySuccess(`Profile "${b}" deleted`),s.value===b&&(s.value=null)}catch(p){console.error(p),e.notifyError("Failed to delete preset")}}function f(){n.value=[]}return{presets:t,presetsLoading:a,presetSaving:o,presetApplying:r,presetWarnings:n,lastLoadedPreset:s,refreshPresets:l,savePreset:d,loadPreset:u,deletePreset:v,clearPresetWarnings:f}}function r_(){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 Tt(()=>{e!==null&&typeof window<"u"&&typeof window.cancelAnimationFrame=="function"&&(window.cancelAnimationFrame(e),e=null)}),{scheduleDraw:t}}function n_(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 s_(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 g=e.root.value;return l.push(`${g}/apps/opsdash/img/app.svg`),l.push(`${g}/apps-extra/opsdash/img/app.svg`),l.push(`${g}/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(n_("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 i_(e){const t=x(()=>{var r,n;return c_({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 $,S;const r={},n=($=e.charts.value)==null?void 0:$.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),g=l&&Array.isArray(l.series)&&Array.isArray(l.labels),u=e.calendarCategoryMap.value,v=d?(n.ids||[]).map(T=>String(T??"")):[],f=d?(n.labels||[]).map(T=>String(T??"")):[],c=d?(n.data||[]).map(T=>Number(T)||0):[],b=d?n.colors||[]:[],p=g?l.series:[];return e.calendarGroups.value.forEach(T=>{const C=[];d&&v.forEach((_,w)=>{u[_]===T.id&&C.push(w)});const P=C.length?{ids:C.map(_=>v[_]),labels:C.map(_=>f[_]),data:C.map(_=>c[_]),colors:C.map(_=>{var w;return b[_]||((w=e.colorsById.value)==null?void 0:w[v[_]])||"#60a5fa"})}:null,O=g?p.filter(_=>u[String((_==null?void 0:_.id)??"")]===T.id):[],I=O.length?{labels:l.labels,series:O}:null;r[T.id]={pie:P,stacked:I}}),r});return{calendarChartData:a,categoryChartsById:o}}const l_=/^\d{4}-\d{2}-\d{2}$/,d_="__uncategorized__";function c_(e){const t=e.perDaySeries;if(!t||!Array.isArray(t.labels)||!Array.isArray(t.series))return null;const a=t.labels.map(p=>String(p??"")),o=t.series.map(p=>{const $=String((p==null?void 0:p.id)??"");return{...p,id:$,name:String((p==null?void 0:p.name)??(p==null?void 0:p.label)??$),color:String((p==null?void 0:p.color)??""),data:a.map((S,T)=>{var P;const C=Number(((P=p==null?void 0:p.data)==null?void 0:P[T])??0);return Number.isFinite(C)?Math.max(0,C):0})}}),r=u_(e.forecastMode),n=ia(new Date),s=a.map(p=>l_.test(p)&&p>n),l=[];if(s.forEach((p,$)=>{p&&l.push($)}),!l.length||r==="off")return{labels:a,series:o};const d=e.targetsConfig??Sa(),g=p_(e.currentTargets),u=e.calendarCategoryMap??{},v=l.length,f=new Map;o.forEach(p=>{let $=0;p.data.forEach((S,T)=>{s[T]||($+=Math.max(0,S))}),f.set(p.id,$)});const c=Array.from(f.values()).reduce((p,$)=>p+$,0),b=new Map;if(o.forEach(p=>{b.set(p.id,g_(a.length))}),r==="total"){const p=Math.max(0,Number(d.totalHours??0)),$=Math.max(0,p-c);if($>1e-4){const S=$/v,T=o.map(P=>P.id),C=Iu(T,f,g);T.forEach(P=>{const O=C[P]??0;if(O<=0)return;const I=b.get(P);I&&l.forEach(_=>{I[_]=Kn(S*O)})})}}else if(r==="calendar")o.forEach(p=>{const $=g[p.id]??0;if($<=0)return;const S=Math.max(0,f.get(p.id)??0),T=Math.max(0,$-S);if(T<=1e-4)return;const C=T/v,P=b.get(p.id);P&&l.forEach(O=>{P[O]=Kn(C)})});else if(r==="category"){const p=new Set,$=Array.isArray(d.categories)?d.categories:[],S=new Map;$.forEach(C=>{S.set(String(C.id),Math.max(0,Number(C.targetHours??0)))});const T=new Map;o.forEach(C=>{const P=u==null?void 0:u[C.id],O=P?String(P):d_;T.has(O)||T.set(O,[]),T.get(O).push(C.id)}),T.forEach((C,P)=>{if(!C.length)return;const O=S.get(P)??0;if(O<=0)return;const I=C.reduce((A,R)=>A+Math.max(0,f.get(R)??0),0),_=Math.max(0,O-I);if(_<=1e-4)return;const w=_/v,m={};C.forEach(A=>{m[A]=g[A]??0});const k=Iu(C,f,m);C.forEach(A=>{const R=k[A]??0;if(R<=0)return;const L=b.get(A);L&&(l.forEach(J=>{L[J]=Kn(w*R)}),p.add(A))})}),o.forEach(C=>{if(p.has(C.id))return;const P=g[C.id]??0;if(P<=0)return;const O=Math.max(0,f.get(C.id)??0),I=Math.max(0,P-O);if(I<=1e-4)return;const _=I/v,w=b.get(C.id);w&&l.forEach(m=>{w[m]=Kn(_)})})}return o.forEach(p=>{const $=b.get(p.id);$&&$.some(S=>S>1e-4)&&(p.forecast=$)}),{labels:a,series:o}}function u_(e){return e==="off"||e==="calendar"||e==="category"?e:"total"}function g_(e){return Array.from({length:e},()=>0)}function Kn(e){const t=Math.round(e*100)/100;return Number.isFinite(t)?t:0}function p_(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 Iu(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 ao="__uncategorized__",Ou="Unassigned";function f_(e){const t=x(()=>{var u;const g=(u=e.targetsConfig.value)==null?void 0:u.categories;return Array.isArray(g)?g:[]}),a=x(()=>{const g={};return t.value.forEach(u=>{g[String(u.id)]=u.label||String(u.id)}),g}),o=x(()=>{var v;const g=new Map;return(((v=e.targetsSummary.value)==null?void 0:v.categories)||[]).forEach(f=>g.set(String(f.id),f)),g}),r=x(()=>{const g=new Map;return t.value.forEach(u=>{(Array.isArray(u.groupIds)?u.groupIds:[]).forEach(f=>{const c=Math.max(0,Math.min(9,Math.trunc(Number(f)||0)));g.set(c,String(u.id))})}),g}),n=x(()=>{var v;const g=e.calendars.value;if(!Array.isArray(g))return(v=e.isDebug)!=null&&v.call(e)&&console.warn("[opsdash] calendars not array",g),{};const u={};return g.forEach(f=>{var p;const c=String((f==null?void 0:f.id)??"");if(!c)return;const b=((p=e.colorsById.value)==null?void 0:p[c])||String((f==null?void 0:f.color)||"");u[c]={name:String((f==null?void 0:f.displayname)||(f==null?void 0:f.name)||(f==null?void 0:f.calendar)||c),color:b||void 0}}),u}),s=x(()=>{var b;const g={},u=r.value,v=e.groupsById.value||{},f=p=>{const $=v==null?void 0:v[p],S=Math.max(0,Math.min(9,Math.trunc(Number($)||0))),T=u.get(S);g[p]=T||ao},c=e.calendars.value;return Array.isArray(c)?(c.forEach(p=>{const $=String((p==null?void 0:p.id)??"");$&&f($)}),(e.selected.value||[]).forEach(p=>{const $=String(p??"");$&&(g[$]||f($))}),g):((b=e.isDebug)!=null&&b.call(e)&&console.warn("[opsdash] calendarCategoryMap: calendars not array",c),g)}),l=x(()=>{const g=["#60a5fa","#f59e0b","#ef4444","#10b981","#a78bfa","#fb7185","#22d3ee","#f97316"],u={};let v=0;const f=c=>{const b=String((c==null?void 0:c.id)??"");if(!b)return;if(u[b])return u[b];const p=typeof(c==null?void 0:c.color)=="string"&&c.color?c.color:void 0;if(p)return u[b]=p,p;const $=Object.entries(s.value).filter(([,T])=>T===b).map(([T])=>T);for(const T of $){const C=n.value[T];if(C!=null&&C.color)return u[b]=C.color,C.color}const S=g[v%g.length];return v+=1,u[b]=S,S};return t.value.forEach(c=>f(c)),Object.values(s.value||{}).some(c=>c===ao)&&f({id:ao}),u}),d=x(()=>{var O,I,_,w,m,k,A,R,L,J;const g=[],u=s.value,v=o.value,f=e.byCal.value;if(!Array.isArray(f))return(O=e.isDebug)!=null&&O.call(e)&&console.warn("[opsdash] aggregateCategoryRows: byCal not array",f),g;const c=new Map;f.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]||ao;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(f),rowsSourceLength:f.length,byCat:c,assignments:u});const b=((w=(_=e.targetsSummary.value)==null?void 0:_.total)==null?void 0:w.daysLeft)??0,p=((k=(m=e.targetsSummary.value)==null?void 0:m.total)==null?void 0:k.calendarPercent)??0,$=((R=(A=e.targetsSummary.value)==null?void 0:A.total)==null?void 0:R.paceMode)??((J=(L=e.targetsConfig.value)==null?void 0:L.pace)==null?void 0:J.mode)??"days_only",S=K=>Math.round(K*100)/100,T=e.currentTargets.value||{},C=(K,Y,le)=>{const Z=le.reduce((ae,U)=>{const H=Number(T[U.calendarId]??0);return Number.isFinite(H)?ae+Math.max(0,H):ae},0),de=le.reduce((ae,U)=>{const H=Number((U==null?void 0:U.total_hours)??(U==null?void 0:U.hours)??0);return Number.isFinite(H)?ae+Math.max(0,H):ae},0),B=Z>0?Math.max(0,Math.min(100,de/Z*100)):0,G=de-Z,D=Math.max(0,Z-de),V=Z<=0?"none":B>=100?"done":G>=0?"on_track":"behind",he=V==="done"?"Done":V==="on_track"?"On Track":V==="behind"?"Behind":"—",Me=b>0?D/b:0;return{id:K,label:Y,actualHours:S(de),targetHours:S(Z),percent:B,deltaHours:S(G),remainingHours:S(D),needPerDay:S(Me),daysLeft:b,calendarPercent:Math.max(0,Math.min(100,p)),gap:S(B-p),status:V,statusLabel:he,includeWeekend:!0,paceMode:$}};if(t.value.map(K=>String(K.id)).forEach(K=>{const Y=a.value[K]||K,le=c.get(K)||[],Z=v.get(K)||C(K,Y,le);g.push({id:K,label:Y,rows:le,summary:Z,color:l.value[K]})}),c.has(ao)){const K=c.get(ao)||[];g.push({id:ao,label:Ou,rows:K,summary:C(ao,Ou,K),color:l.value[ao]})}return g});return{categoryConfigList:t,categoryLabelById:a,categoryColorMap:l,calendarCategoryMap:s,calendarGroups:d}}function Ci(e){const t=Number(e);return Number.isFinite(t)?Math.round(t):0}function Mt(e){const t=Number(e);return Number.isFinite(t)?t:null}function Zo(e){if(e==null)return null;const t=String(e).trim();return t===""?null:t}function b_(e){const t=x(()=>{var P;const p=(P=e.charts.value)==null?void 0:P.pie;if(!p||!Array.isArray(p.data)||!Array.isArray(p.labels))return[];const $=p.data.map(O=>Number(O)||0),S=p.labels.map(O=>String(O||"")),T=$.reduce((O,I)=>O+Math.max(0,I),0);if(T<=0)return[];const C=$.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/T*100}))}),a=x(()=>{var $;if(t.value.length)return t.value.map(S=>`${S.name} ${Hu(S.share)}`).join(", ");const p=($=e.stats)==null?void 0:$.top_calendar;if(p&&p.calendar){const S=Number(p.share??0);return`${p.calendar} ${Hu(S)}`}return""}),o=x(()=>{var p;return e.selected.value.length||(((p=e.calendars.value)==null?void 0:p.length)??0)}),r=x(()=>{var C,P;const p=Array.isArray(e.byDay.value)?e.byDay.value:[],$=!!((C=e.stats)!=null&&C.current_period_clipped),S=String(((P=e.stats)==null?void 0:P.current_cutoff)??"").trim(),T=S?S.slice(0,10):"";return!$||!T?p:p.filter(O=>String((O==null?void 0:O.date)??"")<=T)}),n=x(()=>r.value.map(p=>Number((p==null?void 0:p.total_hours)??(p==null?void 0:p.hours)??0))),s=x(()=>{const p=n.value.map($=>Number($)||0);return e.activeDayMode.value==="active"?p.filter($=>$>0):p}),l=x(()=>r.value.filter(p=>{const $=Bu(String(p==null?void 0:p.date));return $>=1&&$<=5}).map(p=>Number((p==null?void 0:p.total_hours)??(p==null?void 0:p.hours)??0))),d=x(()=>r.value.filter(p=>{const $=Bu(String(p==null?void 0:p.date));return $===0||$===6}).map(p=>Number((p==null?void 0:p.total_hours)??(p==null?void 0:p.hours)??0))),g=x(()=>e.activeDayMode.value==="active"?l.value.filter(p=>p>0):l.value),u=x(()=>e.activeDayMode.value==="active"?d.value.filter(p=>p>0):d.value),v=x(()=>{var S,T,C,P;const p=((S=e.stats)==null?void 0:S.balance_index)??((T=e.stats)==null?void 0:T.balanceIndex)??((P=(C=e.stats)==null?void 0:C.balance_overview)==null?void 0:P.index),$=Number(p);return Number.isFinite($)?$:null}),f=x(()=>{var p,$,S,T,C,P,O;return{rangeLabel:e.rangeLabel.value,rangeStart:e.rangeStart.value,rangeEnd:e.rangeEnd.value,offset:e.offset.value,totalHours:Number(((p=e.stats)==null?void 0:p.total_hours)??0),futureHours:Number((($=e.stats)==null?void 0:$.future_hours)??0),avgDay:Si(s.value),avgEvent:Number(((S=e.stats)==null?void 0:S.avg_per_event)??0),medianDay:$i(s.value),todayActualHours:Number(((T=e.stats)==null?void 0:T.today_actual_hours)??0),todayPlannedHours:Number(((C=e.stats)==null?void 0:C.today_future_hours)??0),busiest:((P=e.stats)==null?void 0:P.busiest_day)??null,workdayAvg:Si(g.value),workdayMedian:$i(g.value),weekendAvg:Si(u.value),weekendMedian:$i(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:Mt(I.total_hours)??0,avgPerDay:Mt(I.avg_per_day)??0,avgPerEvent:Mt(I.avg_per_event)??0,events:Ci(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 p=e.stats,$=p==null?void 0:p.delta,S=Mt(($==null?void 0:$.weekend_share)??($==null?void 0:$.weekendShare)),T=Mt(($==null?void 0:$.evening_share)??($==null?void 0:$.eveningShare)),C=S!=null||T!=null?{weekendShare:S,eveningShare:T}:null;return{rangeLabel:e.rangeLabel.value,events:Ci(p.events),activeDays:Mt(p.active_days),typicalStart:Zo(p.typical_start),typicalEnd:Zo(p.typical_end),weekendShare:Mt(p.weekend_share),eveningShare:Mt(p.evening_share),delta:C,earliestStart:Zo(p.earliest_start),latestEnd:Zo(p.latest_end),overlapEvents:Mt(p.overlap_events),longestSession:Mt(p.longest_session),lastDayOff:Zo(p.last_day_off),lastHalfDayOff:Zo(p.last_half_day_off)}}),b=x(()=>{var $;const p=($=e.stats)==null?void 0:$.day_off_trend;return Array.isArray(p)?p.map(S=>{const T=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),P=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(T)?Math.max(0,T):0,daysOff:Number.isFinite(C)?Math.max(0,C):0,daysWorked:Number.isFinite(P)?Math.max(0,P):0}}).filter(S=>S.totalDays>0):[]});return{topThree:t,topCalendarsSummary:a,timeSummary:f,activitySummary:c,activityDayOffTrend:b}}function Si(e){return e.length?e.reduce((a,o)=>a+o,0)/e.length:0}function $i(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 Bu(e){return new Date(`${e}T00:00:00Z`).getUTCDay()}function Hu(e){return`${Number(e||0).toFixed(1)}%`}function v_(e){return{balanceOverview:x(()=>{var u,v,f,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(b=>({id:String((b==null?void 0:b.id)??""),label:String((b==null?void 0:b.label)??""),hours:Mt(b==null?void 0:b.hours)??0,share:Mt(b==null?void 0:b.share)??0,prevShare:Mt(b==null?void 0:b.prev_share)??0,delta:Mt(b==null?void 0:b.delta)??0,color:e.categoryColorMap.value[String((b==null?void 0:b.id)??"")]})):[],r=Array.isArray(a.relations)?a.relations.map(b=>({label:String((b==null?void 0:b.label)??""),value:String((b==null?void 0:b.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((f=a.trend)==null?void 0:f.delta)?a.trend.delta.map(b=>({id:String((b==null?void 0:b.id)??""),label:String((b==null?void 0:b.label)??""),delta:Mt(b==null?void 0:b.delta)??0})):[],badge:String(((c=a.trend)==null?void 0:c.badge)??""),history:n.map(b=>({offset:Ci(b==null?void 0:b.offset)??0,label:String((b==null?void 0:b.label)??""),categories:Array.isArray(b==null?void 0:b.categories)?b.categories.map(p=>({id:String((p==null?void 0:p.id)??""),label:String((p==null?void 0:p.label)??""),share:Mt(p==null?void 0:p.share)??0})):[]}))},l=Array.isArray(a.daily)?a.daily.map(b=>({date:String((b==null?void 0:b.date)??""),weekday:String((b==null?void 0:b.weekday)??""),total_hours:Mt(b==null?void 0:b.total_hours)??0,categories:Array.isArray(b==null?void 0:b.categories)?b.categories.map(p=>({id:String((p==null?void 0:p.id)??""),label:String((p==null?void 0:p.label)??""),hours:Mt(p==null?void 0:p.hours)??0,share:Mt(p==null?void 0:p.share)??0})):[]})):[],d=Array.isArray(a.warnings)?a.warnings.map(b=>String(b)):[];return{index:Mt(a.index)??0,categories:o,relations:r,trend:s,daily:l,warnings:d}})}}const Wr=oe("auto"),qn=oe("light"),Fu=oe(!1),zr=x(()=>Wr.value==="auto"?qn.value:Wr.value);function h_(){return Du()??"auto"}function Jn(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 Ti(){qn.value=xi()}let $a=null,Eo=null;function m_(){typeof window>"u"||$a||($a=window.matchMedia("(prefers-color-scheme: dark)"),Eo=()=>Ti(),typeof $a.addEventListener=="function"?$a.addEventListener("change",Eo):typeof $a.addListener=="function"&&$a.addListener(Eo))}function y_(){$a&&(Eo&&(typeof $a.removeEventListener=="function"?$a.removeEventListener("change",Eo):typeof $a.removeListener=="function"&&$a.removeListener(Eo)),$a=null,Eo=null)}function w_(){Fu.value||(Wr.value=h_(),qn.value=xi(),Jn(zr.value),Fu.value=!0),Nt(()=>{typeof window<"u"&&window.addEventListener("oc:theme:changed",Ti),m_(),Jn(zr.value)}),Tt(()=>{typeof window<"u"&&window.removeEventListener("oc:theme:changed",Ti),y_()}),Oe(zr,t=>{Jn(t)});function e(t){Wr.value=t,Jn(zr.value)}return{preference:Wr,effectiveTheme:zr,systemTheme:qn,setThemePreference:e}}const Mi=e=>e==="light"||e==="dark"?e:"auto";function k_(e){const t=oe(!1),a=oe(Mi(e.serverPreference.value));let o=null;const r=typeof e.debounceMs=="number"?e.debounceMs:250,n=()=>{o&&(clearTimeout(o),o=null)};wn()&&Tt(()=>{n()}),Oe(e.serverPreference,d=>{const g=Mi(d);a.value=g,e.localPreference.value!==g&&(t.value=!0,e.applyLocalPreference(g),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(g){console.error(g),e.notifyError("Failed to save theme preference")}},r))}function l(d,g){const u=Mi(d);e.applyLocalPreference(u),(g==null?void 0:g.persist)!==!1&&s(u)}return{setThemePreference:l}}function x_(e){const{preference:t,effectiveTheme:a,systemTheme:o,setThemePreference:r}=w_(),{setThemePreference:n}=k_({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 __=aa(Sa()),C_=Wu(__.categories);function Pu(e){return e==="total_only"||e==="total_plus_categories"||e==="full_granular"}function Wu(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 S_(e){const{autoWizardNeeded:t,manualWizardOpen:a,onboardingRunId:o,onboardingWizardVisible:r,openWizardFromSidebar:n,wizardStartStep:s}=Zy(),l=x(()=>Object.values(e.targetsWeek.value||{}).some(Z=>Number(Z)>0)),d=x(()=>{const Z=(e.calendars.value||[]).length,de=new Set((e.selected.value||[]).filter(Boolean)).size;return Z>0&&de>0&&de<Z}),g=x(()=>{const Z=new Set(e.selected.value||[]);return Object.entries(e.groupsById.value||{}).some(([de,B])=>Z.has(de)&&Number(B)>0)}),u=x(()=>{var de;const Z=(de=e.targetsConfig.value)==null?void 0:de.categories;return Array.isArray(Z)&&Z.length>0&&Wu(Z)!==C_}),v=x(()=>{var Z,de;return!!((Z=e.onboardingState.value)!=null&&Z.completed)||Pu((de=e.onboardingState.value)==null?void 0:de.strategy)||l.value||g.value||d.value||u.value}),f=e.actions.isOnboardingSaving,c=e.actions.isSnapshotSaving,b=e.actions.snapshotNotice,p=x(()=>(e.calendars.value||[]).map(Z=>({id:String((Z==null?void 0:Z.id)??""),displayname:String((Z==null?void 0:Z.displayname)??(Z==null?void 0:Z.name)??(Z==null?void 0:Z.id)??""),color:typeof(Z==null?void 0:Z.color)=="string"?Z.color:""})).filter(Z=>Z.id)),$=x(()=>[...e.selected.value]),S=x(()=>{var de;const Z=(de=e.onboardingState.value)==null?void 0:de.strategy;return Pu(Z)?Z:u.value||g.value?"full_granular":l.value?"total_plus_categories":"total_only"}),T=x(()=>{var Z;return((Z=e.targetsConfig.value)==null?void 0:Z.allDayHours)??8}),C=x(()=>{var Z;return((Z=e.targetsConfig.value)==null?void 0:Z.totalHours)??40}),P=x(()=>{var Z,de,B;return{balanceTrendLookback:((B=(de=(Z=e.targetsConfig.value)==null?void 0:Z.balance)==null?void 0:de.trend)==null?void 0:B.lookbackWeeks)??3}}),O=Z=>{if(typeof Z!="string")return null;const de=Z.trim();if(!/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(de))return null;if(de.length===4){const[,B,G,D]=de;return`#${B}${B}${G}${G}${D}${D}`.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 D;const Z={},de=new Map;(Array.isArray((D=e.targetsConfig.value)==null?void 0:D.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&&(Z[V]=Me)}),Z}),w=x(()=>({...e.deckSettings.value||{}})),m=x(()=>({...e.reportingConfig.value||{}})),k=x(()=>{var Z;return((Z=e.onboardingState.value)==null?void 0:Z.dashboardMode)||"standard"});function A(Z){if(!Z)return!0;const de=Z.version_required??vo;return!Z.completed||(Z.version??0)<de}function R(Z){return Z!=null&&Z.resetRequested?!0:v.value?!1:A(Z)}function L(Z){const de=Z??e.onboardingState.value;if(!e.hasInitialLoad.value&&!de)return;const B=A(de);t.value=R(de),(B||de!=null&&de.resetRequested)&&(s.value=null),de!=null&&de.resetRequested&&(a.value=!0)}Oe(()=>e.onboardingState.value,Z=>{e.hasInitialLoad.value&&L(Z)});async function J(Z){try{await e.actions.complete(Z),a.value=!1,t.value=!1}catch(de){console.error("[opsdash] onboarding complete failed",de)}}async function K(){const Z=t.value,de=a.value;try{a.value=!1,t.value=!1,await e.actions.skip()}catch(B){a.value=de,t.value=Z,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(Z){console.error("[opsdash] onboarding snapshot failed",Z)}}return{autoWizardNeeded:t,manualWizardOpen:a,onboardingRunId:o,onboardingWizardVisible:r,openWizardFromSidebar:n,wizardStartStep:s,hasExistingConfig:v,wizardCalendars:p,wizardInitialSelection:$,wizardInitialStrategy:S,wizardInitialCategories:I,wizardInitialAssignments:_,wizardInitialAllDayHours:T,wizardInitialTotalHours:C,wizardInitialTargetsConfig:P,wizardInitialDeckSettings:w,wizardInitialReportingConfig:m,wizardInitialDashboardMode:k,isOnboardingSaving:f,isSnapshotSaving:c,snapshotNotice:b,evaluateOnboarding:L,handleWizardComplete:J,handleWizardSkip:K,handleWizardClose:Y,handleWizardSaveSnapshot:le}}function $_(e){const t=oe(!1),a=oe(!1),o=oe(""),r=x(()=>Nu().filter(p=>p.showInHistory!==!1)),n=x(()=>Lo(e.appVersion.value)),s=x(()=>_i(n.value)),l=x(()=>{const p=Lo(o.value);return _i(p)}),d=x(()=>l.value??s.value),g=x(()=>{var p;return Lo(((p=e.onboardingState.value)==null?void 0:p.releaseNotesSeenVersion)??"")}),u=x(()=>{var p;return e.hasInitialLoad.value&&!e.isBlocked.value&&!!((p=s.value)!=null&&p.autoShow)&&n.value!==""&&n.value!==g.value});function v(){s.value&&(o.value=s.value.version,t.value=!0)}function f(p){const $=_i(p);$&&(o.value=$.version,t.value=!0)}Oe(u,p=>{p&&!t.value&&v()},{immediate:!0}),Oe(()=>e.isBlocked.value,p=>{var $;p&&u.value&&(($=d.value)==null?void 0:$.version)===n.value?t.value=!1:!p&&u.value&&!t.value&&v()});async function c(){if(!s.value||g.value===s.value.version)return;const p={...e.onboardingState.value||{completed:!1,version:0,strategy:"",completed_at:"",dashboardMode:"standard"},releaseNotesSeenVersion:s.value.version};await e.postJson(e.route("persist"),{onboarding:p}),e.onboardingState.value=p}async function b(){var $;const p=(($=d.value)==null?void 0:$.version)===n.value&&!!s.value;try{p&&(a.value=!0,await c()),t.value=!1}catch(S){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:f,closeOverlay:b}}function T_(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?"":Ar(e.from.value,e.to.value,{year:"numeric",month:"2-digit",day:"2-digit"}));function r(){try{const g=e.performLoad();if(g&&typeof g.then=="function")return g.catch(u=>{console.error("[opsdash] range load failed",u)})}catch(g){console.error("[opsdash] range load failed",g)}}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 zu=["cals","groups","targets_week","targets_month","targets_config","theme_preference","onboarding","widgets"],M_=new Set(["auto","light","dark"]);function A_(e){if(!e||typeof e!="object")return{cleaned:{},ignored:["<invalid-payload>"]};const t=e,a={},o=[];if(zu.forEach(r=>{t[r]!==void 0&&(a[r]=t[r])}),Object.keys(t).forEach(r=>{zu.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&&!M_.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 D_(e,t="0.6.0"){return{version:t,generated:new Date().toISOString(),payload:e}}function L_(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:za(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"}),g=URL.createObjectURL(d),u=document.createElement("a");u.href=g,u.download=s,document.body.appendChild(u),u.click(),document.body.removeChild(u),URL.revokeObjectURL(g)}function o(){try{const s=t(),l=D_(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}=A_(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(g=>String(g))),l.groups){const g={};Object.entries(l.groups).forEach(([u,v])=>{const f=Number(v);g[String(u)]=Number.isFinite(f)?f:0}),e.groupsById.value=g}if(l.targets_week){const g={};Object.entries(l.targets_week).forEach(([u,v])=>{const f=Number(v);Number.isFinite(f)&&(g[String(u)]=f)}),e.targetsWeek.value=g}if(l.targets_month){const g={};Object.entries(l.targets_month).forEach(([u,v])=>{const f=Number(v);Number.isFinite(f)&&(g[String(u)]=f)}),e.targetsMonth.value=g}if(l.targets_config&&(e.targetsConfig.value=aa(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 g=e.widgetTabs.value||Jo("standard");e.widgetTabs.value=Hr(l.widgets,g)}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),g=d!=null&&d.payload&&typeof d.payload=="object"?d.payload:d;await r(g)}catch(l){console.error(l),e.notifyError("Failed to import configuration")}}return{collectSidebarPayload:t,exportSidebarConfig:o,importSidebarConfig:n,applyConfigSource:r}}function E_(e=null){const t=oe(e);function a(o){t.value=t.value===o?null:o}return{detailsIndex:t,toggle:a}}const Ru="opsdash.sidebarOpen";function N_(){var e;if(typeof window>"u")return!0;try{const t=(e=window.localStorage)==null?void 0:e.getItem(Ru);if(t==="true")return!0;if(t==="false")return!1}catch{return!0}return!0}function I_(){const e=oe(N_());Oe(e,r=>{var n;if(typeof window<"u"){try{(n=window.localStorage)==null||n.setItem(Ru,r?"true":"false")}catch{}Zt(()=>{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 O_=[{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 B_(e){const t=oe(!1),a=oe(null);let o=!1;const r=!!wn();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,b){b.preventDefault(),l(),c()}function g(c){var S;const b=c;if(!b)return!1;if(b.isContentEditable)return!0;const p=b.tagName;if(!p)return!1;if(["INPUT","TEXTAREA","SELECT"].includes(p))return!0;const $=(S=b.getAttribute)==null?void 0:S.call(b,"role");return!!($&&["textbox","combobox"].includes($))}function u(c){if(c.defaultPrevented)return;const b=g(c.target);if((c.key==="Escape"||c.key==="Esc")&&t.value){c.preventDefault(),s();return}if(!c.altKey&&!c.ctrlKey&&!c.metaKey&&!b&&(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 p=c.key;if(p==="ArrowLeft"){d(e.goPrevious,c);return}if(p==="ArrowRight"){d(e.goNext,c);return}if(c.shiftKey&&(p==="R"||p==="r")){d(e.toggleRange,c);return}if(p==="T"||p==="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&&!b){c.preventDefault(),e.toggleEditLayout();return}if((c.key==="c"||c.key==="C")&&e.openWidgetOptions&&!b){c.preventDefault(),e.openWidgetOptions();return}}}function v(){o||typeof document>"u"||(document.addEventListener("keydown",u),o=!0)}function f(){!o||typeof document>"u"||(document.removeEventListener("keydown",u),o=!1)}return v(),r&&(Nt(()=>{v()}),Tt(()=>{f()})),{shortcutsOpen:t,openShortcuts:n,closeShortcuts:s,shortcutGroups:O_,unbindShortcuts:f}}function H_(e){const t=oe(!1),a=oe(!1),o=oe(null);async function r(d){var g,u,v,f,c,b;try{t.value=!0,o.value=null,e.setThemePreference(d.themePreference,{persist:!1});const p={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:vo,strategy:d.strategy,dashboardMode:d.dashboardMode,completed_at:new Date().toISOString(),releaseNotesSeenVersion:((g=e.onboardingState.value)==null?void 0:g.releaseNotesSeenVersion)??""}};d.widgets&&(p.widgets=d.widgets),await e.postJson(e.route("persist"),p),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:vo,strategy:d.strategy,dashboardMode:d.dashboardMode,version_required:vo,resetRequested:!1,releaseNotesSeenVersion:((f=e.onboardingState.value)==null?void 0:f.releaseNotesSeenVersion)??""});const $=(b=d.profileName)==null?void 0:b.trim();d.saveProfile&&$&&await e.savePreset($),await e.reloadAfterPersist(),e.notifySuccess("Onboarding saved")}catch(p){throw console.error(p),e.notifyError("Failed to save onboarding"),p}finally{t.value=!1}}async function n(d){var g,u,v,f,c,b,p,$;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&&((g=e.setDeckSettings)==null||g.call(e,d.deck_settings)),d.reporting_config&&((u=e.setReportingConfig)==null||u.call(e,d.reporting_config)),d.onboarding&&((b=e.setOnboardingState)==null||b.call(e,{completed:d.onboarding.completed??!1,version:d.onboarding.version??vo,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??((f=e.onboardingState.value)==null?void 0:f.dashboardMode),version_required:vo,resetRequested:!1,releaseNotesSeenVersion:d.onboarding.releaseNotesSeenVersion??((c=e.onboardingState.value)==null?void 0:c.releaseNotesSeenVersion)??""})),d.dashboardMode&&((p=e.setDashboardMode)==null||p.call(e,d.dashboardMode)),d.widgets&&(($=e.setWidgetTabs)==null||$.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,g;try{t.value=!0,o.value=null,await e.postJson(e.route("persist"),{onboarding:{completed:!0,version:vo,strategy:((d=e.onboardingState.value)==null?void 0:d.strategy)??"total_only",completed_at:new Date().toISOString(),releaseNotesSeenVersion:((g=e.onboardingState.value)==null?void 0:g.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 g=`Before onboarding ${new Date().toISOString().slice(0,16).replace("T"," ")}`;await e.savePreset(g,{notifySuccess:!1}),o.value={type:"success",message:`Profile "${g}" 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 F_(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 g(u=!1){const v=(e.from.value||"").trim(),f=(e.to.value||"").trim();if(!v||!f){t.value=[],o.value="",a.value=!1,r.value=null,l="";return}const c=d(v,f);if(!u&&s.has(c)){const p=s.get(c);t.value=p.cards,r.value=p.fetchedAt,o.value="",a.value=!1,l=c;return}const b=++n;a.value=!0,o.value="";try{const p=await hw({from:v,to:f});if(b===n){const $=new Date().toISOString();t.value=p,r.value=$,s.set(c,{cards:p,fetchedAt:$}),l=c}}catch(p){b===n&&(t.value=[],o.value=p instanceof Error?p.message:"deck_fetch_failed",e.notifyError&&e.notifyError("Unable to fetch Deck cards. Check the Deck app or try again."))}finally{b===n&&(a.value=!1)}}return Oe(()=>[e.from.value,e.to.value],([u,v],[f,c])=>{if(!u||!v){t.value=[];return}u===f&&v===c||g()}),{deckCards:t,deckLoading:a,deckError:o,deckLastFetchedAt:r,refreshDeck:g}}function Ai(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 mo(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 Di(e){return e.dueTs!=null||e.match==="due"}function Li(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 P_(e){const{deckSettings:t,deckCards:a,uid:o,root:r}=e,n=oe(Ai(t.value.defaultFilter));Oe(()=>t.value.defaultFilter,b=>{const p=Ai(b);p!==n.value&&(n.value=p)});const s=x(()=>{const b=new Set((t.value.hiddenBoards||[]).map(p=>Number(p)).filter(p=>Number.isFinite(p)));return(a.value||[]).filter(p=>!b.has(Number(p.boardId)))}),l=x(()=>{const b=t.value.mineMode??"assignee",p=(o.value||"").trim().toLowerCase();return $=>{if(!p)return!1;const S=($.assignees||[]).some(I=>typeof I.uid=="string"&&I.uid.toLowerCase()===p),T=typeof $.createdBy=="string"?$.createdBy.trim().toLowerCase():"",C=T&&T===p,P=typeof $.doneBy=="string"?$.doneBy.trim().toLowerCase():"",O=P&&P===p;return b==="creator"?C||O:b==="assignee"?S||O:S||C||O}}),d=x(()=>{const b=l.value,p=t.value.solvedIncludesArchived!==!1,$=n.value,S=s.value;if($==="all")return S;if($==="mine")return S.filter(P=>b(P));if($.startsWith("due_today")){const P=$.endsWith("_mine");return S.filter(O=>{const I=Li(O),_=P?b(O):!0;return I&&_})}if($.startsWith("due_")){const P=$.endsWith("_mine");return S.filter(O=>{const I=Di(O),_=P?b(O):!0;return I&&_})}const[T,C]=$.split("_");return S.filter(P=>{const O=mo(P,T,p),I=C==="all"?!0:b(P);return O&&I})}),g=x(()=>{const b=l.value,p=t.value.solvedIncludesArchived!==!1,$=s.value;return[{value:"all",label:"All cards",mine:!1,matches:()=>!0},{value:"open_all",label:"Open · All",mine:!1,matches:T=>mo(T,"open",p)},{value:"open_mine",label:"Open · Mine",mine:!0,matches:T=>mo(T,"open",p)&&b(T)},{value:"done_all",label:"Done · All",mine:!1,matches:T=>mo(T,"done",p)},{value:"done_mine",label:"Done · Mine",mine:!0,matches:T=>mo(T,"done",p)&&b(T)},{value:"archived_all",label:"Archived · All",mine:!1,matches:T=>mo(T,"archived",p)},{value:"archived_mine",label:"Archived · Mine",mine:!0,matches:T=>mo(T,"archived",p)&&b(T)},{value:"due_all",label:"Due · All",mine:!1,matches:T=>Di(T)},{value:"due_mine",label:"Due · Mine",mine:!0,matches:T=>Di(T)&&b(T)},{value:"due_today_all",label:"Due today · All",mine:!1,matches:T=>Li(T)},{value:"due_today_mine",label:"Due today · Mine",mine:!0,matches:T=>Li(T)&&b(T)}].map(T=>({value:T.value,label:T.label,mine:T.mine,count:$.filter(T.matches).length}))}),u=x(()=>{const b=l.value,p=t.value.solvedIncludesArchived!==!1,$=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 P=$.filter(_=>{const w=mo(_,C.status,p),m=C.mine?b(_):!0;return w&&m}),O=new Map;P.forEach(_=>{if(_.boardId==null)return;const w=Number(_.boardId),m=O.get(w)||{count:0,title:_.boardTitle||"",color:_.boardColor};m.count+=1,m.title=_.boardTitle||m.title,m.color=_.boardColor??m.color,O.set(w,m)});let I;if(O.size){const _=Array.from(O.entries()).sort((w,m)=>m[1].count-w[1].count);I={title:_[0][1].title,color:_[0][1].color}}S.push({key:C.key,label:C.label,titles:P.map(_=>_.title||`Card ${_.id}`),count:P.length,board:I})}),S}),v=x(()=>{const b=t.value.ticker||{autoScroll:!0,intervalSeconds:5},p=Math.min(10,Math.max(3,Number(b.intervalSeconds??5)||5));return{autoScroll:b.autoScroll!==!1,intervalSeconds:p}}),f=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:f,deckUrl:c,deckFilterOptions:g}}const W_=new Set(["deck_cards","deck_stats"]);function z_(e){const{widgetsRegistry:t,createDefaultTabs:a,normalizeWidgetTabs:o,dashboardMode:r,deckEnabled:n,hasInitialLoad:s,queueSaveRef:l}=e;function d(){return a()}const g=oe(d().tabs),u=oe(d().defaultTabId),v=oe(u.value),f=oe(!1),c=oe(!1),b=oe("");function p(){var ae;s.value&&f.value&&((ae=l.value)==null||ae.call(l,!1),f.value=!1)}Oe(()=>s.value,ae=>{ae&&f.value&&p()});const $=x(()=>g.value.find(ae=>ae.id===v.value)||g.value[0]);function S(ae){g.value.some(U=>U.id===ae)&&(v.value=ae)}function T(ae){g.value.some(U=>U.id===ae)&&(u.value=ae,v.value=ae,f.value=!0,p())}const C=x(()=>{var U;const ae=((U=$.value)==null?void 0:U.widgets)||[];return n.value?ae:ae.filter(H=>!W_.has(H.type))}),P=x(()=>Object.keys(t).filter(ae=>ae!=="time_summary_lookback").map(ae=>{var U,H;return{type:ae,label:((U=t[ae])==null?void 0:U.label)||ae,category:(H=t[ae])==null?void 0:H.category}}));function O(ae){r.value=ae;const U=a();g.value=G(U.tabs,ae),u.value=U.defaultTabId,v.value=U.defaultTabId,f.value=!0,p()}function I(ae,U){g.value=g.value.map(H=>H.id===ae?{...H,widgets:U([...H.widgets])}:H)}function _(ae,U){var j;const H=(j=$.value)==null?void 0:j.id;H&&(I(H,ce=>ce.map(fe=>fe.id===ae?U({...fe,layout:{...fe.layout}}):fe)),f.value=!0,p())}function w(ae){const U=["quarter","half","full"];_(ae,H=>{const j=U.indexOf(H.layout.width),ce=U[(j+1)%U.length];return{...H,layout:{...H.layout,width:ce}}})}function m(ae){const U=["s","m","l","xl"];_(ae,H=>{const j=U.indexOf(H.layout.height),ce=U[(j+1)%U.length];return{...H,layout:{...H.layout,height:ce}}})}function k(ae,U){var W;const H=[...C.value].sort((re,ue)=>(re.layout.order||0)-(ue.layout.order||0)),j=H.findIndex(re=>re.id===ae);if(j<0)return;const ce=U==="up"?j-1:j+1;if(ce<0||ce>=H.length)return;const fe=H[j].layout.order;H[j].layout.order=H[ce].layout.order,H[ce].layout.order=fe;const E=(W=$.value)==null?void 0:W.id;E&&(I(E,()=>H),f.value=!0,p())}function A(ae){var H;const U=(H=$.value)==null?void 0:H.id;U&&(I(U,j=>j.filter(ce=>ce.id!==ae)),f.value=!0,p())}function R(ae){const U=g.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 J(ae,U){var E;const H=(E=$.value)==null?void 0:E.id;if(!H||H===U)return!1;const j=g.value.find(W=>W.id===H),ce=j==null?void 0:j.widgets.find(W=>W.id===ae);if(!ce||!g.value.some(W=>W.id===U))return!1;const fe=L(ce,{layout:{...ce.layout,order:R(U)}});return g.value=g.value.map(W=>W.id===H?{...W,widgets:W.widgets.filter(re=>re.id!==ae)}:W.id===U?{...W,widgets:[...W.widgets,fe]}:W),v.value=U,f.value=!0,p(),!0}function K(ae,U){var E;const H=(E=$.value)==null?void 0:E.id;if(!H||H===U)return null;const j=g.value.find(W=>W.id===H),ce=j==null?void 0:j.widgets.find(W=>W.id===ae);if(!ce||!g.value.some(W=>W.id===U))return null;const fe=L(ce,{id:`widget-${ce.type}-${Date.now().toString(36)}`,layout:{...ce.layout,order:R(U)}});return g.value=g.value.map(W=>W.id===U?{...W,widgets:[...W.widgets,fe]}:W),f.value=!0,p(),fe.id}function Y(ae){var fe;const U=t[ae];if(!U)return;const H=C.value.reduce((E,W)=>Math.max(E,W.layout.order||0),0),j={id:`widget-${ae}-${Date.now()}`,type:ae,options:{},layout:{...U.defaultLayout,order:H+10},version:1},ce=(fe=$.value)==null?void 0:fe.id;ce&&(I(ce,E=>[...E,j]),b.value="",f.value=!0,p())}function le(ae,U){var W;const H=t[ae];if(!H)return;const j=C.value.reduce((re,ue)=>Math.max(re,ue.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:{...H.defaultLayout,order:ce},version:1},E=(W=$.value)==null?void 0:W.id;E&&(I(E,re=>[...re,fe]),f.value=!0,p())}function Z(ae,U){var fe;if(!Number.isFinite(U??NaN))return;const H=Number(U),j=C.value.map(E=>E.id===ae?{...E,layout:{...E.layout,order:H}}:{...E});j.sort((E,W)=>(E.layout.order||0)-(W.layout.order||0));const ce=(fe=$.value)==null?void 0:fe.id;ce&&(I(ce,()=>j.map((E,W)=>({...E,layout:{...E.layout,order:(W+1)*10}}))),f.value=!0,p())}function de(ae,U,H){var ce;const j=(ce=$.value)==null?void 0:ce.id;j&&(I(j,fe=>fe.map(E=>{if(E.id!==ae)return E;const W={...E.options||{}};if(U.includes(".")){const re=U.split("."),ue={...W};let ee=ue;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]]=H,{...E,options:ue}}return U==="scale"?(W.scale=H,"textSize"in W&&delete W.textSize,{...E,options:W}):(W[U]=H,{...E,options:W})})),f.value=!0,p())}function B(){const ae=a();g.value=G(ae.tabs,r.value),u.value=ae.defaultTabId,v.value=ae.defaultTabId,f.value=!0,p()}function G(ae,U){return U!=="pro"?ae:ae.map(H=>H.id==="tab-1"?{...H,widgets:H.widgets.filter(j=>j.type!=="deck_stats")}:H)}function D(ae){const U=`tab-${Date.now().toString(36)}`,H=String(ae??"").trim()||`Tab ${g.value.length+1}`,j={id:U,label:H.slice(0,48),widgets:[]};g.value=[...g.value,j],v.value=j.id,f.value=!0,p()}function V(ae,U){const H=String(U||"").trim().slice(0,48);H&&(g.value=g.value.map(j=>j.id===ae?{...j,label:H}:j),f.value=!0,p())}function he(ae){var U,H;g.value.length<=1||(g.value=g.value.filter(j=>j.id!==ae),u.value===ae&&(u.value=((U=g.value[0])==null?void 0:U.id)||""),v.value===ae&&(v.value=((H=g.value[0])==null?void 0:H.id)||""),f.value=!0,p())}function Me(ae){const U=a(),H=o(ae,U);g.value=H.tabs,u.value=H.defaultTabId;const j=v.value;j&&H.tabs.some(ce=>ce.id===j)?v.value=j:v.value=H.defaultTabId}return{layoutTabs:g,defaultTabId:u,activeTabId:v,widgetsDirty:f,isLayoutEditing:c,newWidgetType:b,widgets:C,availableWidgetTypes:P,persistWidgets:p,applyDashboardPreset:O,updateWidget:_,cycleWidth:w,cycleHeight:m,moveWidget:k,moveWidgetToTab:J,duplicateWidgetToTab:K,removeWidget:A,addWidget:Y,addWidgetAt:le,reorderWidget:Z,updateWidgetOptions:de,resetWidgets:B,activeTab:$,setActiveTab:S,setDefaultTab:T,addTab:D,renameTab:V,removeTab:he,setTabsFromPayload:Me}}function R_(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)}),Nt(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 j_(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 V_(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:j_(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 U_(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,T=>{T||n()});function s(T){if(!e.isLayoutEditing.value){e.setActiveTab(T),r.value=null;return}if(e.activeTabId.value!==T){e.setActiveTab(T),a.value=null,r.value=null;return}a.value=T;const C=e.layoutTabs.value.find(P=>P.id===T);t.value=(C==null?void 0:C.label)||""}function l(T,C,P){o.value={open:!0,x:T,y:C,tabId:P}}function d(T,C){e.isLayoutEditing.value&&l(T.clientX,T.clientY,C)}function g(T,C){if(!e.isLayoutEditing.value)return;const P=T.currentTarget;if(!P){l(T.clientX,T.clientY,C);return}const O=P.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 f(){o.value.tabId&&(e.removeTab(o.value.tabId),u())}function c(){if(!o.value.tabId)return;a.value=o.value.tabId;const T=e.layoutTabs.value.find(C=>C.id===o.value.tabId);t.value=(T==null?void 0:T.label)||"",u()}function b(){if(!a.value)return;const T=t.value.trim(),C=e.layoutTabs.value.find(P=>P.id===a.value);if(!C){a.value=null;return}if(!T){t.value=C.label,a.value=null;return}T!==C.label&&e.renameTab(C.id,T),a.value=null}function p(){if(!a.value)return;const T=e.layoutTabs.value.find(C=>C.id===a.value);t.value=(T==null?void 0:T.label)||"",a.value=null}function $(T){r.value=Number.isFinite(T??NaN)?Number(T):null}function S(T){if(!o.value.open)return;const C=T.target;C&&(C.closest(".tab-context-menu")||C.closest(".tab-btn")||C.closest(".tab-menu-btn")||u())}return Nt(()=>{typeof window<"u"&&window.addEventListener("click",S)}),Tt(()=>{typeof window<"u"&&window.removeEventListener("click",S)}),{tabLabelDraft:t,tabEditingId:a,tabContext:o,addOrderHint:r,handleTabClick:s,openTabContextMenu:d,openTabContextMenuFromButton:g,setDefaultTabFromMenu:v,removeTabFromMenu:f,renameTabFromMenu:c,commitTabLabel:b,cancelTabLabel:p,setAddHint:$,resetContext:n}}const G_={class:"onboarding-header version-notes-overlay__header"},K_={class:"onboarding-title version-notes-overlay__title"},q_={id:"version-notes-title"},J_={class:"version-notes-overlay__teaser"},Z_={class:"onboarding-actions version-notes-overlay__actions"},Y_={key:0,class:"version-notes-overlay__pill version-notes-overlay__pill--accent"},X_={class:"version-notes-overlay__pill"},Q_=["disabled"],e2={class:"onboarding-body version-notes-overlay__body"},t2={class:"version-notes-overlay__content"},a2={class:"version-notes-overlay__section version-notes-overlay__section--intro"},o2={class:"version-notes-overlay__intro-copy"},r2={key:0,class:"version-notes-overlay__apply-block"},n2={class:"version-notes-overlay__apply-row"},s2={class:"version-notes-overlay__apply-text"},i2={class:"version-notes-overlay__apply-actions"},l2=["onClick"],d2={class:"version-notes-overlay__section"},c2={class:"version-notes-overlay__highlights"},u2={key:0,class:"version-notes-overlay__section"},g2={class:"version-notes-overlay__images"},p2=["href"],f2=["src","alt"],b2={class:"version-notes-overlay__image-meta"},v2={key:0},h2={class:"version-notes-overlay__history"},m2={class:"version-notes-overlay__history-list"},y2=["onClick"],w2={class:"version-notes-overlay__history-top"},k2={class:"version-notes-overlay__history-title"},x2={class:"onboarding-footer version-notes-overlay__footer"},_2={class:"version-notes-overlay__footer-note"},C2={key:0,class:"version-notes-overlay__link-row"},S2=["href"],$2=ct(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 g(u){const v=new Date(u);return Number.isNaN(v.getTime())?u:d.value.format(v)}return(u,v)=>(h(),dt(ni,{visible:u.visible,theme:u.theme,"panel-class":"version-notes-overlay","aria-labelledby":"version-notes-title",onClose:v[2]||(v[2]=f=>o("close"))},{default:kt(()=>{var f;return[i("header",G_,[i("div",K_,[v[3]||(v[3]=i("div",{class:"version-notes-overlay__eyebrow"},"What's new",-1)),i("h2",q_,"Opsdash "+N(u.entry.version),1),i("p",J_,N(u.entry.teaser),1)]),i("div",Z_,[u.entry.version===u.selectedVersion?(h(),y("span",Y_,"Current")):ne("",!0),i("span",X_,N(g(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,Q_)])]),i("main",e2,[i("section",t2,[i("section",a2,[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",o2,N(u.entry.summary||u.entry.teaser),1),n.value.length?(h(),y("div",r2,[i("div",n2,[i("div",s2,[i("strong",null,N(s.value),1),Ge(" "+N(l.value),1)]),i("div",i2,[(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:b=>o("action",c.type)},N(c.label),9,l2))),128))])])])):ne("",!0)]),i("section",d2,[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",c2,[(h(!0),y(ye,null,Ne(u.entry.highlights,c=>(h(),y("li",{key:c},N(c),1))),128))])]),(f=u.entry.images)!=null&&f.length?(h(),y("section",u2,[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",g2,[(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,f2),i("div",b2,[i("strong",null,N(c.title),1),c.caption?(h(),y("span",v2,N(c.caption),1)):ne("",!0)])],8,p2))),128))])])):ne("",!0)]),i("aside",h2,[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",m2,[(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:b=>o("select-version",c.version)},[i("div",w2,[i("strong",null,"v"+N(c.version),1),i("span",null,N(c.version===u.entry.version?"Open now":g(c.date)),1)]),i("div",k2,N(c.title),1),i("p",null,N(c.teaser),1)],10,y2))),128))])])]),i("footer",x2,[i("div",_2,[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",C2,[(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"},N(c.label),9,S2))),128))])):ne("",!0)]),Re(M(sa),{type:"primary",disabled:u.isSaving,onClick:v[1]||(v[1]=c=>o("close"))},{default:kt(()=>[Ge(N(u.isSaving?"Saving…":"Back to dashboard"),1)]),_:1},8,["disabled"])])]}),_:1},8,["visible","theme"]))}}),[["__scopeId","data-v-3771dea1"]]),Rr={name:"opsdash",version:"0.8.3",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"}},T2={class:"app-shell"},M2={class:"app-main"},A2={class:"app-container"},D2=["title"],L2={key:0,class:"bar-row"},E2=["aria-label"],N2={class:"app-seg w2"},I2=["disabled"],O2=["disabled"],B2={class:"app-navc"},H2=["disabled"],F2={class:"navc-date"},P2={class:"navc-sub"},W2={class:"navc-date-start"},z2={class:"navc-title"},R2={class:"navc-date-end"},j2=["disabled"],V2=["disabled"],U2={class:"tab-strip",role:"tablist","aria-label":"Dashboard tabs"},G2=["aria-selected","onClick","onContextmenu"],K2={class:"tab-label"},q2={key:0,class:"tab-default-badge"},J2={key:0,class:"dashboard-context-badges"},Z2={key:1,class:"global-lookback-badge",title:"Global trend lookback"},Y2={key:1,class:"refresh-badge",role:"status","aria-live":"polite"},X2={class:"bar-row"},Q2=["aria-label"],eC={class:"tab-strip",role:"tablist","aria-label":"Dashboard tabs"},tC=["aria-selected","onClick","onContextmenu"],aC={key:1,class:"tab-label"},oC=["aria-label","onClick"],rC={key:1,class:"dashboard-context-badges"},nC={key:1,class:"global-lookback-badge",title:"Global trend lookback"},sC={class:"bar-row sep bar-row--edit-actions"},iC={class:"itb"},lC={key:0,class:"sel-chip sel-chip--named"},dC={class:"sel-chip__body"},cC={class:"sel-chip__type"},uC=["value","placeholder"],gC={key:1,class:"sel-chip sel-chip--empty"},pC=["disabled"],fC={key:0,class:"ic-group__rail"},bC=["disabled"],vC=["disabled"],hC=["disabled"],mC=["disabled"],yC={key:0,class:"ic-group__rail"},wC=["disabled"],kC=["disabled"],xC=["disabled"],_C=["disabled"],CC=["disabled"],SC=["disabled"],$C={key:0,class:"ic-group__rail"},TC=["disabled"],MC=["disabled"],AC=["disabled"],DC=["disabled"],LC=["disabled"],EC={key:0,class:"ic-group__rail ic-group__rail--color"},NC=["title","onClick"],IC={class:"ic-color-custom",title:"Custom color"},OC=["value"],BC={class:"ic-config-wrap"},HC={key:1,class:"ic ic--config",type:"button",disabled:"",title:"Widget settings"},FC=["disabled"],PC=["disabled"],WC=["disabled"],zC={key:3,class:"itb-empty-preview","aria-hidden":"true"},RC=["disabled"],jC={class:"cards"},VC={class:"hint footer"},UC=Ve({__name:"App",setup(e){function t(z){var Ae,Be;const F=window;(Be=(Ae=F.OC)==null?void 0:Ae.Notification)!=null&&Be.showTemporary?F.OC.Notification.showTemporary(z):console.log("SUCCESS:",z)}function a(z){var Ae,Be;const F=window;(Be=(Ae=F.OC)==null?void 0:Ae.Notification)!=null&&Be.showTemporary?F.OC.Notification.showTemporary(z):(console.error("ERROR:",z),alert(z))}const{navOpen:o,toggleNav:r,navToggleLabel:n,navToggleIcon:s}=I_(),l=oe(!1);function d(){return typeof window<"u"&&window.matchMedia("(max-width: 1100px)").matches}function g(){J.value&&d()&&ut(),o.value||r()}function u(){g()}function v(){g(),l.value=!0}Oe(()=>o.value,z=>{if(typeof document>"u")return;const F=z?"var(--app-navigation-width, 300px)":"0px";document.body.style.setProperty("--opsdash-nav-offset",F)},{immediate:!0}),Tt(()=>{typeof document>"u"||(document.body.style.removeProperty("--opsdash-nav-offset"),document.body.style.removeProperty("--opsdash-sticky-left"))});const f=oe("week"),c=oe(0),b=x(()=>{const z=Ht.value;if(!z)return"Partial data due to caps";const F=[];return z.maxPerCal!=null&&F.push(`cap per calendar: ${z.maxPerCal}`),z.maxTotal!=null&&F.push(`cap total: ${z.maxTotal}`),z.totalProcessed!=null&&F.push(`processed: ${z.totalProcessed}`),F.join(" · ")}),p=oe(!1),{scheduleDraw:$}=r_(),{route:S,getJson:T,postJson:C,deleteJson:P,root:O}=Tu(),I=oe(!1),_=oe("standard"),w=oe(null),m=oe(null),k=oe(!0),{layoutTabs:A,defaultTabId:R,activeTabId:L,isLayoutEditing:J,widgets:K,availableWidgetTypes:Y,activeTab:le,setActiveTab:Z,setDefaultTab:de,addTab:B,renameTab:G,removeTab:D,setTabsFromPayload:V,applyDashboardPreset:he,cycleWidth:Me,cycleHeight:ae,moveWidget:U,moveWidgetToTab:H,duplicateWidgetToTab:j,removeWidget:ce,addWidgetAt:fe,reorderWidget:E,updateWidgetOptions:W}=z_({widgetsRegistry:Br,createDefaultTabs:()=>wi(Jo(_.value,w.value),w.value),normalizeWidgetTabs:Hr,dashboardMode:_,deckEnabled:k,hasInitialLoad:I,queueSaveRef:m}),re=x(()=>({tabs:A.value,defaultTabId:R.value})),ue=x({get:()=>re.value,set:z=>{z&&V(z)}}),ee=new Set(["chart_per_day","chart_dow","chart_hod","time_summary_lookback","time_summary_v2","dayoff_trend"]),be=()=>{var z;if(tl.value<=1)return!1;for(const F of A.value||[]){const Ae=(F==null?void 0:F.widgets)||[];for(const Be of Ae){const Ze=String((Be==null?void 0:Be.type)??"");if(ee.has(Ze)&&!(Ze==="time_summary_v2"&&((z=Be==null?void 0:Be.options)==null?void 0:z.showHistory)===!1))return!0}}return!1},{tabLabelDraft:ve,tabEditingId:_e,tabContext:xe,addOrderHint:ge,handleTabClick:Ee,openTabContextMenu:Se,openTabContextMenuFromButton:te,setDefaultTabFromMenu:ie,removeTabFromMenu:me,renameTabFromMenu:Te,commitTabLabel:De,cancelTabLabel:Pe,setAddHint:Ie,resetContext:Fe}=U_({layoutTabs:A,activeTabId:L,activeTabLabel:x(()=>{var z;return((z=le.value)==null?void 0:z.label)||""}),isLayoutEditing:J,setActiveTab:Z,setDefaultTab:de,removeTab:D,renameTab:G});function ze(z,F){const Ae=A.value.find(Ze=>Ze.id===F);if(!Ae)return;H(z,F)&&t(`Moved widget to ${Ae.label}`)}function it(z,F){const Ae=A.value.find(Ze=>Ze.id===F);if(!Ae)return;j(z,F)&&t(`Copied widget to ${Ae.label}`)}function ut(){!J.value&&o.value&&d()&&r(),J.value=!J.value,J.value||(Fe(),Ot.value=!1,zt.value=null)}function nt(){J.value&&o.value&&d()&&r()}Oe(o,z=>{z&&J.value&&d()&&ut()});const gt=oe(!1),Ot=oe(!1),Wt=oe(null),st=oe(null),yt=oe(!1),pt=oe(null),Bt=oe(null),Je=oe(null),Ue=oe(null);let Qe=null;function Q(){Qe==null||Qe();const z=document.querySelector(".app-main");if(!z)return;const F=()=>{Ye(z),Ae()},Ae=()=>{if(!Je.value||!J.value){yt.value=!1;return}yt.value=z.scrollTop>$e};z.addEventListener("scroll",Ae,{passive:!0}),window.addEventListener("resize",F,{passive:!0}),Qe=()=>{z.removeEventListener("scroll",Ae),window.removeEventListener("resize",F)},F()}const se=oe(0);let $e=0;function Ye(z){const F=Bt.value,Ae=Je.value,Be=Ue.value;if(!Ae||!F){se.value=0,$e=0;return}document.body.style.setProperty("--opsdash-sticky-left",`${Math.round(F.getBoundingClientRect().left)}px`);const Ze=Ut(),we=Ae.getBoundingClientRect(),Ke=z.getBoundingClientRect(),oa=(Be??Ae).getBoundingClientRect();se.value=Math.ceil(we.height),$e=Math.max(0,oa.top-Ke.top+z.scrollTop-Ze)}function Ut(){if(typeof window>"u")return 62;const z=getComputedStyle(document.documentElement).getPropertyValue("--header-height").trim(),F=Number.parseFloat(z||"50");return(Number.isFinite(F)?F:50)+12}Nt(()=>{Q(),window.addEventListener("resize",nt,{passive:!0}),nt()}),Oe(J,async z=>{if(!z){yt.value=!1,se.value=0;return}await Zt(),requestAnimationFrame(()=>{Q()})}),Tt(()=>{Qe==null||Qe(),window.removeEventListener("resize",nt)});function ya(z){f.value=z,c.value=0,no()}function Gt(z){gt.value=!1;const F=Number.isFinite(ge.value??NaN)?ge.value??void 0:void 0;fe(z,F),ge.value=null}const{calendars:$t,colorsByName:ft,colorsById:xt,groupsById:Kt,selected:At,isInitialLoading:Dt,isRefreshing:bt,isTruncated:oo,truncLimits:Ht,uid:Ra,from:Lt,to:Xt,stats:wa,byCal:Ea,byDay:ja,charts:ua,targetsWeek:et,targetsMonth:ga,targetsConfig:wt,onboarding:at,load:Ct,themePreference:St,reportingConfig:pa,deckSettings:fa}=Yx({range:f,offset:c,userChangedSelection:p,route:z=>S(z),getJson:T,postJson:C,notifyError:a,scheduleDraw:$,isDebug:sg,includeLookback:()=>be(),widgetTabs:ue,onCoreLoaded:z=>{I.value||(I.value=!0),qi((z==null?void 0:z.onboarding)??null),typeof(z==null?void 0:z.activePreset)=="string"&&z.activePreset!==""&&(st.value=z.activePreset)}});Oe(()=>fa.value.enabled,z=>{k.value=z},{immediate:!0});const{deckCards:jr,deckLoading:Ni,deckError:Ii,refreshDeck:Oi}=F_({from:Lt,to:Xt,notifyError:a}),{deckFilter:Xn,deckSummaryBuckets:Bi,deckTickerConfig:Hi,deckUrl:Fi}=P_({deckSettings:fa,deckCards:jr,uid:Ra,root:O}),Pi=z=>{Xn.value=Ai(z)},ka=at;Oe(()=>{var z;return((z=ka.value)==null?void 0:z.strategy)??null},z=>{w.value=z},{immediate:!0});const{themePreference:Qo,effectiveTheme:yo,systemTheme:Wi,setThemePreference:Vr}=x_({serverPreference:St,route:z=>S(z),postJson:C,notifySuccess:t,notifyError:a}),Qn=x(()=>yo.value==="dark"?"opsdash-theme-dark":"opsdash-theme-light");function es(z){tt(z||"goals")}const{exportSidebarConfig:ts,importSidebarConfig:as}=L_({selected:At,groupsById:Kt,targetsWeek:et,targetsMonth:ga,targetsConfig:wt,themePreference:Qo,onboardingState:ka,widgetTabs:ue,setThemePreference:Vr,postJson:C,route:z=>S(z),performLoad:()=>no(),notifySuccess:t,notifyError:a}),{queueSave:os}=Qx({route:z=>S(z),postJson:C,notifyError:a,notifySuccess:t,onReload:()=>no(),selected:At,groupsById:Kt,targetsWeek:et,targetsMonth:ga,targetsConfig:wt,themePreference:Qo,reportingConfig:pa,deckSettings:fa,widgetTabs:ue,onboardingState:ka,activePreset:st});m.value=os;const er=Y,{presets:zi,presetsLoading:Ri,presetSaving:rs,presetApplying:ji,presetWarnings:Vi,lastLoadedPreset:Ui,refreshPresets:ns,savePreset:Ur,loadPreset:ss,deletePreset:q,clearPresetWarnings:X}=o_({route:(z,F)=>S(z,F),getJson:T,postJson:C,deleteJson:P,notifyError:a,notifySuccess:t,queueSave:os,selected:At,groupsById:Kt,targetsWeek:et,targetsMonth:ga,targetsConfig:wt,themePreference:Qo,setThemePreference:Vr,reportingConfig:pa,deckSettings:fa,widgetTabs:ue,onboardingState:ka,setDashboardMode:z=>{_.value=z},applyDashboardPreset:z=>{he(z)},userChangedSelection:p});Oe(Ui,z=>{st.value=z},{immediate:!0});const pe=H_({onboardingState:ka,route:z=>S(z),postJson:C,notifySuccess:t,notifyError:a,setThemePreference:Vr,savePreset:Ur,reloadAfterPersist:()=>no(),setSelected:z=>{At.value=[...z]},setTargetsWeek:z=>{et.value={...z}},setTargetsMonth:z=>{ga.value={...z}},setTargetsConfig:z=>{wt.value=za(z)},setGroupsById:z=>{Kt.value={...z}},setDeckSettings:z=>{fa.value={...z}},setReportingConfig:z=>{pa.value={...z}},setOnboardingState:z=>{at.value={...at.value||{},...z}},setDashboardMode:z=>{_.value=z},setWidgetTabs:z=>{V(z)}}),{autoWizardNeeded:Ce,onboardingRunId:Le,onboardingWizardVisible:rt,openWizardFromSidebar:tt,wizardStartStep:ro,hasExistingConfig:No,wizardCalendars:Va,wizardInitialSelection:qt,wizardInitialStrategy:tr,wizardInitialAllDayHours:Gi,wizardInitialTotalHours:Ki,wizardInitialTargetsConfig:l8,wizardInitialDeckSettings:d8,wizardInitialReportingConfig:c8,wizardInitialDashboardMode:u8,wizardInitialCategories:g8,wizardInitialAssignments:p8,isOnboardingSaving:f8,isSnapshotSaving:b8,snapshotNotice:v8,evaluateOnboarding:qi,handleWizardComplete:h8,handleWizardSkip:m8,handleWizardClose:y8,handleWizardSaveSnapshot:w8}=S_({onboardingState:ka,calendars:$t,selected:At,targetsWeek:et,groupsById:Kt,targetsConfig:wt,deckSettings:fa,reportingConfig:pa,hasInitialLoad:I,actions:pe}),k8=async z=>{await h8(z),z!=null&&z.dashboardMode&&he(z.dashboardMode)},x8=async z=>{z!=null&&z.dashboardMode&&he(z.dashboardMode),await pe.saveStep(z)};async function qu(z,F,Ae){try{const Be=await C(S("reportTestSend"),{range:f.value,offset:F,cals:z.selected,groups:z.groups,targets_config:z.targetsConfig,reporting_config:z.reportingConfig});t(`Test ${Ae} sent to ${Be.email}`)}catch(Be){console.error(Be),a(`Failed to send test ${Ae}`)}}const _8=z=>qu(z,-1,"recap"),C8=z=>qu(z,0,"checkpoint");async function no(){await Ct(),Wt.value=new Date,I.value||(I.value=!0),qi()}const{rangeDateLabel:S8,loadCurrent:Ju,toggleRangeCollapsed:$8,goPrevious:Ji,goNext:Zi}=T_({navOpen:o,range:f,offset:c,from:Lt,to:Xt,isLoading:Dt,performLoad:()=>no()}),{shortcutsOpen:Zu,openShortcuts:T8,closeShortcuts:M8,shortcutGroups:A8}=B_({goPrevious:Ji,goNext:Zi,toggleRange:$8,openConfigPanel:()=>g(),toggleEditLayout:ut,openWidgetOptions:()=>{var z,F;J.value&&((F=(z=is.value)==null?void 0:z.openOptionsForSelected)==null||F.call(z))},ensureSidebarVisible:g}),{appVersion:Yi}=s_({pingUrl:()=>S("ping"),getJson:T,pkgVersion:Rr!=null&&Rr.version?String(Rr.version):"",root:O}),D8=x(()=>rt.value||l.value||Zu.value),{isOpen:Yu,isSaving:L8,entries:E8,currentEntry:N8,activeEntry:Xu,selectedVersion:I8,openCurrent:O8,openVersion:B8,closeOverlay:Qu}=$_({appVersion:Yi,onboardingState:ka,hasInitialLoad:I,isBlocked:D8,route:z=>S(z),postJson:C,notifyError:a}),H8=x(()=>!!N8.value);function F8(z){if(z==="reload"){he(_.value);return}z==="open_preferences"&&(Qu(),tt("preferences"))}const eg=oe("active"),tg=x(()=>f.value==="month"?"Month":"Week");x(()=>f.value==="month"?"This month":"This week");const P8=x(()=>{const z=It(Lt.value);return z?f.value==="month"?`Month ${z.getUTCMonth()+1}`:`Week ${eo(z)}`:f.value==="month"?"Month":"Week"}),is=oe(null);x(()=>{const z=It(Lt.value);return z?f.value==="month"?`MONTH ${z.getUTCMonth()+1}`:`WEEK ${eo(z)}`:f.value.toUpperCase()}),x(()=>S8.value);const Xi=x(()=>{const z=za(wt.value);return f.value==="month"&&(z.totalHours=Wa(z.totalHours),z.categories=z.categories.map(F=>({...F,targetHours:Wa(F.targetHours)}))),z}),ag=x(()=>{const z=Xi.value;try{return xc({config:z,stats:wa,byDay:ja.value||[],byCal:Ea.value||[],groupsById:Kt.value||{},range:f.value,from:Lt.value,to:Xt.value})}catch(F){return console.error("[opsdash] targets summary failed",F),kc(z)}}),Qi=x(()=>{if(f.value==="month"){const z=ga.value||{};if(z&&Object.keys(z).length>0)return z;const F=et.value||{},Ae={};return Object.entries(F).forEach(([Be,Ze])=>{const we=Number(Ze);Number.isFinite(we)&&(Ae[Be]=Wa(we))}),Ae}return et.value||{}}),el=x(()=>{var z;return{...wc(),...((z=wt.value)==null?void 0:z.activityCard)??{}}}),og=x(()=>{var Ae;const z=Go(),F=((Ae=wt.value)==null?void 0:Ae.balance)??z;return{...z,...F,thresholds:{...z.thresholds,...F.thresholds??{}},relations:{...z.relations,...F.relations??{}},trend:{...z.trend,...F.trend??{}},dayparts:{...z.dayparts,...F.dayparts??{}},ui:{...z.ui,...F.ui??{}}}}),W8=x(()=>({showNotes:!!og.value.ui.showNotes})),tl=x(()=>{var z;return Math.max(1,Math.min(6,((z=og.value.trend)==null?void 0:z.lookbackWeeks)??1))}),ar=x(()=>{const z=tl.value;if(z<=1)return"";const F=f.value==="month"?"month":"week";return`Last ${z} ${z===1?F:`${F}s`}`}),z8=x(()=>""),{categoryLabelById:R8,categoryColorMap:rg,calendarCategoryMap:al,calendarGroups:ls}=f_({calendars:$t,selected:At,groupsById:Kt,colorsById:xt,targetsConfig:Xi,targetsSummary:ag,byCal:Ea,currentTargets:Qi,isDebug:sg}),{balanceOverview:j8}=v_({stats:wa,categoryColorMap:rg});x(()=>{var Ae,Be;if(!el.value.showHint)return"";const F=(Array.isArray((Be=(Ae=wt.value)==null?void 0:Ae.balance)==null?void 0:Be.categories)?wt.value.balance.categories:[]).map(Ze=>{const we=String(Ze??"").trim();if(!we)return"";const Ke=R8.value[we];return Ke||we.toUpperCase()}).filter(Ze=>Ze);return F.length?`Mapping via Sidebar ${F.join(" / ")}`:""});const{calendarChartData:ol,categoryChartsById:V8}=i_({charts:ua,colorsById:xt,calendarGroups:ls,calendarCategoryMap:al,targetsConfig:Xi,currentTargets:Qi,activityCardConfig:el}),U8=x(()=>{var Ze;const z=(Ze=ol.value)==null?void 0:Ze.stacked;if(!z||!Array.isArray(z.labels)||!Array.isArray(z.series))return{};const F=ia(new Date),Ae=z.labels.findIndex(we=>String(we??"")===F);if(Ae<0)return{};const Be={};return z.series.forEach(we=>{var nr;const Ke=String((we==null?void 0:we.id)??""),oa=Number(((nr=we==null?void 0:we.data)==null?void 0:nr[Ae])??0),dl=Number.isFinite(oa)?Math.max(0,oa):0;Ke&&(Be[Ke]=(Be[Ke]||0)+dl)}),Be}),ng=x(()=>{var Ke;const z=(Ke=ol.value)==null?void 0:Ke.stacked,F=z==null?void 0:z.labels,Ae=z==null?void 0:z.series;if(!z||!Array.isArray(F)||!Array.isArray(Ae))return{};const Be=ia(new Date),Ze=F.findIndex(oa=>String(oa??"")===Be);if(Ze<0)return{};const we={};return Ae.forEach(oa=>{var ug,gg;const dl=String((oa==null?void 0:oa.id)??""),nr=(ug=al.value)==null?void 0:ug[dl];if(!nr)return;const cg=Number(((gg=oa==null?void 0:oa.data)==null?void 0:gg[Ze])??0),x7=Number.isFinite(cg)?Math.max(0,cg):0;we[nr]=(we[nr]||0)+x7}),we}),G8=x(()=>ls.value.map(z=>({...z,todayHours:ng.value[z.id]||0}))),K8=x(()=>{const z=ls.value||[];return z.length&&[...z].sort((Ae,Be)=>(Be.summary.actualHours||0)-(Ae.summary.actualHours||0))[0]||null}),{timeSummary:q8,activitySummary:J8,activityDayOffTrend:Z8}=b_({stats:wa,byDay:ja,charts:ua,calendars:$t,selected:At,rangeLabel:tg,rangeStart:Lt,rangeEnd:Xt,offset:c,activeDayMode:eg,topCategory:K8});E_();function sg(){return!1}const{widgetContext:ig}=V_({timeSummary:q8,activeDayMode:eg,targetsSummary:ag,targetsConfig:wt,stats:wa,byDay:ja,byCal:Ea,groupsById:Kt,calendarGroupsWithToday:G8,balanceOverview:j8,balanceCardConfig:W8,rangeLabel:tg,range:f,offset:c,from:Lt,to:Xt,trendLookbackWeeks:tl,balanceNote:z8,activitySummary:J8,activityCardConfig:el,activityDayOffTrend:Z8,deckSummaryBuckets:Bi,deckLoading:Ni,deckError:Ii,deckTickerConfig:Hi,deckFilter:Xn,setDeckFilter:Pi,deckSettings:fa,deckUrl:Fi,deckCards:jr,refreshDeck:Oi,uid:Ra,isLoading:Dt,isInitialLoading:Dt,isRefreshing:bt,hasInitialLoad:I,isLayoutEditing:J,updateWidgetOptions:W,charts:ua,calendarChartData:ol,categoryChartsById:V8,calendarGroups:ls,calendars:$t,calendarCategoryMap:al,categoryColorMap:rg,colorsById:xt,colorsByName:ft,currentTargets:Qi,targetsWeek:et,selected:At,calendarTodayHours:U8,categoryTodayHours:ng,onboardingStrategy:x(()=>{var z;return((z=ka.value)==null?void 0:z.strategy)??null}),activePreset:st}),Y8=x(()=>_.value==="quick"?"Empty preset":_.value==="pro"?"Advanced preset":"Standard preset");function X8(z){return Number(z??0).toFixed(1)}function Q8(z){const F=Number(z??0);return Number.isFinite(F)?Number.isInteger(F)?String(F):F.toFixed(1):"0"}const rl=x(()=>{var Ae;const z=(Ae=ka.value)==null?void 0:Ae.strategy;if(!z)return"—";const F=Mc().find(Be=>Be.id===z);return(F==null?void 0:F.title)??String(z)}),e7=x(()=>{const z=new Map(($t.value||[]).map(Ae=>[String((Ae==null?void 0:Ae.id)??""),String((Ae==null?void 0:Ae.displayname)??(Ae==null?void 0:Ae.name)??(Ae==null?void 0:Ae.calendar)??(Ae==null?void 0:Ae.id)??"Calendar")])),F=(At.value||[]).map(Ae=>z.get(String(Ae))).filter(Ae=>!!Ae);return F.length?F:["None selected"]});function t7(z,F,Ae=", "){const Be=z.filter(Ke=>Ke&&Ke!=="None selected"),Ze=Be.slice(0,F),we=Be.length-Ze.length;return Ze.length?we>0?`${Ze.join(Ae)} +${we}`:Ze.join(Ae):"None selected"}function ds(z,F,Ae=" · "){const Be=z.filter(Boolean),Ze=Be.slice(0,F),we=Be.length-Ze.length;return Ze.length?we>0?`${Ze.join(Ae)} +${we}`:Ze.join(Ae):""}function a7(z){return z.replace(/\s+—\s+/g," ").replace(/\s+h$/,"h")}const o7=x(()=>{var F;const z=((F=wt.value)==null?void 0:F.categories)??[];return z.length?z.map(Ae=>`${Ae.label||Ae.id}${Q8(Ae.targetHours)} h`):["No category targets"]}),nl=x(()=>{var z;return`${X8(((z=wt.value)==null?void 0:z.totalHours)??0)} h`}),r7=x(()=>_.value==="pro"?"Advanced layout":_.value==="quick"?"Empty layout":"Standard layout"),n7=x(()=>yo.value==="dark"?"Dark":"Light"),sl=x(()=>{var Ze;if(!((Ze=fa.value)!=null&&Ze.enabled))return{status:"Deck tab disabled",boards:[]};const z=new Set((fa.value.hiddenBoards||[]).map(we=>Number(we))),F=new Map;(jr.value||[]).forEach(we=>{const Ke=Number(we==null?void 0:we.boardId);if(!Number.isFinite(Ke)||z.has(Ke))return;const oa=String((we==null?void 0:we.boardTitle)??`Board ${Ke}`);F.has(Ke)||F.set(Ke,oa)});const Ae=Array.from(F.values());return{status:`Showing ${Ae.length} board${Ae.length===1?"":"s"}`,boards:Ae}}),s7=x(()=>{var z;return(z=fa.value)!=null&&z.enabled?sl.value.boards.length===1?`Deck — ${sl.value.boards[0]}`:`Deck — ${sl.value.boards.length} boards`:"Deck — off"}),i7=x(()=>{const z=o7.value;if(!z.length)return"";if(z.length===1&&z[0]==="No category targets")return"No targets";const F=ds(z.map(a7),3);return F?`${F} · Total ${nl.value}`:""}),l7=x(()=>ds([r7.value],2)),d7=x(()=>rl.value&&rl.value!=="—"?rl.value:"Choose a planning model"),c7=x(()=>t7(e7.value,2)),u7=x(()=>s7.value),g7=x(()=>{var z;return ds([`Theme — ${n7.value}`,(z=pa.value)!=null&&z.enabled?"Recap on":"Recap off"],2)}),p7=x(()=>ds([nl.value?`Total ${nl.value}`:""],2)),f7=x(()=>({strategy:d7.value,deck:u7.value,goals:i7.value,dashboard:l7.value,calendars:c7.value,preferences:g7.value,review:p7.value})),b7=x(()=>{var z,F,Ae,Be,Ze,we;return{strategy:(z=ka.value)!=null&&z.strategy?"done":"dim",calendars:(((F=At.value)==null?void 0:F.length)??0)>0?"done":"dim",deck:(Ae=fa.value)!=null&&Ae.enabled?"done":"skip",goals:(((Ze=(Be=wt.value)==null?void 0:Be.categories)==null?void 0:Ze.length)??0)>0?"done":"warn",preferences:"done",dashboard:(((we=K.value)==null?void 0:we.length)??0)>0?"done":"dim",review:No.value?"done":"dim"}}),v7=x(()=>{if(bt.value)return"Syncing…";if(!Wt.value)return null;const z=Math.floor((Date.now()-Wt.value.getTime())/6e4);return z<1?"Just now":`${z}m ago`}),We=x(()=>{var z;return((z=is.value)==null?void 0:z.selectedItem)??null});x(()=>{var F;if(!We.value)return"";const z=er.value.find(Ae=>Ae.type===We.value.type);return((F=We.value.options)==null?void 0:F.titlePrefix)||(z==null?void 0:z.label)||We.value.type});const lg=x(()=>{if(!We.value)return"";const z=er.value.find(F=>F.type===We.value.type);return(z==null?void 0:z.label)||We.value.type}),il=x(()=>{var z,F;return((F=(z=We.value)==null?void 0:z.layout)==null?void 0:F.width)??null}),cs=x(()=>{var z,F;return((F=(z=We.value)==null?void 0:z.layout)==null?void 0:F.height)??null}),or=x(()=>{var z;return((z=We.value)==null?void 0:z.heightMode)==="auto"}),rr=x(()=>{var z,F;return((F=(z=We.value)==null?void 0:z.options)==null?void 0:F.cardBg)??null}),h7=x(()=>{var z,F;return((F=(z=We.value)==null?void 0:z.options)==null?void 0:F.titlePrefix)??""}),us=x(()=>{var z,F,Ae,Be;return((F=(z=We.value)==null?void 0:z.options)==null?void 0:F.scale)??((Be=(Ae=We.value)==null?void 0:Ae.options)==null?void 0:Be.textSize)??"md"}),m7=x(()=>yo.value==="dark"?["#1e293b","#1e3a5f","#2d1b69","#14532d","#451a03","#4c0519","#f8fafc"]:["#ffffff","#DBEAFE","#EDE9FE","#DCFCE7","#FEF3C7","#FFE4E6","#1E293B"]),zt=oe(null);function Io(z,F){We.value&&W(We.value.id,z,F)}function dg(z){We.value&&U(We.value.id,z)}function y7(){We.value&&ce(We.value.id)}function w7(){We.value&&Io("heightMode",or.value?"fixed":"auto")}function gs(z){We.value&&Io("scale",z)}function ps(z){We.value&&(zt.value=zt.value===z?null:z)}function ll(z){if(!We.value)return;const F=["quarter","half","full"],Ae=F.indexOf(We.value.layout.width),Be=F.indexOf(z);if(Ae===-1||Be===-1||Ae===Be)return;const Ze=We.value.id,we=(Be-Ae+3)%3;for(let Ke=0;Ke<we;Ke++)Me(Ze)}function fs(z){if(!We.value)return;const F=["s","m","l","xl"],Ae=F.indexOf(We.value.layout.height),Be=F.indexOf(z);if(Ae===-1||Be===-1||Ae===Be)return;const Ze=We.value.id,we=(Be-Ae+4)%4;for(let Ke=0;Ke<we;Ke++)ae(Ze)}function k7(){var z;We.value&&(Ot.value=!1,(z=is.value)==null||z.openAdvancedTargets(We.value.id))}return R_({performLoad:no,refreshPresets:ns,onboardingState:ka,hasInitialLoad:I,evaluateOnboarding:qi,dashboardMode:_}),(z,F)=>{const Ae=$p("NcAppSidebarToggle");return h(),y("div",{id:"opsdash",class:ke(["opsdash",[{"is-nav-collapsed":!M(o)},Qn.value]])},[(h(),dt(Gw,{key:M(Le),visible:M(rt),calendars:M(Va),"initial-selection":M(qt),"initial-strategy":M(tr),"onboarding-version":M(vo),closable:!M(Ce),"initial-theme-preference":M(Qo),"system-theme":M(Wi),"initial-all-day-hours":M(Gi),"initial-total-hours":M(Ki),"initial-targets-config":M(l8),"initial-targets-week":M(et),"initial-deck-settings":M(d8),"initial-reporting-config":M(c8),"initial-dashboard-mode":M(u8),"initial-categories":M(g8),"initial-assignments":M(p8),"start-step":M(ro),"has-existing-config":M(No),saving:M(f8),"snapshot-saving":M(b8),"snapshot-notice":M(v8),"persist-step":x8,"send-test-report":_8,"send-checkpoint-report":C8,onClose:M(y8),onSkip:M(m8),onComplete:k8,onSaveCurrentConfig:M(w8)},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(pk,{visible:l.value,theme:M(yo),presets:M(zi),"is-loading":M(Ri),"is-saving":M(rs),"is-applying":M(ji),warnings:M(Vi),onClose:F[0]||(F[0]=Be=>l.value=!1),onSave:M(Ur),onLoad:M(ss),onDelete:M(q),onRefresh:M(ns),onClearWarnings:M(X),onExportConfig:M(ts),onImportConfig:M(as)},null,8,["visible","theme","presets","is-loading","is-saving","is-applying","warnings","onSave","onLoad","onDelete","onRefresh","onClearWarnings","onExportConfig","onImportConfig"]),M(Xu)?(h(),dt($2,{key:0,visible:M(Yu),theme:M(yo),entry:M(Xu),history:M(E8),"selected-version":M(I8),"is-saving":M(L8),onClose:M(Qu),onSelectVersion:M(B8),onAction:F8},null,8,["visible","theme","entry","history","selected-version","is-saving","onClose","onSelectVersion"])):ne("",!0),Re(M(qf),{"app-name":"Operational Dashboard","show-navigation":M(o)},{navigation:kt(()=>[Re(zb,{id:"opsdash-sidebar","is-loading":M(Dt),range:f.value,offset:c.value,from:M(Lt),to:M(Xt),"nav-toggle-label":M(n),"nav-toggle-icon":M(s),"dashboard-mode":_.value,"guided-hints":f7.value,"guided-hint-statuses":b7.value,"last-sync":v7.value,"release-notes-available":H8.value,"release-notes-open":M(Yu),onLoad:no,"onUpdate:range":F[1]||(F[1]=Be=>{f.value=Be,c.value=0,no()}),"onUpdate:offset":F[2]||(F[2]=Be=>{c.value=Be,no()}),onToggleNav:M(r),onRerunOnboarding:M(tt),onOpenProfiles:v,onOpenReleaseNotes:M(O8),onOpenShortcuts:F[3]||(F[3]=Be=>M(T8)(Be))},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":kt(()=>[Re(Ae,{open:M(o),onToggle:M(r)},null,8,["open","onToggle"])]),default:kt(()=>{var Be,Ze;return[i("div",T2,[i("div",M2,[i("div",A2,[M(oo)?(h(),y("div",{key:0,class:"banner warn",title:b.value},[F[46]||(F[46]=Ge(" Showing partial data to keep things fast. ",-1)),M(Ht)&&M(Ht).totalProcessed!=null?(h(),y(ye,{key:0},[Ge(" Processed "+N(M(Ht).totalProcessed)+" items. ",1)],64)):ne("",!0)],8,D2)):ne("",!0),i("div",{ref_key:"appBarSlotRef",ref:pt,class:"app-bar-slot"},[i("div",{ref_key:"appBarRef",ref:Bt,class:ke(["app-bar",{"app-bar--editing":M(J)}])},[M(J)?(h(),y(ye,{key:1},[i("div",X2,[M(o)?ne("",!0):(h(),y("button",{key:0,class:"show-btn",type:"button",title:"Open sidebar","aria-label":M(n),onClick:u},[...F[52]||(F[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,Q2)),i("div",eC,[(h(!0),y(ye,null,Ne(M(A),we=>(h(),y("div",{key:we.id,class:"tab-item"},[i("button",{type:"button",class:ke(["tab",{on:we.id===M(L)}]),role:"tab","aria-selected":we.id===M(L),onClick:Ke=>M(Ee)(we.id),onContextmenu:Xe(Ke=>M(Se)(Ke,we.id),["prevent"])},[M(_e)===we.id?uo((h(),y("input",{key:0,class:"tab-input","onUpdate:modelValue":F[10]||(F[10]=Ke=>Et(ve)?ve.value=Ke:null),onBlur:F[11]||(F[11]=(...Ke)=>M(De)&&M(De)(...Ke)),onKeydown:[F[12]||(F[12]=Da(Xe((...Ke)=>M(De)&&M(De)(...Ke),["prevent"]),["enter"])),F[13]||(F[13]=Da(Xe((...Ke)=>M(Pe)&&M(Pe)(...Ke),["prevent"]),["esc"]))],onClick:F[14]||(F[14]=Xe(()=>{},["stop"]))},null,544)),[[$n,M(ve)]]):(h(),y("span",aC,N(we.label),1))],42,tC),i("button",{type:"button",class:"tab-menu-btn","aria-label":`Tab actions for ${we.label}`,onClick:Xe(Ke=>M(te)(Ke,we.id),["stop"])},"⋯",8,oC)]))),128)),i("button",{type:"button",class:"tab tab--add",onClick:F[15]||(F[15]=we=>M(B)())},"+ Tab")]),F[54]||(F[54]=i("div",{class:"bar-flex1"},null,-1)),st.value||ar.value?(h(),y("div",rC,[st.value?(h(),y("button",{key:0,class:"active-profile-badge",type:"button",title:"Open profiles",onClick:v},N(st.value),1)):ne("",!0),ar.value?(h(),y("span",nC,[F[53]||(F[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(" "+N(ar.value),1)])):ne("",!0)])):ne("",!0)]),i("div",sC,[F[55]||(F[55]=i("span",{class:"mode-hint"},"Editing layout · no date navigation",-1)),i("button",{class:"btn-ghost btn-ghost--primary",type:"button",onClick:F[16]||(F[16]=we=>gt.value=!0)},"Add widget"),i("button",{class:"btn-done",type:"button",onClick:ut},"Done editing")]),i("div",{ref_key:"itbRowSlotRef",ref:Ue,class:"itb-row-slot",style:He(yt.value&&se.value?{minHeight:`${se.value}px`}:void 0)},[i("div",{ref_key:"itbRowRef",ref:Je,class:ke(["bar-row sep itb-row",{"itb-row--floating":yt.value,"itb-row--empty":!We.value}])},[i("div",iC,[We.value?(h(),y("div",lC,[F[56]||(F[56]=i("div",{class:"sel-dot"},null,-1)),i("div",dC,[i("div",cC,N(lg.value),1),i("input",{type:"text",class:"sel-chip__name",value:h7.value,placeholder:lg.value,onInput:F[17]||(F[17]=we=>Io("titlePrefix",we.target.value))},null,40,uC)])])):(h(),y("div",gC,[...F[57]||(F[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},[F[78]||(F[78]=i("div",{class:"vsep"},null,-1)),i("div",{class:ke(["ic-group",{open:zt.value==="width"}])},[i("button",{class:ke(["ic ic-group__trigger",{on:zt.value==="width"}]),type:"button",disabled:!We.value,title:"Width options",onClick:F[18]||(F[18]=we=>ps("width"))},[...F[58]||(F[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,pC),zt.value==="width"?(h(),y("div",fC,[i("button",{class:ke(["ic ic-sub",{on:il.value==="quarter"}]),type:"button",disabled:!We.value,title:"Quarter width",onClick:F[19]||(F[19]=we=>ll("quarter"))},[...F[59]||(F[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,bC),i("button",{class:ke(["ic ic-sub",{on:il.value==="half"}]),type:"button",disabled:!We.value,title:"Half width",onClick:F[20]||(F[20]=we=>ll("half"))},[...F[60]||(F[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,vC),i("button",{class:ke(["ic ic-sub",{on:il.value==="full"}]),type:"button",disabled:!We.value,title:"Full width",onClick:F[21]||(F[21]=we=>ll("full"))},[...F[61]||(F[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,hC)])):ne("",!0)],2),F[79]||(F[79]=i("div",{class:"vsep"},null,-1)),i("div",{class:ke(["ic-group",{open:zt.value==="height"}])},[i("button",{class:ke(["ic ic-group__trigger",{on:zt.value==="height"}]),type:"button",disabled:!We.value,title:"Height options",onClick:F[22]||(F[22]=we=>ps("height"))},[...F[62]||(F[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,mC),zt.value==="height"?(h(),y("div",yC,[i("button",{class:ke(["ic ic-sub",{on:cs.value==="s"&&!or.value}]),type:"button",disabled:!We.value,title:"Small height",onClick:F[23]||(F[23]=we=>fs("s"))},[...F[63]||(F[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,wC),i("button",{class:ke(["ic ic-sub",{on:cs.value==="m"&&!or.value}]),type:"button",disabled:!We.value,title:"Medium height",onClick:F[24]||(F[24]=we=>fs("m"))},[...F[64]||(F[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,kC),i("button",{class:ke(["ic ic-sub",{on:cs.value==="l"&&!or.value}]),type:"button",disabled:!We.value,title:"Large height",onClick:F[25]||(F[25]=we=>fs("l"))},[...F[65]||(F[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,xC),i("button",{class:ke(["ic ic-sub",{on:cs.value==="xl"&&!or.value}]),type:"button",disabled:!We.value,title:"Extra large height",onClick:F[26]||(F[26]=we=>fs("xl"))},[...F[66]||(F[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,_C),i("button",{class:ke(["ic ic-sub",{on:or.value}]),type:"button",disabled:!We.value,title:"Auto height",onClick:w7},[...F[67]||(F[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,CC)])):ne("",!0)],2),F[80]||(F[80]=i("div",{class:"vsep"},null,-1)),i("div",{class:ke(["ic-group",{open:zt.value==="scale"}])},[i("button",{class:ke(["ic ic-group__trigger",{on:zt.value==="scale"}]),type:"button",disabled:!We.value,title:"Scale options",onClick:F[27]||(F[27]=we=>ps("scale"))},[...F[68]||(F[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,SC),zt.value==="scale"?(h(),y("div",$C,[i("button",{class:ke(["ic ic-sub",{on:us.value==="sm"}]),type:"button",disabled:!We.value,title:"Small scale",onClick:F[28]||(F[28]=we=>gs("sm"))},[...F[69]||(F[69]=[i("span",{class:"ic-lbl"},"S-",-1)])],10,TC),i("button",{class:ke(["ic ic-sub",{on:us.value==="md"}]),type:"button",disabled:!We.value,title:"Normal scale",onClick:F[29]||(F[29]=we=>gs("md"))},[...F[70]||(F[70]=[i("span",{class:"ic-lbl"},"M",-1)])],10,MC),i("button",{class:ke(["ic ic-sub",{on:us.value==="lg"}]),type:"button",disabled:!We.value,title:"Large scale",onClick:F[30]||(F[30]=we=>gs("lg"))},[...F[71]||(F[71]=[i("span",{class:"ic-lbl"},"L+",-1)])],10,AC),i("button",{class:ke(["ic ic-sub",{on:us.value==="xl"}]),type:"button",disabled:!We.value,title:"Extra large scale",onClick:F[31]||(F[31]=we=>gs("xl"))},[...F[72]||(F[72]=[i("span",{class:"ic-lbl"},"XL",-1)])],10,DC)])):ne("",!0)],2),F[81]||(F[81]=i("div",{class:"vsep"},null,-1)),i("div",{class:ke(["ic-group",{open:zt.value==="color"}])},[i("button",{class:ke(["ic ic-group__trigger",{on:zt.value==="color"}]),type:"button",disabled:!We.value,title:"Card background color",onClick:F[32]||(F[32]=we=>ps("color"))},[i("span",{class:ke(["ic-color-dot",{"ic-color-dot--none":!rr.value}]),style:He(rr.value?{background:rr.value}:{})},null,6),F[73]||(F[73]=i("span",{class:"ic-lbl"},"Color",-1))],10,LC),zt.value==="color"?(h(),y("div",EC,[i("button",{type:"button",class:ke(["ic-color-swatch ic-color-reset",{on:!rr.value}]),title:"Default background",onClick:F[33]||(F[33]=Xe(()=>{Io("cardBg",null),zt.value=null},["stop"]))},null,2),(h(!0),y(ye,null,Ne(m7.value,we=>{var Ke;return h(),y("button",{key:we,type:"button",class:ke(["ic-color-swatch",{on:((Ke=rr.value)==null?void 0:Ke.toUpperCase())===we.toUpperCase()}]),style:He({background:we}),title:we,onClick:Xe(()=>{Io("cardBg",we),zt.value=null},["stop"])},null,14,NC)}),128)),i("label",IC,[i("input",{type:"color",value:rr.value??"#ffffff",onChange:F[34]||(F[34]=Xe(we=>{Io("cardBg",we.target.value),zt.value=null},["stop"]))},null,40,OC)])])):ne("",!0)],2),i("div",BC,[We.value&&((Be=M(Br)[We.value.type])!=null&&Be.configurable)?(h(),dt(Vx,{key:0,entry:M(Br)[We.value.type],options:We.value.options,open:Ot.value,"show-advanced":We.value.type==="targets_v2",context:M(ig),tabs:M(A).map(we=>({id:we.id,label:we.label})),"current-tab-id":M(L),onToggle:F[35]||(F[35]=we=>{Ot.value=we}),onOpenAdvanced:k7,onChange:F[36]||(F[36]=(we,Ke)=>Io(we,Ke)),onMoveToTab:F[37]||(F[37]=we=>ze(We.value.id,we)),onDuplicateToTab:F[38]||(F[38]=we=>it(We.value.id,we))},null,8,["entry","options","open","show-advanced","context","tabs","current-tab-id"])):(h(),y("button",HC,[...F[74]||(F[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:F[39]||(F[39]=we=>dg("up"))},[...F[75]||(F[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,FC),i("button",{class:"ic",type:"button",disabled:!We.value,title:"Move later",onClick:F[40]||(F[40]=we=>dg("down"))},[...F[76]||(F[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,PC),i("button",{class:"ic ic-danger",type:"button",disabled:!We.value,title:"Remove widget",onClick:y7},[...F[77]||(F[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,WC)],64)):(h(),y("div",zC,[...F[82]||(F[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(o)?ne("",!0):(h(),y("div",L2,[i("button",{class:"show-btn",type:"button",onClick:F[4]||(F[4]=(...we)=>M(r)&&M(r)(...we)),"aria-label":M(n)},[...F[47]||(F[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,E2),i("div",N2,[i("button",{type:"button",class:ke({on:f.value==="week"}),disabled:M(Dt),onClick:F[5]||(F[5]=we=>ya("week"))},"Week",10,I2),i("button",{type:"button",class:ke({on:f.value==="month"}),disabled:M(Dt),onClick:F[6]||(F[6]=we=>ya("month"))},"Month",10,O2)]),i("div",B2,[i("button",{class:"navc-btn",type:"button",disabled:M(Dt),onClick:F[7]||(F[7]=(...we)=>M(Ji)&&M(Ji)(...we))},[...F[48]||(F[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,H2),i("div",F2,[i("span",P2,[i("span",W2,N(M(Lt)),1),i("span",z2,N(P8.value),1),i("span",R2,N(M(Xt)),1)])]),i("button",{class:"navc-btn",type:"button",disabled:M(Dt),onClick:F[8]||(F[8]=(...we)=>M(Zi)&&M(Zi)(...we))},[...F[49]||(F[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,j2)]),i("button",{class:"bar-btn-ref",type:"button",disabled:M(Dt)||M(bt),onClick:F[9]||(F[9]=(...we)=>M(Ju)&&M(Ju)(...we))},"Refresh",8,V2)])),i("div",{class:ke(["bar-row",{sep:!M(o)}])},[i("div",U2,[(h(!0),y(ye,null,Ne(M(A),we=>(h(),y("div",{key:we.id,class:"tab-item"},[i("button",{type:"button",class:ke(["tab",{on:we.id===M(L)}]),role:"tab","aria-selected":we.id===M(L),onClick:Ke=>M(Ee)(we.id),onContextmenu:Xe(Ke=>M(Se)(Ke,we.id),["prevent"])},[i("span",K2,N(we.label),1),we.id===M(R)?(h(),y("span",q2,"Default")):ne("",!0)],42,G2)]))),128))]),F[51]||(F[51]=i("div",{class:"bar-flex1"},null,-1)),st.value||ar.value?(h(),y("div",J2,[st.value?(h(),y("button",{key:0,class:"active-profile-badge",type:"button",title:"Open profiles",onClick:v},N(st.value),1)):ne("",!0),ar.value?(h(),y("span",Z2,[F[50]||(F[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(" "+N(ar.value),1)])):ne("",!0)])):ne("",!0),M(bt)?(h(),y("span",Y2,"Updating…")):ne("",!0),i("button",{class:"btn-ghost",type:"button",onClick:ut},"Edit layout")],2)],64))],2)],512),M(xe).open?(h(),y("div",{key:1,class:"tab-context-menu",style:He({top:`${M(xe).y}px`,left:`${M(xe).x}px`}),role:"menu"},[i("button",{type:"button",role:"menuitem",onClick:F[41]||(F[41]=(...we)=>M(ie)&&M(ie)(...we))},"Set as default"),i("button",{type:"button",role:"menuitem",onClick:F[42]||(F[42]=(...we)=>M(Te)&&M(Te)(...we))},"Rename"),i("button",{type:"button",role:"menuitem",disabled:M(A).length<=1,onClick:F[43]||(F[43]=(...we)=>M(me)&&M(me)(...we))}," Remove ",8,RC)],4)):ne("",!0),Re(tx,{open:gt.value,"widget-type-list":M(er),onClose:F[44]||(F[44]=we=>gt.value=!1),onSelect:Gt},null,8,["open","widget-type-list"]),i("div",jC,[Re(Dk,{ref_key:"layoutRef",ref:is,widgets:M(K),context:M(ig),editable:M(J),"widget-types":M(er),"preset-label":Y8.value,tabs:M(A).map(we=>({id:we.id,label:we.label})),"current-tab-id":M(L),"onEdit:width":M(Me),"onEdit:height":M(ae),"onEdit:remove":M(ce),"onEdit:move":M(U),"onEdit:moveTab":ze,"onEdit:duplicateTab":it,"onEdit:options":M(W),"onEdit:add":M(fe),"onEdit:reorder":M(E),"onOpen:onboarding":es,"onReset:preset":F[45]||(F[45]=we=>M(he)(_.value.value)),"onSelect:cell":M(Ie)},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",VC,[M(Yi)?(h(),y(ye,{key:0},[Ge(" Operational Dashboard • v"+N(M(Yi))+" • Built by Blade34242 @ Gellert Innovation ",1)],64)):(h(),y(ye,{key:1},[Ge(" Operational Dashboard • v"+N(((Ze=M(Rr))==null?void 0:Ze.version)||"0.6.0")+" • Built by Blade34242 @ Gellert Innovation ",1)],64))])])])])]}),_:1},8,["show-navigation"]),Re(kk,{visible:M(Zu),groups:M(A8),theme:M(yo),onClose:M(M8)},null,8,["visible","groups","theme","onClose"])],2)}}});function Zn(){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 ju(...e){Zn()&&console.log(...e)}function GC(...e){Zn()&&console.warn(...e)}function Ei(){var t;const e=document.getElementById("app");if(e){try{ju("[opsdash] booting");const a=(t=e.dataset)==null?void 0:t.opsdashDefaultWidgets;if(a)try{hu(JSON.parse(a))}catch(s){GC("[opsdash] failed to parse bootstrap widgets",s)}const o=Uf(UC);o.config.errorHandler=(s,l,d)=>{const g=l==null?void 0:l.type,u=g&&g.name?g.name:"";if(Zn()){const v={err:s,info:d,name:u,stack:s instanceof Error?s.stack:void 0},f=window;Array.isArray(f.__opsdashErrors)||(f.__opsdashErrors=[]),f.__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,Ux(),ju("[opsdash] mounted")}catch(a){Zn()?console.error("Mount failed",a):console.error("Mount failed")}return}document.readyState==="complete"||document.readyState==="interactive"?setTimeout(Ei,50):window.addEventListener("DOMContentLoaded",Ei,{once:!0})}Ei();const KC={key:0,class:"title-row"},qC={class:"title"},JC=["title"],ZC={class:"index-badge__ring","aria-hidden":"true"},YC={class:"index-badge__value"},XC={class:"index-badge__meta"},QC={key:0,class:"index-badge__range"},e4={key:0,class:"trend"},t4=["title"],a4={class:"trend-line-row"},o4={class:"trend-value"},r4={class:"trend-range"},n4={class:"trend-offset"},s4={key:1,class:"messages"},i4={key:2,class:"config"},l4={key:3,class:"empty"},d4=Object.freeze(Object.defineProperty({__proto__:null,default:ct(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,D;return Array.isArray((G=(B=t.overview)==null?void 0:B.trend)==null?void 0:G.history)?t.overview.trend.history:Array.isArray((D=t.overview)==null?void 0:D.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(D=>Number((D==null?void 0:D.offset)??0)>0);return Math.max(0,Math.min(6,G.length))}),l=x(()=>{const B=new Map,G=t.targetsCategories||[],D=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 H={};Array.isArray(V==null?void 0:V.categories)&&V.categories.forEach(re=>{H[String(re.id)]=Number(re.share??0)});const j=Object.values(H),ce=j.length?Math.max(...j):0,fe=j.reduce((re,ue)=>re+ue,0);(ce>1||fe>1.5)&&Object.keys(H).forEach(re=>{H[re]=H[re]/100});const E=Object.values(H).reduce((re,ue)=>re+ue,0);E>1.0001&&E>0&&Object.keys(H).forEach(re=>{H[re]=H[re]/E});const W=O({shares:H,targets:G,basis:D});B.set(ae,{index:W,label:(V==null?void 0:V.label)||""})}),B}),d=x(()=>{var D;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((D=t.overview)==null?void 0:D.index)=="number"?t.overview.index:void 0,label:t.rangeLabel||""}),B}),g=x(()=>t.showCurrent!==!1),u=x(()=>{let B=d.value.slice();return g.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),f=x(()=>{var B;return((B=t.overview)==null?void 0:B.warnings)||[]}),c=x(()=>{const B=f.value,G=Number.isFinite(t.messageLimit)?Number(t.messageLimit):1/0;return!Number.isFinite(G)||G<=0?B:B.slice(0,G)}),b=x(()=>({background:t.cardBg||void 0})),p=x(()=>{var D,V,he,Me,ae;const B=Go(),G={noticeAbove:((D=t.thresholds)==null?void 0:D.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}}),$=x(()=>{const B=t.showTrend===!1||!v.value,G=t.showMessages===!1||c.value.length===0,D=t.showConfig===!1;return B&&G&&D}),S=x(()=>{var D;const B=(D=t.overview)==null?void 0:D.index,G=typeof B=="number"?B:Number(B??NaN);return Number.isFinite(G)?Math.max(0,Math.min(1,G)):null}),T=x(()=>I(S.value??void 0)),C=x(()=>{const B=S.value;if(B==null)return{};const G=Math.round(B*100);let D="#dc2626";return B>=.8?D="#16a34a":B>=.65&&(D="#f59e0b"),{"--index-fill":`${G}%`,"--index-color":D}}),P=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 D={},V=(ae=B.targets)!=null&&ae.length?B.targets.reduce((U,H)=>U+(H.targetHours??0),0):0;G!=="calendar"&&V>0&&B.targets.forEach(U=>{D[String(U.id)]=(U.targetHours??0)/V});const he=new Set([...Object.keys(B.shares||{}),...Object.keys(D)]);if(he.size===0)return 0;let Me=0;return he.forEach(U=>{var ce;const H=Number(((ce=B.shares)==null?void 0:ce[U])??0),j=G==="calendar"?1/he.size:D[U]??0;Me=Math.max(Me,Math.abs(H-j))}),Math.max(0,Math.min(1,Number((1-Me).toFixed(2))))},I=B=>Number.isFinite(B)?B.toFixed(2):"—",_=x(()=>t.trendColor||"#2563EB"),w=x(()=>{const B=(t.labelMode||"period").toString().toLowerCase();return B==="date"||B==="offset"?B:"period"}),m=x(()=>({gridTemplateColumns:`repeat(auto-fit, minmax(${w.value==="date"?108:88}px, 1fr))`}));function k(B,G){const D=B.replace("#",""),V=parseInt(D.substring(0,2),16),he=parseInt(D.substring(2,4),16),Me=parseInt(D.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 A=B=>{const G=_.value,D=u.value[B],V=Number((D==null?void 0:D.index)??0),he=Math.min(1,Math.max(0,1-V));return{background:k(G,he*.6)}},R=B=>{if(w.value!=="date")return"";const G=u.value[B],D=((G==null?void 0:G.offset)??0)===0;return(G==null?void 0:G.label)||D&&t.rangeLabel||""},L=B=>!!R(B),J=B=>{var D;if(w.value!=="offset")return"";const G=((D=u.value[B])==null?void 0:D.offset)??B;return G===0?"Current":`-${G}`},K=B=>{var V;if(w.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 D=ia(B,"UTC"),V=ia(G,"UTC");return Ar(D,V,{day:"2-digit",month:"2-digit"})}function Z(B){var U,H;const G=((U=u.value[B])==null?void 0:U.offset)??B;if(!t.from||!t.to){const j=(H=u.value[B])==null?void 0:H.label;return Y(j)?"":j||""}const D=(t.rangeMode||"").toLowerCase(),V=It(t.from),he=It(t.to);if(!V||!he)return"";if(D==="month"){const j=Ln(V,-G),ce=hc(j);return le(j,ce)}const Me=Mo(V,-7*G),ae=Mo(he,-7*G);return le(Me,ae)}function de(B){var H;const G=((H=u.value[B])==null?void 0:H.offset)??B,D=(t.rangeMode||"").toLowerCase();if(!t.from)return G===0?"Current":`- ${G} wk`;const V=It(t.from),he=V?D==="month"?Ln(V,-G):Mo(V,-7*G):null;if(!he)return G===0?"Current":`- ${G} wk`;if(D==="month"){const j=he.getUTCMonth()+1,ce=V?V.getUTCMonth()+1:j;return`MONTH ${G===0?ce:j}`}const Me=eo(he),ae=V?eo(V):Me;return`WEEK ${G===0?ae:Me}`}return(B,G)=>(h(),y("div",{class:"balance-card",style:He(b.value)},[i("div",{class:ke(["header",{compact:$.value}])},[o.value?(h(),y("div",KC,[i("span",qC,N(a.value),1)])):ne("",!0),B.overview?(h(),y("div",{key:1,class:ke(["index",{centered:$.value}])},[i("div",{class:"index-badge",style:He(C.value),title:P.value},[i("div",ZC,[i("span",YC,N(T.value),1)]),i("div",XC,[G[0]||(G[0]=i("div",{class:"index-badge__label"},"Current index",-1)),B.rangeLabel?(h(),y("div",QC,N(B.rangeLabel),1)):ne("",!0)])],12,JC)],2)):ne("",!0)],2),B.showTrend&&v.value?(h(),y("div",e4,[i("div",{class:"trend-line",style:He(m.value)},[(h(!0),y(ye,null,Ne(u.value,(D,V)=>(h(),y("div",{key:V,class:ke(["trend-block",{current:D.offset===0,"no-range":!L(V)}]),title:D.label||"",style:He(A(V))},[i("div",a4,[i("span",o4,N(I(D.index)),1),i("span",r4,N(w.value==="date"?Z(V)||K(V):""),1),i("span",n4,[w.value==="period"?(h(),y(ye,{key:0},[Ge(N(de(V)),1)],64)):w.value==="offset"?(h(),y(ye,{key:1},[Ge(N(J(V)),1)],64)):ne("",!0)])])],14,t4))),128))],4)])):ne("",!0),B.showMessages&&c.value.length?(h(),y("div",s4,[G[1]||(G[1]=i("div",{class:"section-title"},"Messages",-1)),i("ul",null,[(h(!0),y(ye,null,Ne(c.value,(D,V)=>(h(),y("li",{key:V},N(D),1))),128))])])):ne("",!0),B.showConfig?(h(),y("div",i4,[i("div",null,"Basis: "+N(p.value.basis),1),i("div",null,"Notice ±: +"+N(p.value.noticeAbove??"—")+" / -"+N(p.value.noticeBelow??"—"),1),i("div",null,"Warn ±: +"+N(p.value.warnAbove??"—")+" / -"+N(p.value.warnBelow??"—"),1),i("div",null,"Warn index: "+N(p.value.warnIndex??"—"),1)])):ne("",!0),B.overview?ne("",!0):(h(),y("div",l4,"No balance data."))],4))}}),[["__scopeId","data-v-6f9b087b"]])},Symbol.toStringTag,{value:"Module"})),c4={key:0,class:"mix-header"},u4={class:"mix-title"},g4={class:"mix-subtitle"},p4={key:0,class:"mix-badge"},f4={key:2,class:"mix-list"},b4={class:"mix-label"},v4=["title"],h4={class:"mix-cell__value"},m4={key:0,class:"mix-cell__indicator"},y4={key:3,class:"hint"},w4=Object.freeze(Object.defineProperty({__proto__:null,default:ct(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 H=(t.labelMode||"period").toString().toLowerCase();return H==="offset"||H==="label"||H==="compact"||H==="date"?H:"period"}),n=x(()=>t.squareCells===!0),s=x(()=>{const H=t.colorMode;return H==="trend"||H==="share"||H==="hybrid"?H:"hybrid"}),l=x(()=>{const H=String(t.trendIndicator??"").toLowerCase();return H==="symbol"||H==="delta"||H==="both"?H:"none"}),d=x(()=>{var H,j;return t.showBadge===!1?"":((j=(H=t.overview)==null?void 0:H.trend)==null?void 0:j.badge)??""}),g=x(()=>t.rangeMode==="month"?"MO":"WE"),u=x(()=>t.rangeMode==="month"?"M":"W"),v=x(()=>G()),f=x(()=>Math.max(1,Math.min(6,t.lookbackWeeks||1))),c=x(()=>t.title||"Category mix trend"),b=x(()=>({background:t.cardBg||void 0})),p=x(()=>{var j,ce,fe;const H=((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(H)?H.map(E=>({offset:Number((E==null?void 0:E.offset)??(E==null?void 0:E.step)??0)||0,label:String((E==null?void 0:E.label)??""),categories:Array.isArray(E==null?void 0:E.categories)?E.categories.map(W=>({id:String((W==null?void 0:W.id)??""),label:String((W==null?void 0:W.label)??""),share:Number((W==null?void 0:W.share)??0)||0})):[]})).filter(E=>E.offset>0):[]}),$=H=>`-${H} ${g.value}`,S=(H,j)=>r.value==="label"&&j?j:r.value==="date"?de(H,j)||$(H):r.value==="offset"?`-${H}`:r.value==="compact"?`${u.value}-${H}`:B(H),T=x(()=>{if(!t.overview)return[];const H=f.value,j=new Map;return p.value.forEach(ce=>{const fe=Math.max(1,Math.min(12,Math.round(ce.offset)));if(!fe||fe>H)return;const E={};ce.categories.forEach(W=>{W.id&&(E[W.id]=Number.isFinite(W.share)?W.share:0)}),j.set(fe,{offset:fe,label:S(fe,ce.label),shares:E})}),Array.from(j.values()).sort((ce,fe)=>fe.offset-ce.offset)}),C=x(()=>{const H=[...T.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?H.slice().reverse():H}),P=x(()=>C.value.length),O=x(()=>({gridTemplateColumns:`minmax(0, var(--mix-label-width, 52px)) repeat(${Math.max(P.value,1)}, minmax(0, 1fr))`})),I=x(()=>({gridTemplateColumns:`repeat(${Math.max(P.value,1)}, minmax(0, 1fr))`})),_=x(()=>{const H=D(t.toneLowColor)||"#e11d48",j=D(t.toneHighColor)||"#10b981",ce=V(H,j,.5);return{down:ae(H),flat:ae(ce),up:ae(j)}}),w=x(()=>{const H=D(t.shareLowColor)||"#e2e8f0",j=D(t.shareHighColor)||"#60a5fa";return{low:H,high:j}}),m=H=>{const j=U(H,0,100)/100;return V(w.value.low,w.value.high,j)},k=H=>H>1?"up":H<-1?"down":"flat",A=x(()=>t.overview?(t.overview.categories??[]).map(j=>{const ce=typeof j.share=="number"?j.share:0,fe=C.value.map(W=>{var re;return{label:W.label,share:W.isCurrent?ce:((re=W.shares)==null?void 0:re[j.id])??0,isCurrent:W.isCurrent}}),E=fe.map((W,re)=>{const ue=re>0,ee=ue?fe[re-1].share:W.share,be=W.share-ee,ve=ue?k(be):"flat",_e=s.value,xe=_.value[ve],ge=m(W.share),Ee=ae(ge),Se=_e==="trend"?xe.background:ge,te=_e==="trend"?xe.color:Ee.color;return{label:W.label,share:W.share,isCurrent:!!W.isCurrent,trend:ve,indicator:Y(ve,be,ue),style:{"--mix-bg":Se,"--mix-fg":te,"--mix-accent":xe.background}}});return{id:j.id,label:j.label,cells:E}}):[]),R=x(()=>{var j;const H=f.value;if(H>1){const ce=t.rangeMode==="month"?"months":"weeks";return`History · last ${H} ${ce}`}return H===1&&T.value.length?((j=T.value[T.value.length-1])==null?void 0:j.label)||$(1):$(H||1)}),L=H=>`${Math.max(0,Math.round(H))}%`;function J(H){return H==="up"?"↑":H==="down"?"↓":"→"}function K(H){const j=Math.round(H);return!Number.isFinite(j)||j===0?"0pp":`${j>0?"+":""}${j}pp`}function Y(H,j,ce){if(!ce)return"";const fe=l.value;return fe==="none"?"":fe==="symbol"?J(H):fe==="delta"?K(j):`${J(H)} ${K(j)}`}const le={day:"2-digit",month:"2-digit"};function Z(H,j){if(!H||!j)return"";const ce=ia(H,"UTC"),fe=ia(j,"UTC");return Ar(ce,fe,le)}function de(H,j){if(!t.from||!t.to)return j||"";const ce=(t.rangeMode||"").toLowerCase(),fe=It(t.from),E=It(t.to);if(!fe||!E)return j||"";if(ce==="month"){const ue=Ln(fe,-H),ee=hc(ue);return Z(ue,ee)}const W=Mo(fe,-7*H),re=Mo(E,-7*H);return Z(W,re)}function B(H){const j=(t.rangeMode||"").toLowerCase();if(!t.from)return H===0?"Current":j==="month"?`-${H} mo`:`-${H} wk`;const ce=It(t.from),fe=ce?j==="month"?Ln(ce,-H):Mo(ce,-7*H):null;if(!fe)return H===0?"Current":j==="month"?`-${H} mo`:`-${H} wk`;if(j==="month"){const re=ce?ce.getUTCMonth()+1:fe.getUTCMonth()+1;return`MONTH ${H===0?re:fe.getUTCMonth()+1}`}const E=eo(ce||fe);return`WEEK ${H===0?E:eo(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 D(H){if(!H||typeof H!="string")return null;const j=H.trim();return/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(j)?j:null}function V(H,j,ce=.5){const fe=he(H),E=he(j);if(!fe||!E)return H;const W=U(Math.round(fe.r+(E.r-fe.r)*ce),0,255),re=U(Math.round(fe.g+(E.g-fe.g)*ce),0,255),ue=U(Math.round(fe.b+(E.b-fe.b)*ce),0,255);return`#${[W,re,ue].map(ee=>ee.toString(16).padStart(2,"0")).join("")}`}function he(H){const j=H.replace("#","");if(j.length===3){const[ce,fe,E]=j.split("").map(W=>parseInt(W.repeat(2),16));return{r:ce,g:fe,b:E}}if(j.length===6){const ce=parseInt(j.slice(0,2),16),fe=parseInt(j.slice(2,4),16),E=parseInt(j.slice(4,6),16);return{r:ce,g:fe,b:E}}return null}function Me(H){const j=he(H);return j?(.2126*j.r+.7152*j.g+.0722*j.b)/255:0}function ae(H){const j=Me(H)>.6?"#0f172a":"#fff";return{background:H,color:j}}function U(H,j,ce){return Math.min(ce,Math.max(j,H))}return(H,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(b.value)},[a.value?(h(),y("div",c4,[i("div",null,[i("div",u4,N(c.value),1),i("div",g4,N(R.value),1)]),d.value?(h(),y("span",p4,N(d.value),1)):ne("",!0)])):ne("",!0),T.value.length||A.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}])},N(ce.label),3))),128))],4)):ne("",!0),A.value.length?(h(),y("ul",f4,[(h(!0),y(ye,null,Ne(A.value,ce=>(h(),y("li",{key:ce.id,class:"mix-row"},[i("span",b4,N(ce.label)+":",1),i("div",{class:"mix-cells",style:He(I.value)},[(h(!0),y(ye,null,Ne(ce.cells,(fe,E)=>(h(),y("div",{key:`${ce.id}-cell-${E}`,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",h4,N(L(fe.share)),1),fe.indicator?(h(),y("span",m4,N(fe.indicator),1)):ne("",!0)],14,v4))),128))],4)]))),128))])):(h(),y("div",y4,"No category mix history."))],6))}}),[["__scopeId","data-v-ff363a60"]])},Symbol.toStringTag,{value:"Module"}));function Yo(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 ca(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 Xo(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 Vu(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 Uu(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=Xo(n),d=Xo(s);if(!l||!d)return"#7c3aed";const g=(c,b,p)=>Math.round(c+(b-c)*p),u=g(l.r,d.r,a),v=g(l.g,d.g,a),f=g(l.b,d.b,a);return`rgb(${u}, ${v}, ${f})`}const k4=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 g=Math.max(0,Number(d)||0);return(Math.round(g*10)/10).toFixed(1)}function s(){const d=a.value;if(!d||!t.data)return;const g=Yo(d);if(!g)return;const u=getComputedStyle(d),v=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-scale"))||1),f=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-space"))||v),c=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-density"))||1),b=v*c,p=c<1?f/c:f,$=d.clientWidth,S=d.clientHeight,T=28*p,C=T*1.4,P=S-T,O=$-T,I=ca(d,"--line","#e5e7eb"),_=ca(d,"--fg","#0f172a");g.clearRect(0,0,$,S),g.strokeStyle=I,g.lineWidth=1,g.beginPath(),g.moveTo(C,P),g.lineTo(O,P),g.moveTo(C,P),g.lineTo(C,T),g.stroke(),g.fillStyle=_,g.font=`${12*b}px ui-sans-serif,system-ui`;const w=String(t.xLabel??"").trim();if(w){const G=g.measureText(w).width,D=Math.min(S-6*b,P+18*b);g.fillText(w,C+(O-C)/2-G/2,D)}const m=String(t.yLabel??"").trim();m&&g.fillText(m,6*p,T*.8);const k=(t.data.labels||[]).map(G=>String(G??"")),A=Array.isArray(t.data.series)?t.data.series:[];if(!k.length||!A.length)return;const R=[];A.forEach(G=>{(Array.isArray(G.data)?G.data:[]).forEach(V=>R.push(Math.max(0,Number(V)||0)))});const L=Math.max(1,...R),J=k.length,K=Math.max(1,A.length),Y=10*f,le=4*f,Z=Math.max(12*f,(O-C-Y*(J+1))/J),de=Math.max(4*f,(Z-le*(K-1))/K),B=(P-T)/L;k.forEach((G,D)=>{const V=C+Y+D*(Z+Y);if(A.forEach((he,Me)=>{var ce;const ae=Math.max(0,Number(((ce=he==null?void 0:he.data)==null?void 0:ce[D])??0)),U=Math.max(0,ae*B),H=V+Me*(de+le),j=P-U;if(g.fillStyle=(he==null?void 0:he.color)||"#93c5fd",g.fillRect(H,j,de,U),t.showLabels!==!1&&U>14*b&&de>20*b&&ae>.01){g.fillStyle=_,g.font=`${12*b}px ui-sans-serif,system-ui`;const fe=`${n(ae)}h`,E=g.measureText(fe).width;g.fillText(fe,H+de/2-E/2,j+U/2+4*b)}}),Z>26*b){g.fillStyle=_,g.font=`${12*b}px ui-sans-serif,system-ui`;const he=g.measureText(G).width;g.fillText(G,V+Z/2-he/2,P+14*b)}})}function l(){var d,g;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"))||((g=a.value)==null?void 0:g.parentElement);u&&(r=new MutationObserver(()=>s()),r.observe(u,{attributes:!0,attributeFilter:["style","class"]}))}catch{}}return Nt(()=>{s(),l(),window.addEventListener("resize",s)}),Tt(()=>{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,g)=>(h(),y("canvas",{ref_key:"cv",ref:a,class:"chart"},null,512))}}),Gu=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 g=Math.max(0,Number(d)||0);return(Math.round(g*10)/10).toFixed(1)}function s(){const d=a.value;if(!d||!t.data)return;const g=Yo(d);if(!g)return;const u=getComputedStyle(d),v=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-scale"))||1),f=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-space"))||v),c=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-density"))||1),b=v*c,p=c<1?f/c:f,$=d.clientWidth,S=d.clientHeight,T=28*p,C=T*1.4,P=S-T,O=$-T,I=ca(d,"--line","#e5e7eb"),_=ca(d,"--fg","#0f172a");g.clearRect(0,0,$,S),g.strokeStyle=I,g.lineWidth=1,g.beginPath(),g.moveTo(C,P),g.lineTo(O,P),g.moveTo(C,P),g.lineTo(C,T),g.stroke(),g.fillStyle=_,g.font=`${12*b}px ui-sans-serif,system-ui`;const w=String(t.xLabel??"").trim();if(w){const Z=g.measureText(w).width,de=Math.min(S-6*b,P+18*b);g.fillText(w,C+(O-C)/2-Z/2,de)}const m=String(t.yLabel??"").trim();m&&g.fillText(m,6*p,T*.8);const k=(t.data.labels||[]).map(Z=>String(Z??"")),A=(t.data.data||[]).map(Z=>Math.max(0,Number(Z)||0)),R=Array.isArray(t.data.colors)?t.data.colors:[];if(!k.length||!A.length)return;const L=Math.max(1,...A),J=k.length,K=8*f,Y=Math.max(6*f,(O-C-K*(J+1))/J),le=(P-T)/L;k.forEach((Z,de)=>{const B=A[de]??0,G=Math.max(0,B*le),D=C+K+de*(Y+K),V=P-G;if(g.fillStyle=R[de]||"#93c5fd",g.fillRect(D,V,Y,G),g.fillStyle=_,g.font=`${12*b}px ui-sans-serif,system-ui`,Y>26){const he=g.measureText(Z).width;g.fillText(Z,D+Y/2-he/2,P+14*b)}if(t.showLabels!==!1&&G>14*b&&Y>22*b&&B>.01){const he=`${n(B)}h`,Me=g.measureText(he).width;g.fillText(he,D+Y/2-Me/2,V+G/2+4*b)}})}function l(){var d,g;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"))||((g=a.value)==null?void 0:g.parentElement);u&&(r=new MutationObserver(()=>s()),r.observe(u,{attributes:!0,attributeFilter:["style","class"]}))}catch{}}return Nt(()=>{s(),l(),window.addEventListener("resize",s)}),Tt(()=>{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,g)=>(h(),y("canvas",{ref_key:"cv",ref:a,class:"chart"},null,512))}}),x4={key:0,class:"chart-widget__header"},_4={class:"chart-widget__title"},C4={key:0,class:"chart-widget__subtitle"},S4={key:3,class:"chart-widget__empty"},$4={key:4,class:"chart-widget__legend"},T4=Object.freeze(Object.defineProperty({__proto__:null,default:ct(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,g)=>(h(),y("div",{class:"card chart-widget",style:He(r.value)},[a.value?(h(),y("div",x4,[i("div",_4,N(o.value),1),d.subtitle?(h(),y("div",C4,N(d.subtitle),1)):ne("",!0)])):ne("",!0),d.groupedData?(h(),dt(k4,{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(),dt(Gu,{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",S4,"No data")),n.value.length?(h(),y("ul",$4,[(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,N(u.label),1)]))),128))])):ne("",!0)],4))}}),[["__scopeId","data-v-9d9b0ba6"]])},Symbol.toStringTag,{value:"Module"})),Ku=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=Yo(n);if(!l)return;const d=getComputedStyle(n),g=Math.max(.5,Number.parseFloat(d.getPropertyValue("--widget-scale"))||1),u=Math.max(.5,Number.parseFloat(d.getPropertyValue("--widget-space"))||g),v=Math.max(.5,Number.parseFloat(d.getPropertyValue("--widget-density"))||1),f=g*v,c=v<1?u/v:u,b=n.clientWidth,p=n.clientHeight,$=s.dows||[],S=s.hours||[],T=s.matrix||[];l.clearRect(0,0,b,p);const C=36*c,P=C,O=C,I=b-C,_=p-C,w=(I-P)/Math.max(1,S.length),m=(_-O)/Math.max(1,$.length),k=Math.max(0,...T.flat())||1,A=typeof t.baseColor=="string"?t.baseColor.trim():"",R=ca(n,"--heatmap-low","#e0f2fe"),L=Xo(R),J=Xo(A),K=le=>{const Z=Math.max(0,Math.min(1,le)),de=Math.pow(Z,.6);if(!L||!J)return Uu(de);const B=(G,D,V)=>Math.round(G+(D-G)*V);return Vu(B(L.r,J.r,de),B(L.g,J.g,de),B(L.b,J.b,de))};$.length&&S.length&&console.info("[opsdash] heatmap draw",{rows:$.length,cols:S.length,vmax:k});for(let le=0;le<$.length;le++)for(let Z=0;Z<S.length;Z++){const B=(((Y=T[le])==null?void 0:Y[Z])||0)/k,G=P+Z*w,D=O+le*m;l.fillStyle=K(B),l.fillRect(G,D,w-1,m-1)}l.fillStyle=ca(n,"--fg","#0f172a"),l.font=`${12*f}px ui-sans-serif,system-ui`,$.forEach((le,Z)=>l.fillText(le,8,O+Z*m+12*f)),S.forEach((le,Z)=>{Z%2===0&&l.fillText(String(le),P+Z*w+2,O-6*f)})}return Nt(async()=>{await Zt(),r();try{o=new ResizeObserver(()=>r()),a.value&&o.observe(a.value)}catch{}window.addEventListener("resize",r)}),Tt(()=>{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))}}),M4={class:"heatmap-lookback"},A4={class:"heatmap-lookback__stacked"},D4={class:"heatmap-lookback__label"},L4={key:0,class:"heatmap-lookback__legend"},E4={class:"heatmap-lookback__legend-scale"},N4={class:"heatmap-lookback__legend-meta"},I4={class:"heatmap-lookback__legend-weeks"},O4=ct(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(b=>{var p,$;($=(p=b==null?void 0:b.hod)==null?void 0:p.matrix)==null||$.forEach(S=>{S.forEach(T=>{const C=Number(T);Number.isFinite(C)&&(c=Math.max(c,Math.max(0,C)))})})}),{max:c}}),d=x(()=>"Less hours"),g=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 b=a.value;if(!b)return;const p=Yo(b);if(!p)return;const $=getComputedStyle(b),S=Math.max(.5,Number.parseFloat($.getPropertyValue("--widget-scale"))||1),T=Math.max(.5,Number.parseFloat($.getPropertyValue("--widget-space"))||S),C=Math.max(.5,Number.parseFloat($.getPropertyValue("--widget-density"))||1),P=S*C,O=C<1?T/C:T,I=b.clientWidth,_=b.clientHeight,w=(Me=c[0])==null?void 0:Me.hod,m=(w==null?void 0:w.dows)||[],k=(w==null?void 0:w.hours)||[];if(!m.length||!k.length)return;let A=0;c.forEach(ae=>{var U,H;(H=(U=ae.hod)==null?void 0:U.matrix)==null||H.forEach(j=>{j.forEach(ce=>{A=Math.max(A,Math.max(0,Number(ce)||0))})})}),A<=0&&(A=1);const R=36*O,L=R,J=R,K=I-R,Y=_-R,le=(K-L)/Math.max(1,k.length),Z=(Y-J)/Math.max(1,m.length),de=ca(b,"--heatmap-low","#e0f2fe"),B=Xo(de),G=c.map(ae=>Xo(ae.color)),D=ae=>Math.max(0,Math.min(1,ae)),V=(ae,U,H)=>Math.round(ae+(U-ae)*H),he=Math.max(1,c.length);p.clearRect(0,0,I,_);for(let ae=0;ae<m.length;ae++)for(let U=0;U<k.length;U++){const H=L+U*le,j=J+ae*Z,ce=le/he;c.forEach((fe,E)=>{var ve,_e,xe;const W=Math.max(0,Number(((xe=(_e=(ve=fe==null?void 0:fe.hod)==null?void 0:ve.matrix)==null?void 0:_e[ae])==null?void 0:xe[U])??0)),re=D(W/A),ue=Math.pow(re,.6),ee=G[E],be=B&&ee?Vu(V(B.r,ee.r,ue),V(B.g,ee.g,ue),V(B.b,ee.b,ue)):Uu(ue);p.fillStyle=be,p.fillRect(H+E*ce,j,ce,Z-1)})}p.fillStyle=ca(b,"--fg","#0f172a"),p.font=`${12*P}px ui-sans-serif,system-ui`,m.forEach((ae,U)=>p.fillText(ae,8,J+U*Z+12*P)),k.forEach((ae,U)=>{U%2===0&&p.fillText(String(ae),L+U*le+2,J-6*P)})}function f(){try{o=new ResizeObserver(()=>v()),a.value&&o.observe(a.value)}catch{}window.addEventListener("resize",v)}return Nt(async()=>{await Zt(),v(),f()}),Tt(()=>{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"&&Zt().then(()=>v())},{deep:!0}),(c,b)=>(h(),y("div",M4,[uo(i("div",A4,[(h(!0),y(ye,null,Ne(r.value,p=>(h(),y("div",{key:p.id,class:"heatmap-lookback__panel"},[i("div",D4,[i("span",{class:"dot",style:He({background:p.color})},null,4),i("span",null,N(p.label),1)]),Re(Ku,{hod:p.hod,"base-color":p.color},null,8,["hod","base-color"])]))),128))],512),[[ac,n.value==="stacked"]]),uo(i("canvas",{ref_key:"cv",ref:a,class:"chart heatmap-lookback__overlay"},null,512),[[ac,n.value==="overlay"]]),s.value&&r.value.length?(h(),y("div",L4,[i("div",E4,[i("span",null,N(d.value),1),b[0]||(b[0]=i("span",{class:"heatmap-lookback__legend-bar","aria-hidden":"true"},null,-1)),i("span",null,N(g.value),1)]),i("div",N4,[i("span",null,N(u.value),1)]),i("ul",I4,[(h(!0),y(ye,null,Ne(r.value,p=>(h(),y("li",{key:p.id},[i("span",{class:"dot",style:He({background:p.color})},null,4),i("span",null,N(p.label),1)]))),128))])])):ne("",!0)]))}}),[["__scopeId","data-v-9b113ef0"]]),B4={key:0,class:"chart-widget__header"},H4={class:"chart-widget__title"},F4={key:0,class:"chart-widget__subtitle"},P4={key:1,class:"chart-widget__meta"},W4={key:3,class:"chart-widget__empty"},z4={key:4,class:"chart-widget__hint"},R4=Object.freeze(Object.defineProperty({__proto__:null,default:ct(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 g=typeof t.lookbackWeeks=="number"?Math.max(0,Math.round(t.lookbackWeeks)):0;if(!g)return"";const u=(t.rangeMode||"").toString().toLowerCase()==="month"?"month":"week";return`History · last ${g} ${g===1?u:`${u}s`}`});return(g,u)=>(h(),y("div",{class:"card chart-widget chart-widget--hod",style:He(r.value)},[a.value?(h(),y("div",B4,[i("div",H4,N(o.value),1),g.subtitle?(h(),y("div",F4,N(g.subtitle),1)):ne("",!0),d.value?(h(),y("div",P4,N(d.value),1)):ne("",!0)])):ne("",!0),n.value.length?(h(),dt(O4,{key:1,entries:n.value,mode:l.value,"show-legend":s.value},null,8,["entries","mode","show-legend"])):g.hodData?(h(),dt(Ku,{key:2,hod:g.hodData},null,8,["hod"])):(h(),y("div",W4,"No data")),g.showHint&&g.hodData?(h(),y("div",z4,"24×7 Heatmap: hours by weekday and hour.")):ne("",!0)],4))}}),[["__scopeId","data-v-ca4a5fd8"]])},Symbol.toStringTag,{value:"Module"})),j4={key:0,class:"chart-widget__header"},V4={class:"chart-widget__title"},U4={key:0,class:"chart-widget__subtitle"},G4={key:2,class:"chart-widget__empty"},K4={key:3,class:"chart-widget__legend"},q4=Object.freeze(Object.defineProperty({__proto__:null,default:ct(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,g)=>(h(),y("div",{class:"card chart-widget",style:He(r.value)},[a.value?(h(),y("div",j4,[i("div",V4,N(o.value),1),d.subtitle?(h(),y("div",U4,N(d.subtitle),1)):ne("",!0)])):ne("",!0),d.chartData?(h(),dt(Gu,{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",G4,"No data")),n.value.length?(h(),y("ul",K4,[(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,N(u.label),1)]))),128))])):ne("",!0)],4))}}),[["__scopeId","data-v-08a193fb"]])},Symbol.toStringTag,{value:"Module"})),J4=ct(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,f=a.value;if(!f||!v)return;const c=Yo(f);if(!c)return;const b=getComputedStyle(f),p=Math.max(.5,Number.parseFloat(b.getPropertyValue("--widget-scale"))||1),$=Math.max(.5,Number.parseFloat(b.getPropertyValue("--widget-space"))||p),S=Math.max(.5,Number.parseFloat(b.getPropertyValue("--widget-density"))||1),T=Math.max(.6,Number.parseFloat(b.getPropertyValue("--pie-scale"))||.85),C=p*S*T,P=f.clientWidth,O=f.clientHeight,I=P/2,_=O/2,w=Math.min(P,O)*(.35*$*T),m=v.data||[],k=v.labels||[],A=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,P,O),L.length===0)return;const J=L.map(U=>Number(m[U])||0),K=L.map(U=>String(k[U]||"")),Y=L.map(U=>String(A[U]||"")),le=L.map(U=>R[U]),Z=J.reduce((U,H)=>U+Math.max(0,H),0)||1;let de=-Math.PI/2;const B=ca(f,"--line","#e5e7eb"),G=ca(f,"--fg","#0f172a"),D=ca(f,"--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=[];J.forEach((U,H)=>{var _e,xe;const j=Math.max(0,U)/Z,ce=de+j*2*Math.PI,fe=String((K==null?void 0:K[H])||""),E=String((Y==null?void 0:Y[H])||""),W=le[H],re=(_e=t.colorsById)==null?void 0:_e[E],ue=(xe=t.colorsByName)==null?void 0:xe[fe];let ee=re||ue||W||V[H%V.length];const be=Me&&E===he,ve=Me&&!be;if(c.save(),ve&&(c.globalAlpha=.25),c.beginPath(),c.moveTo(I,_),c.arc(I,_,w,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 ge=(de+ce)/2,Ee=I+Math.cos(ge)*(w+12*$*T),Se=_+Math.sin(ge)*(w+12*$*T);c.save(),c.font=`${12*C}px ui-sans-serif,system-ui`,c.fillStyle=G,c.strokeStyle=D,c.lineWidth=3,c.textAlign="center",c.textBaseline="middle";const te=Math.max(0,Number(U)||0)/Z*100,ie=`${K!=null&&K[H]?K[H]+" ":""}${Number(U).toFixed(2)}h · ${te.toFixed(1)}%`;c.strokeText(ie,Ee,Se),c.fillText(ie,Ee,Se),c.restore()}ae.push({start:de,end:ce,id:E}),de=ce}),n={cx:I,cy:_,r:w,segments:ae}}function d(){var v,f;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"))||((f=a.value)==null?void 0:f.parentElement);c&&(r=new MutationObserver(()=>l()),r.observe(c,{attributes:!0,attributeFilter:["style","class"]}))}catch{}}Nt(()=>{l(),d(),window.addEventListener("resize",l)}),Tt(()=>{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",g),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 g(v){const f=a.value;if(!f||!n)return;const c=f.getBoundingClientRect(),b=v.clientX-c.left,p=v.clientY-c.top,$=b-n.cx,S=p-n.cy,T=Math.sqrt($*$+S*S);if(!Number.isFinite(T)||T>n.r){s.value&&(s.value=null,l());return}let C=Math.atan2(S,$);C<-Math.PI/2&&(C+=Math.PI*2);const P=n.segments.find(I=>C>=I.start&&C<=I.end),O=P?P.id:null;O!==s.value&&(s.value=O,l())}function u(){s.value&&(s.value=null,l())}return Oe(()=>a.value,(v,f)=>{f&&(f.removeEventListener("mousemove",g),f.removeEventListener("mouseleave",u)),v&&(v.addEventListener("mousemove",g),v.addEventListener("mouseleave",u))},{immediate:!0}),(v,f)=>(h(),y("canvas",{ref_key:"cv",ref:a,class:"chart"},null,512))}}),[["__scopeId","data-v-d6565e06"]]),Z4={key:0,class:"chart-widget__header"},Y4={class:"chart-widget__title"},X4={key:0,class:"chart-widget__subtitle"},Q4={key:2,class:"chart-widget__empty"},e5={key:3,class:"chart-widget__legend"},t5=["onMouseenter","onFocus"],a5={class:"val"},o5=Object.freeze(Object.defineProperty({__proto__:null,default:ct(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 g=t.chartData;if(!g||!Array.isArray(g.data))return[];const u=g.data.reduce((v,f)=>v+Math.max(0,Number(f)||0),0)||1;return g.data.map((v,f)=>{var C,P,O;const c=Math.max(0,Number(v)||0),b=String(((C=g.labels)==null?void 0:C[f])??""),p=String(((P=g.ids)==null?void 0:P[f])??b??f),$=((O=g.colors)==null?void 0:O[f])||n.value[p]||s.value[b]||"#60a5fa",S=c/u*100,T=Math.round(S);return{id:p,label:b,color:$,raw:c,pctRounded:T,value:`${c.toFixed(1)}h · ${T}%`}}).filter(v=>v.pctRounded>0).sort((v,f)=>f.raw-v.raw)});return(g,u)=>(h(),y("div",{class:"card chart-widget",style:He(r.value)},[a.value?(h(),y("div",Z4,[i("div",Y4,N(o.value),1),g.subtitle?(h(),y("div",X4,N(g.subtitle),1)):ne("",!0)])):ne("",!0),g.chartData?(h(),dt(J4,{key:1,data:g.chartData,"colors-by-id":n.value,"colors-by-name":s.value,"show-labels":g.showLabels,"highlight-id":l.value},null,8,["data","colors-by-id","colors-by-name","show-labels","highlight-id"])):(h(),y("div",Q4,"No data")),g.showLegend&&d.value.length?(h(),y("ul",e5,[(h(!0),y(ye,null,Ne(d.value,v=>(h(),y("li",{key:v.id,class:ke({hovered:l.value===v.id}),onMouseenter:f=>l.value=v.id,onMouseleave:u[0]||(u[0]=f=>l.value=null),onFocus:f=>l.value=v.id,onBlur:u[1]||(u[1]=f=>l.value=null),tabindex:"0"},[i("span",{class:"dot",style:He({background:v.color})},null,4),i("span",null,N(v.label),1),i("span",a5,N(v.value),1)],42,t5))),128))])):ne("",!0)],4))}}),[["__scopeId","data-v-df59c238"]])},Symbol.toStringTag,{value:"Module"})),r5=ct(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,_,w,m,k){I.save(),k!=null&&k.font&&(I.font=k.font),k!=null&&k.align&&(I.textAlign=k.align),k!=null&&k.baseline&&(I.textBaseline=k.baseline),I.lineWidth=3,I.strokeStyle=(k==null?void 0:k.stroke)||"rgba(0,0,0,0.55)",I.strokeText(_,w,m),I.fillStyle=(k==null?void 0:k.fill)||"#ffffff",I.fillText(_,w,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 g(I,_){const w=d(I);return w&&(.2126*w.r+.7152*w.g+.0722*w.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 w=d(I);if(!w)return I;const m=Math.max(0,Math.min(1,_)),k=Math.round(w.r+(255-w.r)*m),A=Math.round(w.g+(255-w.g)*m),R=Math.round(w.b+(255-w.b)*m);return`rgb(${k},${A},${R})`}function f(I,_=.5){const w=d(I);if(!w)return I;const m=Math.max(0,Math.min(1,_)),k=Math.round(w.r*(1-m)),A=Math.round(w.g*(1-m)),R=Math.round(w.b*(1-m));return`rgb(${k},${A},${R})`}function c(I,_){const{x:w,y:m,width:k,height:A,baseColor:R,variant:L}=_,J=L==="mixed",K=Math.max(0,Math.min(1,Number(_.alphaScale))),Y=Math.min(k*(J?.35:.22),6),le=Math.max(2,J?k*.45:k-Y*2),Z=J?w+k-le-Y:w+(k-le)/2,de=v(R,J?.6:.45),B=f(R,J?.4:.35);I.save(),I.fillStyle=de,I.globalAlpha=(J?.12:.16)*K,I.fillRect(Z,m,le,A),I.restore(),I.save(),I.strokeStyle=B,I.lineWidth=J?1.25:1.5,I.globalAlpha=(J?.6:.75)*K,I.setLineDash([4,4]),I.strokeRect(Z,m,le,A),I.restore(),I.save(),I.strokeStyle=B,I.globalAlpha=(J?.35:.45)*K,I.lineWidth=1,I.beginPath(),I.moveTo(Z,m),I.lineTo(Z+le,m),I.stroke(),I.restore()}function b(){const I=a.value;if(!I)return;const _=Yo(I);if(!_)return;const w=getComputedStyle(I),m=Math.max(.5,Number.parseFloat(w.getPropertyValue("--widget-scale"))||1),k=Math.max(.5,Number.parseFloat(w.getPropertyValue("--widget-space"))||m),A=Math.max(.5,Number.parseFloat(w.getPropertyValue("--widget-density"))||1),R=Math.max(.6,Number.parseFloat(w.getPropertyValue("--stacked-scale"))||.85),L=m*A*R,J=A<1?k/A:k,K=`${11*L}px ui-sans-serif,system-ui`,Y=I.clientWidth,le=I.clientHeight,Z=28*J,de=Z*1.4,B=le-Z,G=Y-Z,D=ca(I,"--line","#e5e7eb"),V=ca(I,"--fg","#0f172a"),he=ca(I,"--bg","#ffffff");_.clearRect(0,0,Y,le),_.strokeStyle=D,_.lineWidth=1,_.beginPath(),_.moveTo(de,B),_.lineTo(G,B),_.moveTo(de,B),_.lineTo(de,Z),_.stroke();const Me=t.stacked;if(Me&&Me.labels&&Me.series){const ae=[];let U=Me.labels||[],H=Me.series||[];const j=T(U,H);U=j.labels,H=j.series;const ce=H.map(De=>String((De==null?void 0:De.id)??""));s.value&&!ce.includes(s.value)&&(s.value=null);const fe=t.highlightId??s.value?String(t.highlightId??s.value):"",E=!!(fe&&ce.includes(fe)),W=U.map((De,Pe)=>H.reduce((Ie,Fe)=>{var ze;return Ie+Math.max(0,Number(((ze=Fe.data)==null?void 0:ze[Pe])||0))},0)),re=U.map((De,Pe)=>H.reduce((Ie,Fe)=>{var ze;return Ie+Math.max(0,Number(((ze=Fe.forecast)==null?void 0:ze[Pe])||0))},0)),ue=W.map((De,Pe)=>De+re[Pe]),ee=Math.max(1,...ue),be=U.length||1,ve=8*k,_e=Math.max(6*k,(G-de-ve*(be+1))/be),xe=ve*R,ge=Math.max(4*k*R,_e*R),Ee=ge*be+xe*(be+1),Se=de+Math.max(0,(G-de-Ee)/2),te=(B-Z)/ee*R;let ie=0,me=0;U.forEach((De,Pe)=>{const Ie=Se+xe+Pe*(ge+xe);let Fe=B,ze=0;const it=[];H.forEach(st=>{var Q;const yt=Math.max(0,Number(((Q=st.data)==null?void 0:Q[Pe])||0)),pt=yt*te;Fe-=pt;const Bt=String(st.id??""),Je=t.colorsById[st.id]||st.color||"#93c5fd",Ue=E&&Bt===fe,Qe=E&&!Ue;if(pt>.5&&(_.save(),Qe&&(_.globalAlpha=.25),_.fillStyle=Je,_.fillRect(Ie,Fe,ge,pt),Ue&&(_.strokeStyle="rgba(255,255,255,0.9)",_.lineWidth=1.5,_.strokeRect(Ie,Fe,ge,pt)),_.restore()),t.showLabels!==!1&&yt>.01){const se=u(yt);_.font=K;const $e=_.measureText(se).width;if(pt>14*L&&ge>$e+6*L)_.save(),Qe&&(_.globalAlpha=.25),_.fillStyle=g(Je,V),_.font=K,_.fillText(se,Ie+ge/2-$e/2,Fe+pt/2+4),_.restore();else if(pt>.5){const Ut=Fe+pt/2,ya=6*k,Gt=Ie+ge+ya,$t=Ie-ya,ft=Gt+$e<=G,xt=ft?Gt:$t,Kt=ft?"left":"right",At=ft?Ie+ge:Ie,Dt=ft?xt-4*k:xt+4*k;it.push({y:Ut,text:se,align:Kt,textX:xt,lineStartX:At,lineEndX:Dt,alpha:Qe?.25:1})}}pt>.5&&ae.push({x:Ie,y:Fe,width:ge,height:pt,id:Bt}),ze+=yt});let nt=Fe,gt=0;if(H.forEach(st=>{var Q;const yt=Math.max(0,Number(((Q=st.forecast)==null?void 0:Q[Pe])||0));if(yt<=0)return;const pt=yt*te;if(nt-=pt,gt+=yt,pt<=.5)return;const Bt=String(st.id??""),Je=t.colorsById[st.id]||st.color||"#93c5fd",Qe=E&&!(E&&Bt===fe);c(_,{x:Ie,y:nt,width:ge,height:pt,baseColor:Je,variant:ze>.01?"mixed":"future",alphaScale:Qe?.25:1})}),t.showLabels!==!1&&it.length){const st=12*L,yt=Z+6*L,pt=B-6*L;it.sort((Ue,Qe)=>Ue.y-Qe.y),it.forEach((Ue,Qe)=>{Qe===0?Ue.y=Math.max(Ue.y,yt):Ue.y=Math.max(Ue.y,it[Qe-1].y+st)});const Bt=it[it.length-1].y-pt;Bt>0&&it.forEach(Ue=>{Ue.y-=Bt});const Je=yt-it[0].y;Je>0&&it.forEach(Ue=>{Ue.y+=Je}),_.save(),_.font=K,_.textBaseline="middle",it.forEach(Ue=>{_.save(),_.globalAlpha=Ue.alpha,_.strokeStyle=D,_.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()}ie+=ze,me+=gt,_.fillStyle=V,_.font=`${12*L}px ui-sans-serif,system-ui`;const Ot=C(String(U[Pe]||""));if(ge>26*L){const st=_.measureText(Ot).width;_.fillText(Ot,Ie+ge/2-st/2,B+14*L)}const Wt=gt>.01?`~${u(ze+gt)}h`:ze>.01?`${u(ze)}h`:"";t.showLabels!==!1&&Wt&&l(_,Wt,Ie+ge/2,Math.max(Z+4*L,nt-2),{align:"center",baseline:"bottom",font:`${11*L}px ui-sans-serif,system-ui`,fill:V,stroke:he})});const Te=me>.01?`~${u(ie+me)}h expected`:`${u(ie)}h total`;t.showLabels!==!1&&l(_,Te,G-4,Z+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 p(){var I,_;try{o=new ResizeObserver(()=>b()),a.value&&o.observe(a.value)}catch{}try{const w=((I=a.value)==null?void 0:I.closest(".layout-item"))||((_=a.value)==null?void 0:_.parentElement);w&&(r=new MutationObserver(()=>b()),r.observe(w,{attributes:!0,attributeFilter:["style","class"]}))}catch{}}Nt(()=>{b(),p(),window.addEventListener("resize",b)}),Tt(()=>{try{window.removeEventListener("resize",b)}catch{}try{o&&a.value&&o.unobserve(a.value)}catch{}try{r&&r.disconnect()}catch{}try{const I=a.value;I&&(I.removeEventListener("mousemove",$),I.removeEventListener("mouseleave",S))}catch{}o=null,r=null}),Oe(()=>t.stacked,()=>b(),{deep:!0}),Oe(()=>t.colorsById,()=>b(),{deep:!0}),Oe(()=>t.showLabels,()=>b()),Oe(()=>t.highlightId,()=>b());function $(I){const _=a.value;if(!_||!n)return;const w=_.getBoundingClientRect(),m=I.clientX-w.left,k=I.clientY-w.top;let A=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&&k>=L.y&&k<=L.y+L.height){A=L.id;break}}A!==s.value&&(s.value=A,b())}function S(){s.value&&(s.value=null,b())}Oe(()=>a.value,(I,_)=>{_&&(_.removeEventListener("mousemove",$),_.removeEventListener("mouseleave",S)),I&&(I.addEventListener("mousemove",$),I.addEventListener("mouseleave",S))},{immediate:!0});function T(I,_){if(!Array.isArray(I)||I.length!==7)return{labels:I,series:_};const w=I.map(Y=>P(Y));if(w.some(Y=>!Y))return{labels:I,series:_};const m=w.map(Y=>O(Y)),k=ai(),A=[];for(let Y=0;Y<7;Y+=1){const le=(k+Y)%7;A.push(le===0?7:le)}if(m.join(",")===A.join(","))return{labels:I,series:_};const R={};if(m.forEach((Y,le)=>{R[Y]=le}),!A.every(Y=>Y in R))return{labels:I,series:_};const L=A.map(Y=>R[Y]),J=L.map(Y=>I[Y]),K=(_||[]).map(Y=>{const le=Array.isArray(Y.data)?Y.data:[],Z=Array.isArray(Y.forecast)?Y.forecast:null,de=L.map(D=>le[D]??0),B=Z?L.map(D=>Z[D]??0):void 0,G={...Y,data:de};return B&&(G.forecast=B),G});return{labels:J,series:K}}function C(I){return Mn(I,{weekday:"short"})||I}function P(I){return It(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"]]),n5={key:0,class:"chart-widget__header"},s5={class:"chart-widget__title"},i5={key:0,class:"chart-widget__subtitle"},l5={key:2,class:"chart-widget__empty"},d5={key:3,class:"chart-widget__legend"},c5=["onMouseenter","onFocus"],u5=Object.freeze(Object.defineProperty({__proto__:null,default:ct(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)||[],g=d.map(f=>(Array.isArray(f==null?void 0:f.data)?f.data:[]).reduce((c,b)=>{const p=Number(b);return c+(Number.isFinite(p)?Math.max(0,p):0)},0)),u=g.reduce((f,c)=>f+c,0)||1;return d.map((f,c)=>{const b=String((f==null?void 0:f.id)??""),p=String((f==null?void 0:f.name)??(f==null?void 0:f.label)??b),$=(f==null?void 0:f.color)||n.value[b]||"#60a5fa",S=g[c]||0,T=Math.round(S/u*100);return{id:b,label:p,color:$,total:S,pctRounded:T}}).filter(f=>f.pctRounded>0).sort((f,c)=>c.total-f.total)});return(d,g)=>(h(),y("div",{class:"card chart-widget",style:He(r.value)},[a.value?(h(),y("div",n5,[i("div",s5,N(o.value),1),d.subtitle?(h(),y("div",i5,N(d.subtitle),1)):ne("",!0)])):ne("",!0),d.stacked?(h(),dt(r5,{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",l5,"No data")),d.showLegend&&l.value.length?(h(),y("ul",d5,[(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:g[0]||(g[0]=v=>s.value=null),onFocus:v=>s.value=u.id,onBlur:g[1]||(g[1]=v=>s.value=null),tabindex:"0"},[i("span",{class:"dot",style:He({background:u.color})},null,4),i("span",null,N(u.label),1)],42,c5))),128))])):ne("",!0)],4))}}),[["__scopeId","data-v-2ce5d838"]])},Symbol.toStringTag,{value:"Module"})),g5={class:"group-row"},p5={colspan:"5"},f5={class:"group-header"},b5={class:"group-main"},v5={class:"group-label"},h5={class:"name"},m5={key:0,class:"group-progress"},y5={key:0,class:"group-meta"},w5={class:"summary"},k5={key:0,class:"summary-percent"},x5={key:1,class:"group-meta"},_5={class:"summary"},C5={key:0},S5=["title"],$5={class:"row-name"},T5={key:0,class:"progress"},M5={class:"num"},A5={class:"num hours-cell"},D5={key:0,class:"hint planned-sub"},L5={class:"num"},E5={class:"num"},N5={key:0,class:"hint"},I5={key:0,class:"empty-row"},O5=ct(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 w=r(_);return{..._,calendarId:w}}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 w=C(_);if(!w)return!1;const m=t.targets||{},k=Number(m[w]);return isFinite(k)&&k>0}function d(_){const w=C(_);if(!w)return 0;const m=t.targets||{},k=Number(m[w]);return isFinite(k)?k:0}function g(_){const w=d(_);return w>0?(Math.round(w*100)/100).toFixed(2):"—"}function u(_,w){return _-w>=0?"delta pos":"delta neg"}function v(_,w){const m=_-w,k=Math.abs(Math.round(m*100)/100).toFixed(2);return(m>=0?"+":"-")+k+"h"}function f(_,w){return Math.max(0,Math.min(100,w>0?_/w*100:0)).toFixed(0)+"%"}function c(_,w){return Math.max(0,Math.min(100,w>0?_/w*100:0))}function b(_){const w=C(_);if(!w)return 0;const m=t.todayHours||{},k=Number(m[w]??0);return Number.isFinite(k)?Math.max(0,k):0}function p(_){const w=d(r(_)),m=b(r(_));if(w<=0||m<=1e-4)return null;const k=Math.max(2,Math.min(120,m/w*100)),A=c(_.total_hours,w),R=Math.max(0,A-k);return{pct:k,left:R}}function $(_){return!!_.summary&&Number(_.summary.targetHours??0)>0}function S(_){if(!_.summary)return 0;const w=Number(_.summary.actualHours??0),m=Number(_.summary.targetHours??0);return c(w,m)}function T(_){if(!_.summary)return null;const w=Number(_.summary.targetHours??0),m=Number(_.todayHours??0);if(w<=0||m<=1e-4)return null;const k=Math.max(2,Math.min(120,m/w*100)),A=S(_),R=Math.max(0,A-k);return{pct:k,left:R}}function C(_){return _==null?"":String(_)}function P(_){const w=_.summary;if(!w)return`${_.rows.length} calendar${_.rows.length===1?"":"s"}`;const m=t.n2(w.actualHours),k=Number(w.plannedHours??0);return w.targetHours>0?`${m} h / ${t.n2(w.targetHours)} h${k>0?` · +${t.n2(k)} h planned`:""}`:`${m} h${k>0?` · +${t.n2(k)} h planned`:""}`}function O(_){const w=_.summary;return!w||w.targetHours<=0?"":`${Math.round(w.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(_,w)=>(h(),y("table",null,[w[1]||(w[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)),w[2]||(w[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",g5,[i("td",p5,[i("div",f5,[i("div",b5,[i("div",v5,[i("span",{class:"dot",style:He({background:m.color||"var(--brand)"})},null,4),i("span",h5,N(m.label),1)]),$(m)?(h(),y("div",m5,[i("div",{class:"group-progress__bar",style:He({width:S(m)+"%",background:m.color||void 0})},null,4),T(m)?(h(),y("div",{key:0,class:"group-progress__today",style:He({left:T(m).left+"%",width:T(m).pct+"%",background:m.color||"var(--brand)"})},null,4)):ne("",!0)])):ne("",!0)]),m.summary?(h(),y("div",y5,[i("span",w5,N(P(m)),1),O(m)?(h(),y("span",k5,N(O(m)),1)):ne("",!0),m.summary.statusLabel?(h(),y("span",{key:1,class:ke(["badge",I(m.summary.status)])},N(m.summary.statusLabel),3)):ne("",!0)])):(h(),y("div",x5,[i("span",_5,[Ge(N(m.rows.length)+" calendar",1),m.rows.length!==1?(h(),y("span",C5,"s")):ne("",!0)])]))])])]),(h(!0),y(ye,null,Ne(m.rows,k=>(h(),y("tr",{key:s(k)},[i("td",null,[i("div",{class:"cell",title:n(k)},[i("div",$5,N(n(k)),1),l(r(k))&&d(r(k))>0?(h(),y("div",T5,[i("div",{class:"progress-bar",style:He({width:c(k.total_hours,d(r(k)))+"%",background:m.color||void 0})},null,4),p(k)?(h(),y("div",{key:0,class:"progress-today",style:He({left:p(k).left+"%",width:p(k).pct+"%",background:m.color||"var(--brand)"})},null,4)):ne("",!0)])):ne("",!0)],8,S5)]),i("td",M5,N(k.events_count),1),i("td",A5,[i("div",null,N(_.n2(k.total_hours)),1),Number(k.future_hours??0)>1e-4?(h(),y("div",D5,"+"+N(_.n2(k.future_hours))+" planned",1)):ne("",!0)]),i("td",L5,N(g(r(k))),1),i("td",E5,[l(r(k))?(h(),y(ye,{key:0},[i("span",{class:ke(u(k.total_hours,d(r(k))))},N(v(k.total_hours,d(r(k)))),3),d(r(k))>0?(h(),y("span",N5," ("+N(f(k.total_hours,d(r(k))))+")",1)):ne("",!0)],64)):(h(),y(ye,{key:1},[Ge("—")],64))])]))),128)),m.rows.length?ne("",!0):(h(),y("tr",I5,[...w[0]||(w[0]=[i("td",{colspan:"5",class:"empty"},"No calendars assigned",-1)])]))],64))),128))])]))}}),[["__scopeId","data-v-bade1032"]]),B5={key:0,class:"table-widget__header"},H5={class:"table-widget__title"},F5={key:0,class:"table-widget__subtitle"},P5={key:1,class:"table-widget__context"},W5={key:0,class:"table-widget__context-text"},z5={key:1,class:"table-widget__context-text"},R5={key:2,class:"table-widget__context"},j5={key:4,class:"table-widget__empty"},V5=Object.freeze(Object.defineProperty({__proto__:null,default:ct(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",B5,[i("div",H5,N(o.value),1),s.subtitle?(h(),y("div",F5,N(s.subtitle),1)):ne("",!0)])):ne("",!0),s.mode==="single_goal"?(h(),y("div",P5,[l[0]||(l[0]=i("span",{class:"table-widget__badge"},"Single Goal",-1)),s.totalTarget>0?(h(),y("span",W5,"Shared total target: "+N(n(s.totalTarget))+" h",1)):(h(),y("span",z5,"Shared total goal without per-calendar targets"))])):s.mode==="category_and_calendar_goals"?(h(),y("div",R5,[...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(),dt(O5,{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",j5,"No data"))],4))}}),[["__scopeId","data-v-2bdf226f"]])},Symbol.toStringTag,{value:"Module"})),U5={key:0,class:"calendar-stats__header"},G5={class:"calendar-stats__title"},K5={class:"calendar-stats__subtitle"},q5={key:1,class:"calendar-stats__state"},J5={key:2,class:"calendar-stats__rows"},Z5={class:"calendar-stats__label"},Y5={class:"calendar-stats__hint"},X5={class:"calendar-stats__value"},Q5=Object.freeze(Object.defineProperty({__proto__:null,default:ct(Ve({__name:"CalendarStatsWidget",props:{byCal:{},rangeLabel:{},metrics:{},title:{},cardBg:{},showHeader:{type:Boolean}},setup(e){const t=e,a=x(()=>V1(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",U5,[i("div",null,[i("div",G5,N(o.value),1),i("div",K5,"Showing "+N(r.value),1)]),d[0]||(d[0]=i("div",{class:"calendar-stats__scope"},"Selected calendars",-1))])):ne("",!0),a.value.length?(h(),y("ul",J5,[(h(!0),y(ye,null,Ne(a.value,g=>(h(),y("li",{key:g.key,class:"calendar-stats__row"},[i("div",null,[i("div",Z5,N(g.label),1),i("div",Y5,N(g.hint),1)]),i("div",X5,N(g.value),1)]))),128))])):(h(),y("div",q5,"No metrics configured"))],4))}}),[["__scopeId","data-v-3cc8996b"]])},Symbol.toStringTag,{value:"Module"})),e3={key:0,class:"dayoff-card__header"},t3=["title"],a3={class:"dayoff-tile__label"},o3={class:"dayoff-tile__value"},r3={class:"dayoff-tile__meta"},n3={key:2,class:"hint"},s3=Object.freeze(Object.defineProperty({__proto__:null,default:ct(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(D=>{const V=Number((D==null?void 0:D.offset)??0)||0;Y.set(V,{offset:V,label:(D==null?void 0:D.label)??"",from:(D==null?void 0:D.from)??"",to:(D==null?void 0:D.to)??"",totalDays:Number((D==null?void 0:D.totalDays)??(D==null?void 0:D.total_days)??0)||0,daysOff:Number((D==null?void 0:D.daysOff)??(D==null?void 0:D.days_off)??0)||0,daysWorked:Number((D==null?void 0:D.daysWorked)??(D==null?void 0:D.days_worked)??0)||0})});const le=a.value,Z=o.value,de=[],B=Y.get(0)??{offset:0,label:Z,from:"",to:"",totalDays:0,daysOff:0,daysWorked:0};de.push(B);const G=s.value;for(let D=1;D<=G;D+=1){const V=Y.get(D)??{offset:D,label:`-${D} ${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),Z=Math.max(0,Math.min(le,Number(Y.daysOff)||0)),de=le>0?Z/le:0;return{...Y,label:w(Y),share:de}});return t.reverseOrder===!0?K:K.slice().reverse()}),g=x(()=>t.title||"Days off trend"),u=x(()=>({background:t.cardBg||void 0})),v=x(()=>t.showHeader!==!1),f=oe(null),c=oe(0),b=x(()=>{const K=m(t.toneLowColor)||"#dc2626",Y=m(t.toneHighColor)||"#16a34a";return{low:K,high:Y}}),p=x(()=>{const K=Number(c.value)||0;return K<=0?!1:K<d.value.length*124});let $=null;function S(){var K;c.value=((K=f.value)==null?void 0:K.clientWidth)||0}Nt(async()=>{await Zt(),S(),!(typeof ResizeObserver!="function"||!f.value)&&($=new ResizeObserver(()=>S()),$.observe(f.value))}),Tt(()=>{$==null||$.disconnect(),$=null});function T(K){const Y=Math.max(0,Math.min(1,K));return`${Math.round(Y*100)}% off`}function C(K){const Y=J(Number(K.share)||0,0,1),le=n.value==="more_off_warning"?1-Y:Y,Z=k(b.value.low,b.value.high,le),de=L(Z);return{"--tile-bg":de.background,"--tile-fg":de.color,background:de.background,color:de.color}}function P(K){return K?It(K):null}function O(K,Y){return!K||!Y?"":Ar(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=P(K.from)||P(K.to);return Y?a.value==="mo"?`MONTH ${Y.getUTCMonth()+1}`:`WEEK ${eo(Y)}`:I(K.offset,K.label)}function w(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 k(K,Y,le=.5){const Z=A(K),de=A(Y);if(!Z||!de)return K;const B=J(le,0,1),G=J(Math.round(Z.r+(de.r-Z.r)*B),0,255),D=J(Math.round(Z.g+(de.g-Z.g)*B),0,255),V=J(Math.round(Z.b+(de.b-Z.b)*B),0,255);return`rgb(${G}, ${D}, ${V})`}function A(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:J(Number(le[1]),0,255),g:J(Number(le[2]),0,255),b:J(Number(le[3]),0,255)};const Z=Y.replace("#","");if(Z.length===3){const[de,B,G]=Z.split("").map(D=>parseInt(D.repeat(2),16));return{r:de,g:B,b:G}}if(Z.length===6){const de=parseInt(Z.slice(0,2),16),B=parseInt(Z.slice(2,4),16),G=parseInt(Z.slice(4,6),16);return{r:de,g:B,b:G}}return null}function R(K){const Y=A(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 J(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",e3,[i("span",null,N(g.value),1)])):ne("",!0),d.value.length?(h(),y("div",{key:1,ref_key:"heatmapEl",ref:f,class:ke(["dayoff-heatmap",{"dayoff-heatmap--row":!p.value,"dayoff-heatmap--stacked":p.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} · ${T(le.share)}`},[i("div",a3,N(le.label),1),i("div",o3,N(T(le.share)),1),i("div",r3,N(le.daysOff)+" off · "+N(le.daysWorked)+" on ",1)],14,t3))),128))],6)):(h(),y("div",n3,"No day-off history for this range."))],4))}}),[["__scopeId","data-v-9c0ed5c7"]])},Symbol.toStringTag,{value:"Module"})),i3={key:0,class:"deck-panel__header"},l3={class:"deck-panel__heading"},d3={class:"deck-panel__title"},c3={key:0,class:"deck-panel__subtitle"},u3={key:1,class:"deck-panel__subtitle"},g3={class:"deck-panel__actions"},p3={key:0,class:"deck-panel__count"},f3=["href"],b3=["disabled"],v3={class:"deck-create__field deck-create__field--title"},h3=["disabled"],m3={class:"deck-create__field"},y3=["disabled"],w3=["value"],k3={class:"deck-create__field"},x3=["disabled"],_3={value:0,disabled:""},C3=["value"],S3=["disabled"],$3={key:0,class:"deck-create__error"},T3={key:2,class:"deck-panel__filters",role:"group","aria-label":"Deck card filters"},M3=["aria-pressed","disabled","title","draggable","onClick","onDragstart","onDragover","onDrop"],A3={class:"deck-filter-label"},D3={class:"deck-filter-label-main"},L3={key:0,class:"deck-filter-label-context"},E3={key:0,class:"deck-filter-count"},N3={key:0,class:"deck-panel__loading"},I3={key:0,class:"deck-panel__error"},O3=["data-idx"],B3={key:0,class:"deck-card__row"},H3={key:0,class:"deck-card__time"},F3={key:1,class:"deck-card__time"},P3={class:"deck-card__title"},W3={class:"deck-card__meta"},z3={class:"deck-card__stack"},R3={key:2,class:"deck-card__labels"},j3={key:3,class:"deck-card__assignees"},V3={class:"deck-card__status-row"},U3={key:0,class:"deck-card__time"},G3={key:1,class:"deck-card__time"},K3={class:"deck-card__title"},q3={class:"deck-card__meta"},J3={class:"deck-card__stack"},Z3={key:0,class:"deck-card__labels"},Y3={key:1,class:"deck-card__assignees"},X3=ct(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,H){if(!U)return H;const j=U.trim();return/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(j)||/^[a-zA-Z]+$/.test(j)?j:H}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)),g=x(()=>o.cards.length>s.value),u=x(()=>o.title||"Deck cards"),v=x(()=>({background:o.cardBg||void 0})),f=x(()=>o.showHeader!==!1),c=x(()=>o.filtersEnabled!==!1&&p.value.length>1),b=x(()=>c.value&&o.canFilterMine!==!1&&o.allowMineOverride!==!1),p=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}]),$=x(()=>o.orderableValues&&o.orderableValues.length?o.orderableValues:p.value.map(U=>U.value).filter(U=>!String(U).startsWith("custom_"))),S=oe(null),T=oe(!1),C=oe(!1),P=oe(""),O=oe(""),I=oe(0),_=oe(0),w=oe([]),m=oe(!1),k=x(()=>o.boards||[]);Oe(k,U=>{!I.value&&U.length&&(I.value=U[0].id)},{immediate:!0}),Oe(I,async U=>{if(_.value=0,w.value=[],!!U){m.value=!0;try{w.value=await mw(U),w.value.length&&(_.value=w.value[0].id)}catch{P.value="Could not load Deck stacks."}finally{m.value=!1}}},{immediate:!0});async function A(){var U;if(!(!O.value||!_.value||C.value)){C.value=!0,P.value="";try{await yw(O.value,_.value),O.value="",T.value=!1,await((U=o.onCardsChanged)==null?void 0:U.call(o))}catch{P.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),J=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(),D()}),Oe(l,()=>{G(),D()}),Oe(()=>o.cards,()=>{K.value=0,l.value=!1,G(),D()},{deep:!0}),Nt(()=>{D()}),Tt(()=>{G()});function le(U,H){!o.editable||!$.value.includes(U)||(S.value=U,H.dataTransfer&&(H.dataTransfer.effectAllowed="move",H.dataTransfer.setData("text/plain",String(U))))}function Z(U){!o.editable||!S.value||$.value.includes(U)}function de(U){if(!o.editable||!S.value||!$.value.includes(U))return;const H=$.value.slice(),j=H.indexOf(S.value),ce=H.indexOf(U);if(j<0||ce<0||j===ce){S.value=null;return}if(H.splice(j,1),H.splice(ce,0,S.value),S.value=null,H.length){const fe=p.value.map(W=>W.value).filter(W=>String(W).startsWith("custom_")),E=[...H,...fe];o.orderableValues&&o.orderableValues.length?r("reorder:filters",H):r("reorder:filters",E)}}function B(){S.value=null}function G(){J.value&&(clearInterval(J.value),J.value=null)}function D(){!o.autoScroll||!l.value||d.value.length<=1||(G(),J.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 H=L.value.querySelector(`[data-idx="${U}"]`);if(!H)return;const j=H.offsetTop-L.value.offsetTop;R.value.scrollTo({top:j,behavior:"smooth"})}const he=x(()=>{if(!o.lastFetchedAt)return"";const U=ri(o.lastFetchedAt);return U?An(U,{weekday:"short",month:"short",day:"numeric"}):""});function Me(U){return An(U,{weekday:"short",month:"short",day:"numeric"})||U}function ae(U){return U==="done"?"Done":U==="archived"?"Archived":"Active"}return(U,H)=>(h(),y("div",{class:ke(["card deck-panel",{"deck-panel--compact":o.compact}]),style:He(v.value)},[f.value?(h(),y("div",i3,[i("div",l3,[i("div",d3,N(u.value),1),he.value?(h(),y("div",c3," Updated "+N(he.value),1)):(h(),y("div",u3," Showing "+N(U.rangeLabel.toLowerCase())+" selection ",1))]),i("div",g3,[U.showCount?(h(),y("div",p3,N(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,f3)):ne("",!0),i("button",{type:"button",class:"deck-panel__create",onClick:H[0]||(H[0]=j=>T.value=!T.value)},N(T.value?"Cancel":"+ Add card"),1),i("button",{type:"button",class:"deck-panel__refresh",onClick:H[1]||(H[1]=j=>U.$emit("refresh")),disabled:U.loading}," Refresh ",8,b3)])])):ne("",!0),T.value?(h(),y("form",{key:1,class:"deck-create",onSubmit:Xe(A,["prevent"])},[i("label",v3,[H[6]||(H[6]=i("span",null,"New card",-1)),uo(i("input",{"onUpdate:modelValue":H[2]||(H[2]=j=>O.value=j),disabled:C.value,required:"",maxlength:"255",placeholder:"What needs doing?"},null,8,h3),[[$n,O.value,void 0,{trim:!0}]])]),i("label",m3,[H[8]||(H[8]=i("span",null,"Board",-1)),uo(i("select",{"onUpdate:modelValue":H[3]||(H[3]=j=>I.value=j),disabled:C.value||!k.value.length},[H[7]||(H[7]=i("option",{value:0,disabled:""},"Select board",-1)),(h(!0),y(ye,null,Ne(k.value,j=>(h(),y("option",{key:j.id,value:j.id},N(j.title),9,w3))),128))],8,y3),[[gc,I.value,void 0,{number:!0}]])]),i("label",k3,[H[9]||(H[9]=i("span",null,"Stack",-1)),uo(i("select",{"onUpdate:modelValue":H[4]||(H[4]=j=>_.value=j),disabled:C.value||!w.value.length},[i("option",_3,N(m.value?"Loading stacks…":"Select stack"),1),(h(!0),y(ye,null,Ne(w.value,j=>(h(),y("option",{key:j.id,value:j.id},N(j.title),9,C3))),128))],8,x3),[[gc,_.value,void 0,{number:!0}]])]),i("button",{class:"deck-create__submit",type:"submit",disabled:C.value||!O.value||!_.value},N(C.value?"Saving…":"Create card"),9,S3),P.value?(h(),y("p",$3,N(P.value),1)):ne("",!0)],32)):ne("",!0),c.value?(h(),y("div",T3,[(h(!0),y(ye,null,Ne(p.value,j=>(h(),y("button",{key:j.value,type:"button",class:ke(["deck-filter-btn",{active:n.value===j.value,"is-draggable":o.editable&&$.value.includes(j.value)}]),"aria-pressed":n.value===j.value,disabled:j.mine&&!b.value,title:j.contextLabel?`${j.label} · ${j.contextLabel}`:j.label,draggable:o.editable&&$.value.includes(j.value),onClick:ce=>U.$emit("update:filter",j.value),onDragstart:ce=>le(j.value,ce),onDragover:Xe(ce=>Z(j.value),["prevent"]),onDrop:Xe(ce=>de(j.value),["prevent"]),onDragend:B},[i("span",A3,[i("span",D3,N(j.label),1),j.contextLabel?(h(),y("span",L3,[i("span",{class:"deck-filter-board-dot",style:He({backgroundColor:j.contextColor||"var(--line)"})},null,4),Ge(" "+N(j.contextLabel),1)])):ne("",!0)]),typeof j.count=="number"?(h(),y("span",E3,N(j.count),1)):ne("",!0)],42,M3))),128))])):ne("",!0),i("div",{class:"deck-panel__body",ref_key:"bodyEl",ref:R},[U.loading?(h(),y("div",N3,[Re(M(Yf),{size:20}),H[10]||(H[10]=i("span",null,"Loading Deck cards…",-1))])):(h(),y(ye,{key:1},[U.error?(h(),y("div",I3,N(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",B3,[i("span",{class:ke(["deck-card__status",j.status])},N(ae(j.status)),3),j.match==="due"&&j.due?(h(),y("span",H3," Due "+N(Me(j.due)),1)):j.done?(h(),y("span",F3," Completed "+N(Me(j.done)),1)):ne("",!0),i("span",P3,N(j.title),1),i("span",W3,[i("span",{class:"deck-card__board",style:He({borderColor:a(j.boardColor,"var(--brand)")})},N(j.boardTitle),5),i("span",z3,N(j.stackTitle),1)]),j.labels.length?(h(),y("span",R3,[(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)")})},N(fe.title),5))),128))])):ne("",!0),j.assignees.length?(h(),y("span",j3,[H[11]||(H[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"},N(fe.displayName||fe.uid),1))),128))])):ne("",!0)])):(h(),y(ye,{key:1},[i("div",V3,[i("span",{class:ke(["deck-card__status",j.status])},N(ae(j.status)),3),j.match==="due"&&j.due?(h(),y("span",U3," Due "+N(Me(j.due)),1)):j.done?(h(),y("span",G3," Completed "+N(Me(j.done)),1)):ne("",!0)]),i("div",K3,N(j.title),1),i("div",q3,[i("span",{class:"deck-card__board",style:He({borderColor:a(j.boardColor,"var(--brand)")})},N(j.boardTitle),5),i("span",J3,N(j.stackTitle),1)]),j.labels.length?(h(),y("div",Z3,[(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)")})},N(fe.title),5))),128))])):ne("",!0),j.assignees.length?(h(),y("div",Y3,[H[12]||(H[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"},N(fe.displayName||fe.uid),1))),128))])):ne("",!0)],64))],8,O3))),128))],512)):(h(),dt(M(Zf),{key:1,name:"No Deck cards",description:`No cards matched this ${U.rangeLabel.toLowerCase()}. Confirm Deck due dates or rerun seeding.`},null,8,["description"])),g.value?(h(),y("button",{key:3,type:"button",class:"deck-panel__show-all",onClick:H[5]||(H[5]=j=>l.value=!l.value)},N(l.value?"Show fewer cards":`Show all ${U.cards.length} cards`),1)):ne("",!0)],64))],512)],6))}}),[["__scopeId","data-v-647b107d"]]),Q3=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({}),Nt(async()=>{try{o.value=await $u()}catch{o.value=[]}});const r=x(()=>ho(t.cards||[],{boardIds:t.boardIds,stackIds:t.stackIds,includeArchived:!0,includeCompleted:!0})),n=x(()=>ho(r.value,{includeArchived:t.includeArchived!==!1,includeCompleted:t.includeCompleted!==!1})),s=x(()=>t.autoTagsEnabled===!1?[]:pi(n.value)),l=x(()=>Array.isArray(t.autoTagSelection)?new Set(t.autoTagSelection.map(w=>String(w))):null),d=x(()=>{if(t.autoTagsEnabled===!1)return[];const w=s.value;if(!w.length)return[];const m=l.value;return m?w.filter(k=>m.has(k.value)):w}),g=x(()=>(t.customFilters||[]).map(w=>`custom_${w.id}`)),u=x(()=>{const w=t.filters&&t.filters.length?t.filters:a,m=d.value.map(k=>k.value);return[...w,...g.value,...m]}),v=x(()=>{const w=t.includeArchived!==!1,m=n.value,k=new Map;return u.value.forEach(A=>{k.set(A,nu(A,m,{uid:t.uid,mineMode:t.mineMode||"assignee",from:t.from,to:t.to,includeCompleted:t.includeCompleted!==!1,includeArchivedInDone:w,customFilters:t.customFilters||[]}).length)}),k}),f=oe(null),c=x(()=>f.value?f.value:(t.filters&&t.filters.length?t.filters:a).filter(Boolean)),b=x(()=>{const w=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"},k=v.value,A=w.map(J=>({value:J,label:m[J]||J,mine:J.endsWith("_mine")||J==="mine",count:k.get(J)??0})),R=(t.customFilters||[]).filter(J=>J&&J.id&&J.label).map(J=>({value:`custom_${J.id}`,label:J.label,mine:!1,count:k.get(`custom_${J.id}`)??0})),L=d.value.map(J=>({value:J.value,label:J.label,mine:!1,count:k.get(J.value)??J.count??0,contextLabel:J.contextLabel,contextColor:J.contextColor}));return[...A,...R,...L]}),p=x(()=>{const w=Number(t.minFilterCount??0);return Number.isFinite(w)?Math.max(0,Math.trunc(w)):0}),$=x(()=>p.value<=0?b.value:b.value.filter(w=>Number(w.count??0)>=p.value)),S=oe(O());Oe(()=>t.defaultFilter,()=>{S.value=O()}),Oe(()=>$.value.map(w=>w.value).join("|"),()=>{const w=$.value;w.length&&(w.some(m=>m.value===S.value)||(S.value=w[0].value))});const T=x(()=>$.value.length>1),C=x(()=>t.allowMine!==!1&&!!(t.uid||"").trim()),P=x(()=>{const w=t.includeArchived!==!1||S.value.startsWith("archived"),m=ho(r.value,{includeArchived:w,includeCompleted:t.includeCompleted!==!1});return nu(S.value,m,{uid:t.uid,mineMode:t.mineMode||"assignee",from:t.from,to:t.to,includeCompleted:t.includeCompleted!==!1,includeArchivedInDone:w,customFilters:t.customFilters||[]})});function O(){const w=$.value.map(k=>k.value),m=t.defaultFilter||w[0]||"all";return w.includes(m)?m:w[0]||"all"}function I(w){S.value=w}function _(w){var m;w.length&&(f.value=[...w],(m=t.onUpdateFilters)==null||m.call(t,w),w.includes(S.value)||(S.value=w[0]))}return(w,m)=>(h(),dt(X3,{cards:P.value,loading:w.loading,"range-label":w.rangeLabel,"last-fetched-at":w.lastFetchedAt,"deck-url":w.deckUrl,error:w.error,filter:S.value,"filters-enabled":T.value,"can-filter-mine":C.value,"allow-mine-override":C.value,"filter-options":$.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]=k=>w.$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"})),eS={key:0,class:"deck-stats-widget__header"},tS={class:"deck-stats-widget__title"},aS={class:"deck-stats-widget__subtitle"},oS={key:0,class:"deck-stats-widget__scope"},rS={key:1,class:"deck-stats-widget__state"},nS={key:2,class:"deck-stats-widget__state deck-stats-widget__state--error"},sS={key:3,class:"deck-stats-widget__state"},iS={key:4,class:"deck-stats-widget__rows"},lS={class:"deck-stats-widget__meta"},dS={class:"deck-stats-widget__label"},cS={class:"deck-stats-widget__hint"},uS={class:"deck-stats-widget__value"},gS=Object.freeze(Object.defineProperty({__proto__:null,default:ct(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(()=>s0(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,g)=>(h(),y("div",{class:"card deck-stats-widget",style:He(o.value)},[l.value?(h(),y("div",eS,[i("div",null,[i("div",tS,N(r.value),1),i("div",aS,"Showing "+N(n.value),1)]),s.value?(h(),y("div",oS,N(s.value),1)):ne("",!0)])):ne("",!0),d.loading?(h(),y("div",rS," Loading Deck stats… ")):d.error?(h(),y("div",nS,N(d.error),1)):a.value.length?(h(),y("ul",iS,[(h(!0),y(ye,null,Ne(a.value,u=>(h(),y("li",{key:u.key,class:"deck-stats-widget__row"},[i("div",lS,[i("div",dS,N(u.label),1),i("div",cS,N(u.hint),1)]),i("div",uS,N(u.value),1)]))),128))])):(h(),y("div",sS," No metrics configured "))],4))}}),[["__scopeId","data-v-cb54adec"]])},Symbol.toStringTag,{value:"Module"}));function Yn(e,t){return Ve({name:e,inheritAttrs:!1,setup(a,{attrs:o}){return()=>ha("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=>ha("path",{d:r})))}})}const pS=Yn("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"]),fS=Yn("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"]),bS=Yn("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"]),vS=Yn("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"]),hS={key:0,class:"targets-fireframe","aria-hidden":"true"},mS={key:1,class:"targets-header"},yS={class:"targets-header__title"},wS={key:0,class:"hint"},kS={key:2,class:"targets-hustle"},xS={class:"targets-hustle__badge"},_S={class:"targets-hustle__orb","aria-hidden":"true"},CS={class:"targets-main"},SS={class:"line total-line"},$S={class:"value"},TS={key:0,class:"line"},MS={key:1,class:"line"},AS={key:2,class:"line"},DS={key:3,class:"line forecast"},LS={class:"hint"},ES={key:3,class:"targets-badges"},NS={key:4,class:"targets-categories"},IS={class:"cat-top"},OS={class:"cat-label"},BS={class:"name"},HS={key:0,class:"unassigned-hint",title:"Hours from calendars not assigned to a category. Open Settings → Categories to assign them."},FS={class:"cat-meta"},PS={class:"percent"},WS={class:"bar"},zS={class:"bar-track"},RS={class:"cat-metrics"},jS={class:"hint"},VS={key:1,class:"hint today-inline"},US={key:2,class:"hint planned-inline"},GS={key:3,class:"hint"},KS={key:0,class:"cat-footer"},qS={class:"hint"},JS=Object.freeze(Object.defineProperty({__proto__:null,default:ct(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)??T("total","Total")}),o=x(()=>t.neverFinishedMode===!0),r=x(()=>t.showHeader!==!1),n=oe(0),s=oe(.42);let l=null;Nt(()=>{s.value=(Date.now()%997+1)/998,l=setInterval(()=>{n.value=(n.value+1)%24},780)}),Tt(()=>{l&&clearInterval(l)});const d=[{id:"run",label:"Run",icon:pS},{id:"swim",label:"Swim",icon:fS},{id:"ride",label:"Ride",icon:bS},{id:"lift",label:"Lifting",icon:vS}],g=x(()=>n.value%d.length),u=x(()=>{var w;return Array.isArray(t.groups)?t.groups.map(m=>({id:m.id,label:m.label,summary:m.summary??T(m.id,m.label),color:m.color,rows:m.rows,todayHours:m.todayHours})):(((w=t.summary)==null?void 0:w.categories)??[]).map(m=>({id:m.id,label:m.label,summary:m,color:void 0,rows:[]}))}),v=x(()=>({background:t.cardBg||void 0})),f=x(()=>p(a.value,"pace")),c=x(()=>u.value.map(_=>{const w=_.summary??T(_.id,_.label),m=Number(_.todayHours??0),k=w.targetHours,A=Math.max(0,w.actualHours-k),R=Math.min(A,m),L=m>0,J=k>0?m/k*100:0,K=p(w,"badge"),Y=K.progress;return{id:_.id,label:_.label||w.label,actualHours:w.actualHours,plannedHours:Number(w.plannedHours??0),targetHours:k,percent:K.percent,percentText:K.percentText,deltaHours:w.deltaHours,needPerDay:w.needPerDay,daysLeft:w.daysLeft,calendarPercent:w.calendarPercent,gap:w.gap,status:w.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&&k>0?C(J,2,200):0,todayRight:Math.max(0,100-Y),todayText:R>0?`Today ${b(m)} (+${b(R)})`:`Today ${b(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 b(_){if(!isFinite(_))return"0";const w=Math.round(_*10)/10;return Math.abs(w-Math.round(w))<.05?String(Math.round(w)):w.toFixed(1)}function p(_,w){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 A=Math.min(1,Math.max(0,(m-80)/20)),R=80.5+A*7,L=90.5+A*8,J=P(Math.min(98.8,R+s.value*(L-R)));return{percent:J,percentText:J.toFixed(0),progress:C(J,80,99),badgeLabel:"Never Finished",paceLabel:w==="pace"?"Stay Hard":"Never Finished",statusClass:"status-endless",isEndless:!0}}function $(_){return!isFinite(_)||Math.abs(_)<.005?"0.0":(_>=0?"+":"")+b(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 T(_,w){return{id:_,label:w,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(_,w,m){return!isFinite(_)||_<w?w:_>m?m:_}function P(_){return Math.round(_*10)/10}function O(_){return _==="momentum"?"Momentum":"Linear"}function I(_,w=.5){const m=/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(_||"");if(!m)return _;const k=parseInt(m[1],16),A=parseInt(m[2],16),R=parseInt(m[3],16),L=Math.max(0,Math.min(1,w));return`rgb(${Math.round(k+(255-k)*L)},${Math.round(A+(255-A)*L)},${Math.round(R+(255-R)*L)})`}return(_,w)=>(h(),y("div",{class:ke(["card targets-card",{"targets-card--endless":o.value}]),style:He(v.value)},[o.value?(h(),y("div",hS)):ne("",!0),r.value?(h(),y("div",mS,[i("div",yS,[i("strong",null,N(_.title||"Targets"),1)]),a.value.targetHours>0?(h(),y("span",wS,N(f.value.percentText)+"%",1)):ne("",!0)])):ne("",!0),o.value?(h(),y("div",kS,[i("div",xS,[i("div",_S,[(h(),y(ye,null,Ne(d,(m,k)=>i("div",{key:m.id,class:ke(["targets-hustle__scene",{"is-active":k===g.value}])},[(h(),dt(nd(m.icon),{class:"targets-hustle__icon","aria-hidden":"true"}))],2)),64))])])])):ne("",!0),i("div",CS,[i("div",SS,[i("span",$S,[i("strong",null,N(b(a.value.actualHours)),1),Ge(" / "+N(b(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"])}," Δ "+N($(a.value.deltaHours))+"h ",3)):ne("",!0)]),a.value.plannedHours>0?(h(),y("div",TS," Planned "+N(b(a.value.plannedHours))+" h upcoming ",1)):ne("",!0),_.config.ui.showNeedPerDay&&a.value.targetHours>0?(h(),y("div",MS," Days left "+N(a.value.daysLeft)+" • Need "+N(b(a.value.needPerDay))+" h/day ",1)):ne("",!0),_.showPace&&a.value.targetHours>0?(h(),y("div",AS,[Ge(" Pace: "+N(f.value.percentText)+"% vs "+N(a.value.calendarPercent.toFixed(0))+"% → ",1),i("span",{class:ke(["status-label",f.value.statusClass])},N(f.value.paceLabel),3)])):ne("",!0),_.showForecast?(h(),y("div",DS,[Ge(" Forecast: "+N(_.summary.forecast.text)+" ",1),i("span",LS," Linear "+N(b(_.summary.forecast.linear))+"h · Momentum "+N(b(_.summary.forecast.momentum))+"h · Primary: "+N(O(_.summary.forecast.primaryMethod)),1)])):ne("",!0)]),_.config.ui.badges&&a.value.targetHours>0?(h(),y("div",ES,[i("span",{class:ke(["badge",f.value.statusClass])},N(f.value.badgeLabel),3)])):ne("",!0),_.config.ui.showCategoryBlocks&&c.value.length?(h(),y("div",NS,[(h(!0),y(ye,null,Ne(c.value,m=>(h(),y("div",{class:"category",key:m.id},[i("div",IS,[i("div",OS,[i("span",{class:"dot",style:He({background:m.color||"var(--brand)"})},null,4),i("span",BS,N(m.label),1),m.isUnassigned?(h(),y("span",HS,"ⓘ")):ne("",!0)]),i("div",FS,[i("span",PS,N(m.percentText)+"%",1),_.config.ui.badges&&m.targetHours>0?(h(),y("span",{key:0,class:ke(["badge",m.statusClass])},N(m.badgeLabel),3)):ne("",!0)])]),i("div",{class:ke(["cat-progress",{"is-endless":m.isEndless}])},[i("div",WS,[i("div",zS,[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",RS,[i("strong",null,N(b(m.actualHours))+"h",1),i("span",jS,"/ "+N(b(m.targetHours))+"h",1),_.showDelta&&m.targetHours>0?(h(),y("span",{key:0,class:ke(["delta",m.deltaHours>=0?"pos":"neg"])}," Δ "+N($(m.deltaHours))+"h ",3)):ne("",!0),m.todayHours>0?(h(),y("span",VS,N(m.todayText),1)):ne("",!0),m.plannedHours>0?(h(),y("span",US," Planned "+N(b(m.plannedHours))+"h ",1)):ne("",!0),_.config.ui.showNeedPerDay&&m.targetHours>0?(h(),y("span",GS," Need "+N(b(m.needPerDay))+"h/day · "+N(m.daysLeft)+" days left ",1)):ne("",!0)]),m.calendarCount>0?(h(),y("div",KS,[i("span",qS,N(m.calendarCount)+" "+N(m.calendarLabel),1)])):ne("",!0)]))),128))])):ne("",!0)],6))}}),[["__scopeId","data-v-6aab0d1d"]])},Symbol.toStringTag,{value:"Module"})),ZS={key:0,class:"time-summary-firstline"},YS={key:1,class:"time-summary-daily"},XS={key:0,class:"time-summary-hero"},QS={class:"time-summary-hero__value"},e6={key:0,class:"time-summary-hero__planned"},t6={class:"time-summary-hero__side"},a6={key:0},o6=["onClick"],r6={class:"time-summary-tab-panel"},n6={key:0,class:"time-summary-kpis"},s6={class:"time-summary-kpi time-summary-kpi--compare"},i6={key:0},l6={class:"time-summary-kpi time-summary-kpi--compare"},d6={class:"time-summary-kpi"},c6={class:"time-summary-kpi"},u6={class:"time-summary-kpi"},g6={class:"time-summary-kpi"},p6={key:1,class:"time-summary-lanes"},f6={class:"time-summary-section-head"},b6={class:"name"},v6={class:"value"},h6={key:0,class:"time-summary-more"},m6={key:2,class:"time-summary-lanes"},y6={class:"time-summary-section-head"},w6={class:"name"},k6={key:0,class:"unassigned-hint",title:"Hours from calendars not assigned to a category. Open Settings → Categories to assign them."},x6={class:"value"},_6={key:0,class:"time-summary-more"},C6={key:2,class:"time-summary-week"},S6=["title"],$6={key:2,class:"time-summary-history"},T6={class:"time-summary-history__header"},M6={class:"time-summary-history__mode"},A6={key:0,class:"time-summary-history__timeline"},D6={class:"history-timeline-entry__header"},L6={class:"history-timeline-entry__title"},E6={key:0,class:"history-timeline-entry__range"},N6={key:1,class:"history-timeline-entry__delta"},I6={class:"history-timeline-entry__metrics"},O6={key:0,class:"history-timeline-cell"},B6={class:"history-timeline-cell__value"},H6={key:1,class:"history-timeline-cell"},F6={class:"history-timeline-cell__value"},P6={key:2,class:"history-timeline-cell"},W6={class:"history-timeline-cell__value"},z6={key:3,class:"history-timeline-cell"},R6={class:"history-timeline-cell__value"},j6={key:4,class:"history-timeline-cell"},V6={class:"history-timeline-cell__value"},U6={key:1,class:"time-summary-history__accordion"},G6=["onClick"],K6={class:"history-accordion-entry__title"},q6={key:0,class:"history-accordion-entry__range"},J6={key:1,class:"history-accordion-entry__summary"},Z6={key:2,class:"history-accordion-entry__delta"},Y6={class:"history-accordion-entry__caret"},X6={key:0,class:"history-accordion-entry__body"},Q6={class:"history-accordion-group__title"},e8={class:"history-accordion-group__metrics"},t8={class:"history-accordion-group__metric-label"},a8={class:"history-accordion-group__metric-value"},o8={key:3,class:"time-summary-history time-summary-history--empty"},r8={class:"time-summary-history__empty"},n8={class:"time-summary-history__empty-title"},s8={class:"time-summary-history__empty-copy"},i8=Object.freeze(Object.defineProperty({__proto__:null,default:ct(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 se;if(s.value.length)return s.value.reduce(($e,Ye)=>$e+Ye.todayHours,0);if(Number.isFinite(a.summary.todayActualHours))return a.summary.todayActualHours;const Q=(se=a.summary)==null?void 0:se.todayHours;return typeof Q=="number"&&Number.isFinite(Q)?Q:null}),d=x(()=>{var se;const Q=Number(((se=a.summary)==null?void 0:se.todayPlannedHours)??0);return Number.isFinite(Q)?Math.max(0,Q):0}),g=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 $e;const Q=g.value,se=(($e=a.summary)==null?void 0:$e.rangeLabel)||"";return a.showRangeInTitle!==!1&&se?`${Q} · ${se}`:Q}),f=x(()=>({background:a.cardBg||void 0})),c=x(()=>a.showHeader),b=x(()=>a.showToday);x(()=>a.showActivity);const p=x(()=>a.showHistoryCoreMetrics),$=x(()=>{const Q=String(a.historyView??"").toLowerCase();return Q==="timeline"||Q==="list"?"timeline":"accordion"}),S=x(()=>$.value==="accordion"?"Accordion":"Timeline"),T=x(()=>a.showActivityDetails),C=x(()=>a.showOverview!==!1),P=x(()=>a.showLookback!==!1),O=x(()=>a.showDelta!==!1),I=x(()=>a.showWeekMiniChart!==!1),_=x(()=>a.showDailyKpis!==!1),w=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}),k=x(()=>{const se=(Array.isArray(a.allowedViews)?a.allowedViews:[]).filter($e=>$e==="daily"||$e==="calendars"||$e==="categories");return se.length?se:r.value==="category_and_calendar_goals"?["daily","calendars","categories"]:r.value==="calendar_goals"?["daily","calendars"]:["daily"]}),A=oe("daily"),R=oe(!1),L=x(()=>{const Q=a.defaultView;return Q&&k.value.includes(Q)?Q:r.value==="category_and_calendar_goals"&&k.value.includes("categories")?"categories":r.value==="calendar_goals"&&k.value.includes("calendars")?"calendars":"daily"});Oe([k,L],([Q,se])=>{if(!R.value){A.value=se,R.value=!0;return}Q.includes(A.value)||(A.value=se)},{immediate:!0});const J=x(()=>k.value.length>1),K=x(()=>Array.isArray(a.weekDays)?a.weekDays:[]),Y=x(()=>K.value.find(Q=>Q.isToday)??null),le=x(()=>{var se,$e;const Q=Number(((se=Y.value)==null?void 0:se.events)??NaN);return Number.isFinite(Q)?Math.max(0,Math.trunc(Q)):Math.max(0,Math.trunc(Number((($e=ve.value)==null?void 0:$e.events)??0)))}),Z=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 se;const Q=(se=a.summary.delta)==null?void 0:se.avgPerDay;return Q==null||!Number.isFinite(Q)||Math.abs(Q)<.005?"":`${Q>0?"+":""}${Fe(Math.abs(Q))}h`}),G=x(()=>Te(a.calendarTodayItems??s.value)),D=x(()=>Te(a.categoryTodayItems??s.value)),V=x(()=>De(G.value)),he=x(()=>De(D.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)),H=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"),E=x(()=>ce.value?"Lookback data required":"No lookback data available"),W=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),ue=x(()=>re.value-1),ee=x(()=>nt(ue.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 se=Fe(Q.actualHours),$e=Number(Q.percent??0).toFixed(0),Ye=Q.targetHours>0?` (${$e}% of ${Fe(Q.targetHours)} h)`:"";return{text:`${Q.label}${se} h${Ye}`,badge:Q.statusLabel||"",badgeClass:it(Q.status)}});const be=x(()=>{if(!o.value.showBusiest)return"";const Q=a.summary.busiest;if(!Q||!Q.date)return"";const se=Number(Q.hours??0);return`Busiest ${Q.date}${Fe(se)} h`});x(()=>{const Q=[];return o.value.showAverage&&(Q.push(`${Fe(a.summary.avgDay)} h/day (${n.value})`),Q.push(`${Fe(a.summary.avgEvent)} h/event`)),o.value.showMedian&&Q.push(`${Fe(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 $e,Ye;const Q=ze((($e=ve.value)==null?void 0:$e.typicalStart)??null),se=ze(((Ye=ve.value)==null?void 0:Ye.typicalEnd)??null);return Q&&se?`${Q}${se}`:Q?`${Q}`:se?`${se}`:"—"}),x(()=>{var $e,Ye;const Q=ze((($e=ve.value)==null?void 0:$e.earliestStart)??null),se=ze(((Ye=ve.value)==null?void 0:Ye.latestEnd)??null);return!Q&&!se?"—":`${Q||"—"} / ${se||"—"}`});const _e=x(()=>{var se;const Q=(se=ve.value)==null?void 0:se.longestSession;return Q==null?"—":`${Number(Q).toFixed(1)} h`}),xe=x(()=>{var se;return ze(((se=ve.value)==null?void 0:se.latestEnd)??null)||"—"}),ge=x(()=>{var se;const Q=(se=ve.value)==null?void 0:se.activeDays;return Q==null||!Number.isFinite(Number(Q))?"—":String(Math.max(0,Math.trunc(Number(Q))))});x(()=>{var se,$e,Ye;const Q=[];return be.value&&Q.push(be.value.replace(/^Busiest\s+/,"busiest ")),((se=ve.value)==null?void 0:se.activeDays)!=null&&Q.push(`${ve.value.activeDays} active days`),(($e=ve.value)==null?void 0:$e.weekendShare)!=null&&Q.push(`weekend ${ut(ve.value.weekendShare)}`),((Ye=ve.value)==null?void 0:Ye.eveningShare)!=null&&Q.push(`evening ${ut(ve.value.eveningShare)}`),Q.join(" · ")}),x(()=>{var Q;return(Q=ve.value)!=null&&Q.delta?Qe(ve.value.weekendShare,ve.value.delta.weekendShare):""}),x(()=>{var Q;return(Q=ve.value)!=null&&Q.delta?Qe(ve.value.eveningShare,ve.value.delta.eveningShare):""});const Ee=x(()=>{const Q=Array.isArray(a.history)?a.history:[];return Q.map((se,$e)=>{var At,Dt,bt,oo,Ht,Ra,Lt,Xt,wa,Ea,ja,ua;const Ye=Q[$e+1],Ut=Ye?Number(se.totalHours)-Number(Ye.totalHours):null,ya=Ye&&Number(Ye.totalHours)!==0?Number(Ut)/Number(Ye.totalHours)*100:null,Gt=[];o.value.showTotal&&Gt.push({label:"Total",value:`${Fe(se.totalHours)} h`}),o.value.showAverage&&(Gt.push({label:`Avg/day (${n.value})`,value:`${Fe(se.avgDay)} h`}),Gt.push({label:"Avg/event",value:`${Fe(se.avgEvent)} h`})),o.value.showMedian&&Gt.push({label:"Median/day",value:`${Fe(se.medianDay)} h`}),o.value.showBalance&&Gt.push({label:"Balance index",value:se.balanceIndex==null?"—":se.balanceIndex.toFixed(2)});const $t=[];if(o.value.showWorkday&&$t.push({label:"Workdays",value:`${Fe(se.workdayAvg)} h avg · ${Fe(se.workdayMedian)} h median`}),o.value.showWeekend){const et=o.value.showWeekendShare&&se.weekendShare!=null?` (${Ie(se.weekendShare)}%)`:"";$t.push({label:"Weekend",value:`${Fe(se.weekendAvg)} h avg · ${Fe(se.weekendMedian)} h median${et}`})}const ft=[];o.value.showTopCategory&&ft.push({label:"Top category",value:Wt(se.topCategory)}),o.value.showCalendarSummary&&ft.push({label:`${se.activeCalendars} calendars`,value:se.calendarSummary||"—"});const xt=[];o.value.showBusiest&&xt.push({label:"Busiest",value:Ot(se.busiest)}),p.value&&(xt.push({label:"Events",value:String(((At=se.activity)==null?void 0:At.events)??0)}),xt.push({label:"Active days",value:String(((Dt=se.activity)==null?void 0:Dt.activeDays)??0)}),xt.push({label:"Typical",value:Bt((bt=se.activity)==null?void 0:bt.typicalStart,(oo=se.activity)==null?void 0:oo.typicalEnd)})),T.value&&(xt.push({label:"Weekend share",value:((Ht=se.activity)==null?void 0:Ht.weekendShare)==null?"—":`${Ie(se.activity.weekendShare)}%`}),xt.push({label:"Evening share",value:((Ra=se.activity)==null?void 0:Ra.eveningShare)==null?"—":`${Ie(se.activity.eveningShare)}%`}),xt.push({label:"Earliest/Late",value:Je((Lt=se.activity)==null?void 0:Lt.earliestStart,(Xt=se.activity)==null?void 0:Xt.latestEnd)}),xt.push({label:"Overlaps",value:String(((wa=se.activity)==null?void 0:wa.overlapEvents)??0)}),xt.push({label:"Longest",value:Ue((Ea=se.activity)==null?void 0:Ea.longestSession)}),xt.push({label:"Last day off",value:((ja=se.activity)==null?void 0:ja.lastDayOff)||"—"}),xt.push({label:"Last half day",value:((ua=se.activity)==null?void 0:ua.lastHalfDayOff)||"—"}));const Kt=[{key:"core",label:"Core",metrics:Gt},{key:"pace",label:"Pace",metrics:$t},{key:"category",label:u.value,metrics:ft},{key:"pattern",label:"Pattern",metrics:xt}].filter(et=>et.metrics.length>0);return{offset:se.offset,label:se.label||`Offset ${nt(se.offset)}`,range:gt(se.rangeStart,se.rangeEnd),totalHours:`${Fe(se.totalHours)} h`,avgDay:`${Fe(se.avgDay)} h`,balanceIndex:se.balanceIndex==null?"—":se.balanceIndex.toFixed(2),weekendShare:se.weekendShare==null?"—":`${Ie(se.weekendShare)}%`,topCategoryBrief:st(se.topCategory),deltaHours:yt(Ut),deltaPercent:pt(ya),sections:Kt}})}),Se=oe(null);Oe(Ee,Q=>{if(!Q.length){Se.value=null;return}Q.some(se=>se.offset===Se.value)||(Se.value=Q[0].offset)},{immediate:!0});function te(Q){return Se.value===Q}function ie(Q){Se.value=Se.value===Q?null:Q}function me(Q){return Q==="calendars"?"Calendars":Q==="categories"?"Categories":"Daily"}function Te(Q){return(Array.isArray(Q)?Q:[]).map(se=>({...se,id:String((se==null?void 0:se.id)??""),label:String((se==null?void 0:se.label)??(se==null?void 0:se.id)??""),todayHours:Number((se==null?void 0:se.todayHours)??0)||0,color:(se==null?void 0:se.color)||"var(--brand)"})).filter(se=>se.id&&se.label).sort((se,$e)=>Number($e.todayHours??0)-Number(se.todayHours??0))}function De(Q){return w.value?Q:Q.filter(se=>Number(se.todayHours)>0)}function Pe(Q){const se=Math.max(0,Number(Q)||0),$e=de.value;return $e<=0?8:Math.max(8,Math.min(100,se/$e*100))}function Ie(Q){return Number(Q??0).toFixed(1)}function Fe(Q){return Number(Q??0).toFixed(2)}function ze(Q){return Q?/^\d{2}:\d{2}$/.test(Q)?Q:ob(Q):""}function it(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 ut(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 gt(Q,se){return!Q||!se?"":Ar(Q,se,{month:"short",day:"numeric"})}function Ot(Q){if(!(Q!=null&&Q.date))return"—";const se=Number((Q==null?void 0:Q.hours)??0);return`${Mn(Q.date,{month:"short",day:"numeric"})||Q.date} · ${Fe(se)} h`}function Wt(Q){if(!Q)return"—";const se=Q.targetHours>0?` (${Math.round(Q.percent)}% of ${Fe(Q.targetHours)} h)`:"";return`${Q.label}${Fe(Q.actualHours)} h${se}`}function st(Q){return Q?`${Q.label} ${Math.round(Q.percent)}%`:"—"}function yt(Q){return Q==null||!Number.isFinite(Q)?"":`${Q>=0?"+":""}${Fe(Math.abs(Q))} h`}function pt(Q){return Q==null||!Number.isFinite(Q)?"":`${Q>=0?"+":""}${Math.abs(Q).toFixed(1)}%`}function Bt(Q,se){const $e=ze(Q||null),Ye=ze(se||null);return $e&&Ye?`${$e}${Ye}`:$e?`${$e}`:Ye?`${Ye}`:"—"}function Je(Q,se){const $e=ze(Q||null),Ye=ze(se||null);return!$e&&!Ye?"—":`${$e||"—"} / ${Ye||"—"}`}function Ue(Q){return Q==null?"—":`${Number(Q).toFixed(1)} h`}function Qe(Q,se){if(se==null||Q==null)return"";const $e=Q-se;return`Δ vs. offset ${ee.value}${ut($e)}`}return(Q,se)=>(h(),y("div",{class:"card time-summary compact",style:He(f.value)},[c.value?(h(),y("div",ZS,[i("span",null,N(v.value),1)])):ne("",!0),C.value?(h(),y("div",YS,[b.value&&l.value!==null?(h(),y("div",XS,[i("div",null,[se[1]||(se[1]=i("div",{class:"time-summary-hero__label"},"Today",-1)),i("div",QS,[Ge(N(Ie(l.value)),1),se[0]||(se[0]=i("span",null,"h",-1))]),d.value>0?(h(),y("div",e6,N(Ie(d.value))+" h planned later",1)):ne("",!0)]),i("div",t6,[i("strong",null,N(le.value),1),se[2]||(se[2]=i("span",null,"events",-1)),le.value>0&&_e.value!=="—"?(h(),y("span",a6,N(_e.value)+" longest",1)):ne("",!0)])])):ne("",!0),J.value?(h(),y("div",{key:1,class:ke(["time-summary-tabs",`time-summary-tabs--${k.value.length}`])},[(h(!0),y(ye,null,Ne(k.value,$e=>(h(),y("button",{key:$e,type:"button",class:ke({active:A.value===$e}),onClick:Ye=>A.value=$e},N(me($e)),11,o6))),128))],2)):ne("",!0),i("div",r6,[A.value==="daily"&&_.value?(h(),y("div",n6,[i("div",s6,[i("strong",null,N(Fe(Q.summary.avgDay))+" h",1),se[3]||(se[3]=i("span",null,"avg/day",-1)),B.value?(h(),y("em",i6,N(B.value),1)):ne("",!0)]),i("div",l6,[i("strong",null,N(Fe(Q.summary.medianDay))+" h",1),se[4]||(se[4]=i("span",null,"median/day",-1))]),i("div",d6,[i("strong",null,N(Fe(Z.value))+" h",1),se[5]||(se[5]=i("span",null,"avg/event",-1))]),i("div",c6,[i("strong",null,N(xe.value),1),se[6]||(se[6]=i("span",null,"latest end",-1))]),i("div",u6,[i("strong",null,N(ge.value),1),se[7]||(se[7]=i("span",null,"active days",-1))]),i("div",g6,[i("strong",null,N(_e.value),1),se[8]||(se[8]=i("span",null,"longest",-1))])])):A.value==="calendars"?(h(),y("div",p6,[i("div",f6,[se[9]||(se[9]=i("strong",null,"Today by calendar",-1)),i("span",null,N(Me.value.length)+" calendar"+N(Me.value.length===1?"":"s"),1)]),(h(!0),y(ye,null,Ne(Me.value,$e=>(h(),y("div",{class:"time-summary-lane",key:$e.id,style:He({"--lane-color":$e.color||"var(--brand)"})},[i("span",{class:"dot",style:He({background:$e.color||"var(--brand)"})},null,4),i("span",b6,N($e.label),1),i("span",v6,N(Ie($e.todayHours))+" h",1)],4))),128)),U.value>0?(h(),y("div",h6,"+ "+N(U.value)+" more",1)):ne("",!0)])):A.value==="categories"?(h(),y("div",m6,[i("div",y6,[se[10]||(se[10]=i("strong",null,"Today by category",-1)),i("span",null,N(ae.value.length)+" lane"+N(ae.value.length===1?"":"s"),1)]),(h(!0),y(ye,null,Ne(ae.value,$e=>(h(),y("div",{class:"time-summary-lane",key:$e.id,style:He({"--lane-color":$e.color||"var(--brand)"})},[i("span",{class:"dot",style:He({background:$e.color||"var(--brand)"})},null,4),i("span",w6,[Ge(N($e.label)+" ",1),$e.isUnassigned?(h(),y("span",k6,"ⓘ")):ne("",!0)]),i("span",x6,N(Ie($e.todayHours))+" h",1)],4))),128)),H.value>0?(h(),y("div",_6,"+ "+N(H.value)+" more",1)):ne("",!0)])):ne("",!0)]),I.value&&K.value.length?(h(),y("div",C6,[(h(!0),y(ye,null,Ne(K.value,$e=>(h(),y("div",{key:$e.date,class:ke(["time-summary-week__day",{active:$e.isToday}]),title:`${$e.label}: ${Ie($e.hours)} h`},[i("i",{class:"time-summary-week__bar",style:He({height:`${Pe($e.hours)}%`})},[i("strong",null,N(Ie($e.hours))+"h",1)],4),i("span",null,N($e.label),1)],10,S6))),128))])):ne("",!0)])):ne("",!0),P.value&&Ee.value.length?(h(),y("div",$6,[i("div",T6,[se[11]||(se[11]=i("div",{class:"time-summary-history__title"},"Lookback",-1)),i("div",M6,N(S.value),1)]),$.value==="timeline"?(h(),y("div",A6,[(h(!0),y(ye,null,Ne(Ee.value,$e=>(h(),y("div",{class:"history-timeline-entry",key:$e.offset},[i("div",D6,[i("span",L6,N($e.label),1),$e.range?(h(),y("span",E6,N($e.range),1)):ne("",!0),O.value&&$e.deltaHours?(h(),y("span",N6,[Ge(N($e.deltaHours),1),$e.deltaPercent?(h(),y(ye,{key:0},[Ge(" · "+N($e.deltaPercent),1)],64)):ne("",!0)])):ne("",!0)]),i("div",I6,[o.value.showTotal?(h(),y("div",O6,[se[12]||(se[12]=i("span",{class:"history-timeline-cell__label"},"Total",-1)),i("span",B6,N($e.totalHours),1)])):ne("",!0),o.value.showAverage?(h(),y("div",H6,[se[13]||(se[13]=i("span",{class:"history-timeline-cell__label"},"Avg/day",-1)),i("span",F6,N($e.avgDay),1)])):ne("",!0),o.value.showBalance?(h(),y("div",P6,[se[14]||(se[14]=i("span",{class:"history-timeline-cell__label"},"Balance",-1)),i("span",W6,N($e.balanceIndex),1)])):ne("",!0),o.value.showWeekendShare?(h(),y("div",z6,[se[15]||(se[15]=i("span",{class:"history-timeline-cell__label"},"Weekend %",-1)),i("span",R6,N($e.weekendShare),1)])):ne("",!0),o.value.showTopCategory?(h(),y("div",j6,[se[16]||(se[16]=i("span",{class:"history-timeline-cell__label"},"Top category",-1)),i("span",V6,N($e.topCategoryBrief),1)])):ne("",!0)])]))),128))])):(h(),y("div",U6,[(h(!0),y(ye,null,Ne(Ee.value,$e=>(h(),y("div",{class:"history-accordion-entry",key:$e.offset},[i("button",{class:"history-accordion-entry__header",type:"button",onClick:Ye=>ie($e.offset)},[i("span",K6,N($e.label),1),$e.range?(h(),y("span",q6,N($e.range),1)):ne("",!0),o.value.showTotal?(h(),y("span",J6,N($e.totalHours),1)):ne("",!0),O.value&&$e.deltaHours?(h(),y("span",Z6,[Ge(N($e.deltaHours),1),$e.deltaPercent?(h(),y(ye,{key:0},[Ge(" · "+N($e.deltaPercent),1)],64)):ne("",!0)])):ne("",!0),i("span",Y6,N(te($e.offset)?"":"+"),1)],8,G6),te($e.offset)?(h(),y("div",X6,[(h(!0),y(ye,null,Ne($e.sections,Ye=>(h(),y("div",{class:"history-accordion-group",key:Ye.key},[i("div",Q6,N(Ye.label),1),i("div",e8,[(h(!0),y(ye,null,Ne(Ye.metrics,Ut=>(h(),y("div",{class:"history-accordion-group__metric",key:Ut.label},[i("span",t8,N(Ut.label),1),i("span",a8,N(Ut.value),1)]))),128))])]))),128))])):ne("",!0)]))),128))]))])):P.value?(h(),y("div",o8,[se[17]||(se[17]=i("div",{class:"time-summary-history__header"},[i("div",{class:"time-summary-history__title"},"Lookback")],-1)),i("div",r8,[i("div",n8,N(E.value),1),i("div",s8,N(W.value),1)])])):ne("",!0)],4))}}),[["__scopeId","data-v-d1e57a51"]])},Symbol.toStringTag,{value:"Module"}))})();