26 lines
732 KiB
JavaScript
26 lines
732 KiB
JavaScript
(function(){"use strict";var il=document.createElement("style");il.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-0c23cc93]{width:100%;height:100%;display:flex;align-items:flex-end;gap:2px;padding:5px 5px 0;box-sizing:border-box}.wp-bar[data-v-0c23cc93]{border-radius:2px 2px 0 0;flex:1;background:var(--brand, #2563eb)}.wp-bar--a[data-v-0c23cc93]{background:var(--brand, #2563eb)}.wp-bar--b[data-v-0c23cc93]{background:color-mix(in oklab,var(--brand, #2563eb),#7c3aed 55%)}.wp-bar--g[data-v-0c23cc93]{background:#16a34a}.wp--ring[data-v-0c23cc93]{align-items:center;justify-content:center}.wp-ring-wrap[data-v-0c23cc93]{position:relative;display:flex;align-items:center;justify-content:center}.wp-ring[data-v-0c23cc93]{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-0c23cc93]{position:absolute;font-size:8px;font-weight:900;color:var(--brand, #2563eb)}.wp--pie[data-v-0c23cc93]{align-items:center;justify-content:center}.wp-pie-wrap[data-v-0c23cc93]{display:flex;align-items:center;justify-content:center;width:100%;height:100%}.wp-pie[data-v-0c23cc93]{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-0c23cc93]{align-items:center;padding:4px 5px}.wp-hbars[data-v-0c23cc93]{display:flex;flex-direction:column;gap:4px;width:100%}.wp-hbar[data-v-0c23cc93]{height:5px;border-radius:2px;background:var(--brand, #2563eb)}.wp--heatmap[data-v-0c23cc93]{align-items:stretch;padding:4px}.wp-heatmap[data-v-0c23cc93]{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;width:100%;height:100%}.wp-cell[data-v-0c23cc93]{border-radius:2px;background:var(--brand, #2563eb)}.wp--dayoff[data-v-0c23cc93],.wp--hod[data-v-0c23cc93]{align-items:flex-end}.wp--note[data-v-0c23cc93]{align-items:center;padding:4px 5px}.wp-note[data-v-0c23cc93]{display:flex;flex-direction:column;gap:5px;width:100%}.wp-noteline[data-v-0c23cc93]{height:4px;border-radius:2px;background:var(--brand, #2563eb);opacity:.5}.wp--deck[data-v-0c23cc93]{flex-direction:column;align-items:stretch;padding:4px 5px;gap:3px}.wp-deck[data-v-0c23cc93]{display:flex;flex-direction:column;gap:3px;width:100%}.wp-deckcard[data-v-0c23cc93]{height:10px;border-radius:3px;background:var(--brand, #2563eb);opacity:.6}.wp--deckstats[data-v-0c23cc93]{align-items:center;justify-content:space-around;padding:6px 5px}.wp-deckstats[data-v-0c23cc93]{display:flex;gap:4px;align-items:flex-end;width:100%;justify-content:space-around}.wp-stat[data-v-0c23cc93]{width:16px;height:16px;border-radius:4px;background:var(--brand, #2563eb);opacity:.55}.wp-stat[data-v-0c23cc93]:nth-child(2){height:22px;opacity:.8}.wp--generic[data-v-0c23cc93]{align-items:center;justify-content:center}.wp-generic[data-v-0c23cc93]{width:70%;height:12px;border-radius:4px;background:color-mix(in oklab,var(--brand, #2563eb),transparent 70%)}.wp--sel .wp-bar[data-v-0c23cc93],.wp--sel .wp-hbar[data-v-0c23cc93],.wp--sel .wp-cell[data-v-0c23cc93],.wp--sel .wp-noteline[data-v-0c23cc93],.wp--sel .wp-deckcard[data-v-0c23cc93],.wp--sel .wp-stat[data-v-0c23cc93]{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-49017161]{position:relative}.options-pop[data-v-49017161]{--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-49017161]{display:grid;grid-template-columns:minmax(120px,1fr) minmax(140px,1fr);align-items:center;gap:10px;margin-bottom:6px}.opt-row[data-v-49017161]:last-child{margin-bottom:0}.opt-row--footer[data-v-49017161]{grid-template-columns:1fr;justify-content:flex-end;margin-top:4px}.tab-actions[data-v-49017161]{display:grid;gap:8px}.tab-actions__row[data-v-49017161]{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-49017161]{min-width:0}.tab-actions__label[data-v-49017161]{color:var(--opt-pop-text);font-size:.83rem;font-weight:600}.tab-actions__hint[data-v-49017161],.tab-actions__empty[data-v-49017161]{color:var(--opt-pop-muted);font-size:.76rem;line-height:1.4}.tab-actions__buttons[data-v-49017161]{display:inline-flex;align-items:center;gap:6px}.link-btn[data-v-49017161]{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-49017161]:hover{opacity:.85}.opt-row label[data-v-49017161]{font-size:.8rem;color:var(--opt-pop-text);line-height:1.35}.opt-row input[type='"number"'][data-v-49017161],.opt-row select[data-v-49017161],.opt-row input[type='"text"'][data-v-49017161]{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-49017161]{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-49017161],.multi__item input[type=checkbox][data-v-49017161],.taglist__meta input[type=checkbox][data-v-49017161]{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-49017161]{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-49017161]{margin-bottom:11px;padding:10px;border-radius:10px;border:1px solid var(--opt-section-border);background:var(--opt-section-bg)}.opt-section[data-v-49017161]:last-child{margin-bottom:0}.opt-section__title[data-v-49017161]{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--opt-pop-muted);margin-bottom:9px;font-weight:700}.colorlist[data-v-49017161]{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.colorlist__item input[type=color][data-v-49017161]{width:38px;height:28px;padding:0;border:1px solid var(--opt-input-border);background:var(--opt-input-bg)}.multi[data-v-49017161]{display:grid;gap:6px;grid-template-columns:repeat(2,minmax(0,1fr))}.multi__item[data-v-49017161]{display:flex;align-items:center;gap:6px;font-size:13px}.multi__item span[data-v-49017161]{color:var(--opt-pop-text)}.taglist[data-v-49017161]{display:flex;flex-direction:column;gap:6px}.taglist__hint[data-v-49017161]{font-size:12px;color:var(--opt-pop-muted);line-height:1.35}.taglist__item[data-v-49017161]{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:13px}.taglist__meta[data-v-49017161]{display:flex;align-items:center;gap:6px}.taglist__label[data-v-49017161]{color:var(--opt-pop-text)}.taglist__count[data-v-49017161]{font-size:12px;color:var(--opt-pop-muted)}.filter-builder[data-v-49017161]{display:flex;flex-direction:column;gap:8px;width:100%}.filter-builder__row[data-v-49017161]{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-49017161]{font-size:12px;color:var(--opt-pop-muted);line-height:1.35}.filter-builder__hint code[data-v-49017161]{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-49017161],.filter-builder__input[data-v-49017161]{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-49017161]{width:min(440px,calc(100vw - 16px));max-height:min(420px,calc(100vh - 96px))}.filter-builder__row[data-v-49017161]{grid-template-columns:1fr;align-items:stretch}.filter-builder__row .ghost[data-v-49017161]{justify-self:end}}:root{--widget-scale:1;--widget-space:1;--widget-density:1;--widget-text-scale:1}.version-notes-overlay[data-v-2f5c4bbe]{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-2f5c4bbe]{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-2f5c4bbe]{display:flex;flex-direction:column;gap:8px}.version-notes-overlay__title h2[data-v-2f5c4bbe]{margin:0;font-size:clamp(34px,4.2vw,42px);line-height:1;letter-spacing:-.04em;font-weight:800}.version-notes-overlay__teaser[data-v-2f5c4bbe]{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-2f5c4bbe],.version-notes-overlay__section-label[data-v-2f5c4bbe]{font-size:12px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--color-text-light)}.version-notes-overlay__actions[data-v-2f5c4bbe]{display:flex;align-items:center;gap:8px;justify-content:flex-end}.version-notes-overlay__pill[data-v-2f5c4bbe]{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-2f5c4bbe]{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-2f5c4bbe]{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-2f5c4bbe]{display:flex;flex-direction:column;gap:16px}.version-notes-overlay__section[data-v-2f5c4bbe],.version-notes-overlay__history-item[data-v-2f5c4bbe]{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-2f5c4bbe],.version-notes-overlay__history-title[data-v-2f5c4bbe]{margin:0}.version-notes-overlay__history-item p[data-v-2f5c4bbe]{margin:0;color:var(--color-text-light);line-height:1.55}.version-notes-overlay__link-row[data-v-2f5c4bbe]{display:flex;flex-wrap:wrap;gap:10px}.version-notes-overlay__link[data-v-2f5c4bbe]{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-2f5c4bbe]{-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-2f5c4bbe]: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-2f5c4bbe]{padding:18px 18px 17px;display:flex;flex-direction:column;gap:14px}.version-notes-overlay__section--intro[data-v-2f5c4bbe]{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-2f5c4bbe]{display:flex;align-items:center;justify-content:space-between;gap:12px}.version-notes-overlay__highlights[data-v-2f5c4bbe]{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:12px;line-height:1.6}.version-notes-overlay__intro-copy[data-v-2f5c4bbe]{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-2f5c4bbe]{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.version-notes-overlay__image-card[data-v-2f5c4bbe]{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-2f5c4bbe]{display:block;width:100%;aspect-ratio:16 / 10;object-fit:cover}.version-notes-overlay__image-meta[data-v-2f5c4bbe]{display:flex;flex-direction:column;gap:4px;padding:12px 14px 14px}.version-notes-overlay__image-meta strong[data-v-2f5c4bbe]{font-size:14px}.version-notes-overlay__image-meta span[data-v-2f5c4bbe]{font-size:12px;line-height:1.45;color:var(--color-text-light)}.version-notes-overlay__history[data-v-2f5c4bbe]{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-2f5c4bbe]{padding-right:4px}.version-notes-overlay__history-list[data-v-2f5c4bbe]{display:flex;flex-direction:column;gap:8px;overflow:auto;padding-right:4px;max-height:100%}.version-notes-overlay__history-item[data-v-2f5c4bbe]{-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-2f5c4bbe]: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-2f5c4bbe]{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-2f5c4bbe]{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-2f5c4bbe]{flex-shrink:0;white-space:nowrap}.version-notes-overlay__history-title[data-v-2f5c4bbe]{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-2f5c4bbe]{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.version-notes-overlay__footer[data-v-2f5c4bbe]{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-2f5c4bbe]{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-2f5c4bbe]{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-2f5c4bbe]{display:flex;align-items:end;justify-content:space-between;gap:14px}.version-notes-overlay__apply-text[data-v-2f5c4bbe]{flex:1 1 auto;font-size:13px;line-height:1.6;color:var(--color-text-light)}.version-notes-overlay__apply-text strong[data-v-2f5c4bbe]{display:block;margin-bottom:4px;font-size:13px;font-weight:700;color:var(--color-text)}.version-notes-overlay__apply-actions[data-v-2f5c4bbe]{flex:0 0 auto;display:flex;align-items:center;gap:10px}.version-notes-overlay__reload-btn[data-v-2f5c4bbe]{-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-2f5c4bbe]: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-2f5c4bbe]:active{transform:translateY(0)}@media (max-width: 760px){.version-notes-overlay__body[data-v-2f5c4bbe]{grid-template-columns:1fr}.version-notes-overlay__apply-row[data-v-2f5c4bbe]{flex-direction:column;align-items:stretch}.version-notes-overlay__apply-actions[data-v-2f5c4bbe]{justify-content:flex-start}.version-notes-overlay__history[data-v-2f5c4bbe]{position:static}}@media (max-height: 760px){.version-notes-overlay[data-v-2f5c4bbe]{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-2f5c4bbe]{gap:12px;padding-bottom:8px}.version-notes-overlay__title h2[data-v-2f5c4bbe]{font-size:clamp(28px,4vw,34px)}.version-notes-overlay__teaser[data-v-2f5c4bbe]{font-size:16px}.version-notes-overlay__body[data-v-2f5c4bbe]{gap:14px}.version-notes-overlay__section[data-v-2f5c4bbe]{padding:15px 15px 14px}.version-notes-overlay__footer[data-v-2f5c4bbe]{padding-top:10px}.version-notes-overlay__footer-note[data-v-2f5c4bbe]{display:none}}@media (max-width: 640px){.version-notes-overlay__header[data-v-2f5c4bbe],.version-notes-overlay__section-head[data-v-2f5c4bbe],.version-notes-overlay__footer[data-v-2f5c4bbe]{flex-direction:column;align-items:stretch}.version-notes-overlay__actions[data-v-2f5c4bbe]{justify-content:space-between}}.balance-card[data-v-a52246e6]{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-a52246e6]{display:flex;align-items:center;justify-content:space-between;gap:var(--widget-gap, 10px)}.header.compact[data-v-a52246e6]{justify-content:center}.title-row[data-v-a52246e6]{display:flex;align-items:center;gap:calc(8px * var(--widget-space, 1))}.title[data-v-a52246e6]{font-weight:600;font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)))}.pill[data-v-a52246e6]{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-a52246e6]{text-align:right}.index.centered[data-v-a52246e6]{text-align:center;width:100%}.index-badge[data-v-a52246e6]{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-a52246e6]{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-a52246e6]: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-a52246e6]{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-a52246e6]{display:flex;flex-direction:column;gap:calc(2px * var(--widget-space, 1));text-align:left}.index-badge__label[data-v-a52246e6]{font-size:calc(9px * var(--widget-scale, 1));text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.index-badge__range[data-v-a52246e6]{font-size:calc(11px * var(--widget-scale, 1));color:var(--fg);white-space:nowrap}.trend[data-v-a52246e6]{display:flex;align-items:center;gap:var(--widget-gap, 10px)}.trend-line[data-v-a52246e6]{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-a52246e6]{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-a52246e6]{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-a52246e6]{grid-column:span 1;padding:calc(4px * var(--widget-space, 1))}.trend-block.no-offset[data-v-a52246e6]{grid-column:span 1;padding:calc(4px * var(--widget-space, 1)) calc(6px * var(--widget-space, 1))}.trend-block.current[data-v-a52246e6]{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-a52246e6]{display:flex;align-items:center;justify-content:space-between;gap:calc(4px * var(--widget-space, 1));width:100%}.trend-value[data-v-a52246e6]{font-weight:700;font-size:calc(13px * var(--widget-scale, 1));text-align:left;white-space:nowrap}.trend-range[data-v-a52246e6]{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-a52246e6]{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-a52246e6]{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-a52246e6]{font-weight:700;color:var(--fg,#0f172a)}.trend-center[data-v-a52246e6]{flex:1;text-align:center;font-size:calc(11px * var(--widget-scale, 1))}.trend-right[data-v-a52246e6]{min-width:calc(56px * var(--widget-scale, 1));text-align:right;font-size:calc(11px * var(--widget-scale, 1))}.section-title[data-v-a52246e6]{font-weight:600;font-size:calc(13px * var(--widget-scale, 1));margin-bottom:calc(4px * var(--widget-space, 1))}.messages ul[data-v-a52246e6]{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-a52246e6]{margin-bottom:calc(2px * var(--widget-space, 1))}.messages li[data-v-a52246e6]:last-child{margin-bottom:0}.config[data-v-a52246e6]{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-a52246e6]{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}.dayoff-card[data-v-526ef259]{display:flex;flex-direction:column;gap:var(--widget-gap, 10px);container-type:inline-size}.dayoff-card__header[data-v-526ef259]{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-526ef259]{display:grid;gap:var(--widget-gap, 8px)}.dayoff-heatmap--row[data-v-526ef259]{grid-template-columns:repeat(var(--dayoff-tile-count, 1),minmax(0,1fr))}.dayoff-heatmap--stacked[data-v-526ef259]{grid-template-columns:minmax(0,1fr)}.dayoff-tile[data-v-526ef259]{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-526ef259]{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-526ef259]{font-size:calc(11px * var(--widget-scale, 1));font-weight:600}.dayoff-tile__value[data-v-526ef259]{font-size:calc(14px * var(--widget-scale, 1));font-weight:700;font-variant-numeric:tabular-nums}.dayoff-tile__meta[data-v-526ef259]{font-size:calc(10px * var(--widget-scale, 1));color:color-mix(in oklab,currentColor,transparent 55%);font-variant-numeric:tabular-nums}.pill[data-v-526ef259]{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-526ef259]{font-size:calc(12px * var(--widget-scale, 1));color:var(--muted)}.deck-panel[data-v-d23cfb5b]{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-d23cfb5b]{display:flex;align-items:center;justify-content:space-between}.deck-panel__title[data-v-d23cfb5b]{font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)));font-weight:600}.deck-panel__subtitle[data-v-d23cfb5b]{font-size:calc(14px * var(--widget-scale, 1));color:var(--muted)}.deck-panel__actions[data-v-d23cfb5b]{display:flex;align-items:center;gap:calc(8px * var(--widget-space, 1))}.deck-panel__count[data-v-d23cfb5b]{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-d23cfb5b]{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__refresh[data-v-d23cfb5b]:disabled{opacity:.6;cursor:default}.deck-panel__link[data-v-d23cfb5b]{font-size:calc(14px * var(--widget-scale, 1));text-decoration:none;color:var(--fg)}.deck-panel__loading[data-v-d23cfb5b]{display:flex;align-items:center;gap:calc(8px * var(--widget-space, 1));color:var(--muted)}.deck-panel__filters[data-v-d23cfb5b]{display:flex;gap:calc(8px * var(--widget-space, 1));flex-wrap:wrap}.deck-panel--compact[data-v-d23cfb5b]{gap:calc(10px * var(--widget-space, 1))}.deck-panel--compact .deck-panel__filters[data-v-d23cfb5b]{gap:calc(6px * var(--widget-space, 1))}.deck-panel--compact .deck-card-list[data-v-d23cfb5b]{gap:calc(10px * var(--widget-space, 1))}.deck-panel--compact .deck-card[data-v-d23cfb5b]{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-d23cfb5b]{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-d23cfb5b]::-webkit-scrollbar{height:6px}.deck-panel--compact .deck-card__row[data-v-d23cfb5b]::-webkit-scrollbar-thumb{background:color-mix(in oklab,var(--line),transparent 30%);border-radius:999px}.deck-panel--compact .deck-card__status-row[data-v-d23cfb5b]{font-size:calc(12px * var(--widget-scale, 1));gap:calc(6px * var(--widget-space, 1))}.deck-panel--compact .deck-card__status[data-v-d23cfb5b]{font-size:calc(11px * var(--widget-scale, 1));letter-spacing:.04em}.deck-panel--compact .deck-card__time[data-v-d23cfb5b]{font-size:calc(11px * var(--widget-scale, 1));color:var(--muted)}.deck-panel--compact .deck-card__title[data-v-d23cfb5b]{font-size:calc(13px * var(--widget-scale, 1));font-weight:600}.deck-panel--compact .deck-card__meta[data-v-d23cfb5b]{font-size:calc(11px * var(--widget-scale, 1));gap:calc(6px * var(--widget-space, 1))}.deck-panel--compact .deck-card__board[data-v-d23cfb5b]{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-d23cfb5b]{gap:calc(4px * var(--widget-space, 1));flex-wrap:nowrap}.deck-panel--compact .deck-card__label[data-v-d23cfb5b]{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-d23cfb5b]{font-size:calc(11px * var(--widget-scale, 1));gap:calc(4px * var(--widget-space, 1));flex-wrap:nowrap}.deck-panel__body[data-v-d23cfb5b]{flex:1;min-height:0;overflow:auto;padding-right:calc(4px * var(--widget-space, 1))}.deck-filter-btn[data-v-d23cfb5b]{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-d23cfb5b]{display:inline-flex;align-items:center;gap:calc(6px * var(--widget-space, 1));min-width:0}.deck-filter-label-main[data-v-d23cfb5b]{white-space:nowrap}.deck-filter-label-context[data-v-d23cfb5b]{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-d23cfb5b]{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-d23cfb5b]{cursor:grab}.deck-filter-btn.is-draggable[data-v-d23cfb5b]:active{cursor:grabbing}.deck-filter-btn.active[data-v-d23cfb5b]{border-color:var(--brand);color:var(--brand)}.deck-filter-count[data-v-d23cfb5b]{font-size:calc(11px * var(--widget-scale, 1));opacity:.7}.deck-filter-btn[data-v-d23cfb5b]:disabled{opacity:.5;cursor:not-allowed}.deck-panel__error[data-v-d23cfb5b]{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-d23cfb5b]{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:calc(16px * var(--widget-space, 1))}.deck-card[data-v-d23cfb5b]{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-d23cfb5b]{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-d23cfb5b]{font-weight:600;text-transform:uppercase;font-size:calc(12px * var(--widget-scale, 1));letter-spacing:.05em}.deck-card__status.done[data-v-d23cfb5b]{color:var(--color-success)}.deck-card__status.archived[data-v-d23cfb5b]{color:var(--muted)}.deck-card__title[data-v-d23cfb5b]{font-size:calc(16px * var(--widget-scale, 1));font-weight:600;color:var(--fg)}.deck-card__meta[data-v-d23cfb5b]{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-d23cfb5b]{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-d23cfb5b]{color:var(--muted)}.deck-card__labels[data-v-d23cfb5b]{display:flex;gap:calc(6px * var(--widget-space, 1));flex-wrap:wrap}.deck-card__label[data-v-d23cfb5b]{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-d23cfb5b]{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-d23cfb5b]{color:var(--muted)}.deck-card__assignee[data-v-d23cfb5b]{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}.note-card[data-v-c2f8ff1a]{background:var(--card,#fff);border:1px solid var(--color-border,#d1d5db);border-radius:calc(10px * 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:var(--widget-font, 14px)}.note-header[data-v-c2f8ff1a]{display:flex;align-items:center;justify-content:space-between}.title[data-v-c2f8ff1a]{font-weight:600;font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)))}.btn[data-v-c2f8ff1a]{padding:calc(6px * var(--widget-space, 1)) calc(10px * var(--widget-space, 1));border-radius:calc(6px * var(--widget-space, 1));border:1px solid var(--color-border,#d1d5db);background:var(--card,#fff);cursor:pointer;font-size:calc(12px * var(--widget-scale, 1))}.btn--ghost[data-v-c2f8ff1a]{padding:calc(4px * var(--widget-space, 1)) calc(8px * var(--widget-space, 1));font-size:calc(11px * var(--widget-scale, 1));background:transparent}.field[data-v-c2f8ff1a]{display:flex;flex-direction:column;gap:calc(4px * var(--widget-space, 1))}.field-head[data-v-c2f8ff1a]{display:flex;align-items:center;justify-content:space-between;gap:calc(6px * var(--widget-space, 1))}.label[data-v-c2f8ff1a]{font-size:calc(12px * var(--widget-scale, 1));color:var(--muted)}.note[data-v-c2f8ff1a]{width:100%;min-height:calc(80px * var(--widget-scale, 1));border:1px solid var(--color-border,#d1d5db);border-radius:calc(6px * var(--widget-space, 1));padding:calc(8px * var(--widget-space, 1));resize:vertical;font-size:calc(13px * var(--widget-scale, 1))}.note--compact[data-v-c2f8ff1a]{min-height:calc(60px * var(--widget-scale, 1));font-size:calc(12px * var(--widget-scale, 1))}.note-select[data-v-c2f8ff1a]{max-width:55%;padding:calc(4px * var(--widget-space, 1)) calc(8px * var(--widget-space, 1));border-radius:calc(6px * var(--widget-space, 1));border:1px solid var(--color-border,#d1d5db);background:var(--card,#fff);color:var(--fg,#0f172a);font-size:calc(12px * var(--widget-scale, 1))}.text-card[data-v-ad40f491]{background:var(--card, #fff);border:1px solid var(--color-border, #d1d5db);border-radius:calc(10px * var(--widget-space, 1));padding:var(--widget-pad, 12px);color:var(--fg, #0f172a);line-height:calc(1.4 * var(--widget-density, 1));font-size:var(--widget-font, 14px)}.text-card h3[data-v-ad40f491]{margin:0 0 calc(6px * var(--widget-space, 1)) 0;font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)))}.text-card .body[data-v-ad40f491]{margin:0;white-space:pre-wrap;font-size:calc(.95em * var(--widget-scale, 1))}.text-card .body.empty[data-v-ad40f491]{color:var(--muted)}.targets-card[data-v-95b913ed]{display:flex;flex-direction:column;gap:var(--widget-gap, 8px);font-size:var(--widget-font, 14px)}.targets-card[data-v-95b913ed]{position:relative;overflow:hidden;isolation:isolate}.targets-card[data-v-95b913ed]>*{position:relative;z-index:1}.targets-fireframe[data-v-95b913ed]{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-95b913ed]: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-95b913ed]: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-95b913ed]{display:flex;justify-content:space-between;align-items:center}.targets-header__title[data-v-95b913ed]{display:flex;align-items:center;gap:calc(6px * var(--widget-space, 1))}.targets-preset-pill[data-v-95b913ed]{display:inline-flex;align-items:center;padding:calc(2px * var(--widget-space, 1)) calc(8px * var(--widget-space, 1));border-radius:999px;font-size:calc(10px * var(--widget-scale, 1));font-weight:600;background:color-mix(in srgb,var(--brand, #2563eb) 12%,transparent);color:var(--brand, #2563eb);border:1px solid color-mix(in srgb,var(--brand, #2563eb) 22%,transparent)}.targets-header strong[data-v-95b913ed]{font-size:var(--widget-title-size, calc(14px * var(--widget-scale, 1)))}.targets-main[data-v-95b913ed]{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-95b913ed]{display:flex;flex-wrap:wrap;gap:calc(6px * var(--widget-space, 1))}.targets-main .line.forecast[data-v-95b913ed]{flex-direction:column;gap:calc(2px * var(--widget-space, 1))}.targets-main .line .value[data-v-95b913ed]{display:flex;gap:calc(6px * var(--widget-space, 1));align-items:center}.targets-hustle[data-v-95b913ed]{position:absolute;top:calc(8px * var(--widget-space, 1));right:calc(8px * var(--widget-space, 1));z-index:2}.targets-hustle__badge[data-v-95b913ed]{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-95b913ed]{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-95b913ed]: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-95b913ed]{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-95b913ed]: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-95b913ed]{opacity:1;transform:scale(1);filter:saturate(1.08) brightness(1.06)}.targets-hustle__scene.is-active[data-v-95b913ed]:after{opacity:.82;transform:scale(1.04)}.targets-hustle__icon[data-v-95b913ed]{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-95b913ed] svg{width:100%;height:auto;stroke-width:1.5}.targets-hustle__scene.is-active .targets-hustle__icon[data-v-95b913ed]{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-95b913ed]{display:flex;flex-wrap:wrap;gap:calc(6px * var(--widget-space, 1))}.targets-categories[data-v-95b913ed]{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-95b913ed]{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-95b913ed]{display:flex;align-items:center;justify-content:space-between;gap:calc(8px * var(--widget-space, 1))}.category .cat-label[data-v-95b913ed]{display:flex;align-items:center;gap:calc(6px * var(--widget-space, 1));font-weight:600;color:var(--fg)}.category .cat-label .dot[data-v-95b913ed]{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-95b913ed]{color:var(--fg)}.unassigned-hint[data-v-95b913ed]{font-size:calc(11px * var(--widget-scale,1));color:var(--muted);cursor:default;line-height:1;opacity:.7}.category .cat-meta[data-v-95b913ed]{display:flex;align-items:center;gap:calc(6px * var(--widget-space, 1));font-weight:600;color:var(--muted)}.category .cat-meta .percent[data-v-95b913ed]{font-variant-numeric:tabular-nums;color:var(--fg)}.cat-progress .bar[data-v-95b913ed]{position:relative;width:100%;overflow:visible}.cat-progress .bar .bar-track[data-v-95b913ed]{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-95b913ed]{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-95b913ed]{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-95b913ed]{position:absolute;top:0;height:100%;border-radius:999px;opacity:.45;border:0;pointer-events:none}.category .cat-metrics[data-v-95b913ed]{display:flex;flex-wrap:wrap;gap:calc(6px * var(--widget-space, 1));align-items:center;color:var(--fg)}.cat-metrics .today-inline[data-v-95b913ed]{font-weight:600}.cat-footer[data-v-95b913ed]{display:flex;justify-content:space-between;align-items:center}.hint[data-v-95b913ed]{color:var(--muted);font-size:calc(12px * var(--widget-scale, 1))}.badge[data-v-95b913ed]{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-95b913ed]{font-weight:600}.status-on[data-v-95b913ed]{background:color-mix(in srgb,var(--brand) 20%,white);color:var(--brand)}.status-risk[data-v-95b913ed]{background:color-mix(in srgb,#f97316 20%,white);color:#f97316}.status-behind[data-v-95b913ed]{background:color-mix(in srgb,#ef4444 20%,white);color:#ef4444}.status-done[data-v-95b913ed]{background:color-mix(in srgb,var(--pos) 25%,white);color:var(--pos)}.status-endless[data-v-95b913ed]{background:color-mix(in srgb,#f97316 18%,white);color:#ea580c}.status-none[data-v-95b913ed]{background:color-mix(in srgb,var(--muted) 12%,white);color:var(--muted)}.delta[data-v-95b913ed]{font-weight:600}.delta.pos[data-v-95b913ed]{color:var(--pos)}.delta.neg[data-v-95b913ed]{color:var(--neg)}.cat-metrics .hint[data-v-95b913ed],.cat-footer .hint[data-v-95b913ed]{font-size:calc(11px * var(--widget-scale, 1))}.cat-progress[data-v-95b913ed]{padding:calc(2px * var(--widget-space, 1)) 0}.cat-meta .badge[data-v-95b913ed]{font-size:calc(10px * var(--widget-scale, 1))}@media (max-width: 720px){.targets-hustle[data-v-95b913ed]{top:calc(6px * var(--widget-space, 1));right:calc(6px * var(--widget-space, 1))}.targets-hustle__badge[data-v-95b913ed]{padding:calc(6px * var(--widget-space, 1))}.targets-hustle__orb[data-v-95b913ed]{width:200px}.targets-hustle__icon[data-v-95b913ed]{max-width:200px}}.card.time-summary[data-v-885c2315]{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)}.today-highlight[data-v-885c2315]{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-885c2315]{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-885c2315]{font-size:calc(18px * var(--widget-scale, 1));font-weight:700;letter-spacing:-.02em}.today-cats[data-v-885c2315]{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-885c2315]{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-885c2315]{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-885c2315]{font-size:calc(11px * var(--widget-scale,1));color:var(--muted);cursor:default;opacity:.7}.today-cat .name[data-v-885c2315]{font-weight:600}.today-cat .value[data-v-885c2315]{color:var(--muted)}.time-summary-firstline[data-v-885c2315]{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-885c2315]{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-885c2315]{display:grid;gap:calc(4px * var(--widget-space, 1));margin:0;padding:0;list-style:none}.time-summary-metrics li[data-v-885c2315]{display:flex;flex-wrap:wrap;gap:calc(4px * var(--widget-space, 1));color:var(--muted)}.time-summary-metrics strong[data-v-885c2315]{color:var(--fg);font-size:calc(14px * var(--widget-scale, 1))}.time-summary-inline[data-v-885c2315]{font-size:calc(13px * var(--widget-scale, 1));color:var(--fg)}.time-summary-row[data-v-885c2315]{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-885c2315]{color:var(--fg);font-weight:600}.time-summary-row.calendars[data-v-885c2315]{word-break:break-word}.time-summary-row .sep[data-v-885c2315],.time-summary-row .hint[data-v-885c2315],.time-summary-row .share[data-v-885c2315]{color:var(--muted)}.time-summary-row.top-category[data-v-885c2315]{align-items:center;gap:calc(6px * var(--widget-space, 1))}.time-summary-activity[data-v-885c2315]{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-885c2315]{font-weight:600;color:var(--fg)}.time-summary-activity__line[data-v-885c2315]{display:flex;flex-wrap:wrap;gap:calc(6px * var(--widget-space, 1))}.time-summary-activity__delta[data-v-885c2315]{color:var(--muted)}.time-summary-history[data-v-885c2315]{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-885c2315]{gap:calc(10px * var(--widget-space, 1))}.time-summary-history__header[data-v-885c2315]{display:flex;align-items:center;justify-content:space-between;gap:calc(8px * var(--widget-space, 1))}.time-summary-history__title[data-v-885c2315]{font-weight:600;color:var(--fg)}.time-summary-history__mode[data-v-885c2315]{font-size:calc(11px * var(--widget-scale, 1));text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.time-summary-history__empty[data-v-885c2315]{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-885c2315]{color:var(--fg);font-weight:600}.time-summary-history__empty-copy[data-v-885c2315]{color:var(--muted);line-height:1.45}.time-summary-history__timeline[data-v-885c2315]{display:grid;gap:calc(10px * var(--widget-space, 1))}.history-timeline-entry[data-v-885c2315]{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-885c2315]{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-885c2315]{font-weight:600;color:var(--fg)}.history-timeline-entry__range[data-v-885c2315]{font-size:calc(11px * var(--widget-scale, 1));color:var(--muted)}.history-timeline-entry__delta[data-v-885c2315]{margin-left:auto;font-size:calc(11px * var(--widget-scale, 1));color:var(--muted)}.history-timeline-entry__metrics[data-v-885c2315]{display:grid;gap:calc(6px * var(--widget-space, 1));grid-template-columns:repeat(auto-fit,minmax(120px,1fr))}.history-timeline-cell[data-v-885c2315]{display:flex;flex-direction:column;gap:calc(2px * var(--widget-space, 1))}.history-timeline-cell__label[data-v-885c2315]{font-size:calc(11px * var(--widget-scale, 1));color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.history-timeline-cell__value[data-v-885c2315]{font-size:calc(12px * var(--widget-scale, 1));color:var(--fg);font-weight:600}.time-summary-history__accordion[data-v-885c2315]{display:grid;gap:calc(10px * var(--widget-space, 1))}.history-accordion-entry[data-v-885c2315]{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-885c2315]{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-885c2315]{font-weight:600;color:var(--fg)}.history-accordion-entry__range[data-v-885c2315]{font-size:calc(11px * var(--widget-scale, 1));color:var(--muted)}.history-accordion-entry__summary[data-v-885c2315]{font-size:calc(12px * var(--widget-scale, 1));color:var(--fg);font-weight:600}.history-accordion-entry__delta[data-v-885c2315]{font-size:calc(11px * var(--widget-scale, 1));color:var(--muted)}.history-accordion-entry__caret[data-v-885c2315]{font-size:calc(14px * var(--widget-scale, 1));color:var(--muted);line-height:1}.history-accordion-entry__body[data-v-885c2315]{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-885c2315]{display:grid;gap:calc(4px * var(--widget-space, 1))}.history-accordion-group__title[data-v-885c2315]{font-size:calc(11px * var(--widget-scale, 1));text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.history-accordion-group__metrics[data-v-885c2315]{display:grid;gap:calc(6px * var(--widget-space, 1));grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.history-accordion-group__metric[data-v-885c2315]{display:grid;gap:calc(2px * var(--widget-space, 1))}.history-accordion-group__metric-label[data-v-885c2315]{font-size:calc(11px * var(--widget-scale, 1));color:var(--muted)}.history-accordion-group__metric-value[data-v-885c2315]{font-size:calc(11px * var(--widget-scale, 1));color:var(--fg);font-weight:600}.summary-badge[data-v-885c2315]{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-885c2315]{background:color-mix(in srgb,var(--brand) 20%,white);color:var(--brand)}.status-risk[data-v-885c2315]{background:color-mix(in srgb,#f97316 20%,white);color:#f97316}.status-behind[data-v-885c2315]{background:color-mix(in srgb,#ef4444 20%,white);color:#ef4444}.status-done[data-v-885c2315]{background:color-mix(in srgb,var(--pos) 25%,white);color:var(--pos)}.status-none[data-v-885c2315]{background:color-mix(in srgb,var(--muted) 12%,white);color:var(--muted)}
|
||
/*$vite$:1*/`,document.head.appendChild(il);/**
|
||
* @vue/shared v3.5.20
|
||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||
* @license MIT
|
||
**//*! #__NO_SIDE_EFFECTS__ */function us(e){const t=Object.create(null);for(const a of e.split(","))t[a]=1;return a=>a in t}const gt={},Oo=[],Da=()=>{},ll=()=>!1,qr=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&(e.charCodeAt(2)>122||e.charCodeAt(2)<97),gs=e=>e.startsWith("onUpdate:"),At=Object.assign,ps=(e,t)=>{const a=e.indexOf(t);a>-1&&e.splice(a,1)},ug=Object.prototype.hasOwnProperty,rt=(e,t)=>ug.call(e,t),ze=Array.isArray,Bo=e=>lr(e)==="[object Map]",Kr=e=>lr(e)==="[object Set]",dl=e=>lr(e)==="[object Date]",Ge=e=>typeof e=="function",wt=e=>typeof e=="string",_a=e=>typeof e=="symbol",pt=e=>e!==null&&typeof e=="object",cl=e=>(pt(e)||Ge(e))&&Ge(e.then)&&Ge(e.catch),ul=Object.prototype.toString,lr=e=>ul.call(e),gg=e=>lr(e).slice(8,-1),gl=e=>lr(e)==="[object Object]",fs=e=>wt(e)&&e!=="NaN"&&e[0]!=="-"&&""+parseInt(e,10)===e,dr=us(",key,ref,ref_for,ref_key,onVnodeBeforeMount,onVnodeMounted,onVnodeBeforeUpdate,onVnodeUpdated,onVnodeBeforeUnmount,onVnodeUnmounted"),Jr=e=>{const t=Object.create(null);return a=>t[a]||(t[a]=e(a))},pg=/-(\w)/g,va=Jr(e=>e.replace(pg,(t,a)=>a?a.toUpperCase():"")),fg=/\B([A-Z])/g,ro=Jr(e=>e.replace(fg,"-$1").toLowerCase()),Zr=Jr(e=>e.charAt(0).toUpperCase()+e.slice(1)),bs=Jr(e=>e?`on${Zr(e)}`:""),no=(e,t)=>!Object.is(e,t),Yr=(e,...t)=>{for(let a=0;a<e.length;a++)e[a](...t)},pl=(e,t,a,o=!1)=>{Object.defineProperty(e,t,{configurable:!0,enumerable:!1,writable:o,value:a})},Xr=e=>{const t=parseFloat(e);return isNaN(t)?e:t},bg=e=>{const t=wt(e)?Number(e):NaN;return isNaN(t)?e:t};let fl;const Qr=()=>fl||(fl=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:typeof global<"u"?global:{});function He(e){if(ze(e)){const t={};for(let a=0;a<e.length;a++){const o=e[a],r=wt(o)?yg(o):He(o);if(r)for(const n in r)t[n]=r[n]}return t}else if(wt(e)||pt(e))return e}const vg=/;(?![^(]*\))/g,hg=/:([^]+)/,mg=/\/\*[^]*?\*\//g;function yg(e){const t={};return e.replace(mg,"").split(vg).forEach(a=>{if(a){const o=a.split(hg);o.length>1&&(t[o[0].trim()]=o[1].trim())}}),t}function we(e){let t="";if(wt(e))t=e;else if(ze(e))for(let a=0;a<e.length;a++){const o=we(e[a]);o&&(t+=o+" ")}else if(pt(e))for(const a in e)e[a]&&(t+=a+" ");return t.trim()}const wg=us("itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly");function bl(e){return!!e||e===""}function kg(e,t){if(e.length!==t.length)return!1;let a=!0;for(let o=0;a&&o<e.length;o++)a=en(e[o],t[o]);return a}function en(e,t){if(e===t)return!0;let a=dl(e),o=dl(t);if(a||o)return a&&o?e.getTime()===t.getTime():!1;if(a=_a(e),o=_a(t),a||o)return e===t;if(a=ze(e),o=ze(t),a||o)return a&&o?kg(e,t):!1;if(a=pt(e),o=pt(t),a||o){if(!a||!o)return!1;const r=Object.keys(e).length,n=Object.keys(t).length;if(r!==n)return!1;for(const s in e){const l=e.hasOwnProperty(s),d=t.hasOwnProperty(s);if(l&&!d||!l&&d||!en(e[s],t[s]))return!1}}return String(e)===String(t)}function xg(e,t){return e.findIndex(a=>en(a,t))}const vl=e=>!!(e&&e.__v_isRef===!0),E=e=>wt(e)?e:e==null?"":ze(e)||pt(e)&&(e.toString===ul||!Ge(e.toString))?vl(e)?E(e.value):JSON.stringify(e,hl,2):String(e),hl=(e,t)=>vl(t)?hl(e,t.value):Bo(t)?{[`Map(${t.size})`]:[...t.entries()].reduce((a,[o,r],n)=>(a[vs(o,n)+" =>"]=r,a),{})}:Kr(t)?{[`Set(${t.size})`]:[...t.values()].map(a=>vs(a))}:_a(t)?vs(t):pt(t)&&!ze(t)&&!gl(t)?String(t):t,vs=(e,t="")=>{var a;return _a(e)?`Symbol(${(a=e.description)!=null?a:t})`:e};/**
|
||
* @vue/reactivity v3.5.20
|
||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||
* @license MIT
|
||
**/let aa;class _g{constructor(t=!1){this.detached=t,this._active=!0,this._on=0,this.effects=[],this.cleanups=[],this._isPaused=!1,this.parent=aa,!t&&aa&&(this.index=(aa.scopes||(aa.scopes=[])).push(this)-1)}get active(){return this._active}pause(){if(this._active){this._isPaused=!0;let t,a;if(this.scopes)for(t=0,a=this.scopes.length;t<a;t++)this.scopes[t].pause();for(t=0,a=this.effects.length;t<a;t++)this.effects[t].pause()}}resume(){if(this._active&&this._isPaused){this._isPaused=!1;let t,a;if(this.scopes)for(t=0,a=this.scopes.length;t<a;t++)this.scopes[t].resume();for(t=0,a=this.effects.length;t<a;t++)this.effects[t].resume()}}run(t){if(this._active){const a=aa;try{return aa=this,t()}finally{aa=a}}}on(){++this._on===1&&(this.prevScope=aa,aa=this)}off(){this._on>0&&--this._on===0&&(aa=this.prevScope,this.prevScope=void 0)}stop(t){if(this._active){this._active=!1;let a,o;for(a=0,o=this.effects.length;a<o;a++)this.effects[a].stop();for(this.effects.length=0,a=0,o=this.cleanups.length;a<o;a++)this.cleanups[a]();if(this.cleanups.length=0,this.scopes){for(a=0,o=this.scopes.length;a<o;a++)this.scopes[a].stop(!0);this.scopes.length=0}if(!this.detached&&this.parent&&!t){const r=this.parent.scopes.pop();r&&r!==this&&(this.parent.scopes[this.index]=r,r.index=this.index)}this.parent=void 0}}}function Cg(){return aa}let ft;const hs=new WeakSet;class ml{constructor(t){this.fn=t,this.deps=void 0,this.depsTail=void 0,this.flags=5,this.next=void 0,this.cleanup=void 0,this.scheduler=void 0,aa&&aa.active&&aa.effects.push(this)}pause(){this.flags|=64}resume(){this.flags&64&&(this.flags&=-65,hs.has(this)&&(hs.delete(this),this.trigger()))}notify(){this.flags&2&&!(this.flags&32)||this.flags&8||wl(this)}run(){if(!(this.flags&1))return this.fn();this.flags|=2,Sl(this),kl(this);const t=ft,a=Ca;ft=this,Ca=!0;try{return this.fn()}finally{xl(this),ft=t,Ca=a,this.flags&=-3}}stop(){if(this.flags&1){for(let t=this.deps;t;t=t.nextDep)ks(t);this.deps=this.depsTail=void 0,Sl(this),this.onStop&&this.onStop(),this.flags&=-2}}trigger(){this.flags&64?hs.add(this):this.scheduler?this.scheduler():this.runIfDirty()}runIfDirty(){ws(this)&&this.run()}get dirty(){return ws(this)}}let yl=0,cr,ur;function wl(e,t=!1){if(e.flags|=8,t){e.next=ur,ur=e;return}e.next=cr,cr=e}function ms(){yl++}function ys(){if(--yl>0)return;if(ur){let t=ur;for(ur=void 0;t;){const a=t.next;t.next=void 0,t.flags&=-9,t=a}}let e;for(;cr;){let t=cr;for(cr=void 0;t;){const a=t.next;if(t.next=void 0,t.flags&=-9,t.flags&1)try{t.trigger()}catch(o){e||(e=o)}t=a}}if(e)throw e}function kl(e){for(let t=e.deps;t;t=t.nextDep)t.version=-1,t.prevActiveLink=t.dep.activeLink,t.dep.activeLink=t}function xl(e){let t,a=e.depsTail,o=a;for(;o;){const r=o.prevDep;o.version===-1?(o===a&&(a=r),ks(o),Sg(o)):t=o,o.dep.activeLink=o.prevActiveLink,o.prevActiveLink=void 0,o=r}e.deps=t,e.depsTail=a}function ws(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===gr)||(e.globalVersion=gr,!e.isSSR&&e.flags&128&&(!e.deps&&!e._dirty||!ws(e))))return;e.flags|=2;const t=e.dep,a=ft,o=Ca;ft=e,Ca=!0;try{kl(e);const r=e.fn(e._value);(t.version===0||no(r,e._value))&&(e.flags|=128,e._value=r,t.version++)}catch(r){throw t.version++,r}finally{ft=a,Ca=o,xl(e),e.flags&=-3}}function ks(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)ks(n,!0)}!t&&!--a.sc&&a.map&&a.map.delete(a.key)}function Sg(e){const{prevDep:t,nextDep:a}=e;t&&(t.nextDep=a,e.prevDep=void 0),a&&(a.prevDep=t,e.nextDep=void 0)}let Ca=!0;const Cl=[];function Ea(){Cl.push(Ca),Ca=!1}function Na(){const e=Cl.pop();Ca=e===void 0?!0:e}function Sl(e){const{cleanup:t}=e;if(e.cleanup=void 0,t){const a=ft;ft=void 0;try{t()}finally{ft=a}}}let gr=0;class $g{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 xs{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(!ft||!Ca||ft===this.computed)return;let a=this.activeLink;if(a===void 0||a.sub!==ft)a=this.activeLink=new $g(ft,this),ft.deps?(a.prevDep=ft.depsTail,ft.depsTail.nextDep=a,ft.depsTail=a):ft.deps=ft.depsTail=a,$l(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=ft.depsTail,a.nextDep=void 0,ft.depsTail.nextDep=a,ft.depsTail=a,ft.deps===a&&(ft.deps=o)}return a}trigger(t){this.version++,gr++,this.notify(t)}notify(t){ms();try{for(let a=this.subs;a;a=a.prevSub)a.sub.notify()&&a.sub.dep.notify()}finally{ys()}}}function $l(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)$l(o)}const a=e.dep.subs;a!==e&&(e.prevSub=a,a&&(a.nextSub=e)),e.dep.subs=e}}const tn=new WeakMap,mo=Symbol(""),_s=Symbol(""),pr=Symbol("");function Wt(e,t,a){if(Ca&&ft){let o=tn.get(e);o||tn.set(e,o=new Map);let r=o.get(a);r||(o.set(a,r=new xs),r.map=o,r.key=a),r.track()}}function Ra(e,t,a,o,r,n){const s=tn.get(e);if(!s){gr++;return}const l=d=>{d&&d.trigger()};if(ms(),t==="clear")s.forEach(l);else{const d=ze(e),g=d&&fs(a);if(d&&a==="length"){const u=Number(o);s.forEach((b,v)=>{(v==="length"||v===pr||!_a(v)&&v>=u)&&l(b)})}else switch((a!==void 0||s.has(void 0))&&l(s.get(a)),g&&l(s.get(pr)),t){case"add":d?g&&l(s.get("length")):(l(s.get(mo)),Bo(e)&&l(s.get(_s)));break;case"delete":d||(l(s.get(mo)),Bo(e)&&l(s.get(_s)));break;case"set":Bo(e)&&l(s.get(mo));break}}ys()}function Tg(e,t){const a=tn.get(e);return a&&a.get(t)}function Ho(e){const t=Qe(e);return t===e?t:(Wt(t,"iterate",pr),ha(e)?t:t.map(Ot))}function an(e){return Wt(e=Qe(e),"iterate",pr),e}const Mg={__proto__:null,[Symbol.iterator](){return Cs(this,Symbol.iterator,Ot)},concat(...e){return Ho(this).concat(...e.map(t=>ze(t)?Ho(t):t))},entries(){return Cs(this,"entries",e=>(e[1]=Ot(e[1]),e))},every(e,t){return ja(this,"every",e,t,void 0,arguments)},filter(e,t){return ja(this,"filter",e,t,a=>a.map(Ot),arguments)},find(e,t){return ja(this,"find",e,t,Ot,arguments)},findIndex(e,t){return ja(this,"findIndex",e,t,void 0,arguments)},findLast(e,t){return ja(this,"findLast",e,t,Ot,arguments)},findLastIndex(e,t){return ja(this,"findLastIndex",e,t,void 0,arguments)},forEach(e,t){return ja(this,"forEach",e,t,void 0,arguments)},includes(...e){return Ss(this,"includes",e)},indexOf(...e){return Ss(this,"indexOf",e)},join(e){return Ho(this).join(e)},lastIndexOf(...e){return Ss(this,"lastIndexOf",e)},map(e,t){return ja(this,"map",e,t,void 0,arguments)},pop(){return fr(this,"pop")},push(...e){return fr(this,"push",e)},reduce(e,...t){return Tl(this,"reduce",e,t)},reduceRight(e,...t){return Tl(this,"reduceRight",e,t)},shift(){return fr(this,"shift")},some(e,t){return ja(this,"some",e,t,void 0,arguments)},splice(...e){return fr(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 fr(this,"unshift",e)},values(){return Cs(this,"values",Ot)}};function Cs(e,t,a){const o=an(e),r=o[t]();return o!==e&&!ha(e)&&(r._next=r.next,r.next=()=>{const n=r._next();return n.value&&(n.value=a(n.value)),n}),r}const Ag=Array.prototype;function ja(e,t,a,o,r,n){const s=an(e),l=s!==e&&!ha(e),d=s[t];if(d!==Ag[t]){const b=d.apply(e,n);return l?Ot(b):b}let g=a;s!==e&&(l?g=function(b,v){return a.call(this,Ot(b),v,e)}:a.length>2&&(g=function(b,v){return a.call(this,b,v,e)}));const u=d.call(s,g,o);return l&&r?r(u):u}function Tl(e,t,a,o){const r=an(e);let n=a;return r!==e&&(ha(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,Ot(l),d,e)}),r[t](n,...o)}function Ss(e,t,a){const o=Qe(e);Wt(o,"iterate",pr);const r=o[t](...a);return(r===-1||r===!1)&&Ts(a[0])?(a[0]=Qe(a[0]),o[t](...a)):r}function fr(e,t,a=[]){Ea(),ms();const o=Qe(e)[t].apply(e,a);return ys(),Na(),o}const Lg=us("__proto__,__v_isRef,__isVue"),Ml=new Set(Object.getOwnPropertyNames(Symbol).filter(e=>e!=="arguments"&&e!=="caller").map(e=>Symbol[e]).filter(_a));function Dg(e){_a(e)||(e=String(e));const t=Qe(this);return Wt(t,"has",e),t.hasOwnProperty(e)}class Al{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?Ol:Il:n?Nl:El).get(t)||Object.getPrototypeOf(t)===Object.getPrototypeOf(o)?t:void 0;const s=ze(t);if(!r){let d;if(s&&(d=Mg[a]))return d;if(a==="hasOwnProperty")return Dg}const l=Reflect.get(t,a,$t(t)?t:o);return(_a(a)?Ml.has(a):Lg(a))||(r||Wt(t,"get",a),n)?l:$t(l)?s&&fs(a)?l:l.value:pt(l)?r?Bl(l):br(l):l}}class Ll extends Al{constructor(t=!1){super(!1,t)}set(t,a,o,r){let n=t[a];if(!this._isShallow){const d=so(n);if(!ha(o)&&!so(o)&&(n=Qe(n),o=Qe(o)),!ze(t)&&$t(n)&&!$t(o))return d||(n.value=o),!0}const s=ze(t)&&fs(a)?Number(a)<t.length:rt(t,a),l=Reflect.set(t,a,o,$t(t)?t:r);return t===Qe(r)&&(s?no(o,n)&&Ra(t,"set",a,o):Ra(t,"add",a,o)),l}deleteProperty(t,a){const o=rt(t,a);t[a];const r=Reflect.deleteProperty(t,a);return r&&o&&Ra(t,"delete",a,void 0),r}has(t,a){const o=Reflect.has(t,a);return(!_a(a)||!Ml.has(a))&&Wt(t,"has",a),o}ownKeys(t){return Wt(t,"iterate",ze(t)?"length":mo),Reflect.ownKeys(t)}}class Dl extends Al{constructor(t=!1){super(!0,t)}set(t,a){return!0}deleteProperty(t,a){return!0}}const Eg=new Ll,Ng=new Dl,Ig=new Ll(!0),Og=new Dl(!0),$s=e=>e,on=e=>Reflect.getPrototypeOf(e);function Bg(e,t,a){return function(...o){const r=this.__v_raw,n=Qe(r),s=Bo(n),l=e==="entries"||e===Symbol.iterator&&s,d=e==="keys"&&s,g=r[e](...o),u=a?$s:t?ln:Ot;return!t&&Wt(n,"iterate",d?_s:mo),{next(){const{value:b,done:v}=g.next();return v?{value:b,done:v}:{value:l?[u(b[0]),u(b[1])]:u(b),done:v}},[Symbol.iterator](){return this}}}}function rn(e){return function(...t){return e==="delete"?!1:e==="clear"?void 0:this}}function Hg(e,t){const a={get(r){const n=this.__v_raw,s=Qe(n),l=Qe(r);e||(no(r,l)&&Wt(s,"get",r),Wt(s,"get",l));const{has:d}=on(s),g=t?$s:e?ln:Ot;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&&Wt(Qe(r),"iterate",mo),r.size},has(r){const n=this.__v_raw,s=Qe(n),l=Qe(r);return e||(no(r,l)&&Wt(s,"has",r),Wt(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=Qe(l),g=t?$s:e?ln:Ot;return!e&&Wt(d,"iterate",mo),l.forEach((u,b)=>r.call(n,g(u),g(b),s))}};return At(a,e?{add:rn("add"),set:rn("set"),delete:rn("delete"),clear:rn("clear")}:{add(r){!t&&!ha(r)&&!so(r)&&(r=Qe(r));const n=Qe(this);return on(n).has.call(n,r)||(n.add(r),Ra(n,"add",r,r)),this},set(r,n){!t&&!ha(n)&&!so(n)&&(n=Qe(n));const s=Qe(this),{has:l,get:d}=on(s);let g=l.call(s,r);g||(r=Qe(r),g=l.call(s,r));const u=d.call(s,r);return s.set(r,n),g?no(n,u)&&Ra(s,"set",r,n):Ra(s,"add",r,n),this},delete(r){const n=Qe(this),{has:s,get:l}=on(n);let d=s.call(n,r);d||(r=Qe(r),d=s.call(n,r)),l&&l.call(n,r);const g=n.delete(r);return d&&Ra(n,"delete",r,void 0),g},clear(){const r=Qe(this),n=r.size!==0,s=r.clear();return n&&Ra(r,"clear",void 0,void 0),s}}),["keys","values","entries",Symbol.iterator].forEach(r=>{a[r]=Bg(r,e,t)}),a}function nn(e,t){const a=Hg(e,t);return(o,r,n)=>r==="__v_isReactive"?!e:r==="__v_isReadonly"?e:r==="__v_raw"?o:Reflect.get(rt(a,r)&&r in o?a:o,r,n)}const Fg={get:nn(!1,!1)},Pg={get:nn(!1,!0)},Wg={get:nn(!0,!1)},zg={get:nn(!0,!0)},El=new WeakMap,Nl=new WeakMap,Il=new WeakMap,Ol=new WeakMap;function Rg(e){switch(e){case"Object":case"Array":return 1;case"Map":case"Set":case"WeakMap":case"WeakSet":return 2;default:return 0}}function jg(e){return e.__v_skip||!Object.isExtensible(e)?0:Rg(gg(e))}function br(e){return so(e)?e:sn(e,!1,Eg,Fg,El)}function Vg(e){return sn(e,!1,Ig,Pg,Nl)}function Bl(e){return sn(e,!0,Ng,Wg,Il)}function i$(e){return sn(e,!0,Og,zg,Ol)}function sn(e,t,a,o,r){if(!pt(e)||e.__v_raw&&!(t&&e.__v_isReactive))return e;const n=jg(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 so(e)?Fo(e.__v_raw):!!(e&&e.__v_isReactive)}function so(e){return!!(e&&e.__v_isReadonly)}function ha(e){return!!(e&&e.__v_isShallow)}function Ts(e){return e?!!e.__v_raw:!1}function Qe(e){const t=e&&e.__v_raw;return t?Qe(t):e}function Ug(e){return!rt(e,"__v_skip")&&Object.isExtensible(e)&&pl(e,"__v_skip",!0),e}const Ot=e=>pt(e)?br(e):e,ln=e=>pt(e)?Bl(e):e;function $t(e){return e?e.__v_isRef===!0:!1}function ne(e){return Gg(e,!1)}function Gg(e,t){return $t(e)?e:new qg(e,t)}class qg{constructor(t,a){this.dep=new xs,this.__v_isRef=!0,this.__v_isShallow=!1,this._rawValue=a?t:Qe(t),this._value=a?t:Ot(t),this.__v_isShallow=a}get value(){return this.dep.track(),this._value}set value(t){const a=this._rawValue,o=this.__v_isShallow||ha(t)||so(t);t=o?t:Qe(t),no(t,a)&&(this._rawValue=t,this._value=o?t:Ot(t),this.dep.trigger())}}function A(e){return $t(e)?e.value:e}const Kg={get:(e,t,a)=>t==="__v_raw"?e:A(Reflect.get(e,t,a)),set:(e,t,a,o)=>{const r=e[t];return $t(r)&&!$t(a)?(r.value=a,!0):Reflect.set(e,t,a,o)}};function Hl(e){return Fo(e)?e:new Proxy(e,Kg)}function Jg(e){const t=ze(e)?new Array(e.length):{};for(const a in e)t[a]=Yg(e,a);return t}class Zg{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 Tg(Qe(this._object),this._key)}}function Yg(e,t,a){const o=e[t];return $t(o)?o:new Zg(e,t,a)}class Xg{constructor(t,a,o){this.fn=t,this.setter=a,this._value=void 0,this.dep=new xs(this),this.__v_isRef=!0,this.deps=void 0,this.depsTail=void 0,this.flags=16,this.globalVersion=gr-1,this.next=void 0,this.effect=this,this.__v_isReadonly=!a,this.isSSR=o}notify(){if(this.flags|=16,!(this.flags&8)&&ft!==this)return wl(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 Qg(e,t,a=!1){let o,r;return Ge(e)?o=e:(o=e.get,r=e.set),new Xg(o,r,a)}const dn={},cn=new WeakMap;let yo;function ep(e,t=!1,a=yo){if(a){let o=cn.get(a);o||cn.set(a,o=[]),o.push(e)}}function tp(e,t,a=gt){const{immediate:o,deep:r,once:n,scheduler:s,augmentJob:l,call:d}=a,g=O=>r?O:ha(O)||r===!1||r===0?Va(O,1):Va(O);let u,b,v,c,f=!1,p=!1;if($t(e)?(b=()=>e.value,f=ha(e)):Fo(e)?(b=()=>g(e),f=!0):ze(e)?(p=!0,f=e.some(O=>Fo(O)||ha(O)),b=()=>e.map(O=>{if($t(O))return O.value;if(Fo(O))return g(O);if(Ge(O))return d?d(O,2):O()})):Ge(e)?t?b=d?()=>d(e,2):e:b=()=>{if(v){Ea();try{v()}finally{Na()}}const O=yo;yo=u;try{return d?d(e,3,[c]):e(c)}finally{yo=O}}:b=Da,t&&r){const O=b,I=r===!0?1/0:r;b=()=>Va(O(),I)}const S=Cg(),x=()=>{u.stop(),S&&S.active&&ps(S.effects,u)};if(n&&t){const O=t;t=(...I)=>{O(...I),x()}}let $=p?new Array(e.length).fill(dn):dn;const _=O=>{if(!(!(u.flags&1)||!u.dirty&&!O))if(t){const I=u.run();if(r||f||(p?I.some((B,y)=>no(B,$[y])):no(I,$))){v&&v();const B=yo;yo=u;try{const y=[I,$===dn?void 0:p&&$[0]===dn?[]:$,c];$=I,d?d(t,3,y):t(...y)}finally{yo=B}}}else u.run()};return l&&l(_),u=new ml(b),u.scheduler=s?()=>s(_,!1):_,c=O=>ep(O,!1,u),v=u.onStop=()=>{const O=cn.get(u);if(O){if(d)d(O,4);else for(const I of O)I();cn.delete(u)}},t?o?_(!0):$=u.run():s?s(_.bind(null,!0),!0):u.run(),x.pause=u.pause.bind(u),x.resume=u.resume.bind(u),x.stop=x,x}function Va(e,t=1/0,a){if(t<=0||!pt(e)||e.__v_skip||(a=a||new Set,a.has(e)))return e;if(a.add(e),t--,$t(e))Va(e.value,t,a);else if(ze(e))for(let o=0;o<e.length;o++)Va(e[o],t,a);else if(Kr(e)||Bo(e))e.forEach(o=>{Va(o,t,a)});else if(gl(e)){for(const o in e)Va(e[o],t,a);for(const o of Object.getOwnPropertySymbols(e))Object.prototype.propertyIsEnumerable.call(e,o)&&Va(e[o],t,a)}return e}/**
|
||
* @vue/runtime-core v3.5.20
|
||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||
* @license MIT
|
||
**/const vr=[];let Ms=!1;function l$(e,...t){if(Ms)return;Ms=!0,Ea();const a=vr.length?vr[vr.length-1].component:null,o=a&&a.appContext.config.warnHandler,r=ap();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 <${Wd(a,n.type)}>`).join(`
|
||
`),r]);else{const n=[`[Vue warn]: ${e}`,...t];r.length&&n.push(`
|
||
`,...op(r)),console.warn(...n)}Na(),Ms=!1}function ap(){let e=vr[vr.length-1];if(!e)return[];const t=[];for(;e;){const a=t[0];a&&a.vnode===e?a.recurseCount++:t.push({vnode:e,recurseCount:0});const o=e.component&&e.component.parent;e=o&&o.vnode}return t}function op(e){const t=[];return e.forEach((a,o)=>{t.push(...o===0?[]:[`
|
||
`],...rp(a))}),t}function rp({vnode:e,recurseCount:t}){const a=t>0?`... (${t} recursive calls)`:"",o=e.component?e.component.parent==null:!1,r=` at <${Wd(e.component,e.type,o)}`,n=">"+a;return e.props?[r,...np(e.props),n]:[r+n]}function np(e){const t=[],a=Object.keys(e);return a.slice(0,3).forEach(o=>{t.push(...Fl(o,e[o]))}),a.length>3&&t.push(" ..."),t}function Fl(e,t,a){return wt(t)?(t=JSON.stringify(t),a?t:[`${e}=${t}`]):typeof t=="number"||typeof t=="boolean"||t==null?a?t:[`${e}=${t}`]:$t(t)?(t=Fl(e,Qe(t.value),!0),a?t:[`${e}=Ref<`,t,">"]):Ge(t)?[`${e}=fn${t.name?`<${t.name}>`:""}`]:(t=Qe(t),a?t:[`${e}=`,t])}function Po(e,t,a,o){try{return o?e(...o):e()}catch(r){hr(r,t,a)}}function Sa(e,t,a,o){if(Ge(e)){const r=Po(e,t,a,o);return r&&cl(r)&&r.catch(n=>{hr(n,t,a)}),r}if(ze(e)){const r=[];for(let n=0;n<e.length;n++)r.push(Sa(e[n],t,a,o));return r}}function hr(e,t,a,o=!0){const r=t?t.vnode:null,{errorHandler:n,throwUnhandledErrorInProduction:s}=t&&t.appContext.config||gt;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 b=0;b<u.length;b++)if(u[b](e,d,g)===!1)return}l=l.parent}if(n){Ea(),Po(n,null,10,[e,d,g]),Na();return}}sp(e,a,r,o,s)}function sp(e,t,a,o=!0,r=!1){if(r)throw e;console.error(e)}const Gt=[];let Ia=-1;const Wo=[];let io=null,zo=0;const Pl=Promise.resolve();let un=null;function zt(e){const t=un||Pl;return e?t.then(this?e.bind(this):e):t}function ip(e){let t=Ia+1,a=Gt.length;for(;t<a;){const o=t+a>>>1,r=Gt[o],n=mr(r);n<e||n===e&&r.flags&2?t=o+1:a=o}return t}function As(e){if(!(e.flags&1)){const t=mr(e),a=Gt[Gt.length-1];!a||!(e.flags&2)&&t>=mr(a)?Gt.push(e):Gt.splice(ip(t),0,e),e.flags|=1,Wl()}}function Wl(){un||(un=Pl.then(jl))}function lp(e){ze(e)?Wo.push(...e):io&&e.id===-1?io.splice(zo+1,0,e):e.flags&1||(Wo.push(e),e.flags|=1),Wl()}function zl(e,t,a=Ia+1){for(;a<Gt.length;a++){const o=Gt[a];if(o&&o.flags&2){if(e&&o.id!==e.uid)continue;Gt.splice(a,1),a--,o.flags&4&&(o.flags&=-2),o(),o.flags&4||(o.flags&=-2)}}}function Rl(e){if(Wo.length){const t=[...new Set(Wo)].sort((a,o)=>mr(a)-mr(o));if(Wo.length=0,io){io.push(...t);return}for(io=t,zo=0;zo<io.length;zo++){const a=io[zo];a.flags&4&&(a.flags&=-2),a.flags&8||a(),a.flags&=-2}io=null,zo=0}}const mr=e=>e.id==null?e.flags&2?-1:1/0:e.id;function jl(e){try{for(Ia=0;Ia<Gt.length;Ia++){const t=Gt[Ia];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(;Ia<Gt.length;Ia++){const t=Gt[Ia];t&&(t.flags&=-2)}Ia=-1,Gt.length=0,Rl(),un=null,(Gt.length||Wo.length)&&jl()}}let Bt=null,Vl=null;function gn(e){const t=Bt;return Bt=e,Vl=e&&e.type.__scopeId||null,t}function mt(e,t=Bt,a){if(!t||e._n)return e;const o=(...r)=>{o._d&&Dd(-1);const n=gn(t);let s;try{s=e(...r)}finally{gn(n),o._d&&Dd(1)}return s};return o._n=!0,o._c=!0,o._d=!0,o}function Ro(e,t){if(Bt===null)return e;const a=_n(Bt),o=e.dirs||(e.dirs=[]);for(let r=0;r<t.length;r++){let[n,s,l,d=gt]=t[r];n&&(Ge(n)&&(n={mounted:n,updated:n}),n.deep&&Va(s),o.push({dir:n,instance:a,value:s,oldValue:void 0,arg:l,modifiers:d}))}return e}function wo(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&&(Ea(),Sa(d,a,8,[e.el,l,e,t]),Na())}}const dp=Symbol("_vte"),Ul=e=>e.__isTeleport,Ua=Symbol("_leaveCb"),pn=Symbol("_enterCb");function cp(){const e={isMounted:!1,isLeaving:!1,isUnmounting:!1,leavingVNodes:new Map};return Lt(()=>{e.isMounted=!0}),Ct(()=>{e.isUnmounting=!0}),e}const ma=[Function,Array],Gl={mode:String,appear:Boolean,persisted:Boolean,onBeforeEnter:ma,onEnter:ma,onAfterEnter:ma,onEnterCancelled:ma,onBeforeLeave:ma,onLeave:ma,onAfterLeave:ma,onLeaveCancelled:ma,onBeforeAppear:ma,onAppear:ma,onAfterAppear:ma,onAppearCancelled:ma},ql=e=>{const t=e.subTree;return t.component?ql(t.component):t},up={name:"BaseTransition",props:Gl,setup(e,{slots:t}){const a=kn(),o=cp();return()=>{const r=t.default&&Yl(t.default(),!0);if(!r||!r.length)return;const n=Kl(r),s=Qe(e),{mode:l}=s;if(o.isLeaving)return Ds(n);const d=Zl(n);if(!d)return Ds(n);let g=Ls(d,s,o,a,b=>g=b);d.type!==Rt&&yr(d,g);let u=a.subTree&&Zl(a.subTree);if(u&&u.type!==Rt&&!xo(d,u)&&ql(a).type!==Rt){let b=Ls(u,s,o,a);if(yr(u,b),l==="out-in"&&d.type!==Rt)return o.isLeaving=!0,b.afterLeave=()=>{o.isLeaving=!1,a.job.flags&8||a.update(),delete b.afterLeave,u=void 0},Ds(n);l==="in-out"&&d.type!==Rt?b.delayLeave=(v,c,f)=>{const p=Jl(o,u);p[String(u.key)]=u,v[Ua]=()=>{c(),v[Ua]=void 0,delete g.delayedLeave,u=void 0},g.delayedLeave=()=>{f(),delete g.delayedLeave,u=void 0}}:u=void 0}else u&&(u=void 0);return n}}};function Kl(e){let t=e[0];if(e.length>1){for(const a of e)if(a.type!==Rt){t=a;break}}return t}const gp=up;function Jl(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 Ls(e,t,a,o,r){const{appear:n,mode:s,persisted:l=!1,onBeforeEnter:d,onEnter:g,onAfterEnter:u,onEnterCancelled:b,onBeforeLeave:v,onLeave:c,onAfterLeave:f,onLeaveCancelled:p,onBeforeAppear:S,onAppear:x,onAfterAppear:$,onAppearCancelled:_}=t,O=String(e.key),I=Jl(a,e),B=(m,k)=>{m&&Sa(m,o,9,k)},y=(m,k)=>{const L=k[1];B(m,k),ze(m)?m.every(z=>z.length<=1)&&L():m.length<=1&&L()},T={mode:s,persisted:l,beforeEnter(m){let k=d;if(!a.isMounted)if(n)k=S||d;else return;m[Ua]&&m[Ua](!0);const L=I[O];L&&xo(e,L)&&L.el[Ua]&&L.el[Ua](),B(k,[m])},enter(m){let k=g,L=u,z=b;if(!a.isMounted)if(n)k=x||g,L=$||u,z=_||b;else return;let M=!1;const Z=m[pn]=j=>{M||(M=!0,j?B(z,[m]):B(L,[m]),T.delayedLeave&&T.delayedLeave(),m[pn]=void 0)};k?y(k,[m,Z]):Z()},leave(m,k){const L=String(e.key);if(m[pn]&&m[pn](!0),a.isUnmounting)return k();B(v,[m]);let z=!1;const M=m[Ua]=Z=>{z||(z=!0,k(),Z?B(p,[m]):B(f,[m]),m[Ua]=void 0,I[L]===e&&delete I[L])};I[L]=e,c?y(c,[m,M]):M()},clone(m){const k=Ls(m,t,a,o,r);return r&&r(k),k}};return T}function Ds(e){if(kr(e))return e=lo(e),e.children=null,e}function Zl(e){if(!kr(e))return Ul(e.type)&&e.children?Kl(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&&Ge(a.default))return a.default()}}function yr(e,t){e.shapeFlag&6&&e.component?(e.transition=t,yr(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 Yl(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===ke?(s.patchFlag&128&&r++,o=o.concat(Yl(s.children,t,l))):(t||s.type!==Rt)&&o.push(l!=null?lo(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 Pe(e,t){return Ge(e)?At({name:e.name},t,{setup:e}):e}function Es(e){e.ids=[e.ids[0]+e.ids[2]+++"-",0,0]}function wr(e,t,a,o,r=!1){if(ze(e)){e.forEach((f,p)=>wr(f,t&&(ze(t)?t[p]:t),a,o,r));return}if(jo(o)&&!r){o.shapeFlag&512&&o.type.__asyncResolved&&o.component.subTree.component&&wr(e,t,a,o.component.subTree);return}const n=o.shapeFlag&4?_n(o.component):o.el,s=r?null:n,{i:l,r:d}=e,g=t&&t.r,u=l.refs===gt?l.refs={}:l.refs,b=l.setupState,v=Qe(b),c=b===gt?ll:f=>rt(v,f);if(g!=null&&g!==d){if(wt(g))u[g]=null,c(g)&&(b[g]=null);else if($t(g)){g.value=null;const f=t;f.k&&(u[f.k]=null)}}if(Ge(d))Po(d,l,12,[s,u]);else{const f=wt(d),p=$t(d);if(f||p){const S=()=>{if(e.f){const x=f?c(d)?b[d]:u[d]:d.value;if(r)ze(x)&&ps(x,n);else if(ze(x))x.includes(n)||x.push(n);else if(f)u[d]=[n],c(d)&&(b[d]=u[d]);else{const $=[n];d.value=$,e.k&&(u[e.k]=$)}}else f?(u[d]=s,c(d)&&(b[d]=s)):p&&(d.value=s,e.k&&(u[e.k]=s))};s?(S.id=-1,da(S,a)):S()}}}const Xl=e=>e.nodeType===8;Qr().requestIdleCallback,Qr().cancelIdleCallback;function pp(e,t){if(Xl(e)&&e.data==="["){let a=1,o=e.nextSibling;for(;o;){if(o.nodeType===1){if(t(o)===!1)break}else if(Xl(o))if(o.data==="]"){if(--a===0)break}else o.data==="["&&a++;o=o.nextSibling}}else t(e)}const jo=e=>!!e.type.__asyncLoader;/*! #__NO_SIDE_EFFECTS__ */function qt(e){Ge(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,b=0;const v=()=>(b++,g=null,c()),c=()=>{let f;return g||(f=g=t().catch(p=>{if(p=p instanceof Error?p:new Error(String(p)),d)return new Promise((S,x)=>{d(p,()=>S(v()),()=>x(p),b+1)});throw p}).then(p=>f!==g&&g?g:(p&&(p.__esModule||p[Symbol.toStringTag]==="Module")&&(p=p.default),u=p,p)))};return Pe({name:"AsyncComponentWrapper",__asyncLoader:c,__asyncHydrate(f,p,S){let x=!1;(p.bu||(p.bu=[])).push(()=>x=!0);const $=()=>{x||S()},_=n?()=>{const O=n($,I=>pp(f,I));O&&(p.bum||(p.bum=[])).push(O)}:$;u?_():c().then(()=>!p.isUnmounted&&_())},get __asyncResolved(){return u},setup(){const f=Ht;if(Es(f),u)return()=>Ns(u,f);const p=_=>{g=null,hr(_,f,13,!o)};if(l&&f.suspense||Uo)return c().then(_=>()=>Ns(_,f)).catch(_=>(p(_),()=>o?We(o,{error:_}):null));const S=ne(!1),x=ne(),$=ne(!!r);return r&&setTimeout(()=>{$.value=!1},r),s!=null&&setTimeout(()=>{if(!S.value&&!x.value){const _=new Error(`Async component timed out after ${s}ms.`);p(_),x.value=_}},s),c().then(()=>{S.value=!0,f.parent&&kr(f.parent.vnode)&&f.parent.update()}).catch(_=>{p(_),x.value=_}),()=>{if(S.value&&u)return Ns(u,f);if(x.value&&o)return We(o,{error:x.value});if(a&&!$.value)return We(a)}}})}function Ns(e,t){const{ref:a,props:o,children:r,ce:n}=t.vnode,s=We(e,o,r);return s.ref=a,s.ce=n,delete t.vnode.ce,s}const kr=e=>e.type.__isKeepAlive;function fp(e,t){Ql(e,"a",t)}function bp(e,t){Ql(e,"da",t)}function Ql(e,t,a=Ht){const o=e.__wdc||(e.__wdc=()=>{let r=a;for(;r;){if(r.isDeactivated)return;r=r.parent}return e()});if(fn(t,o,a),a){let r=a.parent;for(;r&&r.parent;)kr(r.parent.vnode)&&vp(o,t,a,r),r=r.parent}}function vp(e,t,a,o){const r=fn(t,e,o,!0);Is(()=>{ps(o[t],r)},a)}function fn(e,t,a=Ht,o=!1){if(a){const r=a[e]||(a[e]=[]),n=t.__weh||(t.__weh=(...s)=>{Ea();const l=Tr(a),d=Sa(t,a,e,s);return l(),Na(),d});return o?r.unshift(n):r.push(n),n}}const Ga=e=>(t,a=Ht)=>{(!Uo||e==="sp")&&fn(e,(...o)=>t(...o),a)},hp=Ga("bm"),Lt=Ga("m"),mp=Ga("bu"),yp=Ga("u"),Ct=Ga("bum"),Is=Ga("um"),wp=Ga("sp"),kp=Ga("rtg"),xp=Ga("rtc");function _p(e,t=Ht){fn("ec",e,t)}const ed="components";function Cp(e,t){return od(ed,e,!0,t)||e}const td=Symbol.for("v-ndc");function ad(e){return wt(e)?od(ed,e,!1)||e:e||td}function od(e,t,a=!0,o=!1){const r=Bt||Ht;if(r){const n=r.type;{const l=Pd(n,!1);if(l&&(l===t||l===va(t)||l===Zr(va(t))))return n}const s=rd(r[e]||n[e],t)||rd(r.appContext[e],t);return!s&&o?n:s}}function rd(e,t){return e&&(e[t]||e[va(t)]||e[Zr(va(t))])}function Ie(e,t,a,o){let r;const n=a,s=ze(e);if(s||wt(e)){const l=s&&Fo(e);let d=!1,g=!1;l&&(d=!ha(e),g=so(e),e=an(e)),r=new Array(e.length);for(let u=0,b=e.length;u<b;u++)r[u]=t(d?g?ln(Ot(e[u])):Ot(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(pt(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 Os(e,t,a={},o,r){if(Bt.ce||Bt.parent&&jo(Bt.parent)&&Bt.parent.ce)return t!=="default"&&(a.name=t),h(),nt(ke,null,[We("slot",a,o&&o())],64);let n=e[t];n&&n._c&&(n._d=!1),h();const s=n&&nd(n(a)),l=a.key||s&&s.key,d=nt(ke,{key:(l&&!_a(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 nd(e){return e.some(t=>$r(t)?!(t.type===Rt||t.type===ke&&!nd(t.children)):!0)?e:null}const Bs=e=>e?Bd(e)?_n(e):Bs(e.parent):null,xr=At(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=>Bs(e.parent),$root:e=>Bs(e.root),$host:e=>e.ce,$emit:e=>e.emit,$options:e=>dd(e),$forceUpdate:e=>e.f||(e.f=()=>{As(e.update)}),$nextTick:e=>e.n||(e.n=zt.bind(e.proxy)),$watch:e=>Gp.bind(e)}),Hs=(e,t)=>e!==gt&&!e.__isScriptSetup&&rt(e,t),Sp={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(Hs(o,t))return s[t]=1,o[t];if(r!==gt&&rt(r,t))return s[t]=2,r[t];if((g=e.propsOptions[0])&&rt(g,t))return s[t]=3,n[t];if(a!==gt&&rt(a,t))return s[t]=4,a[t];Fs&&(s[t]=0)}}const u=xr[t];let b,v;if(u)return t==="$attrs"&&Wt(e.attrs,"get",""),u(e);if((b=l.__cssModules)&&(b=b[t]))return b;if(a!==gt&&rt(a,t))return s[t]=4,a[t];if(v=d.config.globalProperties,rt(v,t))return v[t]},set({_:e},t,a){const{data:o,setupState:r,ctx:n}=e;return Hs(r,t)?(r[t]=a,!0):o!==gt&&rt(o,t)?(o[t]=a,!0):rt(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!==gt&&l[0]!=="$"&&rt(e,l)||Hs(t,l)||(d=n[0])&&rt(d,l)||rt(o,l)||rt(xr,l)||rt(r.config.globalProperties,l)||(g=s.__cssModules)&&g[l])},defineProperty(e,t,a){return a.get!=null?e._.accessCache[t]=0:rt(a,"value")&&this.set(e,t,a.value,null),Reflect.defineProperty(e,t,a)}};function sd(e){return ze(e)?e.reduce((t,a)=>(t[a]=null,t),{}):e}let Fs=!0;function $p(e){const t=dd(e),a=e.proxy,o=e.ctx;Fs=!1,t.beforeCreate&&id(t.beforeCreate,e,"bc");const{data:r,computed:n,methods:s,watch:l,provide:d,inject:g,created:u,beforeMount:b,mounted:v,beforeUpdate:c,updated:f,activated:p,deactivated:S,beforeDestroy:x,beforeUnmount:$,destroyed:_,unmounted:O,render:I,renderTracked:B,renderTriggered:y,errorCaptured:T,serverPrefetch:m,expose:k,inheritAttrs:L,components:z,directives:M,filters:Z}=t;if(g&&Tp(g,o,null),s)for(const Y in s){const U=s[Y];Ge(U)&&(o[Y]=U.bind(a))}if(r){const Y=r.call(a,a);pt(Y)&&(e.data=br(Y))}if(Fs=!0,n)for(const Y in n){const U=n[Y],le=Ge(U)?U.bind(a,a):Ge(U.get)?U.get.bind(a,a):Da,J=!Ge(U)&&Ge(U.set)?U.set.bind(a):Da,R=C({get:le,set:J});Object.defineProperty(o,Y,{enumerable:!0,configurable:!0,get:()=>R.value,set:D=>R.value=D})}if(l)for(const Y in l)ld(l[Y],o,a,Y);if(d){const Y=Ge(d)?d.call(a):d;Reflect.ownKeys(Y).forEach(U=>{Np(U,Y[U])})}u&&id(u,e,"c");function q(Y,U){ze(U)?U.forEach(le=>Y(le.bind(a))):U&&Y(U.bind(a))}if(q(hp,b),q(Lt,v),q(mp,c),q(yp,f),q(fp,p),q(bp,S),q(_p,T),q(xp,B),q(kp,y),q(Ct,$),q(Is,O),q(wp,m),ze(k))if(k.length){const Y=e.exposed||(e.exposed={});k.forEach(U=>{Object.defineProperty(Y,U,{get:()=>a[U],set:le=>a[U]=le,enumerable:!0})})}else e.exposed||(e.exposed={});I&&e.render===Da&&(e.render=I),L!=null&&(e.inheritAttrs=L),z&&(e.components=z),M&&(e.directives=M),m&&Es(e)}function Tp(e,t,a=Da){ze(e)&&(e=Ps(e));for(const o in e){const r=e[o];let n;pt(r)?"default"in r?n=vn(r.from||o,r.default,!0):n=vn(r.from||o):n=vn(r),$t(n)?Object.defineProperty(t,o,{enumerable:!0,configurable:!0,get:()=>n.value,set:s=>n.value=s}):t[o]=n}}function id(e,t,a){Sa(ze(e)?e.map(o=>o.bind(t.proxy)):e.bind(t.proxy),t,a)}function ld(e,t,a,o){let r=o.includes(".")?$d(a,o):()=>a[o];if(wt(e)){const n=t[e];Ge(n)&&Be(r,n)}else if(Ge(e))Be(r,e.bind(a));else if(pt(e))if(ze(e))e.forEach(n=>ld(n,t,a,o));else{const n=Ge(e.handler)?e.handler.bind(a):t[e.handler];Ge(n)&&Be(r,n,e)}}function dd(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=>bn(d,g,s,!0)),bn(d,t,s)),pt(t)&&n.set(t,d),d}function bn(e,t,a,o=!1){const{mixins:r,extends:n}=t;n&&bn(e,n,a,!0),r&&r.forEach(s=>bn(e,s,a,!0));for(const s in t)if(!(o&&s==="expose")){const l=Mp[s]||a&&a[s];e[s]=l?l(e[s],t[s]):t[s]}return e}const Mp={data:cd,props:ud,emits:ud,methods:_r,computed:_r,beforeCreate:Kt,created:Kt,beforeMount:Kt,mounted:Kt,beforeUpdate:Kt,updated:Kt,beforeDestroy:Kt,beforeUnmount:Kt,destroyed:Kt,unmounted:Kt,activated:Kt,deactivated:Kt,errorCaptured:Kt,serverPrefetch:Kt,components:_r,directives:_r,watch:Lp,provide:cd,inject:Ap};function cd(e,t){return t?e?function(){return At(Ge(e)?e.call(this,this):e,Ge(t)?t.call(this,this):t)}:t:e}function Ap(e,t){return _r(Ps(e),Ps(t))}function Ps(e){if(ze(e)){const t={};for(let a=0;a<e.length;a++)t[e[a]]=e[a];return t}return e}function Kt(e,t){return e?[...new Set([].concat(e,t))]:t}function _r(e,t){return e?At(Object.create(null),e,t):t}function ud(e,t){return e?ze(e)&&ze(t)?[...new Set([...e,...t])]:At(Object.create(null),sd(e),sd(t??{})):t}function Lp(e,t){if(!e)return t;if(!t)return e;const a=At(Object.create(null),e);for(const o in t)a[o]=Kt(e[o],t[o]);return a}function gd(){return{app:null,config:{isNativeTag:ll,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 Dp=0;function Ep(e,t){return function(o,r=null){Ge(o)||(o=At({},o)),r!=null&&!pt(r)&&(r=null);const n=gd(),s=new WeakSet,l=[];let d=!1;const g=n.app={_uid:Dp++,_component:o,_props:r,_container:null,_context:n,_instance:null,version:ff,get config(){return n.config},set config(u){},use(u,...b){return s.has(u)||(u&&Ge(u.install)?(s.add(u),u.install(g,...b)):Ge(u)&&(s.add(u),u(g,...b))),g},mixin(u){return n.mixins.includes(u)||n.mixins.push(u),g},component(u,b){return b?(n.components[u]=b,g):n.components[u]},directive(u,b){return b?(n.directives[u]=b,g):n.directives[u]},mount(u,b,v){if(!d){const c=g._ceVNode||We(o,r);return c.appContext=n,v===!0?v="svg":v===!1&&(v=void 0),e(c,u,v),d=!0,g._container=u,u.__vue_app__=g,_n(c.component)}},onUnmount(u){l.push(u)},unmount(){d&&(Sa(l,g._instance,16),e(null,g._container),delete g._container.__vue_app__)},provide(u,b){return n.provides[u]=b,g},runWithContext(u){const b=Vo;Vo=g;try{return u()}finally{Vo=b}}};return g}}let Vo=null;function Np(e,t){if(Ht){let a=Ht.provides;const o=Ht.parent&&Ht.parent.provides;o===a&&(a=Ht.provides=Object.create(o)),a[e]=t}}function vn(e,t,a=!1){const o=kn();if(o||Vo){let r=Vo?Vo._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&&Ge(t)?t.call(o&&o.proxy):t}}const pd={},fd=()=>Object.create(pd),bd=e=>Object.getPrototypeOf(e)===pd;function Ip(e,t,a,o=!1){const r={},n=fd();e.propsDefaults=Object.create(null),vd(e,t,r,n);for(const s in e.propsOptions[0])s in r||(r[s]=void 0);a?e.props=o?r:Vg(r):e.type.props?e.props=r:e.props=n,e.attrs=n}function Op(e,t,a,o){const{props:r,attrs:n,vnode:{patchFlag:s}}=e,l=Qe(r),[d]=e.propsOptions;let g=!1;if((o||s>0)&&!(s&16)){if(s&8){const u=e.vnode.dynamicProps;for(let b=0;b<u.length;b++){let v=u[b];if(hn(e.emitsOptions,v))continue;const c=t[v];if(d)if(rt(n,v))c!==n[v]&&(n[v]=c,g=!0);else{const f=va(v);r[f]=Ws(d,l,f,c,e,!1)}else c!==n[v]&&(n[v]=c,g=!0)}}}else{vd(e,t,r,n)&&(g=!0);let u;for(const b in l)(!t||!rt(t,b)&&((u=ro(b))===b||!rt(t,u)))&&(d?a&&(a[b]!==void 0||a[u]!==void 0)&&(r[b]=Ws(d,l,b,void 0,e,!0)):delete r[b]);if(n!==l)for(const b in n)(!t||!rt(t,b))&&(delete n[b],g=!0)}g&&Ra(e.attrs,"set","")}function vd(e,t,a,o){const[r,n]=e.propsOptions;let s=!1,l;if(t)for(let d in t){if(dr(d))continue;const g=t[d];let u;r&&rt(r,u=va(d))?!n||!n.includes(u)?a[u]=g:(l||(l={}))[u]=g:hn(e.emitsOptions,d)||(!(d in o)||g!==o[d])&&(o[d]=g,s=!0)}if(n){const d=Qe(a),g=l||gt;for(let u=0;u<n.length;u++){const b=n[u];a[b]=Ws(r,d,b,g[b],e,!rt(g,b))}}return s}function Ws(e,t,a,o,r,n){const s=e[a];if(s!=null){const l=rt(s,"default");if(l&&o===void 0){const d=s.default;if(s.type!==Function&&!s.skipFactory&&Ge(d)){const{propsDefaults:g}=r;if(a in g)o=g[a];else{const u=Tr(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===ro(a))&&(o=!0))}return o}const Bp=new WeakMap;function hd(e,t,a=!1){const o=a?Bp:t.propsCache,r=o.get(e);if(r)return r;const n=e.props,s={},l=[];let d=!1;if(!Ge(e)){const u=b=>{d=!0;const[v,c]=hd(b,t,!0);At(s,v),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 pt(e)&&o.set(e,Oo),Oo;if(ze(n))for(let u=0;u<n.length;u++){const b=va(n[u]);md(b)&&(s[b]=gt)}else if(n)for(const u in n){const b=va(u);if(md(b)){const v=n[u],c=s[b]=ze(v)||Ge(v)?{type:v}:At({},v),f=c.type;let p=!1,S=!0;if(ze(f))for(let x=0;x<f.length;++x){const $=f[x],_=Ge($)&&$.name;if(_==="Boolean"){p=!0;break}else _==="String"&&(S=!1)}else p=Ge(f)&&f.name==="Boolean";c[0]=p,c[1]=S,(p||rt(c,"default"))&&l.push(b)}}const g=[s,l];return pt(e)&&o.set(e,g),g}function md(e){return e[0]!=="$"&&!dr(e)}const zs=e=>e==="_"||e==="_ctx"||e==="$stable",Rs=e=>ze(e)?e.map(Oa):[Oa(e)],Hp=(e,t,a)=>{if(t._n)return t;const o=mt((...r)=>Rs(t(...r)),a);return o._c=!1,o},yd=(e,t,a)=>{const o=e._ctx;for(const r in e){if(zs(r))continue;const n=e[r];if(Ge(n))t[r]=Hp(r,n,o);else if(n!=null){const s=Rs(n);t[r]=()=>s}}},wd=(e,t)=>{const a=Rs(t);e.slots.default=()=>a},kd=(e,t,a)=>{for(const o in t)(a||!zs(o))&&(e[o]=t[o])},Fp=(e,t,a)=>{const o=e.slots=fd();if(e.vnode.shapeFlag&32){const r=t._;r?(kd(o,t,a),a&&pl(o,"_",r,!0)):yd(t,o)}else t&&wd(e,t)},Pp=(e,t,a)=>{const{vnode:o,slots:r}=e;let n=!0,s=gt;if(o.shapeFlag&32){const l=t._;l?a&&l===1?n=!1:kd(r,t,a):(n=!t.$stable,yd(t,r)),s=t}else t&&(wd(e,t),s={default:1});if(n)for(const l in r)!zs(l)&&s[l]==null&&delete r[l]},da=Qp;function Wp(e){return zp(e)}function zp(e,t){const a=Qr();a.__VUE__=!0;const{insert:o,remove:r,patchProp:n,createElement:s,createText:l,createComment:d,setText:g,setElementText:u,parentNode:b,nextSibling:v,setScopeId:c=Da,insertStaticContent:f}=e,p=(N,P,V,de=null,ue=null,fe=null,_e=void 0,ye=null,xe=!!P.dynamicChildren)=>{if(N===P)return;N&&!xo(N,P)&&(de=oe(N),D(N,ue,fe,!0),N=null),P.patchFlag===-2&&(xe=!1,P.dynamicChildren=null);const{type:be,ref:Ee,shapeFlag:Me}=P;switch(be){case mn:S(N,P,V,de);break;case Rt:x(N,P,V,de);break;case yn:N==null&&$(P,V,de,_e);break;case ke:z(N,P,V,de,ue,fe,_e,ye,xe);break;default:Me&1?I(N,P,V,de,ue,fe,_e,ye,xe):Me&6?M(N,P,V,de,ue,fe,_e,ye,xe):(Me&64||Me&128)&&be.process(N,P,V,de,ue,fe,_e,ye,xe,ge)}Ee!=null&&ue?wr(Ee,N&&N.ref,fe,P||N,!P):Ee==null&&N&&N.ref!=null&&wr(N.ref,null,fe,N,!0)},S=(N,P,V,de)=>{if(N==null)o(P.el=l(P.children),V,de);else{const ue=P.el=N.el;P.children!==N.children&&g(ue,P.children)}},x=(N,P,V,de)=>{N==null?o(P.el=d(P.children||""),V,de):P.el=N.el},$=(N,P,V,de)=>{[N.el,N.anchor]=f(N.children,P,V,de,N.el,N.anchor)},_=({el:N,anchor:P},V,de)=>{let ue;for(;N&&N!==P;)ue=v(N),o(N,V,de),N=ue;o(P,V,de)},O=({el:N,anchor:P})=>{let V;for(;N&&N!==P;)V=v(N),r(N),N=V;r(P)},I=(N,P,V,de,ue,fe,_e,ye,xe)=>{P.type==="svg"?_e="svg":P.type==="math"&&(_e="mathml"),N==null?B(P,V,de,ue,fe,_e,ye,xe):m(N,P,ue,fe,_e,ye,xe)},B=(N,P,V,de,ue,fe,_e,ye)=>{let xe,be;const{props:Ee,shapeFlag:Me,transition:ae,dirs:re}=N;if(xe=N.el=s(N.type,fe,Ee&&Ee.is,Ee),Me&8?u(xe,N.children):Me&16&&T(N.children,xe,null,de,ue,js(N,fe),_e,ye),re&&wo(N,null,de,"created"),y(xe,N,N.scopeId,_e,de),Ee){for(const $e in Ee)$e!=="value"&&!dr($e)&&n(xe,$e,null,Ee[$e],fe,de);"value"in Ee&&n(xe,"value",null,Ee.value,fe),(be=Ee.onVnodeBeforeMount)&&Ba(be,de,N)}re&&wo(N,null,de,"beforeMount");const he=Rp(ue,ae);he&&ae.beforeEnter(xe),o(xe,P,V),((be=Ee&&Ee.onVnodeMounted)||he||re)&&da(()=>{be&&Ba(be,de,N),he&&ae.enter(xe),re&&wo(N,null,de,"mounted")},ue)},y=(N,P,V,de,ue)=>{if(V&&c(N,V),de)for(let fe=0;fe<de.length;fe++)c(N,de[fe]);if(ue){let fe=ue.subTree;if(P===fe||Ld(fe.type)&&(fe.ssContent===P||fe.ssFallback===P)){const _e=ue.vnode;y(N,_e,_e.scopeId,_e.slotScopeIds,ue.parent)}}},T=(N,P,V,de,ue,fe,_e,ye,xe=0)=>{for(let be=xe;be<N.length;be++){const Ee=N[be]=ye?co(N[be]):Oa(N[be]);p(null,Ee,P,V,de,ue,fe,_e,ye)}},m=(N,P,V,de,ue,fe,_e)=>{const ye=P.el=N.el;let{patchFlag:xe,dynamicChildren:be,dirs:Ee}=P;xe|=N.patchFlag&16;const Me=N.props||gt,ae=P.props||gt;let re;if(V&&ko(V,!1),(re=ae.onVnodeBeforeUpdate)&&Ba(re,V,P,N),Ee&&wo(P,N,V,"beforeUpdate"),V&&ko(V,!0),(Me.innerHTML&&ae.innerHTML==null||Me.textContent&&ae.textContent==null)&&u(ye,""),be?k(N.dynamicChildren,be,ye,V,de,js(P,ue),fe):_e||U(N,P,ye,null,V,de,js(P,ue),fe,!1),xe>0){if(xe&16)L(ye,Me,ae,V,ue);else if(xe&2&&Me.class!==ae.class&&n(ye,"class",null,ae.class,ue),xe&4&&n(ye,"style",Me.style,ae.style,ue),xe&8){const he=P.dynamicProps;for(let $e=0;$e<he.length;$e++){const Le=he[$e],X=Me[Le],ie=ae[Le];(ie!==X||Le==="value")&&n(ye,Le,X,ie,ue,V)}}xe&1&&N.children!==P.children&&u(ye,P.children)}else!_e&&be==null&&L(ye,Me,ae,V,ue);((re=ae.onVnodeUpdated)||Ee)&&da(()=>{re&&Ba(re,V,P,N),Ee&&wo(P,N,V,"updated")},de)},k=(N,P,V,de,ue,fe,_e)=>{for(let ye=0;ye<P.length;ye++){const xe=N[ye],be=P[ye],Ee=xe.el&&(xe.type===ke||!xo(xe,be)||xe.shapeFlag&198)?b(xe.el):V;p(xe,be,Ee,null,de,ue,fe,_e,!0)}},L=(N,P,V,de,ue)=>{if(P!==V){if(P!==gt)for(const fe in P)!dr(fe)&&!(fe in V)&&n(N,fe,P[fe],null,ue,de);for(const fe in V){if(dr(fe))continue;const _e=V[fe],ye=P[fe];_e!==ye&&fe!=="value"&&n(N,fe,ye,_e,ue,de)}"value"in V&&n(N,"value",P.value,V.value,ue)}},z=(N,P,V,de,ue,fe,_e,ye,xe)=>{const be=P.el=N?N.el:l(""),Ee=P.anchor=N?N.anchor:l("");let{patchFlag:Me,dynamicChildren:ae,slotScopeIds:re}=P;re&&(ye=ye?ye.concat(re):re),N==null?(o(be,V,de),o(Ee,V,de),T(P.children||[],V,Ee,ue,fe,_e,ye,xe)):Me>0&&Me&64&&ae&&N.dynamicChildren?(k(N.dynamicChildren,ae,V,ue,fe,_e,ye),(P.key!=null||ue&&P===ue.subTree)&&xd(N,P,!0)):U(N,P,V,Ee,ue,fe,_e,ye,xe)},M=(N,P,V,de,ue,fe,_e,ye,xe)=>{P.slotScopeIds=ye,N==null?P.shapeFlag&512?ue.ctx.activate(P,V,de,_e,xe):Z(P,V,de,ue,fe,_e,xe):j(N,P,xe)},Z=(N,P,V,de,ue,fe,_e)=>{const ye=N.component=nf(N,de,ue);if(kr(N)&&(ye.ctx.renderer=ge),sf(ye,!1,_e),ye.asyncDep){if(ue&&ue.registerDep(ye,q,_e),!N.el){const xe=ye.subTree=We(Rt);x(null,xe,P,V),N.placeholder=xe.el}}else q(ye,N,P,V,ue,fe,_e)},j=(N,P,V)=>{const de=P.component=N.component;if(Yp(N,P,V))if(de.asyncDep&&!de.asyncResolved){Y(de,P,V);return}else de.next=P,de.update();else P.el=N.el,de.vnode=P},q=(N,P,V,de,ue,fe,_e)=>{const ye=()=>{if(N.isMounted){let{next:Me,bu:ae,u:re,parent:he,vnode:$e}=N;{const Ne=_d(N);if(Ne){Me&&(Me.el=$e.el,Y(N,Me,_e)),Ne.asyncDep.then(()=>{N.isUnmounted||ye()});return}}let Le=Me,X;ko(N,!1),Me?(Me.el=$e.el,Y(N,Me,_e)):Me=$e,ae&&Yr(ae),(X=Me.props&&Me.props.onVnodeBeforeUpdate)&&Ba(X,he,Me,$e),ko(N,!0);const ie=Md(N),Te=N.subTree;N.subTree=ie,p(Te,ie,b(Te.el),oe(Te),N,ue,fe),Me.el=ie.el,Le===null&&Xp(N,ie.el),re&&da(re,ue),(X=Me.props&&Me.props.onVnodeUpdated)&&da(()=>Ba(X,he,Me,$e),ue)}else{let Me;const{el:ae,props:re}=P,{bm:he,m:$e,parent:Le,root:X,type:ie}=N,Te=jo(P);ko(N,!1),he&&Yr(he),!Te&&(Me=re&&re.onVnodeBeforeMount)&&Ba(Me,Le,P),ko(N,!0);{X.ce&&X.ce._def.shadowRoot!==!1&&X.ce._injectChildStyle(ie);const Ne=N.subTree=Md(N);p(null,Ne,V,de,N,ue,fe),P.el=Ne.el}if($e&&da($e,ue),!Te&&(Me=re&&re.onVnodeMounted)){const Ne=P;da(()=>Ba(Me,Le,Ne),ue)}(P.shapeFlag&256||Le&&jo(Le.vnode)&&Le.vnode.shapeFlag&256)&&N.a&&da(N.a,ue),N.isMounted=!0,P=V=de=null}};N.scope.on();const xe=N.effect=new ml(ye);N.scope.off();const be=N.update=xe.run.bind(xe),Ee=N.job=xe.runIfDirty.bind(xe);Ee.i=N,Ee.id=N.uid,xe.scheduler=()=>As(Ee),ko(N,!0),be()},Y=(N,P,V)=>{P.component=N;const de=N.vnode.props;N.vnode=P,N.next=null,Op(N,P.props,de,V),Pp(N,P.children,V),Ea(),zl(N),Na()},U=(N,P,V,de,ue,fe,_e,ye,xe=!1)=>{const be=N&&N.children,Ee=N?N.shapeFlag:0,Me=P.children,{patchFlag:ae,shapeFlag:re}=P;if(ae>0){if(ae&128){J(be,Me,V,de,ue,fe,_e,ye,xe);return}else if(ae&256){le(be,Me,V,de,ue,fe,_e,ye,xe);return}}re&8?(Ee&16&&se(be,ue,fe),Me!==be&&u(V,Me)):Ee&16?re&16?J(be,Me,V,de,ue,fe,_e,ye,xe):se(be,ue,fe,!0):(Ee&8&&u(V,""),re&16&&T(Me,V,de,ue,fe,_e,ye,xe))},le=(N,P,V,de,ue,fe,_e,ye,xe)=>{N=N||Oo,P=P||Oo;const be=N.length,Ee=P.length,Me=Math.min(be,Ee);let ae;for(ae=0;ae<Me;ae++){const re=P[ae]=xe?co(P[ae]):Oa(P[ae]);p(N[ae],re,V,null,ue,fe,_e,ye,xe)}be>Ee?se(N,ue,fe,!0,!1,Me):T(P,V,de,ue,fe,_e,ye,xe,Me)},J=(N,P,V,de,ue,fe,_e,ye,xe)=>{let be=0;const Ee=P.length;let Me=N.length-1,ae=Ee-1;for(;be<=Me&&be<=ae;){const re=N[be],he=P[be]=xe?co(P[be]):Oa(P[be]);if(xo(re,he))p(re,he,V,null,ue,fe,_e,ye,xe);else break;be++}for(;be<=Me&&be<=ae;){const re=N[Me],he=P[ae]=xe?co(P[ae]):Oa(P[ae]);if(xo(re,he))p(re,he,V,null,ue,fe,_e,ye,xe);else break;Me--,ae--}if(be>Me){if(be<=ae){const re=ae+1,he=re<Ee?P[re].el:de;for(;be<=ae;)p(null,P[be]=xe?co(P[be]):Oa(P[be]),V,he,ue,fe,_e,ye,xe),be++}}else if(be>ae)for(;be<=Me;)D(N[be],ue,fe,!0),be++;else{const re=be,he=be,$e=new Map;for(be=he;be<=ae;be++){const et=P[be]=xe?co(P[be]):Oa(P[be]);et.key!=null&&$e.set(et.key,be)}let Le,X=0;const ie=ae-he+1;let Te=!1,Ne=0;const Ze=new Array(ie);for(be=0;be<ie;be++)Ze[be]=0;for(be=re;be<=Me;be++){const et=N[be];if(X>=ie){D(et,ue,fe,!0);continue}let it;if(et.key!=null)it=$e.get(et.key);else for(Le=he;Le<=ae;Le++)if(Ze[Le-he]===0&&xo(et,P[Le])){it=Le;break}it===void 0?D(et,ue,fe,!0):(Ze[it-he]=be+1,it>=Ne?Ne=it:Te=!0,p(et,P[it],V,null,ue,fe,_e,ye,xe),X++)}const vt=Te?jp(Ze):Oo;for(Le=vt.length-1,be=ie-1;be>=0;be--){const et=he+be,it=P[et],Tt=P[et+1],dt=et+1<Ee?Tt.el||Tt.placeholder:de;Ze[be]===0?p(null,it,V,dt,ue,fe,_e,ye,xe):Te&&(Le<0||be!==vt[Le]?R(it,V,dt,2):Le--)}}},R=(N,P,V,de,ue=null)=>{const{el:fe,type:_e,transition:ye,children:xe,shapeFlag:be}=N;if(be&6){R(N.component.subTree,P,V,de);return}if(be&128){N.suspense.move(P,V,de);return}if(be&64){_e.move(N,P,V,ge);return}if(_e===ke){o(fe,P,V);for(let Me=0;Me<xe.length;Me++)R(xe[Me],P,V,de);o(N.anchor,P,V);return}if(_e===yn){_(N,P,V);return}if(de!==2&&be&1&&ye)if(de===0)ye.beforeEnter(fe),o(fe,P,V),da(()=>ye.enter(fe),ue);else{const{leave:Me,delayLeave:ae,afterLeave:re}=ye,he=()=>{N.ctx.isUnmounted?r(fe):o(fe,P,V)},$e=()=>{fe._isLeaving&&fe[Ua](!0),Me(fe,()=>{he(),re&&re()})};ae?ae(fe,he,$e):$e()}else o(fe,P,V)},D=(N,P,V,de=!1,ue=!1)=>{const{type:fe,props:_e,ref:ye,children:xe,dynamicChildren:be,shapeFlag:Ee,patchFlag:Me,dirs:ae,cacheIndex:re}=N;if(Me===-2&&(ue=!1),ye!=null&&(Ea(),wr(ye,null,V,N,!0),Na()),re!=null&&(P.renderCache[re]=void 0),Ee&256){P.ctx.deactivate(N);return}const he=Ee&1&&ae,$e=!jo(N);let Le;if($e&&(Le=_e&&_e.onVnodeBeforeUnmount)&&Ba(Le,P,N),Ee&6)Ae(N.component,V,de);else{if(Ee&128){N.suspense.unmount(V,de);return}he&&wo(N,null,P,"beforeUnmount"),Ee&64?N.type.remove(N,P,V,ge,de):be&&!be.hasOnce&&(fe!==ke||Me>0&&Me&64)?se(be,P,V,!1,!0):(fe===ke&&Me&384||!ue&&Ee&16)&&se(xe,P,V),de&&F(N)}($e&&(Le=_e&&_e.onVnodeUnmounted)||he)&&da(()=>{Le&&Ba(Le,P,N),he&&wo(N,null,P,"unmounted")},V)},F=N=>{const{type:P,el:V,anchor:de,transition:ue}=N;if(P===ke){ce(V,de);return}if(P===yn){O(N);return}const fe=()=>{r(V),ue&&!ue.persisted&&ue.afterLeave&&ue.afterLeave()};if(N.shapeFlag&1&&ue&&!ue.persisted){const{leave:_e,delayLeave:ye}=ue,xe=()=>_e(V,fe);ye?ye(N.el,fe,xe):xe()}else fe()},ce=(N,P)=>{let V;for(;N!==P;)V=v(N),r(N),N=V;r(P)},Ae=(N,P,V)=>{const{bum:de,scope:ue,job:fe,subTree:_e,um:ye,m:xe,a:be}=N;Cd(xe),Cd(be),de&&Yr(de),ue.stop(),fe&&(fe.flags|=8,D(_e,N,P,V)),ye&&da(ye,P),da(()=>{N.isUnmounted=!0},P)},se=(N,P,V,de=!1,ue=!1,fe=0)=>{for(let _e=fe;_e<N.length;_e++)D(N[_e],P,V,de,ue)},oe=N=>{if(N.shapeFlag&6)return oe(N.component.subTree);if(N.shapeFlag&128)return N.suspense.next();const P=v(N.anchor||N.el),V=P&&P[dp];return V?v(V):P};let G=!1;const ee=(N,P,V)=>{N==null?P._vnode&&D(P._vnode,null,null,!0):p(P._vnode||null,N,P,null,null,null,V),P._vnode=N,G||(G=!0,zl(),Rl(),G=!1)},ge={p,um:D,m:R,r:F,mt:Z,mc:T,pc:U,pbc:k,n:oe,o:e};return{render:ee,hydrate:void 0,createApp:Ep(ee)}}function js({type:e,props:t},a){return a==="svg"&&e==="foreignObject"||a==="mathml"&&e==="annotation-xml"&&t&&t.encoding&&t.encoding.includes("html")?void 0:a}function ko({effect:e,job:t},a){a?(e.flags|=32,t.flags|=4):(e.flags&=-33,t.flags&=-5)}function Rp(e,t){return(!e||e&&!e.pendingBranch)&&t&&!t.persisted}function xd(e,t,a=!1){const o=e.children,r=t.children;if(ze(o)&&ze(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]=co(r[n]),l.el=s.el),!a&&l.patchFlag!==-2&&xd(s,l)),l.type===mn&&l.patchFlag!==-1&&(l.el=s.el),l.type===Rt&&!l.el&&(l.el=s.el)}}function jp(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 Cd(e){if(e)for(let t=0;t<e.length;t++)e[t].flags|=8}const Vp=Symbol.for("v-scx"),Up=()=>vn(Vp);function Be(e,t,a){return Sd(e,t,a)}function Sd(e,t,a=gt){const{immediate:o,deep:r,flush:n,once:s}=a,l=At({},a),d=t&&o||!t&&n!=="post";let g;if(Uo){if(n==="sync"){const c=Up();g=c.__watcherHandles||(c.__watcherHandles=[])}else if(!d){const c=()=>{};return c.stop=Da,c.resume=Da,c.pause=Da,c}}const u=Ht;l.call=(c,f,p)=>Sa(c,u,f,p);let b=!1;n==="post"?l.scheduler=c=>{da(c,u&&u.suspense)}:n!=="sync"&&(b=!0,l.scheduler=(c,f)=>{f?c():As(c)}),l.augmentJob=c=>{t&&(c.flags|=4),b&&(c.flags|=2,u&&(c.id=u.uid,c.i=u))};const v=tp(e,t,l);return Uo&&(g?g.push(v):d&&v()),v}function Gp(e,t,a){const o=this.proxy,r=wt(e)?e.includes(".")?$d(o,e):()=>o[e]:e.bind(o,o);let n;Ge(t)?n=t:(n=t.handler,a=t);const s=Tr(this),l=Sd(r,n.bind(o),a);return s(),l}function $d(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 qp=(e,t)=>t==="modelValue"||t==="model-value"?e.modelModifiers:e[`${t}Modifiers`]||e[`${va(t)}Modifiers`]||e[`${ro(t)}Modifiers`];function Kp(e,t,...a){if(e.isUnmounted)return;const o=e.vnode.props||gt;let r=a;const n=t.startsWith("update:"),s=n&&qp(o,t.slice(7));s&&(s.trim&&(r=a.map(u=>wt(u)?u.trim():u)),s.number&&(r=a.map(Xr)));let l,d=o[l=bs(t)]||o[l=bs(va(t))];!d&&n&&(d=o[l=bs(ro(t))]),d&&Sa(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,Sa(g,e,6,r)}}function Td(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(!Ge(e)){const d=g=>{const u=Td(g,t,!0);u&&(l=!0,At(s,u))};!a&&t.mixins.length&&t.mixins.forEach(d),e.extends&&d(e.extends),e.mixins&&e.mixins.forEach(d)}return!n&&!l?(pt(e)&&o.set(e,null),null):(ze(n)?n.forEach(d=>s[d]=null):At(s,n),pt(e)&&o.set(e,s),s)}function hn(e,t){return!e||!qr(t)?!1:(t=t.slice(2).replace(/Once$/,""),rt(e,t[0].toLowerCase()+t.slice(1))||rt(e,ro(t))||rt(e,t))}function d$(){}function Md(e){const{type:t,vnode:a,proxy:o,withProxy:r,propsOptions:[n],slots:s,attrs:l,emit:d,render:g,renderCache:u,props:b,data:v,setupState:c,ctx:f,inheritAttrs:p}=e,S=gn(e);let x,$;try{if(a.shapeFlag&4){const O=r||o,I=O;x=Oa(g.call(I,O,u,b,c,v,f)),$=l}else{const O=t;x=Oa(O.length>1?O(b,{attrs:l,slots:s,emit:d}):O(b,null)),$=t.props?l:Jp(l)}}catch(O){Cr.length=0,hr(O,e,1),x=We(Rt)}let _=x;if($&&p!==!1){const O=Object.keys($),{shapeFlag:I}=_;O.length&&I&7&&(n&&O.some(gs)&&($=Zp($,n)),_=lo(_,$,!1,!0))}return a.dirs&&(_=lo(_,null,!1,!0),_.dirs=_.dirs?_.dirs.concat(a.dirs):a.dirs),a.transition&&yr(_,a.transition),x=_,gn(S),x}const Jp=e=>{let t;for(const a in e)(a==="class"||a==="style"||qr(a))&&((t||(t={}))[a]=e[a]);return t},Zp=(e,t)=>{const a={};for(const o in e)(!gs(o)||!(o.slice(9)in t))&&(a[o]=e[o]);return a};function Yp(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?Ad(o,s,g):!!s;if(d&8){const u=t.dynamicProps;for(let b=0;b<u.length;b++){const v=u[b];if(s[v]!==o[v]&&!hn(g,v))return!0}}}else return(r||l)&&(!l||!l.$stable)?!0:o===s?!1:o?s?Ad(o,s,g):!0:!!s;return!1}function Ad(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]&&!hn(a,n))return!0}return!1}function Xp({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 Ld=e=>e.__isSuspense;function Qp(e,t){t&&t.pendingBranch?ze(e)?t.effects.push(...e):t.effects.push(e):lp(e)}const ke=Symbol.for("v-fgt"),mn=Symbol.for("v-txt"),Rt=Symbol.for("v-cmt"),yn=Symbol.for("v-stc"),Cr=[];let ca=null;function h(e=!1){Cr.push(ca=e?null:[])}function ef(){Cr.pop(),ca=Cr[Cr.length-1]||null}let Sr=1;function Dd(e,t=!1){Sr+=e,e<0&&ca&&t&&(ca.hasOnce=!0)}function Ed(e){return e.dynamicChildren=Sr>0?ca||Oo:null,ef(),Sr>0&&ca&&ca.push(e),e}function w(e,t,a,o,r,n){return Ed(i(e,t,a,o,r,n,!0))}function nt(e,t,a,o,r){return Ed(We(e,t,a,o,r,!0))}function $r(e){return e?e.__v_isVNode===!0:!1}function xo(e,t){return e.type===t.type&&e.key===t.key}const Nd=({key:e})=>e??null,wn=({ref:e,ref_key:t,ref_for:a})=>(typeof e=="number"&&(e=""+e),e!=null?wt(e)||$t(e)||Ge(e)?{i:Bt,r:e,k:t,f:!!a}:e:null);function i(e,t=null,a=null,o=0,r=null,n=e===ke?0:1,s=!1,l=!1){const d={__v_isVNode:!0,__v_skip:!0,type:e,props:t,key:t&&Nd(t),ref:t&&wn(t),scopeId:Vl,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:Bt};return l?(Vs(d,a),n&128&&e.normalize(d)):a&&(d.shapeFlag|=wt(a)?8:16),Sr>0&&!s&&ca&&(d.patchFlag>0||n&6)&&d.patchFlag!==32&&ca.push(d),d}const We=tf;function tf(e,t=null,a=null,o=0,r=null,n=!1){if((!e||e===td)&&(e=Rt),$r(e)){const l=lo(e,t,!0);return a&&Vs(l,a),Sr>0&&!n&&ca&&(l.shapeFlag&6?ca[ca.indexOf(e)]=l:ca.push(l)),l.patchFlag=-2,l}if(pf(e)&&(e=e.__vccOpts),t){t=af(t);let{class:l,style:d}=t;l&&!wt(l)&&(t.class=we(l)),pt(d)&&(Ts(d)&&!ze(d)&&(d=At({},d)),t.style=He(d))}const s=wt(e)?1:Ld(e)?128:Ul(e)?64:pt(e)?4:Ge(e)?2:0;return i(e,t,a,o,r,s,n,!0)}function af(e){return e?Ts(e)||bd(e)?At({},e):e:null}function lo(e,t,a=!1,o=!1){const{props:r,ref:n,patchFlag:s,children:l,transition:d}=e,g=t?Id(r||{},t):r,u={__v_isVNode:!0,__v_skip:!0,type:e.type,props:g,key:g&&Nd(g),ref:t&&t.ref?a&&n?ze(n)?n.concat(wn(t)):[n,wn(t)]:wn(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!==ke?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&&lo(e.ssContent),ssFallback:e.ssFallback&&lo(e.ssFallback),placeholder:e.placeholder,el:e.el,anchor:e.anchor,ctx:e.ctx,ce:e.ce};return d&&o&&yr(u,d.clone(u)),u}function Re(e=" ",t=0){return We(mn,null,e,t)}function qa(e,t){const a=We(yn,null,e);return a.staticCount=t,a}function te(e="",t=!1){return t?(h(),nt(Rt,null,e)):We(Rt,null,e)}function Oa(e){return e==null||typeof e=="boolean"?We(Rt):ze(e)?We(ke,null,e.slice()):$r(e)?co(e):We(mn,null,String(e))}function co(e){return e.el===null&&e.patchFlag!==-1||e.memo?e:lo(e)}function Vs(e,t){let a=0;const{shapeFlag:o}=e;if(t==null)t=null;else if(ze(t))a=16;else if(typeof t=="object")if(o&65){const r=t.default;r&&(r._c&&(r._d=!1),Vs(e,r()),r._c&&(r._d=!0));return}else{a=32;const r=t._;!r&&!bd(t)?t._ctx=Bt:r===3&&Bt&&(Bt.slots._===1?t._=1:(t._=2,e.patchFlag|=1024))}else Ge(t)?(t={default:t,_ctx:Bt},a=32):(t=String(t),o&64?(a=16,t=[Re(t)]):a=8);e.children=t,e.shapeFlag|=a}function Id(...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=we([t.class,o.class]));else if(r==="style")t.style=He([t.style,o.style]);else if(qr(r)){const n=t[r],s=o[r];s&&n!==s&&!(ze(n)&&n.includes(s))&&(t[r]=n?[].concat(n,s):s)}else r!==""&&(t[r]=o[r])}return t}function Ba(e,t,a,o=null){Sa(e,t,7,[a,o])}const of=gd();let rf=0;function nf(e,t,a){const o=e.type,r=(t?t.appContext:e.appContext)||of,n={uid:rf++,vnode:e,type:o,parent:t,appContext:r,root:null,next:null,subTree:null,effect:null,update:null,job:null,scope:new _g(!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:hd(o,r),emitsOptions:Td(o,r),emit:null,emitted:null,propsDefaults:gt,inheritAttrs:o.inheritAttrs,ctx:gt,data:gt,props:gt,attrs:gt,slots:gt,refs:gt,setupState:gt,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=Kp.bind(null,n),e.ce&&e.ce(n),n}let Ht=null;const kn=()=>Ht||Bt;let xn,Us;{const e=Qr(),t=(a,o)=>{let r;return(r=e[a])||(r=e[a]=[]),r.push(o),n=>{r.length>1?r.forEach(s=>s(n)):r[0](n)}};xn=t("__VUE_INSTANCE_SETTERS__",a=>Ht=a),Us=t("__VUE_SSR_SETTERS__",a=>Uo=a)}const Tr=e=>{const t=Ht;return xn(e),e.scope.on(),()=>{e.scope.off(),xn(t)}},Od=()=>{Ht&&Ht.scope.off(),xn(null)};function Bd(e){return e.vnode.shapeFlag&4}let Uo=!1;function sf(e,t=!1,a=!1){t&&Us(t);const{props:o,children:r}=e.vnode,n=Bd(e);Ip(e,o,n,t),Fp(e,r,a||t);const s=n?lf(e,t):void 0;return t&&Us(!1),s}function lf(e,t){const a=e.type;e.accessCache=Object.create(null),e.proxy=new Proxy(e.ctx,Sp);const{setup:o}=a;if(o){Ea();const r=e.setupContext=o.length>1?cf(e):null,n=Tr(e),s=Po(o,e,0,[e.props,r]),l=cl(s);if(Na(),n(),(l||e.sp)&&!jo(e)&&Es(e),l){if(s.then(Od,Od),t)return s.then(d=>{Hd(e,d)}).catch(d=>{hr(d,e,0)});e.asyncDep=s}else Hd(e,s)}else Fd(e)}function Hd(e,t,a){Ge(t)?e.type.__ssrInlineRender?e.ssrRender=t:e.render=t:pt(t)&&(e.setupState=Hl(t)),Fd(e)}function Fd(e,t,a){const o=e.type;e.render||(e.render=o.render||Da);{const r=Tr(e);Ea();try{$p(e)}finally{Na(),r()}}}const df={get(e,t){return Wt(e,"get",""),e[t]}};function cf(e){const t=a=>{e.exposed=a||{}};return{attrs:new Proxy(e.attrs,df),slots:e.slots,emit:e.emit,expose:t}}function _n(e){return e.exposed?e.exposeProxy||(e.exposeProxy=new Proxy(Hl(Ug(e.exposed)),{get(t,a){if(a in t)return t[a];if(a in xr)return xr[a](e)},has(t,a){return a in t||a in xr}})):e.proxy}const uf=/(?:^|[-_])(\w)/g,gf=e=>e.replace(uf,t=>t.toUpperCase()).replace(/[-_]/g,"");function Pd(e,t=!0){return Ge(e)?e.displayName||e.name:e.name||t&&e.__name}function Wd(e,t,a=!1){let o=Pd(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?gf(o):a?"App":"Anonymous"}function pf(e){return Ge(e)&&"__vccOpts"in e}const C=(e,t)=>Qg(e,t,Uo);function ua(e,t,a){const o=arguments.length;return o===2?pt(t)&&!ze(t)?$r(t)?We(e,null,[t]):We(e,t):We(e,null,t):(o>3?a=Array.prototype.slice.call(arguments,2):o===3&&$r(a)&&(a=[a]),We(e,t,a))}const ff="3.5.20";/**
|
||
* @vue/runtime-dom v3.5.20
|
||
* (c) 2018-present Yuxi (Evan) You and Vue contributors
|
||
* @license MIT
|
||
**/let Gs;const zd=typeof window<"u"&&window.trustedTypes;if(zd)try{Gs=zd.createPolicy("vue",{createHTML:e=>e})}catch{}const Rd=Gs?e=>Gs.createHTML(e):e=>e,bf="http://www.w3.org/2000/svg",vf="http://www.w3.org/1998/Math/MathML",Ka=typeof document<"u"?document:null,jd=Ka&&Ka.createElement("template"),hf={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"?Ka.createElementNS(bf,e):t==="mathml"?Ka.createElementNS(vf,e):a?Ka.createElement(e,{is:a}):Ka.createElement(e);return e==="select"&&o&&o.multiple!=null&&r.setAttribute("multiple",o.multiple),r},createText:e=>Ka.createTextNode(e),createComment:e=>Ka.createComment(e),setText:(e,t)=>{e.nodeValue=t},setElementText:(e,t)=>{e.textContent=t},parentNode:e=>e.parentNode,nextSibling:e=>e.nextSibling,querySelector:e=>Ka.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{jd.innerHTML=Rd(o==="svg"?`<svg>${e}</svg>`:o==="mathml"?`<math>${e}</math>`:e);const l=jd.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]}},uo="transition",Mr="animation",Ar=Symbol("_vtc"),Vd={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},mf=At({},Gl,Vd),Ud=(e=>(e.displayName="Transition",e.props=mf,e))((e,{slots:t})=>ua(gp,yf(e),t)),_o=(e,t=[])=>{ze(e)?e.forEach(a=>a(...t)):e&&e(...t)},Gd=e=>e?ze(e)?e.some(t=>t.length>1):e.length>1:!1;function yf(e){const t={};for(const z in e)z in Vd||(t[z]=e[z]);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:b=`${a}-leave-from`,leaveActiveClass:v=`${a}-leave-active`,leaveToClass:c=`${a}-leave-to`}=e,f=wf(r),p=f&&f[0],S=f&&f[1],{onBeforeEnter:x,onEnter:$,onEnterCancelled:_,onLeave:O,onLeaveCancelled:I,onBeforeAppear:B=x,onAppear:y=$,onAppearCancelled:T=_}=t,m=(z,M,Z,j)=>{z._enterCancelled=j,Co(z,M?u:l),Co(z,M?g:s),Z&&Z()},k=(z,M)=>{z._isLeaving=!1,Co(z,b),Co(z,c),Co(z,v),M&&M()},L=z=>(M,Z)=>{const j=z?y:$,q=()=>m(M,z,Z);_o(j,[M,q]),qd(()=>{Co(M,z?d:n),Ja(M,z?u:l),Gd(j)||Kd(M,o,p,q)})};return At(t,{onBeforeEnter(z){_o(x,[z]),Ja(z,n),Ja(z,s)},onBeforeAppear(z){_o(B,[z]),Ja(z,d),Ja(z,g)},onEnter:L(!1),onAppear:L(!0),onLeave(z,M){z._isLeaving=!0;const Z=()=>k(z,M);Ja(z,b),z._enterCancelled?(Ja(z,v),Yd()):(Yd(),Ja(z,v)),qd(()=>{z._isLeaving&&(Co(z,b),Ja(z,c),Gd(O)||Kd(z,o,S,Z))}),_o(O,[z,Z])},onEnterCancelled(z){m(z,!1,void 0,!0),_o(_,[z])},onAppearCancelled(z){m(z,!0,void 0,!0),_o(T,[z])},onLeaveCancelled(z){k(z),_o(I,[z])}})}function wf(e){if(e==null)return null;if(pt(e))return[qs(e.enter),qs(e.leave)];{const t=qs(e);return[t,t]}}function qs(e){return bg(e)}function Ja(e,t){t.split(/\s+/).forEach(a=>a&&e.classList.add(a)),(e[Ar]||(e[Ar]=new Set)).add(t)}function Co(e,t){t.split(/\s+/).forEach(o=>o&&e.classList.remove(o));const a=e[Ar];a&&(a.delete(t),a.size||(e[Ar]=void 0))}function qd(e){requestAnimationFrame(()=>{requestAnimationFrame(e)})}let kf=0;function Kd(e,t,a,o){const r=e._endId=++kf,n=()=>{r===e._endId&&o()};if(a!=null)return setTimeout(n,a);const{type:s,timeout:l,propCount:d}=xf(e,t);if(!s)return o();const g=s+"end";let u=0;const b=()=>{e.removeEventListener(g,v),n()},v=c=>{c.target===e&&++u>=d&&b()};setTimeout(()=>{u<d&&b()},l+1),e.addEventListener(g,v)}function xf(e,t){const a=window.getComputedStyle(e),o=f=>(a[f]||"").split(", "),r=o(`${uo}Delay`),n=o(`${uo}Duration`),s=Jd(r,n),l=o(`${Mr}Delay`),d=o(`${Mr}Duration`),g=Jd(l,d);let u=null,b=0,v=0;t===uo?s>0&&(u=uo,b=s,v=n.length):t===Mr?g>0&&(u=Mr,b=g,v=d.length):(b=Math.max(s,g),u=b>0?s>g?uo:Mr:null,v=u?u===uo?n.length:d.length:0);const c=u===uo&&/\b(transform|all)(,|$)/.test(o(`${uo}Property`).toString());return{type:u,timeout:b,propCount:v,hasTransform:c}}function Jd(e,t){for(;e.length<t.length;)e=e.concat(e);return Math.max(...t.map((a,o)=>Zd(a)+Zd(e[o])))}function Zd(e){return e==="auto"?0:Number(e.slice(0,-1).replace(",","."))*1e3}function Yd(){return document.body.offsetHeight}function _f(e,t,a){const o=e[Ar];o&&(t=(t?[t,...o]:[...o]).join(" ")),t==null?e.removeAttribute("class"):a?e.setAttribute("class",t):e.className=t}const Cn=Symbol("_vod"),Xd=Symbol("_vsh"),Qd={name:"show",beforeMount(e,{value:t},{transition:a}){e[Cn]=e.style.display==="none"?"":e.style.display,a&&t?a.beforeEnter(e):Lr(e,t)},mounted(e,{value:t},{transition:a}){a&&t&&a.enter(e)},updated(e,{value:t,oldValue:a},{transition:o}){!t!=!a&&(o?t?(o.beforeEnter(e),Lr(e,!0),o.enter(e)):o.leave(e,()=>{Lr(e,!1)}):Lr(e,t))},beforeUnmount(e,{value:t}){Lr(e,t)}};function Lr(e,t){e.style.display=t?e[Cn]:"none",e[Xd]=!t}const Cf=Symbol(""),Sf=/(^|;)\s*display\s*:/;function $f(e,t,a){const o=e.style,r=wt(a);let n=!1;if(a&&!r){if(t)if(wt(t))for(const s of t.split(";")){const l=s.slice(0,s.indexOf(":")).trim();a[l]==null&&Sn(o,l,"")}else for(const s in t)a[s]==null&&Sn(o,s,"");for(const s in a)s==="display"&&(n=!0),Sn(o,s,a[s])}else if(r){if(t!==a){const s=o[Cf];s&&(a+=";"+s),o.cssText=a,n=Sf.test(a)}}else t&&e.removeAttribute("style");Cn in e&&(e[Cn]=n?o.display:"",e[Xd]&&(o.display="none"))}const ec=/\s*!important$/;function Sn(e,t,a){if(ze(a))a.forEach(o=>Sn(e,t,o));else if(a==null&&(a=""),t.startsWith("--"))e.setProperty(t,a);else{const o=Tf(e,t);ec.test(a)?e.setProperty(ro(o),a.replace(ec,""),"important"):e[o]=a}}const tc=["Webkit","Moz","ms"],Ks={};function Tf(e,t){const a=Ks[t];if(a)return a;let o=va(t);if(o!=="filter"&&o in e)return Ks[t]=o;o=Zr(o);for(let r=0;r<tc.length;r++){const n=tc[r]+o;if(n in e)return Ks[t]=n}return t}const ac="http://www.w3.org/1999/xlink";function oc(e,t,a,o,r,n=wg(t)){o&&t.startsWith("xlink:")?a==null?e.removeAttributeNS(ac,t.slice(6,t.length)):e.setAttributeNS(ac,t,a):a==null||n&&!bl(a)?e.removeAttribute(t):e.setAttribute(t,n?"":_a(a)?String(a):a)}function rc(e,t,a,o,r){if(t==="innerHTML"||t==="textContent"){a!=null&&(e[t]=t==="innerHTML"?Rd(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=bl(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 So(e,t,a,o){e.addEventListener(t,a,o)}function Mf(e,t,a,o){e.removeEventListener(t,a,o)}const nc=Symbol("_vei");function Af(e,t,a,o,r=null){const n=e[nc]||(e[nc]={}),s=n[t];if(o&&s)s.value=o;else{const[l,d]=Lf(t);if(o){const g=n[t]=Nf(o,r);So(e,l,g,d)}else s&&(Mf(e,l,s,d),n[t]=void 0)}}const sc=/(?:Once|Passive|Capture)$/;function Lf(e){let t;if(sc.test(e)){t={};let o;for(;o=e.match(sc);)e=e.slice(0,e.length-o[0].length),t[o[0].toLowerCase()]=!0}return[e[2]===":"?e.slice(3):ro(e.slice(2)),t]}let Js=0;const Df=Promise.resolve(),Ef=()=>Js||(Df.then(()=>Js=0),Js=Date.now());function Nf(e,t){const a=o=>{if(!o._vts)o._vts=Date.now();else if(o._vts<=a.attached)return;Sa(If(o,a.value),t,5,[o])};return a.value=e,a.attached=Ef(),a}function If(e,t){if(ze(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 ic=e=>e.charCodeAt(0)===111&&e.charCodeAt(1)===110&&e.charCodeAt(2)>96&&e.charCodeAt(2)<123,Of=(e,t,a,o,r,n)=>{const s=r==="svg";t==="class"?_f(e,o,s):t==="style"?$f(e,a,o):qr(t)?gs(t)||Af(e,t,a,o,n):(t[0]==="."?(t=t.slice(1),!0):t[0]==="^"?(t=t.slice(1),!1):Bf(e,t,o,s))?(rc(e,t,o),!e.tagName.includes("-")&&(t==="value"||t==="checked"||t==="selected")&&oc(e,t,o,s,n,t!=="value")):e._isVueCE&&(/[A-Z]/.test(t)||!wt(o))?rc(e,va(t),o,n,t):(t==="true-value"?e._trueValue=o:t==="false-value"&&(e._falseValue=o),oc(e,t,o,s))};function Bf(e,t,a,o){if(o)return!!(t==="innerHTML"||t==="textContent"||t in e&&ic(t)&&Ge(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 ic(t)&&wt(a)?!1:t in e}const $n=e=>{const t=e.props["onUpdate:modelValue"]||!1;return ze(t)?a=>Yr(t,a):t};function Hf(e){e.target.composing=!0}function lc(e){const t=e.target;t.composing&&(t.composing=!1,t.dispatchEvent(new Event("input")))}const Go=Symbol("_assign"),Zs={created(e,{modifiers:{lazy:t,trim:a,number:o}},r){e[Go]=$n(r);const n=o||r.props&&r.props.type==="number";So(e,t?"change":"input",s=>{if(s.target.composing)return;let l=e.value;a&&(l=l.trim()),n&&(l=Xr(l)),e[Go](l)}),a&&So(e,"change",()=>{e.value=e.value.trim()}),t||(So(e,"compositionstart",Hf),So(e,"compositionend",lc),So(e,"change",lc))},mounted(e,{value:t}){e.value=t??""},beforeUpdate(e,{value:t,oldValue:a,modifiers:{lazy:o,trim:r,number:n}},s){if(e[Go]=$n(s),e.composing)return;const l=(n||e.type==="number")&&!/^0\d/.test(e.value)?Xr(e.value):e.value,d=t??"";l!==d&&(document.activeElement===e&&e.type!=="range"&&(o&&t===a||r&&e.value.trim()===d)||(e.value=d))}},Ff={deep:!0,created(e,{value:t,modifiers:{number:a}},o){const r=Kr(t);So(e,"change",()=>{const n=Array.prototype.filter.call(e.options,s=>s.selected).map(s=>a?Xr(Tn(s)):Tn(s));e[Go](e.multiple?r?new Set(n):n:n[0]),e._assigning=!0,zt(()=>{e._assigning=!1})}),e[Go]=$n(o)},mounted(e,{value:t}){dc(e,t)},beforeUpdate(e,t,a){e[Go]=$n(a)},updated(e,{value:t}){e._assigning||dc(e,t)}};function dc(e,t){const a=e.multiple,o=ze(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=xg(t,l)>-1}else s.selected=t.has(l);else if(en(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 Pf=["ctrl","shift","alt","meta"],Wf={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)=>Pf.some(a=>e[`${a}Key`]&&!t.includes(a))},Ke=(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=Wf[t[s]];if(l&&l(r,t))return}return e(r,...n)})},zf={esc:"escape",space:" ",up:"arrow-up",left:"arrow-left",right:"arrow-right",down:"arrow-down",delete:"backspace"},$a=(e,t)=>{const a=e._withKeys||(e._withKeys={}),o=t.join(".");return a[o]||(a[o]=r=>{if(!("key"in r))return;const n=ro(r.key);if(t.some(s=>s===n||zf[s]===n))return e(r)})},Rf=At({patchProp:Of},hf);let cc;function jf(){return cc||(cc=Wp(Rf))}const Vf=(...e)=>{const t=jf().createApp(...e),{mount:a}=t;return t.mount=o=>{const r=Gf(o);if(!r)return;const n=t._component;!Ge(n)&&!n.render&&!n.template&&(n.template=r.innerHTML),r.nodeType===1&&(r.textContent="");const s=a(r,!1,Uf(r));return r instanceof Element&&(r.removeAttribute("v-cloak"),r.setAttribute("data-v-app","")),s},t};function Uf(e){if(e instanceof SVGElement)return"svg";if(typeof MathMLElement=="function"&&e instanceof MathMLElement)return"mathml"}function Gf(e){return wt(e)?document.querySelector(e):e}const qf=Pe({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 ua("div",r,[ua("aside",n,t.navigation?t.navigation():[]),ua("section",{class:"app-content__main",role:"main"},t.default?t.default():[])])}}}),Kf=Pe({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(ua("div",{class:"app-navigation__actions"},t.actions())),t.default&&r.push(...t.default()),ua("nav",o,r)}}}),oa=Pe({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"),ua("button",r,a.default?a.default():[])}}}),Jf=Pe({name:"NcEmptyContent",props:{name:{type:String,default:""},description:{type:String,default:""}},setup(e,{attrs:t}){return()=>ua("div",{...t,class:[t.class,"card empty"]},[ua("div",{class:"value"},e.name),ua("div",{class:"hint"},e.description)])}}),Zf=Pe({name:"NcLoadingIcon",props:{size:{type:[String,Number],default:16}},setup(e,{attrs:t}){return()=>ua("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`})}}),Za=br({locale:"",timeZone:"",firstDayOfWeek:void 0}),Ys=new Map;function Yf(){Ys.clear()}function Xf(e){if(!(!e||typeof e!="object")){if(typeof e.locale=="string"&&(Za.locale=e.locale),typeof e.timeZone=="string"&&(Za.timeZone=e.timeZone),typeof e.firstDayOfWeek=="number"&&Number.isFinite(e.firstDayOfWeek)){const t=(Math.trunc(e.firstDayOfWeek)%7+7)%7;Za.firstDayOfWeek=t}Yf()}}function Xs(){if(Za.locale)return Za.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 uc(){if(Za.timeZone)return Za.timeZone;try{const e=Intl.DateTimeFormat().resolvedOptions().timeZone;if(e)return e}catch{}return"UTC"}function Qs(){var e,t;if(typeof Za.firstDayOfWeek=="number")return Za.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(Xs()))==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 Qf(){const e=["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],t=Qs();return e.slice(t).concat(e.slice(0,t))}function Ya(e){var u;const t=Xs();let a=4;try{if(typeof Intl.Locale=="function"){const b=(u=new Intl.Locale(t))==null?void 0:u.weekInfo;b&&typeof b.minimalDays=="number"&&(a=b.minimalDays)}}catch{}a=Math.max(1,Math.min(7,Math.trunc(a)));const o=Qs(),r=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate())),n=7*864e5,s=b=>{const v=new Date(Date.UTC(b,0,1)),f=(v.getUTCDay()-o+7)%7,p=new Date(v);return p.setUTCDate(v.getUTCDate()-f),7-f<a&&p.setUTCDate(p.getUTCDate()+7),p},l=r.getUTCFullYear(),d=s(l);if(r.getTime()<d.getTime()){const b=s(l-1);return Math.floor((r.getTime()-b.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 ei(e,t){const a=(t==null?void 0:t.locale)??Xs(),o=(t==null?void 0:t.timeZone)??e.timeZone??uc(),r={...e,timeZone:o},n=JSON.stringify({locale:a,options:r}),s=Ys.get(n);if(s)return s;const l=new Intl.DateTimeFormat(a,r);return Ys.set(n,l),l}const gc=/^(\d{4})-(\d{2})-(\d{2})$/,eb=/^(\d{4})-(\d{2})-(\d{2})[ T](\d{2}):(\d{2})(?::(\d{2}))?(Z|[+-]\d{2}:?\d{2})?$/,tb=/^(\d{1,2}):(\d{2})(?::(\d{2}))?$/;function jt(e){if(!e)return null;const t=gc.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 ti(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=tb.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(gc.exec(t))return jt(t);const r=eb.exec(t);if(r){const s=r[1],l=r[2],d=r[3],g=r[4],u=r[5],b=r[6]||"00",v=r[7];if(v){const f=v.length===5&&v[3]!==":"?`${v.slice(0,3)}:${v.slice(3)}`:v,p=new Date(`${s}-${l}-${d}T${g}:${u}:${b}${f}`);return Number.isNaN(p.getTime())?null:p}const c=new Date(Number(s),Number(l)-1,Number(d),Number(g),Number(u),Number(b),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=jt(e??"");if(!a)return e?String(e):"";try{return ei(t,{timeZone:"UTC"}).format(a)}catch{return e?String(e):""}}function An(e,t,a){const o=ti(e);if(!o)return e?String(e):"";try{return ei(t,a).format(o)}catch{return e?String(e):""}}function ab(e){return An(e,{hour:"2-digit",minute:"2-digit"})}function Dr(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 ra(e,t){const a=t||uc(),r=ei({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 Ln(e){const t=new Date(e);return t.setUTCHours(0,0,0,0),t}function ob(e,t){const a=[];let o=Ln(e);const r=Ln(t).getTime();for(;o.getTime()<=r;)a.push(new Date(o)),o=new Date(o.getTime()+24*60*60*1e3);return a}function rb(e){const t=e.getUTCDay();return t===0||t===6}function qo(e,t){const a=new Date(e.getTime());return a.setUTCDate(a.getUTCDate()+t),a}function Dn(e,t){const a=new Date(e.getTime());return a.setUTCMonth(a.getUTCMonth()+t),a}function pc(e){return new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth()+1,0))}const nb={class:"sb-inner"},sb={class:"rc hero"},ib={class:"hero-topbar"},lb=["aria-label","title"],db={class:"seg w2 hero-seg"},cb={class:"ew"},ub={class:"rc-big"},gb={class:"navrow arw-layout"},pb=["disabled","aria-label"],fb={class:"date-pill"},bb=["disabled","aria-label"],vb={class:"sync-row"},hb={class:"sync-left"},mb={class:"sync-txt"},yb=["disabled"],wb={class:"sc"},kb={class:"sc-hd"},xb={key:0,class:"badge"},_b={key:1,class:"badge badge--std"},Cb={class:"steps"},Sb=["onClick","title"],$b={class:"sn"},Tb={viewBox:"0 0 24 24",width:"13",height:"13",fill:"currentColor"},Mb=["d"],Ab={class:"sb-txt"},Lb={class:"dock"},Db=["disabled"],Eb="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",Nb="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",Ib="M16,5V18H21V5M4,18H9V5H4M10,18H15V5H10V18Z",Ob="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",Bb="M3,17V19H9V17H3M3,5V7H13V5H3M13,21V19H21V17H13V15H11V21H13M7,9V11H3V13H7V15H9V9H7M21,13V11H11V13H21M15,9H17V7H21V5H17V3H15V9Z",Hb="M3 11H11V3H3M5 5H9V9H5M13 21H21V13H13M15 15H19V19H15M3 21H11V13H3M5 15H9V19H5M13 3V11H21V3M19 9H15V5H19Z",Fb="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",Pb=Pe({__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:Eb,placeholder:"Choose a planning model"},{id:"calendars",label:"Calendars",icon:Nb,placeholder:"No calendars selected"},{id:"deck",label:"Deck",icon:Ib,placeholder:"Deck integration"},{id:"goals",label:"Goals",icon:Ob,placeholder:"Set weekly targets"},{id:"preferences",label:"Preferences",icon:Bb,placeholder:"Theme and hours"},{id:"dashboard",label:"Dashboard",icon:Hb,placeholder:"Layout preset"},{id:"review",label:"Review",icon:Fb,placeholder:"Confirm and save"}],o=e,r=C(()=>o.range==="month"?"This month":"This week"),n=C(()=>{const l=jt(o.from);return l?o.range==="month"?`Month ${l.getUTCMonth()+1}`:`Week ${Ya(l)}`:o.range==="month"?"Month":"Week"}),s=C(()=>o.isLoading?"Syncing…":o.lastSync??"Ready");return(l,d)=>(h(),nt(A(Kf),null,{default:mt(()=>[Os(l.$slots,"actions",{},void 0,!0),i("div",nb,[i("div",sb,[i("div",ib,[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,lb),i("div",db,[i("button",{type:"button",class:we({on:l.range==="week"}),onClick:d[1]||(d[1]=g=>l.$emit("update:range","week"))},"Week",2),i("button",{type:"button",class:we({on:l.range==="month"}),onClick:d[2]||(d[2]=g=>l.$emit("update:range","month"))},"Month",2)])]),i("div",cb,E(r.value),1),i("div",ub,E(n.value),1),i("div",gb,[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,pb),i("div",fb,E(l.from)+" – "+E(l.to),1),i("button",{class:"arw",type:"button",disabled:l.isLoading,"aria-label":"Next "+(l.range==="month"?"month":"week"),onClick:d[4]||(d[4]=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,bb)]),i("div",vb,[i("div",hb,[i("div",{class:we(["sync-dot",{syncing:l.isLoading}])},null,2),i("span",mb,E(s.value),1)]),i("button",{class:"btn-ref",type:"button",disabled:l.isLoading,onClick:d[5]||(d[5]=g=>l.$emit("load"))},"Refresh",8,yb)])]),i("div",wb,[i("div",kb,[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(),w("span",xb,"Pro")):l.dashboardMode==="standard"?(h(),w("span",_b,"Std")):te("",!0)]),i("button",{class:"wiz",type:"button",onClick:d[6]||(d[6]=g=>l.$emit("rerun-onboarding"))}," Open setup wizard "),i("ol",Cb,[(h(),w(ke,null,Ie(a,g=>{var u,b;return i("li",{key:g.id,class:we(["step",((u=l.guidedHintStatuses)==null?void 0:u[g.id])??"dim"]),onClick:v=>l.$emit("rerun-onboarding",g.id),role:"button",title:"Go to "+g.label},[i("span",$b,[(h(),w("svg",Tb,[i("path",{d:g.icon},null,8,Mb)]))]),i("div",Ab,[i("strong",null,E(g.label),1),i("small",null,E(((b=l.guidedHints)==null?void 0:b[g.id])||g.placeholder),1)])],10,Sb)}),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:we(["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,Db),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}))}}),at=(e,t)=>{const a=e.__vccOpts||e;for(const[o,r]of t)a[o]=r;return a},Wb=at(Pb,[["__scopeId","data-v-88e39507"]]),zb=["aria-labelledby","aria-label"],Rb=["onKeydown"],ai=Pe({__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=ne(null);function n(){o("close")}function s(){a.closeOnBackdrop&&n()}function l(){a.closeOnEsc&&n()}return Be(()=>a.visible,d=>{d&&zt(()=>{var g;(g=r.value)==null||g.focus()}).catch(()=>{})}),(d,g)=>(h(),nt(Ud,{name:"onboarding-fade"},{default:mt(()=>[d.visible?(h(),w("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:we(["onboarding-panel",[d.panelClass,`theme-${d.theme}`]]),tabindex:"-1",onClick:g[0]||(g[0]=Ke(()=>{},["stop"])),onKeydown:$a(Ke(l,["prevent"]),["esc"])},[Os(d.$slots,"default")],42,Rb)],8,zb)):te("",!0)]),_:3}))}}),jb={class:"intro-step"},Vb={key:0,class:"intro-route-grid intro-route-grid--three"},Ub={key:1,class:"intro-route-grid intro-route-grid--two"},Gb={key:2,class:"config-warning"},qb={class:"config-warning__actions"},Kb={class:"hint"},Jb=Pe({__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(),w("div",jb,[a[17]||(a[17]=qa('<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(),w("div",Vb,[i("button",{type:"button",class:we(["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:we(["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:we(["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(),w("div",Ub,[i("button",{type:"button",class:we(["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:we(["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(),w("div",Gb,[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,[We(A(oa),{type:"tertiary",size:"small",disabled:t.snapshotSaving||t.saving,"aria-busy":t.snapshotSaving,onClick:t.onSaveCurrentConfig},{default:mt(()=>[...a[15]||(a[15]=[Re(" Save current setup as profile ",-1)])]),_:1},8,["disabled","aria-busy","onClick"])]),t.snapshotNotice?(h(),w("div",{key:0,class:we(["snapshot-notice",`snapshot-notice--${t.snapshotNotice.type}`]),role:"status"},E(t.snapshotNotice.message),3)):te("",!0)])):te("",!0),i("p",Kb,E(t.hasExistingConfig?"Quick setup can replace the current setup automatically. Manual setup keeps the full step-by-step flow.":"Quick setup finishes everything automatically. Manual setup opens the full step-by-step flow."),1)]))}}),Zb={class:"preferences-step"},Yb={class:"preferences-grid preferences-grid--core-optional"},Xb={class:"pref-card pref-card--core pref-card--stack"},Qb={class:"field-row"},ev={class:"field-actions"},tv={class:"value-chip"},av={key:0,class:"editor-card"},ov={class:"choice-strip"},rv={class:"quiet"},nv={class:"field-row"},sv={class:"field-actions"},iv={class:"value-chip"},lv={key:1,class:"editor-card"},dv={class:"choice-strip"},cv={class:"inline-input"},uv=["value"],gv={class:"field-row"},pv={class:"field-actions"},fv={class:"value-chip"},bv={key:2,class:"editor-card"},vv={class:"choice-strip compact"},hv=["onClick"],mv={class:"pref-card pref-card--stack"},yv={class:"module-card"},wv={class:"row"},kv={class:"soft-pill"},xv={key:0,class:"editor-card"},_v={class:"field-row"},Cv={class:"field-actions"},Sv={key:0,class:"editor-card"},$v={class:"field-row"},Tv={class:"field-actions"},Mv={key:0,class:"field-row"},Av={class:"field-actions field-actions--wrap"},Lv={key:1,class:"field-row"},Dv={class:"field-actions"},Ev=["value"],Nv={key:1,class:"editor-card"},Iv={class:"field-row"},Ov={class:"field-actions"},Bv={key:0,class:"field-row"},Hv={class:"field-actions field-actions--wrap"},Fv={key:1,class:"field-row"},Pv={class:"field-actions"},Wv=["value"],zv={class:"field-row"},Rv={class:"field-actions"},jv={key:2,class:"field-row"},Vv={class:"field-actions field-actions--wrap"},Uv={key:3,class:"field-row"},Gv={class:"field-actions field-actions--wrap"},qv={key:4,class:"field-row"},Kv={class:"field-actions"},Jv=["disabled"],Zv=["disabled"],Yv=Pe({__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=ne("theme"),o=ne(!1),r=ne(!1),n=ne(!1),s=[1,2,3,4,5,6],l=C(()=>t.themePreference==="auto"?"Auto":t.themePreference==="light"?"Light":"Dark"),d=C(()=>`${Number(t.allDayHoursInput||0).toFixed(t.allDayHoursInput%1===0?0:2)} h`),g=C(()=>`${t.trendLookbackInput}`);function u(z){a.value=(a.value===z,z)}function b(z){t.onAllDayHoursChange({value:String(z)})}function v(z){t.onTrendLookbackChange({value:String(z)})}async function c(){if(!(!t.sendTestReport||r.value)){r.value=!0;try{await t.sendTestReport()}finally{r.value=!1}}}async function f(){if(!(!t.sendCheckpointReport||n.value)){n.value=!0;try{await t.sendCheckpointReport()}finally{n.value=!1}}}const{themePreference:p,previewTheme:S,allDayHoursInput:x,trendLookbackInput:$,reportingDraft:_}=Jg(t),{setThemePreference:O,onAllDayHoursChange:I,setReportingEnabled:B,setReportingModeEnabled:y,setReportingModeDelivery:T,updateReporting:m,updateReportingMode:k,sendTestReport:L}=t;return(z,M)=>(h(),w("div",Zb,[M[54]||(M[54]=i("h3",null,"Preferences",-1)),M[55]||(M[55]=i("p",{class:"hint"},"Edit the defaults you almost always need. Add-ons stay separate.",-1)),i("div",Yb,[i("section",Xb,[M[36]||(M[36]=i("h4",null,"Core defaults",-1)),i("div",Qb,[M[26]||(M[26]=i("div",{class:"field-copy"},[i("strong",null,"Theme"),i("p",null,"Follow Nextcloud / light / dark")],-1)),i("div",ev,[i("span",tv,E(l.value),1),i("button",{type:"button",class:"action-chip",onClick:M[0]||(M[0]=Z=>u("theme"))},"Choose")])]),a.value==="theme"?(h(),w("div",av,[M[27]||(M[27]=i("strong",null,"Open theme selection",-1)),i("div",ov,[i("button",{type:"button",class:we(["choice-pill",{active:A(p)==="auto"}]),onClick:M[1]||(M[1]=Z=>A(O)("auto"))}," Follow Nextcloud ",2),i("button",{type:"button",class:we(["choice-pill",{active:A(p)==="light"}]),onClick:M[2]||(M[2]=Z=>A(O)("light"))}," Light ",2),i("button",{type:"button",class:we(["choice-pill",{active:A(p)==="dark"}]),onClick:M[3]||(M[3]=Z=>A(O)("dark"))}," Dark ",2)]),i("p",rv,"Current preview follows "+E(A(S)==="dark"?"dark":"light")+" mode.",1)])):te("",!0),i("div",nv,[M[28]||(M[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",sv,[i("span",iv,E(d.value),1),i("button",{type:"button",class:"action-chip",onClick:M[4]||(M[4]=Z=>u("allDay"))},"Edit")])]),a.value==="allDay"?(h(),w("div",lv,[M[31]||(M[31]=i("strong",null,"Open all-day hours editor",-1)),i("div",dv,[i("button",{type:"button",class:we(["choice-pill",{active:A(x)===6}]),onClick:M[5]||(M[5]=Z=>b(6))}," 6 h ",2),i("button",{type:"button",class:we(["choice-pill",{active:A(x)===8}]),onClick:M[6]||(M[6]=Z=>b(8))}," 8 h ",2),i("button",{type:"button",class:we(["choice-pill",{active:A(x)===10}]),onClick:M[7]||(M[7]=Z=>b(10))}," 10 h ",2),i("label",cv,[M[29]||(M[29]=i("span",null,"Custom",-1)),i("input",{type:"number",min:"0",max:"24",step:"0.25",value:A(x),onInput:M[8]||(M[8]=Z=>A(I)(Z.target))},null,40,uv),M[30]||(M[30]=i("span",{class:"slot"},"h",-1))])]),M[32]||(M[32]=i("p",{class:"quiet"},"Preset values stay visible, but you can still type a custom hours value.",-1))])):te("",!0),i("div",gv,[M[33]||(M[33]=i("div",{class:"field-copy"},[i("strong",null,"Trend lookback"),i("p",null,"Global default for trends.")],-1)),i("div",pv,[i("span",fv,E(g.value),1),i("button",{type:"button",class:"action-chip",onClick:M[9]||(M[9]=Z=>u("lookback"))},"Choose")])]),a.value==="lookback"?(h(),w("div",bv,[M[34]||(M[34]=i("strong",null,"Open trend lookback selection",-1)),i("div",vv,[(h(),w(ke,null,Ie(s,Z=>i("button",{key:Z,type:"button",class:we(["choice-pill",{active:A($)===Z}]),onClick:j=>v(Z)},E(Z)+" week"+E(Z===1?"":"s"),11,hv)),64))]),M[35]||(M[35]=i("p",{class:"quiet"},"Allowed range: 1 to 6 weeks. This stays compact as a one-row selection.",-1))])):te("",!0)]),i("section",mv,[M[53]||(M[53]=i("h4",null,"Add-on modules",-1)),i("div",yv,[M[37]||(M[37]=i("strong",null,"Recap reporting",-1)),M[38]||(M[38]=i("p",null,"Current optional module for schedule, reminders, and risk alerts.",-1)),i("div",wv,[i("span",kv,E(A(_).enabled?"Recap on":"Recap off"),1),i("button",{type:"button",class:"action-chip",onClick:M[10]||(M[10]=Z=>o.value=!o.value)},E(o.value?"Close module":"Open module"),1)])]),o.value?(h(),w("div",xv,[M[52]||(M[52]=i("strong",null,"Open recap reporting module",-1)),i("div",_v,[M[39]||(M[39]=i("div",{class:"field-copy"},[i("strong",null,"Enabled"),i("p",null,"Turn recap reporting on or off.")],-1)),i("div",Cv,[i("button",{type:"button",class:we(["toggle-chip",{on:A(_).enabled}]),onClick:M[11]||(M[11]=Z=>A(B)(!A(_).enabled))},E(A(_).enabled?"On":"Off"),3)])]),A(_).enabled?(h(),w("div",Sv,[M[43]||(M[43]=i("strong",null,"Weekly recap",-1)),i("div",$v,[M[40]||(M[40]=i("div",{class:"field-copy"},[i("strong",null,"Weekly mode"),i("p",null,"Enable or disable weekly recap delivery.")],-1)),i("div",Tv,[i("button",{type:"button",class:we(["toggle-chip",{on:A(_).modes.week.enabled}]),onClick:M[12]||(M[12]=Z=>A(y)("week",!A(_).modes.week.enabled))},E(A(_).modes.week.enabled?"On":"Off"),3)])]),A(_).modes.week.enabled?(h(),w("div",Mv,[M[41]||(M[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",Av,[i("button",{type:"button",class:we(["choice-pill",{active:A(_).modes.week.delivery==="final"}]),onClick:M[13]||(M[13]=Z=>A(T)("week","final"))}," Final recap ",2),i("button",{type:"button",class:we(["choice-pill",{active:A(_).modes.week.delivery==="checkpoint_final"}]),onClick:M[14]||(M[14]=Z=>A(T)("week","checkpoint_final"))}," Checkpoint + final ",2)])])):te("",!0),A(_).modes.week.enabled?(h(),w("div",Lv,[M[42]||(M[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",Dv,[i("input",{class:"time-input",type:"time",step:"900",value:A(_).modes.week.sendTimeLocal,onInput:M[15]||(M[15]=Z=>A(k)("week",{sendTimeLocal:Z.target.value||"06:00"}))},null,40,Ev)])])):te("",!0)])):te("",!0),A(_).enabled?(h(),w("div",Nv,[M[47]||(M[47]=i("strong",null,"Monthly recap",-1)),i("div",Iv,[M[44]||(M[44]=i("div",{class:"field-copy"},[i("strong",null,"Monthly mode"),i("p",null,"Enable or disable monthly recap delivery.")],-1)),i("div",Ov,[i("button",{type:"button",class:we(["toggle-chip",{on:A(_).modes.month.enabled}]),onClick:M[16]||(M[16]=Z=>A(y)("month",!A(_).modes.month.enabled))},E(A(_).modes.month.enabled?"On":"Off"),3)])]),A(_).modes.month.enabled?(h(),w("div",Bv,[M[45]||(M[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",Hv,[i("button",{type:"button",class:we(["choice-pill",{active:A(_).modes.month.delivery==="final"}]),onClick:M[17]||(M[17]=Z=>A(T)("month","final"))}," Final recap ",2),i("button",{type:"button",class:we(["choice-pill",{active:A(_).modes.month.delivery==="checkpoint_final"}]),onClick:M[18]||(M[18]=Z=>A(T)("month","checkpoint_final"))}," Checkpoint + final ",2)])])):te("",!0),A(_).modes.month.enabled?(h(),w("div",Fv,[M[46]||(M[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",Pv,[i("input",{class:"time-input",type:"time",step:"900",value:A(_).modes.month.sendTimeLocal,onInput:M[19]||(M[19]=Z=>A(k)("month",{sendTimeLocal:Z.target.value||"18:00"}))},null,40,Wv)])])):te("",!0)])):te("",!0),i("div",zv,[M[48]||(M[48]=i("div",{class:"field-copy"},[i("strong",null,"Risk alert"),i("p",null,"Highlight if targets drift.")],-1)),i("div",Rv,[i("button",{type:"button",class:we(["toggle-chip",{on:A(_).alertOnRisk}]),onClick:M[20]||(M[20]=Z=>A(m)({alertOnRisk:!A(_).alertOnRisk}))},E(A(_).alertOnRisk?"On":"Off"),3)])]),A(_).enabled?(h(),w("div",jv,[M[49]||(M[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",Vv,[i("button",{type:"button",class:we(["choice-pill",{active:A(_).riskThreshold===.7}]),onClick:M[21]||(M[21]=Z=>A(m)({riskThreshold:.7}))}," 70% ",2),i("button",{type:"button",class:we(["choice-pill",{active:A(_).riskThreshold===.85}]),onClick:M[22]||(M[22]=Z=>A(m)({riskThreshold:.85}))}," 85% ",2),i("button",{type:"button",class:we(["choice-pill",{active:A(_).riskThreshold===.95}]),onClick:M[23]||(M[23]=Z=>A(m)({riskThreshold:.95}))}," 95% ",2)])])):te("",!0),A(_).enabled?(h(),w("div",Uv,[M[50]||(M[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",Gv,[i("button",{type:"button",class:we(["toggle-chip",{on:A(_).notifyEmail}]),onClick:M[24]||(M[24]=Z=>A(m)({notifyEmail:!A(_).notifyEmail}))}," Email "+E(A(_).notifyEmail?"On":"Off"),3),i("button",{type:"button",class:we(["toggle-chip",{on:A(_).notifyNotification}]),onClick:M[25]||(M[25]=Z=>A(m)({notifyNotification:!A(_).notifyNotification}))}," In-app "+E(A(_).notifyNotification?"On":"Off"),3)])])):te("",!0),A(_).enabled&&(A(L)||z.sendCheckpointReport)?(h(),w("div",qv,[M[51]||(M[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",Kv,[z.sendCheckpointReport?(h(),w("button",{key:0,type:"button",class:"action-chip",disabled:n.value||r.value,onClick:f},E(n.value?"Sending…":"Checkpoint"),9,Jv)):te("",!0),A(L)?(h(),w("button",{key:1,type:"button",class:"action-chip",disabled:r.value||n.value,onClick:c},E(r.value?"Sending…":"Recap"),9,Zv)):te("",!0)])])):te("",!0)])):te("",!0)])])]))}}),Xv={class:"pref-card pref-card--deck deck-step-card"},Qv={class:"toggle-row"},eh=["checked"],th={key:0,class:"selection-step-toolbar"},ah={class:"selection-step-toolbar__meta"},oh={class:"selection-step-toolbar__actions"},rh=["disabled"],nh=["disabled"],sh={class:"deck-board-list deck-board-list--scroll"},ih={key:0,class:"deck-status"},lh={key:1,class:"deck-status deck-status--error"},dh={key:0,class:"deck-status"},ch={key:1,class:"deck-board-options deck-board-options--list",role:"list"},uh=["checked","onChange"],gh={class:"calendar-item__state"},ph=Pe({__name:"OnboardingDeckBoardsStep",props:{deckSettingsDraft:{},setDeckEnabled:{type:Function},deckBoards:{},deckBoardsLoading:{type:Boolean},deckBoardsError:{},isDeckBoardVisible:{type:Function},toggleDeckBoard:{type:Function}},setup(e){const t=e,a=C(()=>t.deckBoards.filter(s=>t.isDeckBoardVisible(s.id)).length),o=C(()=>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(),w(ke,null,[l[3]||(l[3]=i("h3",null,"Select Deck boards to include",-1)),i("article",Xv,[i("label",Qv,[i("input",{type:"checkbox",checked:s.deckSettingsDraft.enabled,onChange:l[0]||(l[0]=d=>s.setDeckEnabled(d.target.checked))},null,40,eh),l[1]||(l[1]=i("span",null,"Show Deck in this setup",-1))]),s.deckSettingsDraft.enabled?(h(),w(ke,{key:0},[s.deckBoards.length&&!s.deckBoardsLoading&&!s.deckBoardsError?(h(),w("div",th,[i("span",ah,E(a.value)+" of "+E(s.deckBoards.length)+" boards selected",1),i("div",oh,[i("button",{type:"button",class:"ghost-btn",disabled:o.value,onClick:r},"Select all",8,rh),i("button",{type:"button",class:"ghost-btn",disabled:a.value===0,onClick:n},"Deselect all",8,nh)])])):te("",!0),i("div",sh,[s.deckBoardsLoading?(h(),w("p",ih,"Loading Deck boards…")):s.deckBoardsError?(h(),w("p",lh,E(s.deckBoardsError),1)):(h(),w(ke,{key:2},[s.deckBoards.length?(h(),w("div",ch,[(h(!0),w(ke,null,Ie(s.deckBoards,d=>(h(),w("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,uh),l[2]||(l[2]=i("span",{class:"dot"},null,-1)),i("span",null,E(d.title),1),i("span",gh,E(s.isDeckBoardVisible(d.id)?"selected":"not selected"),1)]))),128))])):(h(),w("p",dh,"No boards yet."))],64))])],64)):te("",!0)])],64))}}),fh={class:"strategy-grid dashboard-preset-grid"},bh=["onClick"],vh={class:"dashboard-tab-strip"},hh={class:"subtitle"},mh={class:"mini-row"},yh={class:"pill"},wh={class:"pill"},kh=Pe({__name:"OnboardingDashboardStep",props:{dashboardMode:{},setDashboardMode:{type:Function},onContinue:{type:Function},dashboardPresets:{}},setup(e){return(t,a)=>(h(),w(ke,null,[a[8]||(a[8]=i("h3",null,"Choose dashboard layout",-1)),i("div",fh,[(h(!0),w(ke,null,Ie(t.dashboardPresets,o=>(h(),w("button",{key:o.id,type:"button",class:we(["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:we(["dashboard-thumb",`dashboard-thumb--${o.id}`])},[i("div",vh,[a[4]||(a[4]=i("span",{class:"dashboard-tab dashboard-tab--wide is-active"},null,-1)),o.id==="pro"?(h(),w(ke,{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)):te("",!0)]),o.id==="quick"?(h(),w(ke,{key:0},[a[5]||(a[5]=qa('<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(),w(ke,{key:1},[a[6]||(a[6]=qa('<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(),w(ke,{key:2},[a[7]||(a[7]=qa('<div class="dashboard-thumb-row dashboard-thumb-row--3"><span class="dashboard-block dashboard-block--tall dashboard-block--soft"></span><span class="dashboard-block dashboard-block--tall dashboard-block--warm"></span><span class="dashboard-block dashboard-block--tall dashboard-block--ok"></span></div><div class="dashboard-thumb-row dashboard-thumb-row--3"><span class="dashboard-block"></span><span class="dashboard-block"></span><span class="dashboard-block"></span></div><div class="dashboard-thumb-row dashboard-thumb-row--2"><span class="dashboard-block dashboard-block--soft"></span><span class="dashboard-block dashboard-block--warm"></span></div>',3))],64))],2),i("h4",null,E(o.title),1),i("p",hh,E(o.subtitle),1),i("div",mh,[i("span",yh,E(o.widgets),1),i("span",wh,E(o.badge),1)])],42,bh))),128))])],64))}}),xh={class:"strategy-grid"},_h=["onClick"],Ch={class:"subtitle"},Sh=Pe({__name:"OnboardingStrategyStep",props:{strategies:{},selectedStrategy:{},setSelectedStrategy:{type:Function},onContinue:{type:Function}},setup(e){return(t,a)=>(h(),w(ke,null,[a[1]||(a[1]=i("h3",null,"Choose your tracking strategy",-1)),i("div",xh,[(h(!0),w(ke,null,Ie(t.strategies,o=>(h(),w("button",{key:o.id,type:"button",class:we(["intro-route-card intro-route-card--button strategy-route-card",{active:t.selectedStrategy===o.id}]),onClick:r=>t.setSelectedStrategy(o.id),onDblclick:a[0]||(a[0]=(...r)=>t.onContinue&&t.onContinue(...r))},[i("h4",null,E(o.title),1),i("p",Ch,E(o.subtitle),1),i("ul",null,[(h(!0),w(ke,null,Ie(o.highlights,r=>(h(),w("li",{key:r},E(r),1))),128))]),i("footer",null,"Best for: "+E(o.recommendedFor),1)],42,_h))),128))])],64))}}),$h={key:0,class:"selection-step-toolbar"},Th={class:"selection-step-toolbar__meta"},Mh={class:"selection-step-toolbar__actions"},Ah=["disabled"],Lh=["disabled"],Dh={class:"calendar-list calendar-list--scroll"},Eh=["value","checked","onChange"],Nh={class:"calendar-item__label"},Ih={class:"calendar-item__state"},Oh={key:1,class:"warning"},Bh=Pe({__name:"OnboardingCalendarsStep",props:{calendars:{},localSelection:{},toggleCalendar:{type:Function}},setup(e){const t=e,a=C(()=>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(),w(ke,null,[s[0]||(s[0]=i("h3",null,"Select the calendars Opsdash should include",-1)),n.calendars.length?(h(),w("div",$h,[i("span",Th,E(n.localSelection.length)+" of "+E(n.calendars.length)+" selected",1),i("div",Mh,[i("button",{type:"button",class:"ghost-btn",disabled:a.value,onClick:o},"Select all",8,Ah),i("button",{type:"button",class:"ghost-btn",disabled:!n.localSelection.length,onClick:r},"Deselect all",8,Lh)])])):te("",!0),i("div",Dh,[(h(!0),w(ke,null,Ie(n.calendars,l=>(h(),w("label",{key:l.id,class:we(["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,Eh),i("span",{class:"dot",style:He({backgroundColor:l.color||"#3B82F6"})},null,4),i("span",Nh,E(l.displayname),1),i("span",Ih,E(n.localSelection.includes(l.id)?"selected":"not selected"),1)],2))),128))]),n.localSelection.length?te("",!0):(h(),w("div",Oh,"Select at least one calendar to continue."))],64))}}),Hh={class:"cpp-wrap","data-color-popover":""},Fh=["disabled","aria-expanded","aria-label"],Ph=["onKeydown"],Wh={class:"cpp-grid",role:"group","aria-label":"Preset colors"},zh=["title","aria-label","onClick"],Rh={class:"cpp-custom"},jh=["value"],En=at(Pe({__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=ne(!1),n=ne(null);function s(){a.disabled||(r.value=!r.value,r.value&&zt(()=>{var b;return(b=n.value)==null?void 0:b.focus()}))}function l(){r.value=!1}function d(b){o("update:modelValue",b),l()}function g(b){const v=b.target.value;/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(v)&&o("update:modelValue",v)}function u(b){b.target.closest("[data-color-popover]")||l()}return Lt(()=>document.addEventListener("click",u)),Ct(()=>document.removeEventListener("click",u)),(b,v)=>(h(),w("div",Hh,[i("button",{type:"button",class:"cpp-trigger",disabled:b.disabled,"aria-expanded":r.value,"aria-label":b.ariaLabel,onClick:Ke(s,["stop"])},[i("span",{class:"cpp-dot",style:He({background:b.modelValue})},null,4),Os(b.$slots,"default",{},()=>[v[0]||(v[0]=Re("Color",-1))],!0)],8,Fh),r.value?(h(),w("div",{key:0,ref_key:"popoverRef",ref:n,class:"cpp-popover",tabindex:"-1",onKeydown:$a(Ke(l,["prevent"]),["esc"])},[i("div",Wh,[(h(!0),w(ke,null,Ie(b.palette,c=>{var f;return h(),w("button",{key:c,type:"button",class:we(["cpp-swatch",{active:((f=b.modelValue)==null?void 0:f.toUpperCase())===c.toUpperCase()}]),style:He({background:c}),title:c,"aria-label":c,onClick:p=>d(c)},null,14,zh)}),128))]),i("label",Rh,[v[1]||(v[1]=i("span",null,"Custom",-1)),i("input",{type:"color",class:"cpp-custom-input",value:b.modelValue,onInput:g},null,40,jh)])],40,Ph)):te("",!0)]))}}),[["__scopeId","data-v-81fba48e"]]),Vh={class:"goals-step"},Uh={key:0,class:"goal-single"},Gh={class:"goal-single__editor"},qh={class:"field"},Kh={class:"input-unit"},Jh=["value"],Zh={key:0,class:"hint"},Yh={key:1,class:"goal-calendar"},Xh={key:0,class:"goal-suggestion-toolbar"},Qh={class:"goal-suggestion-toolbar__cluster"},em={key:0,class:"goal-suggestion-inline-editor"},tm=["max","value"],am={class:"goal-suggestion-inline-editor__meta"},om={class:"goal-suggestion-toolbar__meta"},rm={class:"goal-calendar-list"},nm={class:"goal-calendar-row__main"},sm={class:"goal-suggestion-inline"},im=["onClick"],lm={key:1},dm={class:"input-unit"},cm=["value","onInput"],um={key:2,class:"goal-advanced goal-advanced--b26"},gm={class:"goal-template-strip"},pm=["onClick"],fm={class:"goal-preset-swatches"},bm={class:"goal-panel-card"},vm={class:"goal-panel-card__head"},hm={class:"goal-panel-pills"},mm={class:"pill"},ym={class:"pill"},wm={key:0,class:"goal-suggestion-toolbar goal-suggestion-toolbar--panel"},km={class:"goal-suggestion-toolbar__cluster"},xm={key:0,class:"goal-suggestion-inline-editor"},_m=["max","value"],Cm={class:"goal-suggestion-inline-editor__meta"},Sm={class:"goal-suggestion-toolbar__meta"},$m={key:1,class:"goal-mismatch-box"},Tm={key:2,class:"goal-mismatch-box goal-mismatch-box--ok"},Mm={class:"goal-category-list goal-category-list--accordion"},Am=["onDragstart","onDrop"],Lm={class:"goal-category-titlebar"},Dm=["value","onInput"],Em={class:"value-pill"},Nm={class:"goal-category-action-card"},Im={class:"field goal-field-stack goal-inline-target goal-action-block"},Om={class:"input-unit input-unit--small"},Bm=["value","onInput"],Hm={class:"field goal-field-stack goal-color-stack goal-color-stack--inline goal-action-block"},Fm={class:"field goal-checkbox goal-action-block"},Pm={class:"goal-checkbox__control"},Wm=["checked","onChange"],zm={class:"field goal-pace-field goal-action-block"},Rm=["value","onChange"],jm={class:"goal-suggestion-stack goal-suggestion-stack--inline goal-action-block"},Vm=["onClick"],Um={key:1,class:"goal-suggestion-pill goal-suggestion-pill--muted"},Gm={class:"goal-category-action-icons"},qm=["title"],Km=["aria-label","onChange"],Jm={value:""},Zm=["value"],Ym=["disabled","onClick"],Xm={class:"goal-reorder-tools goal-reorder-tools--surface goal-reorder-tools--compact","aria-label":"Category reorder controls"},Qm=["onClick"],ey=["onClick"],ty=["onClick"],ay={class:"mini-pills"},oy={class:"chevron-pill"},ry={class:"row-name"},ny={class:"value-pill"},sy={key:0,class:"goal-category-assigned-badges","aria-label":"Assigned calendars"},iy={class:"goal-calendar-badge__name"},ly={class:"goal-calendar-badge__hours"},dy={key:0,class:"goal-category-editor"},cy={class:"goal-category-row-bottom"},uy={class:"goal-nice-select"},gy={key:0,class:"goal-calendar-sublist"},py=["onDragstart","onDrop"],fy={class:"goal-calendar-subrow__main"},by={class:"row-name"},vy={class:"input-unit input-unit--small"},hy=["value","onInput"],my={class:"goal-calendar-subrow__status"},yy=["disabled","onClick"],wy={class:"goal-calendar-subrow__actions"},ky={class:"goal-reorder-tools goal-reorder-tools--calendar goal-reorder-tools--surface","aria-label":"Calendar reorder controls"},xy=["onClick"],_y=["onClick"],Cy=["aria-label","title","onClick"],Sy={key:1,class:"hint"},$y={key:3,class:"hint"},fc=Pe({__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=ne(""),o=ne(""),r=ne(""),n=ne(""),s=ne(!1);let l=null;const d=C(()=>t.selectedCalendars.reduce((T,m)=>T+Number(t.suggestedCalendarTargets[m.id]??0),0)),g=C(()=>T=>t.selectedCalendars.filter(m=>t.assignments[m.id]===T)),u=C(()=>T=>t.selectedCalendars.filter(m=>{const k=t.assignments[m.id];return!k||k===T})),b=C(()=>t.categories.map(T=>{const m=t.selectedCalendars.filter(M=>t.assignments[M.id]===T.id),k=m.reduce((M,Z)=>M+Number(t.getCalendarTarget(Z.id)||0),0),L=Number(T.targetHours||0),z=Math.abs(L-k);return{id:T.id,label:T.label||"Untitled category",assigned:k,target:L,mismatch:z,count:m.length}})),v=C(()=>b.value.filter(m=>m.mismatch>.01).sort((m,k)=>k.mismatch-m.mismatch)[0]??null);Be(()=>{var T;return[t.categories.map(m=>m.id).join(","),(T=v.value)==null?void 0:T.id].join("::")},()=>{var T,m,k;if((T=v.value)!=null&&T.id){r.value=v.value.id;return}t.categories.find(L=>L.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}),Be(()=>[t.selectedStrategy,t.categories.length,t.categoryPresets.length].join("::"),()=>{if(s.value=!1,t.selectedStrategy==="full_granular"&&!t.categories.length&&t.categoryPresets.length){const T=t.categoryPresets[0];n.value=T.id,l&&clearTimeout(l),l=setTimeout(()=>{t.applyCategoryPreset(T)},0)}},{immediate:!0});function c(T){a.value=T}function f(T){a.value&&(t.reorderCategory(a.value,T),a.value="")}function p(T){o.value=T}function S(T){o.value&&(t.reorderSelectedCalendar(o.value,T),o.value="")}function x(T,m){const k=m.value;k&&(t.assignCalendar(k,T),m.value="")}function $(T){return b.value.find(m=>m.id===T.id)??{id:T.id,label:T.label||"Untitled category",assigned:0,target:Number(T.targetHours||0),mismatch:Number(T.targetHours||0),count:0}}function _(T){const m=$(T);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 O(T){return`${Number(t.getCalendarTarget(T)||0).toFixed(1)} h`}function I(T){const m=Number(t.suggestedCalendarTargets[T]??0);return m>0?`Suggested ${m.toFixed(1)} h`:`Assigned ${O(T)}`}function B(T){return T===0?"is-cool":T===1?"is-warm":"is-forest"}function y(T){t.categories.length>0&&n.value!==T.id&&!(typeof window>"u"||window.confirm("Replace the current categories with this example set?"))||(n.value=T.id,t.applyCategoryPreset(T))}return(T,m)=>(h(),w("div",Vh,[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)),T.selectedStrategy==="total_only"?(h(),w("section",Uh,[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",Gh,[i("label",qh,[m[11]||(m[11]=i("span",{class:"label"},"Weekly target",-1)),i("div",Kh,[i("input",{type:"number",min:"0",max:"1000",step:"0.5",value:T.totalHoursInput??"",onInput:m[0]||(m[0]=k=>T.onTotalHoursChange(k.target))},null,40,Jh),m[10]||(m[10]=i("span",{class:"unit"},"h / week",-1))])]),d.value>0?(h(),w("p",Zh,[m[12]||(m[12]=Re(" Suggested from recent activity: ",-1)),i("button",{type:"button",class:"goal-suggestion-link",onClick:m[1]||(m[1]=(...k)=>T.onApplyTotalSuggestion&&T.onApplyTotalSuggestion(...k))},[i("strong",null,E(d.value.toFixed(1))+" h / week",1)])])):te("",!0)])])):T.selectedStrategy==="total_plus_categories"?(h(),w("section",Yh,[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)),T.historySummary.available?(h(),w("div",Xh,[i("div",Qh,[i("button",{type:"button",class:we(["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),Re(" Suggestion window ",-1)])],2),s.value?(h(),w("div",em,[m[15]||(m[15]=i("span",{class:"goal-suggestion-inline-editor__label"},"Lookback",-1)),i("input",{type:"number",min:"1",max:T.historySummary.available,value:T.activeHistoryLookback,onInput:m[3]||(m[3]=k=>T.onTrendLookbackChange(k.target))},null,40,tm),i("span",am,"/ "+E(T.historySummary.available)+" weeks",1)])):te("",!0)]),i("span",om,"Using last "+E(T.activeHistoryLookback)+" week"+E(T.activeHistoryLookback===1?"":"s")+" for calendar suggestions",1)])):te("",!0),i("div",rm,[(h(!0),w(ke,null,Ie(T.selectedCalendars,k=>(h(),w("div",{key:k.id,class:"goal-calendar-row"},[i("div",nm,[i("span",{class:"dot",style:He({backgroundColor:k.color||"#3B82F6"})},null,4),i("div",null,[i("strong",null,E(k.displayname),1),i("div",sm,[T.suggestedCalendarTargets[k.id]?(h(),w("button",{key:0,type:"button",class:"goal-suggestion-link",onClick:L=>T.onApplyCalendarSuggestion(k.id)}," Suggested "+E(T.suggestedCalendarTargets[k.id].toFixed(1))+" h ",9,im)):(h(),w("span",lm,"No recent suggestion"))])])]),i("div",dm,[i("input",{type:"number",min:"0",step:"0.25",value:T.getCalendarTarget(k.id),onInput:L=>T.setCalendarTarget(k.id,L.target.value)},null,40,cm),m[16]||(m[16]=i("span",{class:"unit"},"h / week",-1))])]))),128))])])):(h(),w("section",um,[i("div",gm,[(h(!0),w(ke,null,Ie(T.categoryPresets,(k,L)=>(h(),w("button",{key:k.id,type:"button",class:we(["goal-template-card",[{active:n.value===k.id},B(L)]]),onClick:z=>y(k)},[i("strong",null,"Example set "+E(String.fromCharCode(65+L)),1),i("p",null,E(k.colors.length)+" categories · sample only",1),i("div",fm,[(h(!0),w(ke,null,Ie(k.colors,z=>(h(),w("span",{key:`${k.id}-${z}`,class:"goal-preset-swatch",style:He({backgroundColor:z})},null,4))),128))])],10,pm))),128))]),i("article",bm,[i("div",vm,[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",hm,[i("span",mm,E(T.categories.length)+" categories",1),i("span",ym,E(T.selectedCalendars.length)+" calendars selected",1),i("span",{class:we(["pill",{"pill--warn":v.value}])},E(v.value?"1 mismatch open":"All rows aligned"),3),i("button",{type:"button",class:"ghost-btn",onClick:m[4]||(m[4]=(...k)=>T.addCategory&&T.addCategory(...k))},"Add category")])]),T.historySummary.available?(h(),w("div",wm,[i("div",km,[i("button",{type:"button",class:we(["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),Re(" Suggestion window ",-1)])],2),s.value?(h(),w("div",xm,[m[20]||(m[20]=i("span",{class:"goal-suggestion-inline-editor__label"},"Lookback",-1)),i("input",{type:"number",min:"1",max:T.historySummary.available,value:T.activeHistoryLookback,onInput:m[6]||(m[6]=k=>T.onTrendLookbackChange(k.target))},null,40,_m),i("span",Cm,"/ "+E(T.historySummary.available)+" weeks",1)])):te("",!0)]),i("span",Sm,"Using last "+E(T.activeHistoryLookback)+" week"+E(T.activeHistoryLookback===1?"":"s")+" for calendar and category suggestions",1)])):te("",!0),v.value?(h(),w("div",$m,[i("strong",null,E(v.value.label)+" needs attention first",1),i("p",null,[Re(E(v.value.label)+" is currently set to ",1),i("strong",null,E(v.value.target.toFixed(1))+" h",1),m[21]||(m[21]=Re(", but the assigned calendar totals ",-1)),i("strong",null,E(v.value.assigned.toFixed(1))+" h",1),m[22]||(m[22]=Re(". Open this row first so the mismatch is visible and easy to resolve. ",-1))])])):(h(),w("div",Tm,[...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",Mm,[(h(!0),w(ke,null,Ie(T.categories,k=>(h(),w("article",{key:k.id,class:we(["goal-category-card goal-category-card--accordion",{"is-open":r.value===k.id}]),draggable:"true",onDragstart:L=>c(k.id),onDragover:m[9]||(m[9]=Ke(()=>{},["prevent"])),onDrop:Ke(L=>f(k.id),["prevent"])},[i("div",{class:we(["goal-category-top",{"is-open":r.value===k.id}])},[r.value===k.id?(h(),w(ke,{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]=L=>r.value="")}," ‹ "),i("span",{class:"color-dot",style:He({backgroundColor:T.resolvedColor(k)})},null,4),i("input",{class:"goal-category-title-input",type:"text",value:k.label,placeholder:"Category title",onInput:L=>T.setCategoryLabel(k.id,L.target.value)},null,40,Dm),i("span",Em,E(Number(k.targetHours||0).toFixed(1))+" h / week",1),i("span",{class:we(["suggest-pill",{"suggest-pill--warn":$(k).mismatch>.01}])},E(_(k)),3)]),i("div",Nm,[m[32]||(m[32]=i("span",{class:"goal-card-corner-grip",title:"Drag to reorder category","aria-hidden":"true"},"⋮⋮",-1)),i("label",Im,[m[25]||(m[25]=i("span",{class:"label"},"Weekly target",-1)),i("div",Om,[i("input",{type:"number",min:"0",step:"0.5",value:k.targetHours,onInput:L=>T.setCategoryTarget(k.id,L.target.value)},null,40,Bm),m[24]||(m[24]=i("span",{class:"unit"},"h",-1))])]),i("div",Hm,[m[26]||(m[26]=i("span",{class:"label"},"Color",-1)),We(En,{"model-value":T.resolvedColor(k),"onUpdate:modelValue":L=>T.onColorInput(k.id,L)},null,8,["model-value","onUpdate:modelValue"])]),i("label",Fm,[m[27]||(m[27]=i("span",{class:"label"},"Weekend",-1)),i("span",Pm,[i("input",{type:"checkbox",checked:k.includeWeekend,onChange:L=>T.toggleCategoryWeekend(k.id,L.target.checked)},null,40,Wm)])]),i("label",zm,[m[29]||(m[29]=i("span",{class:"label"},"Pacing",-1)),i("select",{value:k.paceMode,onChange:L=>T.setCategoryPaceMode(k.id,L.target.value)},[...m[28]||(m[28]=[i("option",{value:"days_only"},"Days only",-1),i("option",{value:"time_aware"},"Time aware",-1)])],40,Rm)]),i("div",jm,[m[30]||(m[30]=i("span",{class:"label"},"Suggestion",-1)),T.suggestedCategoryTargets[k.id]?(h(),w("button",{key:0,type:"button",class:"goal-suggestion-pill goal-suggestion-pill--action",onClick:L=>T.onApplyCategorySuggestion(k.id)}," Suggested "+E(T.suggestedCategoryTargets[k.id].toFixed(1))+" h ",9,Vm)):(h(),w("span",Um,"No recent suggestion"))]),i("div",Gm,[i("label",{class:we(["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:L=>x(k.id,L.target)},[i("option",Jm,E(u.value(k.id).length?"Add calendar":"No calendars left"),1),(h(!0),w(ke,null,Ie(u.value(k.id),L=>(h(),w("option",{key:`${k.id}-${L.id}`,value:L.id},E(L.displayname),9,Zm))),128))],40,Km)],10,qm),i("button",{class:"goal-row-icon-btn",type:"button",disabled:T.categories.length<=1,"aria-label":"Remove category",title:"Remove category",onClick:L=>T.removeCategory(k.id)}," × ",8,Ym),i("div",Xm,[i("button",{type:"button",class:"reorder-icon-btn",title:"Move category up","aria-label":"Move category up",onClick:Ke(L=>T.moveCategory(k.id,"up"),["stop"])},"↑",8,Qm),i("button",{type:"button",class:"reorder-icon-btn",title:"Move category down","aria-label":"Move category down",onClick:Ke(L=>T.moveCategory(k.id,"down"),["stop"])},"↓",8,ey)])])])],64)):(h(),w(ke,{key:1},[i("button",{type:"button",class:"goal-category-summary",onClick:L=>r.value=k.id},[i("span",ay,[i("span",oy,E(r.value===k.id?"⌄":"›"),1),i("span",{class:"color-dot",style:He({backgroundColor:T.resolvedColor(k)})},null,4),i("strong",ry,E(k.label||"Untitled category"),1)]),i("span",ny,E(Number(k.targetHours||0).toFixed(1))+" h / week",1),i("span",{class:we(["suggest-pill",{"suggest-pill--warn":$(k).mismatch>.01}])},E(_(k)),3)],8,ty),g.value(k.id).length?(h(),w("div",sy,[(h(!0),w(ke,null,Ie(g.value(k.id),L=>(h(),w("span",{key:`${k.id}-${L.id}-badge`,class:"goal-calendar-badge"},[i("span",{class:"goal-calendar-color",style:He({backgroundColor:L.color||"#3B82F6"})},null,4),i("span",iy,E(L.displayname),1),i("span",ly,E(O(L.id)),1)]))),128))])):te("",!0)],64))],2),r.value===k.id?(h(),w("div",dy,[i("div",cy,[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",uy,[(h(!0),w(ke,null,Ie(g.value(k.id),L=>(h(),w("span",{key:`${k.id}-${L.id}-token`,class:"select-pill"},[i("span",{class:"goal-calendar-color",style:He({backgroundColor:L.color||"#3B82F6"})},null,4),Re(" "+E(L.displayname),1)]))),128))])]),g.value(k.id).length?(h(),w("div",gy,[(h(!0),w(ke,null,Ie(g.value(k.id),L=>(h(),w("div",{key:`${k.id}-${L.id}`,class:"goal-calendar-subrow",draggable:"true",onDragstart:z=>p(L.id),onDragover:m[8]||(m[8]=Ke(()=>{},["prevent"])),onDrop:Ke(z=>S(L.id),["prevent"])},[m[36]||(m[36]=i("span",{class:"goal-calendar-corner-grip",title:"Drag to reorder calendar","aria-hidden":"true"},"⋮⋮",-1)),i("div",fy,[i("span",{class:"goal-calendar-color",style:He({backgroundColor:L.color||"#3B82F6"})},null,4),i("strong",by,E(L.displayname),1)]),i("div",vy,[i("input",{type:"number",min:"0",step:"0.25",value:T.getCalendarTarget(L.id),onInput:z=>T.setCalendarTarget(L.id,z.target.value)},null,40,hy),m[34]||(m[34]=i("span",{class:"unit"},"h",-1))]),i("div",my,[m[35]||(m[35]=i("span",{class:"label"},"Suggestion",-1)),i("button",{type:"button",class:we(["suggest-pill",{"suggest-pill--muted":!T.suggestedCalendarTargets[L.id],"suggest-pill--action":!!T.suggestedCalendarTargets[L.id]}]),disabled:!T.suggestedCalendarTargets[L.id],onClick:z=>T.onApplyCalendarSuggestion(L.id)},E(I(L.id)),11,yy)]),i("div",wy,[i("div",ky,[i("button",{type:"button",class:"reorder-icon-btn",title:"Move calendar up","aria-label":"Move calendar up",onClick:Ke(z=>T.moveSelectedCalendar(L.id,"up"),["stop"])},"↑",8,xy),i("button",{type:"button",class:"reorder-icon-btn",title:"Move calendar down","aria-label":"Move calendar down",onClick:Ke(z=>T.moveSelectedCalendar(L.id,"down"),["stop"])},"↓",8,_y)]),i("button",{class:"goal-row-icon-btn",type:"button","aria-label":`Unassign ${L.displayname}`,title:`Unassign ${L.displayname}`,onClick:z=>T.assignCalendar(L.id,"")}," × ",8,Cy)])],40,py))),128))])):(h(),w("p",Sy,"No calendars assigned yet."))])):te("",!0)],42,Am))),128))]),T.unassignedSelectedCalendars.length?(h(),w("p",$y," Unassigned: "+E(T.unassignedSelectedCalendars.map(k=>k.displayname).join(", ")),1)):te("",!0)])]))]))}}),Ty={class:"review-layout"},My={class:"review-main"},Ay={class:"review-section"},Ly={class:"review-row-list"},Dy={class:"review-row"},Ey={class:"review-row"},Ny={class:"review-row"},Iy={class:"review-row"},Oy={class:"review-row"},By={class:"review-row"},Hy={class:"review-side"},Fy={class:"review-section"},Py={class:"review-checklist"},Wy={class:"review-status"},zy={class:"review-checklist__copy"},Ry=["onClick"],jy={key:0,class:"review-section review-profile"},Vy={class:"toggle-row"},Uy=["checked"],Gy={key:0,class:"field"},qy=["value"],Ky=Pe({__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=C(()=>t.categoriesEnabled&&t.draftTargetsCategories.length?t.categoryTotalHours:Number.isFinite(t.totalHoursInput??NaN)?Number(t.totalHoursInput):Number.isFinite(t.draftTotalHours)?Number(t.draftTotalHours):0),o=C(()=>t.dashboardMode==="quick"?"Empty layout":t.dashboardMode==="pro"?"Advanced layout":"Standard layout"),r=C(()=>t.themePreference==="light"?"Light theme":t.themePreference==="dark"?"Dark theme":"Follow Nextcloud theme"),n=C(()=>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=C(()=>{if(!t.selectedCalendars.length)return"No calendars selected yet.";const v=t.selectedCalendars.slice(0,3).map(f=>f.displayname),c=t.selectedCalendars.length-v.length;return c>0?`${v.join(", ")} +${c} more`:v.join(", ")}),l=C(()=>{if(t.categoriesEnabled&&t.draftTargetsCategories.length){const v=t.draftTargetsCategories.slice(0,3).map(f=>`${f.label} ${f.targetHours}h`),c=t.draftTargetsCategories.length-v.length;return`${v.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=C(()=>{if(!t.deckEnabled)return"Deck hidden in this setup.";if(!t.deckVisibleBoards.length)return t.deckReviewSummary;const v=t.deckVisibleBoards.slice(0,2).map(f=>f.title),c=t.deckVisibleBoards.length-v.length;return c>0?`${v.join(", ")} +${c} more`:v.join(", ")}),g=C(()=>`${r.value} · ${t.reportingEnabled?t.reportingSummary:"Recap disabled"}`),u=C(()=>`${o.value} with the selected widget and tab preset.`),b=C(()=>{const v=[];return v.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}),v.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}),v.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}),v.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}),v});return(v,c)=>(h(),w("div",Ty,[i("div",My,[i("section",Ay,[c[14]||(c[14]=i("h4",null,"Configuration summary",-1)),i("div",Ly,[i("article",Dy,[i("div",null,[c[8]||(c[8]=i("strong",null,"Strategy",-1)),i("p",null,E(n.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[0]||(c[0]=f=>v.goToStep("strategy"))},"Edit")]),i("article",Ey,[i("div",null,[c[9]||(c[9]=i("strong",null,"Calendars",-1)),i("p",null,E(s.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[1]||(c[1]=f=>v.goToStep("calendars"))},"Edit")]),i("article",Ny,[i("div",null,[c[10]||(c[10]=i("strong",null,"Deck",-1)),i("p",null,E(d.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[2]||(c[2]=f=>v.goToStep("deck"))},"Edit")]),i("article",Iy,[i("div",null,[c[11]||(c[11]=i("strong",null,"Goals",-1)),i("p",null,E(l.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[3]||(c[3]=f=>v.goToStep("goals"))},"Edit")]),i("article",Oy,[i("div",null,[c[12]||(c[12]=i("strong",null,"Preferences",-1)),i("p",null,E(g.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[4]||(c[4]=f=>v.goToStep("preferences"))},"Edit")]),i("article",By,[i("div",null,[c[13]||(c[13]=i("strong",null,"Dashboard",-1)),i("p",null,E(u.value),1)]),i("button",{type:"button",class:"review-edit-link",onClick:c[5]||(c[5]=f=>v.goToStep("dashboard"))},"Edit")])])])]),i("aside",Hy,[i("section",Fy,[c[15]||(c[15]=i("h4",null,"Readiness",-1)),i("ul",Py,[(h(!0),w(ke,null,Ie(b.value,f=>(h(),w("li",{key:f.id,class:we(f.ok?"is-ok":"is-warn")},[i("span",Wy,E(f.ok?"Ready":"Action needed"),1),i("div",zy,[i("strong",null,E(f.title),1),i("p",null,E(f.detail),1)]),!f.ok&&f.canFix?(h(),w("button",{key:0,type:"button",class:"review-inline-btn",onClick:p=>v.goToStep(f.step)}," Fix ",8,Ry)):te("",!0)],2))),128))])]),v.showSaveProfile?(h(),w("section",jy,[c[18]||(c[18]=i("h4",null,"Save profile",-1)),i("label",Vy,[i("input",{type:"checkbox",checked:v.saveProfile,onChange:c[6]||(c[6]=f=>v.setSaveProfile(f.target.checked))},null,40,Uy),c[16]||(c[16]=i("span",null,"Save as new profile",-1))]),v.saveProfile?(h(),w("div",Gy,[c[17]||(c[17]=i("span",{class:"label"},"Profile name",-1)),i("input",{type:"text",value:v.profileName,placeholder:"e.g. Team workload",onInput:c[7]||(c[7]=f=>v.setProfileName(f.target.value))},null,40,qy)])):te("",!0),c[19]||(c[19]=i("p",{class:"hint"},"Profiles store widgets/tabs, targets, theme, Deck, and reporting settings.",-1))])):te("",!0)])]))}});function Jy(){const e=ne(!1),t=ne(!1),a=ne(0),o=ne(null),r=C(()=>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 bc=24*60*60*1e3;function Ta(e,t,a){const o=Number(e);return Number.isFinite(o)?Math.min(a,Math.max(t,Math.round(o*100)/100)):t}function Zy(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 Jt(e){return Number.isFinite(e)?Number(e.toFixed(2)):0}function oi(e){return Number.isFinite(e)?Math.max(0,Math.min(999,Number(e.toFixed(2)))):0}function ri(e){if(!Number.isFinite(e))return"0";const t=Jt(Math.max(0,e));return Math.abs(t-Math.round(t))<.05?Math.round(t).toString():t.toFixed(1)}function Ha(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 Fa(e){return Ha(Number(e)*4)}function vc(){return{showWeekendShare:!0,showEveningShare:!0,showEarliestLatest:!0,showOverlaps:!0,showLongestSession:!0,showLastDayOff:!0,showDayOffTrend:!0,showHint:!0,forecastMode:"total"}}function Ko(){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 ya(){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:vc(),balance:Ko(),includeZeroDaysInStats:!1}}function Pa(e){return JSON.parse(JSON.stringify(Zt(e)))}function Zt(e){var s,l,d,g,u,b,v,c,f,p,S,x,$,_,O,I,B,y,T,m,k,L,z,M,Z;if(typeof e=="string")try{const j=JSON.parse(e);return Zt(j)}catch{return Zt(void 0)}const t=ya(),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(j=>{const q=(j!=null&&j.id&&typeof j.id=="string"?j.id:"")||t1(String((j==null?void 0:j.label)??"cat")),Y=typeof(j==null?void 0:j.label)=="string"&&j.label.trim()!==""?j.label.trim():e1(q),U=Ta(j==null?void 0:j.targetHours,0,1e4),le=!!(j!=null&&j.includeWeekend),J=(j==null?void 0:j.paceMode)==="time_aware"?"time_aware":"days_only",R=Qy(j==null?void 0:j.color),D=Array.isArray(j==null?void 0:j.groupIds)?j.groupIds.map(F=>Number(F)).filter(F=>Number.isFinite(F)&&F>=0&&F<=9):[];return{id:q,label:Y,targetHours:U,includeWeekend:le,paceMode:J,color:R,groupIds:D}}),r=o.length?o:t.categories;return{totalHours:Ta(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:Ta(((g=(d=a.pace)==null?void 0:d.thresholds)==null?void 0:g.onTrack)??t.pace.thresholds.onTrack,-100,100),atRisk:Ta(((b=(u=a.pace)==null?void 0:u.thresholds)==null?void 0:b.atRisk)??t.pace.thresholds.atRisk,-100,100)}},forecast:{methodPrimary:((v=a.forecast)==null?void 0:v.methodPrimary)==="momentum"?"momentum":"linear",momentumLastNDays:(()=>{var q;const j=Math.round(((q=a.forecast)==null?void 0:q.momentumLastNDays)??t.forecast.momentumLastNDays);return Math.min(14,Math.max(1,Number.isFinite(j)?j:t.forecast.momentumLastNDays))})(),padding:Ta(((c=a.forecast)==null?void 0:c.padding)??t.forecast.padding,0,100)},ui:{showTotalDelta:!!(((f=a.ui)==null?void 0:f.showTotalDelta)??t.ui.showTotalDelta),showNeedPerDay:!!(((p=a.ui)==null?void 0:p.showNeedPerDay)??t.ui.showNeedPerDay),showCategoryBlocks:!!(((S=a.ui)==null?void 0:S.showCategoryBlocks)??t.ui.showCategoryBlocks),badges:!!(((x=a.ui)==null?void 0:x.badges)??t.ui.badges),includeWeekendToggle:!!((($=a.ui)==null?void 0:$.includeWeekendToggle)??t.ui.includeWeekendToggle),showCalendarCharts:((_=a.ui)==null?void 0:_.showCalendarCharts)===void 0?t.ui.showCalendarCharts:!!a.ui.showCalendarCharts,showCategoryCharts:((O=a.ui)==null?void 0:O.showCategoryCharts)===void 0?t.ui.showCategoryCharts:!!a.ui.showCategoryCharts},allDayHours:Ta(a.allDayHours??t.allDayHours,0,24),timeSummary:{showTotal:((I=a.timeSummary)==null?void 0:I.showTotal)===void 0?t.timeSummary.showTotal:!!a.timeSummary.showTotal,showAverage:((B=a.timeSummary)==null?void 0:B.showAverage)===void 0?t.timeSummary.showAverage:!!a.timeSummary.showAverage,showMedian:((y=a.timeSummary)==null?void 0:y.showMedian)===void 0?t.timeSummary.showMedian:!!a.timeSummary.showMedian,showBusiest:((T=a.timeSummary)==null?void 0:T.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:((L=a.timeSummary)==null?void 0:L.showWeekendShare)===void 0?t.timeSummary.showWeekendShare:!!a.timeSummary.showWeekendShare,showCalendarSummary:((z=a.timeSummary)==null?void 0:z.showCalendarSummary)===void 0?t.timeSummary.showCalendarSummary:!!a.timeSummary.showCalendarSummary,showTopCategory:((M=a.timeSummary)==null?void 0:M.showTopCategory)===void 0?t.timeSummary.showTopCategory:!!a.timeSummary.showTopCategory,showBalance:((Z=a.timeSummary)==null?void 0:Z.showBalance)===void 0?t.timeSummary.showBalance:!!a.timeSummary.showBalance},activityCard:Yy(a.activityCard,t.activityCard),balance:Xy(a.balance,r,t.balance),includeZeroDaysInStats:!!(a.includeZeroDaysInStats??t.includeZeroDaysInStats)}}function Yy(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 Xy(e,t,a){var u,b,v;const o=t.map(c=>c.id),r=new Set([...o,"__uncategorized__"]),n=Array.isArray(e==null?void 0:e.categories)?e.categories:a.categories,s=[];for(const c of n){const f=typeof c=="string"?c.trim():String(c??"").trim();f&&(r.size&&!r.has(f)||s.includes(f)||s.push(f))}s.length||(o.length?s.push(...o.slice(0,a.categories.length)):s.push(...a.categories));const l=(e==null?void 0:e.thresholds)??{},d=(e==null?void 0:e.ui)??{},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:Ta(l.noticeAbove??a.thresholds.noticeAbove,0,1),noticeBelow:Ta(l.noticeBelow??a.thresholds.noticeBelow,0,1),warnAbove:Ta(l.warnAbove??a.thresholds.warnAbove,0,1),warnBelow:Ta(l.warnBelow??a.thresholds.warnBelow,0,1),warnIndex:Ta(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:Zy(((b=e==null?void 0:e.trend)==null?void 0:b.lookbackWeeks)??a.trend.lookbackWeeks,1,6)},dayparts:{enabled:!!(((v=e==null?void 0:e.dayparts)==null?void 0:v.enabled)??a.dayparts.enabled)},ui:{showNotes:!!(d.showNotes??a.ui.showNotes)}}}function Qy(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 e1(e){return e?e.charAt(0).toUpperCase()+e.slice(1):""}function t1(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 a1(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=o1(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),b=Math.max(0,g+e.config.forecast.padding),v=d==="momentum"?"Momentum":"Linear";return{linear:Jt(a),momentum:Jt(n),low:Jt(Math.max(0,s)),high:Jt(Math.max(0,l)),text:`${v} ±${ri(e.config.forecast.padding)}h ≈ ${ri(u)}–${ri(b)} h`,primaryMethod:d,primary:Jt(g),bandLow:Jt(u),bandHigh:Jt(b)}}function o1(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 r1(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 Jo=r1;function hc(e){const t=e?Zt(e):ya(),a=(t==null?void 0:t.totalHours)??0,o=(t==null?void 0:t.categories)??[],r={id:"total",label:Jo("Total"),actualHours:0,plannedHours:0,targetHours:a,percent:0,deltaHours:0,remainingHours:a,needPerDay:0,daysLeft:0,calendarPercent:0,gap:0,status:"none",statusLabel:"—",includeWeekend:!0,paceMode:"days_only"};return{total:r,categories:o.map(n=>({...r,id:n.id,label:n.label,targetHours:n.targetHours,remainingHours:n.targetHours})),forecast:{linear:0,momentum:0,low:0,high:0,text:"~0–0 h",primaryMethod:(t==null?void 0:t.forecast.methodPrimary)??"linear",primary:0,bandLow:0,bandHigh:0}}}function mc(e){const t=e.config,a=xc(e.from),o=xc(e.to),r=l1(e.byDay),n=(e.byCal||[]).reduce((v,c)=>{const f=Number((c==null?void 0:c.total_hours)??(c==null?void 0:c.hours)??0);return Number.isFinite(f)?v+f:v},0),s=(e.byCal||[]).reduce((v,c)=>{const f=Number((c==null?void 0:c.future_hours)??(c==null?void 0:c.planned_hours)??0);return Number.isFinite(f)?v+f:v},0),l=t.totalHours||0,d=yc({includeWeekend:t.pace.includeWeekendTotal,mode:t.pace.mode,includeZeroDays:t.includeZeroDaysInStats,start:a,end:o,dailyHours:r}),g=wc({id:"total",label:Jo("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(v=>{const c=i1(v,e.byCal,e.groupsById),f=kc(v,e.byCal,e.groupsById,"future_hours"),p=v.paceMode||t.pace.mode,S=yc({includeWeekend:v.includeWeekend,mode:p,includeZeroDays:t.includeZeroDaysInStats,start:a,end:o,dailyHours:r});return wc({id:v.id,label:v.label,actual:c,planned:f,target:v.targetHours,pace:S,thresholds:t.pace.thresholds,includeWeekend:v.includeWeekend,paceMode:p})}),b=a1({config:t,totalProgress:g,dailyHours:r,pace:d});return{total:g,categories:u,forecast:b}}function yc(e){const{start:t,end:a}=e;if(!t||!a)return{totalEligible:0,elapsedEligible:0,daysLeft:0,calendarPercent:0};const o=Ln(new Date),r=go(t),n=go(a),s=ob(t,a).filter(b=>e.includeWeekend||!rb(b)),l=s.length;if(l===0)return{totalEligible:0,elapsedEligible:0,daysLeft:0,calendarPercent:0};if(go(o)>n)return{totalEligible:l,elapsedEligible:l,daysLeft:0,calendarPercent:100};if(go(o)<r)return{totalEligible:l,elapsedEligible:0,daysLeft:l,calendarPercent:0};let d=0;for(const b of s){const v=go(b),c=e.dailyHours.get(v)??0;if(!(!e.includeZeroDays&&c<=0&&v!==go(o))){if(v<go(o))d+=1;else if(v===go(o))if(e.mode==="time_aware"){const p=Math.min(new Date().getTime(),b.getTime()+bc)-b.getTime(),S=Math.max(0,Math.min(1,p/bc));(e.includeZeroDays||c>0||S>0)&&(d+=S)}else(e.includeZeroDays||c>0)&&(d+=1)}}const g=oi(d/l*100),u=Math.max(0,l-d);return{totalEligible:l,elapsedEligible:d,daysLeft:u,calendarPercent:g}}function wc(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?oi(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=n1({percent:r,target:t,gap:d,thresholds:e.thresholds});return{id:e.id,label:e.label,actualHours:Jt(a),plannedHours:Jt(o),targetHours:Jt(t),percent:r,deltaHours:Jt(s),remainingHours:Jt(Math.max(0,n)),needPerDay:Jt(l),daysLeft:Math.max(0,Math.ceil(e.pace.daysLeft)),calendarPercent:oi(e.pace.calendarPercent),gap:Jt(d),status:g,statusLabel:s1(g),includeWeekend:e.includeWeekend,paceMode:e.paceMode}}function n1(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 s1(e){switch(e){case"on_track":return Jo("On Track");case"at_risk":return Jo("At Risk");case"behind":return Jo("Behind");case"done":return Jo("Done");default:return"—"}}function i1(e,t,a){return kc(e,t,a,"total_hours")}function kc(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 l1(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 xc(e){if(!e)return null;const t=jt(e);return t?Ln(t):null}function go(e){return ra(e,"UTC")}const po=1,d1=[{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"}],_c=["#2563EB","#F97316","#10B981","#A855F7","#EC4899","#14B8A6","#F59E0B","#6366F1"];function c1(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 u1(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 g1(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 Cc(){return d1}function Sc(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 S;const r=[...new Set(a.filter(x=>t.some($=>$.id===x)))],n=Zt(ya()),s={},l={};if(e==="total_only"){const x=Pa(n);return x.totalHours=x.totalHours||40,x.categories=[],x.ui.showCategoryBlocks=!1,x.ui.showCategoryCharts=!1,x.ui.showCalendarCharts=!1,{selected:r,targetsConfig:Zt(x),groups:s,targetsWeek:l,targetsMonth:{}}}if(e==="total_plus_categories"){const x=Pa(n);return x.totalHours=x.totalHours||40,x.categories=[],x.ui.showCategoryBlocks=!1,x.ui.showCategoryCharts=!1,x.ui.showCalendarCharts=!0,x.balance.categories=[],x.balance.useCategoryMapping=!1,x.balance.index.basis="calendar",{selected:r,targetsConfig:Zt(x),groups:s,targetsWeek:l,targetsMonth:{}}}const d=Sc(e,t,r),g=u1((S=o==null?void 0:o.categories)!=null&&S.length?o.categories:d.categories),u=g1(r,g.length?g:d.categories,(o==null?void 0:o.assignments)??d.assignments),b=Pa(n),v=new Map;let c=0;const f=x=>{const $=Nn(x.color);if($)return $;const _=t.find(I=>u[I.id]===x.id&&Nn(I.color));if(_)return Nn(_.color)??null;const O=_c[c%_c.length];return c+=1,O??null};b.categories=g.map((x,$)=>{const _=$+1;return v.set(x.id,_),{id:x.id,label:x.label,targetHours:Number(x.targetHours.toFixed(2)),includeWeekend:x.includeWeekend,paceMode:x.paceMode,color:f(x),groupIds:[_]}}),b.totalHours=b.categories.reduce((x,$)=>x+$.targetHours,0),b.totalHours<=0&&(b.totalHours=40),b.ui.showCategoryBlocks=b.categories.length>0,b.ui.showCategoryCharts=b.categories.length>0,b.ui.showCalendarCharts=e==="full_granular",b.includeZeroDaysInStats=!1,b.balance.categories=b.categories.map(x=>x.id),b.balance.useCategoryMapping=!0;const p={};return Object.values(u).forEach(x=>{p[x]=(p[x]??0)+1}),Object.entries(u).forEach(([x,$])=>{const _=v.get($);if(_&&(s[x]=_,e==="full_granular")){const O=b.categories.find(y=>y.id===$);if(!O)return;const I=p[$]||1,B=Number((O.targetHours/I).toFixed(2));l[x]=B}}),{selected:r,targetsConfig:Zt(b),groups:s,targetsWeek:l,targetsMonth:c1(l)}}function $o(){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 $c(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 ni(e,t){const a=t??$o();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:$c(e.modes.week,a.modes.week),month:$c(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 To(){return{enabled:!0,filtersEnabled:!0,defaultFilter:"all",hiddenBoards:[],mineMode:"assignee",solvedIncludesArchived:!0,ticker:{autoScroll:!0,intervalSeconds:5,showBoardBadges:!0}}}function si(e,t){var b,v,c;const a=t??To();if(!e||typeof e!="object")return{...a};const o=(f,p)=>{if(typeof f=="boolean")return f;if(typeof f=="number")return f===1?!0:f===0?!1:p;if(typeof f=="string"){const S=f.trim().toLowerCase();if(["1","true","yes","on"].includes(S))return!0;if(["0","false","no","off","null",""].includes(S))return!1}return p},r=f=>{const p=Number(f);return!Number.isInteger(p)||p<=0||p>1e5?null:p},s=["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.defaultFilter)?e.defaultFilter:"all",l=e.mineMode==="creator"||e.mineMode==="both"?e.mineMode:"assignee",d=o(e.solvedIncludesArchived,a.solvedIncludesArchived),g={autoScroll:o((b=e.ticker)==null?void 0:b.autoScroll,a.ticker.autoScroll),intervalSeconds:p1((v=e.ticker)==null?void 0:v.intervalSeconds,a.ticker.intervalSeconds),showBoardBadges:o((c=e.ticker)==null?void 0:c.showBoardBadges,a.ticker.showBoardBadges)},u=Array.isArray(e.hiddenBoards)?Array.from(new Set(e.hiddenBoards.map(f=>r(f)).filter(f=>Number.isInteger(f)&&f>0))):a.hiddenBoards.slice();return{enabled:o(e.enabled,a.enabled),filtersEnabled:o(e.filtersEnabled,a.filtersEnabled),defaultFilter:s,hiddenBoards:u,mineMode:l,solvedIncludesArchived:d,ticker:g}}function p1(e,t){const a=Number(e);return Number.isFinite(a)?Math.min(10,Math.max(3,Math.trunc(a))):t}const g$="modulepreload",p$=function(e){return"/"+e},f$={},Yt=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 Tc(e,t){const a=JSON.parse(JSON.stringify(e||{}));return t==="month"&&(a.totalHours=Fa(a.totalHours??0),a.categories=(a.categories||[]).map(o=>({...o,targetHours:Fa(o.targetHours??0)}))),a}function Mc(e){return{...e,ui:{...(e==null?void 0:e.ui)??{}}}}function f1(e,t){try{return mc({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),hc(e)}}function b1(e){var S,x,$,_,O,I,B,y,T,m;const t=Array.isArray((S=e.config)==null?void 0:S.categories)?e.config.categories:[],a=new Map;(((x=e.summary)==null?void 0:x.categories)||[]).forEach(k=>{a.set(String(k.id),k)});const o=new Map,r={};t.forEach(k=>{const L=String((k==null?void 0:k.id)??"");L&&(r[L]=String((k==null?void 0:k.label)||L),(Array.isArray(k==null?void 0:k.groupIds)?k.groupIds:[]).forEach(z=>{const M=Lc(z);o.set(M,L)}))});const n=new Map,s=new Map;(Array.isArray(e.calendars)?e.calendars:[]).forEach(k=>{var M;const L=String((k==null?void 0:k.id)??"");if(!L)return;const z=((M=e.colorsById)==null?void 0:M[L])||String((k==null?void 0:k.color)||"");s.set(L,{name:String((k==null?void 0:k.displayname)||(k==null?void 0:k.name)||L),color:z||void 0})});const l={};Object.keys(e.groupsById||{}).forEach(k=>{var z;const L=Lc((z=e.groupsById)==null?void 0:z[k]);l[k]=o.get(L)||"__uncategorized__"});const d=new Map;(Array.isArray(e.byCal)?e.byCal:[]).forEach(k=>{const L=String((k==null?void 0:k.id)??(k==null?void 0:k.calendar_id)??(k==null?void 0:k.calendar)??"");if(!L)return;const z=l[L]||"__uncategorized__";d.has(z)||d.set(z,[]),d.get(z).push({...k,calendarId:L})});const g=k=>{var Z;if(n.has(k))return n.get(k);const L=t.find(j=>String((j==null?void 0:j.id)??"")===k),z=typeof(L==null?void 0:L.color)=="string"&&L.color?L.color:"";if(z)return n.set(k,z),z;const M=d.get(k)||[];for(const j of M){const q=(Z=s.get(String(j.calendarId)))==null?void 0:Z.color;if(q)return n.set(k,q),q}},u=e.currentTargets||{},b=Number(((_=($=e.summary)==null?void 0:$.total)==null?void 0:_.daysLeft)??0),v=Number(((I=(O=e.summary)==null?void 0:O.total)==null?void 0:I.calendarPercent)??0),c=((y=(B=e.summary)==null?void 0:B.total)==null?void 0:y.paceMode)??((m=(T=e.config)==null?void 0:T.pace)==null?void 0:m.mode)??"days_only",f=(k,L,z)=>{const M=z.reduce((D,F)=>{const ce=Number(u[String(F.calendarId)]??0);return Number.isFinite(ce)?D+Math.max(0,ce):D},0),Z=z.reduce((D,F)=>{const ce=Number((F==null?void 0:F.total_hours)??(F==null?void 0:F.hours)??0);return Number.isFinite(ce)?D+Math.max(0,ce):D},0),j=z.reduce((D,F)=>{const ce=Number((F==null?void 0:F.future_hours)??(F==null?void 0:F.planned_hours)??0);return Number.isFinite(ce)?D+Math.max(0,ce):D},0),q=M>0?Dc(Z/M*100):0,Y=Z-M,U=Math.max(0,M-Z),le=M<=0?"none":q>=100?"done":Y>=0?"on_track":"behind",J=le==="done"?"Done":le==="on_track"?"On Track":le==="behind"?"Behind":"—",R=b>0?U/b:0;return{id:k,label:L,actualHours:Dt(Z),plannedHours:Dt(j),targetHours:Dt(M),percent:Dt(q),deltaHours:Dt(Y),remainingHours:Dt(U),needPerDay:Dt(R),daysLeft:b,calendarPercent:Dt(Math.max(0,Math.min(100,v))),gap:Dt(q-v),status:le,statusLabel:J,includeWeekend:!0,paceMode:c}},p=[];if(t.forEach(k=>{const L=String((k==null?void 0:k.id)??"");if(!L)return;const z=d.get(L)||[];p.push({id:L,label:r[L]||L,rows:z,summary:a.get(L)||f(L,r[L]||L,z),color:g(L)})}),d.has("__uncategorized__")){const k=d.get("__uncategorized__")||[];p.push({id:"__uncategorized__",label:"Unassigned",rows:k,summary:f("__uncategorized__","Unassigned",k),color:g("__uncategorized__"),isUnassigned:!0})}return p}function v1(e){var c,f,p,S,x,$,_,O,I,B,y,T;const t=e.currentTargets||{},a=Array.isArray(e.byCal)?e.byCal:[],o=e.todayHoursByCalendar||{},r=((f=(c=e.config)==null?void 0:c.pace)==null?void 0:f.thresholds)??{onTrack:-2,atRisk:-10},n=!!(((S=(p=e.config)==null?void 0:p.pace)==null?void 0:S.includeWeekendTotal)??!0),s=(($=(x=e.summary)==null?void 0:x.total)==null?void 0:$.paceMode)??((O=(_=e.config)==null?void 0:_.pace)==null?void 0:O.mode)??"days_only",l=Number(((B=(I=e.summary)==null?void 0:I.total)==null?void 0:B.daysLeft)??0),d=Number(((T=(y=e.summary)==null?void 0:y.total)==null?void 0:T.calendarPercent)??0),g=new Map;(Array.isArray(e.calendars)?e.calendars:[]).forEach(m=>{var z;const k=String((m==null?void 0:m.id)??"");if(!k)return;const L=((z=e.colorsById)==null?void 0:z[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:L||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 b=[],v=m=>{!m||b.includes(m)||b.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))&&v(k)}),Object.keys(t).forEach(v),Array.from(u.keys()).forEach(v),b.map(m=>{var Ae,se,oe;const k=u.get(m)||{id:m,calendarId:m,total_hours:0,future_hours:0},L=((Ae=g.get(m))==null?void 0:Ae.label)||String((k==null?void 0:k.calendar)??(k==null?void 0:k.name)??m),z=((se=g.get(m))==null?void 0:se.color)||((oe=e.colorsById)==null?void 0:oe[m]),M=Number(t[m]??0),Z=Number((k==null?void 0:k.total_hours)??(k==null?void 0:k.hours)??0),j=Number((k==null?void 0:k.future_hours)??(k==null?void 0:k.planned_hours)??0),q=Number.isFinite(M)?Math.max(0,M):0,Y=Number.isFinite(Z)?Math.max(0,Z):0,U=Number.isFinite(j)?Math.max(0,j):0,le=q>0?Dt(Dc(Y/q*100)):0,J=Dt(Y-q),R=Dt(Math.max(0,q-Y)),D=Dt(le-d),F=q<=0?"none":le>=100?"done":D>=Number(r.onTrack??-2)?"on_track":D>=Number(r.atRisk??-10)?"at_risk":"behind",ce=F==="done"?"Done":F==="on_track"?"On Track":F==="at_risk"?"At Risk":F==="behind"?"Behind":"—";return{id:m,label:L,rows:[k],color:z,todayHours:Number(o[m]??0),summary:{id:m,label:L,actualHours:Dt(Y),plannedHours:Dt(U),targetHours:Dt(q),percent:le,deltaHours:J,remainingHours:R,needPerDay:l>0?Dt(R/l):0,daysLeft:l,calendarPercent:Dt(Math.max(0,Math.min(100,d))),gap:D,status:F,statusLabel:ce,includeWeekend:n,paceMode:s}}})}function Xt(e,t){if(!t)return e;const a=String(t).trim();return a?`${a} · ${e}`:e}function Er(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 Nr(e){return Array.isArray(e)?Array.from(new Set(e.map(t=>Number(t)).filter(t=>Number.isInteger(t)&&t>0))):typeof e=="string"?Nr(e.split(",")):[]}function Ac(e){return Array.isArray(e)?e.map(t=>String(t).trim()).filter(Boolean):typeof e=="string"?e.split(",").map(t=>t.trim()).filter(Boolean):["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 Vt(e){switch(e){case"all":return"All cards";case"mine":return"Mine (any status)";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 Lc(e){const t=Number(e);return Number.isFinite(t)?Math.max(0,Math.min(9,Math.trunc(t))):0}function Dt(e){return Math.round(e*100)/100}function Dc(e){return Number.isFinite(e)?Math.max(0,Math.min(999,e)):0}const h1=qt(()=>Yt(()=>Promise.resolve().then(()=>HC),void 0).then(e=>e.default)),Ec="Balance Index",m1={component:h1,defaultLayout:{width:"half",height:"s",order:32},label:"Balance Index",category:"Time",baseTitle:Ec,configurable:!0,supportsColors:!0,defaultOptions:(()=>{const e=Ko();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,x,$,_,O,I,B,y,T,m,k,L,z,M,Z,j,q,Y,U,le,J,R,D,F,ce,Ae,se,oe,G,ee;const a=t.balanceConfig?JSON.parse(JSON.stringify(t.balanceConfig)):Ko(),o=Ko(),r=((p=e.options)==null?void 0:p.showBadge)!==!1,n=((S=e.options)==null?void 0:S.showTrend)!==!1,s=((x=e.options)==null?void 0:x.showMessages)??(($=a.ui)==null?void 0:$.showMessages)??!0,l=((_=e.options)==null?void 0:_.messageDensity)||"normal",d=l==="few"?1:l==="many"?1/0:3,g=Number.isFinite(t.lookbackWeeks)?Number(t.lookbackWeeks):((O=o.trend)==null?void 0:O.lookbackWeeks)??3,u={noticeAbove:Er((I=a==null?void 0:a.thresholds)==null?void 0:I.noticeAbove,(B=e.options)==null?void 0:B.noticeAbove),noticeBelow:Er((y=a==null?void 0:a.thresholds)==null?void 0:y.noticeBelow,(T=e.options)==null?void 0:T.noticeBelow),warnAbove:Er((m=a==null?void 0:a.thresholds)==null?void 0:m.warnAbove,(k=e.options)==null?void 0:k.warnAbove),warnBelow:Er((L=a==null?void 0:a.thresholds)==null?void 0:L.warnBelow,(z=e.options)==null?void 0:z.warnBelow),warnIndex:Er((M=a==null?void 0:a.thresholds)==null?void 0:M.warnIndex,(Z=e.options)==null?void 0:Z.warnIndex)},b=((j=e.options)==null?void 0:j.indexBasis)||((q=a==null?void 0:a.index)==null?void 0:q.basis)||"category",v=(a==null?void 0:a.useCategoryMapping)===!1&&b==="category"?"calendar":b,c=typeof((Y=e.options)==null?void 0:Y.trendColor)=="string"&&((U=e.options)!=null&&U.trendColor.trim())?e.options.trendColor.trim():"#2563EB",f=Math.max(1,Math.min(6,Number.isFinite(g)?Number(g):((le=o.trend)==null?void 0:le.lookbackWeeks)??4));return{overview:t.balanceOverview,targetsCategories:((J=t.targetsConfig)==null?void 0:J.categories)||[],rangeLabel:t.rangeLabel,showBadge:r,showTrend:n,showMessages:s,showHeader:((R=e.options)==null?void 0:R.showHeader)!==!1,showConfig:((D=e.options)==null?void 0:D.showConfig)!==!1,messageLimit:d,lookbackWeeks:f,loopbackCount:f,showCurrent:((F=e.options)==null?void 0:F.showCurrent)!==!1,labelMode:((ce=e.options)==null?void 0:ce.labelMode)||"period",reverseOrder:((Ae=e.options)==null?void 0:Ae.reverseOrder)===!0,indexBasis:v,thresholds:u,title:Xt(Ec,(se=e.options)==null?void 0:se.titlePrefix),cardBg:((G=(oe=e.options)==null?void 0:oe.colors)==null?void 0:G.background)??((ee=e.options)==null?void 0:ee.cardBg),trendColor:c,from:t.from,to:t.to,rangeMode:t.rangeMode}}},y1=qt(()=>Yt(()=>Promise.resolve().then(()=>KC),void 0).then(e=>e.default)),Nc="Category Mix Trend",w1={component:y1,defaultLayout:{width:"half",height:"m",order:47},heightMode:"auto",label:"Category Mix Trend",category:"Charts",baseTitle:Nc,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,b,v,c,f,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:Xt(Nc,(u=e.options)==null?void 0:u.titlePrefix),cardBg:(b=e.options)==null?void 0:b.cardBg,toneLowColor:(v=e.options)==null?void 0:v.toneLowColor,toneHighColor:(c=e.options)==null?void 0:c.toneHighColor,shareLowColor:(f=e.options)==null?void 0:f.shareLowColor,shareHighColor:(p=e.options)==null?void 0:p.shareHighColor}}},Ic=["#9aa6b2","#8895a3","#778697","#68788a","#596b7e","#4d6074"];function ii(e){return Ic[e%Ic.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 Oc(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 Bc(e){return e==="calendar"?"calendar":"category"}function Hn(e,t){const a=Bc(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 Fn(e){return{mode:Bc(e==null?void 0:e.filterMode),ids:new Set(Oc(e==null?void 0:e.filterIds))}}function k1(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 Ir(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 Or(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),b=Array.isArray(l==null?void 0:l.data)?l.data:[];u&&r.forEach((v,c)=>{u[c]+=Math.max(0,Number(b[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 Pn(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 Hc(e){if(!e)return null;const t=Qf(),a=new Map;return t.forEach(o=>a.set(o,0)),e.labels.forEach((o,r)=>{const n=_1(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 x1(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 Br(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 S=String((p==null?void 0:p.id)??"");return{...p,id:S,name:String((p==null?void 0:p.name)??(p==null?void 0:p.label)??S),color:String((p==null?void 0:p.color)??""),data:a.map((x,$)=>{var O;const _=Number(((O=p==null?void 0:p.data)==null?void 0:O[$])??0);return Number.isFinite(_)?Math.max(0,_):0})}}),r=$1(e.forecastMode),n=ra(new Date),s=a.map(p=>C1.test(p)&&p>n),l=[];if(s.forEach((p,S)=>{p&&l.push(S)}),!l.length||r==="off")return{labels:a,series:o};const d=e.targetsConfig??ya(),g=M1(e.currentTargets),u=e.calendarCategoryMap??{},b=l.length,v=new Map;o.forEach(p=>{let S=0;p.data.forEach((x,$)=>{s[$]||(S+=Math.max(0,x))}),v.set(p.id,S)});const c=Array.from(v.values()).reduce((p,S)=>p+S,0),f=new Map;if(o.forEach(p=>{f.set(p.id,T1(a.length))}),r==="total"){const p=Math.max(0,Number(d.totalHours??0)),S=Math.max(0,p-c);if(S>1e-4){const x=S/b,$=o.map(O=>O.id),_=Fc($,v,g);$.forEach(O=>{const I=_[O]??0;if(I<=0)return;const B=f.get(O);B&&l.forEach(y=>{B[y]=Wn(x*I)})})}}else if(r==="calendar")o.forEach(p=>{const S=g[p.id]??0;if(S<=0)return;const x=Math.max(0,v.get(p.id)??0),$=Math.max(0,S-x);if($<=1e-4)return;const _=$/b,O=f.get(p.id);O&&l.forEach(I=>{O[I]=Wn(_)})});else if(r==="category"){const p=new Set,S=Array.isArray(d.categories)?d.categories:[],x=new Map;S.forEach(_=>{x.set(String(_.id),Math.max(0,Number(_.targetHours??0)))});const $=new Map;o.forEach(_=>{const O=u==null?void 0:u[_.id],I=O?String(O):S1;$.has(I)||$.set(I,[]),$.get(I).push(_.id)}),$.forEach((_,O)=>{if(!_.length)return;const I=x.get(O)??0;if(I<=0)return;const B=_.reduce((L,z)=>L+Math.max(0,v.get(z)??0),0),y=Math.max(0,I-B);if(y<=1e-4)return;const T=y/b,m={};_.forEach(L=>{m[L]=g[L]??0});const k=Fc(_,v,m);_.forEach(L=>{const z=k[L]??0;if(z<=0)return;const M=f.get(L);M&&(l.forEach(Z=>{M[Z]=Wn(T*z)}),p.add(L))})}),o.forEach(_=>{if(p.has(_.id))return;const O=g[_.id]??0;if(O<=0)return;const I=Math.max(0,v.get(_.id)??0),B=Math.max(0,O-I);if(B<=1e-4)return;const y=B/b,T=f.get(_.id);T&&l.forEach(m=>{T[m]=Wn(y)})})}return o.forEach(p=>{const S=f.get(p.id);S&&S.some(x=>x>1e-4)&&(p.forecast=S)}),{labels:a,series:o}}function _1(e){const t=jt(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 C1=/^\d{4}-\d{2}-\d{2}$/,S1="__uncategorized__";function $1(e){return e==="off"||e==="calendar"||e==="category"?e:"total"}function T1(e){return Array.from({length:e},()=>0)}function Wn(e){const t=Math.round(e*100)/100;return Number.isFinite(t)?t:0}function M1(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 Fc(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 A1=qt(()=>Yt(()=>Promise.resolve().then(()=>t3),void 0).then(e=>e.default)),Pc="Day-of-Week Chart",L1={component:A1,defaultLayout:{width:"half",height:"m",order:84},label:"Day-of-Week Chart",category:"Charts",baseTitle:Pc,configurable:!0,defaultOptions:{showLabels:!0,compact:!1,reverseOrder:!1,forecastMode:"total"},dynamicControls:(e,t)=>[...Hn(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 b,v,c,f,p,S,x,$,_;const{mode:a,ids:o}=Fn(e.options),r=t.categoryColorMap||{},s=(Number.isFinite(t.lookbackWeeks)?Math.max(1,Math.min(6,Number(t.lookbackWeeks))):1)>1&&Array.isArray((b=t.charts)==null?void 0:b.perDaySeriesByOffset)?t.charts.perDaySeriesByOffset:null,l=((v=e.options)==null?void 0:v.reverseOrder)===!0;let d=null,g=null,u=[];if(s&&s.length){const O=On(s),I=l?O:O.slice().reverse(),B=[],y=[];u=[],I.forEach((T,m)=>{var U;const k={labels:T.labels||[],series:T.series||[]},L=Br({perDaySeries:k,forecastMode:(U=e.options)==null?void 0:U.forecastMode,targetsConfig:t.targetsConfig,currentTargets:t.currentTargets,calendarCategoryMap:t.calendarCategoryMap}),z=a==="category"?Or(L,t.calendarCategoryMap||{},o,r):Ir(L,o),M=Pn(z),Z=Hc(M);if(!Z)return;B.length||B.push(...Z.labels||[]);const j=ii(m),q=Bn(T,t.rangeMode),Y=(Z.data||[]).reduce((le,J)=>le+Math.max(0,Number(J)||0),0);y.push({id:`offset-${T.offset??m}`,name:q,label:q,color:j,data:Z.data||[]}),Y>0&&u.push({id:`offset-${T.offset??m}`,label:q,color:j})}),g=B.length&&y.length?{labels:B,series:y}:null}else{const O=(c=t.charts)==null?void 0:c.perDaySeries,I=Br({perDaySeries:O,forecastMode:(f=e.options)==null?void 0:f.forecastMode,targetsConfig:t.targetsConfig,currentTargets:t.currentTargets,calendarCategoryMap:t.calendarCategoryMap}),B=a==="category"?Or(I,t.calendarCategoryMap||{},o,r):Ir(I,o),y=Pn(B);d=Hc(y)}return{title:Xt(Pc,(p=e.options)==null?void 0:p.titlePrefix),subtitle:a==="category"?"By category":"By calendar",cardBg:(S=e.options)==null?void 0:S.cardBg,showHeader:((x=e.options)==null?void 0:x.showHeader)!==!1,showLabels:(($=e.options)==null?void 0:$.showLabels)!==!1,compact:((_=e.options)==null?void 0:_.compact)===!0,xLabel:"Weekday",yLabel:"Hours (h)",chartData:d,groupedData:g,legendItems:u}}},D1=qt(()=>Yt(()=>Promise.resolve().then(()=>v3),void 0).then(e=>e.default)),Wc="Time-of-Day Chart",E1={component:D1,defaultLayout:{width:"full",height:"l",order:86},label:"Time-of-Day Chart",category:"Charts",baseTitle:Wc,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,b,v,c,f,p,S,x,$;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((_,O)=>{const I=Array.isArray(_.matrix)?_.matrix:[],B=I.reduce((T,m)=>{const k=Array.isArray(m)?m.reduce((L,z)=>L+Math.max(0,Number(z)||0),0):0;return T+k},0),y=ii(O);return{id:`offset-${_.offset??O}`,label:Bn(_,t.rangeMode),color:y,total:B,hod:{dows:_.dows||[],hours:_.hours||[],matrix:I}}}).filter(_=>_.total>0),d=a>1&&((b=t.charts)!=null&&b.hodLookback)?t.charts.hodLookback:((v=t.charts)==null?void 0:v.hod)||null;return{title:Xt(Wc,(c=e.options)==null?void 0:c.titlePrefix),cardBg:(f=e.options)==null?void 0:f.cardBg,showHeader:((p=e.options)==null?void 0:p.showHeader)!==!1,showHint:((S=e.options)==null?void 0:S.showHint)===!0,showLegend:((x=e.options)==null?void 0:x.showLegend)!==!1,lookbackMode:($=e.options)==null?void 0:$.lookbackMode,lookbackWeeks:t.lookbackWeeks,rangeMode:t.rangeMode,hodData:d,lookbackEntries:l}}},N1=qt(()=>Yt(()=>Promise.resolve().then(()=>x3),void 0).then(e=>e.default)),zc="Daily Chart",I1={component:N1,defaultLayout:{width:"half",height:"m",order:82},label:"Daily Chart",category:"Charts",baseTitle:zc,configurable:!0,defaultOptions:{showLabels:!1,compact:!1,reverseOrder:!1,forecastMode:"total"},dynamicControls:(e,t)=>[...Hn(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,b,v,c,f,p,S,x,$;const{mode:a,ids:o}=Fn(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=((b=e.options)==null?void 0:b.reverseOrder)===!0;let d=null,g=[];if(s&&s.length){const _=On(s),O=l?_:_.slice().reverse(),I=[],B=[],y=[];g=[],O.forEach((T,m)=>{var q;const k={labels:T.labels||[],series:T.series||[]},L=Br({perDaySeries:k,forecastMode:(q=e.options)==null?void 0:q.forecastMode,targetsConfig:t.targetsConfig,currentTargets:t.currentTargets,calendarCategoryMap:t.calendarCategoryMap}),z=a==="category"?Or(L,t.calendarCategoryMap||{},o,r):Ir(L,o),M=Pn(z);if(!M)return;const Z=ii(m);I.push(...M.labels),B.push(...M.data),y.push(...M.data.map(()=>Z)),M.data.reduce((Y,U)=>Y+Math.max(0,Number(U)||0),0)>0&&g.push({id:`offset-${T.offset??m}`,label:Bn(T,t.rangeMode),color:Z})}),d=I.length?{labels:I,data:B,colors:y}:null}else{const _=Br({perDaySeries:(v=t.charts)==null?void 0:v.perDaySeries,forecastMode:(c=e.options)==null?void 0:c.forecastMode,targetsConfig:t.targetsConfig,currentTargets:t.currentTargets,calendarCategoryMap:t.calendarCategoryMap}),O=a==="category"?Or(_,t.calendarCategoryMap||{},o,r):Ir(_,o);d=Pn(O)}return{title:Xt(zc,(f=e.options)==null?void 0:f.titlePrefix),subtitle:a==="category"?"Totals by category":"Totals by calendar",cardBg:(p=e.options)==null?void 0:p.cardBg,showHeader:((S=e.options)==null?void 0:S.showHeader)!==!1,showLabels:((x=e.options)==null?void 0:x.showLabels)===!0,compact:(($=e.options)==null?void 0:$.compact)===!0,xLabel:"Date",yLabel:"Hours (h)",chartData:d,legendItems:g}}},O1=qt(()=>Yt(()=>Promise.resolve().then(()=>D3),void 0).then(e=>e.default)),Rc="Pie Chart",B1={component:O1,defaultLayout:{width:"half",height:"m",order:75},label:"Pie Chart",category:"Charts",baseTitle:Rc,configurable:!0,defaultOptions:{showLegend:!0,showLabels:!0,compact:!1},dynamicControls:(e,t)=>[...Hn(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,b,v,c,f;const{mode:a,ids:o}=Fn(e.options),r=t.colorsById||{},n=t.colorsByName||{},s=t.categoryColorMap||{},l=a==="category"?x1(t.calendarGroups||[],o,s):k1(((d=t.calendarChartData)==null?void 0:d.pie)||null,o);return{title:Xt(Rc,(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:((b=e.options)==null?void 0:b.showHeader)!==!1,compact:((v=e.options)==null?void 0:v.compact)===!0,showLegend:((c=e.options)==null?void 0:c.showLegend)!==!1,showLabels:((f=e.options)==null?void 0:f.showLabels)!==!1,chartData:l,colorsById:r,colorsByName:n}}},H1=qt(()=>Yt(()=>Promise.resolve().then(()=>P3),void 0).then(e=>e.default)),jc="Stacked Chart",F1={component:H1,defaultLayout:{width:"full",height:"l",order:80},label:"Stacked Chart",category:"Charts",baseTitle:jc,configurable:!0,defaultOptions:{showLegend:!0,showLabels:!1,compact:!1,forecastMode:"total"},dynamicControls:(e,t)=>[...Hn(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,b,v,c,f;const{mode:a,ids:o}=Fn(e.options),r=t.categoryColorMap||{},n=Br({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"?Or(n,t.calendarCategoryMap||{},o,r):Ir(n,o);return{title:Xt(jc,(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:((b=e.options)==null?void 0:b.showHeader)!==!1,compact:((v=e.options)==null?void 0:v.compact)===!0,showLegend:((c=e.options)==null?void 0:c.showLegend)!==!1,showLabels:((f=e.options)==null?void 0:f.showLabels)===!0,stacked:s,colorsById:t.colorsById||{}}}},P1=qt(()=>Yt(()=>Promise.resolve().then(()=>m5),void 0).then(e=>e.default)),Vc="Calendar Table";function W1(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 z1={component:P1,defaultLayout:{width:"full",height:"l",order:70},heightMode:"auto",label:"Calendar Table",category:"Time",baseTitle:Vc,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,b,v;const a=W1(t),o=new Set(Oc((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:Xt(Vc,(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:((b=e.options)==null?void 0:b.showHeader)!==!1,rows:n,targets:t.currentTargets||{},groups:l,todayHours:t.calendarTodayHours||{},mode:a,totalTarget:Number(((v=t==null?void 0:t.targetsConfig)==null?void 0:v.totalHours)??0)||0}}},R1=qt(()=>Yt(()=>Promise.resolve().then(()=>$5),void 0).then(e=>e.default)),Uc="Time Off Trend",j1={component:R1,defaultLayout:{width:"quarter",height:"s",order:45},heightMode:"auto",label:"Time Off Trend",category:"Time",baseTitle:Uc,configurable:!0,defaultOptions:{reverseOrder:!1,labelMode:"period",interpretation:"more_off_positive",toneLowColor:"#dc2626",toneHighColor:"#16a34a"},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"}],buildProps:(e,t)=>{var a,o,r,n,s,l,d,g;return{trend:t.activityDayOffTrend,unit:t.activityTrendUnit??"wk",lookback:t.activityDayOffLookback??3,showHeader:((a=e.options)==null?void 0:a.showHeader)!==!1,reverseOrder:((o=e.options)==null?void 0:o.reverseOrder)===!0,labelMode:(r=e.options)==null?void 0:r.labelMode,interpretation:(n=e.options)==null?void 0:n.interpretation,title:Xt(Uc,(s=e.options)==null?void 0:s.titlePrefix),cardBg:(l=e.options)==null?void 0:l.cardBg,toneLowColor:(d=e.options)==null?void 0:d.toneLowColor,toneHighColor:(g=e.options)==null?void 0:g.toneHighColor}}};function Gc(e){const t=typeof e.title=="string"?e.title.trim():"";if(!t)return null;const o=(e.id!=null?String(e.id).trim():"")||U1(t);return o?`tag_${o}`:null}function V1(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=G1(r.boardColor);s.forEach(g=>{const u=Gc(g),b=typeof g.title=="string"?g.title.trim():"";if(!u||!b||n.has(u))return;n.add(u);const v=t.get(u)||{label:b,count:0,boardTitle:l,boardColor:d};v.count+=1,t.set(u,v)})});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 qc(e,t){return(Array.isArray(e.labels)?e.labels:[]).some(o=>Gc(o)===t)}function U1(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"")}function G1(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 Kc=["open_now","overdue_now","unassigned_open","mine_open","created_in_range","completed_in_range","due_in_range","done_now","archived_now"],Jc=["open_now","overdue_now","created_in_range","completed_in_range","due_in_range"];function Xa(e){return Array.isArray(e)?Array.from(new Set(e.map(t=>Number(t)).filter(t=>Number.isInteger(t)&&t>0))):typeof e=="string"?Xa(e.split(",")):[]}function zn(e){return Array.isArray(e)?Array.from(new Set(e.map(t=>String(t??"").trim()).filter(Boolean))):typeof e=="string"?zn(e.split(",")):[]}function Zc(e,t=Jc){const a=Array.isArray(e)?e:typeof e=="string"?e.split(","):[],o=new Set(Kc),r=Array.from(new Set(a.map(n=>String(n??"").trim()).filter(n=>o.has(n))));return r.length?r:[...t]}function q1(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=s0(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 li(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 fo(e,t){const a=new Set(Xa(t.boardIds)),o=new Set(Xa(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 Yc(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 di(e,t){return V1(e)}function K1(e,t){const a=t.scope,o=li(t.uid||"",t.mineMode),r=zn(t.tagIds);return e.filter(n=>!(a==="mine"&&!o(n)||a==="unassigned"&&(n.assignees||[]).length>0||r.length&&!r.some(s=>qc(n,s))))}function Xc(e,t,a){const o=li(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.startsWith("created_today"))return t.filter(s=>(e.endsWith("_mine")?o(s):!0)&&t0(s));if(e.startsWith("created_range"))return t.filter(s=>(e.endsWith("_mine")?o(s):!0)&&eu(s,a.from,a.to));if(e.startsWith("due_today"))return t.filter(s=>(e.endsWith("_mine")?o(s):!0)&&o0(s));if(e.startsWith("due_"))return t.filter(s=>(e.endsWith("_mine")?o(s):!0)&&ci(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=>n0(d,l,o)):[]}if(e.startsWith("tag_"))return t.filter(s=>qc(s,e));if(e.includes("_")){const[s,l]=e.split("_");return t.filter(d=>{const g=e0(d,s,r,n),u=l==="all"?!0:o(d);return g&&u})}return t}function J1(e,t,a){const o=li(a.uid||"",a.mineMode);switch(e){case"open_now":return t.filter(r=>r.status==="active").length;case"overdue_now":return t.filter(r=>r0(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=>eu(r,a.from,a.to)).length;case"completed_in_range":return t.filter(r=>a0(r,a.from,a.to)).length;case"due_in_range":return t.filter(r=>ci(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 Z1(e,t){const a=fo(e,{boardIds:t.boardIds,stackIds:t.stackIds,includeArchived:t.includeArchived,includeCompleted:t.includeCompleted}),o=K1(a,{scope:t.scope,uid:t.uid,mineMode:t.mineMode,tagIds:t.tagIds});return Zc(t.metrics).map(n=>({key:n,label:Y1(n),hint:X1(n,t.rangeLabel||""),value:J1(n,o,{uid:t.uid,mineMode:t.mineMode,from:t.from,to:t.to})}))}function Y1(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 X1(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 Q1(e){const t=[],a=Xa(e.boardIds),o=Xa(e.stackIds),r=zn(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 e0(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"?ci(e):!1}function Qc(e){if(!e)return null;const t=e.trim();if(/^\d{4}-\d{2}-\d{2}$/.test(t))return t;const a=ti(t);return a?ra(a):null}function Zo(e){return e==null?null:ra(new Date(e))}function t0(e){const t=Zo(e.createdTs);return t?t===ra(new Date):!1}function eu(e,t,a){return ui(Zo(e.createdTs),t,a)}function a0(e,t,a){return ui(Zo(e.doneTs),t,a)}function ci(e,t,a){return ui(Zo(e.dueTs),t,a)}function o0(e){const t=Zo(e.dueTs??null);return t?t===ra(new Date):!1}function r0(e){if(e.status!=="active")return!1;const t=Zo(e.dueTs??null);return t?t<ra(new Date):!1}function ui(e,t,a){const o=Qc(t||null),r=Qc(a||null);return!e||!o||!r?!1:e>=o&&e<=r}function n0(e,t,a){const o=(t.labelIds||[]).map(b=>b.trim().toLowerCase()).filter(Boolean),r=(t.labels||[]).map(b=>b.trim().toLowerCase()).filter(Boolean),n=(t.assignees||[]).map(b=>b.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 b=(e.labels||[]).map(c=>c.id!=null?String(c.id).trim().toLowerCase():"").filter(Boolean),v=(e.labels||[]).map(c=>String(c.title||"").trim().toLowerCase()).filter(Boolean);g=(!s||o.some(c=>b.includes(c)))&&(!l||r.some(c=>v.includes(c)))}let u=!0;if(d){const b=(e.assignees||[]).map(v=>String(v.uid||"").trim().toLowerCase()).filter(Boolean);u=n.some(v=>b.includes(v)),!u&&n.includes("me")&&(u=a(e)),!u&&n.includes("unassigned")&&(u=b.length===0)}return g&&u}function s0(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"-").replace(/(^-|-$)/g,"")}const i0=qt(()=>Yt(()=>Promise.resolve().then(()=>l4),void 0).then(e=>e.default)),tu="Deck cards",l0={component:i0,defaultLayout:{width:"half",height:"m",order:52},heightMode:"auto",label:"Deck cards",category:"Tasks",baseTitle:tu,configurable:!0,defaultOptions:{allowMine:!0,includeArchived:!0,includeCompleted:!0,autoScroll:!0,intervalSeconds:5,showCount:!0,minFilterCount:0,autoTagsEnabled:!0,compactList:!1,customFilters:[],filters:["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"],defaultFilter:"open_all",mineMode:"assignee"},controls:[{key:"boardIds",label:"Boards to include",type:"multiselect",options:[]},{key:"stackIds",label:"Stacks to include",type:"multiselect",options:[]},{key:"filters",label:"Filters to show",type:"multiselect",options:[]},{key:"autoTagsEnabled",label:"Auto tag filters",type:"toggle"},{key:"allowMine",label:"Allow mine filters",type:"toggle"},{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:"autoScroll",label:"Auto-scroll list",type:"toggle"},{key:"intervalSeconds",label:"Scroll every (s)",type:"number",min:3,max:10,step:1},{key:"showCount",label:"Show count pill",type:"toggle"},{key:"minFilterCount",label:"Min filter count",type:"number",min:0,max:999,step:1},{key:"compactList",label:"Compact list",type:"toggle"},{key:"customFilters",label:"Custom filters",type:"filterbuilder"}],dynamicControls:(e,t)=>{var f;const o={key:"defaultFilter",label:"Default filter",type:"select",options:Ac(e.filters??((f=e.defaultOptions)==null?void 0:f.filters)).map(p=>({value:p,label:Vt(p)}))},r=[{value:"all",label:Vt("all")},{value:"open_all",label:Vt("open_all")},{value:"open_mine",label:Vt("open_mine")},{value:"done_all",label:Vt("done_all")},{value:"done_mine",label:Vt("done_mine")},{value:"archived_all",label:Vt("archived_all")},{value:"archived_mine",label:Vt("archived_mine")},{value:"due_all",label:Vt("due_all")},{value:"due_mine",label:Vt("due_mine")},{value:"due_today_all",label:Vt("due_today_all")},{value:"due_today_mine",label:Vt("due_today_mine")},{value:"created_today_all",label:Vt("created_today_all")},{value:"created_today_mine",label:Vt("created_today_mine")},{value:"created_range_all",label:Vt("created_range_all")},{value:"created_range_mine",label:Vt("created_range_mine")}],n=Array.isArray(t.deckBoards)?t.deckBoards.map(p=>({value:p.id,label:p.title||`Board ${p.id}`})):[],s=Array.isArray(t.deckCards)?t.deckCards:[],l=Array.isArray(e.boardIds)?e.boardIds:Nr(e.boardIds),d=Xa(e.stackIds),g=fo(s,{boardIds:l,includeArchived:e.includeArchived!==!1,includeCompleted:e.includeCompleted!==!1}),u=fo(g,{stackIds:d,includeArchived:e.includeArchived!==!1,includeCompleted:e.includeCompleted!==!1}),b=Yc(g),v=di(u),c=[];return e.autoTagsEnabled!==!1&&v.length&&c.push({key:"autoTagSelection",label:"Tag filters",type:"taglist",options:v,hint:"Uncheck tags to hide their filters. Counts reflect the current cards."}),[{key:"filters",label:"Filters",type:"multiselect",options:r},o,{key:"boardIds",label:"Boards",type:"multiselect",options:n},{key:"stackIds",label:"Stacks",type:"multiselect",options:b},...c]},buildProps:(e,t)=>{var l,d,g,u,b,v,c,f,p,S,x,$,_,O,I,B,y,T,m,k,L,z,M,Z;const a=Ac(((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:Nr((b=e.options)==null?void 0:b.boardIds),r=Xa((v=e.options)==null?void 0:v.stackIds),n=a.includes((c=e.options)==null?void 0:c.defaultFilter)?(f=e.options)==null?void 0:f.defaultFilter:a[0]||"all",s=q1((p=e.options)==null?void 0:p.customFilters);return{title:Xt(tu,(S=e.options)==null?void 0:S.titlePrefix),cardBg:(x=e.options)==null?void 0:x.cardBg,cards:t.deckCards||[],rangeLabel:t.deckRangeLabel||t.rangeLabel||"",from:t.from,to:t.to,uid:t.uid,deckUrl:t.deckUrl,lastFetchedAt:t.deckRangeLabel,loading:t.deckLoading,error:t.deckError,boardIds:o,stackIds:r,filters:a,defaultFilter:n,allowMine:(($=e.options)==null?void 0:$.allowMine)!==!1,mineMode:((_=e.options)==null?void 0:_.mineMode)||"assignee",includeArchived:((O=e.options)==null?void 0:O.includeArchived)!==!1,includeCompleted:((I=e.options)==null?void 0:I.includeCompleted)!==!1,autoScroll:((B=e.options)==null?void 0:B.autoScroll)!==!1,intervalSeconds:((y=e.options)==null?void 0:y.intervalSeconds)??5,showCount:((T=e.options)==null?void 0:T.showCount)!==!1,minFilterCount:Number(((m=e.options)==null?void 0:m.minFilterCount)??0),compactList:((k=e.options)==null?void 0:k.compactList)===!0,autoTagsEnabled:((L=e.options)==null?void 0:L.autoTagsEnabled)!==!1,autoTagSelection:Array.isArray((z=e.options)==null?void 0:z.autoTagSelection)?(M=e.options)==null?void 0:M.autoTagSelection:void 0,showHeader:((Z=e.options)==null?void 0:Z.showHeader)!==!1,customFilters:s,editable:t.isLayoutEditing===!0,onUpdateFilters:j=>{var q;return(q=t.onUpdateWidgetOptions)==null?void 0:q.call(t,e.id,"filters",j)}}}},d0=qt(()=>Yt(()=>Promise.resolve().then(()=>k4),void 0).then(e=>e.default)),au="Deck stats",c0={component:d0,defaultLayout:{width:"half",height:"m",order:53},label:"Deck stats",category:"Tasks",baseTitle:au,configurable:!0,defaultOptions:{scope:"all",mineMode:"assignee",includeArchived:!0,includeCompleted:!0,metrics:[...Jc]},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:Nr(e.boardIds),n=Xa(e.stackIds),s=fo(o,{boardIds:r,includeArchived:e.includeArchived!==!1,includeCompleted:e.includeCompleted!==!1}),l=fo(s,{stackIds:n,includeArchived:e.includeArchived!==!1,includeCompleted:e.includeCompleted!==!1}),d=Yc(s),g=di(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:Kc.map(u=>({value:u,label:u0(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,b,v,c,f,p,S,x,$,_;const a=Array.isArray((l=e.options)==null?void 0:l.boardIds)?e.options.boardIds:Nr((d=e.options)==null?void 0:d.boardIds),o=Xa((g=e.options)==null?void 0:g.stackIds),r=zn((u=e.options)==null?void 0:u.tagIds),n=Zc((b=e.options)==null?void 0:b.metrics),s=((v=e.options)==null?void 0:v.scope)==="mine"||((c=e.options)==null?void 0:c.scope)==="unassigned"?e.options.scope:"all";return{title:Xt(au,(f=e.options)==null?void 0:f.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:((S=e.options)==null?void 0:S.mineMode)||"assignee",includeArchived:((x=e.options)==null?void 0:x.includeArchived)!==!1,includeCompleted:(($=e.options)==null?void 0:$.includeCompleted)!==!1,showHeader:((_=e.options)==null?void 0:_.showHeader)!==!1,selectionText:Q1({boardIds:a,stackIds:o,tagIds:r,scope:s})}}};function u0(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 g0=qt(()=>Yt(()=>Promise.resolve().then(()=>O4),void 0).then(e=>e.default)),ou="Notes",p0={component:g0,defaultLayout:{width:"half",height:"m",order:69},heightMode:"auto",label:"Notes editor",category:"Notes",baseTitle:ou,configurable:!0,controls:[{key:"prevLabel",label:"Prev label",type:"text"},{key:"currLabel",label:"Current label",type:"text"}],buildProps:(e,t)=>{var a,o,r,n,s;return{title:Xt(ou,(a=e.options)==null?void 0:a.titlePrefix),showHeader:((o=e.options)==null?void 0:o.showHeader)!==!1,cardBg:(r=e.options)==null?void 0:r.cardBg,prevLabel:((n=e.options)==null?void 0:n.prevLabel)||(t.notesLabelPrev??"Previous"),currLabel:((s=e.options)==null?void 0:s.currLabel)||(t.notesLabelCurr??"Current"),previous:t.notesPrev??"",history:t.notesHistory??[],modelValue:t.notesCurr??"",saving:t.isSavingNote??!1,onSave:t.onSaveNote,"onUpdate:modelValue":t.onUpdateNotes}}},f0=qt(()=>Yt(()=>Promise.resolve().then(()=>P4),void 0).then(e=>e.default)),ru="Note",b0={component:f0,defaultLayout:{width:"quarter",height:"s",order:68},heightMode:"auto",label:"Notes snippet",category:"Notes",baseTitle:ru,configurable:!0,controls:[],buildProps:(e,t)=>{var a,o,r;return{notesCurr:t.notesCurr??"",notesPrev:t.notesPrev??"",title:Xt(ru,(a=e.options)==null?void 0:a.titlePrefix),showHeader:((o=e.options)==null?void 0:o.showHeader)!==!1,cardBg:(r=e.options)==null?void 0:r.cardBg}}},v0=qt(()=>Yt(()=>Promise.resolve().then(()=>_S),void 0).then(e=>e.default)),nu="Targets",h0={component:v0,defaultLayout:{width:"half",height:"m",order:18},heightMode:"auto",label:"Targets",category:"Time",baseTitle:nu,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)):ya(),r=Mc(Tc(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 v,c,f,p,S,x,$,_,O,I,B,y,T,m;const a=!!((v=e.options)!=null&&v.useLocalConfig),o=y0(a?(c=e.options)==null?void 0:c.localGroupsById:null),r=w0(a?(f=e.options)==null?void 0:f.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)):ya(),s=Mc(Tc(n,t.rangeMode)),l=(k,L)=>{var z;((z=e.options)==null?void 0:z[k])!==void 0&&L(!!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?f1(s,{...t,groupsById:o??t.groupsById}):t.targetsSummary??t.summary,g=a?k0(r,t.rangeMode):t.currentTargets||{},u=m0({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 b=a?su({mode:u,config:s,summary:d,byCal:t.byCal||[],calendars:t.calendars||[],colorsById:t.colorsById||{},groupsById:o??t.groupsById??{},currentTargets:g,todayHoursByCalendar:t.calendarTodayHours||{}}):((S=e.props)==null?void 0:S.groups)??su({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:b,showHeader:((x=e.options)==null?void 0:x.showHeader)!==!1,showLegend:(($=e.options)==null?void 0:$.showLegend)!==!1,showDelta:((_=e.options)==null?void 0:_.showDelta)!==!1,showForecast:((O=e.options)==null?void 0:O.showForecast)!==!1,showPace:((I=e.options)==null?void 0:I.showPace)!==!1,neverFinishedMode:((B=e.options)==null?void 0:B.neverFinishedMode)===!0,showToday:((y=e.options)==null?void 0:y.showToday)!==!1,title:Xt(nu,(T=e.options)==null?void 0:T.titlePrefix),presetLabel:t.activePreset??void 0,cardBg:(m=e.options)==null?void 0:m.cardBg}}};function m0(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 su(e){return e.mode==="single_goal"?[]:e.mode==="calendar_goals"?v1({config:e.config,summary:e.summary,byCal:e.byCal,calendars:e.calendars,colorsById:e.colorsById,currentTargets:e.currentTargets,todayHoursByCalendar:e.todayHoursByCalendar}):b1({config:e.config,summary:e.summary,byCal:e.byCal,calendars:e.calendars,colorsById:e.colorsById,groupsById:e.groupsById,currentTargets:e.currentTargets})}function y0(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 w0(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]=Ha(n))}),t}function k0(e,t){return String(t||"week").toLowerCase()!=="month"?{...e}:Object.fromEntries(Object.entries(e).map(([a,o])=>[a,Fa(o)]))}function x0(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 v;const g=Number(((v=e.shares)==null?void 0:v[d])??0),u=t==="calendar"?1/r.size:a[d]??0,b=Math.abs(g-u);b>n&&(n=b)});const s=1-n;return Math.max(0,Math.min(1,Number(s.toFixed(2))))}const iu=qt(()=>Yt(()=>Promise.resolve().then(()=>O8),void 0).then(e=>e.default)),lu="Time Summary",gi="Period Comparison",_0=["showTotal","showAverage","showMedian","showBusiest","showWorkday","showWeekend","showWeekendShare","showCalendarSummary","showTopCategory"],du={key:"mode",label:"Average mode",type:"select",options:[{value:"active",label:"Active days"},{value:"all",label:"All days"}]},cu=[{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 pi(){return{...ya().timeSummary,mode:"active",showToday:!0,showActivity:!0,showHistoryCoreMetrics:!0,historyView:"accordion",showActivityDetails:!0,showDelta:!0}}function C0(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 uu(e,t,a){var x,$,_,O,I,B,y,T,m,k,L,z,M,Z,j,q,Y;const o=t.targetsConfig?JSON.parse(JSON.stringify(t.targetsConfig)):ya(),r={...o,timeSummary:{...o.timeSummary}},n=String(t.rangeMode||"week").toLowerCase()==="month"?"month":"week",s=((x=e.options)==null?void 0:x.mode)??t.activeDayMode??"active",l=a.showOverview&&(($=e.options)==null?void 0:$.showToday)!==!1,d=a.showOverview&&((_=e.options)==null?void 0:_.showActivity)!==!1,g=((O=e.options)==null?void 0:O.showHistoryCoreMetrics)!==!1,u=C0(t),b=S0(t,u),v=String(((I=e.options)==null?void 0:I.historyView)??"").toLowerCase(),c=v==="accordion"||v==="pills"?"accordion":"timeline",f=((B=e.options)==null?void 0:B.showActivityDetails)!==!1,p=a.showLookback&&a.showDelta&&((y=e.options)==null?void 0:y.showDelta)!==!1;_0.forEach(U=>{var le;((le=e.options)==null?void 0:le[U])!==void 0&&(r.timeSummary[U]=!!e.options[U])}),((T=e.options)==null?void 0:T.showCalendarSummary)===void 0&&(r.timeSummary.showCalendarSummary=u!=="single_goal"),((m=e.options)==null?void 0:m.showTopCategory)===void 0&&(r.timeSummary.showTopCategory=u==="category_and_calendar_goals"),((k=e.options)==null?void 0:k.showBalance)===void 0&&(r.timeSummary.showBalance=u==="category_and_calendar_goals");const S=a.includeHistory&&Number(t.lookbackWeeks)>1?M0({mode:s,rangeMode:n,lookbackWeeks:Number(t.lookbackWeeks),perDaySeriesByOffset:(L=t.charts)==null?void 0:L.perDaySeriesByOffset,hodByOffset:(z=t.charts)==null?void 0:z.hodByOffset,summaryByOffset:(M=t.charts)==null?void 0:M.summaryByOffset,targetsConfig:A0(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:((Z=e.props)==null?void 0:Z.todayGroups)??b,title:Xt(a.title,(j=e.options)==null?void 0:j.titlePrefix),cardBg:(q=e.options)==null?void 0:q.cardBg,displayMode:u,rangeMode:t.rangeMode,rangeStart:t.from,rangeEnd:t.to,offset:t.offset,showHeader:((Y=e.options)==null?void 0:Y.showHeader)!==!1,showToday:l,showActivity:d,showHistoryCoreMetrics:g,historyView:c,showActivityDetails:f,showOverview:a.showOverview,showLookback:a.showLookback,showDelta:p,history:S}}function S0(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 $0={component:iu,defaultLayout:{width:"half",height:"m",order:9},label:"Time Summary (Overview)",category:"Time",baseTitle:`${lu} (Overview)`,configurable:!0,defaultOptions:pi(),controls:[du,{key:"showToday",label:"Show today block",type:"toggle"},{key:"showActivity",label:"Show activity section",type:"toggle"},{key:"showActivityDetails",label:"Activity details",type:"toggle"},...cu],buildProps:(e,t)=>uu(e,t,{title:`${lu} (Overview)`,includeHistory:!1,showOverview:!0,showLookback:!1,showDelta:!1})},T0={component:iu,defaultLayout:{width:"half",height:"l",order:19},heightMode:"auto",label:gi,category:"Time",baseTitle:gi,configurable:!0,defaultOptions:pi(),controls:[du,{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"},...cu],buildProps:(e,t)=>uu(e,t,{title:gi,includeHistory:!0,showOverview:!1,showLookback:!0,showDelta:!0})};pi();function M0(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 b=Number((u==null?void 0:u.offset)??0);Number.isFinite(b)&&r.set(b,u)});const n=new Map;a.forEach(u=>{const b=Number((u==null?void 0:u.offset)??0);Number.isFinite(b)&&n.set(b,u)});const s=new Map;o.forEach(u=>{const b=Number((u==null?void 0:u.offset)??0);Number.isFinite(b)&&s.set(b,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 b=String((u==null?void 0:u.id)??"").trim();b&&g.set(b,String((u==null?void 0:u.label)??b))}),e.targetsConfig.categories.forEach(u=>{const b=String((u==null?void 0:u.id)??"").trim();b&&!g.has(b)&&g.set(b,String((u==null?void 0:u.label)??b))}),d.map(u=>{const b=r.get(u);if(!b)return null;const v=L0(b),c=s.get(u),f=n.get(u),p=ga(v.totalHours),S=Number((c==null?void 0:c.events)??(c==null?void 0:c.eventsCount)??0)||0,x=Number((c==null?void 0:c.overlap_events)??(c==null?void 0:c.overlapEvents)??0)||0,$=Number((c==null?void 0:c.longest_session)??(c==null?void 0:c.longestSession)??0)||0,_=gu((c==null?void 0:c.earliest_start)??(c==null?void 0:c.earliestStart)),O=gu((c==null?void 0:c.latest_end)??(c==null?void 0:c.latestEnd)),I=f?D0(f,p):null,B=v.activeDays,y=ga(fi(v.filteredTotals(e.mode))),T=ga(bi(v.filteredTotals(e.mode))),m=S>0?ga(p/S):0,k=ga(fi(v.filteredWorkdayTotals(e.mode))),L=ga(bi(v.filteredWorkdayTotals(e.mode))),z=ga(fi(v.filteredWeekendTotals(e.mode))),M=ga(bi(v.filteredWeekendTotals(e.mode))),Z=(I==null?void 0:I.weekendShare)??v.weekendShare,j=E0(v.calendarTotals,p),q=N0({calendarTotals:v.calendarTotals,categoryLabelById:g,categoryColorMap:e.categoryColorMap,calendarCategoryMap:e.calendarCategoryMap,targetsConfig:e.targetsConfig}),Y=I0({totalHours:p,calendarTotals:v.calendarTotals,calendarCategoryMap:e.calendarCategoryMap,targetsConfig:e.targetsConfig});return{offset:u,label:Bn({offset:u,from:b==null?void 0:b.from,to:b==null?void 0:b.to},e.rangeMode),rangeStart:String((b==null?void 0:b.from)??""),rangeEnd:String((b==null?void 0:b.to)??""),totalHours:p,avgDay:y,avgEvent:m,medianDay:T,busiest:v.busiest,workdayAvg:k,workdayMedian:L,weekendAvg:z,weekendMedian:M,weekendShare:Z,activeCalendars:v.activeCalendars,calendarSummary:j,topCategory:q,balanceIndex:Y,activity:{events:S,activeDays:B,typicalStart:(I==null?void 0:I.typicalStart)??null,typicalEnd:(I==null?void 0:I.typicalEnd)??null,weekendShare:(I==null?void 0:I.weekendShare)??null,eveningShare:(I==null?void 0:I.eveningShare)??null,earliestStart:_,latestEnd:O,overlapEvents:x,longestSession:ga($),lastDayOff:v.lastDayOff,lastHalfDayOff:v.lastHalfDayOff}}}).filter(Boolean)}function A0(e,t){const a=JSON.parse(JSON.stringify(e));return t==="month"&&(a.totalHours=Fa(a.totalHours),a.categories=a.categories.map(o=>({...o,targetHours:Fa(o.targetHours)}))),a}function L0(e){const t=Array.isArray(e==null?void 0:e.labels)?e.labels.map(f=>String(f??"")):[],a=Array.isArray(e==null?void 0:e.series)?e.series:[],o=t.map((f,p)=>a.reduce((S,x)=>{var _;const $=Number(((_=x==null?void 0:x.data)==null?void 0:_[p])??0);return S+(Number.isFinite($)?Math.max(0,$):0)},0)),r=a.map(f=>{const p=String((f==null?void 0:f.id)??""),S=String((f==null?void 0:f.name)??(f==null?void 0:f.label)??p),x=Array.isArray(f==null?void 0:f.data)?f.data.reduce(($,_)=>{const O=Number(_??0);return $+(Number.isFinite(O)?Math.max(0,O):0)},0):0;return{id:p,name:S,total:ga(x),color:f!=null&&f.color?String(f.color):void 0}}),n=o.reduce((f,p)=>f+p,0),s=r.filter(f=>f.total>0).length,l=(()=>{if(!t.length)return null;let f=-1,p=-1;return o.forEach((S,x)=>{S>f&&(f=S,p=x)}),p<0||f<=0?null:{date:t[p],hours:ga(f)}})(),d=[],g=[];o.forEach((f,p)=>{const S=O0(t[p]);S!=null&&(S===0||S===6?g.push(f):d.push(f))});const u=n>0?Hr(g.reduce((f,p)=>f+p,0)/n*100):null,{lastDayOff:b,lastHalfDayOff:v}=B0(t,o),c=o.filter(f=>f>.01).length;return{labels:t,totals:o,totalHours:n,activeCalendars:s,busiest:l,workdayTotals:d,weekendTotals:g,weekendShare:u,lastDayOff:b,lastHalfDayOff:v,activeDays:c,filteredTotals:f=>f==="active"?o.filter(p=>p>0):o,filteredWorkdayTotals:f=>f==="active"?d.filter(p=>p>0):d,filteredWeekendTotals:f=>f==="active"?g.filter(p=>p>0):g,calendarTotals:r}}function D0(e,t){const a=Array.isArray(e==null?void 0:e.dows)?e.dows.map(c=>String(c??"")):[],o=Array.isArray(e==null?void 0:e.matrix)?e.matrix:[],r=new Map;a.forEach((c,f)=>{const p=Array.isArray(o[f])?o[f]:[];r.set(c,p.map(S=>Number(S??0)))});const n=Array.from({length:24},(c,f)=>Array.from(r.values()).reduce((p,S)=>p+Number(S[f]??0),0)),s=.25;let l=null,d=null;for(let c=0;c<24;c+=1)if(n[c]>=s){l=`${String(c).padStart(2,"0")}:00`;break}for(let c=23;c>=0;c-=1)if(n[c]>=s){d=`${String(c+1).padStart(2,"0")}:00`;break}const g=(r.get("Sat")||[]).reduce((c,f)=>c+Number(f??0),0)+(r.get("Sun")||[]).reduce((c,f)=>c+Number(f??0),0);let u=0;r.forEach(c=>{for(let f=18;f<24;f+=1)u+=Number(c[f]??0)});const b=t>0?Hr(g/t*100):null,v=t>0?Hr(u/t*100):null;return{typicalStart:l,typicalEnd:d,weekendShare:b,eveningShare:v}}function E0(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} ${Hr(o.total/t*100)}%`).join(", ")}function N0(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?Hr(o/n*100):0;return{label:e.categoryLabelById.get(a)||a,actualHours:ga(o),targetHours:ga(n),percent:s,color:(l=e.categoryColorMap)==null?void 0:l[a]}}function I0(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?x0({shares:a,targets:e.targetsConfig.categories,basis:t}):null}function fi(e){return e.length?e.reduce((t,a)=>t+a,0)/e.length:0}function bi(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 O0(e){if(!e)return null;const t=jt(e);return t?t.getUTCDay():null}function B0(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 Hr(e){return Math.round(e*10)/10}function ga(e){return Math.round(e*100)/100}function gu(e){if(e==null)return null;const t=String(e).trim();return t||null}let pu=null;const H0={tabs:[{id:"tab-1",label:"Overview",widgets:[]}],defaultTabId:"tab-1"},F0={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:{showTotal:!0,showAverage:!0,showMedian:!0,showBusiest:!0,showWorkday:!0,showWeekend:!0,showWeekendShare:!0,showCalendarSummary:!0,showTopCategory:!1,showBalance:!0,mode:"active",showToday:!0,showActivity:!0,showHistoryCoreMetrics:!0,historyView:"accordion",showActivityDetails:!0,showDelta:!0,heightMode:"auto"},layout:{width:"half",height:"l",order:20},version:1},{id:"widget-time_summary_lookback-3",type:"time_summary_lookback",options:{showTotal:!0,showAverage:!0,showMedian:!0,showBusiest:!0,showWorkday:!0,showWeekend:!0,showWeekendShare:!0,showCalendarSummary:!0,showTopCategory:!1,showBalance:!0,mode:"active",showToday:!0,showActivity:!0,showHistoryCoreMetrics:!0,historyView:"accordion",showActivityDetails:!0,showDelta:!0},layout:{width:"half",height:"l",order:25},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-deck_stats-6",type:"deck_stats",options:{scope:"all",mineMode:"assignee",includeArchived:!0,includeCompleted:!0,metrics:["open_now","overdue_now","created_in_range","completed_in_range","due_in_range"],heightMode:"auto"},layout:{width:"half",height:"m",order:55},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-deck_cards-13",type:"deck_cards",options:{allowMine:!0,includeArchived:!0,includeCompleted:!0,autoScroll:!0,intervalSeconds:5,showCount:!0,minFilterCount:0,autoTagsEnabled:!0,compactList:!1,customFilters:[],filters:["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"],defaultFilter:"open_all",mineMode:"assignee",heightMode:"fixed"},layout:{width:"full",height:"xl",order:69},version:1},{id:"widget-calendar_table-1779236255213",type:"calendar_table",options:{calendarFilter:[],compact:!1},layout:{width:"full",height:"l",order:79},version:1}]}],defaultTabId:"tab-1"},P0={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:{showTotal:!0,showAverage:!0,showMedian:!0,showBusiest:!0,showWorkday:!0,showWeekend:!0,showWeekendShare:!0,showCalendarSummary:!0,showTopCategory:!0,showBalance:!0,mode:"active",showToday:!0,showActivity:!0,showHistoryCoreMetrics:!0,historyView:"accordion",showActivityDetails:!0,showDelta:!0,heightMode:"auto",scale:"md"},layout:{width:"half",height:"xl",order:20},version:1},{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"],heightMode:"auto"},layout:{width:"half",height:"m",order:30},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",scale:"xl",dense:!0},layout:{width:"full",height:"m",order:60},version:1},{id:"widget-category_mix_trend-1778323046609",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:"widget-time_summary_lookback-1778997702767",type:"time_summary_lookback",options:{showTotal:!0,showAverage:!0,showMedian:!0,showBusiest:!0,showWorkday:!0,showWeekend:!0,showWeekendShare:!0,showCalendarSummary:!0,showTopCategory:!0,showBalance:!0,mode:"active",showToday:!0,showActivity:!0,showHistoryCoreMetrics:!0,historyView:"accordion",showActivityDetails:!0,showDelta:!0},layout:{width:"full",height:"l",order:80},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-note_editor-1768297159393",type:"note_editor",options:{},layout:{width:"half",height:"l",order:69},version:1},{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-note_snippet-1768297161989",type:"note_snippet",options:{},layout:{width:"quarter",height:"m",order:79},version:1},{id:"widget-deck_cards-1768297173746",type:"deck_cards",options:{allowMine:!0,includeArchived:!0,includeCompleted:!0,autoScroll:!0,intervalSeconds:5,showCount:!0,minFilterCount:1,autoTagsEnabled:!0,compactList:!1,customFilters:[],filters:["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"],defaultFilter:"open_all",mineMode:"assignee",heightMode:"fixed"},layout:{width:"full",height:"xl",order:89},version:1}]}],defaultTabId:"tab-1"};function fu(e){const t=W0(e);t&&(pu=t)}function bu(e){const t=pu;if(!t)return[];const a=t[e]||[];return z0(a)}function vu(e){return e==="quick"?vi(H0):e==="standard"?vi(F0):e==="pro"?vi(P0):{tabs:[{id:"tab-1",label:"Overview",widgets:bu(e)}],defaultTabId:"tab-1"}}function W0(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 z0(e){return JSON.parse(JSON.stringify(e||[]))}function vi(e){return JSON.parse(JSON.stringify(e))}const R0=new Set(["chart_pie","chart_stacked","chart_per_day","chart_dow"]);function j0(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 V0(e,t){if(!R0.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=j0(l)}return delete n.scope,delete n.calendarFilter,delete n.categoryFilter,n}const Fr={time_summary_overview:$0,time_summary_lookback:T0,targets_v2:h0,balance_index:m1,dayoff_trend:j1,category_mix_trend:w1,chart_pie:B1,chart_stacked:F1,chart_per_day:I1,chart_dow:L1,chart_hod:E1,calendar_table:z1,deck_cards:l0,deck_stats:c0,note_snippet:b0,note_editor:p0};function hu(e,t,a=!1){if(!Array.isArray(e))return t;const o=[],r=(n,s,l,d,g)=>{const u=Fr[n];if(!u)return;const b=String((s==null?void 0:s.id)??"")||`widget-${n}-${l+1}`,v=(s==null?void 0:s.layout)??{},c=v.width==="quarter"||v.width==="half"?v.width:"full",f=v.height==="s"||v.height==="l"||v.height==="xl"?v.height:"m",p=g??Number(v.order??0),S=Number.isFinite(p)?p:0;let $={...u.defaultOptions||{},...s!=null&&s.options&&typeof s.options=="object"?s.options:{}};$.heightMode==null&&((s==null?void 0:s.heightMode)==="auto"||(s==null?void 0:s.heightMode)==="fixed")&&($.heightMode=s.heightMode),$.scale==null&&$.textSize!=null&&($.scale=$.textSize,delete $.textSize),$=V0(n,$),o.push({id:b,type:n,options:$,layout:{width:c,height:f,order:S},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}`,g=(n==null?void 0:n.layout)??{},u=Number(g.order??0),b=Number.isFinite(u)?u:0;r("time_summary_overview",{...n,id:d},s),r("time_summary_lookback",{...n,id:`${d}-lookback`},s,void 0,b+.1);return}r(l,n,s)}}),o.length?o:a?[]:t}function mu(){return _u("standard")}function yu(e){return e==="total_only"?"single_goal":e==="total_plus_categories"?"calendar_goals":e==="full_granular"?"category_and_calendar_goals":null}function wu(e,t){return e==="targets_v2"?t?{showCategoryBlocks:t!=="single_goal"}:{showCategoryBlocks:!0}:e==="time_summary_overview"||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 U0(e,t,a){const o=yu(t),r=wu(e.type,o);if(!r)return e;const n=yu(a),s=wu(e.type,n);if(!s)return e;const l=e.options||{},d={...l};let g=!1;return Object.entries(r).forEach(([u,b])=>{const v=l[u],c=s[u];(v===void 0||v===c)&&v!==b&&(d[u]=b,g=!0)}),g?{...e,options:d}:e}function ku(e,t,a){return(e||[]).map(o=>U0(o,t,a))}function xu(e,t,a){return{tabs:((e==null?void 0:e.tabs)||[]).map(o=>({...o,widgets:ku(o.widgets||[],t,a)})),defaultTabId:(e==null?void 0:e.defaultTabId)||"tab-1"}}function Pr(e,t){const a=vu(e);return xu(a,t)}function Rn(e){return e==="total_only"?["category_mix_trend"]:e==="total_plus_categories"?["category_mix_trend"]:[]}function G0(e,t){const a=new Set(Rn(t));return a.size?e.filter(o=>!a.has(String((o==null?void 0:o.type)??""))):e}function hi(e,t){var n;const a=new Set(Rn(t));if(!a.size)return e;const o=((e==null?void 0:e.tabs)||[]).map(s=>({...s,widgets:(s.widgets||[]).filter(l=>!a.has(String((l==null?void 0:l.type)??"")))})),r=o.some(s=>s.id===e.defaultTabId)?e.defaultTabId:((n=o[0])==null?void 0:n.id)||"tab-1";return{tabs:o,defaultTabId:r}}function Wr(e,t){var d,g,u,b;if(Array.isArray(e)){const v=hu(e,((d=t.tabs[0])==null?void 0:d.widgets)||mu()),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:v}],defaultTabId:c}}if(!e||typeof e!="object")return t;const a=Array.isArray(e.tabs)?e.tabs:[],o=t.tabs||[],r=a.map((v,c)=>{var _,O;const f=String((v==null?void 0:v.id)??"").trim()||`tab-${c+1}`,p=String((v==null?void 0:v.label)??"").trim(),S=p?p.slice(0,48):`Tab ${c+1}`,x=((_=o[c])==null?void 0:_.widgets)||((O=o[0])==null?void 0:O.widgets)||mu(),$=hu(v==null?void 0:v.widgets,x,!0);return{id:f,label:S,widgets:$}}),n=r.length?r:o,s=String(e.defaultTabId??e.defaultTab??e.active??""),l=n.some(v=>v.id===s)?s:((b=n[0])==null?void 0:b.id)||"tab-1";return{tabs:n,defaultTabId:l}}function q0(e,t){return!!t.isInitialLoading}function K0(e,t){var l;const a=Fr[e.type];if(!a)return null;const o=a.buildProps(e,t)||{},r=q0(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 _u(e,t){return ku(bu(e),t)}async function J0(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 Cu(Su("/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 Z0(){const t=await Cu(Su("/apps/opsdash/overview/deck/boards"));return t&&t.ok===!1?[]:Array.isArray(t==null?void 0:t.boards)?t.boards:[]}async function Cu(e){const t={Accept:"application/json"},a=X0();a&&(t.requesttoken=a);const o=await fetch(e,{credentials:"same-origin",headers:t}),r=await o.text();if(!o.ok)throw new Error(`Deck request failed (${o.status})`);return r?JSON.parse(r):null}function Su(e,t){var l,d,g;const a=e.startsWith("/")?e:`/${e}`,o=t?Y0(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 Y0(e){const t=new URLSearchParams;return Object.entries(e).forEach(([a,o])=>{o!=null&&t.append(a,String(o))}),t.toString()}function X0(){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 Q0={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 ew(){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 $u(){const e=C(()=>ew());function t(s,l){const d=typeof window<"u"?window:{},g=Q0[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 v;const d=typeof window<"u"?window:{},g=((v=d.OC)==null?void 0:v.requestToken)||d.oc_requesttoken||"",u={"Content-Type":"application/json"};g&&(u.requesttoken=g);const b=await fetch(s,{method:"POST",credentials:"same-origin",headers:u,body:JSON.stringify(l||{})});if(!b.ok)throw new Error(`HTTP ${b.status}`);return await b.json()}async function n(s){var v;const l=typeof window<"u"?window:{},d=((v=l.OC)==null?void 0:v.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 b=await u.text();return b?JSON.parse(b):{}}return{route:t,getJson:o,postJson:r,deleteJson:n,root:e}}function tw(e){return e==="total_only"||e==="total_plus_categories"||e==="full_granular"}function aw(e){const{props:t,emit:a}=e,{route:o,postJson:r}=$u(),n=["intro","strategy","calendars","deck","goals","preferences","dashboard","review"],s=ne(0),l=ne("total_plus_categories"),d=ne(t.initialDashboardMode||"standard"),g=ne(t.hasExistingConfig?"existing":"new"),u=ne(t.hasExistingConfig?"existing":"quick"),b=ne(!1),v=ne(""),c=ne([]),f=ne([]),p=ne({}),S=ne({}),x=ne("auto"),$=ne(8),_=ne(null),O=ne(3),I=ne(la(t.initialDeckSettings??To())),B=ne({...t.initialReportingConfig??$o()}),y=ne([]),T=ne(!1),m=ne(""),k=ne(!1),L=ne(""),z=ne([]),M=ne(null),Z=[{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:"0 widgets"},{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:"14 widgets"},{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:"18 widgets"}],j=[{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"]}],q=C(()=>{if(!I.value.enabled)return[];const K=new Set(I.value.hiddenBoards||[]);return y.value.filter(Q=>!K.has(Q.id))}),Y=C(()=>{if(!I.value.enabled)return"Deck tab disabled";if(T.value)return"Deck tab enabled — loading boards…";if(m.value)return"Deck tab enabled — open Deck to finish setup.";if(!y.value.length)return"Deck tab enabled — create a Deck board to see cards.";if(!q.value.length)return"Deck tab enabled — all boards hidden";if(q.value.length===y.value.length){const K=q.value.length;return K===1?"Showing 1 board":`Showing all ${K} boards`}return q.value.length===1?`Showing ${q.value[0].title}`:q.value.length===2?`Showing ${q.value[0].title} and ${q.value[1].title}`:`Showing ${q.value.length} boards`}),U=C(()=>{if(!B.value.enabled)return"Recap disabled";const K=[];return["week","month"].forEach(Q=>{const pe=B.value.modes[Q];if(!(pe!=null&&pe.enabled))return;const Ce=Q==="week"?"Week":"Month",De=pe.delivery==="checkpoint_final"?"checkpoint + final recap":"final recap";K.push(`${Ce}: ${De} @ ${pe.sendTimeLocal}`)}),K.length?K.join(" • "):"Recap enabled • no active modes"}),le=ne(null),J=C(()=>x.value==="auto"?t.systemTheme==="dark"?"dark":"light":x.value),R=C(()=>t.systemTheme==="dark"?"dark":"light"),D=["#2563EB","#F97316","#10B981","#A855F7","#EC4899","#14B8A6","#F59E0B","#6366F1","#0EA5E9","#65A30D"],F=C(()=>new Map(t.calendars.map(K=>[K.id,K]))),ce=C(()=>c.value.map(K=>F.value.get(K)).filter(K=>!!K)),Ae=C(()=>ce.value.map(K=>K.id)),se=C(()=>f.value.reduce((K,Q)=>K+(Number.isFinite(Q.targetHours)?Q.targetHours:0),0)),oe=C(()=>ce.value.reduce((K,Q)=>K+(Number(ts(Q.id))||0),0)),G=C(()=>{const K=new Set,Q=pe=>{const Ce=xt(pe);Ce&&K.add(Ce)};return t.calendars.forEach(pe=>Q(pe.color)),f.value.forEach(pe=>Q(pe.color)),D.forEach(pe=>K.add(pe)),Array.from(K)}),ee=Cc(),ge=C(()=>ee.find(K=>K.id===l.value)??ee[0]),ve=C(()=>ge.value.layers.categories),N=C(()=>ge.value.layers.calendars),P=C(()=>t.closable!==!1),V=C(()=>hi(Pr(d.value),l.value)),de=C(()=>[...n]),ue=C(()=>de.value[Math.min(s.value,de.value.length-1)]),fe=C(()=>s.value+1),_e=C(()=>de.value.length),ye=C(()=>t.saving===!0),xe=C(()=>t.snapshotSaving===!0),be=C(()=>t.snapshotNotice??null),Ee="opsdash-onboarding-lock";function Me(K){if(typeof document>"u")return;const Q=document.body;Q&&(K?(Q.classList.add(Ee),Q.dataset.opsdashOnboarding="1"):(Q.classList.remove(Ee),delete Q.dataset.opsdashOnboarding))}Be(()=>t.visible,K=>{K&&(ae(),yt(),bt().catch(Q=>{console.error("[opsdash] onboarding history load failed",Q)})),Me(K)},{immediate:!0}),Lt(()=>{typeof document<"u"&&document.addEventListener("click",pa),st().catch(K=>{console.error("[opsdash] deck board load failed",K)}),bt().catch(K=>{console.error("[opsdash] onboarding history load failed",K)})}),Is(()=>{typeof document<"u"&&document.removeEventListener("click",pa),Me(!1)});function ae(K){ot();const Q=K??(t.hasExistingConfig?"existing":"new");g.value=Q,u.value=t.hasExistingConfig?Q:"quick";const pe=Q==="existing",Ce=M.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 De=pe?[...(Ce==null?void 0:Ce.selection)??[]]:[];c.value=Array.from(new Set(De.filter(tt=>t.calendars.some(Xe=>Xe.id===tt)))),x.value=pe?(Ce==null?void 0:Ce.themePreference)??"auto":"auto",$.value=ea(pe?(Ce==null?void 0:Ce.allDayHours)??8:8),_.value=ut(pe?(Ce==null?void 0:Ce.totalHours)??null:null),O.value=xa(pe?(Ce==null?void 0:Ce.trendLookback)??3:3),S.value={},pe&&Object.entries((Ce==null?void 0:Ce.targetsWeek)??{}).forEach(([tt,Xe])=>{t.calendars.some(ao=>ao.id===tt)&&(S.value[tt]=Ha(Xe))}),I.value=la(pe?(Ce==null?void 0:Ce.deckSettings)??To():To()),B.value={...pe?(Ce==null?void 0:Ce.reportingConfig)??$o():$o()},t.hasExistingConfig?(b.value=Q==="new",v.value=""):(b.value=!1,v.value=""),X(),ve.value?f.value.length?_.value=ut(se.value):_.value=null:l.value==="total_only"?_.value=ut(pe?(Ce==null?void 0:Ce.totalHours)??40:40):_.value===null&&pe&&(_.value=ut((Ce==null?void 0:Ce.totalHours)??40)),ct()}function re(K){g.value!==K&&ae(K)}function he(K){if(u.value=K,K==="existing"){g.value!=="existing"&&ae("existing");return}if(K==="new"){g.value!=="new"&&ae("new");return}}function $e(K){b.value=K,K||(v.value="")}function Le(K){v.value=K}function X(){var Q;const K=M.value;if(!ve.value){f.value=[],p.value={},Ve();return}if(g.value==="existing"&&((Q=K==null?void 0:K.categories)!=null&&Q.length))f.value=ia(K.categories),p.value={...K.assignments??{}};else{const pe=Sc(l.value,t.calendars,c.value);l.value==="full_granular"?f.value=j[0].categories.map((Ce,De)=>({id:String(Ce.id||`cat_${De}`),label:Ce.label,targetHours:Ce.targetHours,includeWeekend:Ce.includeWeekend,paceMode:Ce.paceMode,color:Ce.color??null})):f.value=pe.categories.map(Ce=>({...Ce})),p.value={...pe.assignments}}l.value==="full_granular"&&f.value.length===0&&(f.value=j[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(),Ve()}function ie(){if(!ve.value||!f.value.length){p.value={};return}const K=new Set(f.value.map(pe=>pe.id)),Q={};c.value.forEach(pe=>{const Ce=p.value[pe];Q[pe]=K.has(Ce)?Ce:""}),p.value=Q}const Te=C(()=>Math.max(0,Math.min(6,z.value.length))),Ne=C(()=>{const K=Te.value;return K<=0?0:Math.max(1,Math.min(K,O.value))}),Ze=C(()=>{const K=Ne.value;return K<=0?{enabled:!1,available:0,label:"No recent history available"}:{enabled:!0,available:Te.value,label:`Suggestions use the last ${K} ${K===1?"week":"weeks"} of available history.`}}),vt=C(()=>{const K=Ne.value;if(K<=0)return{};const Q={},pe=z.value.slice(0,K);return t.calendars.forEach(Ce=>{const De=pe.map(Xe=>Number(Xe.totals[Ce.id]??0));if(!De.length)return;const tt=De.reduce((Xe,ao)=>Xe+ao,0)/De.length;tt<=0||(Q[Ce.id]=Ye(tt))}),Q}),et=C(()=>{const K={};return f.value.forEach(Q=>{const pe=Ae.value.reduce((Ce,De)=>p.value[De]!==Q.id?Ce:Ce+Number(vt.value[De]??0),0);pe>0&&(K[Q.id]=Ye(pe))}),K}),it=C(()=>Ae.value.reduce((K,Q)=>K+Number(vt.value[Q]??0),0)),Tt=C(()=>ce.value.filter(K=>ve.value&&!p.value[K.id])),dt=C(()=>{const K=Ae.value.filter(tt=>p.value[tt]).length,Q=Ae.value.length-K,pe=se.value,Ce=oe.value,De=Ye(Ce-pe);return{assigned:K,unassigned:Q,calendarTotal:Ce,categoryTotal:pe,delta:De,totalsMatch:Math.abs(De)<.01}}),ht=C(()=>In(l.value,t.calendars,c.value,ve.value?{categories:f.value,assignments:p.value}:void 0)),Ue=C(()=>ge.value.title);function Ve(){var K;if(ve.value){_.value=ut(se.value);return}if(l.value==="total_plus_categories"){const Q=oe.value;_.value=Q>0?ut(Q):_.value;return}_.value===null&&(_.value=g.value==="existing"?ut(((K=M.value)==null?void 0:K.totalHours)??40):null)}function ot(){var K;M.value={strategy:tw(t.initialStrategy)?t.initialStrategy:"total_plus_categories",selection:[...t.initialSelection??[]],themePreference:t.initialThemePreference??"auto",allDayHours:ea(t.initialAllDayHours??8),totalHours:ut(t.initialTotalHours??null),trendLookback:xa(((K=t.initialTargetsConfig)==null?void 0:K.balanceTrendLookback)??3),deckSettings:la(t.initialDeckSettings??To()),reportingConfig:{...t.initialReportingConfig??$o()},dashboardMode:t.initialDashboardMode||"standard",targetsWeek:{...t.initialTargetsWeek??{}},categories:ia(t.initialCategories),assignments:{...t.initialAssignments??{}}}}function ct(){if(!t.startStep)return;const K=de.value.indexOf(t.startStep);K>=0&&(s.value=K)}function Je(K){const Q=de.value.indexOf(K);Q>=0&&(s.value=Q)}function _t(K){switch(K){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 K}}Be(l,()=>{X(),s.value=Math.min(s.value,de.value.length-1)}),Be(de,K=>{s.value>=K.length&&(s.value=Math.max(K.length-1,0))}),Be(()=>t.startStep,ct),Be(ve,()=>{Ve()}),Be(se,K=>{ve.value&&(_.value=ut(K))}),Be(oe,K=>{!ve.value&&l.value==="total_plus_categories"&&K>0&&(_.value=ut(K))}),Be(ue,K=>{K!=="goals"&&yt(),K==="goals"&&ve.value&&f.value.length===0&&(X(),f.value.length||vo(j[0]))}),Be(()=>t.visible,K=>{K||yt()}),Be(c,()=>{const K=new Set(c.value),Q={};Object.entries(S.value).forEach(([pe,Ce])=>{K.has(pe)&&(Q[pe]=Ce)}),S.value=Q,ie()},{deep:!0}),Be(f,()=>{ie()},{deep:!0});function Et(){const K=`cat_${Date.now().toString(36)}_${f.value.length}`;f.value=[...f.value,{id:K,label:`Category ${f.value.length+1}`,targetHours:8,includeWeekend:!1,paceMode:"days_only"}],ie()}function Nt(K){f.value.length<=1||(f.value=f.value.filter(Q=>Q.id!==K),ie())}function Qt(K,Q){f.value=f.value.map(pe=>pe.id===K?{...pe,label:Q}:pe)}function Ft(K,Q){const pe=f.value.findIndex(Xe=>Xe.id===K);if(pe<0)return;const Ce=Q==="up"?pe-1:pe+1;if(Ce<0||Ce>=f.value.length)return;const De=[...f.value],[tt]=De.splice(pe,1);De.splice(Ce,0,tt),f.value=De}function Ut(K,Q){if(K===Q)return;const pe=f.value.findIndex(Xe=>Xe.id===K),Ce=f.value.findIndex(Xe=>Xe.id===Q);if(pe<0||Ce<0)return;const De=[...f.value],[tt]=De.splice(pe,1);De.splice(Ce,0,tt),f.value=De}function lt(K,Q){if(K===Q)return;const pe=c.value.findIndex(Xe=>Xe===K),Ce=c.value.findIndex(Xe=>Xe===Q);if(pe<0||Ce<0)return;const De=[...c.value],[tt]=De.splice(pe,1);De.splice(Ce,0,tt),c.value=De}function sa(K,Q){const pe=c.value.findIndex(Xe=>Xe===K);if(pe<0)return;const Ce=Q==="up"?pe-1:pe+1;if(Ce<0||Ce>=c.value.length)return;const De=[...c.value],[tt]=De.splice(pe,1);De.splice(Ce,0,tt),c.value=De}function vo(K){f.value=K.categories.map((Q,pe)=>({id:String(Q.id||`cat_${pe}`),label:Q.label||`Category ${pe+1}`,targetHours:Number.isFinite(Q.targetHours)?Number(Q.targetHours):0,includeWeekend:!!Q.includeWeekend,paceMode:Q.paceMode==="time_aware"?"time_aware":"days_only",color:xt(Q.color)??null})),p.value={},ie(),Ve()}function Ma(K,Q){const pe=Number(Q),Ce=Number.isFinite(pe)?Math.max(0,Math.min(1e3,pe)):void 0;f.value=f.value.map(De=>De.id===K?{...De,targetHours:Ce??De.targetHours}:De)}function Wa(K,Q){f.value=f.value.map(pe=>pe.id===K?{...pe,includeWeekend:Q}:pe)}function ho(K,Q){p.value={...p.value,[K]:Q}}function ka(K,Q){c.value.includes(Q)&&ho(Q,K)}function eo(K){if(le.value===K){yt();return}le.value=K,zt(()=>{const Q=document.getElementById(`onboarding-color-popover-${K}`);Q==null||Q.focus()})}function yt(){le.value=null}function pa(K){const Q=K.target;Q!=null&&Q.closest("[data-color-popover]")||yt()}function xt(K){if(typeof K!="string")return null;const Q=K.trim();if(!/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(Q))return null;if(Q.length===4){const[,pe,Ce,De]=Q;return`#${pe}${pe}${Ce}${Ce}${De}${De}`.toUpperCase()}return Q.toUpperCase()}function ia(K){return Array.isArray(K)?K.map((Q,pe)=>({id:String((Q==null?void 0:Q.id)??`cat_${pe}`).trim()||`cat_${pe}`,label:String((Q==null?void 0:Q.label)??`Category ${pe+1}`).trim()||`Category ${pe+1}`,targetHours:Number.isFinite(Q==null?void 0:Q.targetHours)?Number(Q.targetHours):0,includeWeekend:!!(Q!=null&&Q.includeWeekend),paceMode:(Q==null?void 0:Q.paceMode)==="time_aware"?"time_aware":"days_only",color:xt(Q==null?void 0:Q.color)??null})):[]}function Aa(K){return xt(K==null?void 0:K.color)??Lo.value}const Lo=C(()=>G.value[0]??"#2563EB");function za(K,Q){f.value=f.value.map(pe=>pe.id===K?{...pe,color:Q}:pe)}function Do(K,Q){const pe=xt(Q);za(K,pe??Lo.value)}function fa(K,Q){const pe=xt(Q);za(K,pe??Lo.value),yt()}function ea(K){if(!Number.isFinite(K))return 8;const Q=Math.max(0,Math.min(24,K));return Math.round(Q*100)/100}function ut(K){if(!Number.isFinite(K))return null;const Q=Math.max(0,Math.min(1e3,Number(K)));return Math.round(Q*100)/100}function xa(K){return Number.isFinite(K)?Math.max(1,Math.min(6,Math.round(K))):3}function la(K){return JSON.parse(JSON.stringify(K))}function Ye(K){return Number.isFinite(K)?Math.round(Math.max(0,K)*2)/2:0}async function st(){if(T.value=!0,m.value="",!(typeof window<"u"&&typeof window.OC<"u")){T.value=!1,y.value=[];return}try{const Q=await Z0();y.value=Q,m.value=""}catch{m.value="Unable to load Deck boards. Open Deck to create one.",y.value=[]}finally{T.value=!1}}async function bt(){var Q,pe;k.value=!0,L.value="";const K=t.calendars.map(Ce=>Ce.id).filter(Boolean);if(!K.length){z.value=[],k.value=!1;return}try{const Ce=[];for(let De=1;De<=6;De+=1){const tt=-De,Xe=await r(o("loadData"),{range:"week",offset:tt,cals:K,include:["data"]}),ao=Array.isArray((pe=(Q=Xe==null?void 0:Xe.charts)==null?void 0:Q.perDaySeries)==null?void 0:pe.series)?Xe.charts.perDaySeries.series:[],or={};ao.forEach(La=>{const Mt=String((La==null?void 0:La.id)??"");if(!Mt)return;const rr=Array.isArray(La==null?void 0:La.data)?La.data:[];or[Mt]=Ye(rr.reduce((as,Vi)=>as+Number(Vi||0),0))}),Object.keys(or).length||(Array.isArray(Xe==null?void 0:Xe.byCal)?Xe.byCal:[]).forEach(Mt=>{const rr=String((Mt==null?void 0:Mt.id)??(Mt==null?void 0:Mt.calendarId)??"");rr&&(or[rr]=Ye(Number((Mt==null?void 0:Mt.hours)??(Mt==null?void 0:Mt.total)??0)))}),Ce.push({offset:tt,totals:or})}z.value=Ce}catch{L.value="Recent activity could not be loaded.",z.value=[]}finally{k.value=!1}}function kt(K){I.value={...I.value,enabled:K}}function er(K){return!(I.value.hiddenBoards||[]).includes(K)}function Li(K,Q){const pe=new Set(I.value.hiddenBoards||[]);Q?pe.delete(K):pe.add(K),I.value={...I.value,hiddenBoards:Array.from(pe).sort((Ce,De)=>Ce-De)}}function Di(K,Q){f.value=f.value.map(pe=>pe.id===K?{...pe,paceMode:Q}:pe)}function Eo(K){if(ve.value)return;const Q=Number(K.value);if(!Number.isFinite(Q)){_.value=null;return}_.value=ut(Q)}function ba(K){const Q=Number(K.value);$.value=ea(Number.isFinite(Q)?Q:$.value)}function Ur(K){const Q=Number(K.value);Number.isFinite(Q)&&(O.value=xa(Q))}function Ei(){it.value<=0||(_.value=ut(Ye(it.value)))}function Ni(K){const Q=Number(vt.value[K]??0);Q<=0||es(K,String(Ye(Q)))}function Zn(K){const Q=Number(et.value[K]??0);Q<=0||Ma(K,String(Ye(Q)))}function Ii(K){B.value={...B.value,enabled:K}}function Oi(K,Q){B.value={...B.value,modes:{...B.value.modes,[K]:{...B.value.modes[K],enabled:Q}}}}function Bi(K){B.value={...B.value,...K}}function Hi(K,Q){B.value={...B.value,modes:{...B.value.modes,[K]:{...B.value.modes[K],delivery:Q}}}}function Pt(K,Q){B.value={...B.value,modes:{...B.value.modes,[K]:{...B.value.modes[K],...Q}}}}function tr(K){const Q=/(birthday|holiday|feiertag|urlaub|contacts?)/i,pe=[4,5,6],Ce={};let De=0;return K.forEach(tt=>{const Xe=F.value.get(tt),ao=(Xe==null?void 0:Xe.displayname)??"";Q.test(ao)||(Ce[tt]=pe[De%pe.length],De+=1)}),Ce}function to(){const K=t.calendars.map(pe=>pe.id).filter(Boolean);c.value=K,l.value="total_plus_categories",d.value="standard",x.value="auto",$.value=8,B.value={...$o(),enabled:!1},O.value=xa(Ne.value||3),I.value=la(To()),y.value.length?(I.value.enabled=!0,I.value.hiddenBoards=[]):(I.value.enabled=!1,I.value.hiddenBoards=[]),f.value=[],p.value={};const Q=Object.fromEntries(Object.entries(vt.value).filter(([pe])=>K.includes(pe)));S.value=Object.keys(Q).length?Q:tr(K),_.value=ut(Object.values(S.value).reduce((pe,Ce)=>pe+Number(Ce||0),0)||40),No()}const Yn=C(()=>s.value>0),ar=C(()=>s.value<de.value.length-1),Xn=C(()=>{if(ue.value==="intro")return!u.value;if(ue.value==="strategy")return!l.value;if(ue.value==="calendars")return c.value.length===0;if(ue.value==="goals"){if(l.value==="total_only")return _.value===null||_.value<=0;if(ve.value&&(!c.value.length||!f.value.length))return!0}return!!(ue.value==="preferences"&&($.value<0||$.value>24)||ue.value==="review"&&b.value&&v.value.trim()==="")});function Fi(){if(ue.value==="intro"&&u.value==="quick"){to();return}ar.value&&!Xn.value&&s.value++}function Pi(){Yn.value&&s.value--}function Wi(){a("skip")}function Gr(){P.value&&a("close")}function No(){const K=In(l.value,t.calendars,c.value,ve.value?{categories:f.value.map(De=>({...De})),assignments:{...p.value}}:void 0),Q=K.targetsConfig;if(Q.allDayHours=ea($.value),Q.balance||(Q.balance={basis:"events",trend:{lookbackWeeks:O.value}}),Q.balance.trend||(Q.balance.trend={lookbackWeeks:O.value}),Q.balance.trend.lookbackWeeks=xa(O.value),ve.value){const De=ut(se.value);De!=null&&(Q.totalHours=De)}else if(l.value==="total_plus_categories"){const De=ut(oe.value);De!=null&&(Q.totalHours=De)}else if(_.value!=null){const De=ut(_.value);De!=null&&(Q.totalHours=De)}const pe={...K.targetsWeek};Object.entries(S.value).forEach(([De,tt])=>{c.value.includes(De)&&(pe[De]=Ha(tt))});const Ce=Object.fromEntries(Object.entries(pe).map(([De,tt])=>[De,Fa(tt)]));Object.keys(pe).length&&(Q.ui.showCalendarCharts=!0),a("complete",{strategy:l.value,selected:[...c.value],targetsConfig:Q,groups:K.groups,targetsWeek:pe,targetsMonth:Ce,themePreference:x.value,deckSettings:la(I.value),reportingConfig:{...B.value},dashboardMode:d.value,widgets:V.value,saveProfile:b.value,profileName:b.value?v.value.trim():""})}function Qn(){const K=In(l.value,t.calendars,c.value,ve.value?{categories:f.value.map(De=>({...De})),assignments:{...p.value}}:void 0),Q=K.targetsConfig;if(Q.allDayHours=ea($.value),Q.balance||(Q.balance={basis:"events",trend:{lookbackWeeks:O.value}}),Q.balance.trend||(Q.balance.trend={lookbackWeeks:O.value}),Q.balance.trend.lookbackWeeks=xa(O.value),ve.value){const De=ut(se.value);De!=null&&(Q.totalHours=De)}else if(l.value==="total_plus_categories"){const De=ut(oe.value);De!=null&&(Q.totalHours=De)}else if(_.value!=null){const De=ut(_.value);De!=null&&(Q.totalHours=De)}const pe={...K.targetsWeek};Object.entries(S.value).forEach(([De,tt])=>{c.value.includes(De)&&(pe[De]=Ha(tt))});const Ce=Object.fromEntries(Object.entries(pe).map(([De,tt])=>[De,Fa(tt)]));return Object.keys(pe).length&&(Q.ui.showCalendarCharts=!0),{targetsConfig:Q,groups:K.groups,targetsWeek:pe,targetsMonth:Ce,selected:[...c.value]}}function zi(){return{completed:!1,version:t.onboardingVersion,strategy:l.value,completed_at:"",dashboardMode:d.value}}function Ri(K){const Q=Qn(),pe=zi();return K==="intro"?{onboarding:pe}:K==="strategy"?{onboarding:pe,targets_config:Q.targetsConfig,groups:Q.groups,targets_week:Q.targetsWeek,targets_month:Q.targetsMonth}:K==="calendars"?{cals:Q.selected}:K==="deck"?{deck_settings:la(I.value)}:K==="goals"?{targets_config:Q.targetsConfig,groups:Q.groups,targets_week:Q.targetsWeek,targets_month:Q.targetsMonth}:K==="preferences"?{targets_config:Q.targetsConfig,theme_preference:x.value,reporting_config:{...B.value}}:K==="dashboard"?{onboarding:pe,dashboardMode:d.value,widgets:V.value}:{cals:Q.selected,targets_config:Q.targetsConfig,groups:Q.groups,targets_week:Q.targetsWeek,targets_month:Q.targetsMonth,theme_preference:x.value,deck_settings:la(I.value),reporting_config:{...B.value},onboarding:pe}}function ji(K,Q){if(Q.checked){c.value.includes(K)||(c.value=[...c.value,K]);return}c.value=c.value.filter(pe=>pe!==K)}function es(K,Q){const pe=Number(Q);if(!Number.isFinite(pe)){const Ce={...S.value};delete Ce[K],S.value=Ce;return}S.value={...S.value,[K]:Ha(pe)}}function ts(K){return Number.isFinite(S.value[K])?S.value[K]:""}return{stepOrder:n,stepIndex:s,selectedStrategy:l,dashboardMode:d,profileMode:g,introChoice:u,saveProfile:b,profileName:v,localSelection:c,categories:f,assignments:p,calendarTargets:S,themePreference:x,allDayHoursInput:$,totalHoursInput:_,trendLookbackInput:O,deckSettingsDraft:I,reportingDraft:B,deckBoards:y,deckBoardsLoading:T,deckBoardsError:m,suggestionsLoading:k,suggestionsError:L,dashboardPresets:Z,deckVisibleBoards:q,deckReviewSummary:Y,reportingSummary:U,openColorId:le,previewTheme:J,systemThemeLabel:R,categoryTotalHours:se,categoryColorPalette:G,categoryPresets:j,strategies:ee,categoriesEnabled:ve,calendarTargetsEnabled:N,isClosable:P,enabledSteps:de,currentStep:ue,stepNumber:fe,totalSteps:_e,saving:ye,snapshotSaving:xe,snapshotNotice:be,selectedCalendars:ce,selectedCalendarIds:Ae,suggestedCalendarTargets:vt,suggestedCategoryTargets:et,availableHistoryLookback:Te,activeHistoryLookback:Ne,historySummary:Ze,unassignedSelectedCalendars:Tt,goalsHealth:dt,draft:ht,strategyTitle:Ue,setProfileMode:re,setIntroChoice:he,setSaveProfile:$e,setProfileName:Le,applyStartStep:ct,goToStep:Je,stepLabel:_t,addCategory:Et,removeCategory:Nt,moveCategory:Ft,reorderCategory:Ut,reorderSelectedCalendar:lt,moveSelectedCalendar:sa,setCategoryLabel:Qt,applyCategoryPreset:vo,setCategoryTarget:Ma,toggleCategoryWeekend:Wa,assignCalendar:ho,addCalendarToCategory:ka,setCalendarTarget:es,getCalendarTarget:ts,toggleColorPopover:eo,closeColorPopover:yt,resolvedColor:Aa,applyColor:fa,onColorInput:Do,setDeckEnabled:kt,isDeckBoardVisible:er,toggleDeckBoard:Li,setCategoryPaceMode:Di,onTotalHoursChange:Eo,onAllDayHoursChange:ba,onTrendLookbackChange:Ur,applySuggestedTotalTarget:Ei,applySuggestedCalendarTarget:Ni,applySuggestedCategoryTarget:Zn,setReportingEnabled:Ii,setReportingModeEnabled:Oi,setReportingModeDelivery:Hi,updateReporting:Bi,updateReportingMode:Pt,canGoBack:Yn,canGoNext:ar,nextDisabled:Xn,nextStep:Fi,prevStep:Pi,handleSkip:Wi,handleClose:Gr,emitComplete:No,runQuickSetup:to,toggleCalendar:ji,resetWizard:ae,buildStepPayload:Ri}}const ow={class:"onboarding-header"},rw={class:"onboarding-actions"},nw=["disabled"],sw={class:"onboarding-step-nav","aria-label":"Onboarding steps"},iw=["disabled","onClick"],lw={class:"step-arrow__inner"},dw={class:"step-arrow__main"},cw={class:"step-arrow__label"},uw={class:"step-arrow__icon","aria-hidden":"true"},gw={class:"step-arrow__action"},pw={class:"onboarding-body"},fw={key:0,class:"onboarding-step"},bw={key:1,class:"onboarding-step"},vw={key:2,class:"onboarding-step"},hw={key:3,class:"onboarding-step"},mw={key:4,class:"onboarding-step"},yw={key:5,class:"onboarding-step"},ww={key:6,class:"onboarding-step"},kw={key:7,class:"onboarding-step"},xw={class:"onboarding-footer"},_w=Pe({__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:b,canGoBack:v,canGoNext:c,nextDisabled:f,prevStep:p,nextStep:S,emitComplete:x,profileMode:$,introChoice:_,saveProfile:O,profileName:I,themePreference:B,systemThemeLabel:y,previewTheme:T,totalHoursInput:m,categoryTotalHours:k,categoriesEnabled:L,calendarTargetsEnabled:z,onTotalHoursChange:M,applySuggestedTotalTarget:Z,allDayHoursInput:j,onAllDayHoursChange:q,trendLookbackInput:Y,onTrendLookbackChange:U,deckSettingsDraft:le,setDeckEnabled:J,deckBoards:R,deckBoardsLoading:D,deckBoardsError:F,isDeckBoardVisible:ce,toggleDeckBoard:Ae,reportingDraft:se,setReportingEnabled:oe,setReportingModeEnabled:G,setReportingModeDelivery:ee,updateReporting:ge,updateReportingMode:ve,dashboardMode:N,dashboardPresets:P,strategies:V,selectedStrategy:de,localSelection:ue,toggleCalendar:fe,categories:_e,selectedCalendars:ye,suggestedCalendarTargets:xe,suggestedCategoryTargets:be,applySuggestedCalendarTarget:Ee,applySuggestedCategoryTarget:Me,suggestionsLoading:ae,suggestionsError:re,activeHistoryLookback:he,historySummary:$e,unassignedSelectedCalendars:Le,goalsHealth:X,assignments:ie,addCategory:Te,removeCategory:Ne,moveCategory:Ze,reorderCategory:vt,reorderSelectedCalendar:et,moveSelectedCalendar:it,setCategoryLabel:Tt,setCategoryTarget:dt,setCategoryPaceMode:ht,toggleCategoryWeekend:Ue,assignCalendar:Ve,setCalendarTarget:ot,getCalendarTarget:ct,categoryPresets:Je,resolvedColor:_t,onColorInput:Et,draft:Nt,strategyTitle:Qt,applyCategoryPreset:Ft,deckReviewSummary:Ut,deckVisibleBoards:lt,reportingSummary:sa,setIntroChoice:vo,setProfileMode:Ma,setSaveProfile:Wa,setProfileName:ho,buildStepPayload:ka}=aw({props:a,emit:o}),eo=ne(!1),yt=C(()=>d.value||eo.value);async function pa(Ye){if(!a.persistStep)return o("save-step",Ye),!0;try{return eo.value=!0,await a.persistStep(Ye),!0}catch{return!1}finally{eo.value=!1}}async function xt(){return yt.value?!1:pa(ka(s.value))}async function ia(Ye,st){yt.value||la(st)||Ye===s.value||!await xt()||u(Ye)}async function Aa(){if(yt.value||f.value)return;if(s.value==="intro"&&_.value==="quick"){S();return}await xt()&&S()}async function Lo(){yt.value||!v.value||!await xt()||p()}async function za(){yt.value||!l.value||!await xt()||b()}function Do(){const Ye=ka("review");return{selected:[...Ye.cals??[]],groups:{...Ye.groups??{}},targetsConfig:Ye.targets_config??{},reportingConfig:Ye.reporting_config??{...se.value}}}async function fa(){a.sendTestReport&&await a.sendTestReport(Do())}async function ea(){a.sendCheckpointReport&&await a.sendCheckpointReport(Do())}function ut(Ye,st){return Ye===s.value?!1:a.hasExistingConfig?!0:st<r.value}function xa(Ye,st){return Ye===s.value||a.hasExistingConfig?!1:st>r.value}function la(Ye){return a.hasExistingConfig?!1:Ye>r.value}return(Ye,st)=>(h(),nt(ai,{visible:Ye.visible,theme:A(T),"close-on-backdrop":A(l),"close-on-esc":A(l),onClose:za},{default:mt(()=>[i("header",ow,[st[0]||(st[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",rw,[A(l)?(h(),w("button",{key:0,type:"button",class:"close-btn",disabled:yt.value,onClick:za,"aria-label":"Close onboarding"}," × ",8,nw)):te("",!0)])]),i("nav",sw,[(h(!0),w(ke,null,Ie(A(n),(bt,kt)=>(h(),w("button",{key:bt,type:"button",class:we(["step-arrow",{done:ut(bt,kt),current:bt===A(s),upcoming:xa(bt,kt),locked:la(kt)}]),disabled:yt.value,onClick:er=>ia(bt,kt)},[i("span",lw,[i("span",dw,[i("span",cw,E(A(g)(bt)),1),i("span",uw,E(bt===A(s)?"•":ut(bt,kt)?"✓":"•"),1)]),i("span",gw,E(bt===A(s)?"Open":ut(bt,kt)?"Edit":""),1)])],10,iw))),128))]),i("main",pw,[A(s)==="intro"?(h(),w("section",fw,[We(Jb,{"has-existing-config":a.hasExistingConfig??!1,"snapshot-saving":a.snapshotSaving??!1,saving:yt.value,"snapshot-notice":a.snapshotNotice??null,"intro-choice":A(_),"profile-mode":A($),"set-intro-choice":A(vo),"set-profile-mode":A(Ma),"on-continue":Aa,"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"])])):A(s)==="strategy"?(h(),w("section",bw,[We(Sh,{strategies:A(V),"selected-strategy":A(de),"set-selected-strategy":bt=>de.value=bt,"on-continue":Aa},null,8,["strategies","selected-strategy","set-selected-strategy"])])):A(s)==="calendars"?(h(),w("section",vw,[We(Bh,{calendars:Ye.calendars,"local-selection":A(ue),"toggle-calendar":A(fe)},null,8,["calendars","local-selection","toggle-calendar"])])):A(s)==="deck"?(h(),w("section",hw,[We(ph,{"deck-settings-draft":A(le),"set-deck-enabled":A(J),"deck-boards":A(R),"deck-boards-loading":A(D),"deck-boards-error":A(F),"is-deck-board-visible":A(ce),"toggle-deck-board":A(Ae)},null,8,["deck-settings-draft","set-deck-enabled","deck-boards","deck-boards-loading","deck-boards-error","is-deck-board-visible","toggle-deck-board"])])):A(s)==="goals"?(h(),w("section",mw,[We(fc,{"selected-strategy":A(de),"selected-calendars":A(ye),categories:A(_e),assignments:A(ie),"category-presets":A(Je),"total-hours-input":A(m),"on-total-hours-change":A(M),"on-apply-total-suggestion":A(Z),"trend-lookback-input":A(Y),"active-history-lookback":A(he),"history-summary":A($e),"suggestions-loading":A(ae),"suggestions-error":A(re),"on-trend-lookback-change":A(U),"suggested-calendar-targets":A(xe),"suggested-category-targets":A(be),"on-apply-calendar-suggestion":A(Ee),"on-apply-category-suggestion":A(Me),"add-category":A(Te),"remove-category":A(Ne),"move-category":A(Ze),"reorder-category":A(vt),"reorder-selected-calendar":A(et),"move-selected-calendar":A(it),"set-category-label":A(Tt),"apply-category-preset":A(Ft),"set-category-target":A(dt),"set-category-pace-mode":A(ht),"toggle-category-weekend":A(Ue),"assign-calendar":A(Ve),"set-calendar-target":A(ot),"get-calendar-target":A(ct),"unassigned-selected-calendars":A(Le),"goals-health":A(X),"resolved-color":A(_t),"on-color-input":A(Et)},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"])])):A(s)==="preferences"?(h(),w("section",yw,[We(Yv,{"theme-preference":A(B),"system-theme-label":A(y),"preview-theme":A(T),"set-theme-preference":bt=>B.value=bt,"total-hours-input":A(m),"category-total-hours":A(k),"categories-enabled":A(L),"on-total-hours-change":A(M),"all-day-hours-input":A(j),"on-all-day-hours-change":A(q),"trend-lookback-input":A(Y),"on-trend-lookback-change":A(U),"reporting-draft":A(se),"set-reporting-enabled":A(oe),"set-reporting-mode-enabled":A(G),"set-reporting-mode-delivery":A(ee),"update-reporting":A(ge),"update-reporting-mode":A(ve),"send-test-report":fa,"send-checkpoint-report":ea},null,8,["theme-preference","system-theme-label","preview-theme","set-theme-preference","total-hours-input","category-total-hours","categories-enabled","on-total-hours-change","all-day-hours-input","on-all-day-hours-change","trend-lookback-input","on-trend-lookback-change","reporting-draft","set-reporting-enabled","set-reporting-mode-enabled","set-reporting-mode-delivery","update-reporting","update-reporting-mode"])])):A(s)==="dashboard"?(h(),w("section",ww,[We(kh,{"dashboard-mode":A(N),"set-dashboard-mode":bt=>N.value=bt,"on-continue":Aa,"dashboard-presets":A(P)},null,8,["dashboard-mode","set-dashboard-mode","dashboard-presets"])])):A(s)==="review"?(h(),w("section",kw,[We(Ky,{"strategy-title":A(Qt),"categories-enabled":A(L),"calendar-targets-enabled":A(z),"selected-calendars":A(ye),"draft-targets-categories":A(Nt).targetsConfig.categories,"draft-total-hours":A(Nt).targetsConfig.totalHours,"total-hours-input":A(m),"category-total-hours":A(k),"deck-review-summary":A(Ut),"deck-enabled":A(le).enabled,"deck-visible-boards":A(lt),"reporting-enabled":A(se).enabled,"reporting-summary":A(sa),"theme-preference":A(B),"dashboard-mode":A(N),"save-profile":A(O),"profile-name":A(I),"show-save-profile":a.hasExistingConfig??!1,"set-save-profile":A(Wa),"set-profile-name":A(ho),"go-to-step":A(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"])])):te("",!0)]),i("footer",xw,[A(s)==="intro"?(h(),w(ke,{key:0},[st[2]||(st[2]=i("div",{class:"onboarding-footer-spacer"},null,-1)),We(A(oa),{type:"primary",disabled:yt.value||A(f),onClick:Aa},{default:mt(()=>[...st[1]||(st[1]=[Re("Continue",-1)])]),_:1},8,["disabled"])],64)):(h(),w(ke,{key:1},[A(v)?(h(),nt(A(oa),{key:0,type:"tertiary",disabled:yt.value,onClick:Lo},{default:mt(()=>[...st[3]||(st[3]=[Re("Back",-1)])]),_:1},8,["disabled"])):te("",!0),A(c)?(h(),nt(A(oa),{key:1,type:"primary",disabled:A(f)||yt.value,onClick:Aa},{default:mt(()=>[...st[4]||(st[4]=[Re("Continue",-1)])]),_:1},8,["disabled"])):(h(),nt(A(oa),{key:2,type:"primary",disabled:yt.value||A(f),onClick:A(x)},{default:mt(()=>[...st[5]||(st[5]=[Re(" Start dashboard ",-1)])]),_:1},8,["disabled","onClick"]))],64))])]),_:1},8,["visible","theme","close-on-backdrop","close-on-esc"]))}}),Cw=["id","role","aria-labelledby"],Sw={key:0,class:"sb-title"},$w={key:1,class:"sb-description"},Tw={class:"setup-actions"},Mw={class:"preset-form"},Aw=["disabled"],Lw={key:0,class:"preset-error"},Dw={key:2,class:"preset-warnings"},Ew={class:"preset-header"},Nw={key:3,class:"preset-empty"},Iw={key:4,class:"preset-list"},Ow={class:"preset-meta"},Bw={class:"preset-name"},Hw={class:"preset-info"},Fw={key:0},Pw={class:"preset-actions"},Ww=at(Pe({__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=ne(""),n=ne(null),s=ne(null),l=C(()=>a.showHeader!==!1),d=C(()=>a.asPanel===!1?void 0:"opsdash-sidebar-pane-profiles"),g=C(()=>a.asPanel===!1?void 0:"tabpanel"),u=C(()=>a.asPanel===!1?void 0:"opsdash-sidebar-tab-profiles");function b(){const x=r.value.trim();if(!x){n.value="Enter a profile name";return}n.value=null,o("save",x),r.value=""}function v(x){o("load",x)}function c(x){window.confirm(`Delete profile "${x}"?`)&&o("delete",x)}function f(){var x;(x=s.value)==null||x.click()}function p(x){var O;const $=x.target,_=(O=$==null?void 0:$.files)==null?void 0:O[0];_&&o("import-config",_),$&&($.value="")}function S(x){if(!x)return"";const $=new Date(x);if(Number.isNaN($.getTime()))return x;const O=new Date().getTime()-$.getTime(),I=Math.round(O/6e4);if(I<1)return"just now";if(I<60)return`${I} min ago`;const B=Math.round(I/60);if(B<24)return`${B}h ago`;const y=Math.round(B/24);if(y<7)return`${y}d ago`;const T=Math.round(y/7);return T<5?`${T}w ago`:An(x,{year:"numeric",month:"2-digit",day:"2-digit"})||x}return(x,$)=>(h(),w("div",{id:d.value,class:"sb-pane",role:g.value,"aria-labelledby":u.value},[l.value?(h(),w("div",Sw,"Profiles")):te("",!0),l.value?(h(),w("p",$w," Export/import full configs or save/load named profiles (calendars, groups, targets, widgets, settings). ")):te("",!0),i("div",Tw,[We(A(oa),{type:"tertiary",size:"small",onClick:$[0]||($[0]=_=>o("export-config"))},{default:mt(()=>[...$[4]||($[4]=[Re(" Export configuration ",-1)])]),_:1}),We(A(oa),{type:"tertiary",size:"small",onClick:f},{default:mt(()=>[...$[5]||($[5]=[Re(" 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",Mw,[$[6]||($[6]=i("label",{class:"preset-label",for:"preset-name"},"Profile name",-1)),Ro(i("input",{id:"preset-name","onUpdate:modelValue":$[1]||($[1]=_=>r.value=_),type:"text",placeholder:"e.g. Focus week",disabled:x.isSaving,onKeyup:$a(b,["enter"])},null,40,Aw),[[Zs,r.value]]),n.value?(h(),w("div",Lw,E(n.value),1)):te("",!0),We(A(oa),{class:"preset-save",type:"primary",disabled:x.isSaving||!r.value.trim(),onClick:b},{default:mt(()=>[Re(E(x.isSaving?"Saving…":"Save current configuration"),1)]),_:1},8,["disabled"])]),x.warnings.length?(h(),w("div",Dw,[$[8]||($[8]=i("div",{class:"warnings-title"},"Warnings",-1)),i("ul",null,[(h(!0),w(ke,null,Ie(x.warnings,(_,O)=>(h(),w("li",{key:O},E(_),1))),128))]),We(A(oa),{type:"tertiary",class:"preset-clear",onClick:$[2]||($[2]=_=>o("clear-warnings"))},{default:mt(()=>[...$[7]||($[7]=[Re(" Clear warnings ",-1)])]),_:1})])):te("",!0),i("div",Ew,[$[9]||($[9]=i("h3",null,"Saved profiles",-1)),We(A(oa),{type:"tertiary",disabled:x.isLoading,onClick:$[3]||($[3]=_=>o("refresh"))},{default:mt(()=>[Re(E(x.isLoading?"Refreshing…":"Refresh list"),1)]),_:1},8,["disabled"])]),!x.presets.length&&!x.isLoading?(h(),w("div",Nw," No profiles yet. Save one above to get started. ")):(h(),w("ul",Iw,[(h(!0),w(ke,null,Ie(x.presets,_=>(h(),w("li",{key:_.name,class:"preset-item"},[i("div",Ow,[i("div",Bw,E(_.name),1),i("div",Hw,[i("span",null,E(_.selectedCount)+" calendars",1),i("span",null,E(_.calendarCount)+" groups",1),_.updatedAt?(h(),w("span",Fw,"Updated "+E(S(_.updatedAt)),1)):te("",!0)])]),i("div",Pw,[We(A(oa),{type:"primary",disabled:x.isApplying,onClick:O=>v(_.name)},{default:mt(()=>[Re(E(x.isApplying?"Applying…":"Load"),1)]),_:2},1032,["disabled","onClick"]),We(A(oa),{type:"tertiary",disabled:x.isApplying,onClick:O=>c(_.name)},{default:mt(()=>[...$[10]||($[10]=[Re(" Delete ",-1)])]),_:2},1032,["disabled","onClick"])])]))),128))]))],8,Cw))}}),[["__scopeId","data-v-b978e1df"]]),zw={class:"onboarding-header profiles-overlay__header"},Rw={class:"onboarding-actions"},jw={class:"onboarding-body profiles-overlay__body"},Vw=at(Pe({__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(),nt(ai,{visible:o.visible,theme:o.theme,"panel-class":"profiles-overlay","aria-labelledby":"profiles-overlay-title",onClose:r[8]||(r[8]=n=>a("close"))},{default:mt(()=>[i("header",zw,[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",Rw,[i("button",{type:"button",class:"close-btn","aria-label":"Close profiles",onClick:r[0]||(r[0]=n=>a("close"))}," x ")])]),i("main",jw,[We(Ww,{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"]]),Uw={key:0,class:"onboarding-overlay shortcuts-overlay",role:"dialog","aria-modal":"true","aria-labelledby":"opsdash-shortcuts-title"},Gw=["onKeydown"],qw={class:"onboarding-body shortcuts-body"},Kw={class:"shortcut-label"},Jw={key:0},Zw={class:"shortcut-combo","aria-hidden":"true"},Yw={class:"shortcuts-footer"},Xw=at(Pe({__name:"KeyboardShortcutsModal",props:{visible:{type:Boolean},groups:{},theme:{}},emits:["close"],setup(e,{emit:t}){const a=e,o=t,r=ne(null),n=C(()=>a.theme==="dark"?"dark":"light");function s(){o("close")}return Be(()=>a.visible,l=>{l&&zt(()=>{var d;(d=r.value)==null||d.focus()}).catch(()=>{})}),(l,d)=>(h(),nt(Ud,{name:"onboarding-fade"},{default:mt(()=>[l.visible?(h(),w("div",Uw,[i("div",{class:"onboarding-backdrop",onClick:s}),i("div",{ref_key:"panelRef",ref:r,class:we(["onboarding-panel shortcuts-panel",`theme-${n.value}`]),tabindex:"-1",onKeydown:$a(Ke(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",qw,[(h(!0),w(ke,null,Ie(l.groups,g=>(h(),w("section",{key:g.id,class:"shortcuts-group"},[i("h3",null,E(g.title),1),i("ul",null,[(h(!0),w(ke,null,Ie(g.items,u=>(h(),w("li",{key:u.id},[i("span",Kw,[Re(E(u.label)+" ",1),u.description?(h(),w("small",Jw,E(u.description),1)):te("",!0)]),i("span",Zw,[(h(!0),w(ke,null,Ie(u.combo,(b,v)=>(h(),w("kbd",{key:v},E(b),1))),128))])]))),128))])]))),128))]),i("footer",Yw,[We(A(oa),{type:"primary",size:"small",onClick:s},{default:mt(()=>[...d[1]||(d[1]=[Re(" Close ",-1)])]),_:1})])],42,Gw)])):te("",!0)]),_:1}))}}),[["__scopeId","data-v-a4c42127"]]),Qw=["draggable","aria-busy","onClick","onDragstart"],ek={key:0,class:"widget-loading","aria-live":"polite"},tk=24,Tu=12,ak=at(Pe({__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=ne(null),n=ne(null),s=ne(null),l=C(()=>a.widgetTypeList||[]),d=new Map;function g(L){return!Number.isFinite(L)||L<=0?1:Math.max(1,Math.ceil((L+Tu)/(tk+Tu)))}function u(L){const z=L.getBoundingClientRect(),M=g(z.height);L.style.gridRowEnd=`span ${M}`}function b(L,z,M){const Z=d.get(L);if(Z&&(Z.disconnect(),d.delete(L)),!z)return;if(M!=="auto"){z.style.gridRowEnd="";return}if(u(z),typeof ResizeObserver>"u")return;const j=new ResizeObserver(()=>u(z));j.observe(z),d.set(L,j)}Ct(()=>{d.forEach(L=>L.disconnect()),d.clear()});const v=C(()=>{const L=[];let z={items:[],col:1,remaining:4};const M=()=>{z.items.length&&L.push({items:z.items}),z={items:[],col:1,remaining:4}};return a.ordered.forEach(Z=>{const j=f(Z.layout.width);j>z.remaining&&M();const q=z.col;z.items.push({...Z,span:j,start:q}),z.col+=j,z.remaining-=j}),M(),L});function c(L){switch(L){case"quarter":return"w-quarter";case"half":return"w-half";default:return"w-full"}}function f(L){return L==="quarter"?1:L==="half"?2:4}function p(L,z){if(z==="auto")return"h-auto";switch(L){case"s":return"h-s";case"l":return"h-l";case"xl":return"h-xl";default:return"h-m"}}function S(L){const z=(L==null?void 0:L.scale)||(L==null?void 0:L.textSize)||"md";return z==="sm"?"scale-sm":z==="lg"?"scale-lg":z==="xl"?"scale-xl":"scale-md"}function x(L){const z=(L==null?void 0:L.scale)||(L==null?void 0:L.textSize)||"md",M=z==="sm"?.85:z==="lg"?1.35:z==="xl"?1.6:1.1,Z=L!=null&&L.dense?.72:1,j=M*Z,q=M*Z,Y=18*q;return{"--widget-scale":String(M),"--widget-space":String(j),"--widget-density":String(Z),"--widget-text-scale":String(q),"--widget-title-size":`${Y}px`}}function $(L){const z=r.value;if(!z)return{row:0,col:1};const M=z.getBoundingClientRect(),Z=12,q=(M.width-Z*3)/4,Y=Math.max(0,Math.min(M.width,L.clientX-M.left)),U=Math.min(3,Math.max(0,Math.floor(Y/(q+Z))))+1,le=Math.max(0,Math.min(M.height+400,L.clientY-M.top)),J=Number.parseFloat(getComputedStyle(z).getPropertyValue("--grid-row"))||24;return{row:Math.max(0,Math.floor(le/(J+Z))),col:U}}function _(L,z){var U,le,J,R;const M=v.value,Z=M[L]||M[M.length-1]||{items:[]},j=[...Z.items||[]].filter(D=>D.start<z).sort((D,F)=>D.start-F.start).pop(),q=[...Z.items||[]].filter(D=>D.start>=z).sort((D,F)=>D.start-F.start)[0];if(j&&q)return(j.layout.order+q.layout.order)/2;if(j)return(j.layout.order||0)+5;if(q)return(q.layout.order||0)-5;const Y=M[L-1]||M[M.length-1];return Y&&Y.items.length?(Y.items[Y.items.length-1].layout.order||0)+10:((((R=(J=(le=(U=M[0])==null?void 0:U.items)==null?void 0:le[0])==null?void 0:J.layout)==null?void 0:R.order)??0)||0)-10}function O(L){if(!a.editable||!l.value.length)return;const{row:z,col:M}=$(L),Z=_(z,M);o("select-cell",Z)}function I(L){a.editable&&(L.target.closest(".layout-item")||O(L))}function B(L){a.editable&&(L.target.closest(".layout-item")||O(L))}function y(L){if(!a.editable||!n.value)return;const{row:z,col:M}=$(L);s.value=_(z,M)}function T(){if(!a.editable||!n.value)return;const L=n.value,z=s.value??void 0;n.value=null,s.value=null,o("reorder",L,z)}function m(L){a.editable&&(n.value=L,s.value=null)}function k(){n.value=null,s.value=null}return(L,z)=>(h(),w("div",{ref_key:"gridEl",ref:r,class:we(["layout-grid",{"show-guides":L.editable}]),onClick:I,onContextmenu:Ke(B,["prevent"]),onDragover:Ke(y,["prevent"]),onDrop:Ke(T,["prevent"])},[(h(!0),w(ke,null,Ie(L.ordered,M=>(h(),w("div",{key:M.id,ref_for:!0,ref:Z=>b(M.id,Z,M.heightMode),class:we(["layout-item",[c(M.layout.width),p(M.layout.height,M.heightMode),S(M.options),{"is-editable":L.editable,"is-selected":L.editable&&L.selectedId===M.id,"is-dragging":L.editable&&n.value===M.id,"is-loading":!!M.loading}]]),style:He(x(M.options)),draggable:L.editable,"aria-busy":M.loading?"true":"false",onClick:Ke(Z=>o("select",M.id),["stop"]),onDragstart:Z=>m(M.id),onDragend:k},[M.loading?(h(),w("div",ek,[...z[0]||(z[0]=[i("span",{class:"widget-loading__spinner","aria-hidden":"true"},null,-1),i("span",{class:"widget-loading__label"},"Loading…",-1)])])):te("",!0),(h(),nt(ad(M.component),Id({ref_for:!0},M.props),null,16))],46,Qw))),128))],34))}}),[["__scopeId","data-v-178d9739"]]),ok={key:0,class:"advanced-overlay onboarding-overlay",role:"dialog","aria-modal":"false","aria-label":"Targets configuration"},rk={class:"advanced-panel__body advanced-panel__body--goals onboarding-body"},nk={class:"onboarding-step"},sk=at(Pe({__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=ne(null),l=ne("total_only"),d=ne(null),g=ne(3),u=ne([]),b=ne({}),v=ne({}),c=ne([]),f=Object.freeze({}),p=Object.freeze({enabled:!1,available:0,label:"No lookback suggestions in widget-local mode."}),S=C(()=>Array.isArray(a.contextCalendars)?a.contextCalendars:[]),x=C(()=>{const ae=new Set(S.value.map(re=>re.id));return c.value.filter(re=>ae.has(re))}),$=C(()=>new Map(S.value.map(ae=>[ae.id,ae]))),_=C(()=>x.value.map(ae=>$.value.get(ae)).filter(ae=>!!ae)),O=C(()=>u.value.reduce((ae,re)=>ae+(Number(re.targetHours)||0),0)),I=C(()=>_.value.reduce((ae,re)=>ae+(Number(ee(re.id))||0),0)),B=C(()=>_.value.filter(ae=>!b.value[ae.id])),y=C(()=>{const ae=_.value.filter(X=>b.value[X.id]).length,re=Math.max(0,_.value.length-ae),he=be(I.value),$e=be(O.value),Le=be($e-he);return{assigned:ae,unassigned:re,calendarTotal:he,categoryTotal:$e,delta:Le,totalsMatch:Math.abs(Le)<=.01}});Be(()=>[a.widgetId,a.strategy,JSON.stringify(a.contextTargetsConfig||{}),JSON.stringify(a.contextTargetsWeek||{}),JSON.stringify(a.contextGroupsById||{}),JSON.stringify(a.contextSelected||[]),JSON.stringify(a.contextCalendars||[])],()=>{T()},{immediate:!0});function T(){var Ne,Ze;if(!a.widgetId){s.value=null;return}const ae=a.widgets.find(vt=>vt.id===a.widgetId),re=(ae==null?void 0:ae.options)||{},he=re.useLocalConfig===!0,$e=Zt(he&&re.localConfig?re.localConfig:a.contextTargetsConfig);s.value=Pa($e),l.value=_e($e,a.strategy),d.value=ye($e.totalHours),g.value=xe(((Ze=(Ne=$e==null?void 0:$e.balance)==null?void 0:Ne.trend)==null?void 0:Ze.lookbackWeeks)??3),u.value=de($e.categories);const Le=V(a.contextSelected,S.value);c.value=Le;const X=P(he?re.localTargetsWeek:a.contextTargetsWeek),ie={};Le.forEach(vt=>{Number.isFinite(X[vt])&&(ie[vt]=X[vt])}),v.value=ie;const Te=N(he?re.localGroupsById:a.contextGroupsById);b.value=l.value==="full_granular"?ue(Le,u.value,Te):{}}function m(){o("close")}function k(){if(!a.widgetId||!s.value)return;const ae=In(l.value,S.value,x.value,l.value==="full_granular"?{categories:u.value.map($e=>({...$e})),assignments:{...b.value}}:void 0),re=fe(s.value,ae.targetsConfig);if(re.balance.trend.lookbackWeeks=g.value,l.value==="total_only"){const $e=ye(d.value);$e!=null&&(re.totalHours=$e)}else l.value==="total_plus_categories"?re.totalHours=be(I.value||re.totalHours):re.totalHours=be(O.value||re.totalHours);const he={};x.value.forEach($e=>{const Le=Number(v.value[$e]);Number.isFinite(Le)&&(he[$e]=Ha(Le))}),o("save",a.widgetId,{localConfig:re,localTargetsWeek:he,localGroupsById:ae.groups})}function L(){a.widgetId&&o("use-global",a.widgetId)}function z(){}function M(){if(typeof document>"u")return"theme-light";const ae=document.querySelector("#opsdash");return ae!=null&&ae.classList.contains("opsdash-theme-dark")?"theme-dark":"theme-light"}function Z(ae){const re=Number(ae.value);d.value=Number.isFinite(re)?ye(re):null}function j(ae){const re=Number(ae.value);Number.isFinite(re)&&(g.value=xe(re))}function q(){const ae=u.value.length+1,re=r[(ae-1)%r.length]||"#2563EB";u.value=[...u.value,{id:`cat_${Date.now().toString(36)}_${Math.random().toString(36).slice(2,5)}`,label:`Category ${ae}`,targetHours:0,includeWeekend:!0,paceMode:"days_only",color:re}]}function Y(ae){u.value=u.value.filter(he=>he.id!==ae);const re={...b.value};Object.keys(re).forEach(he=>{re[he]===ae&&(re[he]="")}),b.value=re}function U(ae,re){const he=u.value.findIndex(ie=>ie.id===ae);if(he<0)return;const $e=re==="up"?he-1:he+1;if($e<0||$e>=u.value.length)return;const Le=[...u.value],[X]=Le.splice(he,1);Le.splice($e,0,X),u.value=Le}function le(ae,re){u.value=Me(u.value,ae,re)}function J(ae,re){c.value=Me(c.value,ae,re)}function R(ae,re){const he=c.value.findIndex(ie=>ie===ae);if(he<0)return;const $e=re==="up"?he-1:he+1;if($e<0||$e>=c.value.length)return;const Le=[...c.value],[X]=Le.splice(he,1);Le.splice($e,0,X),c.value=Le}function D(ae,re){u.value=u.value.map(he=>he.id===ae?{...he,label:re.trim()||he.label}:he)}function F(ae){u.value=ae.categories.map(he=>({...he}));const re={};x.value.forEach((he,$e)=>{const Le=ae.categories[$e%ae.categories.length];re[he]=(Le==null?void 0:Le.id)||""}),b.value=re}function ce(ae,re){const he=Number(re);u.value=u.value.map($e=>$e.id===ae?{...$e,targetHours:Number.isFinite(he)?Ha(he):0}:$e)}function Ae(ae,re){u.value=u.value.map(he=>he.id===ae?{...he,paceMode:re==="time_aware"?"time_aware":"days_only"}:he)}function se(ae,re){u.value=u.value.map(he=>he.id===ae?{...he,includeWeekend:re}:he)}function oe(ae,re){b.value={...b.value,[ae]:re}}function G(ae,re){const he=Number(re);if(!Number.isFinite(he)){const $e={...v.value};delete $e[ae],v.value=$e;return}v.value={...v.value,[ae]:Ha(he)}}function ee(ae){return Number.isFinite(v.value[ae])?v.value[ae]:""}function ge(ae){return Ee(ae==null?void 0:ae.color)??r[0]}function ve(ae,re){const he=Ee(re);u.value=u.value.map($e=>$e.id===ae?{...$e,color:he??ge($e)}:$e)}function N(ae){if(!ae||typeof ae!="object"||Array.isArray(ae))return{};const re={};return Object.entries(ae).forEach(([he,$e])=>{const Le=String(he||"").trim();Le&&(re[Le]=Math.max(0,Math.min(9,Math.trunc(Number($e)||0))))}),re}function P(ae){if(!ae||typeof ae!="object"||Array.isArray(ae))return{};const re={};return Object.entries(ae).forEach(([he,$e])=>{const Le=String(he||"").trim(),X=Number($e);!Le||!Number.isFinite(X)||(re[Le]=Ha(X))}),re}function V(ae,re){const he=new Set(re.map($e=>$e.id));return Array.isArray(ae)?ae.map($e=>String($e||"")).filter($e=>he.has($e)):[]}function de(ae){return Array.isArray(ae)?ae.map((re,he)=>({id:String((re==null?void 0:re.id)??`cat_${he}`).trim()||`cat_${he}`,label:String((re==null?void 0:re.label)??`Category ${he+1}`).trim()||`Category ${he+1}`,targetHours:Number.isFinite(re==null?void 0:re.targetHours)?Number(re.targetHours):0,includeWeekend:(re==null?void 0:re.includeWeekend)!==!1,paceMode:(re==null?void 0:re.paceMode)==="time_aware"?"time_aware":"days_only",color:Ee(re==null?void 0:re.color)??null})):[]}function ue(ae,re,he){const $e=new Map;re.forEach((X,ie)=>{const Te=ie+1;$e.set(Te,X.id)});const Le={};return ae.forEach(X=>{const ie=Math.max(0,Math.min(9,Math.trunc(Number(he[X])||0)));Le[X]=$e.get(ie)||""}),Le}function fe(ae,re){var $e,Le;const he=Pa(ae);return he.totalHours=re.totalHours,he.categories=re.categories,he.ui.showCategoryBlocks=re.ui.showCategoryBlocks,he.ui.showCategoryCharts=re.ui.showCategoryCharts,he.ui.showCalendarCharts=re.ui.showCalendarCharts,he.balance.categories=[...(($e=re.balance)==null?void 0:$e.categories)||[]],he.balance.useCategoryMapping=((Le=re.balance)==null?void 0:Le.useCategoryMapping)===!0,he}function _e(ae,re){return re==="full_granular"||re==="total_plus_categories"||re==="total_only"?re:Array.isArray(ae==null?void 0:ae.categories)&&ae.categories.length>0?"full_granular":"total_plus_categories"}function ye(ae){if(!Number.isFinite(ae??NaN))return null;const re=Math.max(0,Math.min(1e3,Number(ae)));return Math.round(re*100)/100}function xe(ae){return Number.isFinite(ae)?Math.max(1,Math.min(6,Math.round(ae))):3}function be(ae){return Number.isFinite(ae)?Math.round(Math.max(0,ae)*2)/2:0}function Ee(ae){if(typeof ae!="string")return null;const re=ae.trim();if(!/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(re))return null;if(re.length===4){const[,he,$e,Le]=re;return`#${he}${he}${$e}${$e}${Le}${Le}`.toUpperCase()}return re.toUpperCase()}function Me(ae,re,he){const $e=Ne=>typeof Ne=="string"?Ne:Ne.id,Le=ae.findIndex(Ne=>$e(Ne)===re),X=ae.findIndex(Ne=>$e(Ne)===he);if(Le<0||X<0||Le===X)return[...ae];const ie=[...ae],[Te]=ie.splice(Le,1);return ie.splice(X,0,Te),ie}return(ae,re)=>ae.widgetId&&s.value?(h(),w("div",ok,[i("div",{class:we(["advanced-panel onboarding-panel",M()])},[i("button",{type:"button",class:"close-btn",onClick:m,"aria-label":"Close"},"×"),i("main",rk,[i("section",nk,[We(fc,{"selected-strategy":l.value,"selected-calendars":_.value,categories:u.value,assignments:b.value,"category-presets":n,"total-hours-input":d.value,"on-total-hours-change":Z,"on-apply-total-suggestion":z,"trend-lookback-input":g.value,"active-history-lookback":g.value,"history-summary":A(p),"suggestions-loading":!1,"suggestions-error":"","on-trend-lookback-change":j,"suggested-calendar-targets":A(f),"suggested-category-targets":A(f),"on-apply-calendar-suggestion":z,"on-apply-category-suggestion":z,"add-category":q,"remove-category":Y,"move-category":U,"reorder-category":le,"reorder-selected-calendar":J,"move-selected-calendar":R,"set-category-label":D,"apply-category-preset":F,"set-category-target":ce,"set-category-pace-mode":Ae,"toggle-category-weekend":se,"assign-calendar":oe,"set-calendar-target":G,"get-calendar-target":ee,"unassigned-selected-calendars":B.value,"goals-health":y.value,"resolved-color":ge,"on-color-input":ve},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"},[re[0]||(re[0]=i("div",{class:"overlay-actions__hint"},"This editor only overrides this widget.",-1)),i("button",{type:"button",class:"ghost",onClick:L},"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)])):te("",!0)}}),[["__scopeId","data-v-0399ee27"]]),ik=at(Pe({__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=ne(null),s=ne(null),l=ne(null),d=C(()=>(o.widgets||[]).slice().sort((I,B)=>(I.layout.order||0)-(B.layout.order||0)).map(I=>{const B=K0(I,o.context);if(!B)return null;const y=I.options||{};return{...B,id:I.id,layout:I.layout,type:I.type,options:y}}).filter(Boolean)),g=C(()=>d.value.find(I=>I.id===l.value)||null),u=C(()=>o.widgetTypes||[]);Be(()=>o.editable,I=>{I||(l.value=null,n.value=null,s.value=null)},{immediate:!0}),Be(()=>d.value.map(I=>I.id).join("|"),()=>{l.value&&!d.value.find(I=>I.id===l.value)&&(l.value=null)});function b(I){l.value=I,n.value=null}function v(){d.value.length&&(l.value=d.value[0].id)}function c(){l.value=null,n.value=null,s.value=null}function f(I){l.value=I,n.value=null,s.value=I}function p(){n.value=null,s.value=null}function S(I,B){r("edit:options",I,"localConfig",B.localConfig),r("edit:options",I,"localTargetsWeek",B.localTargetsWeek),r("edit:options",I,"localGroupsById",B.localGroupsById),r("edit:options",I,"useLocalConfig",!0),p()}function x(I){r("edit:options",I,"localTargetsWeek",null),r("edit:options",I,"localGroupsById",null),r("edit:options",I,"localConfig",null),r("edit:options",I,"useLocalConfig",!1),p()}function $(I){p(),r("open:onboarding",I)}function _(){l.value&&(n.value=l.value)}function O(I){r("select:cell",I)}return t({selectedItem:g,openOptionsForSelected:_,openAdvancedTargets:f,selectFirst:v}),(I,B)=>(h(),w("div",{class:we(["layout-wrapper",{"editable-mode":I.editable}]),onClick:Ke(c,["self"])},[We(ak,{ordered:d.value,editable:I.editable,"selected-id":l.value,"widget-type-list":u.value,onSelect:b,onSelectCell:O,onAdd:B[0]||(B[0]=(y,T)=>r("edit:add",y,T)),onReorder:B[1]||(B[1]=(y,T)=>r("edit:reorder",y,T))},null,8,["ordered","editable","selected-id","widget-type-list"]),We(sk,{"widget-id":s.value,widgets:I.widgets,"context-targets-config":I.context.targetsConfig,"context-targets-week":I.context.targetsWeek,"context-groups-by-id":I.context.groupsById,"context-calendars":I.context.calendars,"context-selected":I.context.selected,strategy:I.context.onboardingStrategy,onClose:p,onSave:S,onUseGlobal:x,onOpenOnboarding:$},null,8,["widget-id","widgets","context-targets-config","context-targets-week","context-groups-by-id","context-calendars","context-selected","strategy"])],2))}}),[["__scopeId","data-v-365e536c"]]),lk={key:1,class:"wp-ring-wrap"},dk={key:2,class:"wp-pie-wrap"},ck={key:4,class:"wp-hbars"},uk={key:5,class:"wp-heatmap"},gk={key:8,class:"wp-note"},pk={key:9,class:"wp-deck"},fk={key:10,class:"wp-deckstats"},bk={key:11,class:"wp-generic"},vk=at(Pe({__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",deck_cards:"deck",deck_stats:"deckstats",note_snippet:"note",note_editor:"note"}[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(),w("div",{class:we(["wp",[`wp--${A(o)}`,{"wp--sel":n.selected}]])},[A(o)==="bars"?(h(),w(ke,{key:0},[s[0]||(s[0]=qa('<div class="wp-bar" style="height:40%;opacity:.35;" data-v-0c23cc93></div><div class="wp-bar" style="height:72%;opacity:.65;" data-v-0c23cc93></div><div class="wp-bar" style="height:55%;opacity:.5;" data-v-0c23cc93></div><div class="wp-bar" style="height:95%;" data-v-0c23cc93></div><div class="wp-bar" style="height:48%;opacity:.45;" data-v-0c23cc93></div><div class="wp-bar" style="height:80%;opacity:.75;" data-v-0c23cc93></div><div class="wp-bar" style="height:30%;opacity:.3;" data-v-0c23cc93></div>',7))],64)):A(o)==="ring"?(h(),w("div",lk,[...s[1]||(s[1]=[i("div",{class:"wp-ring"},null,-1),i("span",{class:"wp-ring-label"},"67%",-1)])])):A(o)==="pie"?(h(),w("div",dk,[...s[2]||(s[2]=[i("div",{class:"wp-pie"},null,-1)])])):A(o)==="stacked"?(h(),w(ke,{key:3},[s[3]||(s[3]=qa('<div class="wp-bar wp-bar--a" style="height:58%;" data-v-0c23cc93></div><div class="wp-bar wp-bar--b" style="height:75%;" data-v-0c23cc93></div><div class="wp-bar wp-bar--a" style="height:44%;" data-v-0c23cc93></div><div class="wp-bar wp-bar--b" style="height:90%;" data-v-0c23cc93></div><div class="wp-bar wp-bar--a" style="height:66%;" data-v-0c23cc93></div><div class="wp-bar wp-bar--b" style="height:52%;" data-v-0c23cc93></div>',6))],64)):A(o)==="hbars"?(h(),w("div",ck,[...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)])])):A(o)==="heatmap"?(h(),w("div",uk,[(h(),w(ke,null,Ie(21,l=>i("div",{key:l,class:"wp-cell",style:He({opacity:r(l)})},null,4)),64))])):A(o)==="hod"?(h(),w(ke,{key:6},[s[5]||(s[5]=qa('<div class="wp-bar" style="height:20%;opacity:.2;" data-v-0c23cc93></div><div class="wp-bar" style="height:30%;opacity:.3;" data-v-0c23cc93></div><div class="wp-bar" style="height:85%;opacity:.8;" data-v-0c23cc93></div><div class="wp-bar" style="height:95%;" data-v-0c23cc93></div><div class="wp-bar" style="height:70%;opacity:.65;" data-v-0c23cc93></div><div class="wp-bar" style="height:40%;opacity:.38;" data-v-0c23cc93></div><div class="wp-bar" style="height:15%;opacity:.15;" data-v-0c23cc93></div>',7))],64)):A(o)==="dayoff"?(h(),w(ke,{key:7},[s[6]||(s[6]=qa('<div class="wp-bar wp-bar--g" style="height:45%;opacity:.5;" data-v-0c23cc93></div><div class="wp-bar" style="height:70%;opacity:.65;" data-v-0c23cc93></div><div class="wp-bar wp-bar--g" style="height:35%;opacity:.4;" data-v-0c23cc93></div><div class="wp-bar" style="height:88%;" data-v-0c23cc93></div><div class="wp-bar wp-bar--g" style="height:55%;opacity:.55;" data-v-0c23cc93></div><div class="wp-bar" style="height:60%;opacity:.6;" data-v-0c23cc93></div>',6))],64)):A(o)==="note"?(h(),w("div",gk,[...s[7]||(s[7]=[i("div",{class:"wp-noteline",style:{width:"88%"}},null,-1),i("div",{class:"wp-noteline",style:{width:"72%"}},null,-1),i("div",{class:"wp-noteline",style:{width:"60%"}},null,-1),i("div",{class:"wp-noteline",style:{width:"80%"}},null,-1)])])):A(o)==="deck"?(h(),w("div",pk,[...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)])])):A(o)==="deckstats"?(h(),w("div",fk,[...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(),w("div",bk))],2))}}),[["__scopeId","data-v-0c23cc93"]]),hk=["onKeydown"],mk={class:"ov-head"},yk={class:"ov-search"},wk=["onKeydown"],kk={class:"ov-cats"},xk=["onClick"],_k={class:"ov-grid"},Ck=["title","onClick"],Sk={class:"ov-preview"},$k={key:0,class:"ov-empty"},Tk={class:"ov-foot"},Mk={class:"ov-hint"},Ak={class:"ov-foot-actions"},Lk=["disabled"],Dk=["disabled"],Ek=at(Pe({__name:"AddWidgetModal",props:{open:{type:Boolean},widgetTypeList:{}},emits:["close","select"],setup(e,{emit:t}){const a=e,o=t,r=ne(""),n=ne(""),s=ne("All"),l=ne(null);Be(()=>a.open,c=>{c&&(r.value="",n.value="",s.value="All",zt(()=>{var f;return(f=l.value)==null?void 0:f.focus()}))});const d=C(()=>{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=C(()=>a.widgetTypeList.filter(c=>{const f=s.value==="All"||c.category===s.value,p=!r.value||c.label.toLowerCase().includes(r.value.toLowerCase());return f&&p})),u=C(()=>{var c;return((c=a.widgetTypeList.find(f=>f.type===n.value))==null?void 0:c.label)??""});function b(c){n.value&&(o("select",n.value),c?o("close"):n.value="")}function v(){n.value&&b(!0)}return(c,f)=>c.open?(h(),w("div",{key:0,class:"ov-backdrop",onMousedown:f[7]||(f[7]=Ke(p=>c.$emit("close"),["self"])),onKeydown:f[8]||(f[8]=$a(Ke(p=>c.$emit("close"),["stop"]),["esc"]))},[i("div",{class:"overlay-panel",role:"dialog","aria-modal":"true","aria-label":"Add a widget",onKeydown:[f[6]||(f[6]=$a(Ke(p=>c.$emit("close"),["stop"]),["esc"])),$a(Ke(v,["stop"]),["enter"])]},[i("div",mk,[i("div",yk,[f[9]||(f[9]=i("svg",{class:"ov-search-icon",viewBox:"0 0 13 13",width:"13",height:"13",fill:"none"},[i("circle",{cx:"5.5",cy:"5.5",r:"4",stroke:"currentColor","stroke-width":"1.6"}),i("path",{d:"M9 9l2.5 2.5",stroke:"currentColor","stroke-width":"1.6","stroke-linecap":"round"})],-1)),Ro(i("input",{ref_key:"searchInputRef",ref:l,"onUpdate:modelValue":f[0]||(f[0]=p=>r.value=p),class:"ov-search-input",placeholder:"Search widgets…",type:"search",onKeydown:[f[1]||(f[1]=$a(Ke(p=>c.$emit("close"),["stop"]),["esc"])),$a(Ke(v,["stop"]),["enter"])]},null,40,wk),[[Zs,r.value]])]),i("button",{class:"ov-cancel",type:"button",onClick:f[2]||(f[2]=p=>c.$emit("close"))},"Cancel")]),i("div",kk,[(h(!0),w(ke,null,Ie(d.value,p=>(h(),w("button",{key:p,type:"button",class:we(["ov-cat",{on:s.value===p}]),onClick:S=>s.value=p},E(p),11,xk))),128))]),i("div",_k,[(h(!0),w(ke,null,Ie(g.value,p=>(h(),w("div",{key:p.type,class:we(["ov-card",{on:n.value===p.type}]),role:"button",title:p.label,onClick:S=>n.value=p.type,onDblclick:f[3]||(f[3]=S=>b(!0))},[i("div",Sk,[We(vk,{type:p.type,selected:n.value===p.type},null,8,["type","selected"])]),i("div",{class:we(["ov-name",{on:n.value===p.type}])},E(p.label),3)],42,Ck))),128)),g.value.length?te("",!0):(h(),w("div",$k,"No widgets match your search."))]),i("div",Tk,[i("span",Mk,"↵ Add · Esc cancel"+E(n.value?` · ${u.value}`:""),1),i("div",Ak,[i("button",{class:"ov-add-soft",type:"button",disabled:!n.value,onClick:f[4]||(f[4]=p=>b(!1))},"Add without closing",8,Lk),i("button",{class:"ov-add",type:"button",disabled:!n.value,onClick:f[5]||(f[5]=p=>b(!0))}," Add"+E(u.value?` ${u.value}`:" widget"),9,Dk)])])],40,hk)],32)):te("",!0)}}),[["__scopeId","data-v-d6b3170f"]]),Nk={class:"opt-section"},Ik=["for"],Ok=["id","min","max","step","value","onInput"],Bk=["id","value","onChange"],Hk=["value"],Fk=["id","checked","onChange"],Pk=["id","value","onInput"],Wk={key:0,class:"opt-section"},zk=["for"],Rk=["id","min","max","step","value","onInput"],jk=["id","value","onChange"],Vk=["value"],Uk=["id","checked","onChange"],Gk=["id","value","onInput"],qk={key:5,class:"colorlist"},Kk=["onClick"],Jk={key:6,class:"multi"},Zk=["value","checked","onChange"],Yk={key:7,class:"taglist"},Xk={key:0,class:"taglist__hint"},Qk={key:1,class:"taglist__hint"},ex={class:"taglist__meta"},tx=["value","checked","onChange"],ax={class:"taglist__label"},ox={key:0,class:"taglist__count"},rx=["id","value","onInput"],nx={key:9,class:"filter-builder"},sx=["value","onInput"],ix=["value","onInput"],lx=["value","onInput"],dx=["onClick"],cx=["onClick"],ux={key:1,class:"opt-section"},gx={class:"tab-actions"},px={class:"tab-actions__meta"},fx={class:"tab-actions__label"},bx={key:0,class:"tab-actions__hint"},vx={class:"tab-actions__buttons"},hx=["disabled","onClick"],mx=["disabled","onClick"],yx={key:2,class:"opt-section"},wx={key:3,class:"opt-row opt-row--footer"},kx=at(Pe({__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=ne(null),o=ne({});function r(){c.value=!c.value,c.value&&zt(()=>{const J=a.value;if(!J)return;const R=J.getBoundingClientRect(),D=Math.min(440,window.innerWidth-24);let F=R.right-D;F<12&&(F=12),o.value={position:"fixed",top:`${R.bottom+8}px`,left:`${F}px`,width:`${D}px`}})}const n=e,s=t,l=ne({}),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=C(()=>{var ce,Ae;const J=new Set(g.map(se=>se.key)),R=((ce=n.entry)==null?void 0:ce.controls)||[],D=typeof((Ae=n.entry)==null?void 0:Ae.dynamicControls)=="function"?n.entry.dynamicControls(l.value||{},n.context||{}):[];return[...R,...D].filter(se=>!J.has(se.key))}),b=C(()=>(n.tabs||[]).map(J=>({id:String(J.id),label:String(J.label||J.id),current:String(J.id)===String(n.currentTabId||"")}))),v=C(()=>(n.tabs||[]).length===1);Be(()=>[n.entry,n.options],([J,R])=>{const D=(J==null?void 0:J.defaultOptions)||{},F=typeof(J==null?void 0:J.resolveOptions)=="function"?J.resolveOptions(R||{},n.context||{}):{};l.value={...d,...D,...F,...R||{}}},{immediate:!0,deep:!0});const c=C({get:()=>!!n.open,set:J=>s("toggle",J)});function f(J,R){const D=Number(R.target.value);s("change",J,D)}function p(J,R){const D=R.target.value;s("change",J,D)}function S(J,R){const D=R.target.checked;s("change",J,D)}function x(J,R){const D=R.target.value;s("change",J,D)}function $(J){return Array.isArray(J==null?void 0:J.options)?J.options.map(R=>R==null?void 0:R.value):[]}function _(J,R){const D=m(J.key);return Array.isArray(D)&&D.length?D.includes(R):!!(J!=null&&J.defaultAll)}function O(J,R,D){const F=D.target.checked,ce=m(J.key),Ae=Array.isArray(ce)&&ce.length?[...ce]:J!=null&&J.defaultAll?$(J):[],se=new Set(Ae);F?se.add(R):se.delete(R),s("change",J.key,Array.from(se))}function I(J){return Array.isArray(J==null?void 0:J.options)?J.options.map(R=>String((R==null?void 0:R.value)??"")).filter(Boolean):[]}function B(J,R){const D=m(J.key);return(Array.isArray(D)?D.map(ce=>String(ce)):I(J)).includes(String(R))}function y(J){return!Array.isArray(m(J.key))}function T(J,R,D){const F=D.target.checked,ce=I(J),Ae=m(J.key),se=Array.isArray(Ae)?Ae.map(ge=>String(ge)):ce,oe=new Set(se),G=String(R);F?oe.add(G):oe.delete(G);const ee=ce.filter(ge=>oe.has(ge));s("change",J.key,ee)}function m(J){if(J==="scale")return l.value.scale??l.value.textSize;if(!J.includes("."))return l.value[J];const R=J.split(".");let D=l.value;for(const F of R){if(D==null)return;D=D[F]}return D}function k(J){const R=m(J);return Array.isArray(R)&&R.length?R:typeof R=="string"&&R.trim()?R.split(",").map(D=>D.trim()).filter(Boolean):M.slice(0,5)}function L(J,R,D){const F=[...k(J)];F[R]=D,s("change",J,F)}function z(J){const R=[...k(J),"#cccccc"];s("change",J,R)}const M=["#2563EB","#F97316","#10B981","#A855F7","#EC4899"];function Z(J){const R=m(J);if(Array.isArray(R))return R.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 R=="string"&&R.trim())try{const D=JSON.parse(R);if(Array.isArray(D))return D.map(F=>({label:String((F==null?void 0:F.label)||""),labels:Array.isArray(F==null?void 0:F.labels)?F.labels.join(", "):String((F==null?void 0:F.labels)||""),assignees:Array.isArray(F==null?void 0:F.assignees)?F.assignees.join(", "):String((F==null?void 0:F.assignees)||"")}))}catch{return[]}return[]}function j(J){const R=[...Z(J),{label:"",labels:"",assignees:""}];s("change",J,U(R))}function q(J,R){const D=Z(J).filter((F,ce)=>ce!==R);s("change",J,U(D))}function Y(J,R,D,F){const ce=F.target.value,Ae=Z(J).map((se,oe)=>oe===R?{...se,[D]:ce}:se);s("change",J,U(Ae))}function U(J){return J.map(R=>({label:R.label.trim(),labels:le(R.labels),assignees:le(R.assignees)}))}function le(J){return J.split(",").map(R=>R.trim()).filter(Boolean)}return(J,R)=>(h(),w("div",{class:"options-wrapper",onKeydown:R[1]||(R[1]=Ke(()=>{},["stop"]))},[i("button",{ref_key:"triggerRef",ref:a,type:"button",class:"ic",title:"Configure widget",onClick:Ke(r,["stop"])},[...R[2]||(R[2]=[qa('<svg width="14" height="12" viewBox="0 0 14 12" fill="none" aria-hidden="true" data-v-49017161><path d="M1 3h12M1 6h12M1 9h12" stroke="currentColor" stroke-width="1.4" stroke-linecap="round" data-v-49017161></path><circle cx="4" cy="3" r="1.5" stroke="currentColor" stroke-width="1.3" data-v-49017161></circle><circle cx="10" cy="6" r="1.5" stroke="currentColor" stroke-width="1.3" data-v-49017161></circle><circle cx="6" cy="9" r="1.5" stroke="currentColor" stroke-width="1.3" data-v-49017161></circle></svg><span class="ic-lbl" data-v-49017161>Config</span>',2)])],512),c.value?(h(),w("div",{key:0,class:"options-pop",style:He(o.value)},[i("div",Nk,[R[3]||(R[3]=i("div",{class:"opt-section__title"},"Layout & title",-1)),(h(),w(ke,null,Ie(g,D=>i("div",{key:D.key,class:"opt-row"},[i("label",{for:`opt-${D.key}`},E(D.label),9,Ik),D.type==="number"?(h(),w("input",{key:0,id:`opt-${D.key}`,type:"number",min:D.min,max:D.max,step:D.step||1,value:m(D.key)??"",onInput:F=>f(D.key,F)},null,40,Ok)):D.type==="select"?(h(),w("select",{key:1,id:`opt-${D.key}`,value:m(D.key),onChange:F=>p(D.key,F)},[(h(!0),w(ke,null,Ie(D.options||[],F=>(h(),w("option",{key:F.value,value:F.value},E(F.label),9,Hk))),128))],40,Bk)):D.type==="toggle"?(h(),w("input",{key:2,id:`opt-${D.key}`,type:"checkbox",checked:!!m(D.key),onChange:F=>S(D.key,F)},null,40,Fk)):D.type==="text"?(h(),w("input",{key:3,id:`opt-${D.key}`,type:"text",value:m(D.key)??"",onInput:F=>x(D.key,F)},null,40,Pk)):D.type==="color"?(h(),nt(En,{key:4,"model-value":m(D.key)||"#ffffff","onUpdate:modelValue":F=>s("change",D.key,F)},null,8,["model-value","onUpdate:modelValue"])):te("",!0)])),64))]),u.value.length?(h(),w("div",Wk,[R[5]||(R[5]=i("div",{class:"opt-section__title"},"Widget options",-1)),(h(!0),w(ke,null,Ie(u.value,D=>(h(),w("div",{key:D.key,class:"opt-row"},[i("label",{for:`opt-${D.key}`},E(D.label),9,zk),D.type==="number"?(h(),w("input",{key:0,id:`opt-${D.key}`,type:"number",min:D.min,max:D.max,step:D.step||1,value:m(D.key)??"",onInput:F=>f(D.key,F)},null,40,Rk)):D.type==="select"?(h(),w("select",{key:1,id:`opt-${D.key}`,value:m(D.key),onChange:F=>p(D.key,F)},[(h(!0),w(ke,null,Ie(D.options||[],F=>(h(),w("option",{key:F.value,value:F.value},E(F.label),9,Vk))),128))],40,jk)):D.type==="toggle"?(h(),w("input",{key:2,id:`opt-${D.key}`,type:"checkbox",checked:!!m(D.key),onChange:F=>S(D.key,F)},null,40,Uk)):D.type==="text"?(h(),w("input",{key:3,id:`opt-${D.key}`,type:"text",value:m(D.key)??"",onInput:F=>x(D.key,F)},null,40,Gk)):D.type==="color"?(h(),nt(En,{key:4,"model-value":m(D.key)||"#ffffff","onUpdate:modelValue":F=>s("change",D.key,F)},null,8,["model-value","onUpdate:modelValue"])):D.type==="colorlist"?(h(),w("div",qk,[(h(!0),w(ke,null,Ie(k(D.key),(F,ce)=>(h(),nt(En,{key:`${D.key}-${ce}`,"model-value":F,"onUpdate:modelValue":Ae=>L(D.key,ce,Ae)},null,8,["model-value","onUpdate:modelValue"]))),128)),i("button",{type:"button",class:"ghost sm",onClick:F=>z(D.key)},"+",8,Kk)])):D.type==="multiselect"?(h(),w("div",Jk,[(h(!0),w(ke,null,Ie(D.options||[],F=>(h(),w("label",{key:`${D.key}-${F.value}`,class:"multi__item"},[i("input",{type:"checkbox",value:F.value,checked:_(D,F.value),onChange:ce=>O(D,F.value,ce)},null,40,Zk),i("span",null,E(F.label),1)]))),128))])):D.type==="taglist"?(h(),w("div",Yk,[D.hint?(h(),w("div",Xk,E(D.hint),1)):y(D)?(h(),w("div",Qk," All tags are active by default. Uncheck to hide a filter. ")):te("",!0),(h(!0),w(ke,null,Ie(D.options||[],F=>(h(),w("label",{key:`${D.key}-${F.value}`,class:"taglist__item"},[i("span",ex,[i("input",{type:"checkbox",value:F.value,checked:B(D,F.value),onChange:ce=>T(D,F.value,ce)},null,40,tx),i("span",ax,E(F.label),1)]),typeof F.count=="number"?(h(),w("span",ox,E(F.count),1)):te("",!0)]))),128))])):D.type==="textarea"?(h(),w("textarea",{key:8,id:`opt-${D.key}`,rows:"3",value:m(D.key)??"",onInput:F=>x(D.key,F)},null,40,rx)):D.type==="filterbuilder"?(h(),w("div",nx,[R[4]||(R[4]=i("div",{class:"filter-builder__hint"},[Re(" Tags and assigned can be used independently—leave one empty to ignore it. Use commas. Special assignees: "),i("code",null,"me"),Re(", "),i("code",null,"unassigned"),Re(". ")],-1)),(h(!0),w(ke,null,Ie(Z(D.key),(F,ce)=>(h(),w("div",{key:`${D.key}-row-${ce}`,class:"filter-builder__row"},[i("input",{type:"text",class:"filter-builder__label",value:F.label,placeholder:"Filter label",onInput:Ae=>Y(D.key,ce,"label",Ae)},null,40,sx),i("input",{type:"text",class:"filter-builder__input",value:F.labels,placeholder:"Tags (comma separated)",onInput:Ae=>Y(D.key,ce,"labels",Ae)},null,40,ix),i("input",{type:"text",class:"filter-builder__input",value:F.assignees,placeholder:"Assigned (comma separated)",onInput:Ae=>Y(D.key,ce,"assignees",Ae)},null,40,lx),i("button",{type:"button",class:"ghost sm",onClick:Ae=>q(D.key,ce)},"✕",8,dx)]))),128)),i("button",{type:"button",class:"ghost sm",onClick:F=>j(D.key)},"+ Add filter",8,cx)])):te("",!0)]))),128))])):te("",!0),b.value.length?(h(),w("div",ux,[R[6]||(R[6]=i("div",{class:"opt-section__title"},"Tab actions",-1)),i("div",gx,[(h(!0),w(ke,null,Ie(b.value,D=>(h(),w("div",{key:D.id,class:"tab-actions__row"},[i("div",px,[i("div",fx,E(D.label),1),D.current?(h(),w("div",bx,"Current tab")):te("",!0)]),i("div",vx,[i("button",{type:"button",class:"ghost sm",disabled:D.current,onClick:Ke(F=>s("move-to-tab",D.id),["stop"])}," Move ",8,hx),i("button",{type:"button",class:"ghost sm",disabled:D.current,onClick:Ke(F=>s("duplicate-to-tab",D.id),["stop"])}," Copy ",8,mx)])]))),128))])])):v.value?(h(),w("div",yx,[...R[7]||(R[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)])])):te("",!0),J.showAdvanced?(h(),w("div",wx,[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:R[0]||(R[0]=Ke(D=>s("open-advanced"),["stop"]))}," Advanced targets (widget only) ")])):te("",!0)],4)):te("",!0)],32))}}),[["__scopeId","data-v-49017161"]]);function xx(e){const t=ne(""),a=ne(""),o=ne(!1),r=ne([]);let n=0;const s=(u,b,v)=>u==="month"?`Month of ${b?b.slice(0,7):`-${v}`}`:`Week of ${b||`-${v}`}`,l=(u,b)=>{const v=u==="month"?"Notes for month starting":"Notes for week starting";return b?`${v} ${b}`:v};async function d(){var p,S,x;const u=++n,b=e.range.value,v=e.offset.value|0,c=await e.getJson(e.route("notes"),{range:b,offset:v});if(u!==n)return;t.value=String(((p=c==null?void 0:c.notes)==null?void 0:p.previous)??""),a.value=String(((S=c==null?void 0:c.notes)==null?void 0:S.current)??"");const f=Array.isArray((x=c==null?void 0:c.notes)==null?void 0:x.history)?c.notes.history:[];r.value=f.map(($,_)=>{const O=Number(($==null?void 0:$.offset)??_+1),I=String(($==null?void 0:$.from)??"").trim(),B=String(($==null?void 0:$.content)??"");if(!B.trim())return null;const y=s(b,I,O),T=l(b,I);return{id:`offset-${O}-${I||_}`,label:y,title:T,content:B,from:I||void 0,offset:O}}).filter(Boolean)}async function g(){try{o.value=!0,await e.postJson(e.route("notesSave"),{range:e.range.value,offset:e.offset.value|0,content:a.value??""}),e.notifySuccess("Notes saved"),await d()}catch(u){console.error(u),e.notifyError("Failed to save notes")}finally{o.value=!1}}return{notesPrev:t,notesCurrDraft:a,isSavingNote:o,notesHistory:r,fetchNotes:d,saveNotes:g}}let zr=null,mi=null,Mu=!1;function Au(){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 _x(){if(!(typeof window>"u"))try{jn(),Cx()}catch(e){Tx()&&console.warn("[opsdash] theme boot install failed",e)}}function Cx(){if(zr||mi||Mu)return;const e=[];if(document.documentElement&&e.push(document.documentElement),document.body&&document.body!==document.documentElement&&e.push(document.body),e.length&&(zr=new MutationObserver(()=>jn()),e.forEach(t=>{zr==null||zr.observe(t,{attributes:!0,attributeFilter:["data-theme","class"]})})),window.matchMedia){const t=window.matchMedia("(prefers-color-scheme: dark)"),a=()=>jn();typeof t.addEventListener=="function"?(t.addEventListener("change",a),mi=()=>t.removeEventListener("change",a)):typeof t.addListener=="function"&&(t.addListener(a),mi=()=>{t.removeListener(a)})}window.addEventListener("oc:theme:changed",jn),Mu=!0}function jn(){const e=Sx();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 Sx(){const e=yi()==="dark",t=$x(),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 yi(){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 $x(){const e=window;return t=>{var a;return typeof((a=e.OC)==null?void 0:a.imagePath)=="function"?e.OC.imagePath("opsdash",t):""}}function Tx(){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 Mx(){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 Ax(e){const t=ne([]),a=ne({}),o=ne({}),r=ne({}),n=ne([]),s=ne(!1),l=ne(!1),d=C(()=>s.value&&!l.value),g=C(()=>s.value&&l.value),u=ne(!1),b=ne(null),v=ne(""),c=ne(""),f=ne(""),p=br({}),S=ne([]),x=ne([]),$=ne([]),_=ne({}),O=ne({}),I=ne({}),B=ne(Zt(ya())),y=ne(null),T=Au()??"auto",m=ne(T),k=ne($o()),L=ne(To());let z=0;async function M(){var U,le,J,R,D;const Z=++z;s.value=!0;const j={...o.value},q={...a.value};let Y=!1;try{const F=((U=e.isDebug)==null?void 0:U.call(e))===!0,ce=V=>{const de={};return V&&typeof V=="object"&&Object.entries(V).forEach(([ue,fe])=>{typeof fe=="string"&&fe.trim()!==""&&(de[String(ue)]=fe)}),de},Ae=()=>{var de,ue,fe,_e;let V=!1;try{const ye=((de=_.value)==null?void 0:de.pie)||{},xe=Array.isArray(ye.ids)?ye.ids.map(be=>String(be??"")):[];if(xe.length){const be=Array.isArray(ye.colors)?ye.colors:[],Ee=xe.map((Me,ae)=>o.value[Me]||be[ae]||"#60a5fa");_.value={..._.value||{},pie:{...ye,colors:Ee}},V=!0}}catch(ye){(ue=e.isDebug)!=null&&ue.call(e)&&console.warn("recompute pie colors failed",ye)}try{const ye=(fe=_.value)==null?void 0:fe.perDaySeries;if(ye&&Array.isArray(ye.series)){const xe=ye.series.map(be=>{const Ee=String((be==null?void 0:be.id)??""),Me=o.value[Ee]||be.color||"#60a5fa";return{...be,color:Me}});_.value={..._.value||{},perDaySeries:{labels:ye.labels,series:xe}},V=!0}}catch(ye){(_e=e.isDebug)!=null&&_e.call(e)&&console.warn("recompute stacked colors failed",ye)}return V},se=V=>{var he,$e,Le,X,ie,Te,Ne,Ze,vt,et,it,Tt,dt,ht;const de=Mx();v.value=de||String(((he=V.meta)==null?void 0:he.uid)??""),c.value=String((($e=V.meta)==null?void 0:$e.from)??""),f.value=String(((Le=V.meta)==null?void 0:Le.to)??""),u.value=!!((X=V.meta)!=null&&X.truncated),b.value=((ie=V.meta)==null?void 0:ie.limits)??null;const ue=V.userSettings&&typeof V.userSettings=="object"?V.userSettings:null;if(ue){const Ue=typeof ue.timezone=="string"?ue.timezone:"",Ve=typeof ue.locale=="string"?ue.locale:"",ot=typeof ue.firstDayOfWeek=="number"?ue.firstDayOfWeek:void 0;Xf({timeZone:Ue||void 0,locale:Ve||void 0,firstDayOfWeek:ot})}const fe=Array.isArray(V.calendars)?V.calendars:[],_e=ce((Te=V.colors)==null?void 0:Te.byId),ye=ce((Ne=V.colors)==null?void 0:Ne.byName),xe=fe.map(Ue=>{if(!Ue||typeof Ue!="object")return Ue;const Ve={...Ue},ot=String(Ve.id??""),ct=String(Ve.displayname??Ve.name??Ve.calendar??ot),Je=typeof Ve.color=="string"?Ve.color:"",_t=typeof Ve.color_src=="string"?Ve.color_src:"",Et=ot?_e[ot]:"",Nt=ct?ye[ct]:"",Qt=ot?j[ot]:"",Ft=ct?q[ct]:"",Ut=Qt||Ft;let lt=Je;return!lt&&Et&&(lt=Et),!lt&&Nt&&(lt=Nt),(!lt||_t==="fallback")&&Ut&&(lt=Ut),!lt&&Ut&&(lt=Ut),lt&&(lt!==Je&&(Y=!0),Ve.color=lt,ot&&(_e[ot]=lt),ct&&(ye[ct]=lt)),Ve});if(t.value=xe,a.value=ye,o.value=_e,Object.prototype.hasOwnProperty.call(V,"onboarding")&&(y.value=V.onboarding&&typeof V.onboarding=="object"?{...V.onboarding}:null),k.value=ni(V.reportingConfig,k.value),L.value=si(V.deckSettings,L.value),V.widgetPresets&&fu(V.widgetPresets),e.widgetTabs){const Ue=(Ze=V.onboarding)==null?void 0:Ze.dashboardMode,Ve=e.widgetTabs.value||vu(Ue==="quick"||Ue==="pro"?Ue:"standard");e.widgetTabs.value=Wr(V.widgets,Ve)}const be=((vt=V.groups)==null?void 0:vt.byId)??((et=V.groups)==null?void 0:et.byID)??((it=V.groups)==null?void 0:it.ids)??{},Ee={};t.value.forEach(Ue=>{const Ve=String((Ue==null?void 0:Ue.id)??""),ot=Number((be==null?void 0:be[Ve])??0);Ee[Ve]=Number.isFinite(ot)?Math.max(0,Math.min(9,Math.trunc(ot))):0}),r.value=Ee;const Me=((Tt=V.targets)==null?void 0:Tt.week)??{},ae=((dt=V.targets)==null?void 0:dt.month)??{};O.value=Me&&typeof Me=="object"?Me:{},I.value=ae&&typeof ae=="object"?ae:{},B.value=Zt(V.targetsConfig??ya());const re=typeof V.themePreference=="string"?V.themePreference:"";m.value=re==="light"||re==="dark"?re:"auto",(ht=e.isDebug)!=null&&ht.call(e)&&(console.group("[opsdash] calendars/colors"),console.table((t.value||[]).map(Ue=>({id:Ue.id,name:Ue.displayname,color:Ue.color,raw:Ue.color_raw,src:Ue.color_src}))),console.log("colors.byId",o.value),console.log("colors.byName",a.value),V.calDebug&&console.log("server calDebug",V.calDebug),V.debug&&(console.group("[opsdash] server query debug"),console.log(V.debug),console.groupEnd()),console.groupEnd()),n.value=Array.isArray(V.selected)?V.selected.map(Ue=>String(Ue)):Array.isArray(V.saved)?V.saved.map(Ue=>String(Ue)):[],e.userChangedSelection.value=!1,Y&&Ae()},oe=async V=>{var de,ue,fe,_e;c.value=String(((de=V.meta)==null?void 0:de.from)??c.value),f.value=String(((ue=V.meta)==null?void 0:ue.to)??f.value),u.value=!!((fe=V.meta)!=null&&fe.truncated),b.value=((_e=V.meta)==null?void 0:_e.limits)??null,Object.assign(p,V.stats??{}),S.value=Array.isArray(V.byCal)?V.byCal:[],x.value=Array.isArray(V.byDay)?V.byDay:[],$.value=Array.isArray(V.longest)?V.longest:[],_.value=V.charts??{},l.value=!0,Y&&Ae(),await zt(),e.scheduleDraw(),e.fetchNotes().catch(()=>{})},G={range:e.range.value,offset:e.offset.value|0,include:["core"]};F&&(G.include=["core","debug"],G.debug=!0);const ee=await e.getJson(e.route("loadData"),G);if(Z!==z){(le=e.isDebug)!=null&&le.call(e)&&console.warn("discarding stale core response",{currentSeq:Z,loadSeq:z});return}se(ee),(J=e.onCoreLoaded)==null||J.call(e,ee);const ge=((R=e.includeLookback)==null?void 0:R.call(e))===!0,ve=["data"];ge&&ve.push("lookback"),F&&ve.push("debug");const N={range:e.range.value,offset:e.offset.value|0,include:ve};F&&(N.debug=!0);const P=await e.postJson(e.route("loadData"),N);if(Z!==z){(D=e.isDebug)!=null&&D.call(e)&&console.warn("discarding stale data response",{currentSeq:Z,loadSeq:z});return}await oe(P)}catch(F){console.error(F),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:b,uid:v,from:c,to:f,stats:p,byCal:S,byDay:x,longest:$,charts:_,targetsWeek:O,targetsMonth:I,targetsConfig:B,onboarding:y,load:M,themePreference:m,reportingConfig:k,deckSettings:L}}const Lx=[{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:Vn("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:Vn("release-notes/release-080-composite.png"),alt:"Opsdash 0.8.0 — sidebar, browse bar, and edit bar side by side",title:"Sidebar · Browse bar · Edit bar",caption:"Left: the sidebar with your dashboard profile and quick-setup links. Right top: the clean browse bar. Right bottom: the new two-row edit bar with tabs on row 1 and actions on row 2."}],actions:[{label:"↻ Reset to default layout",type:"reload"}],autoShow:!0,showInHistory:!0},{version:"0.7.6",date:"2026-04-27",title:"What’s new now stays dismissed",teaser:"The release update panel now remembers when you have already seen the latest version.",summary:"This small update makes the in-app release notes less repetitive. After you close the latest update, Opsdash keeps it out of your way until a newer version is available.",highlights:["The latest update panel now appears only once for each app version.","Closing the panel is remembered more reliably across refreshes and dashboard saves.","Targets now show real over-goal progress above 200%, so very strong weeks no longer look capped.","You can still open release notes manually from the sidebar whenever you want to review what changed."],autoShow:!0,showInHistory:!0},{version:"0.7.5",date:"2026-04-20",title:"Updates now get their own in-app spotlight",teaser:"A cleaner in-app release note overlay now highlights what changed and keeps past updates one click away.",summary:"",highlights:["A new in-app update panel calls out the latest release in a cleaner, more readable format.","The newest version opens first, while older release notes stay available from the built-in history list.","Release copy is now written for end users, focusing on visible UI changes and feature updates instead of internal implementation details."],images:[{src:Vn("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:Vn("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 Mo(e).split(".").map(t=>Number.parseInt(t,10)).map(t=>Number.isFinite(t)?t:0)}function Mo(e){return String(e??"").trim().replace(/^v/i,"")}function Du(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 Eu(){return[...Lx].sort((e,t)=>Du(e.version,t.version))}function wi(e){const t=Mo(e);return Eu().find(a=>a.version===t)??null}function Vn(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 Dx(e){const t=ne(!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=Pa(e.targetsConfig.value),b={cals:e.selected.value,groups:e.groupsById.value,targets_week:e.targetsWeek.value,targets_month:e.targetsMonth.value,targets_config:u};e.themePreference&&(b.theme_preference=e.themePreference.value),e.reportingConfig&&(b.reporting_config=e.reportingConfig.value),e.deckSettings&&(b.deck_settings=e.deckSettings.value),e.widgetTabs&&(b.widgets=e.widgetTabs.value),(d=e.onboardingState)!=null&&d.value&&(b.onboarding=e.onboardingState.value),e.activePreset!==void 0&&(b.active_preset=e.activePreset.value??null);const v=await e.postJson(e.route("persist"),b);if(l!==r)return;Array.isArray(v.read)?e.selected.value=v.read.map(S=>String(S)):Array.isArray(v.saved)&&(e.selected.value=v.saved.map(S=>String(S)));const c=v.targets_config_read,f=v.targets_config_saved,p=Ix(c??f,u);if(p&&(e.targetsConfig.value=p),e.themePreference){const S=Ex(v.theme_preference_read??v.theme_preference_saved);S&&(e.themePreference.value=S)}if(e.reportingConfig){const S=ni(v.reporting_config_read??v.reporting_config_saved,e.reportingConfig.value);S&&(e.reportingConfig.value=S)}if(e.deckSettings){const S=si(v.deck_settings_read??v.deck_settings_saved,e.deckSettings.value);S&&(e.deckSettings.value=S)}if(e.widgetTabs){const S=v.widgets_read??v.widgets_saved??v.widgets,x=e.widgetTabs.value||Pr("standard");e.widgetTabs.value=Wr(S,x)}if(e.onboardingState){const S=v.onboarding_read??v.onboarding_saved;if(S&&typeof S=="object"){const x=Mo(((g=e.onboardingState.value)==null?void 0:g.releaseNotesSeenVersion)??""),$=Mo(S.releaseNotesSeenVersion??"");e.onboardingState.value={...e.onboardingState.value||{},...S,releaseNotesSeenVersion:Nx(x,$)}}}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 Ex(e){return e==="light"||e==="dark"||e==="auto"?e:null}function Nx(e,t){return e?t&&Du(e,t)>=0?t:e:t}function Ix(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})),Zt(a)}function Ox(e){const t=ne([]),a=ne(!1),o=ne(!1),r=ne(!1),n=ne([]),s=ne(null);async function l(){a.value=!0;try{const c=await e.getJson(e.route("presetsList"),{});t.value=Array.isArray(c==null?void 0:c.presets)?c.presets:[]}catch(c){console.error(c),e.notifyError("Failed to load presets")}finally{a.value=!1}}async function d(c,f={}){var S;const p=c.trim();if(p===""){e.notifyError("Enter a preset name.");return}o.value=!0;try{const x={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}:{},...(S=e.onboardingState)!=null&&S.value?{onboarding:e.onboardingState.value}:{},...e.themePreference?{theme_preference:e.themePreference.value}:{},...e.reportingConfig?{reporting_config:e.reportingConfig.value}:{},...e.deckSettings?{deck_settings:e.deckSettings.value}:{}},$=await e.postJson(e.route("presetsSave"),x);t.value=Array.isArray($==null?void 0:$.presets)?$.presets:t.value;const _=Array.isArray($==null?void 0:$.warnings)?$.warnings:[];n.value=_,s.value=p,f.notifySuccess!==!1&&e.notifySuccess(`Profile "${p}" saved`)}catch(x){console.error(x),e.notifyError("Failed to save preset")}finally{o.value=!1}}function g(c){var _,O;const f=!!(c&&Object.prototype.hasOwnProperty.call(c,"widgets"));let p=null;const S=Array.isArray(c==null?void 0:c.selected)?c.selected.map(I=>String(I)):[];e.selected.value=S;const x=c!=null&&c.groups&&typeof c.groups=="object"?c.groups:{};e.groupsById.value={...x},e.targetsWeek.value=c!=null&&c.targets_week&&typeof c.targets_week=="object"?c.targets_week:{},e.targetsMonth.value=c!=null&&c.targets_month&&typeof c.targets_month=="object"?c.targets_month:{};const $=c!=null&&c.targets_config&&typeof c.targets_config=="object"?Zt(c.targets_config):Pa(e.targetsConfig.value);if(e.targetsConfig.value=$,e.themePreference&&(c!=null&&c.theme_preference)){const I=c.theme_preference;e.setThemePreference?e.setThemePreference(I,{persist:!1}):e.themePreference.value=I}if(e.reportingConfig&&(c!=null&&c.reporting_config)&&(e.reportingConfig.value=ni(c.reporting_config,e.reportingConfig.value)),e.deckSettings&&(c!=null&&c.deck_settings)&&(e.deckSettings.value=si(c.deck_settings,e.deckSettings.value)),e.widgetTabs&&(c!=null&&c.widgets)){const I=e.widgetTabs.value||Pr("standard");e.widgetTabs.value=Wr(c.widgets,I)}if(e.onboardingState&&(c!=null&&c.onboarding)&&typeof c.onboarding=="object"){const I=c.onboarding,B={...e.onboardingState.value||{completed:!1,version:0,strategy:"total_only",completed_at:""},...I},y=B.dashboardMode;(y==="quick"||y==="standard"||y==="pro")&&(p=y,(_=e.setDashboardMode)==null||_.call(e,y)),e.onboardingState.value=B}!f&&p&&((O=e.applyDashboardPreset)==null||O.call(e,p)),e.userChangedSelection.value=!1}async function u(c){const f=c.trim();if(f!==""){r.value=!0;try{const p=await e.getJson(e.route("presetsLoad",f),{}),S=(p==null?void 0:p.preset)??{},x=Array.isArray(S==null?void 0:S.warnings)?S.warnings:Array.isArray(p==null?void 0:p.warnings)?p.warnings:[];if(x.length){const $=`Some items in the saved profile are no longer available:
|
||
|
||
${x.map(_=>`• ${_}`).join(`
|
||
`)}
|
||
|
||
Apply the remaining values?`;if(!window.confirm($)){n.value=x,r.value=!1;return}}g(S),n.value=x,s.value=f,e.notifySuccess(`Profile "${f}" applied`),e.queueSave(!0),l().catch($=>console.warn("[opsdash] refresh presets after load failed",$))}catch(p){console.error(p),e.notifyError("Failed to load preset")}finally{r.value=!1}}}async function b(c){const f=c.trim();if(f!=="")try{const p=await e.deleteJson(e.route("presetsDelete",f));t.value=Array.isArray(p==null?void 0:p.presets)?p.presets:t.value,e.notifySuccess(`Profile "${f}" deleted`),s.value===f&&(s.value=null)}catch(p){console.error(p),e.notifyError("Failed to delete preset")}}function v(){n.value=[]}return{presets:t,presetsLoading:a,presetSaving:o,presetApplying:r,presetWarnings:n,lastLoadedPreset:s,refreshPresets:l,savePreset:d,loadPreset:u,deletePreset:b,clearPresetWarnings:v}}function Bx(){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 Ct(()=>{e!==null&&typeof window<"u"&&typeof window.cancelAnimationFrame=="function"&&(window.cancelAnimationFrame(e),e=null)}),{scheduleDraw:t}}function Hx(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 Fx(e){const t=ne(0),a=C(()=>{var u;const l=[],d=typeof window<"u"?window:{};try{if((u=d.OC)!=null&&u.imagePath){const b=d.OC.imagePath("opsdash","app.svg");b&&l.push(b)}}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=C(()=>a.value[Math.min(t.value,a.value.length-1)]||"");function r(){t.value+1<a.value.length&&t.value++}const n=ne(Hx("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 Px(e){const t=C(()=>{var r,n;return Rx({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=C(()=>{var r;return{pie:((r=e.charts.value)==null?void 0:r.pie)||null,stacked:t.value}}),o=C(()=>{var S,x;const r={},n=(S=e.charts.value)==null?void 0:S.pie,s=(x=e.charts.value)==null?void 0:x.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,b=d?(n.ids||[]).map($=>String($??"")):[],v=d?(n.labels||[]).map($=>String($??"")):[],c=d?(n.data||[]).map($=>Number($)||0):[],f=d?n.colors||[]:[],p=g?l.series:[];return e.calendarGroups.value.forEach($=>{const _=[];d&&b.forEach((y,T)=>{u[y]===$.id&&_.push(T)});const O=_.length?{ids:_.map(y=>b[y]),labels:_.map(y=>v[y]),data:_.map(y=>c[y]),colors:_.map(y=>{var T;return f[y]||((T=e.colorsById.value)==null?void 0:T[b[y]])||"#60a5fa"})}:null,I=g?p.filter(y=>u[String((y==null?void 0:y.id)??"")]===$.id):[],B=I.length?{labels:l.labels,series:I}:null;r[$.id]={pie:O,stacked:B}}),r});return{calendarChartData:a,categoryChartsById:o}}const Wx=/^\d{4}-\d{2}-\d{2}$/,zx="__uncategorized__";function Rx(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 S=String((p==null?void 0:p.id)??"");return{...p,id:S,name:String((p==null?void 0:p.name)??(p==null?void 0:p.label)??S),color:String((p==null?void 0:p.color)??""),data:a.map((x,$)=>{var O;const _=Number(((O=p==null?void 0:p.data)==null?void 0:O[$])??0);return Number.isFinite(_)?Math.max(0,_):0})}}),r=jx(e.forecastMode),n=ra(new Date),s=a.map(p=>Wx.test(p)&&p>n),l=[];if(s.forEach((p,S)=>{p&&l.push(S)}),!l.length||r==="off")return{labels:a,series:o};const d=e.targetsConfig??ya(),g=Ux(e.currentTargets),u=e.calendarCategoryMap??{},b=l.length,v=new Map;o.forEach(p=>{let S=0;p.data.forEach((x,$)=>{s[$]||(S+=Math.max(0,x))}),v.set(p.id,S)});const c=Array.from(v.values()).reduce((p,S)=>p+S,0),f=new Map;if(o.forEach(p=>{f.set(p.id,Vx(a.length))}),r==="total"){const p=Math.max(0,Number(d.totalHours??0)),S=Math.max(0,p-c);if(S>1e-4){const x=S/b,$=o.map(O=>O.id),_=Nu($,v,g);$.forEach(O=>{const I=_[O]??0;if(I<=0)return;const B=f.get(O);B&&l.forEach(y=>{B[y]=Un(x*I)})})}}else if(r==="calendar")o.forEach(p=>{const S=g[p.id]??0;if(S<=0)return;const x=Math.max(0,v.get(p.id)??0),$=Math.max(0,S-x);if($<=1e-4)return;const _=$/b,O=f.get(p.id);O&&l.forEach(I=>{O[I]=Un(_)})});else if(r==="category"){const p=new Set,S=Array.isArray(d.categories)?d.categories:[],x=new Map;S.forEach(_=>{x.set(String(_.id),Math.max(0,Number(_.targetHours??0)))});const $=new Map;o.forEach(_=>{const O=u==null?void 0:u[_.id],I=O?String(O):zx;$.has(I)||$.set(I,[]),$.get(I).push(_.id)}),$.forEach((_,O)=>{if(!_.length)return;const I=x.get(O)??0;if(I<=0)return;const B=_.reduce((L,z)=>L+Math.max(0,v.get(z)??0),0),y=Math.max(0,I-B);if(y<=1e-4)return;const T=y/b,m={};_.forEach(L=>{m[L]=g[L]??0});const k=Nu(_,v,m);_.forEach(L=>{const z=k[L]??0;if(z<=0)return;const M=f.get(L);M&&(l.forEach(Z=>{M[Z]=Un(T*z)}),p.add(L))})}),o.forEach(_=>{if(p.has(_.id))return;const O=g[_.id]??0;if(O<=0)return;const I=Math.max(0,v.get(_.id)??0),B=Math.max(0,O-I);if(B<=1e-4)return;const y=B/b,T=f.get(_.id);T&&l.forEach(m=>{T[m]=Un(y)})})}return o.forEach(p=>{const S=f.get(p.id);S&&S.some(x=>x>1e-4)&&(p.forecast=S)}),{labels:a,series:o}}function jx(e){return e==="off"||e==="calendar"||e==="category"?e:"total"}function Vx(e){return Array.from({length:e},()=>0)}function Un(e){const t=Math.round(e*100)/100;return Number.isFinite(t)?t:0}function Ux(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 Nu(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 Qa="__uncategorized__",Iu="Unassigned";function Gx(e){const t=C(()=>{var u;const g=(u=e.targetsConfig.value)==null?void 0:u.categories;return Array.isArray(g)?g:[]}),a=C(()=>{const g={};return t.value.forEach(u=>{g[String(u.id)]=u.label||String(u.id)}),g}),o=C(()=>{var b;const g=new Map;return(((b=e.targetsSummary.value)==null?void 0:b.categories)||[]).forEach(v=>g.set(String(v.id),v)),g}),r=C(()=>{const g=new Map;return t.value.forEach(u=>{(Array.isArray(u.groupIds)?u.groupIds:[]).forEach(v=>{const c=Math.max(0,Math.min(9,Math.trunc(Number(v)||0)));g.set(c,String(u.id))})}),g}),n=C(()=>{var b;const g=e.calendars.value;if(!Array.isArray(g))return(b=e.isDebug)!=null&&b.call(e)&&console.warn("[opsdash] calendars not array",g),{};const u={};return g.forEach(v=>{var p;const c=String((v==null?void 0:v.id)??"");if(!c)return;const f=((p=e.colorsById.value)==null?void 0:p[c])||String((v==null?void 0:v.color)||"");u[c]={name:String((v==null?void 0:v.displayname)||(v==null?void 0:v.name)||(v==null?void 0:v.calendar)||c),color:f||void 0}}),u}),s=C(()=>{var f;const g={},u=r.value,b=e.groupsById.value||{},v=p=>{const S=b==null?void 0:b[p],x=Math.max(0,Math.min(9,Math.trunc(Number(S)||0))),$=u.get(x);g[p]=$||Qa},c=e.calendars.value;return Array.isArray(c)?(c.forEach(p=>{const S=String((p==null?void 0:p.id)??"");S&&v(S)}),(e.selected.value||[]).forEach(p=>{const S=String(p??"");S&&(g[S]||v(S))}),g):((f=e.isDebug)!=null&&f.call(e)&&console.warn("[opsdash] calendarCategoryMap: calendars not array",c),g)}),l=C(()=>{const g=["#60a5fa","#f59e0b","#ef4444","#10b981","#a78bfa","#fb7185","#22d3ee","#f97316"],u={};let b=0;const v=c=>{const f=String((c==null?void 0:c.id)??"");if(!f)return;if(u[f])return u[f];const p=typeof(c==null?void 0:c.color)=="string"&&c.color?c.color:void 0;if(p)return u[f]=p,p;const S=Object.entries(s.value).filter(([,$])=>$===f).map(([$])=>$);for(const $ of S){const _=n.value[$];if(_!=null&&_.color)return u[f]=_.color,_.color}const x=g[b%g.length];return b+=1,u[f]=x,x};return t.value.forEach(c=>v(c)),Object.values(s.value||{}).some(c=>c===Qa)&&v({id:Qa}),u}),d=C(()=>{var I,B,y,T,m,k,L,z,M,Z;const g=[],u=s.value,b=o.value,v=e.byCal.value;if(!Array.isArray(v))return(I=e.isDebug)!=null&&I.call(e)&&console.warn("[opsdash] aggregateCategoryRows: byCal not array",v),g;const c=new Map;v.forEach(j=>{const q=String((j==null?void 0:j.id)??(j==null?void 0:j.calendar_id)??(j==null?void 0:j.calendar)??"");if(!q)return;const Y=u[q]||Qa;c.has(Y)||c.set(Y,[]),c.get(Y).push({...j,calendarId:q})}),(B=e.isDebug)!=null&&B.call(e)&&console.log("[opsdash] aggregateCategoryRows",{rowsSourceIsArray:Array.isArray(v),rowsSourceLength:v.length,byCat:c,assignments:u});const f=((T=(y=e.targetsSummary.value)==null?void 0:y.total)==null?void 0:T.daysLeft)??0,p=((k=(m=e.targetsSummary.value)==null?void 0:m.total)==null?void 0:k.calendarPercent)??0,S=((z=(L=e.targetsSummary.value)==null?void 0:L.total)==null?void 0:z.paceMode)??((Z=(M=e.targetsConfig.value)==null?void 0:M.pace)==null?void 0:Z.mode)??"days_only",x=j=>Math.round(j*100)/100,$=e.currentTargets.value||{},_=(j,q,Y)=>{const U=Y.reduce((se,oe)=>{const G=Number($[oe.calendarId]??0);return Number.isFinite(G)?se+Math.max(0,G):se},0),le=Y.reduce((se,oe)=>{const G=Number((oe==null?void 0:oe.total_hours)??(oe==null?void 0:oe.hours)??0);return Number.isFinite(G)?se+Math.max(0,G):se},0),J=U>0?Math.max(0,Math.min(100,le/U*100)):0,R=le-U,D=Math.max(0,U-le),F=U<=0?"none":J>=100?"done":R>=0?"on_track":"behind",ce=F==="done"?"Done":F==="on_track"?"On Track":F==="behind"?"Behind":"—",Ae=f>0?D/f:0;return{id:j,label:q,actualHours:x(le),targetHours:x(U),percent:J,deltaHours:x(R),remainingHours:x(D),needPerDay:x(Ae),daysLeft:f,calendarPercent:Math.max(0,Math.min(100,p)),gap:x(J-p),status:F,statusLabel:ce,includeWeekend:!0,paceMode:S}};if(t.value.map(j=>String(j.id)).forEach(j=>{const q=a.value[j]||j,Y=c.get(j)||[],U=b.get(j)||_(j,q,Y);g.push({id:j,label:q,rows:Y,summary:U,color:l.value[j]})}),c.has(Qa)){const j=c.get(Qa)||[];g.push({id:Qa,label:Iu,rows:j,summary:_(Qa,Iu,j),color:l.value[Qa]})}return g});return{categoryConfigList:t,categoryLabelById:a,categoryColorMap:l,calendarCategoryMap:s,calendarGroups:d}}function ki(e){const t=Number(e);return Number.isFinite(t)?Math.round(t):0}function St(e){const t=Number(e);return Number.isFinite(t)?t:null}function Yo(e){if(e==null)return null;const t=String(e).trim();return t===""?null:t}function qx(e){const t=C(()=>{var O;const p=(O=e.charts.value)==null?void 0:O.pie;if(!p||!Array.isArray(p.data)||!Array.isArray(p.labels))return[];const S=p.data.map(I=>Number(I)||0),x=p.labels.map(I=>String(I||"")),$=S.reduce((I,B)=>I+Math.max(0,B),0);if($<=0)return[];const _=S.map((I,B)=>({name:x[B]||"",value:Math.max(0,I)}));return _.sort((I,B)=>B.value-I.value),_.slice(0,3).map(I=>({name:I.name,share:I.value/$*100}))}),a=C(()=>{var S;if(t.value.length)return t.value.map(x=>`${x.name} ${Bu(x.share)}`).join(", ");const p=(S=e.stats)==null?void 0:S.top_calendar;if(p&&p.calendar){const x=Number(p.share??0);return`${p.calendar} ${Bu(x)}`}return""}),o=C(()=>{var p;return e.selected.value.length||(((p=e.calendars.value)==null?void 0:p.length)??0)}),r=C(()=>{var _,O;const p=Array.isArray(e.byDay.value)?e.byDay.value:[],S=!!((_=e.stats)!=null&&_.current_period_clipped),x=String(((O=e.stats)==null?void 0:O.current_cutoff)??"").trim(),$=x?x.slice(0,10):"";return!S||!$?p:p.filter(I=>String((I==null?void 0:I.date)??"")<=$)}),n=C(()=>r.value.map(p=>Number((p==null?void 0:p.total_hours)??(p==null?void 0:p.hours)??0))),s=C(()=>{const p=n.value.map(S=>Number(S)||0);return e.activeDayMode.value==="active"?p.filter(S=>S>0):p}),l=C(()=>r.value.filter(p=>{const S=Ou(String(p==null?void 0:p.date));return S>=1&&S<=5}).map(p=>Number((p==null?void 0:p.total_hours)??(p==null?void 0:p.hours)??0))),d=C(()=>r.value.filter(p=>{const S=Ou(String(p==null?void 0:p.date));return S===0||S===6}).map(p=>Number((p==null?void 0:p.total_hours)??(p==null?void 0:p.hours)??0))),g=C(()=>e.activeDayMode.value==="active"?l.value.filter(p=>p>0):l.value),u=C(()=>e.activeDayMode.value==="active"?d.value.filter(p=>p>0):d.value),b=C(()=>{var x,$,_,O;const p=((x=e.stats)==null?void 0:x.balance_index)??(($=e.stats)==null?void 0:$.balanceIndex)??((O=(_=e.stats)==null?void 0:_.balance_overview)==null?void 0:O.index),S=Number(p);return Number.isFinite(S)?S:null}),v=C(()=>{var p,S,x,$,_,O,I;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(((S=e.stats)==null?void 0:S.future_hours)??0),avgDay:xi(s.value),avgEvent:Number(((x=e.stats)==null?void 0:x.avg_per_event)??0),medianDay:_i(s.value),todayActualHours:Number((($=e.stats)==null?void 0:$.today_actual_hours)??0),todayPlannedHours:Number(((_=e.stats)==null?void 0:_.today_future_hours)??0),busiest:((O=e.stats)==null?void 0:O.busiest_day)??null,workdayAvg:xi(g.value),workdayMedian:_i(g.value),weekendAvg:xi(u.value),weekendMedian:_i(u.value),weekendShare:((I=e.stats)==null?void 0:I.weekend_share)??null,activeCalendars:o.value,calendarSummary:a.value,balanceIndex:b.value,delta:(()=>{var y;const B=(y=e.stats)==null?void 0:y.delta;return!B||typeof B!="object"?null:{totalHours:St(B.total_hours)??0,avgPerDay:St(B.avg_per_day)??0,avgPerEvent:St(B.avg_per_event)??0,events:ki(B.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=C(()=>{const p=e.stats,S=p==null?void 0:p.delta,x=St((S==null?void 0:S.weekend_share)??(S==null?void 0:S.weekendShare)),$=St((S==null?void 0:S.evening_share)??(S==null?void 0:S.eveningShare)),_=x!=null||$!=null?{weekendShare:x,eveningShare:$}:null;return{rangeLabel:e.rangeLabel.value,events:ki(p.events),activeDays:St(p.active_days),typicalStart:Yo(p.typical_start),typicalEnd:Yo(p.typical_end),weekendShare:St(p.weekend_share),eveningShare:St(p.evening_share),delta:_,earliestStart:Yo(p.earliest_start),latestEnd:Yo(p.latest_end),overlapEvents:St(p.overlap_events),longestSession:St(p.longest_session),lastDayOff:Yo(p.last_day_off),lastHalfDayOff:Yo(p.last_half_day_off)}}),f=C(()=>{var S;const p=(S=e.stats)==null?void 0:S.day_off_trend;return Array.isArray(p)?p.map(x=>{const $=Number((x==null?void 0:x.totalDays)??(x==null?void 0:x.total_days)??0),_=Number((x==null?void 0:x.daysOff)??(x==null?void 0:x.days_off)??0),O=Number((x==null?void 0:x.daysWorked)??(x==null?void 0:x.days_worked)??0);return{offset:Number((x==null?void 0:x.offset)??0)||0,label:String((x==null?void 0:x.label)??""),from:String((x==null?void 0:x.from)??""),to:String((x==null?void 0:x.to)??""),totalDays:Number.isFinite($)?Math.max(0,$):0,daysOff:Number.isFinite(_)?Math.max(0,_):0,daysWorked:Number.isFinite(O)?Math.max(0,O):0}}).filter(x=>x.totalDays>0):[]});return{topThree:t,topCalendarsSummary:a,timeSummary:v,activitySummary:c,activityDayOffTrend:f}}function xi(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 Ou(e){return new Date(`${e}T00:00:00Z`).getUTCDay()}function Bu(e){return`${Number(e||0).toFixed(1)}%`}function Kx(e){return{balanceOverview:C(()=>{var u,b,v,c;const a=(u=e.stats)==null?void 0:u.balance_overview;if(!a||typeof a!="object")return null;const o=Array.isArray(a.categories)?a.categories.map(f=>({id:String((f==null?void 0:f.id)??""),label:String((f==null?void 0:f.label)??""),hours:St(f==null?void 0:f.hours)??0,share:St(f==null?void 0:f.share)??0,prevShare:St(f==null?void 0:f.prev_share)??0,delta:St(f==null?void 0:f.delta)??0,color:e.categoryColorMap.value[String((f==null?void 0:f.id)??"")]})):[],r=Array.isArray(a.relations)?a.relations.map(f=>({label:String((f==null?void 0:f.label)??""),value:String((f==null?void 0:f.value)??"")})):[],n=Array.isArray((b=a.trend)==null?void 0:b.history)?a.trend.history:Array.isArray(a==null?void 0:a.trendHistory)?a.trendHistory:[],s={delta:Array.isArray((v=a.trend)==null?void 0:v.delta)?a.trend.delta.map(f=>({id:String((f==null?void 0:f.id)??""),label:String((f==null?void 0:f.label)??""),delta:St(f==null?void 0:f.delta)??0})):[],badge:String(((c=a.trend)==null?void 0:c.badge)??""),history:n.map(f=>({offset:ki(f==null?void 0:f.offset)??0,label:String((f==null?void 0:f.label)??""),categories:Array.isArray(f==null?void 0:f.categories)?f.categories.map(p=>({id:String((p==null?void 0:p.id)??""),label:String((p==null?void 0:p.label)??""),share:St(p==null?void 0:p.share)??0})):[]}))},l=Array.isArray(a.daily)?a.daily.map(f=>({date:String((f==null?void 0:f.date)??""),weekday:String((f==null?void 0:f.weekday)??""),total_hours:St(f==null?void 0:f.total_hours)??0,categories:Array.isArray(f==null?void 0:f.categories)?f.categories.map(p=>({id:String((p==null?void 0:p.id)??""),label:String((p==null?void 0:p.label)??""),hours:St(p==null?void 0:p.hours)??0,share:St(p==null?void 0:p.share)??0})):[]})):[],d=Array.isArray(a.warnings)?a.warnings.map(f=>String(f)):[];return{index:St(a.index)??0,categories:o,relations:r,trend:s,daily:l,warnings:d}})}}const Rr=ne("auto"),Gn=ne("light"),Hu=ne(!1),jr=C(()=>Rr.value==="auto"?Gn.value:Rr.value);function Jx(){return Au()??"auto"}function qn(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 Ci(){Gn.value=yi()}let wa=null,Ao=null;function Zx(){typeof window>"u"||wa||(wa=window.matchMedia("(prefers-color-scheme: dark)"),Ao=()=>Ci(),typeof wa.addEventListener=="function"?wa.addEventListener("change",Ao):typeof wa.addListener=="function"&&wa.addListener(Ao))}function Yx(){wa&&(Ao&&(typeof wa.removeEventListener=="function"?wa.removeEventListener("change",Ao):typeof wa.removeListener=="function"&&wa.removeListener(Ao)),wa=null,Ao=null)}function Xx(){Hu.value||(Rr.value=Jx(),Gn.value=yi(),qn(jr.value),Hu.value=!0),Lt(()=>{typeof window<"u"&&window.addEventListener("oc:theme:changed",Ci),Zx(),qn(jr.value)}),Ct(()=>{typeof window<"u"&&window.removeEventListener("oc:theme:changed",Ci),Yx()}),Be(jr,t=>{qn(t)});function e(t){Rr.value=t,qn(jr.value)}return{preference:Rr,effectiveTheme:jr,systemTheme:Gn,setThemePreference:e}}const Si=e=>e==="light"||e==="dark"?e:"auto";function Qx(e){const t=ne(!1),a=ne(Si(e.serverPreference.value));let o=null;const r=typeof e.debounceMs=="number"?e.debounceMs:250,n=()=>{o&&(clearTimeout(o),o=null)};kn()&&Ct(()=>{n()}),Be(e.serverPreference,d=>{const g=Si(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=Si(d);e.applyLocalPreference(u),(g==null?void 0:g.persist)!==!1&&s(u)}return{setThemePreference:l}}function e_(e){const{preference:t,effectiveTheme:a,systemTheme:o,setThemePreference:r}=Xx(),{setThemePreference:n}=Qx({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 t_=Zt(ya()),a_=Pu(t_.categories);function Fu(e){return e==="total_only"||e==="total_plus_categories"||e==="full_granular"}function Pu(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 o_(e){const{autoWizardNeeded:t,manualWizardOpen:a,onboardingRunId:o,onboardingWizardVisible:r,openWizardFromSidebar:n,wizardStartStep:s}=Jy(),l=C(()=>Object.values(e.targetsWeek.value||{}).some(U=>Number(U)>0)),d=C(()=>{const U=(e.calendars.value||[]).length,le=new Set((e.selected.value||[]).filter(Boolean)).size;return U>0&&le>0&&le<U}),g=C(()=>{const U=new Set(e.selected.value||[]);return Object.entries(e.groupsById.value||{}).some(([le,J])=>U.has(le)&&Number(J)>0)}),u=C(()=>{var le;const U=(le=e.targetsConfig.value)==null?void 0:le.categories;return Array.isArray(U)&&U.length>0&&Pu(U)!==a_}),b=C(()=>{var U,le;return!!((U=e.onboardingState.value)!=null&&U.completed)||Fu((le=e.onboardingState.value)==null?void 0:le.strategy)||l.value||g.value||d.value||u.value}),v=e.actions.isOnboardingSaving,c=e.actions.isSnapshotSaving,f=e.actions.snapshotNotice,p=C(()=>(e.calendars.value||[]).map(U=>({id:String((U==null?void 0:U.id)??""),displayname:String((U==null?void 0:U.displayname)??(U==null?void 0:U.name)??(U==null?void 0:U.id)??""),color:typeof(U==null?void 0:U.color)=="string"?U.color:""})).filter(U=>U.id)),S=C(()=>[...e.selected.value]),x=C(()=>{var le;const U=(le=e.onboardingState.value)==null?void 0:le.strategy;return Fu(U)?U:u.value||g.value?"full_granular":l.value?"total_plus_categories":"total_only"}),$=C(()=>{var U;return((U=e.targetsConfig.value)==null?void 0:U.allDayHours)??8}),_=C(()=>{var U;return((U=e.targetsConfig.value)==null?void 0:U.totalHours)??40}),O=C(()=>{var U,le,J;return{balanceTrendLookback:((J=(le=(U=e.targetsConfig.value)==null?void 0:U.balance)==null?void 0:le.trend)==null?void 0:J.lookbackWeeks)??3}}),I=U=>{if(typeof U!="string")return null;const le=U.trim();if(!/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(le))return null;if(le.length===4){const[,J,R,D]=le;return`#${J}${J}${R}${R}${D}${D}`.toUpperCase()}return le.toUpperCase()},B=C(()=>{var le;return(Array.isArray((le=e.targetsConfig.value)==null?void 0:le.categories)?e.targetsConfig.value.categories:[]).map((J,R)=>({id:String((J==null?void 0:J.id)??`cat_${R}`),label:String((J==null?void 0:J.label)??`Category ${R+1}`),targetHours:Number.isFinite(J==null?void 0:J.targetHours)?Number(J.targetHours):0,includeWeekend:!!(J!=null&&J.includeWeekend),paceMode:(J==null?void 0:J.paceMode)==="time_aware"?"time_aware":"days_only",color:I(J==null?void 0:J.color)??null}))}),y=C(()=>{var D;const U={},le=new Map;(Array.isArray((D=e.targetsConfig.value)==null?void 0:D.categories)?e.targetsConfig.value.categories:[]).forEach(F=>{const ce=Array.isArray(F==null?void 0:F.groupIds)?Number(F.groupIds[0]):Number(F==null?void 0:F.groupId);Number.isFinite(ce)&&le.set(ce,String((F==null?void 0:F.id)??""))});const R=new Set(e.selected.value||[]);return Object.entries(e.groupsById.value||{}).forEach(([F,ce])=>{if(!R.has(F))return;const Ae=le.get(Number(ce));Ae&&(U[F]=Ae)}),U}),T=C(()=>({...e.deckSettings.value||{}})),m=C(()=>({...e.reportingConfig.value||{}})),k=C(()=>{var U;return((U=e.onboardingState.value)==null?void 0:U.dashboardMode)||"standard"});function L(U){if(!U)return!0;const le=U.version_required??po;return!U.completed||(U.version??0)<le}function z(U){return U!=null&&U.resetRequested?!0:b.value?!1:L(U)}function M(U){const le=U??e.onboardingState.value;if(!e.hasInitialLoad.value&&!le)return;const J=L(le);t.value=z(le),(J||le!=null&&le.resetRequested)&&(s.value=null),le!=null&&le.resetRequested&&(a.value=!0)}Be(()=>e.onboardingState.value,U=>{e.hasInitialLoad.value&&M(U)});async function Z(U){try{await e.actions.complete(U),a.value=!1,t.value=!1}catch(le){console.error("[opsdash] onboarding complete failed",le)}}async function j(){const U=t.value,le=a.value;try{a.value=!1,t.value=!1,await e.actions.skip()}catch(J){a.value=le,t.value=U,console.error("[opsdash] onboarding skip failed",J)}}function q(){t.value||(t.value=!1,a.value=!1)}async function Y(){try{await e.actions.saveSnapshot()}catch(U){console.error("[opsdash] onboarding snapshot failed",U)}}return{autoWizardNeeded:t,manualWizardOpen:a,onboardingRunId:o,onboardingWizardVisible:r,openWizardFromSidebar:n,wizardStartStep:s,hasExistingConfig:b,wizardCalendars:p,wizardInitialSelection:S,wizardInitialStrategy:x,wizardInitialCategories:B,wizardInitialAssignments:y,wizardInitialAllDayHours:$,wizardInitialTotalHours:_,wizardInitialTargetsConfig:O,wizardInitialDeckSettings:T,wizardInitialReportingConfig:m,wizardInitialDashboardMode:k,isOnboardingSaving:v,isSnapshotSaving:c,snapshotNotice:f,evaluateOnboarding:M,handleWizardComplete:Z,handleWizardSkip:j,handleWizardClose:q,handleWizardSaveSnapshot:Y}}function r_(e){const t=ne(!1),a=ne(!1),o=ne(""),r=C(()=>Eu().filter(p=>p.showInHistory!==!1)),n=C(()=>Mo(e.appVersion.value)),s=C(()=>wi(n.value)),l=C(()=>{const p=Mo(o.value);return wi(p)}),d=C(()=>l.value??s.value),g=C(()=>{var p;return Mo(((p=e.onboardingState.value)==null?void 0:p.releaseNotesSeenVersion)??"")}),u=C(()=>{var p;return e.hasInitialLoad.value&&!e.isBlocked.value&&!!((p=s.value)!=null&&p.autoShow)&&n.value!==""&&n.value!==g.value});function b(){s.value&&(o.value=s.value.version,t.value=!0)}function v(p){const S=wi(p);S&&(o.value=S.version,t.value=!0)}Be(u,p=>{p&&!t.value&&b()},{immediate:!0}),Be(()=>e.isBlocked.value,p=>{var S;p&&u.value&&((S=d.value)==null?void 0:S.version)===n.value?t.value=!1:!p&&u.value&&!t.value&&b()});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 f(){var S;const p=((S=d.value)==null?void 0:S.version)===n.value&&!!s.value;try{p&&(a.value=!0,await c()),t.value=!1}catch(x){console.error("[opsdash] release notes persist failed",x),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:b,openVersion:v,closeOverlay:f}}function n_(e){const t=C(()=>!e.navOpen.value),a=C(()=>e.range.value==="week"?"Switch to month":"Switch to week"),o=C(()=>!e.from.value||!e.to.value?"":Dr(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 Wu=["cals","groups","targets_week","targets_month","targets_config","theme_preference","onboarding","widgets"],s_=new Set(["auto","light","dark"]);function i_(e){if(!e||typeof e!="object")return{cleaned:{},ignored:["<invalid-payload>"]};const t=e,a={},o=[];if(Wu.forEach(r=>{t[r]!==void 0&&(a[r]=t[r])}),Object.keys(t).forEach(r=>{Wu.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&&!s_.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 l_(e,t="0.6.0"){return{version:t,generated:new Date().toISOString(),payload:e}}function d_(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:Pa(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=l_(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}=i_(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,b])=>{const v=Number(b);g[String(u)]=Number.isFinite(v)?v:0}),e.groupsById.value=g}if(l.targets_week){const g={};Object.entries(l.targets_week).forEach(([u,b])=>{const v=Number(b);Number.isFinite(v)&&(g[String(u)]=v)}),e.targetsWeek.value=g}if(l.targets_month){const g={};Object.entries(l.targets_month).forEach(([u,b])=>{const v=Number(b);Number.isFinite(v)&&(g[String(u)]=v)}),e.targetsMonth.value=g}if(l.targets_config&&(e.targetsConfig.value=Zt(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||Pr("standard");e.widgetTabs.value=Wr(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 c_(e=null){const t=ne(e);function a(o){t.value=t.value===o?null:o}return{detailsIndex:t,toggle:a}}function u_(e){const t=C(()=>e.value==="month"?"Last month":"Last week"),a=C(()=>e.value==="month"?"This month":"This week"),o=C(()=>e.value==="month"?"Notes for previous month":"Notes for previous week"),r=C(()=>e.value==="month"?"Notes for current month":"Notes for current week");return{notesLabelPrev:t,notesLabelCurr:a,notesLabelPrevTitle:o,notesLabelCurrTitle:r}}const zu="opsdash.sidebarOpen";function g_(){var e;if(typeof window>"u")return!0;try{const t=(e=window.localStorage)==null?void 0:e.getItem(zu);if(t==="true")return!0;if(t==="false")return!1}catch{return!0}return!0}function p_(){const e=ne(g_());Be(e,r=>{var n;if(typeof window<"u"){try{(n=window.localStorage)==null||n.setItem(zu,r?"true":"false")}catch{}zt(()=>{window.dispatchEvent(new Event("resize"))}).catch(()=>{})}},{immediate:!1});const t=()=>{e.value=!e.value},a=C(()=>e.value?"Hide sidebar":"Show sidebar"),o=C(()=>e.value?"⟨":"⟩");return{navOpen:e,toggleNav:t,navToggleLabel:a,navToggleIcon:o}}const f_=[{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:"notes",title:"Notes",items:[{id:"notes-save",label:"Save note",combo:["Ctrl / ⌘","S"],description:"Persist the current note draft"}]},{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=ne(!1),a=ne(null);let o=!1;const r=!!kn();function n(c){c&&(a.value=c),t.value=!0}function s(){t.value=!1;const c=a.value;if(a.value=null,c&&typeof c.focus=="function")try{c.focus()}catch{}}function l(){typeof e.ensureSidebarVisible=="function"&&e.ensureSidebarVisible()}function d(c,f){f.preventDefault(),l(),c()}function g(c){var x;const f=c;if(!f)return!1;if(f.isContentEditable)return!0;const p=f.tagName;if(!p)return!1;if(["INPUT","TEXTAREA","SELECT"].includes(p))return!0;const S=(x=f.getAttribute)==null?void 0:x.call(f,"role");return!!(S&&["textbox","combobox"].includes(S))}function u(c){if(c.defaultPrevented)return;const f=g(c.target);if((c.key==="Escape"||c.key==="Esc")&&t.value){c.preventDefault(),s();return}if(!c.altKey&&!c.ctrlKey&&!c.metaKey&&!f&&(c.key==="?"||c.shiftKey&&c.key==="/")){c.preventDefault(),n(c.target instanceof HTMLElement?c.target:null);return}if(c.altKey&&!c.ctrlKey&&!c.metaKey){const 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&&!f){c.preventDefault(),e.toggleEditLayout();return}if((c.key==="c"||c.key==="C")&&e.openWidgetOptions&&!f){c.preventDefault(),e.openWidgetOptions();return}}}function b(){o||typeof document>"u"||(document.addEventListener("keydown",u),o=!0)}function v(){!o||typeof document>"u"||(document.removeEventListener("keydown",u),o=!1)}return b(),r&&(Lt(()=>{b()}),Ct(()=>{v()})),{shortcutsOpen:t,openShortcuts:n,closeShortcuts:s,shortcutGroups:f_,unbindShortcuts:v}}function v_(e){const t=ne(!1),a=ne(!1),o=ne(null);async function r(d){var g,u,b,v,c,f;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:po,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&&((b=e.setWidgetTabs)==null||b.call(e,d.widgets)),(c=e.setOnboardingState)==null||c.call(e,{completed:!0,version:po,strategy:d.strategy,dashboardMode:d.dashboardMode,version_required:po,resetRequested:!1,releaseNotesSeenVersion:((v=e.onboardingState.value)==null?void 0:v.releaseNotesSeenVersion)??""});const S=(f=d.profileName)==null?void 0:f.trim();d.saveProfile&&S&&await e.savePreset(S),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,b,v,c,f,p,S;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&&((f=e.setOnboardingState)==null||f.call(e,{completed:d.onboarding.completed??!1,version:d.onboarding.version??po,strategy:d.onboarding.strategy??((b=e.onboardingState.value)==null?void 0:b.strategy)??"total_only",completed_at:d.onboarding.completed_at??"",dashboardMode:d.onboarding.dashboardMode??((v=e.onboardingState.value)==null?void 0:v.dashboardMode),version_required:po,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&&((S=e.setWidgetTabs)==null||S.call(e,d.widgets))}catch(x){throw console.error(x),e.notifyError("Failed to save step"),x}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:po,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 h_(e){const t=ne([]),a=ne(!1),o=ne(""),r=ne(null);let n=0;const s=new Map;let l="";function d(u,b){return`${u}::${b}`}async function g(u=!1){const b=(e.from.value||"").trim(),v=(e.to.value||"").trim();if(!b||!v){t.value=[],o.value="",a.value=!1,r.value=null,l="";return}const c=d(b,v);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 f=++n;a.value=!0,o.value="";try{const p=await J0({from:b,to:v});if(f===n){const S=new Date().toISOString();t.value=p,r.value=S,s.set(c,{cards:p,fetchedAt:S}),l=c}}catch(p){f===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{f===n&&(a.value=!1)}}return Be(()=>[e.from.value,e.to.value],([u,b],[v,c])=>{if(!u||!b){t.value=[];return}u===v&&b===c||g()}),{deckCards:t,deckLoading:a,deckError:o,deckLastFetchedAt:r,refreshDeck:g}}function $i(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 bo(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 Ti(e){return e.dueTs!=null||e.match==="due"}function Mi(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 m_(e){const{deckSettings:t,deckCards:a,uid:o,root:r}=e,n=ne($i(t.value.defaultFilter));Be(()=>t.value.defaultFilter,f=>{const p=$i(f);p!==n.value&&(n.value=p)});const s=C(()=>{const f=new Set((t.value.hiddenBoards||[]).map(p=>Number(p)).filter(p=>Number.isFinite(p)));return(a.value||[]).filter(p=>!f.has(Number(p.boardId)))}),l=C(()=>{const f=t.value.mineMode??"assignee",p=(o.value||"").trim().toLowerCase();return S=>{if(!p)return!1;const x=(S.assignees||[]).some(B=>typeof B.uid=="string"&&B.uid.toLowerCase()===p),$=typeof S.createdBy=="string"?S.createdBy.trim().toLowerCase():"",_=$&&$===p,O=typeof S.doneBy=="string"?S.doneBy.trim().toLowerCase():"",I=O&&O===p;return f==="creator"?_||I:f==="assignee"?x||I:x||_||I}}),d=C(()=>{const f=l.value,p=t.value.solvedIncludesArchived!==!1,S=n.value,x=s.value;if(S==="all")return x;if(S==="mine")return x.filter(O=>f(O));if(S.startsWith("due_today")){const O=S.endsWith("_mine");return x.filter(I=>{const B=Mi(I),y=O?f(I):!0;return B&&y})}if(S.startsWith("due_")){const O=S.endsWith("_mine");return x.filter(I=>{const B=Ti(I),y=O?f(I):!0;return B&&y})}const[$,_]=S.split("_");return x.filter(O=>{const I=bo(O,$,p),B=_==="all"?!0:f(O);return I&&B})}),g=C(()=>{const f=l.value,p=t.value.solvedIncludesArchived!==!1,S=s.value;return[{value:"all",label:"All cards",mine:!1,matches:()=>!0},{value:"open_all",label:"Open · All",mine:!1,matches:$=>bo($,"open",p)},{value:"open_mine",label:"Open · Mine",mine:!0,matches:$=>bo($,"open",p)&&f($)},{value:"done_all",label:"Done · All",mine:!1,matches:$=>bo($,"done",p)},{value:"done_mine",label:"Done · Mine",mine:!0,matches:$=>bo($,"done",p)&&f($)},{value:"archived_all",label:"Archived · All",mine:!1,matches:$=>bo($,"archived",p)},{value:"archived_mine",label:"Archived · Mine",mine:!0,matches:$=>bo($,"archived",p)&&f($)},{value:"due_all",label:"Due · All",mine:!1,matches:$=>Ti($)},{value:"due_mine",label:"Due · Mine",mine:!0,matches:$=>Ti($)&&f($)},{value:"due_today_all",label:"Due today · All",mine:!1,matches:$=>Mi($)},{value:"due_today_mine",label:"Due today · Mine",mine:!0,matches:$=>Mi($)&&f($)}].map($=>({value:$.value,label:$.label,mine:$.mine,count:S.filter($.matches).length}))}),u=C(()=>{const f=l.value,p=t.value.solvedIncludesArchived!==!1,S=s.value,x=[];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(_=>{const O=S.filter(y=>{const T=bo(y,_.status,p),m=_.mine?f(y):!0;return T&&m}),I=new Map;O.forEach(y=>{if(y.boardId==null)return;const T=Number(y.boardId),m=I.get(T)||{count:0,title:y.boardTitle||"",color:y.boardColor};m.count+=1,m.title=y.boardTitle||m.title,m.color=y.boardColor??m.color,I.set(T,m)});let B;if(I.size){const y=Array.from(I.entries()).sort((T,m)=>m[1].count-T[1].count);B={title:y[0][1].title,color:y[0][1].color}}x.push({key:_.key,label:_.label,titles:O.map(y=>y.title||`Card ${y.id}`),count:O.length,board:B})}),x}),b=C(()=>{const f=t.value.ticker||{autoScroll:!0,intervalSeconds:5},p=Math.min(10,Math.max(3,Number(f.intervalSeconds??5)||5));return{autoScroll:f.autoScroll!==!1,intervalSeconds:p}}),v=C(()=>t.value.filtersEnabled&&t.value.enabled&&!!(o.value||"").trim()),c=C(()=>`${r.value||""}/apps/deck/`);return{deckFilter:n,deckVisibleCards:s,deckMineMatcher:l,deckFilteredCards:d,deckSummaryBuckets:u,deckTickerConfig:b,deckCanFilterMine:v,deckUrl:c,deckFilterOptions:g}}const y_=new Set(["deck_cards","deck_stats"]);function w_(e){const{widgetsRegistry:t,createDefaultTabs:a,normalizeWidgetTabs:o,createDashboardPreset:r,dashboardMode:n,deckEnabled:s,hasInitialLoad:l,queueSaveRef:d}=e;function g(){return a()}const u=ne(g().tabs),b=ne(g().defaultTabId),v=ne(b.value),c=ne(!1),f=ne(!1),p=ne("");function S(){var se;l.value&&c.value&&((se=d.value)==null||se.call(d,!1),c.value=!1)}Be(()=>l.value,se=>{se&&c.value&&S()});const x=C(()=>u.value.find(se=>se.id===v.value)||u.value[0]);function $(se){u.value.some(oe=>oe.id===se)&&(v.value=se)}function _(se){u.value.some(oe=>oe.id===se)&&(b.value=se,v.value=se,c.value=!0,S())}const O=C(()=>{var oe;const se=((oe=x.value)==null?void 0:oe.widgets)||[];return s.value?se:se.filter(G=>!y_.has(G.type))}),I=C(()=>Object.keys(t).map(se=>{var oe,G;return{type:se,label:((oe=t[se])==null?void 0:oe.label)||se,category:(G=t[se])==null?void 0:G.category}}));function B(se){var ee;n.value=se;const oe=((ee=x.value)==null?void 0:ee.id)||"tab-1",G=u.value.map(ge=>ge.id===oe?{...ge,widgets:r(se)}:ge);u.value=G,c.value=!0,S()}function y(se,oe){u.value=u.value.map(G=>G.id===se?{...G,widgets:oe([...G.widgets])}:G)}function T(se,oe){var ee;const G=(ee=x.value)==null?void 0:ee.id;G&&(y(G,ge=>ge.map(ve=>ve.id===se?oe({...ve,layout:{...ve.layout}}):ve)),c.value=!0,S())}function m(se){const oe=["quarter","half","full"];T(se,G=>{const ee=oe.indexOf(G.layout.width),ge=oe[(ee+1)%oe.length];return{...G,layout:{...G.layout,width:ge}}})}function k(se){const oe=["s","m","l","xl"];T(se,G=>{const ee=oe.indexOf(G.layout.height),ge=oe[(ee+1)%oe.length];return{...G,layout:{...G.layout,height:ge}}})}function L(se,oe){var P;const G=[...O.value].sort((V,de)=>(V.layout.order||0)-(de.layout.order||0)),ee=G.findIndex(V=>V.id===se);if(ee<0)return;const ge=oe==="up"?ee-1:ee+1;if(ge<0||ge>=G.length)return;const ve=G[ee].layout.order;G[ee].layout.order=G[ge].layout.order,G[ge].layout.order=ve;const N=(P=x.value)==null?void 0:P.id;N&&(y(N,()=>G),c.value=!0,S())}function z(se){var G;const oe=(G=x.value)==null?void 0:G.id;oe&&(y(oe,ee=>ee.filter(ge=>ge.id!==se)),c.value=!0,S())}function M(se){const oe=u.value.find(ee=>ee.id===se);return((oe==null?void 0:oe.widgets)||[]).reduce((ee,ge)=>Math.max(ee,ge.layout.order||0),0)+10}function Z(se,oe={}){return{...se,...oe,layout:{...se.layout,...oe.layout||{}},options:se.options?JSON.parse(JSON.stringify(se.options)):{}}}function j(se,oe){var N;const G=(N=x.value)==null?void 0:N.id;if(!G||G===oe)return!1;const ee=u.value.find(P=>P.id===G),ge=ee==null?void 0:ee.widgets.find(P=>P.id===se);if(!ge||!u.value.some(P=>P.id===oe))return!1;const ve=Z(ge,{layout:{...ge.layout,order:M(oe)}});return u.value=u.value.map(P=>P.id===G?{...P,widgets:P.widgets.filter(V=>V.id!==se)}:P.id===oe?{...P,widgets:[...P.widgets,ve]}:P),v.value=oe,c.value=!0,S(),!0}function q(se,oe){var N;const G=(N=x.value)==null?void 0:N.id;if(!G||G===oe)return null;const ee=u.value.find(P=>P.id===G),ge=ee==null?void 0:ee.widgets.find(P=>P.id===se);if(!ge||!u.value.some(P=>P.id===oe))return null;const ve=Z(ge,{id:`widget-${ge.type}-${Date.now().toString(36)}`,layout:{...ge.layout,order:M(oe)}});return u.value=u.value.map(P=>P.id===oe?{...P,widgets:[...P.widgets,ve]}:P),c.value=!0,S(),ve.id}function Y(se){var ve;const oe=t[se];if(!oe)return;const G=O.value.reduce((N,P)=>Math.max(N,P.layout.order||0),0),ee={id:`widget-${se}-${Date.now()}`,type:se,options:{},layout:{...oe.defaultLayout,order:G+10},version:1},ge=(ve=x.value)==null?void 0:ve.id;ge&&(y(ge,N=>[...N,ee]),p.value="",c.value=!0,S())}function U(se,oe){var P;const G=t[se];if(!G)return;const ee=O.value.reduce((V,de)=>Math.max(V,de.layout.order||0),0);let ge=Number.isFinite(oe)?Number(oe):ee+10;for(Number.isFinite(ge)||(ge=ee+10);O.value.some(V=>V.layout.order===ge);)ge+=.1;const ve={id:`widget-${se}-${Date.now()}`,type:se,options:{},layout:{...G.defaultLayout,order:ge},version:1},N=(P=x.value)==null?void 0:P.id;N&&(y(N,V=>[...V,ve]),c.value=!0,S())}function le(se,oe){var ve;if(!Number.isFinite(oe??NaN))return;const G=Number(oe),ee=O.value.map(N=>N.id===se?{...N,layout:{...N.layout,order:G}}:{...N});ee.sort((N,P)=>(N.layout.order||0)-(P.layout.order||0));const ge=(ve=x.value)==null?void 0:ve.id;ge&&(y(ge,()=>ee.map((N,P)=>({...N,layout:{...N.layout,order:(P+1)*10}}))),c.value=!0,S())}function J(se,oe,G){var ge;const ee=(ge=x.value)==null?void 0:ge.id;ee&&(y(ee,ve=>ve.map(N=>{if(N.id!==se)return N;const P={...N.options||{}};if(oe.includes(".")){const V=oe.split("."),de={...P};let ue=de;for(let fe=0;fe<V.length-1;fe+=1){const _e=V[fe];ue[_e]={...ue[_e]||{}},ue=ue[_e]}return ue[V[V.length-1]]=G,{...N,options:de}}return oe==="scale"?(P.scale=G,"textSize"in P&&delete P.textSize,{...N,options:P}):(P[oe]=G,{...N,options:P})})),c.value=!0,S())}function R(){var oe;const se=(oe=x.value)==null?void 0:oe.id;se&&(y(se,()=>r(n.value)),c.value=!0,S())}function D(se){const oe=`tab-${Date.now().toString(36)}`,G=String(se??"").trim()||`Tab ${u.value.length+1}`,ee={id:oe,label:G.slice(0,48),widgets:[]};u.value=[...u.value,ee],v.value=ee.id,c.value=!0,S()}function F(se,oe){const G=String(oe||"").trim().slice(0,48);G&&(u.value=u.value.map(ee=>ee.id===se?{...ee,label:G}:ee),c.value=!0,S())}function ce(se){var oe,G;u.value.length<=1||(u.value=u.value.filter(ee=>ee.id!==se),b.value===se&&(b.value=((oe=u.value[0])==null?void 0:oe.id)||""),v.value===se&&(v.value=((G=u.value[0])==null?void 0:G.id)||""),c.value=!0,S())}function Ae(se){const oe=a(),G=o(se,oe);u.value=G.tabs,b.value=G.defaultTabId;const ee=v.value;ee&&G.tabs.some(ge=>ge.id===ee)?v.value=ee:v.value=G.defaultTabId}return{layoutTabs:u,defaultTabId:b,activeTabId:v,widgetsDirty:c,isLayoutEditing:f,newWidgetType:p,widgets:O,availableWidgetTypes:I,persistWidgets:S,applyDashboardPreset:B,updateWidget:T,cycleWidth:m,cycleHeight:k,moveWidget:L,moveWidgetToTab:j,duplicateWidgetToTab:q,removeWidget:z,addWidget:Y,addWidgetAt:U,reorderWidget:le,updateWidgetOptions:J,resetWidgets:R,activeTab:x,setActiveTab:$,setDefaultTab:_,addTab:D,renameTab:F,removeTab:ce,setTabsFromPayload:Ae}}function k_(e){const{performLoad:t,refreshPresets:a,onboardingState:o,hasInitialLoad:r,evaluateOnboarding:n,dashboardMode:s}=e;Be(o,l=>{r.value&&n(l)}),Be(o,l=>{const d=l==null?void 0:l.dashboardMode;(d==="quick"||d==="standard"||d==="pro")&&(s.value=d)}),Lt(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 x_(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 __(e){return{widgetContext:C(()=>{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,deckBoards:x_(e.deckCards.value||[]),uid:e.uid.value,notesPrev:e.notesPrev.value,notesCurr:e.notesCurrDraft.value,notesHistory:e.notesHistory.value,notesLabelPrev:e.notesLabelPrev.value,notesLabelCurr:e.notesLabelCurr.value,notesLabelPrevTitle:e.notesLabelPrevTitle.value,notesLabelCurrTitle:e.notesLabelCurrTitle.value,isSavingNote:e.isSavingNote.value,onSaveNote:()=>e.saveNotes(),onUpdateNotes:n=>{e.notesCurrDraft.value=n},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.calendarGroups.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,onboardingStrategy:e.onboardingStrategy.value,activePreset:((r=e.activePreset)==null?void 0:r.value)??null}})}}function C_(e){const t=ne(""),a=ne(null),o=ne({open:!1,x:0,y:0,tabId:null}),r=ne(null),n=()=>{a.value=null,o.value={open:!1,x:0,y:0,tabId:null},r.value=null};Be(()=>e.activeTabId.value,()=>{a.value||(t.value=e.activeTabLabel.value)},{immediate:!0}),Be(()=>e.isLayoutEditing.value,$=>{$||n()});function s($){if(!e.isLayoutEditing.value){e.setActiveTab($),r.value=null;return}if(e.activeTabId.value!==$){e.setActiveTab($),a.value=null,r.value=null;return}a.value=$;const _=e.layoutTabs.value.find(O=>O.id===$);t.value=(_==null?void 0:_.label)||""}function l($,_,O){o.value={open:!0,x:$,y:_,tabId:O}}function d($,_){e.isLayoutEditing.value&&l($.clientX,$.clientY,_)}function g($,_){if(!e.isLayoutEditing.value)return;const O=$.currentTarget;if(!O){l($.clientX,$.clientY,_);return}const I=O.getBoundingClientRect();l(I.left,I.bottom+6,_)}function u(){o.value={open:!1,x:0,y:0,tabId:null}}function b(){o.value.tabId&&(e.setDefaultTab(o.value.tabId),u())}function v(){o.value.tabId&&(e.removeTab(o.value.tabId),u())}function c(){if(!o.value.tabId)return;a.value=o.value.tabId;const $=e.layoutTabs.value.find(_=>_.id===o.value.tabId);t.value=($==null?void 0:$.label)||"",u()}function f(){if(!a.value)return;const $=t.value.trim(),_=e.layoutTabs.value.find(O=>O.id===a.value);if(!_){a.value=null;return}if(!$){t.value=_.label,a.value=null;return}$!==_.label&&e.renameTab(_.id,$),a.value=null}function p(){if(!a.value)return;const $=e.layoutTabs.value.find(_=>_.id===a.value);t.value=($==null?void 0:$.label)||"",a.value=null}function S($){r.value=Number.isFinite($??NaN)?Number($):null}function x($){if(!o.value.open)return;const _=$.target;_&&(_.closest(".tab-context-menu")||_.closest(".tab-btn")||_.closest(".tab-menu-btn")||u())}return Lt(()=>{typeof window<"u"&&window.addEventListener("click",x)}),Ct(()=>{typeof window<"u"&&window.removeEventListener("click",x)}),{tabLabelDraft:t,tabEditingId:a,tabContext:o,addOrderHint:r,handleTabClick:s,openTabContextMenu:d,openTabContextMenuFromButton:g,setDefaultTabFromMenu:b,removeTabFromMenu:v,renameTabFromMenu:c,commitTabLabel:f,cancelTabLabel:p,setAddHint:S,resetContext:n}}const S_={class:"onboarding-header version-notes-overlay__header"},$_={class:"onboarding-title version-notes-overlay__title"},T_={id:"version-notes-title"},M_={class:"version-notes-overlay__teaser"},A_={class:"onboarding-actions version-notes-overlay__actions"},L_={key:0,class:"version-notes-overlay__pill version-notes-overlay__pill--accent"},D_={class:"version-notes-overlay__pill"},E_=["disabled"],N_={class:"onboarding-body version-notes-overlay__body"},I_={class:"version-notes-overlay__content"},O_={class:"version-notes-overlay__section version-notes-overlay__section--intro"},B_={class:"version-notes-overlay__intro-copy"},H_={key:0,class:"version-notes-overlay__apply-block"},F_={class:"version-notes-overlay__apply-row"},P_={class:"version-notes-overlay__apply-text"},W_={class:"version-notes-overlay__apply-actions"},z_=["onClick"],R_={class:"version-notes-overlay__section"},j_={class:"version-notes-overlay__highlights"},V_={key:0,class:"version-notes-overlay__section"},U_={class:"version-notes-overlay__images"},G_=["href"],q_=["src","alt"],K_={class:"version-notes-overlay__image-meta"},J_={key:0},Z_={class:"version-notes-overlay__history"},Y_={class:"version-notes-overlay__history-list"},X_=["onClick"],Q_={class:"version-notes-overlay__history-top"},e2={class:"version-notes-overlay__history-title"},t2={class:"onboarding-footer version-notes-overlay__footer"},a2={class:"version-notes-overlay__footer-note"},o2={key:0,class:"version-notes-overlay__link-row"},r2=["href"],n2=at(Pe({__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=C(()=>(a.entry.actions??[]).filter(u=>u.type==="link")),n=C(()=>(a.entry.actions??[]).filter(u=>u.type!=="link")),s=C(()=>n.value.some(u=>u.type==="open_preferences")?"Want to turn recap reporting on?":"Want the new layout right now?"),l=C(()=>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=C(()=>new Intl.DateTimeFormat(void 0,{year:"numeric",month:"short",day:"numeric"}));function g(u){const b=new Date(u);return Number.isNaN(b.getTime())?u:d.value.format(b)}return(u,b)=>(h(),nt(ai,{visible:u.visible,theme:u.theme,"panel-class":"version-notes-overlay","aria-labelledby":"version-notes-title",onClose:b[2]||(b[2]=v=>o("close"))},{default:mt(()=>{var v;return[i("header",S_,[i("div",$_,[b[3]||(b[3]=i("div",{class:"version-notes-overlay__eyebrow"},"What's new",-1)),i("h2",T_,"Opsdash "+E(u.entry.version),1),i("p",M_,E(u.entry.teaser),1)]),i("div",A_,[u.entry.version===u.selectedVersion?(h(),w("span",L_,"Current")):te("",!0),i("span",D_,E(g(u.entry.date)),1),i("button",{type:"button",class:"close-btn",disabled:u.isSaving,"aria-label":"Close release notes",onClick:b[0]||(b[0]=c=>o("close"))}," × ",8,E_)])]),i("main",N_,[i("section",I_,[i("section",O_,[b[4]||(b[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",B_,E(u.entry.summary||u.entry.teaser),1),n.value.length?(h(),w("div",H_,[i("div",F_,[i("div",P_,[i("strong",null,E(s.value),1),Re(" "+E(l.value),1)]),i("div",W_,[(h(!0),w(ke,null,Ie(n.value,c=>(h(),w("button",{key:`${u.entry.version}-${c.label}`,type:"button",class:"version-notes-overlay__reload-btn",onClick:f=>o("action",c.type)},E(c.label),9,z_))),128))])])])):te("",!0)]),i("section",R_,[b[5]||(b[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",j_,[(h(!0),w(ke,null,Ie(u.entry.highlights,c=>(h(),w("li",{key:c},E(c),1))),128))])]),(v=u.entry.images)!=null&&v.length?(h(),w("section",V_,[b[6]||(b[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",U_,[(h(!0),w(ke,null,Ie(u.entry.images,c=>(h(),w("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,q_),i("div",K_,[i("strong",null,E(c.title),1),c.caption?(h(),w("span",J_,E(c.caption),1)):te("",!0)])],8,G_))),128))])])):te("",!0)]),i("aside",Z_,[b[7]||(b[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",Y_,[(h(!0),w(ke,null,Ie(u.history,c=>(h(),w("button",{key:c.version,type:"button",class:we(["version-notes-overlay__history-item",{"is-active":c.version===u.selectedVersion}]),onClick:f=>o("select-version",c.version)},[i("div",Q_,[i("strong",null,"v"+E(c.version),1),i("span",null,E(c.version===u.entry.version?"Open now":g(c.date)),1)]),i("div",e2,E(c.title),1),i("p",null,E(c.teaser),1)],10,X_))),128))])])]),i("footer",t2,[i("div",a2,[b[8]||(b[8]=Re(" The latest release opens first. Older updates stay available here whenever you want to look back. ",-1)),r.value.length?(h(),w("div",o2,[(h(!0),w(ke,null,Ie(r.value,c=>(h(),w("a",{key:`${u.entry.version}-${c.label}`,class:"version-notes-overlay__link",href:c.href,target:"_blank",rel:"noopener noreferrer"},E(c.label),9,r2))),128))])):te("",!0)]),We(A(oa),{type:"primary",disabled:u.isSaving,onClick:b[1]||(b[1]=c=>o("close"))},{default:mt(()=>[Re(E(u.isSaving?"Saving…":"Back to dashboard"),1)]),_:1},8,["disabled"])])]}),_:1},8,["visible","theme"]))}}),[["__scopeId","data-v-2f5c4bbe"]]),Vr={name:"opsdash",version:"0.8.1",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"}},s2={class:"app-shell"},i2={class:"app-main"},l2={class:"app-container"},d2=["title"],c2={key:0,class:"bar-row"},u2=["aria-label"],g2={class:"app-seg w2"},p2=["disabled"],f2=["disabled"],b2={class:"app-navc"},v2=["disabled"],h2={class:"navc-date"},m2={class:"navc-sub"},y2={class:"navc-date-start"},w2={class:"navc-title"},k2={class:"navc-date-end"},x2=["disabled"],_2=["disabled"],C2={class:"tab-strip",role:"tablist","aria-label":"Dashboard tabs"},S2=["aria-selected","onClick","onContextmenu"],$2={class:"tab-label"},T2={key:0,class:"tab-default-badge"},M2={key:0,class:"refresh-badge",role:"status","aria-live":"polite"},A2={class:"bar-row"},L2={class:"tab-strip",role:"tablist","aria-label":"Dashboard tabs"},D2=["aria-selected","onClick","onContextmenu"],E2={key:1,class:"tab-label"},N2=["aria-label","onClick"],I2={class:"bar-row sep bar-row--edit-actions"},O2={class:"itb"},B2={key:0,class:"sel-chip sel-chip--named"},H2={class:"sel-chip__body"},F2={class:"sel-chip__type"},P2=["value","placeholder"],W2={key:1,class:"sel-chip sel-chip--empty"},z2=["disabled"],R2={key:0,class:"ic-group__rail"},j2=["disabled"],V2=["disabled"],U2=["disabled"],G2=["disabled"],q2={key:0,class:"ic-group__rail"},K2=["disabled"],J2=["disabled"],Z2=["disabled"],Y2=["disabled"],X2=["disabled"],Q2=["disabled"],eC={key:0,class:"ic-group__rail"},tC=["disabled"],aC=["disabled"],oC=["disabled"],rC=["disabled"],nC=["disabled"],sC={key:0,class:"ic-group__rail ic-group__rail--color"},iC=["title","onClick"],lC={class:"ic-color-custom",title:"Custom color"},dC=["value"],cC={class:"ic-config-wrap"},uC={key:1,class:"ic",type:"button",disabled:"",title:"Widget configuration"},gC=["disabled"],pC=["disabled"],fC=["disabled"],bC=["disabled"],vC={class:"cards"},hC={class:"hint footer"},mC=Pe({__name:"App",setup(e){function t(H){var Se,Oe;const W=window;(Oe=(Se=W.OC)==null?void 0:Se.Notification)!=null&&Oe.showTemporary?W.OC.Notification.showTemporary(H):console.log("SUCCESS:",H)}function a(H){var Se,Oe;const W=window;(Oe=(Se=W.OC)==null?void 0:Se.Notification)!=null&&Oe.showTemporary?W.OC.Notification.showTemporary(H):(console.error("ERROR:",H),alert(H))}const{navOpen:o,toggleNav:r,navToggleLabel:n,navToggleIcon:s}=p_(),l=ne(!1);function d(){o.value||r()}Be(()=>o.value,H=>{if(typeof document>"u")return;const W=H?"var(--app-navigation-width, 300px)":"0px";document.body.style.setProperty("--opsdash-nav-offset",W)},{immediate:!0}),Ct(()=>{typeof document>"u"||document.body.style.removeProperty("--opsdash-nav-offset")});const g=ne("week"),u=ne(0),b=C(()=>{const H=za.value;if(!H)return"Partial data due to caps";const W=[];return H.maxPerCal!=null&&W.push(`cap per calendar: ${H.maxPerCal}`),H.maxTotal!=null&&W.push(`cap total: ${H.maxTotal}`),H.totalProcessed!=null&&W.push(`processed: ${H.totalProcessed}`),W.join(" · ")}),v=ne(!1),{scheduleDraw:c}=Bx(),{route:f,getJson:p,postJson:S,deleteJson:x,root:$}=$u(),_=xx({range:g,offset:u,route:H=>f(H),getJson:p,postJson:S,notifySuccess:t,notifyError:a}),{notesPrev:O,notesCurrDraft:I,notesHistory:B,isSavingNote:y,fetchNotes:T,saveNotes:m}=_,k=ne(!1),L=ne("standard"),z=ne(null),M=ne(null),Z=ne(!0),{layoutTabs:j,defaultTabId:q,activeTabId:Y,isLayoutEditing:U,newWidgetType:le,widgets:J,availableWidgetTypes:R,activeTab:D,setActiveTab:F,setDefaultTab:ce,addTab:Ae,renameTab:se,removeTab:oe,setTabsFromPayload:G,applyDashboardPreset:ee,cycleWidth:ge,cycleHeight:ve,moveWidget:N,moveWidgetToTab:P,duplicateWidgetToTab:V,removeWidget:de,addWidgetAt:ue,reorderWidget:fe,updateWidgetOptions:_e}=w_({widgetsRegistry:Fr,createDefaultTabs:()=>hi(Pr(L.value,z.value),z.value),normalizeWidgetTabs:Wr,createDashboardPreset:H=>G0(_u(H,z.value),z.value),dashboardMode:L,deckEnabled:Z,hasInitialLoad:k,queueSaveRef:M}),ye=C(()=>({tabs:j.value,defaultTabId:q.value})),xe=C({get:()=>ye.value,set:H=>{H&&G(H)}}),be=new Set(["chart_per_day","chart_dow","chart_hod","time_summary_lookback","time_summary_v2"]),Ee=()=>{var H;if(ag.value<=1)return!1;for(const W of j.value||[]){const Se=(W==null?void 0:W.widgets)||[];for(const Oe of Se){const qe=String((Oe==null?void 0:Oe.type)??"");if(be.has(qe)&&!(qe==="time_summary_v2"&&((H=Oe==null?void 0:Oe.options)==null?void 0:H.showHistory)===!1))return!0}}return!1},{tabLabelDraft:Me,tabEditingId:ae,tabContext:re,addOrderHint:he,handleTabClick:$e,openTabContextMenu:Le,openTabContextMenuFromButton:X,setDefaultTabFromMenu:ie,removeTabFromMenu:Te,renameTabFromMenu:Ne,commitTabLabel:Ze,cancelTabLabel:vt,setAddHint:et,resetContext:it}=C_({layoutTabs:j,activeTabId:Y,activeTabLabel:C(()=>{var H;return((H=D.value)==null?void 0:H.label)||""}),isLayoutEditing:U,setActiveTab:F,setDefaultTab:ce,removeTab:oe,renameTab:se});function Tt(H,W){const Se=j.value.find(qe=>qe.id===W);if(!Se)return;P(H,W)&&t(`Moved widget to ${Se.label}`)}function dt(H,W){const Se=j.value.find(qe=>qe.id===W);if(!Se)return;V(H,W)&&t(`Copied widget to ${Se.label}`)}function ht(){U.value=!U.value,U.value||(it(),Ve.value=!1,It.value=null)}const Ue=ne(!1),Ve=ne(!1),ot=ne(null),ct=ne(null),Je=ne(!1),_t=ne(null),Et=ne(null),Nt=ne(null),Qt=ne(null);let Ft=null;function Ut(){Ft==null||Ft();const H=document.querySelector(".app-main");if(!H)return;const W=()=>{vo(H),Se()},Se=()=>{if(!Nt.value||!U.value){Je.value=!1;return}Je.value=H.scrollTop>sa};H.addEventListener("scroll",Se,{passive:!0}),window.addEventListener("resize",W,{passive:!0}),Ft=()=>{H.removeEventListener("scroll",Se),window.removeEventListener("resize",W)},W()}const lt=ne(0);let sa=0;function vo(H){const W=Et.value,Se=Nt.value,Oe=Qt.value;if(!Se||!W){lt.value=0,sa=0;return}const qe=Ma(),me=Se.getBoundingClientRect(),je=H.getBoundingClientRect(),ta=(Oe??Se).getBoundingClientRect();lt.value=Math.ceil(me.height),sa=Math.max(0,ta.top-je.top+H.scrollTop-qe)}function Ma(){if(typeof window>"u")return 62;const H=getComputedStyle(document.documentElement).getPropertyValue("--header-height").trim(),W=Number.parseFloat(H||"50");return(Number.isFinite(W)?W:50)+12}Lt(()=>{Ut()}),Be(U,async H=>{if(!H){Je.value=!1,lt.value=0;return}await zt(),requestAnimationFrame(()=>{Ut()})}),Ct(()=>{Ft==null||Ft()});function Wa(H){g.value=H,u.value=0,oo()}function ho(H){Ue.value=!1;const W=Number.isFinite(he.value??NaN)?he.value??void 0:void 0;ue(H,W),he.value=null}const{calendars:ka,colorsByName:eo,colorsById:yt,groupsById:pa,selected:xt,isInitialLoading:ia,isRefreshing:Aa,isTruncated:Lo,truncLimits:za,uid:Do,from:fa,to:ea,stats:ut,byCal:xa,byDay:la,charts:Ye,targetsWeek:st,targetsMonth:bt,targetsConfig:kt,onboarding:er,load:Li,themePreference:Di,reportingConfig:Eo,deckSettings:ba}=Ax({range:g,offset:u,userChangedSelection:v,route:H=>f(H),getJson:p,postJson:S,notifyError:a,scheduleDraw:c,fetchNotes:T,isDebug:rg,includeLookback:()=>Ee(),widgetTabs:xe,onCoreLoaded:H=>{k.value||(k.value=!0),Ui((H==null?void 0:H.onboarding)??null),typeof(H==null?void 0:H.activePreset)=="string"&&H.activePreset!==""&&(ct.value=H.activePreset)}});Be(()=>ba.value.enabled,H=>{Z.value=H},{immediate:!0});const{deckCards:Ur,deckLoading:Ei,deckError:Ni}=h_({from:fa,to:ea,notifyError:a}),{deckFilter:Zn,deckSummaryBuckets:Ii,deckTickerConfig:Oi,deckUrl:Bi}=m_({deckSettings:ba,deckCards:Ur,uid:Do,root:$}),Hi=H=>{Zn.value=$i(H)},Pt=er;Be(()=>{var H;return((H=Pt.value)==null?void 0:H.strategy)??null},(H,W)=>{z.value=H,Qn(!0,W??null)},{immediate:!0});const{themePreference:tr,effectiveTheme:to,systemTheme:Yn,setThemePreference:ar}=e_({serverPreference:Di,route:H=>f(H),postJson:S,notifySuccess:t,notifyError:a}),Xn=C(()=>to.value==="dark"?"opsdash-theme-dark":"opsdash-theme-light");function Fi(H){Mt(H||"goals")}const{exportSidebarConfig:Pi,importSidebarConfig:Wi}=d_({selected:xt,groupsById:pa,targetsWeek:st,targetsMonth:bt,targetsConfig:kt,themePreference:tr,onboardingState:Pt,widgetTabs:xe,setThemePreference:ar,postJson:S,route:H=>f(H),performLoad:()=>oo(),notifySuccess:t,notifyError:a}),{queueSave:Gr}=Dx({route:H=>f(H),postJson:S,notifyError:a,notifySuccess:t,onReload:()=>oo(),selected:xt,groupsById:pa,targetsWeek:st,targetsMonth:bt,targetsConfig:kt,themePreference:tr,reportingConfig:Eo,deckSettings:ba,widgetTabs:xe,onboardingState:Pt,activePreset:ct});M.value=Gr;const No=C(()=>{var W;const H=new Set(Rn((W=Pt.value)==null?void 0:W.strategy));return H.size?R.value.filter(Se=>!H.has(Se.type)):R.value});function Qn(H=!1,W=null){var me,je;let Se=hi(ye.value,(me=Pt.value)==null?void 0:me.strategy);H&&(Se=xu(Se,(je=Pt.value)==null?void 0:je.strategy,W));const Oe=JSON.stringify(ye.value),qe=JSON.stringify(Se);Oe!==qe&&(G(Se),k.value&&Gr(!1))}Be(()=>le.value,H=>{var Se;new Set(Rn((Se=Pt.value)==null?void 0:Se.strategy)).has(H)&&(le.value="")}),Be(()=>ye.value,()=>{Qn()},{deep:!0});const{presets:zi,presetsLoading:Ri,presetSaving:ji,presetApplying:es,presetWarnings:ts,lastLoadedPreset:K,refreshPresets:Q,savePreset:pe,loadPreset:Ce,deletePreset:De,clearPresetWarnings:tt}=Ox({route:(H,W)=>f(H,W),getJson:p,postJson:S,deleteJson:x,notifyError:a,notifySuccess:t,queueSave:Gr,selected:xt,groupsById:pa,targetsWeek:st,targetsMonth:bt,targetsConfig:kt,themePreference:tr,setThemePreference:ar,reportingConfig:Eo,deckSettings:ba,widgetTabs:xe,onboardingState:Pt,setDashboardMode:H=>{L.value=H},applyDashboardPreset:H=>{ee(H)},userChangedSelection:v});Be(K,H=>{ct.value=H},{immediate:!0});const Xe=v_({onboardingState:Pt,route:H=>f(H),postJson:S,notifySuccess:t,notifyError:a,setThemePreference:ar,savePreset:pe,reloadAfterPersist:()=>oo(),setSelected:H=>{xt.value=[...H]},setTargetsWeek:H=>{st.value={...H}},setTargetsMonth:H=>{bt.value={...H}},setTargetsConfig:H=>{kt.value=Pa(H)},setGroupsById:H=>{pa.value={...H}},setDeckSettings:H=>{ba.value={...H}},setReportingConfig:H=>{Eo.value={...H}},setOnboardingState:H=>{er.value={...er.value||{},...H}},setDashboardMode:H=>{L.value=H},setWidgetTabs:H=>{G(H)}}),{autoWizardNeeded:ao,onboardingRunId:or,onboardingWizardVisible:La,openWizardFromSidebar:Mt,wizardStartStep:rr,hasExistingConfig:as,wizardCalendars:Vi,wizardInitialSelection:B8,wizardInitialStrategy:H8,wizardInitialAllDayHours:F8,wizardInitialTotalHours:P8,wizardInitialTargetsConfig:W8,wizardInitialDeckSettings:z8,wizardInitialReportingConfig:R8,wizardInitialDashboardMode:j8,wizardInitialCategories:V8,wizardInitialAssignments:U8,isOnboardingSaving:G8,isSnapshotSaving:q8,snapshotNotice:K8,evaluateOnboarding:Ui,handleWizardComplete:J8,handleWizardSkip:Z8,handleWizardClose:Y8,handleWizardSaveSnapshot:X8}=o_({onboardingState:Pt,calendars:ka,selected:xt,targetsWeek:st,groupsById:pa,targetsConfig:kt,deckSettings:ba,reportingConfig:Eo,hasInitialLoad:k,actions:Xe}),Q8=async H=>{await J8(H),H!=null&&H.dashboardMode&&ee(H.dashboardMode)},e6=async H=>{H!=null&&H.dashboardMode&&ee(H.dashboardMode),await Xe.saveStep(H)};async function qu(H,W,Se){try{const Oe=await S(f("reportTestSend"),{range:g.value,offset:W,cals:H.selected,groups:H.groups,targets_config:H.targetsConfig,reporting_config:H.reportingConfig});t(`Test ${Se} sent to ${Oe.email}`)}catch(Oe){console.error(Oe),a(`Failed to send test ${Se}`)}}const t6=H=>qu(H,-1,"recap"),a6=H=>qu(H,0,"checkpoint");async function oo(){await Li(),ot.value=new Date,k.value||(k.value=!0),Ui()}const{rangeDateLabel:o6,loadCurrent:Ku,toggleRangeCollapsed:r6,goPrevious:Gi,goNext:qi}=n_({navOpen:o,range:g,offset:u,from:fa,to:ea,isLoading:ia,performLoad:()=>oo()}),{shortcutsOpen:Ju,openShortcuts:n6,closeShortcuts:s6,shortcutGroups:i6}=b_({goPrevious:Gi,goNext:qi,toggleRange:r6,saveNotes:()=>m(),openConfigPanel:()=>d(),toggleEditLayout:()=>{U.value=!U.value},openWidgetOptions:()=>{var H,W;U.value&&((W=(H=os.value)==null?void 0:H.openOptionsForSelected)==null||W.call(H))},ensureSidebarVisible:d}),{appVersion:Ki}=Fx({pingUrl:()=>f("ping"),getJson:p,pkgVersion:Vr!=null&&Vr.version?String(Vr.version):"",root:$}),l6=C(()=>La.value||l.value||Ju.value),{isOpen:Zu,isSaving:d6,entries:c6,currentEntry:u6,activeEntry:Yu,selectedVersion:g6,openCurrent:p6,openVersion:f6,closeOverlay:Xu}=r_({appVersion:Ki,onboardingState:Pt,hasInitialLoad:k,isBlocked:l6,route:H=>f(H),postJson:S,notifyError:a}),b6=C(()=>!!u6.value);function v6(H){if(H==="reload"){ee(L.value);return}H==="open_preferences"&&(Xu(),Mt("preferences"))}const Qu=ne("active"),eg=C(()=>g.value==="month"?"Month":"Week");C(()=>g.value==="month"?"This month":"This week");const h6=C(()=>{const H=jt(fa.value);return H?g.value==="month"?`Month ${H.getUTCMonth()+1}`:`Week ${Ya(H)}`:g.value==="month"?"Month":"Week"}),os=ne(null);C(()=>{const H=jt(fa.value);return H?g.value==="month"?`MONTH ${H.getUTCMonth()+1}`:`WEEK ${Ya(H)}`:g.value.toUpperCase()}),C(()=>o6.value);const Ji=C(()=>{const H=Pa(kt.value);return g.value==="month"&&(H.totalHours=Fa(H.totalHours),H.categories=H.categories.map(W=>({...W,targetHours:Fa(W.targetHours)}))),H}),tg=C(()=>{const H=Ji.value;try{return mc({config:H,stats:ut,byDay:la.value||[],byCal:xa.value||[],groupsById:pa.value||{},range:g.value,from:fa.value,to:ea.value})}catch(W){return console.error("[opsdash] targets summary failed",W),hc(H)}}),Zi=C(()=>{if(g.value==="month"){const H=bt.value||{};if(H&&Object.keys(H).length>0)return H;const W=st.value||{},Se={};return Object.entries(W).forEach(([Oe,qe])=>{const me=Number(qe);Number.isFinite(me)&&(Se[Oe]=Fa(me))}),Se}return st.value||{}}),Yi=C(()=>{var H;return{...vc(),...((H=kt.value)==null?void 0:H.activityCard)??{}}}),Xi=C(()=>{var Se;const H=Ko(),W=((Se=kt.value)==null?void 0:Se.balance)??H;return{...H,...W,thresholds:{...H.thresholds,...W.thresholds??{}},relations:{...H.relations,...W.relations??{}},trend:{...H.trend,...W.trend??{}},dayparts:{...H.dayparts,...W.dayparts??{}},ui:{...H.ui,...W.ui??{}}}}),m6=C(()=>({showNotes:!!Xi.value.ui.showNotes})),ag=C(()=>{var H;return Math.max(1,Math.min(6,((H=Xi.value.trend)==null?void 0:H.lookbackWeeks)??1))}),y6=C(()=>{if(!Xi.value.ui.showNotes)return"";const H=(I.value??"").trim();return H||(O.value??"").trim()}),{categoryLabelById:w6,categoryColorMap:og,calendarCategoryMap:Qi,calendarGroups:rs}=Gx({calendars:ka,selected:xt,groupsById:pa,colorsById:yt,targetsConfig:Ji,targetsSummary:tg,byCal:xa,currentTargets:Zi,isDebug:rg}),{balanceOverview:k6}=Kx({stats:ut,categoryColorMap:og});C(()=>{var Se,Oe;if(!Yi.value.showHint)return"";const W=(Array.isArray((Oe=(Se=kt.value)==null?void 0:Se.balance)==null?void 0:Oe.categories)?kt.value.balance.categories:[]).map(qe=>{const me=String(qe??"").trim();if(!me)return"";const je=w6.value[me];return je||me.toUpperCase()}).filter(qe=>qe);return W.length?`Mapping via Sidebar – ${W.join(" / ")}`:""});const{calendarChartData:el,categoryChartsById:x6}=Px({charts:Ye,colorsById:yt,calendarGroups:rs,calendarCategoryMap:Qi,targetsConfig:Ji,currentTargets:Zi,activityCardConfig:Yi}),_6=C(()=>{var qe;const H=(qe=el.value)==null?void 0:qe.stacked;if(!H||!Array.isArray(H.labels)||!Array.isArray(H.series))return{};const W=ra(new Date),Se=H.labels.findIndex(me=>String(me??"")===W);if(Se<0)return{};const Oe={};return H.series.forEach(me=>{var ir;const je=String((me==null?void 0:me.id)??""),ta=Number(((ir=me==null?void 0:me.data)==null?void 0:ir[Se])??0),sl=Number.isFinite(ta)?Math.max(0,ta):0;je&&(Oe[je]=(Oe[je]||0)+sl)}),Oe}),C6=C(()=>{var je;const H=(je=el.value)==null?void 0:je.stacked,W=H==null?void 0:H.labels,Se=H==null?void 0:H.series;if(!H||!Array.isArray(W)||!Array.isArray(Se))return{};const Oe=ra(new Date),qe=W.findIndex(ta=>String(ta??"")===Oe);if(qe<0)return{};const me={};return Se.forEach(ta=>{var dg,cg;const sl=String((ta==null?void 0:ta.id)??""),ir=(dg=Qi.value)==null?void 0:dg[sl];if(!ir)return;const lg=Number(((cg=ta==null?void 0:ta.data)==null?void 0:cg[qe])??0),n$=Number.isFinite(lg)?Math.max(0,lg):0;me[ir]=(me[ir]||0)+n$}),me}),S6=C(()=>rs.value.map(H=>({...H,todayHours:C6.value[H.id]||0}))),$6=C(()=>{const H=rs.value||[];return H.length&&[...H].sort((Se,Oe)=>(Oe.summary.actualHours||0)-(Se.summary.actualHours||0))[0]||null}),{timeSummary:T6,activitySummary:M6,activityDayOffTrend:A6}=qx({stats:ut,byDay:la,charts:Ye,calendars:ka,selected:xt,rangeLabel:eg,rangeStart:fa,rangeEnd:ea,offset:u,activeDayMode:Qu,topCategory:$6});c_();function rg(){return!1}const{notesLabelPrev:L6,notesLabelCurr:D6,notesLabelPrevTitle:E6,notesLabelCurrTitle:N6}=u_(g),{widgetContext:ng}=__({timeSummary:T6,activeDayMode:Qu,targetsSummary:tg,targetsConfig:kt,stats:ut,byDay:la,byCal:xa,groupsById:pa,calendarGroupsWithToday:S6,balanceOverview:k6,balanceCardConfig:m6,rangeLabel:eg,range:g,offset:u,from:fa,to:ea,trendLookbackWeeks:ag,balanceNote:y6,activitySummary:M6,activityCardConfig:Yi,activityDayOffTrend:A6,deckSummaryBuckets:Ii,deckLoading:Ei,deckError:Ni,deckTickerConfig:Oi,deckFilter:Zn,setDeckFilter:Hi,deckSettings:ba,deckUrl:Bi,deckCards:Ur,uid:Do,notesPrev:O,notesCurrDraft:I,notesHistory:B,notesLabelPrev:L6,notesLabelCurr:D6,notesLabelPrevTitle:E6,notesLabelCurrTitle:N6,isSavingNote:y,saveNotes:m,isLoading:ia,isInitialLoading:ia,isRefreshing:Aa,hasInitialLoad:k,isLayoutEditing:U,updateWidgetOptions:_e,charts:Ye,calendarChartData:el,categoryChartsById:x6,calendarGroups:rs,calendars:ka,calendarCategoryMap:Qi,categoryColorMap:og,colorsById:yt,colorsByName:eo,currentTargets:Zi,targetsWeek:st,selected:xt,calendarTodayHours:_6,onboardingStrategy:C(()=>{var H;return((H=Pt.value)==null?void 0:H.strategy)??null}),activePreset:ct}),I6=C(()=>L.value==="quick"?"Empty preset":L.value==="pro"?"Advanced preset":"Standard preset");function O6(H){return Number(H??0).toFixed(1)}function B6(H){const W=Number(H??0);return Number.isFinite(W)?Number.isInteger(W)?String(W):W.toFixed(1):"0"}const tl=C(()=>{var Se;const H=(Se=Pt.value)==null?void 0:Se.strategy;if(!H)return"—";const W=Cc().find(Oe=>Oe.id===H);return(W==null?void 0:W.title)??String(H)}),H6=C(()=>{const H=new Map((ka.value||[]).map(Se=>[String((Se==null?void 0:Se.id)??""),String((Se==null?void 0:Se.displayname)??(Se==null?void 0:Se.name)??(Se==null?void 0:Se.calendar)??(Se==null?void 0:Se.id)??"Calendar")])),W=(xt.value||[]).map(Se=>H.get(String(Se))).filter(Se=>!!Se);return W.length?W:["None selected"]});function F6(H,W,Se=", "){const Oe=H.filter(je=>je&&je!=="None selected"),qe=Oe.slice(0,W),me=Oe.length-qe.length;return qe.length?me>0?`${qe.join(Se)} +${me}`:qe.join(Se):"None selected"}function ns(H,W,Se=" · "){const Oe=H.filter(Boolean),qe=Oe.slice(0,W),me=Oe.length-qe.length;return qe.length?me>0?`${qe.join(Se)} +${me}`:qe.join(Se):""}function P6(H){return H.replace(/\s+—\s+/g," ").replace(/\s+h$/,"h")}const W6=C(()=>{var W;const H=((W=kt.value)==null?void 0:W.categories)??[];return H.length?H.map(Se=>`${Se.label||Se.id} — ${B6(Se.targetHours)} h`):["No category targets"]}),al=C(()=>{var H;return`${O6(((H=kt.value)==null?void 0:H.totalHours)??0)} h`}),z6=C(()=>L.value==="pro"?"Advanced layout":L.value==="quick"?"Empty layout":"Standard layout"),R6=C(()=>to.value==="dark"?"Dark":"Light"),ol=C(()=>{var qe;if(!((qe=ba.value)!=null&&qe.enabled))return{status:"Deck tab disabled",boards:[]};const H=new Set((ba.value.hiddenBoards||[]).map(me=>Number(me))),W=new Map;(Ur.value||[]).forEach(me=>{const je=Number(me==null?void 0:me.boardId);if(!Number.isFinite(je)||H.has(je))return;const ta=String((me==null?void 0:me.boardTitle)??`Board ${je}`);W.has(je)||W.set(je,ta)});const Se=Array.from(W.values());return{status:`Showing ${Se.length} board${Se.length===1?"":"s"}`,boards:Se}}),j6=C(()=>{var H;return(H=ba.value)!=null&&H.enabled?ol.value.boards.length===1?`Deck — ${ol.value.boards[0]}`:`Deck — ${ol.value.boards.length} boards`:"Deck — off"}),V6=C(()=>{const H=W6.value;if(!H.length)return"";if(H.length===1&&H[0]==="No category targets")return"No targets";const W=ns(H.map(P6),3);return W?`${W} · Total ${al.value}`:""}),U6=C(()=>ns([z6.value],2)),G6=C(()=>tl.value&&tl.value!=="—"?tl.value:"Choose a planning model"),q6=C(()=>F6(H6.value,2)),K6=C(()=>j6.value),J6=C(()=>{var H;return ns([`Theme — ${R6.value}`,(H=Eo.value)!=null&&H.enabled?"Recap on":"Recap off"],2)}),Z6=C(()=>ns([al.value?`Total ${al.value}`:""],2)),Y6=C(()=>({strategy:G6.value,deck:K6.value,goals:V6.value,dashboard:U6.value,calendars:q6.value,preferences:J6.value,review:Z6.value})),X6=C(()=>{var H,W,Se,Oe,qe,me;return{strategy:(H=Pt.value)!=null&&H.strategy?"done":"dim",calendars:(((W=xt.value)==null?void 0:W.length)??0)>0?"done":"dim",deck:(Se=ba.value)!=null&&Se.enabled?"done":"skip",goals:(((qe=(Oe=kt.value)==null?void 0:Oe.categories)==null?void 0:qe.length)??0)>0?"done":"warn",preferences:"done",dashboard:(((me=J.value)==null?void 0:me.length)??0)>0?"done":"dim",review:as.value?"done":"dim"}}),Q6=C(()=>{if(Aa.value)return"Syncing…";if(!ot.value)return null;const H=Math.floor((Date.now()-ot.value.getTime())/6e4);return H<1?"Just now":`${H}m ago`}),Fe=C(()=>{var H;return((H=os.value)==null?void 0:H.selectedItem)??null});C(()=>{var W;if(!Fe.value)return"";const H=No.value.find(Se=>Se.type===Fe.value.type);return((W=Fe.value.options)==null?void 0:W.titlePrefix)||(H==null?void 0:H.label)||Fe.value.type});const sg=C(()=>{if(!Fe.value)return"";const H=No.value.find(W=>W.type===Fe.value.type);return(H==null?void 0:H.label)||Fe.value.type}),rl=C(()=>{var H,W;return((W=(H=Fe.value)==null?void 0:H.layout)==null?void 0:W.width)??null}),ss=C(()=>{var H,W;return((W=(H=Fe.value)==null?void 0:H.layout)==null?void 0:W.height)??null}),nr=C(()=>{var H;return((H=Fe.value)==null?void 0:H.heightMode)==="auto"}),sr=C(()=>{var H,W;return((W=(H=Fe.value)==null?void 0:H.options)==null?void 0:W.cardBg)??null}),e$=C(()=>{var H,W;return((W=(H=Fe.value)==null?void 0:H.options)==null?void 0:W.titlePrefix)??""}),is=C(()=>{var H,W,Se,Oe;return((W=(H=Fe.value)==null?void 0:H.options)==null?void 0:W.scale)??((Oe=(Se=Fe.value)==null?void 0:Se.options)==null?void 0:Oe.textSize)??"md"}),t$=C(()=>to.value==="dark"?["#1e293b","#1e3a5f","#2d1b69","#14532d","#451a03","#4c0519","#f8fafc"]:["#ffffff","#DBEAFE","#EDE9FE","#DCFCE7","#FEF3C7","#FFE4E6","#1E293B"]),It=ne(null);function Io(H,W){Fe.value&&_e(Fe.value.id,H,W)}function ig(H){Fe.value&&N(Fe.value.id,H)}function a$(){Fe.value&&de(Fe.value.id)}function o$(){Fe.value&&Io("heightMode",nr.value?"fixed":"auto")}function ls(H){Fe.value&&Io("scale",H)}function ds(H){Fe.value&&(It.value=It.value===H?null:H)}function nl(H){if(!Fe.value)return;const W=["quarter","half","full"],Se=W.indexOf(Fe.value.layout.width),Oe=W.indexOf(H);if(Se===-1||Oe===-1||Se===Oe)return;const qe=Fe.value.id,me=(Oe-Se+3)%3;for(let je=0;je<me;je++)ge(qe)}function cs(H){if(!Fe.value)return;const W=["s","m","l","xl"],Se=W.indexOf(Fe.value.layout.height),Oe=W.indexOf(H);if(Se===-1||Oe===-1||Se===Oe)return;const qe=Fe.value.id,me=(Oe-Se+4)%4;for(let je=0;je<me;je++)ve(qe)}function r$(){var H;Fe.value&&(Ve.value=!1,(H=os.value)==null||H.openAdvancedTargets(Fe.value.id))}return k_({performLoad:oo,refreshPresets:Q,onboardingState:Pt,hasInitialLoad:k,evaluateOnboarding:Ui,dashboardMode:L}),(H,W)=>{const Se=Cp("NcAppSidebarToggle");return h(),w("div",{id:"opsdash",class:we(["opsdash",[{"is-nav-collapsed":!A(o)},Xn.value]])},[(h(),nt(_w,{key:A(or),visible:A(La),calendars:A(Vi),"initial-selection":A(B8),"initial-strategy":A(H8),"onboarding-version":A(po),closable:!A(ao),"initial-theme-preference":A(tr),"system-theme":A(Yn),"initial-all-day-hours":A(F8),"initial-total-hours":A(P8),"initial-targets-config":A(W8),"initial-targets-week":A(st),"initial-deck-settings":A(z8),"initial-reporting-config":A(R8),"initial-dashboard-mode":A(j8),"initial-categories":A(V8),"initial-assignments":A(U8),"start-step":A(rr),"has-existing-config":A(as),saving:A(G8),"snapshot-saving":A(q8),"snapshot-notice":A(K8),"persist-step":e6,"send-test-report":t6,"send-checkpoint-report":a6,onClose:A(Y8),onSkip:A(Z8),onComplete:Q8,onSaveCurrentConfig:A(X8)},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"])),We(Vw,{visible:l.value,theme:A(to),presets:A(zi),"is-loading":A(Ri),"is-saving":A(ji),"is-applying":A(es),warnings:A(ts),onClose:W[0]||(W[0]=Oe=>l.value=!1),onSave:A(pe),onLoad:A(Ce),onDelete:A(De),onRefresh:A(Q),onClearWarnings:A(tt),onExportConfig:A(Pi),onImportConfig:A(Wi)},null,8,["visible","theme","presets","is-loading","is-saving","is-applying","warnings","onSave","onLoad","onDelete","onRefresh","onClearWarnings","onExportConfig","onImportConfig"]),A(Yu)?(h(),nt(n2,{key:0,visible:A(Zu),theme:A(to),entry:A(Yu),history:A(c6),"selected-version":A(g6),"is-saving":A(d6),onClose:A(Xu),onSelectVersion:A(f6),onAction:v6},null,8,["visible","theme","entry","history","selected-version","is-saving","onClose","onSelectVersion"])):te("",!0),We(A(qf),{"app-name":"Operational Dashboard","show-navigation":A(o)},{navigation:mt(()=>[We(Wb,{id:"opsdash-sidebar","is-loading":A(ia),range:g.value,offset:u.value,from:A(fa),to:A(ea),"nav-toggle-label":A(n),"nav-toggle-icon":A(s),"dashboard-mode":L.value,"guided-hints":Y6.value,"guided-hint-statuses":X6.value,"last-sync":Q6.value,"release-notes-available":b6.value,"release-notes-open":A(Zu),onLoad:oo,"onUpdate:range":W[1]||(W[1]=Oe=>{g.value=Oe,u.value=0,oo()}),"onUpdate:offset":W[2]||(W[2]=Oe=>{u.value=Oe,oo()}),onToggleNav:A(r),onRerunOnboarding:A(Mt),onOpenProfiles:W[3]||(W[3]=Oe=>l.value=!0),onOpenReleaseNotes:A(p6),onOpenShortcuts:W[4]||(W[4]=Oe=>A(n6)(Oe))},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":mt(()=>[We(Se,{open:A(o),onToggle:A(r)},null,8,["open","onToggle"])]),default:mt(()=>{var Oe,qe;return[i("div",s2,[i("div",i2,[i("div",l2,[A(Lo)?(h(),w("div",{key:0,class:"banner warn",title:b.value},[W[47]||(W[47]=Re(" Showing partial data to keep things fast. ",-1)),A(za)&&A(za).totalProcessed!=null?(h(),w(ke,{key:0},[Re(" Processed "+E(A(za).totalProcessed)+" items. ",1)],64)):te("",!0)],8,d2)):te("",!0),i("div",{ref_key:"appBarSlotRef",ref:_t,class:"app-bar-slot"},[i("div",{ref_key:"appBarRef",ref:Et,class:we(["app-bar",{"app-bar--editing":A(U)}])},[A(U)?(h(),w(ke,{key:1},[i("div",A2,[i("div",L2,[(h(!0),w(ke,null,Ie(A(j),me=>(h(),w("div",{key:me.id,class:"tab-item"},[i("button",{type:"button",class:we(["tab",{on:me.id===A(Y)}]),role:"tab","aria-selected":me.id===A(Y),onClick:je=>A($e)(me.id),onContextmenu:Ke(je=>A(Le)(je,me.id),["prevent"])},[A(ae)===me.id?Ro((h(),w("input",{key:0,class:"tab-input","onUpdate:modelValue":W[11]||(W[11]=je=>$t(Me)?Me.value=je:null),onBlur:W[12]||(W[12]=(...je)=>A(Ze)&&A(Ze)(...je)),onKeydown:[W[13]||(W[13]=$a(Ke((...je)=>A(Ze)&&A(Ze)(...je),["prevent"]),["enter"])),W[14]||(W[14]=$a(Ke((...je)=>A(vt)&&A(vt)(...je),["prevent"]),["esc"]))],onClick:W[15]||(W[15]=Ke(()=>{},["stop"]))},null,544)),[[Zs,A(Me)]]):(h(),w("span",E2,E(me.label),1))],42,D2),i("button",{type:"button",class:"tab-menu-btn","aria-label":`Tab actions for ${me.label}`,onClick:Ke(je=>A(X)(je,me.id),["stop"])},"⋯",8,N2)]))),128)),i("button",{type:"button",class:"tab tab--add",onClick:W[16]||(W[16]=me=>A(Ae)())},"+ Tab")])]),i("div",I2,[W[52]||(W[52]=i("span",{class:"mode-hint"},"Editing layout · no date navigation",-1)),i("button",{class:"btn-ghost btn-ghost--primary",type:"button",onClick:W[17]||(W[17]=me=>Ue.value=!0)},"Add widget"),i("button",{class:"btn-done",type:"button",onClick:ht},"Done editing")]),i("div",{ref_key:"itbRowSlotRef",ref:Qt,class:"itb-row-slot",style:He(Je.value&<.value?{minHeight:`${lt.value}px`}:void 0)},[i("div",{ref_key:"itbRowRef",ref:Nt,class:we(["bar-row sep itb-row",{"itb-row--floating":Je.value}])},[i("div",O2,[Fe.value?(h(),w("div",B2,[W[53]||(W[53]=i("div",{class:"sel-dot"},null,-1)),i("div",H2,[i("div",F2,E(sg.value),1),i("input",{type:"text",class:"sel-chip__name",value:e$.value,placeholder:sg.value,onInput:W[18]||(W[18]=me=>Io("titlePrefix",me.target.value))},null,40,P2)])])):(h(),w("div",W2,[...W[54]||(W[54]=[i("div",{class:"sel-dot sel-dot--empty"},null,-1),Re(" No selection ",-1)])])),W[75]||(W[75]=i("div",{class:"vsep"},null,-1)),i("div",{class:we(["ic-group",{open:It.value==="width"}])},[i("button",{class:we(["ic ic-group__trigger",{on:It.value==="width"}]),type:"button",disabled:!Fe.value,title:"Width options",onClick:W[19]||(W[19]=me=>ds("width"))},[...W[55]||(W[55]=[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,z2),It.value==="width"?(h(),w("div",R2,[i("button",{class:we(["ic ic-sub",{on:rl.value==="quarter"}]),type:"button",disabled:!Fe.value,title:"Quarter width",onClick:W[20]||(W[20]=me=>nl("quarter"))},[...W[56]||(W[56]=[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,j2),i("button",{class:we(["ic ic-sub",{on:rl.value==="half"}]),type:"button",disabled:!Fe.value,title:"Half width",onClick:W[21]||(W[21]=me=>nl("half"))},[...W[57]||(W[57]=[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,V2),i("button",{class:we(["ic ic-sub",{on:rl.value==="full"}]),type:"button",disabled:!Fe.value,title:"Full width",onClick:W[22]||(W[22]=me=>nl("full"))},[...W[58]||(W[58]=[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,U2)])):te("",!0)],2),W[76]||(W[76]=i("div",{class:"vsep"},null,-1)),i("div",{class:we(["ic-group",{open:It.value==="height"}])},[i("button",{class:we(["ic ic-group__trigger",{on:It.value==="height"}]),type:"button",disabled:!Fe.value,title:"Height options",onClick:W[23]||(W[23]=me=>ds("height"))},[...W[59]||(W[59]=[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,G2),It.value==="height"?(h(),w("div",q2,[i("button",{class:we(["ic ic-sub",{on:ss.value==="s"&&!nr.value}]),type:"button",disabled:!Fe.value,title:"Small height",onClick:W[24]||(W[24]=me=>cs("s"))},[...W[60]||(W[60]=[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,K2),i("button",{class:we(["ic ic-sub",{on:ss.value==="m"&&!nr.value}]),type:"button",disabled:!Fe.value,title:"Medium height",onClick:W[25]||(W[25]=me=>cs("m"))},[...W[61]||(W[61]=[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,J2),i("button",{class:we(["ic ic-sub",{on:ss.value==="l"&&!nr.value}]),type:"button",disabled:!Fe.value,title:"Large height",onClick:W[26]||(W[26]=me=>cs("l"))},[...W[62]||(W[62]=[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,Z2),i("button",{class:we(["ic ic-sub",{on:ss.value==="xl"&&!nr.value}]),type:"button",disabled:!Fe.value,title:"Extra large height",onClick:W[27]||(W[27]=me=>cs("xl"))},[...W[63]||(W[63]=[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,Y2),i("button",{class:we(["ic ic-sub",{on:nr.value}]),type:"button",disabled:!Fe.value,title:"Auto height",onClick:o$},[...W[64]||(W[64]=[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,X2)])):te("",!0)],2),W[77]||(W[77]=i("div",{class:"vsep"},null,-1)),i("div",{class:we(["ic-group",{open:It.value==="scale"}])},[i("button",{class:we(["ic ic-group__trigger",{on:It.value==="scale"}]),type:"button",disabled:!Fe.value,title:"Scale options",onClick:W[28]||(W[28]=me=>ds("scale"))},[...W[65]||(W[65]=[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,Q2),It.value==="scale"?(h(),w("div",eC,[i("button",{class:we(["ic ic-sub",{on:is.value==="sm"}]),type:"button",disabled:!Fe.value,title:"Small scale",onClick:W[29]||(W[29]=me=>ls("sm"))},[...W[66]||(W[66]=[i("span",{class:"ic-lbl"},"S-",-1)])],10,tC),i("button",{class:we(["ic ic-sub",{on:is.value==="md"}]),type:"button",disabled:!Fe.value,title:"Normal scale",onClick:W[30]||(W[30]=me=>ls("md"))},[...W[67]||(W[67]=[i("span",{class:"ic-lbl"},"M",-1)])],10,aC),i("button",{class:we(["ic ic-sub",{on:is.value==="lg"}]),type:"button",disabled:!Fe.value,title:"Large scale",onClick:W[31]||(W[31]=me=>ls("lg"))},[...W[68]||(W[68]=[i("span",{class:"ic-lbl"},"L+",-1)])],10,oC),i("button",{class:we(["ic ic-sub",{on:is.value==="xl"}]),type:"button",disabled:!Fe.value,title:"Extra large scale",onClick:W[32]||(W[32]=me=>ls("xl"))},[...W[69]||(W[69]=[i("span",{class:"ic-lbl"},"XL",-1)])],10,rC)])):te("",!0)],2),W[78]||(W[78]=i("div",{class:"vsep"},null,-1)),i("div",{class:we(["ic-group",{open:It.value==="color"}])},[i("button",{class:we(["ic ic-group__trigger",{on:It.value==="color"}]),type:"button",disabled:!Fe.value,title:"Card background color",onClick:W[33]||(W[33]=me=>ds("color"))},[i("span",{class:we(["ic-color-dot",{"ic-color-dot--none":!sr.value}]),style:He(sr.value?{background:sr.value}:{})},null,6),W[70]||(W[70]=i("span",{class:"ic-lbl"},"Color",-1))],10,nC),It.value==="color"?(h(),w("div",sC,[i("button",{type:"button",class:we(["ic-color-swatch ic-color-reset",{on:!sr.value}]),title:"Default background",onClick:W[34]||(W[34]=Ke(()=>{Io("cardBg",null),It.value=null},["stop"]))},null,2),(h(!0),w(ke,null,Ie(t$.value,me=>{var je;return h(),w("button",{key:me,type:"button",class:we(["ic-color-swatch",{on:((je=sr.value)==null?void 0:je.toUpperCase())===me.toUpperCase()}]),style:He({background:me}),title:me,onClick:Ke(()=>{Io("cardBg",me),It.value=null},["stop"])},null,14,iC)}),128)),i("label",lC,[i("input",{type:"color",value:sr.value??"#ffffff",onChange:W[35]||(W[35]=Ke(me=>{Io("cardBg",me.target.value),It.value=null},["stop"]))},null,40,dC)])])):te("",!0)],2),i("div",cC,[Fe.value&&((Oe=A(Fr)[Fe.value.type])!=null&&Oe.configurable)?(h(),nt(kx,{key:0,entry:A(Fr)[Fe.value.type],options:Fe.value.options,open:Ve.value,"show-advanced":Fe.value.type==="targets_v2",context:A(ng),tabs:A(j).map(me=>({id:me.id,label:me.label})),"current-tab-id":A(Y),onToggle:W[36]||(W[36]=me=>{Ve.value=me}),onOpenAdvanced:r$,onChange:W[37]||(W[37]=(me,je)=>Io(me,je)),onMoveToTab:W[38]||(W[38]=me=>Tt(Fe.value.id,me)),onDuplicateToTab:W[39]||(W[39]=me=>dt(Fe.value.id,me))},null,8,["entry","options","open","show-advanced","context","tabs","current-tab-id"])):(h(),w("button",uC,[...W[71]||(W[71]=[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"},"Config",-1)])]))]),i("button",{class:"ic",type:"button",disabled:!Fe.value,title:"Move earlier",onClick:W[40]||(W[40]=me=>ig("up"))},[...W[72]||(W[72]=[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,gC),i("button",{class:"ic",type:"button",disabled:!Fe.value,title:"Move later",onClick:W[41]||(W[41]=me=>ig("down"))},[...W[73]||(W[73]=[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:!Fe.value,title:"Remove widget",onClick:a$},[...W[74]||(W[74]=[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,fC)])],2)],4)],64)):(h(),w(ke,{key:0},[A(o)?te("",!0):(h(),w("div",c2,[i("button",{class:"show-btn",type:"button",onClick:W[5]||(W[5]=(...me)=>A(r)&&A(r)(...me)),"aria-label":A(n)},[...W[48]||(W[48]=[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,u2),i("div",g2,[i("button",{type:"button",class:we({on:g.value==="week"}),disabled:A(ia),onClick:W[6]||(W[6]=me=>Wa("week"))},"Week",10,p2),i("button",{type:"button",class:we({on:g.value==="month"}),disabled:A(ia),onClick:W[7]||(W[7]=me=>Wa("month"))},"Month",10,f2)]),i("div",b2,[i("button",{class:"navc-btn",type:"button",disabled:A(ia),onClick:W[8]||(W[8]=(...me)=>A(Gi)&&A(Gi)(...me))},[...W[49]||(W[49]=[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,v2),i("div",h2,[i("span",m2,[i("span",y2,E(A(fa)),1),i("span",w2,E(h6.value),1),i("span",k2,E(A(ea)),1)])]),i("button",{class:"navc-btn",type:"button",disabled:A(ia),onClick:W[9]||(W[9]=(...me)=>A(qi)&&A(qi)(...me))},[...W[50]||(W[50]=[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,x2)]),i("button",{class:"bar-btn-ref",type:"button",disabled:A(ia),onClick:W[10]||(W[10]=(...me)=>A(Ku)&&A(Ku)(...me))},"Refresh",8,_2)])),i("div",{class:we(["bar-row",{sep:!A(o)}])},[i("div",C2,[(h(!0),w(ke,null,Ie(A(j),me=>(h(),w("div",{key:me.id,class:"tab-item"},[i("button",{type:"button",class:we(["tab",{on:me.id===A(Y)}]),role:"tab","aria-selected":me.id===A(Y),onClick:je=>A($e)(me.id),onContextmenu:Ke(je=>A(Le)(je,me.id),["prevent"])},[i("span",$2,E(me.label),1),me.id===A(q)?(h(),w("span",T2,"Default")):te("",!0)],42,S2)]))),128))]),W[51]||(W[51]=i("div",{class:"bar-flex1"},null,-1)),A(Aa)?(h(),w("span",M2,"Updating…")):te("",!0),i("button",{class:"btn-ghost",type:"button",onClick:ht},"Edit layout")],2)],64))],2)],512),A(re).open?(h(),w("div",{key:1,class:"tab-context-menu",style:He({top:`${A(re).y}px`,left:`${A(re).x}px`}),role:"menu"},[i("button",{type:"button",role:"menuitem",onClick:W[42]||(W[42]=(...me)=>A(ie)&&A(ie)(...me))},"Set as default"),i("button",{type:"button",role:"menuitem",onClick:W[43]||(W[43]=(...me)=>A(Ne)&&A(Ne)(...me))},"Rename"),i("button",{type:"button",role:"menuitem",disabled:A(j).length<=1,onClick:W[44]||(W[44]=(...me)=>A(Te)&&A(Te)(...me))}," Remove ",8,bC)],4)):te("",!0),We(Ek,{open:Ue.value,"widget-type-list":No.value,onClose:W[45]||(W[45]=me=>Ue.value=!1),onSelect:ho},null,8,["open","widget-type-list"]),i("div",vC,[We(ik,{ref_key:"layoutRef",ref:os,widgets:A(J),context:A(ng),editable:A(U),"widget-types":No.value,"preset-label":I6.value,tabs:A(j).map(me=>({id:me.id,label:me.label})),"current-tab-id":A(Y),"onEdit:width":A(ge),"onEdit:height":A(ve),"onEdit:remove":A(de),"onEdit:move":A(N),"onEdit:moveTab":Tt,"onEdit:duplicateTab":dt,"onEdit:options":A(_e),"onEdit:add":A(ue),"onEdit:reorder":A(fe),"onOpen:onboarding":Fi,"onReset:preset":W[46]||(W[46]=me=>A(ee)(L.value.value)),"onSelect:cell":A(et)},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",hC,[A(Ki)?(h(),w(ke,{key:0},[Re(" Operational Dashboard • v"+E(A(Ki))+" • Built by Blade34242 @ Gellert Innovation ",1)],64)):(h(),w(ke,{key:1},[Re(" Operational Dashboard • v"+E(((qe=A(Vr))==null?void 0:qe.version)||"0.6.0")+" • Built by Blade34242 @ Gellert Innovation ",1)],64))])])])])]}),_:1},8,["show-navigation"]),We(Xw,{visible:A(Ju),groups:A(i6),theme:A(to),onClose:A(s6)},null,8,["visible","groups","theme","onClose"])],2)}}});function Kn(){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 Ru(...e){Kn()&&console.log(...e)}function yC(...e){Kn()&&console.warn(...e)}function Ai(){var t;const e=document.getElementById("app");if(e){try{Ru("[opsdash] booting");const a=(t=e.dataset)==null?void 0:t.opsdashDefaultWidgets;if(a)try{fu(JSON.parse(a))}catch(s){yC("[opsdash] failed to parse bootstrap widgets",s)}const o=Vf(mC);o.config.errorHandler=(s,l,d)=>{const g=l==null?void 0:l.type,u=g&&g.name?g.name:"";if(Kn()){const b={err:s,info:d,name:u,stack:s instanceof Error?s.stack:void 0},v=window;Array.isArray(v.__opsdashErrors)||(v.__opsdashErrors=[]),v.__opsdashErrors.push(b),console.error("[opsdash] Vue error",b);return}console.error("[opsdash] Vue error")};const r=o.mount(e),n=window;n.__opsdashApp=o,n.__opsdashRoot=r,_x(),Ru("[opsdash] mounted")}catch(a){Kn()?console.error("Mount failed",a):console.error("Mount failed")}return}document.readyState==="complete"||document.readyState==="interactive"?setTimeout(Ai,50):window.addEventListener("DOMContentLoaded",Ai,{once:!0})}Ai();const wC={key:0,class:"title-row"},kC={class:"title"},xC={key:0,class:"pill"},_C=["title"],CC={class:"index-badge__ring","aria-hidden":"true"},SC={class:"index-badge__value"},$C={class:"index-badge__meta"},TC={key:0,class:"index-badge__range"},MC={key:0,class:"trend"},AC=["title"],LC={class:"trend-line-row"},DC={class:"trend-value"},EC={class:"trend-range"},NC={class:"trend-offset"},IC={key:1,class:"messages"},OC={key:2,class:"config"},BC={key:3,class:"empty"},HC=Object.freeze(Object.defineProperty({__proto__:null,default:at(Pe({__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=C(()=>t.title||"Balance Index"),o=C(()=>t.showHeader!==!1),r=C(()=>(t.rangeMode||"").toLowerCase()==="month"?"mo":"wk"),n=C(()=>{var R,D,F;return Array.isArray((D=(R=t.overview)==null?void 0:R.trend)==null?void 0:D.history)?t.overview.trend.history:Array.isArray((F=t.overview)==null?void 0:F.trendHistory)?t.overview.trendHistory:[]}),s=C(()=>{const R=Number.isFinite(t.lookbackWeeks)?Number(t.lookbackWeeks):Number.isFinite(t.loopbackCount)?Number(t.loopbackCount):null;if(R!=null)return Math.max(0,Math.min(6,Math.floor(R)));const D=n.value.filter(F=>Number((F==null?void 0:F.offset)??0)>0);return Math.max(0,Math.min(6,D.length))}),l=C(()=>{const R=new Map,D=t.targetsCategories||[],F=t.indexBasis;return n.value.forEach((ce,Ae)=>{const se=Number((ce==null?void 0:ce.offset)??(ce==null?void 0:ce.step)),oe=Number.isFinite(se)&&se>0?Math.round(se):Ae+1,G=Number(ce==null?void 0:ce.index);if(Number.isFinite(G)){R.set(oe,{index:Math.max(0,Math.min(1,G)),label:(ce==null?void 0:ce.label)||""});return}const ee={};Array.isArray(ce==null?void 0:ce.categories)&&ce.categories.forEach(de=>{ee[String(de.id)]=Number(de.share??0)});const ge=Object.values(ee),ve=ge.length?Math.max(...ge):0,N=ge.reduce((de,ue)=>de+ue,0);(ve>1||N>1.5)&&Object.keys(ee).forEach(de=>{ee[de]=ee[de]/100});const P=Object.values(ee).reduce((de,ue)=>de+ue,0);P>1.0001&&P>0&&Object.keys(ee).forEach(de=>{ee[de]=ee[de]/P});const V=B({shares:ee,targets:D,basis:F});R.set(oe,{index:V,label:(ce==null?void 0:ce.label)||""})}),R}),d=C(()=>{var F;const R=[],D=s.value;for(let ce=D;ce>=1;ce-=1){const Ae=l.value.get(ce);R.push({offset:ce,index:Ae==null?void 0:Ae.index,label:(Ae==null?void 0:Ae.label)||`-${ce} ${r.value}`})}return R.push({offset:0,index:typeof((F=t.overview)==null?void 0:F.index)=="number"?t.overview.index:void 0,label:t.rangeLabel||""}),R}),g=C(()=>t.showCurrent!==!1),u=C(()=>{let R=d.value.slice();return g.value||(R=R.filter(D=>((D==null?void 0:D.offset)??0)!==0)),t.reverseOrder===!0?R.slice().reverse():R}),b=C(()=>u.value.length>0),v=C(()=>{var R;return((R=t.overview)==null?void 0:R.warnings)||[]}),c=C(()=>{const R=v.value,D=Number.isFinite(t.messageLimit)?Number(t.messageLimit):1/0;return!Number.isFinite(D)||D<=0?R:R.slice(0,D)}),f=C(()=>({background:t.cardBg||void 0})),p=C(()=>{var F,ce,Ae,se,oe;const R=Ko(),D={noticeAbove:((F=t.thresholds)==null?void 0:F.noticeAbove)??R.thresholds.noticeAbove,noticeBelow:((ce=t.thresholds)==null?void 0:ce.noticeBelow)??R.thresholds.noticeBelow,warnAbove:((Ae=t.thresholds)==null?void 0:Ae.warnAbove)??R.thresholds.warnAbove,warnBelow:((se=t.thresholds)==null?void 0:se.warnBelow)??R.thresholds.warnBelow,warnIndex:((oe=t.thresholds)==null?void 0:oe.warnIndex)??R.thresholds.warnIndex};return{basis:t.indexBasis||R.index.basis,...D}}),S=C(()=>{const R=t.showTrend===!1||!b.value,D=t.showMessages===!1||c.value.length===0,F=t.showConfig===!1;return R&&D&&F}),x=C(()=>{const R=s.value;if(R<=0)return"";const D=r.value==="mo"?"month":"week";return`Last ${R} ${R===1?D:`${D}s`}`}),$=C(()=>{var F;const R=(F=t.overview)==null?void 0:F.index,D=typeof R=="number"?R:Number(R??NaN);return Number.isFinite(D)?Math.max(0,Math.min(1,D)):null}),_=C(()=>y($.value??void 0)),O=C(()=>{const R=$.value;if(R==null)return{};const D=Math.round(R*100);let F="#dc2626";return R>=.8?F="#16a34a":R>=.65&&(F="#f59e0b"),{"--index-fill":`${D}%`,"--index-color":F}}),I=C(()=>$.value==null?"":`Balance index ${$.value.toFixed(2)}`),B=R=>{var oe;const D=R.basis||"category";if(D==="off")return 0;const F={},ce=(oe=R.targets)!=null&&oe.length?R.targets.reduce((G,ee)=>G+(ee.targetHours??0),0):0;D!=="calendar"&&ce>0&&R.targets.forEach(G=>{F[String(G.id)]=(G.targetHours??0)/ce});const Ae=new Set([...Object.keys(R.shares||{}),...Object.keys(F)]);if(Ae.size===0)return 0;let se=0;return Ae.forEach(G=>{var ve;const ee=Number(((ve=R.shares)==null?void 0:ve[G])??0),ge=D==="calendar"?1/Ae.size:F[G]??0;se=Math.max(se,Math.abs(ee-ge))}),Math.max(0,Math.min(1,Number((1-se).toFixed(2))))},y=R=>Number.isFinite(R)?R.toFixed(2):"—",T=C(()=>t.trendColor||"#2563EB"),m=C(()=>{const R=(t.labelMode||"period").toString().toLowerCase();return R==="date"||R==="offset"?R:"period"}),k=C(()=>({gridTemplateColumns:`repeat(auto-fit, minmax(${m.value==="date"?108:88}px, 1fr))`}));function L(R,D){const F=R.replace("#",""),ce=parseInt(F.substring(0,2),16),Ae=parseInt(F.substring(2,4),16),se=parseInt(F.substring(4,6),16),oe=G=>Math.max(0,Math.min(255,Math.round(G*(1-D))));return`rgb(${oe(ce)}, ${oe(Ae)}, ${oe(se)})`}const z=R=>{const D=T.value,F=u.value[R],ce=Number((F==null?void 0:F.index)??0),Ae=Math.min(1,Math.max(0,1-ce));return{background:L(D,Ae*.6)}},M=R=>{if(m.value!=="date")return"";const D=u.value[R],F=((D==null?void 0:D.offset)??0)===0;return(D==null?void 0:D.label)||F&&t.rangeLabel||""},Z=R=>!!M(R),j=R=>{var F;if(m.value!=="offset")return"";const D=((F=u.value[R])==null?void 0:F.offset)??R;return D===0?"Current":`-${D}`},q=R=>{var ce;if(m.value!=="date")return"";const D=M(R);return D||((((ce=u.value[R])==null?void 0:ce.offset)??R)===0&&t.rangeLabel?t.rangeLabel:"")};function Y(R){return R?/^-\d+\s*(wk|mo)$/i.test(R.trim()):!0}function U(R,D){if(!R||!D)return"";const F=ra(R,"UTC"),ce=ra(D,"UTC");return Dr(F,ce,{day:"2-digit",month:"2-digit"})}function le(R){var G,ee;const D=((G=u.value[R])==null?void 0:G.offset)??R;if(!t.from||!t.to){const ge=(ee=u.value[R])==null?void 0:ee.label;return Y(ge)?"":ge||""}const F=(t.rangeMode||"").toLowerCase(),ce=jt(t.from),Ae=jt(t.to);if(!ce||!Ae)return"";if(F==="month"){const ge=Dn(ce,-D),ve=pc(ge);return U(ge,ve)}const se=qo(ce,-7*D),oe=qo(Ae,-7*D);return U(se,oe)}function J(R){var ee;const D=((ee=u.value[R])==null?void 0:ee.offset)??R,F=(t.rangeMode||"").toLowerCase();if(!t.from)return D===0?"Current":`- ${D} wk`;const ce=jt(t.from),Ae=ce?F==="month"?Dn(ce,-D):qo(ce,-7*D):null;if(!Ae)return D===0?"Current":`- ${D} wk`;if(F==="month"){const ge=Ae.getUTCMonth()+1,ve=ce?ce.getUTCMonth()+1:ge;return`MONTH ${D===0?ve:ge}`}const se=Ya(Ae),oe=ce?Ya(ce):se;return`WEEK ${D===0?oe:se}`}return(R,D)=>(h(),w("div",{class:"balance-card",style:He(f.value)},[i("div",{class:we(["header",{compact:S.value}])},[o.value?(h(),w("div",wC,[i("span",kC,E(a.value),1),x.value&&R.showTrend?(h(),w("span",xC,E(x.value),1)):te("",!0)])):te("",!0),R.overview?(h(),w("div",{key:1,class:we(["index",{centered:S.value}])},[i("div",{class:"index-badge",style:He(O.value),title:I.value},[i("div",CC,[i("span",SC,E(_.value),1)]),i("div",$C,[D[0]||(D[0]=i("div",{class:"index-badge__label"},"Current index",-1)),R.rangeLabel?(h(),w("div",TC,E(R.rangeLabel),1)):te("",!0)])],12,_C)],2)):te("",!0)],2),R.showTrend&&b.value?(h(),w("div",MC,[i("div",{class:"trend-line",style:He(k.value)},[(h(!0),w(ke,null,Ie(u.value,(F,ce)=>(h(),w("div",{key:ce,class:we(["trend-block",{current:F.offset===0,"no-range":!Z(ce)}]),title:F.label||"",style:He(z(ce))},[i("div",LC,[i("span",DC,E(y(F.index)),1),i("span",EC,E(m.value==="date"?le(ce)||q(ce):""),1),i("span",NC,[m.value==="period"?(h(),w(ke,{key:0},[Re(E(J(ce)),1)],64)):m.value==="offset"?(h(),w(ke,{key:1},[Re(E(j(ce)),1)],64)):te("",!0)])])],14,AC))),128))],4)])):te("",!0),R.showMessages&&c.value.length?(h(),w("div",IC,[D[1]||(D[1]=i("div",{class:"section-title"},"Messages",-1)),i("ul",null,[(h(!0),w(ke,null,Ie(c.value,(F,ce)=>(h(),w("li",{key:ce},E(F),1))),128))])])):te("",!0),R.showConfig?(h(),w("div",OC,[i("div",null,"Basis: "+E(p.value.basis),1),i("div",null,"Notice ±: +"+E(p.value.noticeAbove??"—")+" / -"+E(p.value.noticeBelow??"—"),1),i("div",null,"Warn ±: +"+E(p.value.warnAbove??"—")+" / -"+E(p.value.warnBelow??"—"),1),i("div",null,"Warn index: "+E(p.value.warnIndex??"—"),1)])):te("",!0),R.overview?te("",!0):(h(),w("div",BC,"No balance data."))],4))}}),[["__scopeId","data-v-a52246e6"]])},Symbol.toStringTag,{value:"Module"})),FC={key:0,class:"mix-header"},PC={class:"mix-title"},WC={class:"mix-subtitle"},zC={key:0,class:"mix-badge"},RC={key:2,class:"mix-list"},jC={class:"mix-label"},VC=["title"],UC={class:"mix-cell__value"},GC={key:0,class:"mix-cell__indicator"},qC={key:3,class:"hint"},KC=Object.freeze(Object.defineProperty({__proto__:null,default:at(Pe({__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=C(()=>t.showHeader!==!1),o=C(()=>t.density==="dense"?"dense":"normal"),r=C(()=>{const G=(t.labelMode||"period").toString().toLowerCase();return G==="offset"||G==="label"||G==="compact"||G==="date"?G:"period"}),n=C(()=>t.squareCells===!0),s=C(()=>{const G=t.colorMode;return G==="trend"||G==="share"||G==="hybrid"?G:"hybrid"}),l=C(()=>{const G=String(t.trendIndicator??"").toLowerCase();return G==="symbol"||G==="delta"||G==="both"?G:"none"}),d=C(()=>{var G,ee;return t.showBadge===!1?"":((ee=(G=t.overview)==null?void 0:G.trend)==null?void 0:ee.badge)??""}),g=C(()=>t.rangeMode==="month"?"MO":"WE"),u=C(()=>t.rangeMode==="month"?"M":"W"),b=C(()=>R()),v=C(()=>Math.max(1,Math.min(6,t.lookbackWeeks||1))),c=C(()=>t.title||"Category mix trend"),f=C(()=>({background:t.cardBg||void 0})),p=C(()=>{var ee,ge,ve;const G=((ge=(ee=t.overview)==null?void 0:ee.trend)==null?void 0:ge.history)??((ve=t.overview)==null?void 0:ve.trendHistory)??[];return Array.isArray(G)?G.map(N=>({offset:Number((N==null?void 0:N.offset)??(N==null?void 0:N.step)??0)||0,label:String((N==null?void 0:N.label)??""),categories:Array.isArray(N==null?void 0:N.categories)?N.categories.map(P=>({id:String((P==null?void 0:P.id)??""),label:String((P==null?void 0:P.label)??""),share:Number((P==null?void 0:P.share)??0)||0})):[]})).filter(N=>N.offset>0):[]}),S=G=>`-${G} ${g.value}`,x=(G,ee)=>r.value==="label"&&ee?ee:r.value==="date"?le(G,ee)||S(G):r.value==="offset"?`-${G}`:r.value==="compact"?`${u.value}-${G}`:J(G),$=C(()=>{if(!t.overview)return[];const G=v.value,ee=new Map;return p.value.forEach(ge=>{const ve=Math.max(1,Math.min(12,Math.round(ge.offset)));if(!ve||ve>G)return;const N={};ge.categories.forEach(P=>{P.id&&(N[P.id]=Number.isFinite(P.share)?P.share:0)}),ee.set(ve,{offset:ve,label:x(ve,ge.label),shares:N})}),Array.from(ee.values()).sort((ge,ve)=>ve.offset-ge.offset)}),_=C(()=>{const G=[...$.value.map(ee=>({key:`col-${ee.offset}`,offset:ee.offset,label:ee.label,isCurrent:!1,shares:ee.shares})),{key:"col-current",offset:0,label:b.value,isCurrent:!0,shares:null}];return t.reverseOrder===!0?G.slice().reverse():G}),O=C(()=>_.value.length),I=C(()=>({gridTemplateColumns:`minmax(0, var(--mix-label-width, 52px)) repeat(${Math.max(O.value,1)}, minmax(0, 1fr))`})),B=C(()=>({gridTemplateColumns:`repeat(${Math.max(O.value,1)}, minmax(0, 1fr))`})),y=C(()=>{const G=D(t.toneLowColor)||"#e11d48",ee=D(t.toneHighColor)||"#10b981",ge=F(G,ee,.5);return{down:se(G),flat:se(ge),up:se(ee)}}),T=C(()=>{const G=D(t.shareLowColor)||"#e2e8f0",ee=D(t.shareHighColor)||"#60a5fa";return{low:G,high:ee}}),m=G=>{const ee=oe(G,0,100)/100;return F(T.value.low,T.value.high,ee)},k=G=>G>1?"up":G<-1?"down":"flat",L=C(()=>t.overview?(t.overview.categories??[]).map(ee=>{const ge=typeof ee.share=="number"?ee.share:0,ve=_.value.map(P=>{var V;return{label:P.label,share:P.isCurrent?ge:((V=P.shares)==null?void 0:V[ee.id])??0,isCurrent:P.isCurrent}}),N=ve.map((P,V)=>{const de=V>0,ue=de?ve[V-1].share:P.share,fe=P.share-ue,_e=de?k(fe):"flat",ye=s.value,xe=y.value[_e],be=m(P.share),Ee=se(be),Me=ye==="trend"?xe.background:be,ae=ye==="trend"?xe.color:Ee.color;return{label:P.label,share:P.share,isCurrent:!!P.isCurrent,trend:_e,indicator:q(_e,fe,de),style:{"--mix-bg":Me,"--mix-fg":ae,"--mix-accent":xe.background}}});return{id:ee.id,label:ee.label,cells:N}}):[]),z=C(()=>{var ee;const G=v.value;if(G>1){const ge=t.rangeMode==="month"?"months":"weeks";return`History · last ${G} ${ge}`}return G===1&&$.value.length?((ee=$.value[$.value.length-1])==null?void 0:ee.label)||S(1):S(G||1)}),M=G=>`${Math.max(0,Math.round(G))}%`;function Z(G){return G==="up"?"↑":G==="down"?"↓":"→"}function j(G){const ee=Math.round(G);return!Number.isFinite(ee)||ee===0?"0pp":`${ee>0?"+":""}${ee}pp`}function q(G,ee,ge){if(!ge)return"";const ve=l.value;return ve==="none"?"":ve==="symbol"?Z(G):ve==="delta"?j(ee):`${Z(G)} ${j(ee)}`}const Y={day:"2-digit",month:"2-digit"};function U(G,ee){if(!G||!ee)return"";const ge=ra(G,"UTC"),ve=ra(ee,"UTC");return Dr(ge,ve,Y)}function le(G,ee){if(!t.from||!t.to)return ee||"";const ge=(t.rangeMode||"").toLowerCase(),ve=jt(t.from),N=jt(t.to);if(!ve||!N)return ee||"";if(ge==="month"){const de=Dn(ve,-G),ue=pc(de);return U(de,ue)}const P=qo(ve,-7*G),V=qo(N,-7*G);return U(P,V)}function J(G){const ee=(t.rangeMode||"").toLowerCase();if(!t.from)return G===0?"Current":ee==="month"?`-${G} mo`:`-${G} wk`;const ge=jt(t.from),ve=ge?ee==="month"?Dn(ge,-G):qo(ge,-7*G):null;if(!ve)return G===0?"Current":ee==="month"?`-${G} mo`:`-${G} wk`;if(ee==="month"){const V=ge?ge.getUTCMonth()+1:ve.getUTCMonth()+1;return`MONTH ${G===0?V:ve.getUTCMonth()+1}`}const N=Ya(ge||ve);return`WEEK ${G===0?N:Ya(ve)}`}function R(){return r.value==="offset"?"Current":r.value==="compact"?"CUR":r.value==="label"?t.rangeLabel||(t.rangeMode==="month"?"This month":"This week"):r.value==="date"?le(0,t.rangeLabel||"")||(t.rangeMode==="month"?"This month":"This week"):J(0)}function D(G){if(!G||typeof G!="string")return null;const ee=G.trim();return/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(ee)?ee:null}function F(G,ee,ge=.5){const ve=ce(G),N=ce(ee);if(!ve||!N)return G;const P=oe(Math.round(ve.r+(N.r-ve.r)*ge),0,255),V=oe(Math.round(ve.g+(N.g-ve.g)*ge),0,255),de=oe(Math.round(ve.b+(N.b-ve.b)*ge),0,255);return`#${[P,V,de].map(ue=>ue.toString(16).padStart(2,"0")).join("")}`}function ce(G){const ee=G.replace("#","");if(ee.length===3){const[ge,ve,N]=ee.split("").map(P=>parseInt(P.repeat(2),16));return{r:ge,g:ve,b:N}}if(ee.length===6){const ge=parseInt(ee.slice(0,2),16),ve=parseInt(ee.slice(2,4),16),N=parseInt(ee.slice(4,6),16);return{r:ge,g:ve,b:N}}return null}function Ae(G){const ee=ce(G);return ee?(.2126*ee.r+.7152*ee.g+.0722*ee.b)/255:0}function se(G){const ee=Ae(G)>.6?"#0f172a":"#fff";return{background:G,color:ee}}function oe(G,ee,ge){return Math.min(ge,Math.max(ee,G))}return(G,ee)=>(h(),w("div",{class:we(["card mix-card",{"mix-card--no-header":!a.value,"mix-card--dense":o.value==="dense","mix-card--square":n.value}]),style:He(f.value)},[a.value?(h(),w("div",FC,[i("div",null,[i("div",PC,E(c.value),1),i("div",WC,E(z.value),1)]),d.value?(h(),w("span",zC,E(d.value),1)):te("",!0)])):te("",!0),$.value.length||L.value.length?(h(),w("div",{key:1,class:"mix-columns",style:He(I.value)},[ee[0]||(ee[0]=i("span",{class:"mix-column-label mix-column-label--label"},"CAT",-1)),(h(!0),w(ke,null,Ie(_.value,ge=>(h(),w("span",{key:ge.key,class:we(["mix-column-label",{"mix-column-label--current":ge.isCurrent}])},E(ge.label),3))),128))],4)):te("",!0),L.value.length?(h(),w("ul",RC,[(h(!0),w(ke,null,Ie(L.value,ge=>(h(),w("li",{key:ge.id,class:"mix-row"},[i("span",jC,E(ge.label)+":",1),i("div",{class:"mix-cells",style:He(B.value)},[(h(!0),w(ke,null,Ie(ge.cells,(ve,N)=>(h(),w("div",{key:`${ge.id}-cell-${N}`,class:we(["mix-cell",[`mix-cell--trend-${ve.trend}`,`mix-cell--mode-${s.value}`,{"mix-cell--current":ve.isCurrent}]]),style:He(ve.style),title:`${ge.label} · ${ve.label} · ${M(ve.share)}`},[i("span",UC,E(M(ve.share)),1),ve.indicator?(h(),w("span",GC,E(ve.indicator),1)):te("",!0)],14,VC))),128))],4)]))),128))])):(h(),w("div",qC,"No category mix history."))],6))}}),[["__scopeId","data-v-ff363a60"]])},Symbol.toStringTag,{value:"Module"}));function Xo(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 na(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 Qo(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 ju(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 Vu(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=Qo(n),d=Qo(s);if(!l||!d)return"#7c3aed";const g=(c,f,p)=>Math.round(c+(f-c)*p),u=g(l.r,d.r,a),b=g(l.g,d.g,a),v=g(l.b,d.b,a);return`rgb(${u}, ${b}, ${v})`}const JC=Pe({__name:"GroupedBars",props:{data:{},showLabels:{type:Boolean},xLabel:{},yLabel:{}},setup(e){const t=e,a=ne(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=Xo(d);if(!g)return;const u=getComputedStyle(d),b=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-scale"))||1),v=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-space"))||b),c=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-density"))||1),f=b*c,p=c<1?v/c:v,S=d.clientWidth,x=d.clientHeight,$=28*p,_=$*1.4,O=x-$,I=S-$,B=na(d,"--line","#e5e7eb"),y=na(d,"--fg","#0f172a");g.clearRect(0,0,S,x),g.strokeStyle=B,g.lineWidth=1,g.beginPath(),g.moveTo(_,O),g.lineTo(I,O),g.moveTo(_,O),g.lineTo(_,$),g.stroke(),g.fillStyle=y,g.font=`${12*f}px ui-sans-serif,system-ui`;const T=String(t.xLabel??"").trim();if(T){const R=g.measureText(T).width,D=Math.min(x-6*f,O+18*f);g.fillText(T,_+(I-_)/2-R/2,D)}const m=String(t.yLabel??"").trim();m&&g.fillText(m,6*p,$*.8);const k=(t.data.labels||[]).map(R=>String(R??"")),L=Array.isArray(t.data.series)?t.data.series:[];if(!k.length||!L.length)return;const z=[];L.forEach(R=>{(Array.isArray(R.data)?R.data:[]).forEach(F=>z.push(Math.max(0,Number(F)||0)))});const M=Math.max(1,...z),Z=k.length,j=Math.max(1,L.length),q=10*v,Y=4*v,U=Math.max(12*v,(I-_-q*(Z+1))/Z),le=Math.max(4*v,(U-Y*(j-1))/j),J=(O-$)/M;k.forEach((R,D)=>{const F=_+q+D*(U+q);if(L.forEach((ce,Ae)=>{var ge;const se=Math.max(0,Number(((ge=ce==null?void 0:ce.data)==null?void 0:ge[D])??0)),oe=Math.max(0,se*J),G=F+Ae*(le+Y),ee=O-oe;if(g.fillStyle=(ce==null?void 0:ce.color)||"#93c5fd",g.fillRect(G,ee,le,oe),t.showLabels!==!1&&oe>14*f&&le>20*f&&se>.01){g.fillStyle=y,g.font=`${12*f}px ui-sans-serif,system-ui`;const ve=`${n(se)}h`,N=g.measureText(ve).width;g.fillText(ve,G+le/2-N/2,ee+oe/2+4*f)}}),U>26*f){g.fillStyle=y,g.font=`${12*f}px ui-sans-serif,system-ui`;const ce=g.measureText(R).width;g.fillText(R,F+U/2-ce/2,O+14*f)}})}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 Lt(()=>{s(),l(),window.addEventListener("resize",s)}),Ct(()=>{try{window.removeEventListener("resize",s)}catch{}try{o&&a.value&&o.unobserve(a.value)}catch{}try{r&&r.disconnect()}catch{}o=null,r=null}),Be(()=>t.data,()=>s(),{deep:!0}),Be(()=>t.showLabels,()=>s()),(d,g)=>(h(),w("canvas",{ref_key:"cv",ref:a,class:"chart"},null,512))}}),Uu=Pe({__name:"SimpleBars",props:{data:{},showLabels:{type:Boolean},xLabel:{},yLabel:{}},setup(e){const t=e,a=ne(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=Xo(d);if(!g)return;const u=getComputedStyle(d),b=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-scale"))||1),v=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-space"))||b),c=Math.max(.5,Number.parseFloat(u.getPropertyValue("--widget-density"))||1),f=b*c,p=c<1?v/c:v,S=d.clientWidth,x=d.clientHeight,$=28*p,_=$*1.4,O=x-$,I=S-$,B=na(d,"--line","#e5e7eb"),y=na(d,"--fg","#0f172a");g.clearRect(0,0,S,x),g.strokeStyle=B,g.lineWidth=1,g.beginPath(),g.moveTo(_,O),g.lineTo(I,O),g.moveTo(_,O),g.lineTo(_,$),g.stroke(),g.fillStyle=y,g.font=`${12*f}px ui-sans-serif,system-ui`;const T=String(t.xLabel??"").trim();if(T){const U=g.measureText(T).width,le=Math.min(x-6*f,O+18*f);g.fillText(T,_+(I-_)/2-U/2,le)}const m=String(t.yLabel??"").trim();m&&g.fillText(m,6*p,$*.8);const k=(t.data.labels||[]).map(U=>String(U??"")),L=(t.data.data||[]).map(U=>Math.max(0,Number(U)||0)),z=Array.isArray(t.data.colors)?t.data.colors:[];if(!k.length||!L.length)return;const M=Math.max(1,...L),Z=k.length,j=8*v,q=Math.max(6*v,(I-_-j*(Z+1))/Z),Y=(O-$)/M;k.forEach((U,le)=>{const J=L[le]??0,R=Math.max(0,J*Y),D=_+j+le*(q+j),F=O-R;if(g.fillStyle=z[le]||"#93c5fd",g.fillRect(D,F,q,R),g.fillStyle=y,g.font=`${12*f}px ui-sans-serif,system-ui`,q>26){const ce=g.measureText(U).width;g.fillText(U,D+q/2-ce/2,O+14*f)}if(t.showLabels!==!1&&R>14*f&&q>22*f&&J>.01){const ce=`${n(J)}h`,Ae=g.measureText(ce).width;g.fillText(ce,D+q/2-Ae/2,F+R/2+4*f)}})}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 Lt(()=>{s(),l(),window.addEventListener("resize",s)}),Ct(()=>{try{window.removeEventListener("resize",s)}catch{}try{o&&a.value&&o.unobserve(a.value)}catch{}try{r&&r.disconnect()}catch{}o=null,r=null}),Be(()=>t.data,()=>s(),{deep:!0}),Be(()=>t.showLabels,()=>s()),(d,g)=>(h(),w("canvas",{ref_key:"cv",ref:a,class:"chart"},null,512))}}),ZC={key:0,class:"chart-widget__header"},YC={class:"chart-widget__title"},XC={key:0,class:"chart-widget__subtitle"},QC={key:3,class:"chart-widget__empty"},e3={key:4,class:"chart-widget__legend"},t3=Object.freeze(Object.defineProperty({__proto__:null,default:at(Pe({__name:"ChartDowWidget",props:{title:{},subtitle:{},cardBg:{},showHeader:{type:Boolean},showLabels:{type:Boolean},xLabel:{},yLabel:{},chartData:{},groupedData:{},legendItems:{}},setup(e){const t=e,a=C(()=>t.showHeader!==!1),o=C(()=>t.title||"Day of week"),r=C(()=>({background:t.cardBg||void 0})),n=C(()=>t.legendItems||[]),s=C(()=>t.xLabel||""),l=C(()=>t.yLabel||"");return(d,g)=>(h(),w("div",{class:"card chart-widget",style:He(r.value)},[a.value?(h(),w("div",ZC,[i("div",YC,E(o.value),1),d.subtitle?(h(),w("div",XC,E(d.subtitle),1)):te("",!0)])):te("",!0),d.groupedData?(h(),nt(JC,{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(),nt(Uu,{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(),w("div",QC,"No data")),n.value.length?(h(),w("ul",e3,[(h(!0),w(ke,null,Ie(n.value,u=>(h(),w("li",{key:u.id},[i("span",{class:"dot",style:He({background:u.color})},null,4),i("span",null,E(u.label),1)]))),128))])):te("",!0)],4))}}),[["__scopeId","data-v-9d9b0ba6"]])},Symbol.toStringTag,{value:"Module"})),Gu=Pe({__name:"HeatmapCanvas",props:{hod:{},baseColor:{}},setup(e){const t=e,a=ne(null);let o=null;function r(){var q;const n=a.value,s=t.hod;if(!n)return;if(!s){console.info("[opsdash] heatmap: no data provided");return}const l=Xo(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),b=Math.max(.5,Number.parseFloat(d.getPropertyValue("--widget-density"))||1),v=g*b,c=b<1?u/b:u,f=n.clientWidth,p=n.clientHeight,S=s.dows||[],x=s.hours||[],$=s.matrix||[];l.clearRect(0,0,f,p);const _=36*c,O=_,I=_,B=f-_,y=p-_,T=(B-O)/Math.max(1,x.length),m=(y-I)/Math.max(1,S.length),k=Math.max(0,...$.flat())||1,L=typeof t.baseColor=="string"?t.baseColor.trim():"",z=na(n,"--heatmap-low","#e0f2fe"),M=Qo(z),Z=Qo(L),j=Y=>{const U=Math.max(0,Math.min(1,Y)),le=Math.pow(U,.6);if(!M||!Z)return Vu(le);const J=(R,D,F)=>Math.round(R+(D-R)*F);return ju(J(M.r,Z.r,le),J(M.g,Z.g,le),J(M.b,Z.b,le))};S.length&&x.length&&console.info("[opsdash] heatmap draw",{rows:S.length,cols:x.length,vmax:k});for(let Y=0;Y<S.length;Y++)for(let U=0;U<x.length;U++){const J=(((q=$[Y])==null?void 0:q[U])||0)/k,R=O+U*T,D=I+Y*m;l.fillStyle=j(J),l.fillRect(R,D,T-1,m-1)}l.fillStyle=na(n,"--fg","#0f172a"),l.font=`${12*v}px ui-sans-serif,system-ui`,S.forEach((Y,U)=>l.fillText(Y,8,I+U*m+12*v)),x.forEach((Y,U)=>{U%2===0&&l.fillText(String(Y),O+U*T+2,I-6*v)})}return Lt(async()=>{await zt(),r();try{o=new ResizeObserver(()=>r()),a.value&&o.observe(a.value)}catch{}window.addEventListener("resize",r)}),Ct(()=>{try{window.removeEventListener("resize",r)}catch{}try{o&&a.value&&o.unobserve(a.value)}catch{}o=null}),Be(()=>t.hod,()=>r(),{deep:!0}),(n,s)=>(h(),w("canvas",{ref_key:"cv",ref:a,class:"chart"},null,512))}}),a3={class:"heatmap-lookback"},o3={class:"heatmap-lookback__stacked"},r3={class:"heatmap-lookback__label"},n3={key:0,class:"heatmap-lookback__legend"},s3={class:"heatmap-lookback__legend-scale"},i3={class:"heatmap-lookback__legend-meta"},l3={class:"heatmap-lookback__legend-weeks"},d3=at(Pe({__name:"HeatmapLookback",props:{entries:{},mode:{},showLegend:{type:Boolean}},setup(e){const t=e,a=ne(null);let o=null;const r=C(()=>Array.isArray(t.entries)?t.entries:[]),n=C(()=>t.mode==="overlay"?"overlay":"stacked"),s=C(()=>t.showLegend!==!1),l=C(()=>{let c=0;return r.value.forEach(f=>{var p,S;(S=(p=f==null?void 0:f.hod)==null?void 0:p.matrix)==null||S.forEach(x=>{x.forEach($=>{const _=Number($);Number.isFinite(_)&&(c=Math.max(c,Math.max(0,_)))})})}),{max:c}}),d=C(()=>"Less hours"),g=C(()=>"More hours"),u=C(()=>{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 b(){var Ae;if(n.value!=="overlay")return;const c=r.value;if(!c.length)return;const f=a.value;if(!f)return;const p=Xo(f);if(!p)return;const S=getComputedStyle(f),x=Math.max(.5,Number.parseFloat(S.getPropertyValue("--widget-scale"))||1),$=Math.max(.5,Number.parseFloat(S.getPropertyValue("--widget-space"))||x),_=Math.max(.5,Number.parseFloat(S.getPropertyValue("--widget-density"))||1),O=x*_,I=_<1?$/_:$,B=f.clientWidth,y=f.clientHeight,T=(Ae=c[0])==null?void 0:Ae.hod,m=(T==null?void 0:T.dows)||[],k=(T==null?void 0:T.hours)||[];if(!m.length||!k.length)return;let L=0;c.forEach(se=>{var oe,G;(G=(oe=se.hod)==null?void 0:oe.matrix)==null||G.forEach(ee=>{ee.forEach(ge=>{L=Math.max(L,Math.max(0,Number(ge)||0))})})}),L<=0&&(L=1);const z=36*I,M=z,Z=z,j=B-z,q=y-z,Y=(j-M)/Math.max(1,k.length),U=(q-Z)/Math.max(1,m.length),le=na(f,"--heatmap-low","#e0f2fe"),J=Qo(le),R=c.map(se=>Qo(se.color)),D=se=>Math.max(0,Math.min(1,se)),F=(se,oe,G)=>Math.round(se+(oe-se)*G),ce=Math.max(1,c.length);p.clearRect(0,0,B,y);for(let se=0;se<m.length;se++)for(let oe=0;oe<k.length;oe++){const G=M+oe*Y,ee=Z+se*U,ge=Y/ce;c.forEach((ve,N)=>{var _e,ye,xe;const P=Math.max(0,Number(((xe=(ye=(_e=ve==null?void 0:ve.hod)==null?void 0:_e.matrix)==null?void 0:ye[se])==null?void 0:xe[oe])??0)),V=D(P/L),de=Math.pow(V,.6),ue=R[N],fe=J&&ue?ju(F(J.r,ue.r,de),F(J.g,ue.g,de),F(J.b,ue.b,de)):Vu(de);p.fillStyle=fe,p.fillRect(G+N*ge,ee,ge,U-1)})}p.fillStyle=na(f,"--fg","#0f172a"),p.font=`${12*O}px ui-sans-serif,system-ui`,m.forEach((se,oe)=>p.fillText(se,8,Z+oe*U+12*O)),k.forEach((se,oe)=>{oe%2===0&&p.fillText(String(se),M+oe*Y+2,Z-6*O)})}function v(){try{o=new ResizeObserver(()=>b()),a.value&&o.observe(a.value)}catch{}window.addEventListener("resize",b)}return Lt(async()=>{await zt(),b(),v()}),Ct(()=>{try{window.removeEventListener("resize",b)}catch{}try{o&&a.value&&o.unobserve(a.value)}catch{}o=null}),Be(()=>[r.value,n.value],()=>{n.value==="overlay"&&zt().then(()=>b())},{deep:!0}),(c,f)=>(h(),w("div",a3,[Ro(i("div",o3,[(h(!0),w(ke,null,Ie(r.value,p=>(h(),w("div",{key:p.id,class:"heatmap-lookback__panel"},[i("div",r3,[i("span",{class:"dot",style:He({background:p.color})},null,4),i("span",null,E(p.label),1)]),We(Gu,{hod:p.hod,"base-color":p.color},null,8,["hod","base-color"])]))),128))],512),[[Qd,n.value==="stacked"]]),Ro(i("canvas",{ref_key:"cv",ref:a,class:"chart heatmap-lookback__overlay"},null,512),[[Qd,n.value==="overlay"]]),s.value&&r.value.length?(h(),w("div",n3,[i("div",s3,[i("span",null,E(d.value),1),f[0]||(f[0]=i("span",{class:"heatmap-lookback__legend-bar","aria-hidden":"true"},null,-1)),i("span",null,E(g.value),1)]),i("div",i3,[i("span",null,E(u.value),1)]),i("ul",l3,[(h(!0),w(ke,null,Ie(r.value,p=>(h(),w("li",{key:p.id},[i("span",{class:"dot",style:He({background:p.color})},null,4),i("span",null,E(p.label),1)]))),128))])])):te("",!0)]))}}),[["__scopeId","data-v-9b113ef0"]]),c3={key:0,class:"chart-widget__header"},u3={class:"chart-widget__title"},g3={key:0,class:"chart-widget__subtitle"},p3={key:1,class:"chart-widget__meta"},f3={key:3,class:"chart-widget__empty"},b3={key:4,class:"chart-widget__hint"},v3=Object.freeze(Object.defineProperty({__proto__:null,default:at(Pe({__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=C(()=>t.showHeader!==!1),o=C(()=>t.title||"Hours of day"),r=C(()=>({background:t.cardBg||void 0})),n=C(()=>t.lookbackEntries||[]),s=C(()=>t.showLegend!==!1),l=C(()=>t.lookbackMode||"stacked"),d=C(()=>{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(),w("div",{class:"card chart-widget chart-widget--hod",style:He(r.value)},[a.value?(h(),w("div",c3,[i("div",u3,E(o.value),1),g.subtitle?(h(),w("div",g3,E(g.subtitle),1)):te("",!0),d.value?(h(),w("div",p3,E(d.value),1)):te("",!0)])):te("",!0),n.value.length?(h(),nt(d3,{key:1,entries:n.value,mode:l.value,"show-legend":s.value},null,8,["entries","mode","show-legend"])):g.hodData?(h(),nt(Gu,{key:2,hod:g.hodData},null,8,["hod"])):(h(),w("div",f3,"No data")),g.showHint&&g.hodData?(h(),w("div",b3,"24×7 Heatmap: hours by weekday and hour.")):te("",!0)],4))}}),[["__scopeId","data-v-ca4a5fd8"]])},Symbol.toStringTag,{value:"Module"})),h3={key:0,class:"chart-widget__header"},m3={class:"chart-widget__title"},y3={key:0,class:"chart-widget__subtitle"},w3={key:2,class:"chart-widget__empty"},k3={key:3,class:"chart-widget__legend"},x3=Object.freeze(Object.defineProperty({__proto__:null,default:at(Pe({__name:"ChartPerDayWidget",props:{title:{},subtitle:{},cardBg:{},showHeader:{type:Boolean},showLabels:{type:Boolean},xLabel:{},yLabel:{},chartData:{},legendItems:{}},setup(e){const t=e,a=C(()=>t.showHeader!==!1),o=C(()=>t.title||"Per-day totals"),r=C(()=>({background:t.cardBg||void 0})),n=C(()=>t.legendItems||[]),s=C(()=>t.xLabel||""),l=C(()=>t.yLabel||"");return(d,g)=>(h(),w("div",{class:"card chart-widget",style:He(r.value)},[a.value?(h(),w("div",h3,[i("div",m3,E(o.value),1),d.subtitle?(h(),w("div",y3,E(d.subtitle),1)):te("",!0)])):te("",!0),d.chartData?(h(),nt(Uu,{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(),w("div",w3,"No data")),n.value.length?(h(),w("ul",k3,[(h(!0),w(ke,null,Ie(n.value,u=>(h(),w("li",{key:u.id},[i("span",{class:"dot",style:He({background:u.color})},null,4),i("span",null,E(u.label),1)]))),128))])):te("",!0)],4))}}),[["__scopeId","data-v-08a193fb"]])},Symbol.toStringTag,{value:"Module"})),_3=at(Pe({__name:"PieChart",props:{data:{},colorsById:{},colorsByName:{},showLabels:{type:Boolean},highlightId:{}},setup(e){const t=e,a=ne(null);let o=null,r=null,n=null;const s=ne(null);function l(){const b=t.data,v=a.value;if(!v||!b)return;const c=Xo(v);if(!c)return;const f=getComputedStyle(v),p=Math.max(.5,Number.parseFloat(f.getPropertyValue("--widget-scale"))||1),S=Math.max(.5,Number.parseFloat(f.getPropertyValue("--widget-space"))||p),x=Math.max(.5,Number.parseFloat(f.getPropertyValue("--widget-density"))||1),$=Math.max(.6,Number.parseFloat(f.getPropertyValue("--pie-scale"))||.85),_=p*x*$,O=v.clientWidth,I=v.clientHeight,B=O/2,y=I/2,T=Math.min(O,I)*(.35*S*$),m=b.data||[],k=b.labels||[],L=b.ids||[],z=b.colors||[],M=[];for(let oe=0;oe<m.length;oe++)(Number(m[oe])||0)>0&&M.push(oe);if(c.clearRect(0,0,O,I),M.length===0)return;const Z=M.map(oe=>Number(m[oe])||0),j=M.map(oe=>String(k[oe]||"")),q=M.map(oe=>String(L[oe]||"")),Y=M.map(oe=>z[oe]),U=Z.reduce((oe,G)=>oe+Math.max(0,G),0)||1;let le=-Math.PI/2;const J=na(v,"--line","#e5e7eb"),R=na(v,"--fg","#0f172a"),D=na(v,"--bg","#ffffff");c.lineWidth=1,c.strokeStyle=J;const F=["#60a5fa","#f59e0b","#ef4444","#10b981","#a78bfa","#fb7185","#22d3ee","#f97316"];s.value&&!q.includes(s.value)&&(s.value=null);const ce=t.highlightId??s.value?String(t.highlightId??s.value):"",Ae=!!(ce&&q.includes(ce)),se=[];Z.forEach((oe,G)=>{var ye,xe;const ee=Math.max(0,oe)/U,ge=le+ee*2*Math.PI,ve=String((j==null?void 0:j[G])||""),N=String((q==null?void 0:q[G])||""),P=Y[G],V=(ye=t.colorsById)==null?void 0:ye[N],de=(xe=t.colorsByName)==null?void 0:xe[ve];let ue=V||de||P||F[G%F.length];const fe=Ae&&N===ce,_e=Ae&&!fe;if(c.save(),_e&&(c.globalAlpha=.25),c.beginPath(),c.moveTo(B,y),c.arc(B,y,T,le,ge),c.closePath(),c.fillStyle=ue,c.fill(),c.lineWidth=fe?2:1,c.strokeStyle=fe?"rgba(255,255,255,0.9)":J,c.stroke(),c.restore(),t.showLabels!==!1){const be=(le+ge)/2,Ee=B+Math.cos(be)*(T+12*S*$),Me=y+Math.sin(be)*(T+12*S*$);c.save(),c.font=`${12*_}px ui-sans-serif,system-ui`,c.fillStyle=R,c.strokeStyle=D,c.lineWidth=3,c.textAlign="center",c.textBaseline="middle";const ae=Math.max(0,Number(oe)||0)/U*100,re=`${j!=null&&j[G]?j[G]+" ":""}${Number(oe).toFixed(2)}h · ${ae.toFixed(1)}%`;c.strokeText(re,Ee,Me),c.fillText(re,Ee,Me),c.restore()}se.push({start:le,end:ge,id:N}),le=ge}),n={cx:B,cy:y,r:T,segments:se}}function d(){var b,v;try{o=new ResizeObserver(()=>l()),a.value&&o.observe(a.value)}catch{}try{const c=((b=a.value)==null?void 0:b.closest(".layout-item"))||((v=a.value)==null?void 0:v.parentElement);c&&(r=new MutationObserver(()=>l()),r.observe(c,{attributes:!0,attributeFilter:["style","class"]}))}catch{}}Lt(()=>{l(),d(),window.addEventListener("resize",l)}),Ct(()=>{try{window.removeEventListener("resize",l)}catch{}try{o&&a.value&&o.unobserve(a.value)}catch{}try{r&&r.disconnect()}catch{}try{const b=a.value;b&&(b.removeEventListener("mousemove",g),b.removeEventListener("mouseleave",u))}catch{}o=null,r=null}),Be(()=>t.data,()=>l(),{deep:!0}),Be(()=>t.colorsById,()=>l(),{deep:!0}),Be(()=>t.showLabels,()=>l()),Be(()=>t.highlightId,()=>l());function g(b){const v=a.value;if(!v||!n)return;const c=v.getBoundingClientRect(),f=b.clientX-c.left,p=b.clientY-c.top,S=f-n.cx,x=p-n.cy,$=Math.sqrt(S*S+x*x);if(!Number.isFinite($)||$>n.r){s.value&&(s.value=null,l());return}let _=Math.atan2(x,S);_<-Math.PI/2&&(_+=Math.PI*2);const O=n.segments.find(B=>_>=B.start&&_<=B.end),I=O?O.id:null;I!==s.value&&(s.value=I,l())}function u(){s.value&&(s.value=null,l())}return Be(()=>a.value,(b,v)=>{v&&(v.removeEventListener("mousemove",g),v.removeEventListener("mouseleave",u)),b&&(b.addEventListener("mousemove",g),b.addEventListener("mouseleave",u))},{immediate:!0}),(b,v)=>(h(),w("canvas",{ref_key:"cv",ref:a,class:"chart"},null,512))}}),[["__scopeId","data-v-d6565e06"]]),C3={key:0,class:"chart-widget__header"},S3={class:"chart-widget__title"},$3={key:0,class:"chart-widget__subtitle"},T3={key:2,class:"chart-widget__empty"},M3={key:3,class:"chart-widget__legend"},A3=["onMouseenter","onFocus"],L3={class:"val"},D3=Object.freeze(Object.defineProperty({__proto__:null,default:at(Pe({__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=C(()=>t.showHeader!==!1),o=C(()=>t.title||"Pie chart"),r=C(()=>({background:t.cardBg||void 0})),n=C(()=>t.colorsById||{}),s=C(()=>t.colorsByName||{}),l=ne(null),d=C(()=>{const g=t.chartData;if(!g||!Array.isArray(g.data))return[];const u=g.data.reduce((b,v)=>b+Math.max(0,Number(v)||0),0)||1;return g.data.map((b,v)=>{var _,O,I;const c=Math.max(0,Number(b)||0),f=String(((_=g.labels)==null?void 0:_[v])??""),p=String(((O=g.ids)==null?void 0:O[v])??f??v),S=((I=g.colors)==null?void 0:I[v])||n.value[p]||s.value[f]||"#60a5fa",x=c/u*100,$=Math.round(x);return{id:p,label:f,color:S,raw:c,pctRounded:$,value:`${c.toFixed(1)}h · ${$}%`}}).filter(b=>b.pctRounded>0).sort((b,v)=>v.raw-b.raw)});return(g,u)=>(h(),w("div",{class:"card chart-widget",style:He(r.value)},[a.value?(h(),w("div",C3,[i("div",S3,E(o.value),1),g.subtitle?(h(),w("div",$3,E(g.subtitle),1)):te("",!0)])):te("",!0),g.chartData?(h(),nt(_3,{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(),w("div",T3,"No data")),g.showLegend&&d.value.length?(h(),w("ul",M3,[(h(!0),w(ke,null,Ie(d.value,b=>(h(),w("li",{key:b.id,class:we({hovered:l.value===b.id}),onMouseenter:v=>l.value=b.id,onMouseleave:u[0]||(u[0]=v=>l.value=null),onFocus:v=>l.value=b.id,onBlur:u[1]||(u[1]=v=>l.value=null),tabindex:"0"},[i("span",{class:"dot",style:He({background:b.color})},null,4),i("span",null,E(b.label),1),i("span",L3,E(b.value),1)],42,A3))),128))])):te("",!0)],4))}}),[["__scopeId","data-v-df59c238"]])},Symbol.toStringTag,{value:"Module"})),E3=at(Pe({__name:"StackedBars",props:{stacked:{},colorsById:{},showLabels:{type:Boolean},highlightId:{}},setup(e){const t=e,a=ne(null);let o=null,r=null,n=null;const s=ne(null);function l(B,y,T,m,k){B.save(),k!=null&&k.font&&(B.font=k.font),k!=null&&k.align&&(B.textAlign=k.align),k!=null&&k.baseline&&(B.textBaseline=k.baseline),B.lineWidth=3,B.strokeStyle=(k==null?void 0:k.stroke)||"rgba(0,0,0,0.55)",B.strokeText(y,T,m),B.fillStyle=(k==null?void 0:k.fill)||"#ffffff",B.fillText(y,T,m),B.restore()}function d(B){const y=/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(B||"");return y?{r:parseInt(y[1],16),g:parseInt(y[2],16),b:parseInt(y[3],16)}:null}function g(B,y){const T=d(B);return T&&(.2126*T.r+.7152*T.g+.0722*T.b)/255<.55?"#ffffff":y}function u(B){const y=Math.max(0,Number(B)||0);return(Math.round(y*10)/10).toFixed(1)}function b(B,y=.5){const T=d(B);if(!T)return B;const m=Math.max(0,Math.min(1,y)),k=Math.round(T.r+(255-T.r)*m),L=Math.round(T.g+(255-T.g)*m),z=Math.round(T.b+(255-T.b)*m);return`rgb(${k},${L},${z})`}function v(B,y=.5){const T=d(B);if(!T)return B;const m=Math.max(0,Math.min(1,y)),k=Math.round(T.r*(1-m)),L=Math.round(T.g*(1-m)),z=Math.round(T.b*(1-m));return`rgb(${k},${L},${z})`}function c(B,y){const{x:T,y:m,width:k,height:L,baseColor:z,variant:M}=y,Z=M==="mixed",j=Math.max(0,Math.min(1,Number(y.alphaScale))),q=Math.min(k*(Z?.35:.22),6),Y=Math.max(2,Z?k*.45:k-q*2),U=Z?T+k-Y-q:T+(k-Y)/2,le=b(z,Z?.6:.45),J=v(z,Z?.4:.35);B.save(),B.fillStyle=le,B.globalAlpha=(Z?.12:.16)*j,B.fillRect(U,m,Y,L),B.restore(),B.save(),B.strokeStyle=J,B.lineWidth=Z?1.25:1.5,B.globalAlpha=(Z?.6:.75)*j,B.setLineDash([4,4]),B.strokeRect(U,m,Y,L),B.restore(),B.save(),B.strokeStyle=J,B.globalAlpha=(Z?.35:.45)*j,B.lineWidth=1,B.beginPath(),B.moveTo(U,m),B.lineTo(U+Y,m),B.stroke(),B.restore()}function f(){const B=a.value;if(!B)return;const y=Xo(B);if(!y)return;const T=getComputedStyle(B),m=Math.max(.5,Number.parseFloat(T.getPropertyValue("--widget-scale"))||1),k=Math.max(.5,Number.parseFloat(T.getPropertyValue("--widget-space"))||m),L=Math.max(.5,Number.parseFloat(T.getPropertyValue("--widget-density"))||1),z=Math.max(.6,Number.parseFloat(T.getPropertyValue("--stacked-scale"))||.85),M=m*L*z,Z=L<1?k/L:k,j=`${11*M}px ui-sans-serif,system-ui`,q=B.clientWidth,Y=B.clientHeight,U=28*Z,le=U*1.4,J=Y-U,R=q-U,D=na(B,"--line","#e5e7eb"),F=na(B,"--fg","#0f172a"),ce=na(B,"--bg","#ffffff");y.clearRect(0,0,q,Y),y.strokeStyle=D,y.lineWidth=1,y.beginPath(),y.moveTo(le,J),y.lineTo(R,J),y.moveTo(le,J),y.lineTo(le,U),y.stroke();const Ae=t.stacked;if(Ae&&Ae.labels&&Ae.series){const se=[];let oe=Ae.labels||[],G=Ae.series||[];const ee=$(oe,G);oe=ee.labels,G=ee.series;const ge=G.map(Le=>String((Le==null?void 0:Le.id)??""));s.value&&!ge.includes(s.value)&&(s.value=null);const ve=t.highlightId??s.value?String(t.highlightId??s.value):"",N=!!(ve&&ge.includes(ve)),P=oe.map((Le,X)=>G.reduce((ie,Te)=>{var Ne;return ie+Math.max(0,Number(((Ne=Te.data)==null?void 0:Ne[X])||0))},0)),V=oe.map((Le,X)=>G.reduce((ie,Te)=>{var Ne;return ie+Math.max(0,Number(((Ne=Te.forecast)==null?void 0:Ne[X])||0))},0)),de=P.map((Le,X)=>Le+V[X]),ue=Math.max(1,...de),fe=oe.length||1,_e=8*k,ye=Math.max(6*k,(R-le-_e*(fe+1))/fe),xe=_e*z,be=Math.max(4*k*z,ye*z),Ee=be*fe+xe*(fe+1),Me=le+Math.max(0,(R-le-Ee)/2),ae=(J-U)/ue*z;let re=0,he=0;oe.forEach((Le,X)=>{const ie=Me+xe+X*(be+xe);let Te=J,Ne=0;const Ze=[];G.forEach(ht=>{var Et;const Ue=Math.max(0,Number(((Et=ht.data)==null?void 0:Et[X])||0)),Ve=Ue*ae;Te-=Ve;const ot=String(ht.id??""),ct=t.colorsById[ht.id]||ht.color||"#93c5fd",Je=N&&ot===ve,_t=N&&!Je;if(Ve>.5&&(y.save(),_t&&(y.globalAlpha=.25),y.fillStyle=ct,y.fillRect(ie,Te,be,Ve),Je&&(y.strokeStyle="rgba(255,255,255,0.9)",y.lineWidth=1.5,y.strokeRect(ie,Te,be,Ve)),y.restore()),t.showLabels!==!1&&Ue>.01){const Nt=u(Ue);y.font=j;const Qt=y.measureText(Nt).width;if(Ve>14*M&&be>Qt+6*M)y.save(),_t&&(y.globalAlpha=.25),y.fillStyle=g(ct,F),y.font=j,y.fillText(Nt,ie+be/2-Qt/2,Te+Ve/2+4),y.restore();else if(Ve>.5){const Ut=Te+Ve/2,lt=6*k,sa=ie+be+lt,vo=ie-lt,Ma=sa+Qt<=R,Wa=Ma?sa:vo,ho=Ma?"left":"right",ka=Ma?ie+be:ie,eo=Ma?Wa-4*k:Wa+4*k;Ze.push({y:Ut,text:Nt,align:ho,textX:Wa,lineStartX:ka,lineEndX:eo,alpha:_t?.25:1})}}Ve>.5&&se.push({x:ie,y:Te,width:be,height:Ve,id:ot}),Ne+=Ue});let et=Te,it=0;if(G.forEach(ht=>{var Et;const Ue=Math.max(0,Number(((Et=ht.forecast)==null?void 0:Et[X])||0));if(Ue<=0)return;const Ve=Ue*ae;if(et-=Ve,it+=Ue,Ve<=.5)return;const ot=String(ht.id??""),ct=t.colorsById[ht.id]||ht.color||"#93c5fd",_t=N&&!(N&&ot===ve);c(y,{x:ie,y:et,width:be,height:Ve,baseColor:ct,variant:Ne>.01?"mixed":"future",alphaScale:_t?.25:1})}),t.showLabels!==!1&&Ze.length){const ht=12*M,Ue=U+6*M,Ve=J-6*M;Ze.sort((Je,_t)=>Je.y-_t.y),Ze.forEach((Je,_t)=>{_t===0?Je.y=Math.max(Je.y,Ue):Je.y=Math.max(Je.y,Ze[_t-1].y+ht)});const ot=Ze[Ze.length-1].y-Ve;ot>0&&Ze.forEach(Je=>{Je.y-=ot});const ct=Ue-Ze[0].y;ct>0&&Ze.forEach(Je=>{Je.y+=ct}),y.save(),y.font=j,y.textBaseline="middle",Ze.forEach(Je=>{y.save(),y.globalAlpha=Je.alpha,y.strokeStyle=D,y.lineWidth=1,y.beginPath(),y.moveTo(Je.lineStartX,Je.y),y.lineTo(Je.lineEndX,Je.y),y.stroke(),y.fillStyle=F,y.textAlign=Je.align,y.fillText(Je.text,Je.textX,Je.y),y.restore()}),y.restore()}re+=Ne,he+=it,y.fillStyle=F,y.font=`${12*M}px ui-sans-serif,system-ui`;const Tt=_(String(oe[X]||""));if(be>26*M){const ht=y.measureText(Tt).width;y.fillText(Tt,ie+be/2-ht/2,J+14*M)}const dt=it>.01?`~${u(Ne+it)}h`:Ne>.01?`${u(Ne)}h`:"";t.showLabels!==!1&&dt&&l(y,dt,ie+be/2,Math.max(U+4*M,et-2),{align:"center",baseline:"bottom",font:`${11*M}px ui-sans-serif,system-ui`,fill:F,stroke:ce})});const $e=he>.01?`~${u(re+he)}h expected`:`${u(re)}h total`;t.showLabels!==!1&&l(y,$e,R-4,U+4*M,{align:"right",baseline:"top",font:`${12*M}px ui-sans-serif,system-ui`,fill:F,stroke:ce}),n={segments:se};return}n=null}function p(){var B,y;try{o=new ResizeObserver(()=>f()),a.value&&o.observe(a.value)}catch{}try{const T=((B=a.value)==null?void 0:B.closest(".layout-item"))||((y=a.value)==null?void 0:y.parentElement);T&&(r=new MutationObserver(()=>f()),r.observe(T,{attributes:!0,attributeFilter:["style","class"]}))}catch{}}Lt(()=>{f(),p(),window.addEventListener("resize",f)}),Ct(()=>{try{window.removeEventListener("resize",f)}catch{}try{o&&a.value&&o.unobserve(a.value)}catch{}try{r&&r.disconnect()}catch{}try{const B=a.value;B&&(B.removeEventListener("mousemove",S),B.removeEventListener("mouseleave",x))}catch{}o=null,r=null}),Be(()=>t.stacked,()=>f(),{deep:!0}),Be(()=>t.colorsById,()=>f(),{deep:!0}),Be(()=>t.showLabels,()=>f()),Be(()=>t.highlightId,()=>f());function S(B){const y=a.value;if(!y||!n)return;const T=y.getBoundingClientRect(),m=B.clientX-T.left,k=B.clientY-T.top;let L=null;for(let z=n.segments.length-1;z>=0;z-=1){const M=n.segments[z];if(m>=M.x&&m<=M.x+M.width&&k>=M.y&&k<=M.y+M.height){L=M.id;break}}L!==s.value&&(s.value=L,f())}function x(){s.value&&(s.value=null,f())}Be(()=>a.value,(B,y)=>{y&&(y.removeEventListener("mousemove",S),y.removeEventListener("mouseleave",x)),B&&(B.addEventListener("mousemove",S),B.addEventListener("mouseleave",x))},{immediate:!0});function $(B,y){if(!Array.isArray(B)||B.length!==7)return{labels:B,series:y};const T=B.map(q=>O(q));if(T.some(q=>!q))return{labels:B,series:y};const m=T.map(q=>I(q)),k=Qs(),L=[];for(let q=0;q<7;q+=1){const Y=(k+q)%7;L.push(Y===0?7:Y)}if(m.join(",")===L.join(","))return{labels:B,series:y};const z={};if(m.forEach((q,Y)=>{z[q]=Y}),!L.every(q=>q in z))return{labels:B,series:y};const M=L.map(q=>z[q]),Z=M.map(q=>B[q]),j=(y||[]).map(q=>{const Y=Array.isArray(q.data)?q.data:[],U=Array.isArray(q.forecast)?q.forecast:null,le=M.map(D=>Y[D]??0),J=U?M.map(D=>U[D]??0):void 0,R={...q,data:le};return J&&(R.forecast=J),R});return{labels:Z,series:j}}function _(B){return Mn(B,{weekday:"short"})||B}function O(B){return jt(B)}function I(B){const y=B.getUTCDay();return y===0?7:y}return(B,y)=>(h(),w("canvas",{ref_key:"cv",ref:a,class:"chart"},null,512))}}),[["__scopeId","data-v-aef1be0d"]]),N3={key:0,class:"chart-widget__header"},I3={class:"chart-widget__title"},O3={key:0,class:"chart-widget__subtitle"},B3={key:2,class:"chart-widget__empty"},H3={key:3,class:"chart-widget__legend"},F3=["onMouseenter","onFocus"],P3=Object.freeze(Object.defineProperty({__proto__:null,default:at(Pe({__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=C(()=>t.showHeader!==!1),o=C(()=>t.title||"Stacked bars"),r=C(()=>({background:t.cardBg||void 0})),n=C(()=>t.colorsById||{}),s=ne(null),l=C(()=>{var b;const d=((b=t.stacked)==null?void 0:b.series)||[],g=d.map(v=>(Array.isArray(v==null?void 0:v.data)?v.data:[]).reduce((c,f)=>{const p=Number(f);return c+(Number.isFinite(p)?Math.max(0,p):0)},0)),u=g.reduce((v,c)=>v+c,0)||1;return d.map((v,c)=>{const f=String((v==null?void 0:v.id)??""),p=String((v==null?void 0:v.name)??(v==null?void 0:v.label)??f),S=(v==null?void 0:v.color)||n.value[f]||"#60a5fa",x=g[c]||0,$=Math.round(x/u*100);return{id:f,label:p,color:S,total:x,pctRounded:$}}).filter(v=>v.pctRounded>0).sort((v,c)=>c.total-v.total)});return(d,g)=>(h(),w("div",{class:"card chart-widget",style:He(r.value)},[a.value?(h(),w("div",N3,[i("div",I3,E(o.value),1),d.subtitle?(h(),w("div",O3,E(d.subtitle),1)):te("",!0)])):te("",!0),d.stacked?(h(),nt(E3,{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(),w("div",B3,"No data")),d.showLegend&&l.value.length?(h(),w("ul",H3,[(h(!0),w(ke,null,Ie(l.value,u=>(h(),w("li",{key:u.id,class:we({hovered:s.value===u.id}),onMouseenter:b=>s.value=u.id,onMouseleave:g[0]||(g[0]=b=>s.value=null),onFocus:b=>s.value=u.id,onBlur:g[1]||(g[1]=b=>s.value=null),tabindex:"0"},[i("span",{class:"dot",style:He({background:u.color})},null,4),i("span",null,E(u.label),1)],42,F3))),128))])):te("",!0)],4))}}),[["__scopeId","data-v-2ce5d838"]])},Symbol.toStringTag,{value:"Module"})),W3={class:"group-row"},z3={colspan:"5"},R3={class:"group-header"},j3={class:"group-main"},V3={class:"group-label"},U3={class:"name"},G3={key:0,class:"group-progress"},q3={key:0,class:"group-meta"},K3={class:"summary"},J3={key:0,class:"summary-percent"},Z3={key:1,class:"group-meta"},Y3={class:"summary"},X3={key:0},Q3=["title"],e5={class:"row-name"},t5={key:0,class:"progress"},a5={class:"num"},o5={class:"num hours-cell"},r5={key:0,class:"hint planned-sub"},n5={class:"num"},s5={class:"num"},i5={key:0,class:"hint"},l5={key:0,class:"empty-row"},d5=at(Pe({__name:"ByCalendarTable",props:{rows:{},n2:{type:Function},targets:{},groups:{},todayHours:{}},setup(e){const t=e,a=C(()=>Array.isArray(t.groups)&&t.groups.length?t.groups.map(y=>({id:y.id,label:y.label,summary:y.summary??null,color:y.color,todayHours:Number(y.todayHours??0)||0,rows:(y.rows||[]).map(o)})):[{id:"__all__",label:"Calendars",summary:null,color:void 0,rows:(t.rows||[]).map(o)}]);function o(y){const T=r(y);return{...y,calendarId:T}}function r(y){return y?y.calendarId?String(y.calendarId):y.id?String(y.id):y.calendar_id?String(y.calendar_id):y.calendar?String(y.calendar):"":""}function n(y){return String(y.calendar||y.displayname||y.name||y.calendarId||"")}function s(y){return r(y)||n(y)}function l(y){const T=_(y);if(!T)return!1;const m=t.targets||{},k=Number(m[T]);return isFinite(k)&&k>0}function d(y){const T=_(y);if(!T)return 0;const m=t.targets||{},k=Number(m[T]);return isFinite(k)?k:0}function g(y){const T=d(y);return T>0?(Math.round(T*100)/100).toFixed(2):"—"}function u(y,T){return y-T>=0?"delta pos":"delta neg"}function b(y,T){const m=y-T,k=Math.abs(Math.round(m*100)/100).toFixed(2);return(m>=0?"+":"-")+k+"h"}function v(y,T){return Math.max(0,Math.min(100,T>0?y/T*100:0)).toFixed(0)+"%"}function c(y,T){return Math.max(0,Math.min(100,T>0?y/T*100:0))}function f(y){const T=_(y);if(!T)return 0;const m=t.todayHours||{},k=Number(m[T]??0);return Number.isFinite(k)?Math.max(0,k):0}function p(y){const T=d(r(y)),m=f(r(y));if(T<=0||m<=1e-4)return null;const k=Math.max(2,Math.min(120,m/T*100)),L=c(y.total_hours,T),z=Math.max(0,L-k);return{pct:k,left:z}}function S(y){return!!y.summary&&Number(y.summary.targetHours??0)>0}function x(y){if(!y.summary)return 0;const T=Number(y.summary.actualHours??0),m=Number(y.summary.targetHours??0);return c(T,m)}function $(y){if(!y.summary)return null;const T=Number(y.summary.targetHours??0),m=Number(y.todayHours??0);if(T<=0||m<=1e-4)return null;const k=Math.max(2,Math.min(120,m/T*100)),L=x(y),z=Math.max(0,L-k);return{pct:k,left:z}}function _(y){return y==null?"":String(y)}function O(y){const T=y.summary;if(!T)return`${y.rows.length} calendar${y.rows.length===1?"":"s"}`;const m=t.n2(T.actualHours),k=Number(T.plannedHours??0);return T.targetHours>0?`${m} h / ${t.n2(T.targetHours)} h${k>0?` · +${t.n2(k)} h planned`:""}`:`${m} h${k>0?` · +${t.n2(k)} h planned`:""}`}function I(y){const T=y.summary;return!T||T.targetHours<=0?"":`${Math.round(T.percent)}%`}function B(y){switch(y){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(y,T)=>(h(),w("table",null,[T[1]||(T[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)),T[2]||(T[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),w(ke,null,Ie(a.value,m=>(h(),w(ke,{key:m.id},[i("tr",W3,[i("td",z3,[i("div",R3,[i("div",j3,[i("div",V3,[i("span",{class:"dot",style:He({background:m.color||"var(--brand)"})},null,4),i("span",U3,E(m.label),1)]),S(m)?(h(),w("div",G3,[i("div",{class:"group-progress__bar",style:He({width:x(m)+"%",background:m.color||void 0})},null,4),$(m)?(h(),w("div",{key:0,class:"group-progress__today",style:He({left:$(m).left+"%",width:$(m).pct+"%",background:m.color||"var(--brand)"})},null,4)):te("",!0)])):te("",!0)]),m.summary?(h(),w("div",q3,[i("span",K3,E(O(m)),1),I(m)?(h(),w("span",J3,E(I(m)),1)):te("",!0),m.summary.statusLabel?(h(),w("span",{key:1,class:we(["badge",B(m.summary.status)])},E(m.summary.statusLabel),3)):te("",!0)])):(h(),w("div",Z3,[i("span",Y3,[Re(E(m.rows.length)+" calendar",1),m.rows.length!==1?(h(),w("span",X3,"s")):te("",!0)])]))])])]),(h(!0),w(ke,null,Ie(m.rows,k=>(h(),w("tr",{key:s(k)},[i("td",null,[i("div",{class:"cell",title:n(k)},[i("div",e5,E(n(k)),1),l(r(k))&&d(r(k))>0?(h(),w("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(),w("div",{key:0,class:"progress-today",style:He({left:p(k).left+"%",width:p(k).pct+"%",background:m.color||"var(--brand)"})},null,4)):te("",!0)])):te("",!0)],8,Q3)]),i("td",a5,E(k.events_count),1),i("td",o5,[i("div",null,E(y.n2(k.total_hours)),1),Number(k.future_hours??0)>1e-4?(h(),w("div",r5,"+"+E(y.n2(k.future_hours))+" planned",1)):te("",!0)]),i("td",n5,E(g(r(k))),1),i("td",s5,[l(r(k))?(h(),w(ke,{key:0},[i("span",{class:we(u(k.total_hours,d(r(k))))},E(b(k.total_hours,d(r(k)))),3),d(r(k))>0?(h(),w("span",i5," ("+E(v(k.total_hours,d(r(k))))+")",1)):te("",!0)],64)):(h(),w(ke,{key:1},[Re("—")],64))])]))),128)),m.rows.length?te("",!0):(h(),w("tr",l5,[...T[0]||(T[0]=[i("td",{colspan:"5",class:"empty"},"No calendars assigned",-1)])]))],64))),128))])]))}}),[["__scopeId","data-v-bade1032"]]),c5={key:0,class:"table-widget__header"},u5={class:"table-widget__title"},g5={key:0,class:"table-widget__subtitle"},p5={key:1,class:"table-widget__context"},f5={key:0,class:"table-widget__context-text"},b5={key:1,class:"table-widget__context-text"},v5={key:2,class:"table-widget__context"},h5={key:4,class:"table-widget__empty"},m5=Object.freeze(Object.defineProperty({__proto__:null,default:at(Pe({__name:"CalendarTableWidget",props:{title:{},subtitle:{},cardBg:{},showHeader:{type:Boolean},rows:{},targets:{},groups:{},todayHours:{},mode:{},totalTarget:{}},setup(e){const t=e,a=C(()=>t.showHeader!==!1),o=C(()=>t.title||"By calendar"),r=C(()=>({background:t.cardBg||void 0})),n=s=>Number(s??0).toFixed(2);return(s,l)=>(h(),w("div",{class:"card table-widget",style:He(r.value)},[a.value?(h(),w("div",c5,[i("div",u5,E(o.value),1),s.subtitle?(h(),w("div",g5,E(s.subtitle),1)):te("",!0)])):te("",!0),s.mode==="single_goal"?(h(),w("div",p5,[l[0]||(l[0]=i("span",{class:"table-widget__badge"},"Single Goal",-1)),s.totalTarget>0?(h(),w("span",f5,"Shared total target: "+E(n(s.totalTarget))+" h",1)):(h(),w("span",b5,"Shared total goal without per-calendar targets"))])):s.mode==="category_and_calendar_goals"?(h(),w("div",v5,[...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)])])):te("",!0),s.rows&&s.rows.length?(h(),nt(d5,{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(),w("div",h5,"No data"))],4))}}),[["__scopeId","data-v-2bdf226f"]])},Symbol.toStringTag,{value:"Module"})),y5={key:0,class:"dayoff-card__header"},w5={key:0,class:"pill"},k5=["title"],x5={class:"dayoff-tile__label"},_5={class:"dayoff-tile__value"},C5={class:"dayoff-tile__meta"},S5={key:2,class:"hint"},$5=Object.freeze(Object.defineProperty({__proto__:null,default:at(Pe({__name:"DayOffTrendCard",props:{trend:{},unit:{},lookback:{},title:{},cardBg:{},toneLowColor:{},toneHighColor:{},showHeader:{type:Boolean},labelMode:{},reverseOrder:{type:Boolean},interpretation:{}},setup(e){const t=e,a=C(()=>t.unit==="mo"?"mo":"wk"),o=C(()=>t.unit==="mo"?"This month":"This week"),r=C(()=>{const q=(t.labelMode||"period").toString().toLowerCase();return q==="date"||q==="offset"?q:"period"}),n=C(()=>String(t.interpretation??"").toLowerCase()==="more_off_warning"?"more_off_warning":"more_off_positive"),s=C(()=>{const q=typeof t.lookback=="number"?t.lookback:null;if(q!=null)return Math.max(0,Math.min(6,Math.floor(q)));const Y=(t.trend??[]).filter(U=>Number((U==null?void 0:U.offset)??0)>0);return Math.max(0,Math.min(6,Y.length))}),l=C(()=>{const q=Array.isArray(t.trend)?t.trend:[],Y=new Map;q.forEach(F=>{const ce=Number((F==null?void 0:F.offset)??0)||0;Y.set(ce,{offset:ce,label:(F==null?void 0:F.label)??"",from:(F==null?void 0:F.from)??"",to:(F==null?void 0:F.to)??"",totalDays:Number((F==null?void 0:F.totalDays)??(F==null?void 0:F.total_days)??0)||0,daysOff:Number((F==null?void 0:F.daysOff)??(F==null?void 0:F.days_off)??0)||0,daysWorked:Number((F==null?void 0:F.daysWorked)??(F==null?void 0:F.days_worked)??0)||0})});const U=a.value,le=o.value,J=[],R=Y.get(0)??{offset:0,label:le,from:"",to:"",totalDays:0,daysOff:0,daysWorked:0};J.push(R);const D=s.value;for(let F=1;F<=D;F+=1){const ce=Y.get(F)??{offset:F,label:`-${F} ${U}`,from:"",to:"",totalDays:0,daysOff:0,daysWorked:0};J.push(ce)}return J}),d=C(()=>{const q=l.value.map(Y=>{const U=Math.max(0,Number(Y.totalDays)||0),le=Math.max(0,Math.min(U,Number(Y.daysOff)||0)),J=U>0?le/U:0;return{...Y,label:m(Y),share:J}});return t.reverseOrder===!0?q:q.slice().reverse()}),g=C(()=>{const q=s.value;if(q<=0)return"";const Y=t.unit==="mo"?"month":"week";return`Last ${q} ${q===1?Y:`${Y}s`}`}),u=C(()=>t.title||"Days off trend"),b=C(()=>({background:t.cardBg||void 0})),v=C(()=>t.showHeader!==!1),c=ne(null),f=ne(0),p=C(()=>{const q=k(t.toneLowColor)||"#dc2626",Y=k(t.toneHighColor)||"#16a34a";return{low:q,high:Y}}),S=C(()=>{const q=Number(f.value)||0;return q<=0?!1:q<d.value.length*124});let x=null;function $(){var q;f.value=((q=c.value)==null?void 0:q.clientWidth)||0}Lt(async()=>{await zt(),$(),!(typeof ResizeObserver!="function"||!c.value)&&(x=new ResizeObserver(()=>$()),x.observe(c.value))}),Ct(()=>{x==null||x.disconnect(),x=null});function _(q){const Y=Math.max(0,Math.min(1,q));return`${Math.round(Y*100)}% off`}function O(q){const Y=j(Number(q.share)||0,0,1),U=n.value==="more_off_warning"?1-Y:Y,le=L(p.value.low,p.value.high,U),J=Z(le);return{"--tile-bg":J.background,"--tile-fg":J.color,background:J.background,color:J.color}}function I(q){return q?jt(q):null}function B(q,Y){return!q||!Y?"":Dr(q,Y,{day:"2-digit",month:"2-digit"})}function y(q,Y){return Y||(q===0?o.value:`-${q} ${a.value}`)}function T(q){const Y=I(q.from)||I(q.to);return Y?a.value==="mo"?`MONTH ${Y.getUTCMonth()+1}`:`WEEK ${Ya(Y)}`:y(q.offset,q.label)}function m(q){const Y=Number(q.offset??0)||0;return r.value==="offset"?Y===0?"Current":`-${Y}`:r.value==="date"?B(q.from,q.to)||y(Y,q.label):T(q)}function k(q){if(!q||typeof q!="string")return null;const Y=q.trim();return/^#([0-9a-f]{3}|[0-9a-f]{6})$/i.test(Y)?Y:null}function L(q,Y,U=.5){const le=z(q),J=z(Y);if(!le||!J)return q;const R=j(U,0,1),D=j(Math.round(le.r+(J.r-le.r)*R),0,255),F=j(Math.round(le.g+(J.g-le.g)*R),0,255),ce=j(Math.round(le.b+(J.b-le.b)*R),0,255);return`rgb(${D}, ${F}, ${ce})`}function z(q){const Y=q.trim(),U=Y.match(/^rgb\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*\)$/i);if(U)return{r:j(Number(U[1]),0,255),g:j(Number(U[2]),0,255),b:j(Number(U[3]),0,255)};const le=Y.replace("#","");if(le.length===3){const[J,R,D]=le.split("").map(F=>parseInt(F.repeat(2),16));return{r:J,g:R,b:D}}if(le.length===6){const J=parseInt(le.slice(0,2),16),R=parseInt(le.slice(2,4),16),D=parseInt(le.slice(4,6),16);return{r:J,g:R,b:D}}return null}function M(q){const Y=z(q);return Y?(.2126*Y.r+.7152*Y.g+.0722*Y.b)/255:0}function Z(q){const Y=M(q)>.6?"#0f172a":"#fff";return{background:q,color:Y}}function j(q,Y,U){return Math.min(U,Math.max(Y,q))}return(q,Y)=>(h(),w("div",{class:"card dayoff-card",style:He(b.value)},[v.value?(h(),w("div",y5,[i("span",null,E(u.value),1),g.value?(h(),w("span",w5,E(g.value),1)):te("",!0)])):te("",!0),d.value.length?(h(),w("div",{key:1,ref_key:"heatmapEl",ref:c,class:we(["dayoff-heatmap",{"dayoff-heatmap--row":!S.value,"dayoff-heatmap--stacked":S.value}]),style:He({"--dayoff-tile-count":String(Math.max(1,d.value.length))})},[(h(!0),w(ke,null,Ie(d.value,U=>(h(),w("div",{key:U.offset,class:we(["dayoff-tile",{"dayoff-tile--current":U.offset===0}]),style:He(O(U)),title:`${U.label} · ${_(U.share)}`},[i("div",x5,E(U.label),1),i("div",_5,E(_(U.share)),1),i("div",C5,E(U.daysOff)+" off · "+E(U.daysWorked)+" on ",1)],14,k5))),128))],6)):(h(),w("div",S5,"No day-off history for this range."))],4))}}),[["__scopeId","data-v-526ef259"]])},Symbol.toStringTag,{value:"Module"})),T5={key:0,class:"deck-panel__header"},M5={class:"deck-panel__heading"},A5={class:"deck-panel__title"},L5={key:0,class:"deck-panel__subtitle"},D5={key:1,class:"deck-panel__subtitle"},E5={class:"deck-panel__actions"},N5={key:0,class:"deck-panel__count"},I5=["href"],O5=["disabled"],B5={key:1,class:"deck-panel__filters",role:"group","aria-label":"Deck card filters"},H5=["aria-pressed","disabled","title","draggable","onClick","onDragstart","onDragover","onDrop"],F5={class:"deck-filter-label"},P5={class:"deck-filter-label-main"},W5={key:0,class:"deck-filter-label-context"},z5={key:0,class:"deck-filter-count"},R5={key:0,class:"deck-panel__loading"},j5={key:0,class:"deck-panel__error"},V5=["data-idx"],U5={key:0,class:"deck-card__row"},G5={key:0,class:"deck-card__time"},q5={key:1,class:"deck-card__time"},K5={class:"deck-card__title"},J5={class:"deck-card__meta"},Z5={class:"deck-card__stack"},Y5={key:2,class:"deck-card__labels"},X5={key:3,class:"deck-card__assignees"},Q5={class:"deck-card__status-row"},e4={key:0,class:"deck-card__time"},t4={key:1,class:"deck-card__time"},a4={class:"deck-card__title"},o4={class:"deck-card__meta"},r4={class:"deck-card__stack"},n4={key:0,class:"deck-card__labels"},s4={key:1,class:"deck-card__assignees"},i4=at(Pe({__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},compact:{type:Boolean},title:{},cardBg:{},showHeader:{type:Boolean}},emits:["refresh","update:filter","reorder:filters"],setup(e,{emit:t}){function a(M,Z){if(!M)return Z;const j=M.trim();return/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(j)||/^[a-zA-Z]+$/.test(j)?j:Z}const o=e,r=t,n=C(()=>o.filter??"all"),s=C(()=>o.title||"Deck cards"),l=C(()=>({background:o.cardBg||void 0})),d=C(()=>o.showHeader!==!1),g=C(()=>o.filtersEnabled!==!1&&b.value.length>1),u=C(()=>g.value&&o.canFilterMine!==!1&&o.allowMineOverride!==!1),b=C(()=>o.filterOptions&&o.filterOptions.length?o.filterOptions.map(M=>({...M,mine:!!M.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}]),v=C(()=>o.orderableValues&&o.orderableValues.length?o.orderableValues:b.value.map(M=>M.value).filter(M=>!String(M).startsWith("custom_"))),c=ne(null),f=ne(null),p=ne(null),S=ne(null),x=ne(0),$=C(()=>{const M=Math.max(3,Math.min(10,Number(o.intervalSeconds??5)))*1e3;return Number.isFinite(M)?M:5e3});Be(()=>o.autoScroll,()=>{y(),T()}),Be(()=>o.cards,()=>{x.value=0,y(),T()},{deep:!0}),Lt(()=>{T()}),Ct(()=>{y()});function _(M,Z){!o.editable||!v.value.includes(M)||(c.value=M,Z.dataTransfer&&(Z.dataTransfer.effectAllowed="move",Z.dataTransfer.setData("text/plain",String(M))))}function O(M){!o.editable||!c.value||v.value.includes(M)}function I(M){if(!o.editable||!c.value||!v.value.includes(M))return;const Z=v.value.slice(),j=Z.indexOf(c.value),q=Z.indexOf(M);if(j<0||q<0||j===q){c.value=null;return}if(Z.splice(j,1),Z.splice(q,0,c.value),c.value=null,Z.length){const Y=b.value.map(le=>le.value).filter(le=>String(le).startsWith("custom_")),U=[...Z,...Y];o.orderableValues&&o.orderableValues.length?r("reorder:filters",Z):r("reorder:filters",U)}}function B(){c.value=null}function y(){S.value&&(clearInterval(S.value),S.value=null)}function T(){!o.autoScroll||(o.cards||[]).length<=1||(y(),S.value=window.setInterval(()=>{const M=(o.cards||[]).length;x.value=(x.value+1)%M,m(x.value)},$.value))}function m(M){if(!f.value||!p.value)return;const Z=p.value.querySelector(`[data-idx="${M}"]`);if(!Z)return;const j=Z.offsetTop-p.value.offsetTop;f.value.scrollTo({top:j,behavior:"smooth"})}const k=C(()=>{if(!o.lastFetchedAt)return"";const M=ti(o.lastFetchedAt);return M?An(M,{weekday:"short",month:"short",day:"numeric"}):""});function L(M){return An(M,{weekday:"short",month:"short",day:"numeric"})||M}function z(M){return M==="done"?"Done":M==="archived"?"Archived":"Active"}return(M,Z)=>(h(),w("div",{class:we(["card deck-panel",{"deck-panel--compact":o.compact}]),style:He(l.value)},[d.value?(h(),w("div",T5,[i("div",M5,[i("div",A5,E(s.value),1),k.value?(h(),w("div",L5," Updated "+E(k.value),1)):(h(),w("div",D5," Showing "+E(M.rangeLabel.toLowerCase())+" selection ",1))]),i("div",E5,[M.showCount?(h(),w("div",N5,E(M.cards.length)+" cards",1)):te("",!0),M.deckUrl?(h(),w("a",{key:1,class:"deck-panel__link",href:M.deckUrl,target:"_blank",rel:"noopener"}," Open Deck ↗ ",8,I5)):te("",!0),i("button",{type:"button",class:"deck-panel__refresh",onClick:Z[0]||(Z[0]=j=>M.$emit("refresh")),disabled:M.loading}," Refresh ",8,O5)])])):te("",!0),g.value?(h(),w("div",B5,[(h(!0),w(ke,null,Ie(b.value,j=>(h(),w("button",{key:j.value,type:"button",class:we(["deck-filter-btn",{active:n.value===j.value,"is-draggable":o.editable&&v.value.includes(j.value)}]),"aria-pressed":n.value===j.value,disabled:j.mine&&!u.value,title:j.contextLabel?`${j.label} · ${j.contextLabel}`:j.label,draggable:o.editable&&v.value.includes(j.value),onClick:q=>M.$emit("update:filter",j.value),onDragstart:q=>_(j.value,q),onDragover:Ke(q=>O(j.value),["prevent"]),onDrop:Ke(q=>I(j.value),["prevent"]),onDragend:B},[i("span",F5,[i("span",P5,E(j.label),1),j.contextLabel?(h(),w("span",W5,[i("span",{class:"deck-filter-board-dot",style:He({backgroundColor:j.contextColor||"var(--line)"})},null,4),Re(" "+E(j.contextLabel),1)])):te("",!0)]),typeof j.count=="number"?(h(),w("span",z5,E(j.count),1)):te("",!0)],42,H5))),128))])):te("",!0),i("div",{class:"deck-panel__body",ref_key:"bodyEl",ref:f},[M.loading?(h(),w("div",R5,[We(A(Zf),{size:20}),Z[1]||(Z[1]=i("span",null,"Loading Deck cards…",-1))])):(h(),w(ke,{key:1},[M.error?(h(),w("div",j5,E(M.error),1)):M.cards.length?(h(),w("ul",{key:2,class:"deck-card-list",ref_key:"listEl",ref:p},[(h(!0),w(ke,null,Ie(M.cards,(j,q)=>(h(),w("li",{key:j.id,class:"deck-card","data-idx":q},[o.compact?(h(),w("div",U5,[i("span",{class:we(["deck-card__status",j.status])},E(z(j.status)),3),j.match==="due"&&j.due?(h(),w("span",G5," Due "+E(L(j.due)),1)):j.done?(h(),w("span",q5," Completed "+E(L(j.done)),1)):te("",!0),i("span",K5,E(j.title),1),i("span",J5,[i("span",{class:"deck-card__board",style:He({borderColor:a(j.boardColor,"var(--brand)")})},E(j.boardTitle),5),i("span",Z5,E(j.stackTitle),1)]),j.labels.length?(h(),w("span",Y5,[(h(!0),w(ke,null,Ie(j.labels,Y=>(h(),w("span",{key:`deck-label-${j.id}-${Y.id??Y.title}`,class:"deck-card__label",style:He({background:a(Y.color,"var(--soft)")})},E(Y.title),5))),128))])):te("",!0),j.assignees.length?(h(),w("span",X5,[Z[2]||(Z[2]=i("span",{class:"deck-card__assignees-label"},"Assigned:",-1)),(h(!0),w(ke,null,Ie(j.assignees,Y=>(h(),w("span",{key:`deck-assignee-${j.id}-${Y.uid??Y.id}`,class:"deck-card__assignee"},E(Y.displayName||Y.uid),1))),128))])):te("",!0)])):(h(),w(ke,{key:1},[i("div",Q5,[i("span",{class:we(["deck-card__status",j.status])},E(z(j.status)),3),j.match==="due"&&j.due?(h(),w("span",e4," Due "+E(L(j.due)),1)):j.done?(h(),w("span",t4," Completed "+E(L(j.done)),1)):te("",!0)]),i("div",a4,E(j.title),1),i("div",o4,[i("span",{class:"deck-card__board",style:He({borderColor:a(j.boardColor,"var(--brand)")})},E(j.boardTitle),5),i("span",r4,E(j.stackTitle),1)]),j.labels.length?(h(),w("div",n4,[(h(!0),w(ke,null,Ie(j.labels,Y=>(h(),w("span",{key:`deck-label-${j.id}-${Y.id??Y.title}`,class:"deck-card__label",style:He({background:a(Y.color,"var(--soft)")})},E(Y.title),5))),128))])):te("",!0),j.assignees.length?(h(),w("div",s4,[Z[3]||(Z[3]=i("span",{class:"deck-card__assignees-label"},"Assigned:",-1)),(h(!0),w(ke,null,Ie(j.assignees,Y=>(h(),w("span",{key:`deck-assignee-${j.id}-${Y.uid??Y.id}`,class:"deck-card__assignee"},E(Y.displayName||Y.uid),1))),128))])):te("",!0)],64))],8,V5))),128))],512)):(h(),nt(A(Jf),{key:1,name:"No Deck cards",description:`No cards matched this ${M.rangeLabel.toLowerCase()}. Confirm Deck due dates or rerun seeding.`},null,8,["description"]))],64))],512)],6))}}),[["__scopeId","data-v-d23cfb5b"]]),l4=Object.freeze(Object.defineProperty({__proto__:null,default:Pe({__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},minFilterCount:{},showHeader:{type:Boolean},title:{},cardBg:{},customFilters:{},autoTagsEnabled:{type:Boolean,default:!0},autoTagSelection:{},compactList:{type:Boolean},editable:{type:Boolean},onUpdateFilters:{}},emits:["refresh"],setup(e){const t=e,a=["all","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"],o=C(()=>fo(t.cards||[],{boardIds:t.boardIds,stackIds:t.stackIds,includeArchived:!0,includeCompleted:!0})),r=C(()=>fo(o.value,{includeArchived:t.includeArchived!==!1,includeCompleted:t.includeCompleted!==!1})),n=C(()=>t.autoTagsEnabled===!1?[]:di(r.value)),s=C(()=>Array.isArray(t.autoTagSelection)?new Set(t.autoTagSelection.map(y=>String(y))):null),l=C(()=>{if(t.autoTagsEnabled===!1)return[];const y=n.value;if(!y.length)return[];const T=s.value;return T?y.filter(m=>T.has(m.value)):y}),d=C(()=>(t.customFilters||[]).map(y=>`custom_${y.id}`)),g=C(()=>{const y=t.filters&&t.filters.length?t.filters:a,T=l.value.map(m=>m.value);return[...y,...d.value,...T]}),u=C(()=>{const y=t.includeArchived!==!1,T=r.value,m=new Map;return g.value.forEach(k=>{m.set(k,Xc(k,T,{uid:t.uid,mineMode:t.mineMode||"assignee",from:t.from,to:t.to,includeCompleted:t.includeCompleted!==!1,includeArchivedInDone:y,customFilters:t.customFilters||[]}).length)}),m}),b=ne(null),v=C(()=>b.value?b.value:(t.filters&&t.filters.length?t.filters:a).filter(Boolean)),c=C(()=>{const y=v.value,T={all:"All cards",mine:"Mine (any status)",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"},m=u.value,k=y.map(M=>({value:M,label:T[M]||M,mine:M.endsWith("_mine")||M==="mine",count:m.get(M)??0})),L=(t.customFilters||[]).filter(M=>M&&M.id&&M.label).map(M=>({value:`custom_${M.id}`,label:M.label,mine:!1,count:m.get(`custom_${M.id}`)??0})),z=l.value.map(M=>({value:M.value,label:M.label,mine:!1,count:m.get(M.value)??M.count??0,contextLabel:M.contextLabel,contextColor:M.contextColor}));return[...k,...L,...z]}),f=C(()=>{const y=Number(t.minFilterCount??0);return Number.isFinite(y)?Math.max(0,Math.trunc(y)):0}),p=C(()=>f.value<=0?c.value:c.value.filter(y=>Number(y.count??0)>=f.value)),S=ne(O());Be(()=>t.defaultFilter,()=>{S.value=O()}),Be(()=>p.value.map(y=>y.value).join("|"),()=>{const y=p.value;y.length&&(y.some(T=>T.value===S.value)||(S.value=y[0].value))});const x=C(()=>p.value.length>1),$=C(()=>t.allowMine!==!1&&!!(t.uid||"").trim()),_=C(()=>{const y=t.includeArchived!==!1||S.value.startsWith("archived"),T=fo(o.value,{includeArchived:y,includeCompleted:t.includeCompleted!==!1});return Xc(S.value,T,{uid:t.uid,mineMode:t.mineMode||"assignee",from:t.from,to:t.to,includeCompleted:t.includeCompleted!==!1,includeArchivedInDone:y,customFilters:t.customFilters||[]})});function O(){const y=p.value.map(m=>m.value),T=t.defaultFilter||y[0]||"all";return y.includes(T)?T:y[0]||"all"}function I(y){S.value=y}function B(y){var T;y.length&&(b.value=[...y],(T=t.onUpdateFilters)==null||T.call(t,y),y.includes(S.value)||(S.value=y[0]))}return(y,T)=>(h(),nt(i4,{cards:_.value,loading:y.loading,"range-label":y.rangeLabel,"last-fetched-at":y.lastFetchedAt,"deck-url":y.deckUrl,error:y.error,filter:S.value,"filters-enabled":x.value,"can-filter-mine":$.value,"allow-mine-override":$.value,"filter-options":p.value,"auto-scroll":t.autoScroll!==!1,"interval-seconds":t.intervalSeconds,"show-count":t.showCount!==!1,compact:t.compactList===!0,title:t.title,"card-bg":t.cardBg,"show-header":t.showHeader!==!1,editable:t.editable===!0,"orderable-values":v.value,onRefresh:T[0]||(T[0]=m=>y.$emit("refresh")),"onUpdate:filter":I,"onReorder:filters":B},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","compact","title","card-bg","show-header","editable","orderable-values"]))}})},Symbol.toStringTag,{value:"Module"})),d4={key:0,class:"deck-stats-widget__header"},c4={class:"deck-stats-widget__title"},u4={class:"deck-stats-widget__subtitle"},g4={key:0,class:"deck-stats-widget__scope"},p4={key:1,class:"deck-stats-widget__state"},f4={key:2,class:"deck-stats-widget__state deck-stats-widget__state--error"},b4={key:3,class:"deck-stats-widget__state"},v4={key:4,class:"deck-stats-widget__rows"},h4={class:"deck-stats-widget__meta"},m4={class:"deck-stats-widget__label"},y4={class:"deck-stats-widget__hint"},w4={class:"deck-stats-widget__value"},k4=Object.freeze(Object.defineProperty({__proto__:null,default:at(Pe({__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=C(()=>Z1(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=C(()=>({background:t.cardBg||void 0})),r=C(()=>t.title||"Deck stats"),n=C(()=>(t.rangeLabel||"current range").toLowerCase()),s=C(()=>String(t.selectionText||"").trim()),l=C(()=>t.showHeader!==!1);return(d,g)=>(h(),w("div",{class:"card deck-stats-widget",style:He(o.value)},[l.value?(h(),w("div",d4,[i("div",null,[i("div",c4,E(r.value),1),i("div",u4,"Showing "+E(n.value),1)]),s.value?(h(),w("div",g4,E(s.value),1)):te("",!0)])):te("",!0),d.loading?(h(),w("div",p4," Loading Deck stats… ")):d.error?(h(),w("div",f4,E(d.error),1)):a.value.length?(h(),w("ul",v4,[(h(!0),w(ke,null,Ie(a.value,u=>(h(),w("li",{key:u.key,class:"deck-stats-widget__row"},[i("div",h4,[i("div",m4,E(u.label),1),i("div",y4,E(u.hint),1)]),i("div",w4,E(u.value),1)]))),128))])):(h(),w("div",b4," No metrics configured "))],4))}}),[["__scopeId","data-v-cb54adec"]])},Symbol.toStringTag,{value:"Module"})),x4={class:"note-header"},_4={key:0,class:"title"},C4=["disabled"],S4={class:"field"},$4={class:"field-head"},T4={class:"label"},M4=["aria-label"],A4=["value"],L4=["disabled"],D4=["value"],E4={class:"field"},N4={class:"label"},I4=["value","disabled","placeholder"],O4=Object.freeze(Object.defineProperty({__proto__:null,default:at(Pe({__name:"NoteEditorWidget",props:{previous:{},history:{},modelValue:{},prevLabel:{},currLabel:{},saving:{type:Boolean},title:{},cardBg:{},showHeader:{type:Boolean}},emits:["update:modelValue","save"],setup(e,{emit:t}){const a=e,o=t,r=C(()=>a.title||"Notes"),n=C(()=>a.showHeader!==!1),s=a.prevLabel||"Previous",l=a.currLabel||"Current",d=C(()=>`Write ${String(l).toLowerCase()} notes…`),g={background:a.cardBg||void 0},u=C(()=>(a.history||[]).filter(x=>x&&x.id&&x.label)),b=ne("");Be(()=>u.value,x=>{var $;b.value=(($=x[0])==null?void 0:$.id)||""},{immediate:!0});const v=C(()=>u.value.find(x=>x.id===b.value)||null),c=C(()=>{var x;return((x=v.value)==null?void 0:x.content)||a.previous||""});function f(x){o("update:modelValue",x.target.value)}function p(){o("save")}function S(){c.value&&o("update:modelValue",c.value)}return(x,$)=>(h(),w("div",{class:"note-card",style:g},[i("div",x4,[n.value?(h(),w("div",_4,E(r.value),1)):te("",!0),i("button",{class:"btn",type:"button",disabled:x.saving,onClick:p},E(x.saving?"Saving…":"Save"),9,C4)]),i("div",S4,[i("div",$4,[i("span",T4,E(A(s)),1),u.value.length?Ro((h(),w("select",{key:0,"onUpdate:modelValue":$[0]||($[0]=_=>b.value=_),class:"note-select","aria-label":`Select ${A(s)}`},[(h(!0),w(ke,null,Ie(u.value,_=>(h(),w("option",{key:_.id,value:_.id},E(_.label),9,A4))),128))],8,M4)),[[Ff,b.value]]):te("",!0),i("button",{class:"btn btn--ghost",type:"button",disabled:!c.value||x.saving,onClick:S}," Use previous ",8,L4)]),i("textarea",{class:"note note--compact",value:c.value,readonly:""},null,8,D4)]),i("label",E4,[i("span",N4,E(A(l)),1),i("textarea",{class:"note",value:x.modelValue,disabled:x.saving,placeholder:d.value,onInput:f},null,40,I4)])]))}}),[["__scopeId","data-v-c2f8ff1a"]])},Symbol.toStringTag,{value:"Module"})),B4={key:0},H4={key:1,class:"body"},F4={key:2,class:"body empty"},P4=Object.freeze(Object.defineProperty({__proto__:null,default:at(Pe({__name:"NoteSnippetWidget",props:{notesCurr:{},notesPrev:{},title:{},cardBg:{},showHeader:{type:Boolean}},setup(e){const t=e,a=C(()=>{const s=(t.notesCurr||"").trim();return s||(t.notesPrev||"").trim()||""}),o=C(()=>t.title||"Note"),r=C(()=>({background:t.cardBg||void 0})),n=C(()=>t.showHeader!==!1);return(s,l)=>(h(),w("div",{class:"text-card",style:He(r.value)},[n.value?(h(),w("h3",B4,E(o.value),1)):te("",!0),a.value?(h(),w("p",H4,E(a.value),1)):(h(),w("p",F4,"—"))],4))}}),[["__scopeId","data-v-ad40f491"]])},Symbol.toStringTag,{value:"Module"}));function Jn(e,t){return Pe({name:e,inheritAttrs:!1,setup(a,{attrs:o}){return()=>ua("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=>ua("path",{d:r})))}})}const W4=Jn("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"]),z4=Jn("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"]),R4=Jn("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"]),j4=Jn("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"]),V4={key:0,class:"targets-fireframe","aria-hidden":"true"},U4={key:1,class:"targets-header"},G4={class:"targets-header__title"},q4={key:0,class:"targets-preset-pill"},K4={key:0,class:"hint"},J4={key:2,class:"targets-hustle"},Z4={class:"targets-hustle__badge"},Y4={class:"targets-hustle__orb","aria-hidden":"true"},X4={class:"targets-main"},Q4={class:"line total-line"},eS={class:"value"},tS={key:0,class:"line"},aS={key:1,class:"line"},oS={key:2,class:"line"},rS={key:3,class:"line forecast"},nS={class:"hint"},sS={key:3,class:"targets-badges"},iS={key:4,class:"targets-categories"},lS={class:"cat-top"},dS={class:"cat-label"},cS={class:"name"},uS={key:0,class:"unassigned-hint",title:"Hours from calendars not assigned to a category. Open Settings → Categories to assign them."},gS={class:"cat-meta"},pS={class:"percent"},fS={class:"bar"},bS={class:"bar-track"},vS={class:"cat-metrics"},hS={class:"hint"},mS={key:1,class:"hint today-inline"},yS={key:2,class:"hint planned-inline"},wS={key:3,class:"hint"},kS={key:0,class:"cat-footer"},xS={class:"hint"},_S=Object.freeze(Object.defineProperty({__proto__:null,default:at(Pe({__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"},presetLabel:{},cardBg:{default:null}},setup(e){const t=e,a=C(()=>{var y;return((y=t.summary)==null?void 0:y.total)??$("total","Total")}),o=C(()=>t.neverFinishedMode===!0),r=C(()=>t.showHeader!==!1),n=ne(0),s=ne(.42);let l=null;Lt(()=>{s.value=(Date.now()%997+1)/998,l=setInterval(()=>{n.value=(n.value+1)%24},780)}),Ct(()=>{l&&clearInterval(l)});const d=[{id:"run",label:"Run",icon:W4},{id:"swim",label:"Swim",icon:z4},{id:"ride",label:"Ride",icon:R4},{id:"lift",label:"Lifting",icon:j4}],g=C(()=>n.value%d.length),u=C(()=>{var T;return Array.isArray(t.groups)?t.groups.map(m=>({id:m.id,label:m.label,summary:m.summary??$(m.id,m.label),color:m.color,rows:m.rows,todayHours:m.todayHours})):(((T=t.summary)==null?void 0:T.categories)??[]).map(m=>({id:m.id,label:m.label,summary:m,color:void 0,rows:[]}))}),b=C(()=>({background:t.cardBg||void 0})),v=C(()=>p(a.value,"pace")),c=C(()=>u.value.map(y=>{const T=y.summary??$(y.id,y.label),m=Number(y.todayHours??0),k=T.targetHours,L=Math.max(0,T.actualHours-k),z=Math.min(L,m),M=m>0,Z=k>0?m/k*100:0,j=p(T,"badge"),q=j.progress;return{id:y.id,label:y.label||T.label,actualHours:T.actualHours,plannedHours:Number(T.plannedHours??0),targetHours:k,percent:j.percent,percentText:j.percentText,deltaHours:T.deltaHours,needPerDay:T.needPerDay,daysLeft:T.daysLeft,calendarPercent:T.calendarPercent,gap:T.gap,status:T.status,statusLabel:j.badgeLabel,badgeLabel:j.badgeLabel,statusClass:j.statusClass,color:y.color,isUnassigned:y.isUnassigned===!0,calendarCount:Array.isArray(y.rows)?y.rows.length:0,progress:q,isEndless:j.isEndless,todayHours:m,overToday:z,todayWidth:M&&k>0?_(Z,2,200):0,todayRight:Math.max(0,100-q),todayText:z>0?`Today ${f(m)} (+${f(z)})`:`Today ${f(m)}`,todayColor:y.color?B(y.color,.65):"var(--brand)",calendarLabel:Array.isArray(y.rows)&&y.rows.length===1?"calendar":"calendars"}}).filter(y=>y.targetHours>0||y.actualHours>0||y.calendarCount>0));function f(y){if(!isFinite(y))return"0";const T=Math.round(y*10)/10;return Math.abs(T-Math.round(T))<.05?String(Math.round(T)):T.toFixed(1)}function p(y,T){const m=_(y.percent,0,999);if(!(o.value&&y.targetHours>0&&m>=80))return{percent:m,percentText:m.toFixed(0),progress:_(m,0,999),badgeLabel:y.statusLabel,paceLabel:y.statusLabel,statusClass:x(y.status),isEndless:!1};const L=Math.min(1,Math.max(0,(m-80)/20)),z=80.5+L*7,M=90.5+L*8,Z=O(Math.min(98.8,z+s.value*(M-z)));return{percent:Z,percentText:Z.toFixed(0),progress:_(Z,80,99),badgeLabel:"Never Finished",paceLabel:T==="pace"?"Stay Hard":"Never Finished",statusClass:"status-endless",isEndless:!0}}function S(y){return!isFinite(y)||Math.abs(y)<.005?"0.0":(y>=0?"+":"−")+f(Math.abs(y))}function x(y){switch(y){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 $(y,T){return{id:y,label:T,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 _(y,T,m){return!isFinite(y)||y<T?T:y>m?m:y}function O(y){return Math.round(y*10)/10}function I(y){return y==="momentum"?"Momentum":"Linear"}function B(y,T=.5){const m=/^#?([\da-f]{2})([\da-f]{2})([\da-f]{2})$/i.exec(y||"");if(!m)return y;const k=parseInt(m[1],16),L=parseInt(m[2],16),z=parseInt(m[3],16),M=Math.max(0,Math.min(1,T));return`rgb(${Math.round(k+(255-k)*M)},${Math.round(L+(255-L)*M)},${Math.round(z+(255-z)*M)})`}return(y,T)=>(h(),w("div",{class:we(["card targets-card",{"targets-card--endless":o.value}]),style:He(b.value)},[o.value?(h(),w("div",V4)):te("",!0),r.value?(h(),w("div",U4,[i("div",G4,[i("strong",null,E(y.title||"Targets"),1),y.presetLabel?(h(),w("span",q4,E(y.presetLabel),1)):te("",!0)]),a.value.targetHours>0?(h(),w("span",K4,E(v.value.percentText)+"%",1)):te("",!0)])):te("",!0),o.value?(h(),w("div",J4,[i("div",Z4,[i("div",Y4,[(h(),w(ke,null,Ie(d,(m,k)=>i("div",{key:m.id,class:we(["targets-hustle__scene",{"is-active":k===g.value}])},[(h(),nt(ad(m.icon),{class:"targets-hustle__icon","aria-hidden":"true"}))],2)),64))])])])):te("",!0),i("div",X4,[i("div",Q4,[i("span",eS,[i("strong",null,E(f(a.value.actualHours)),1),Re(" / "+E(f(a.value.targetHours))+" h",1)]),y.showDelta&&y.config.ui.showTotalDelta&&a.value.targetHours>0?(h(),w("span",{key:0,class:we(["delta",a.value.deltaHours>=0?"pos":"neg"])}," Δ "+E(S(a.value.deltaHours))+"h ",3)):te("",!0)]),a.value.plannedHours>0?(h(),w("div",tS," Planned "+E(f(a.value.plannedHours))+" h upcoming ",1)):te("",!0),y.config.ui.showNeedPerDay&&a.value.targetHours>0?(h(),w("div",aS," Days left "+E(a.value.daysLeft)+" • Need "+E(f(a.value.needPerDay))+" h/day ",1)):te("",!0),y.showPace&&a.value.targetHours>0?(h(),w("div",oS,[Re(" Pace: "+E(v.value.percentText)+"% vs "+E(a.value.calendarPercent.toFixed(0))+"% → ",1),i("span",{class:we(["status-label",v.value.statusClass])},E(v.value.paceLabel),3)])):te("",!0),y.showForecast?(h(),w("div",rS,[Re(" Forecast: "+E(y.summary.forecast.text)+" ",1),i("span",nS," Linear "+E(f(y.summary.forecast.linear))+"h · Momentum "+E(f(y.summary.forecast.momentum))+"h · Primary: "+E(I(y.summary.forecast.primaryMethod)),1)])):te("",!0)]),y.config.ui.badges&&a.value.targetHours>0?(h(),w("div",sS,[i("span",{class:we(["badge",v.value.statusClass])},E(v.value.badgeLabel),3)])):te("",!0),y.config.ui.showCategoryBlocks&&c.value.length?(h(),w("div",iS,[(h(!0),w(ke,null,Ie(c.value,m=>(h(),w("div",{class:"category",key:m.id},[i("div",lS,[i("div",dS,[i("span",{class:"dot",style:He({background:m.color||"var(--brand)"})},null,4),i("span",cS,E(m.label),1),m.isUnassigned?(h(),w("span",uS,"ⓘ")):te("",!0)]),i("div",gS,[i("span",pS,E(m.percentText)+"%",1),y.config.ui.badges&&m.targetHours>0?(h(),w("span",{key:0,class:we(["badge",m.statusClass])},E(m.badgeLabel),3)):te("",!0)])]),i("div",{class:we(["cat-progress",{"is-endless":m.isEndless}])},[i("div",fS,[i("div",bS,[i("div",{class:we(["fill",{"fill-endless":m.isEndless}]),style:He({width:m.progress+"%","--fill-color":m.color||"var(--brand)"})},null,6),m.todayWidth>0?(h(),w("div",{key:0,class:"today-overlay",style:He({width:m.todayWidth+"%",right:m.todayRight+"%",background:m.todayColor})},null,4)):te("",!0)])])],2),i("div",vS,[i("strong",null,E(f(m.actualHours))+"h",1),i("span",hS,"/ "+E(f(m.targetHours))+"h",1),y.showDelta&&m.targetHours>0?(h(),w("span",{key:0,class:we(["delta",m.deltaHours>=0?"pos":"neg"])}," Δ "+E(S(m.deltaHours))+"h ",3)):te("",!0),m.todayHours>0?(h(),w("span",mS,E(m.todayText),1)):te("",!0),m.plannedHours>0?(h(),w("span",yS," Planned "+E(f(m.plannedHours))+"h ",1)):te("",!0),y.config.ui.showNeedPerDay&&m.targetHours>0?(h(),w("span",wS," Need "+E(f(m.needPerDay))+"h/day · "+E(m.daysLeft)+" days left ",1)):te("",!0)]),m.calendarCount>0?(h(),w("div",kS,[i("span",xS,E(m.calendarCount)+" "+E(m.calendarLabel),1)])):te("",!0)]))),128))])):te("",!0)],6))}}),[["__scopeId","data-v-95b913ed"]])},Symbol.toStringTag,{value:"Module"})),CS={key:0,class:"time-summary-firstline"},SS={key:1},$S={key:0,class:"today-highlight"},TS={class:"today-value"},MS={key:0,class:"today-subvalue"},AS={key:1,class:"today-cats"},LS={class:"name"},DS={key:0,class:"unassigned-hint",title:"Hours from calendars not assigned to a category. Open Settings → Categories to assign them."},ES={class:"value"},NS={key:2,class:"time-summary-inline"},IS={key:3,class:"time-summary-inline time-summary-inline--planned"},OS={key:4,class:"time-summary-inline"},BS={key:5,class:"time-summary-inline"},HS={key:6,class:"time-summary-row"},FS={key:7,class:"time-summary-row"},PS={key:0,class:"share"},WS={key:8,class:"time-summary-row calendars"},zS={class:"label"},RS={class:"text"},jS={key:9,class:"time-summary-row top-category"},VS={class:"label"},US={class:"text"},GS={key:10,class:"time-summary-activity"},qS={class:"time-summary-activity__line"},KS={key:0,class:"time-summary-activity__line"},JS={key:0,class:"time-summary-activity__delta"},ZS={key:1,class:"time-summary-activity__delta"},YS={key:1,class:"time-summary-activity__line"},XS={key:2,class:"time-summary-activity__line"},QS={key:3,class:"time-summary-activity__line"},e8={key:2,class:"time-summary-history"},t8={class:"time-summary-history__header"},a8={class:"time-summary-history__mode"},o8={key:0,class:"time-summary-history__timeline"},r8={class:"history-timeline-entry__header"},n8={class:"history-timeline-entry__title"},s8={key:0,class:"history-timeline-entry__range"},i8={key:1,class:"history-timeline-entry__delta"},l8={class:"history-timeline-entry__metrics"},d8={key:0,class:"history-timeline-cell"},c8={class:"history-timeline-cell__value"},u8={key:1,class:"history-timeline-cell"},g8={class:"history-timeline-cell__value"},p8={key:2,class:"history-timeline-cell"},f8={class:"history-timeline-cell__value"},b8={key:3,class:"history-timeline-cell"},v8={class:"history-timeline-cell__value"},h8={key:4,class:"history-timeline-cell"},m8={class:"history-timeline-cell__value"},y8={key:1,class:"time-summary-history__accordion"},w8=["onClick"],k8={class:"history-accordion-entry__title"},x8={key:0,class:"history-accordion-entry__range"},_8={key:1,class:"history-accordion-entry__summary"},C8={key:2,class:"history-accordion-entry__delta"},S8={class:"history-accordion-entry__caret"},$8={key:0,class:"history-accordion-entry__body"},T8={class:"history-accordion-group__title"},M8={class:"history-accordion-group__metrics"},A8={class:"history-accordion-group__metric-label"},L8={class:"history-accordion-group__metric-value"},D8={key:3,class:"time-summary-history time-summary-history--empty"},E8={class:"time-summary-history__empty"},N8={class:"time-summary-history__empty-title"},I8={class:"time-summary-history__empty-copy"},O8=Object.freeze(Object.defineProperty({__proto__:null,default:at(Pe({__name:"TimeSummaryCard",props:{summary:{},activitySummary:{},mode:{},config:{},todayGroups:{},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:!0},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=C(()=>Object.assign({},t,a.config??{})),r=C(()=>{const X=String(a.displayMode??"");return X==="calendar_goals"||X==="category_and_calendar_goals"?X:"single_goal"}),n=C(()=>a.mode==="active"?"active days":"all days"),s=C(()=>(a.todayGroups||[]).filter(X=>Number(X.todayHours)>0).map(X=>({...X,todayHours:Number(X.todayHours)||0,color:X.color||"var(--brand)"}))),l=C(()=>{var ie;if(s.value.length)return s.value.reduce((Te,Ne)=>Te+Ne.todayHours,0);if(Number.isFinite(a.summary.todayActualHours))return a.summary.todayActualHours;const X=(ie=a.summary)==null?void 0:ie.todayHours;return typeof X=="number"&&Number.isFinite(X)?X:null}),d=C(()=>{var ie;const X=Number(((ie=a.summary)==null?void 0:ie.todayPlannedHours)??0);return Number.isFinite(X)?Math.max(0,X):0}),g=C(()=>a.title||"Time Summary"),u=C(()=>r.value==="single_goal"?"":`${a.summary.activeCalendars} calendars`),b=C(()=>r.value==="category_and_calendar_goals"?"Top category":"Top focus"),v=C(()=>r.value==="calendar_goals"?"Calendars":r.value==="category_and_calendar_goals"?"Categories & calendars":"Focus"),c=C(()=>{var Te;const X=g.value,ie=((Te=a.summary)==null?void 0:Te.rangeLabel)||"";return ie?`${X} · ${ie}`:X}),f=C(()=>({background:a.cardBg||void 0})),p=C(()=>a.showHeader),S=C(()=>a.showToday),x=C(()=>a.showActivity),$=C(()=>a.showHistoryCoreMetrics),_=C(()=>{const X=String(a.historyView??"").toLowerCase();return X==="timeline"||X==="list"?"timeline":"accordion"}),O=C(()=>_.value==="accordion"?"Accordion":"Timeline"),I=C(()=>a.showActivityDetails),B=C(()=>a.showOverview!==!1),y=C(()=>a.showLookback!==!1),T=C(()=>a.showDelta!==!1),m=C(()=>{const X=Number(a.lookbackWeeks??1);return Number.isFinite(X)?Math.max(1,Math.trunc(X)):1}),k=C(()=>m.value<=1),L=C(()=>String(a.rangeMode).toLowerCase()==="month"?"months":"weeks"),z=C(()=>k.value?"Lookback data required":"No lookback data available"),M=C(()=>k.value?`Increase trend lookback above 1 to compare previous ${L.value} here.`:`No previous ${L.value} are available for this comparison yet.`),Z=C(()=>Number.isFinite(a.summary.offset)?a.summary.offset:a.offset??0),j=C(()=>Z.value-1),q=C(()=>_e(j.value)),Y=C(()=>Z.value===0?"":` (offset ${_e(Z.value)})`),U=C(()=>{if(!o.value.showWeekendShare)return"";const X=a.summary.weekendShare;return X==null?"":`${P(X)}%`}),le=C(()=>{if(!o.value.showTopCategory)return null;const X=a.summary.topCategory;if(!X)return null;const ie=V(X.actualHours),Te=Number(X.percent??0).toFixed(0),Ne=X.targetHours>0?` (${Te}% of ${V(X.targetHours)} h)`:"";return{text:`${X.label} — ${ie} h${Ne}`,badge:X.statusLabel||"",badgeClass:ue(X.status)}}),J=C(()=>{if(!o.value.showBusiest)return"";const X=a.summary.busiest;if(!X||!X.date)return"";const ie=Number(X.hours??0);return`Busiest ${X.date} — ${V(ie)} h`}),R=C(()=>{const X=[];return o.value.showAverage&&(X.push(`${V(a.summary.avgDay)} h/day (${n.value})`),X.push(`${V(a.summary.avgEvent)} h/event`)),o.value.showMedian&&X.push(`${V(a.summary.medianDay)} h median/day`),X.filter(Boolean).join(" · ")}),D=C(()=>a.activitySummary??null),F=C(()=>{var X;return((X=D.value)==null?void 0:X.lastDayOff)||"—"}),ce=C(()=>{var Te,Ne;const X=de(((Te=D.value)==null?void 0:Te.typicalStart)??null),ie=de(((Ne=D.value)==null?void 0:Ne.typicalEnd)??null);return X&&ie?`${X}–${ie}`:X?`${X}→`:ie?`→${ie}`:"—"}),Ae=C(()=>{var Te,Ne;const X=de(((Te=D.value)==null?void 0:Te.earliestStart)??null),ie=de(((Ne=D.value)==null?void 0:Ne.latestEnd)??null);return!X&&!ie?"—":`${X||"—"} / ${ie||"—"}`}),se=C(()=>{var ie;const X=(ie=D.value)==null?void 0:ie.longestSession;return X==null?"—":`${Number(X).toFixed(1)} h`}),oe=C(()=>{var X;return(X=D.value)!=null&&X.delta?Le(D.value.weekendShare,D.value.delta.weekendShare):""}),G=C(()=>{var X;return(X=D.value)!=null&&X.delta?Le(D.value.eveningShare,D.value.delta.eveningShare):""}),ee=C(()=>{const X=Array.isArray(a.history)?a.history:[];return X.map((ie,Te)=>{var Ue,Ve,ot,ct,Je,_t,Et,Nt,Qt,Ft,Ut,lt;const Ne=X[Te+1],Ze=Ne?Number(ie.totalHours)-Number(Ne.totalHours):null,vt=Ne&&Number(Ne.totalHours)!==0?Number(Ze)/Number(Ne.totalHours)*100:null,et=[];o.value.showTotal&&et.push({label:"Total",value:`${V(ie.totalHours)} h`}),o.value.showAverage&&(et.push({label:`Avg/day (${n.value})`,value:`${V(ie.avgDay)} h`}),et.push({label:"Avg/event",value:`${V(ie.avgEvent)} h`})),o.value.showMedian&&et.push({label:"Median/day",value:`${V(ie.medianDay)} h`}),o.value.showBalance&&et.push({label:"Balance index",value:ie.balanceIndex==null?"—":ie.balanceIndex.toFixed(2)});const it=[];if(o.value.showWorkday&&it.push({label:"Workdays",value:`${V(ie.workdayAvg)} h avg · ${V(ie.workdayMedian)} h median`}),o.value.showWeekend){const sa=o.value.showWeekendShare&&ie.weekendShare!=null?` (${P(ie.weekendShare)}%)`:"";it.push({label:"Weekend",value:`${V(ie.weekendAvg)} h avg · ${V(ie.weekendMedian)} h median${sa}`})}const Tt=[];o.value.showTopCategory&&Tt.push({label:"Top category",value:be(ie.topCategory)}),o.value.showCalendarSummary&&Tt.push({label:`${ie.activeCalendars} calendars`,value:ie.calendarSummary||"—"});const dt=[];o.value.showBusiest&&dt.push({label:"Busiest",value:xe(ie.busiest)}),$.value&&(dt.push({label:"Events",value:String(((Ue=ie.activity)==null?void 0:Ue.events)??0)}),dt.push({label:"Active days",value:String(((Ve=ie.activity)==null?void 0:Ve.activeDays)??0)}),dt.push({label:"Typical",value:re((ot=ie.activity)==null?void 0:ot.typicalStart,(ct=ie.activity)==null?void 0:ct.typicalEnd)})),I.value&&(dt.push({label:"Weekend share",value:((Je=ie.activity)==null?void 0:Je.weekendShare)==null?"—":`${P(ie.activity.weekendShare)}%`}),dt.push({label:"Evening share",value:((_t=ie.activity)==null?void 0:_t.eveningShare)==null?"—":`${P(ie.activity.eveningShare)}%`}),dt.push({label:"Earliest/Late",value:he((Et=ie.activity)==null?void 0:Et.earliestStart,(Nt=ie.activity)==null?void 0:Nt.latestEnd)}),dt.push({label:"Overlaps",value:String(((Qt=ie.activity)==null?void 0:Qt.overlapEvents)??0)}),dt.push({label:"Longest",value:$e((Ft=ie.activity)==null?void 0:Ft.longestSession)}),dt.push({label:"Last day off",value:((Ut=ie.activity)==null?void 0:Ut.lastDayOff)||"—"}),dt.push({label:"Last half day",value:((lt=ie.activity)==null?void 0:lt.lastHalfDayOff)||"—"}));const ht=[{key:"core",label:"Core",metrics:et},{key:"pace",label:"Pace",metrics:it},{key:"category",label:v.value,metrics:Tt},{key:"pattern",label:"Pattern",metrics:dt}].filter(sa=>sa.metrics.length>0);return{offset:ie.offset,label:ie.label||`Offset ${_e(ie.offset)}`,range:ye(ie.rangeStart,ie.rangeEnd),totalHours:`${V(ie.totalHours)} h`,avgDay:`${V(ie.avgDay)} h`,balanceIndex:ie.balanceIndex==null?"—":ie.balanceIndex.toFixed(2),weekendShare:ie.weekendShare==null?"—":`${P(ie.weekendShare)}%`,topCategoryBrief:Ee(ie.topCategory),deltaHours:Me(Ze),deltaPercent:ae(vt),sections:ht}})}),ge=ne(null);Be(ee,X=>{if(!X.length){ge.value=null;return}X.some(ie=>ie.offset===ge.value)||(ge.value=X[0].offset)},{immediate:!0});function ve(X){return ge.value===X}function N(X){ge.value=ge.value===X?null:X}function P(X){return Number(X??0).toFixed(1)}function V(X){return Number(X??0).toFixed(2)}function de(X){return X?/^\d{2}:\d{2}$/.test(X)?X:ab(X):""}function ue(X){switch(X){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 fe(X){return X==null?"0.0%":`${Math.max(0,Math.min(100,Number(X))).toFixed(1)}%`}function _e(X){return X===0?"0":X>0?`+${X}`:`${X}`}function ye(X,ie){return!X||!ie?"":Dr(X,ie,{month:"short",day:"numeric"})}function xe(X){if(!(X!=null&&X.date))return"—";const ie=Number((X==null?void 0:X.hours)??0);return`${Mn(X.date,{month:"short",day:"numeric"})||X.date} · ${V(ie)} h`}function be(X){if(!X)return"—";const ie=X.targetHours>0?` (${Math.round(X.percent)}% of ${V(X.targetHours)} h)`:"";return`${X.label} — ${V(X.actualHours)} h${ie}`}function Ee(X){return X?`${X.label} ${Math.round(X.percent)}%`:"—"}function Me(X){return X==null||!Number.isFinite(X)?"":`${X>=0?"+":"−"}${V(Math.abs(X))} h`}function ae(X){return X==null||!Number.isFinite(X)?"":`${X>=0?"+":"−"}${Math.abs(X).toFixed(1)}%`}function re(X,ie){const Te=de(X||null),Ne=de(ie||null);return Te&&Ne?`${Te}–${Ne}`:Te?`${Te}→`:Ne?`→${Ne}`:"—"}function he(X,ie){const Te=de(X||null),Ne=de(ie||null);return!Te&&!Ne?"—":`${Te||"—"} / ${Ne||"—"}`}function $e(X){return X==null?"—":`${Number(X).toFixed(1)} h`}function Le(X,ie){if(ie==null||X==null)return"";const Te=X-ie;return`Δ vs. offset ${q.value} → ${fe(Te)}`}return(X,ie)=>(h(),w("div",{class:"card time-summary compact",style:He(f.value)},[p.value?(h(),w("div",CS,[i("span",null,E(c.value),1)])):te("",!0),B.value?(h(),w("div",SS,[S.value&&l.value!==null?(h(),w("div",$S,[ie[0]||(ie[0]=i("div",{class:"today-label"},"Total today",-1)),i("div",TS,E(V(l.value))+" h",1),d.value>0?(h(),w("div",MS,"Later today "+E(V(d.value))+" h planned",1)):te("",!0)])):te("",!0),S.value&&s.value.length?(h(),w("div",AS,[(h(!0),w(ke,null,Ie(s.value,Te=>(h(),w("div",{class:"today-cat",key:Te.id},[i("span",{class:"dot",style:He({background:Te.color||"var(--brand)"})},null,4),i("span",LS,E(Te.label),1),Te.isUnassigned?(h(),w("span",DS,"ⓘ")):te("",!0),i("span",ES,E(V(Te.todayHours))+" h",1)]))),128))])):te("",!0),o.value.showTotal?(h(),w("div",NS,[i("strong",null,E(V(X.summary.totalHours))+" h",1),ie[1]||(ie[1]=Re(" total ",-1))])):te("",!0),X.summary.futureHours>0?(h(),w("div",IS,E(V(X.summary.futureHours))+" h planned later ",1)):te("",!0),R.value?(h(),w("div",OS,E(R.value),1)):te("",!0),o.value.showBusiest&&J.value?(h(),w("div",BS,E(J.value),1)):te("",!0),o.value.showWorkday?(h(),w("div",HS,[ie[2]||(ie[2]=i("span",{class:"label"},"Workdays",-1)),Re(" "+E(V(X.summary.workdayAvg))+" h avg · "+E(V(X.summary.workdayMedian))+" h median ",1)])):te("",!0),o.value.showWeekend?(h(),w("div",FS,[ie[3]||(ie[3]=i("span",{class:"label"},"Weekend",-1)),Re(" "+E(V(X.summary.weekendAvg))+" h avg · "+E(V(X.summary.weekendMedian))+" h median ",1),o.value.showWeekendShare&&U.value?(h(),w("span",PS,"("+E(U.value)+")",1)):te("",!0)])):te("",!0),o.value.showCalendarSummary?(h(),w("div",WS,[i("span",zS,E(u.value),1),X.summary.calendarSummary?(h(),w(ke,{key:0},[ie[4]||(ie[4]=i("span",{class:"sep"},"·",-1)),i("span",RS,E(X.summary.calendarSummary),1)],64)):te("",!0)])):te("",!0),o.value.showTopCategory&&le.value?(h(),w("div",jS,[i("span",VS,E(b.value),1),i("span",US,E(le.value.text),1),le.value.badge?(h(),w("span",{key:0,class:we(["summary-badge",le.value.badgeClass])},E(le.value.badge),3)):te("",!0)])):te("",!0),x.value&&D.value?(h(),w("div",GS,[ie[5]||(ie[5]=i("div",{class:"time-summary-activity__title"},"Activity & Schedule",-1)),i("div",qS," Events "+E(D.value.events)+" • Active Days "+E(D.value.activeDays??0)+" • Typical "+E(ce.value)+E(Y.value),1),I.value?(h(),w("div",KS,[Re(" Weekend "+E(fe(D.value.weekendShare))+" ",1),oe.value?(h(),w("span",JS,"("+E(oe.value)+")",1)):te("",!0),Re(" • Evening "+E(fe(D.value.eveningShare))+" ",1),G.value?(h(),w("span",ZS,"("+E(G.value)+")",1)):te("",!0)])):te("",!0),I.value?(h(),w("div",YS," Earliest/Late "+E(Ae.value),1)):te("",!0),I.value?(h(),w("div",XS," Overlaps "+E(D.value.overlapEvents??0)+" • Longest "+E(se.value),1)):te("",!0),I.value?(h(),w("div",QS," Last day off "+E(F.value),1)):te("",!0)])):te("",!0)])):te("",!0),y.value&&ee.value.length?(h(),w("div",e8,[i("div",t8,[ie[6]||(ie[6]=i("div",{class:"time-summary-history__title"},"Lookback",-1)),i("div",a8,E(O.value),1)]),_.value==="timeline"?(h(),w("div",o8,[(h(!0),w(ke,null,Ie(ee.value,Te=>(h(),w("div",{class:"history-timeline-entry",key:Te.offset},[i("div",r8,[i("span",n8,E(Te.label),1),Te.range?(h(),w("span",s8,E(Te.range),1)):te("",!0),T.value&&Te.deltaHours?(h(),w("span",i8,[Re(E(Te.deltaHours),1),Te.deltaPercent?(h(),w(ke,{key:0},[Re(" · "+E(Te.deltaPercent),1)],64)):te("",!0)])):te("",!0)]),i("div",l8,[o.value.showTotal?(h(),w("div",d8,[ie[7]||(ie[7]=i("span",{class:"history-timeline-cell__label"},"Total",-1)),i("span",c8,E(Te.totalHours),1)])):te("",!0),o.value.showAverage?(h(),w("div",u8,[ie[8]||(ie[8]=i("span",{class:"history-timeline-cell__label"},"Avg/day",-1)),i("span",g8,E(Te.avgDay),1)])):te("",!0),o.value.showBalance?(h(),w("div",p8,[ie[9]||(ie[9]=i("span",{class:"history-timeline-cell__label"},"Balance",-1)),i("span",f8,E(Te.balanceIndex),1)])):te("",!0),o.value.showWeekendShare?(h(),w("div",b8,[ie[10]||(ie[10]=i("span",{class:"history-timeline-cell__label"},"Weekend %",-1)),i("span",v8,E(Te.weekendShare),1)])):te("",!0),o.value.showTopCategory?(h(),w("div",h8,[ie[11]||(ie[11]=i("span",{class:"history-timeline-cell__label"},"Top category",-1)),i("span",m8,E(Te.topCategoryBrief),1)])):te("",!0)])]))),128))])):(h(),w("div",y8,[(h(!0),w(ke,null,Ie(ee.value,Te=>(h(),w("div",{class:"history-accordion-entry",key:Te.offset},[i("button",{class:"history-accordion-entry__header",type:"button",onClick:Ne=>N(Te.offset)},[i("span",k8,E(Te.label),1),Te.range?(h(),w("span",x8,E(Te.range),1)):te("",!0),o.value.showTotal?(h(),w("span",_8,E(Te.totalHours),1)):te("",!0),T.value&&Te.deltaHours?(h(),w("span",C8,[Re(E(Te.deltaHours),1),Te.deltaPercent?(h(),w(ke,{key:0},[Re(" · "+E(Te.deltaPercent),1)],64)):te("",!0)])):te("",!0),i("span",S8,E(ve(Te.offset)?"−":"+"),1)],8,w8),ve(Te.offset)?(h(),w("div",$8,[(h(!0),w(ke,null,Ie(Te.sections,Ne=>(h(),w("div",{class:"history-accordion-group",key:Ne.key},[i("div",T8,E(Ne.label),1),i("div",M8,[(h(!0),w(ke,null,Ie(Ne.metrics,Ze=>(h(),w("div",{class:"history-accordion-group__metric",key:Ze.label},[i("span",A8,E(Ze.label),1),i("span",L8,E(Ze.value),1)]))),128))])]))),128))])):te("",!0)]))),128))]))])):y.value?(h(),w("div",D8,[ie[12]||(ie[12]=i("div",{class:"time-summary-history__header"},[i("div",{class:"time-summary-history__title"},"Lookback")],-1)),i("div",E8,[i("div",N8,E(z.value),1),i("div",I8,E(M.value),1)])])):te("",!0)],4))}}),[["__scopeId","data-v-885c2315"]])},Symbol.toStringTag,{value:"Module"}))})();
|