@svgrid/grid 2.0.2 → 2.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10888,7 +10888,7 @@ e.delegate([
10888
10888
  //#region src/SvGridBoard.svelte
10889
10889
  var lc = e.from_html("<span class=\"sv-board-comment-author svelte-15b6cgu\"> </span>"), uc = e.from_html("<span class=\"sv-board-comment-at svelte-15b6cgu\"> </span>"), dc = e.from_html("<button type=\"button\" class=\"sv-board-comment-del svelte-15b6cgu\" aria-label=\"Delete comment\">×</button>"), fc = e.from_html("<div class=\"sv-board-comment svelte-15b6cgu\"><div class=\"sv-board-comment-body svelte-15b6cgu\"><!> <span class=\"sv-board-comment-text\"> </span> <!></div> <!></div>"), pc = e.from_html("<div class=\"sv-board-comment-empty svelte-15b6cgu\">No comments yet.</div>"), mc = e.from_html("<input class=\"sv-board-comment-add svelte-15b6cgu\" placeholder=\"Write a comment...\"/>"), hc = e.from_html("<!> <!> <!>", 1), gc = e.from_html("<button type=\"button\" class=\"sv-board-lane-toggle svelte-15b6cgu\"> </button>"), _c = e.from_html("<input class=\"sv-board-lane-rename svelte-15b6cgu\"/>"), vc = e.from_html("<span> </span>"), yc = e.from_html("<span class=\"sv-board-lane-summary svelte-15b6cgu\"> </span>"), bc = e.from_html("<button type=\"button\" class=\"sv-board-lane-add svelte-15b6cgu\">+</button>"), xc = e.from_html("<div aria-hidden=\"true\"></div>"), Sc = e.from_html("<div class=\"sv-board-drop-marker svelte-15b6cgu\" aria-hidden=\"true\"></div>"), Cc = e.from_html("<span class=\"sv-board-card-flag svelte-15b6cgu\" aria-label=\"Blocked\"></span>"), wc = e.from_html("<input type=\"checkbox\" class=\"svelte-15b6cgu\"/>"), Tc = e.from_html("<input class=\"svelte-15b6cgu\"/>"), Ec = e.from_html("<label class=\"sv-board-field svelte-15b6cgu\"><span> </span> <!></label>"), Dc = e.from_html("<form class=\"sv-board-card-edit svelte-15b6cgu\"><!> <div class=\"sv-board-card-edit-actions svelte-15b6cgu\"><button type=\"button\" class=\"sv-board-btn svelte-15b6cgu\">Cancel</button> <button type=\"submit\" class=\"sv-board-btn is-primary svelte-15b6cgu\">Save</button></div></form>"), Oc = e.from_html("<!> <!>", 1), kc = e.from_html("<div class=\"sv-board-card-cover svelte-15b6cgu\" aria-hidden=\"true\"></div>"), Ac = e.from_html("<div class=\"sv-board-card-title svelte-15b6cgu\"> </div>"), jc = e.from_html("<div class=\"sv-board-card-metarow svelte-15b6cgu\"><dt class=\"svelte-15b6cgu\"> </dt> <dd class=\"svelte-15b6cgu\"> </dd></div>"), Mc = e.from_html("<dl class=\"sv-board-card-meta svelte-15b6cgu\"></dl>"), Nc = e.from_html("<!> <!> <!> <!>", 1), Pc = e.from_html("<li><label><input type=\"checkbox\" class=\"svelte-15b6cgu\"/> <span class=\"svelte-15b6cgu\"> </span></label></li>"), Fc = e.from_html("<ul class=\"sv-board-subs-list svelte-15b6cgu\"></ul> <input class=\"sv-board-subs-add svelte-15b6cgu\" placeholder=\"Add subtask...\"/>", 1), Ic = e.from_html("<div class=\"sv-board-subs svelte-15b6cgu\"><button type=\"button\" class=\"sv-board-subs-head svelte-15b6cgu\"><span class=\"sv-board-subs-chev svelte-15b6cgu\"> </span> <span class=\"sv-board-subs-count svelte-15b6cgu\"> </span> <span class=\"sv-board-subs-bar svelte-15b6cgu\" aria-hidden=\"true\"><span class=\"svelte-15b6cgu\"></span></span></button> <!></div>"), Lc = e.from_html("<li class=\"sv-board-kid svelte-15b6cgu\"><span class=\"sv-board-kid-title svelte-15b6cgu\"> </span> <span class=\"sv-board-kid-lane svelte-15b6cgu\"> </span></li>"), Rc = e.from_html("<ul class=\"sv-board-kids-list svelte-15b6cgu\"></ul>"), zc = e.from_html("<div class=\"sv-board-kids svelte-15b6cgu\"><button type=\"button\" class=\"sv-board-kids-head svelte-15b6cgu\"><span class=\"sv-board-subs-chev svelte-15b6cgu\"> </span> </button> <!></div>"), Bc = e.from_html("<div class=\"sv-board-comments svelte-15b6cgu\"><!></div>"), Vc = e.from_html("<!> <article role=\"listitem\" tabindex=\"0\" aria-roledescription=\"Draggable card\"><!> <!> <!> <!> <!></article>", 1), Hc = e.from_html("<div aria-hidden=\"true\"></div>"), Uc = e.from_html("<div class=\"sv-board-drop-marker svelte-15b6cgu\" aria-hidden=\"true\"></div>"), Wc = e.from_html("<div class=\"sv-board-lane-empty svelte-15b6cgu\">No cards</div>"), Gc = e.from_html("<input class=\"sv-board-composer-input svelte-15b6cgu\" placeholder=\"Card title...\"/>"), Kc = e.from_html("<button type=\"button\" class=\"sv-board-composer-btn svelte-15b6cgu\">+ Add a card</button>"), qc = e.from_html("<div role=\"list\"><!> <!> <!> <!></div> <!>", 1), Jc = e.from_html("<section><header><!> <!> <span> <!></span> <!> <!></header> <!></section>"), Yc = e.from_html("<span class=\"sv-board-badge is-blocked svelte-15b6cgu\">Blocked</span>"), Xc = e.from_html("<span class=\"sv-board-badge is-label svelte-15b6cgu\"> </span>"), Zc = e.from_html("<span> </span>"), Qc = e.from_html("<span class=\"sv-board-badge is-meta svelte-15b6cgu\" title=\"Age\"> </span>"), $c = e.from_html("<button type=\"button\" class=\"sv-board-badge is-meta is-btn svelte-15b6cgu\" title=\"Comments\"><svg viewBox=\"0 0 16 16\" width=\"11\" height=\"11\" aria-hidden=\"true\"><path d=\"M2 3h12v8H8l-3 2v-2H2z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linejoin=\"round\"></path></svg> </button>"), el = e.from_html("<span class=\"sv-board-badge is-meta svelte-15b6cgu\"><svg viewBox=\"0 0 16 16\" width=\"11\" height=\"11\" aria-hidden=\"true\"><path d=\"M11 5.5 6.5 10a2 2 0 0 1-3-3l5-5a3 3 0 0 1 4 4l-5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"></path></svg> </span>"), tl = e.from_html("<span class=\"sv-board-avatar svelte-15b6cgu\"> </span>"), nl = e.from_html("<span class=\"sv-board-avatars svelte-15b6cgu\"></span>"), rl = e.from_html("<div class=\"sv-board-badges svelte-15b6cgu\"><!> <!> <!> <!> <!> <!> <!></div>"), il = e.from_html("<button type=\"button\"> <span class=\"sv-board-facet-count svelte-15b6cgu\"> </span></button>"), al = e.from_html("<button type=\"button\" class=\"sv-board-facet-clear svelte-15b6cgu\">Clear filters</button>"), ol = e.from_html("<div class=\"sv-board-facets svelte-15b6cgu\"><!> <!></div>"), sl = e.from_html("<button type=\"button\" class=\"sv-board-swim-toggle svelte-15b6cgu\"> </button>"), cl = e.from_html("<span class=\"sv-board-swim-summary svelte-15b6cgu\"> </span>"), ll = e.from_html("<div class=\"sv-board-lanes svelte-15b6cgu\"></div>"), ul = e.from_html("<section class=\"sv-board-swim svelte-15b6cgu\"><header class=\"sv-board-swim-head svelte-15b6cgu\"><!> <span class=\"sv-board-swim-title\"> </span> <span class=\"sv-board-swim-count svelte-15b6cgu\"> </span> <!></header> <!></section>"), dl = e.from_html("<div class=\"sv-board-lanes svelte-15b6cgu\"></div>"), fl = e.from_html("<div class=\"sv-board-ctx\" aria-label=\"Card actions\"><!></div>"), pl = e.from_html("<div class=\"sv-board-drawer-comments svelte-15b6cgu\"><div class=\"sv-board-drawer-h svelte-15b6cgu\">Comments</div> <!></div>"), ml = e.from_html("<!> <!>", 1), hl = e.from_html("<div role=\"group\" aria-label=\"Board\"><!> <!> <div class=\"sv-board-sr svelte-15b6cgu\" aria-live=\"polite\" role=\"status\"> </div></div> <!> <!>", 1), gl = {
10890
10890
  hash: "svelte-15b6cgu",
10891
- code: ".sv-board.svelte-15b6cgu {height:100%;box-sizing:border-box;display:flex;flex-direction:column;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);font-family:var(--sg-font-family, inherit);}.sv-board.is-swim.svelte-15b6cgu {overflow-y:auto;gap:14px;}.sv-board-lanes.svelte-15b6cgu {display:flex;gap:12px;align-items:flex-start;overflow-x:auto;padding:4px;flex:1 1 auto;min-height:0;scrollbar-color:var(--sg-scrollbar-thumb, color-mix(in srgb, var(--sg-fg, #101828) 28%, transparent))\n transparent;}.sv-board.is-swim.svelte-15b6cgu .sv-board-lanes:where(.svelte-15b6cgu) {flex:none;}.sv-board.is-swim.svelte-15b6cgu .sv-board-lane:where(.svelte-15b6cgu) {max-height:340px;}.sv-board-swim.svelte-15b6cgu {display:flex;flex-direction:column;gap:4px;flex:none;}.sv-board-swim-head.svelte-15b6cgu {display:flex;align-items:center;gap:8px;padding:4px 8px;font-weight:700;font-size:0.78rem;color:color-mix(in srgb, var(--sg-fg, #101828) 78%, transparent);position:sticky;left:0;}.sv-board-swim-count.svelte-15b6cgu {font-size:0.7rem;font-weight:600;padding:0 7px;border-radius:999px;background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-swim-summary.svelte-15b6cgu {font-size:0.7rem;font-weight:600;color:color-mix(in srgb, var(--sg-accent, #3b82f6) 85%, var(--sg-fg, #101828));}.sv-board-swim-toggle.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.7rem;padding:2px;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-lane-title.is-renamable.svelte-15b6cgu {cursor:text;}.sv-board-lane-rename.svelte-15b6cgu {flex:1 1 auto;min-width:0;font:inherit;font-weight:600;font-size:0.82rem;padding:1px 4px;border:1px solid var(--sv-board-accent);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-swim-toggle.svelte-15b6cgu:hover {color:var(--sg-fg, #101828);}.sv-board-lane.svelte-15b6cgu {flex:0 0 var(--sg-board-lane-w, 272px);max-width:var(--sg-board-lane-w, 272px);display:flex;flex-direction:column;max-height:100%;border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);background:var(--sg-header-bg, color-mix(in srgb, var(--sg-fg, #101828) 3%, var(--sg-bg, #fff)));--sv-board-accent: var(--sg-accent, #3b82f6);}.sv-board-lane-head.svelte-15b6cgu {display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--sg-border, #e4e7ec);border-top:3px solid var(--sv-board-accent);border-radius:var(--sg-radius, 8px) var(--sg-radius, 8px) 0 0;}.sv-board-lane-head.is-reorderable.svelte-15b6cgu {cursor:grab;}.sv-board-lane-head.is-lane-dropover.svelte-15b6cgu {box-shadow:inset 3px 0 0 var(--sv-board-accent);}.sv-board-lane-title.svelte-15b6cgu {font-weight:600;font-size:0.82rem;flex:1 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.sv-board-lane-toggle.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.7rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);padding:2px;}.sv-board-lane-toggle.svelte-15b6cgu:hover {color:var(--sg-fg, #101828);}.sv-board-lane.is-collapsed.svelte-15b6cgu {flex:0 0 auto;max-width:none;}.sv-board-lane.is-collapsed.svelte-15b6cgu .sv-board-lane-head:where(.svelte-15b6cgu) {writing-mode:vertical-rl;height:180px;border-top:none;border-left:3px solid var(--sv-board-accent);border-radius:0 var(--sg-radius, 8px) var(--sg-radius, 8px) 0;gap:6px;}.sv-board-lane-count.svelte-15b6cgu {font-size:0.72rem;font-variant-numeric:tabular-nums;padding:1px 7px;border-radius:999px;background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 70%, transparent);}.sv-board-lane-count.is-over.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-danger, #ef4444) 16%, transparent);color:var(--sg-danger, #ef4444);font-weight:700;}.sv-board-lane-summary.svelte-15b6cgu {font-size:0.72rem;font-weight:600;font-variant-numeric:tabular-nums;color:color-mix(in srgb, var(--sv-board-accent) 85%, var(--sg-fg, #101828));}.sv-board-lane-add.svelte-15b6cgu {all:unset;cursor:pointer;width:20px;height:20px;display:grid;place-items:center;border-radius:5px;font-size:1rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-lane-add.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:var(--sg-fg, #101828);}.sv-board-lane-body.svelte-15b6cgu {display:flex;flex-direction:column;gap:8px;padding:8px;overflow-y:auto;flex:1 1 auto;min-height:48px;transition:background 0.12s ease;}.sv-board-lane-body.is-dropover.svelte-15b6cgu {background:color-mix(in srgb, var(--sv-board-accent) 8%, transparent);}\n /* Virtualized lanes use block flow + per-card margin (not flex gap) so the\n spacer heights match the windowing math exactly. */.sv-board-lane-body.is-virtual.svelte-15b6cgu {display:block;gap:0;}.sv-board-lane-body.is-virtual.svelte-15b6cgu .sv-board-card:where(.svelte-15b6cgu) {margin-bottom:8px;}.sv-board-card.svelte-15b6cgu {background:var(--sg-bg, #fff);border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);padding:9px 11px;cursor:grab;box-shadow:0 1px 2px rgba(16, 24, 40, 0.05);transition:box-shadow 0.12s ease,\n opacity 0.12s ease,\n transform 0.12s ease;}.sv-board-card.svelte-15b6cgu:hover {box-shadow:0 2px 8px rgba(16, 24, 40, 0.12);border-color:color-mix(in srgb, var(--sv-board-accent) 45%, var(--sg-border, #e4e7ec));}.sv-board-card.svelte-15b6cgu:focus-visible {outline:none;border-color:var(--sv-board-accent);box-shadow:var(--sg-focus-ring, 0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 45%, transparent));}.sv-board-card.is-dragging.svelte-15b6cgu {opacity:0.45;}.sv-board-card.is-grabbed.svelte-15b6cgu {border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 55%, transparent);cursor:grabbing;}.sv-board-card.is-editing.svelte-15b6cgu {cursor:default;border-color:var(--sv-board-accent);}.sv-board-card-edit.svelte-15b6cgu {display:flex;flex-direction:column;gap:7px;}.sv-board-field.svelte-15b6cgu {display:flex;flex-direction:column;gap:2px;font-size:0.72rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-field.svelte-15b6cgu input[type=\"text\"]:where(.svelte-15b6cgu),\n .sv-board-field.svelte-15b6cgu input[type=\"number\"]:where(.svelte-15b6cgu),\n .sv-board-field.svelte-15b6cgu input[type=\"date\"]:where(.svelte-15b6cgu) {font:inherit;font-size:0.8rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 6px);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-field.svelte-15b6cgu input:where(.svelte-15b6cgu):focus-visible {outline:none;border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 35%, transparent);}.sv-board-field.svelte-15b6cgu input[type=\"checkbox\"]:where(.svelte-15b6cgu) {align-self:flex-start;width:15px;height:15px;accent-color:var(--sv-board-accent);}.sv-board-card-edit-actions.svelte-15b6cgu {display:flex;justify-content:flex-end;gap:6px;margin-top:2px;}.sv-board-btn.svelte-15b6cgu {font:inherit;font-size:0.74rem;padding:3px 10px;border-radius:var(--sg-radius, 6px);border:1px solid var(--sg-border, #e4e7ec);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);cursor:pointer;}.sv-board-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 6%, transparent);}.sv-board-btn.is-primary.svelte-15b6cgu {background:var(--sv-board-accent);border-color:var(--sv-board-accent);color:#fff;}.sv-board-btn.is-primary.svelte-15b6cgu:hover {filter:brightness(0.95);}.sv-board-card-title.svelte-15b6cgu {font-weight:600;font-size:0.84rem;line-height:1.3;}.sv-board-card-meta.svelte-15b6cgu {margin:6px 0 0;display:flex;flex-direction:column;gap:2px;}.sv-board-card-metarow.svelte-15b6cgu {display:flex;gap:6px;font-size:0.74rem;}.sv-board-card-metarow.svelte-15b6cgu dt:where(.svelte-15b6cgu) {color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);margin:0;}.sv-board-card-metarow.svelte-15b6cgu dd:where(.svelte-15b6cgu) {margin:0;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-board-lane-empty.svelte-15b6cgu {text-align:center;font-size:0.76rem;color:color-mix(in srgb, var(--sg-fg, #101828) 42%, transparent);padding:14px 0;border:1px dashed var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);}.sv-board-drop-marker.svelte-15b6cgu {height:2px;border-radius:2px;background:var(--sv-board-accent);margin:-3px 0;}.sv-board-ctx {z-index:2147483646;min-width:200px;background:var(--sg-bg, #fff);color:var(--sg-fg, #0f172a);border:1px solid var(--sg-border, #e2e8f0);border-radius:10px;box-shadow:0 16px 48px -12px rgba(15, 23, 42, 0.35);font-size:13px;}.sv-board-sr.svelte-15b6cgu {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}\n /* Card badges */.sv-board-badges.svelte-15b6cgu {display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin-top:6px;}.sv-board-badge.svelte-15b6cgu {font-size:0.66rem;font-weight:600;padding:1px 6px;border-radius:4px;line-height:1.5;white-space:nowrap;}.sv-board-badge.is-label.svelte-15b6cgu {--b: var(--sv-board-accent);background:color-mix(in srgb, var(--b) 16%, transparent);color:color-mix(in srgb, var(--b) 80%, var(--sg-fg, #101828));}.sv-board-badge.is-due.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 65%, transparent);}.sv-board-badge.is-due.is-overdue.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-danger, #ef4444) 15%, transparent);color:var(--sg-danger, #ef4444);}.sv-board-badge.is-meta.svelte-15b6cgu {display:inline-flex;align-items:center;gap:3px;background:transparent;padding:1px 3px;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);}.sv-board-badge.is-btn.svelte-15b6cgu {border:0;cursor:pointer;font:inherit;font-size:0.66rem;font-weight:600;border-radius:5px;}.sv-board-badge.is-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:var(--sg-fg, #101828);}.sv-board-badge.is-blocked.svelte-15b6cgu {background:var(--sg-danger, #ef4444);color:#fff;text-transform:uppercase;letter-spacing:0.03em;font-size:0.6rem;}\n /* Comments thread */.sv-board-comments.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:7px;display:flex;flex-direction:column;gap:5px;}.sv-board-drawer-comments.svelte-15b6cgu {margin-top:16px;padding-top:12px;border-top:1px solid var(--sg-border, #e4e7ec);display:flex;flex-direction:column;gap:6px;}.sv-board-drawer-h.svelte-15b6cgu {font-weight:600;font-size:0.82rem;margin-bottom:2px;}.sv-board-comment.svelte-15b6cgu {display:flex;align-items:flex-start;gap:6px;font-size:0.74rem;}.sv-board-comment-body.svelte-15b6cgu {flex:1 1 auto;min-width:0;}.sv-board-comment-author.svelte-15b6cgu {font-weight:600;margin-right:5px;}.sv-board-comment-at.svelte-15b6cgu {margin-left:6px;font-size:0.66rem;color:color-mix(in srgb, var(--sg-fg, #101828) 45%, transparent);}.sv-board-comment-del.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.9rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 40%, transparent);padding:0 2px;}.sv-board-comment-del.svelte-15b6cgu:hover {color:var(--sg-danger, #ef4444);}.sv-board-comment-empty.svelte-15b6cgu {font-size:0.72rem;color:color-mix(in srgb, var(--sg-fg, #101828) 42%, transparent);}.sv-board-comment-add.svelte-15b6cgu {width:100%;box-sizing:border-box;font:inherit;font-size:0.74rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-card-cover.svelte-15b6cgu {height:6px;border-radius:4px;margin:-2px 0 7px;}.sv-board-avatars.svelte-15b6cgu {display:inline-flex;margin-left:auto;}.sv-board-avatar.svelte-15b6cgu {width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:0.6rem;font-weight:700;color:#fff;background:var(--sv-board-accent);border:1.5px solid var(--sg-bg, #fff);margin-left:-6px;}.sv-board-avatar.svelte-15b6cgu:first-child {margin-left:0;}\n /* Sub-tasks */.sv-board-subs.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:6px;}.sv-board-subs-head.svelte-15b6cgu {all:unset;cursor:pointer;display:flex;align-items:center;gap:6px;width:100%;font-size:0.7rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-subs-chev.svelte-15b6cgu {font-size:0.6rem;}.sv-board-subs-count.svelte-15b6cgu {font-variant-numeric:tabular-nums;font-weight:600;}.sv-board-subs-bar.svelte-15b6cgu {flex:1 1 auto;height:4px;border-radius:2px;background:color-mix(in srgb, var(--sg-fg, #101828) 10%, transparent);overflow:hidden;}.sv-board-subs-bar.svelte-15b6cgu span:where(.svelte-15b6cgu) {display:block;height:100%;background:var(--sv-board-accent);transition:width 0.15s ease;}.sv-board-subs-list.svelte-15b6cgu {list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:3px;}.sv-board-subs-list.svelte-15b6cgu label:where(.svelte-15b6cgu) {display:flex;align-items:center;gap:6px;font-size:0.74rem;cursor:pointer;}.sv-board-subs-list.svelte-15b6cgu label.is-done:where(.svelte-15b6cgu) span:where(.svelte-15b6cgu) {text-decoration:line-through;color:color-mix(in srgb, var(--sg-fg, #101828) 45%, transparent);}.sv-board-subs-list.svelte-15b6cgu input:where(.svelte-15b6cgu) {accent-color:var(--sv-board-accent);}.sv-board-subs-add.svelte-15b6cgu {margin-top:5px;width:100%;box-sizing:border-box;font:inherit;font-size:0.74rem;padding:3px 6px;border:1px solid var(--sg-border, #e4e7ec);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}\n /* Quick-add composer */.sv-board-composer-btn.svelte-15b6cgu {all:unset;cursor:pointer;display:block;margin:6px 8px 8px;padding:5px 8px;border-radius:var(--sg-radius, 6px);font-size:0.76rem;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);}.sv-board-composer-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 6%, transparent);color:var(--sg-fg, #101828);}.sv-board-composer-input.svelte-15b6cgu {margin:6px 8px 8px;width:calc(100% - 16px);box-sizing:border-box;font:inherit;font-size:0.8rem;padding:6px 8px;border:1px solid var(--sv-board-accent);border-radius:var(--sg-radius, 6px);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}\n /* Facet filter bar */.sv-board-facets.svelte-15b6cgu {display:flex;flex-wrap:wrap;gap:6px;padding:4px 4px 8px;align-items:center;}.sv-board-facet.svelte-15b6cgu {all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:5px;font-size:0.73rem;padding:2px 9px;border-radius:999px;border:1px solid var(--sg-border, #e4e7ec);color:color-mix(in srgb, var(--sg-fg, #101828) 70%, transparent);}.sv-board-facet.svelte-15b6cgu:hover {border-color:var(--sg-accent, #3b82f6);}.sv-board-facet.is-active.svelte-15b6cgu {background:var(--sg-accent, #3b82f6);border-color:var(--sg-accent, #3b82f6);color:#fff;}.sv-board-facet-count.svelte-15b6cgu {font-size:0.66rem;opacity:0.7;font-variant-numeric:tabular-nums;}.sv-board-facet-clear.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.72rem;color:var(--sg-accent, #3b82f6);padding:2px 6px;}\n /* Blocked flag + selection */.sv-board-card.svelte-15b6cgu {position:relative;}.sv-board-card-flag.svelte-15b6cgu {position:absolute;top:0;right:0;width:0;height:0;border-top:14px solid var(--sg-danger, #ef4444);border-left:14px solid transparent;border-top-right-radius:var(--sg-radius, 8px);}.sv-board-card.is-selected.svelte-15b6cgu {border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 55%, transparent);}.sv-board-card.is-locked.svelte-15b6cgu {cursor:default;}\n /* Child cards (epic -> stories) */.sv-board-kids.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:6px;}.sv-board-kids-head.svelte-15b6cgu {all:unset;cursor:pointer;display:flex;align-items:center;gap:5px;font-size:0.7rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-kids-list.svelte-15b6cgu {list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;}.sv-board-kid.svelte-15b6cgu {display:flex;align-items:center;gap:6px;font-size:0.74rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:6px;background:var(--sg-bg, #fff);}.sv-board-kid-title.svelte-15b6cgu {flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-board-kid-lane.svelte-15b6cgu {font-size:0.64rem;font-weight:600;padding:0 6px;border-radius:999px;background:color-mix(in srgb, var(--sv-board-accent) 15%, transparent);color:color-mix(in srgb, var(--sv-board-accent) 85%, var(--sg-fg, #101828));text-transform:capitalize;}\n @media (prefers-reduced-motion: reduce) {.sv-board-card.svelte-15b6cgu,\n .sv-board-lane-body.svelte-15b6cgu,\n .sv-board-subs-bar.svelte-15b6cgu span:where(.svelte-15b6cgu) {transition:none;}\n }"
10891
+ code: ".sv-board.svelte-15b6cgu {height:100%;box-sizing:border-box;display:flex;flex-direction:column;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);font-family:var(--sg-font, inherit);}.sv-board.is-swim.svelte-15b6cgu {overflow-y:auto;gap:14px;}.sv-board-lanes.svelte-15b6cgu {display:flex;gap:12px;align-items:flex-start;overflow-x:auto;padding:4px;flex:1 1 auto;min-height:0;scrollbar-color:var(--sg-scrollbar-thumb, color-mix(in srgb, var(--sg-fg, #101828) 28%, transparent))\n transparent;}.sv-board.is-swim.svelte-15b6cgu .sv-board-lanes:where(.svelte-15b6cgu) {flex:none;}.sv-board.is-swim.svelte-15b6cgu .sv-board-lane:where(.svelte-15b6cgu) {max-height:340px;}.sv-board-swim.svelte-15b6cgu {display:flex;flex-direction:column;gap:4px;flex:none;}.sv-board-swim-head.svelte-15b6cgu {display:flex;align-items:center;gap:8px;padding:4px 8px;font-weight:700;font-size:0.78rem;color:color-mix(in srgb, var(--sg-fg, #101828) 78%, transparent);position:sticky;left:0;}.sv-board-swim-count.svelte-15b6cgu {font-size:0.7rem;font-weight:600;padding:0 7px;border-radius:999px;background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-swim-summary.svelte-15b6cgu {font-size:0.7rem;font-weight:600;color:color-mix(in srgb, var(--sg-accent, #3b82f6) 85%, var(--sg-fg, #101828));}.sv-board-swim-toggle.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.7rem;padding:2px;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-lane-title.is-renamable.svelte-15b6cgu {cursor:text;}.sv-board-lane-rename.svelte-15b6cgu {flex:1 1 auto;min-width:0;font:inherit;font-weight:600;font-size:0.82rem;padding:1px 4px;border:1px solid var(--sv-board-accent);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-swim-toggle.svelte-15b6cgu:hover {color:var(--sg-fg, #101828);}.sv-board-lane.svelte-15b6cgu {flex:0 0 var(--sg-board-lane-w, 272px);max-width:var(--sg-board-lane-w, 272px);display:flex;flex-direction:column;max-height:100%;border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);background:var(--sg-header-bg, color-mix(in srgb, var(--sg-fg, #101828) 3%, var(--sg-bg, #fff)));--sv-board-accent: var(--sg-accent, #3b82f6);}.sv-board-lane-head.svelte-15b6cgu {display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--sg-border, #e4e7ec);border-top:3px solid var(--sv-board-accent);border-radius:var(--sg-radius, 8px) var(--sg-radius, 8px) 0 0;}.sv-board-lane-head.is-reorderable.svelte-15b6cgu {cursor:grab;}.sv-board-lane-head.is-lane-dropover.svelte-15b6cgu {box-shadow:inset 3px 0 0 var(--sv-board-accent);}.sv-board-lane-title.svelte-15b6cgu {font-weight:600;font-size:0.82rem;flex:1 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}.sv-board-lane-toggle.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.7rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);padding:2px;}.sv-board-lane-toggle.svelte-15b6cgu:hover {color:var(--sg-fg, #101828);}.sv-board-lane.is-collapsed.svelte-15b6cgu {flex:0 0 auto;max-width:none;}.sv-board-lane.is-collapsed.svelte-15b6cgu .sv-board-lane-head:where(.svelte-15b6cgu) {writing-mode:vertical-rl;height:180px;border-top:none;border-left:3px solid var(--sv-board-accent);border-radius:0 var(--sg-radius, 8px) var(--sg-radius, 8px) 0;gap:6px;}.sv-board-lane-count.svelte-15b6cgu {font-size:0.72rem;font-variant-numeric:tabular-nums;padding:1px 7px;border-radius:999px;background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 70%, transparent);}.sv-board-lane-count.is-over.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-danger, #ef4444) 16%, transparent);color:var(--sg-danger, #ef4444);font-weight:700;}.sv-board-lane-summary.svelte-15b6cgu {font-size:0.72rem;font-weight:600;font-variant-numeric:tabular-nums;color:color-mix(in srgb, var(--sv-board-accent) 85%, var(--sg-fg, #101828));}.sv-board-lane-add.svelte-15b6cgu {all:unset;cursor:pointer;width:20px;height:20px;display:grid;place-items:center;border-radius:5px;font-size:1rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-lane-add.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:var(--sg-fg, #101828);}.sv-board-lane-body.svelte-15b6cgu {display:flex;flex-direction:column;gap:8px;padding:8px;overflow-y:auto;flex:1 1 auto;min-height:48px;transition:background 0.12s ease;}.sv-board-lane-body.is-dropover.svelte-15b6cgu {background:color-mix(in srgb, var(--sv-board-accent) 8%, transparent);}\n /* Virtualized lanes use block flow + per-card margin (not flex gap) so the\n spacer heights match the windowing math exactly. */.sv-board-lane-body.is-virtual.svelte-15b6cgu {display:block;gap:0;}.sv-board-lane-body.is-virtual.svelte-15b6cgu .sv-board-card:where(.svelte-15b6cgu) {margin-bottom:8px;}.sv-board-card.svelte-15b6cgu {background:var(--sg-bg, #fff);border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);padding:9px 11px;cursor:grab;box-shadow:0 1px 2px rgba(16, 24, 40, 0.05);transition:box-shadow 0.12s ease,\n opacity 0.12s ease,\n transform 0.12s ease;}.sv-board-card.svelte-15b6cgu:hover {box-shadow:0 2px 8px rgba(16, 24, 40, 0.12);border-color:color-mix(in srgb, var(--sv-board-accent) 45%, var(--sg-border, #e4e7ec));}.sv-board-card.svelte-15b6cgu:focus-visible {outline:none;border-color:var(--sv-board-accent);box-shadow:var(--sg-focus-ring, 0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 45%, transparent));}.sv-board-card.is-dragging.svelte-15b6cgu {opacity:0.45;}.sv-board-card.is-grabbed.svelte-15b6cgu {border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 55%, transparent);cursor:grabbing;}.sv-board-card.is-editing.svelte-15b6cgu {cursor:default;border-color:var(--sv-board-accent);}.sv-board-card-edit.svelte-15b6cgu {display:flex;flex-direction:column;gap:7px;}.sv-board-field.svelte-15b6cgu {display:flex;flex-direction:column;gap:2px;font-size:0.72rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-field.svelte-15b6cgu input[type=\"text\"]:where(.svelte-15b6cgu),\n .sv-board-field.svelte-15b6cgu input[type=\"number\"]:where(.svelte-15b6cgu),\n .sv-board-field.svelte-15b6cgu input[type=\"date\"]:where(.svelte-15b6cgu) {font:inherit;font-size:0.8rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 6px);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-field.svelte-15b6cgu input:where(.svelte-15b6cgu):focus-visible {outline:none;border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 35%, transparent);}.sv-board-field.svelte-15b6cgu input[type=\"checkbox\"]:where(.svelte-15b6cgu) {align-self:flex-start;width:15px;height:15px;accent-color:var(--sv-board-accent);}.sv-board-card-edit-actions.svelte-15b6cgu {display:flex;justify-content:flex-end;gap:6px;margin-top:2px;}.sv-board-btn.svelte-15b6cgu {font:inherit;font-size:0.74rem;padding:3px 10px;border-radius:var(--sg-radius, 6px);border:1px solid var(--sg-border, #e4e7ec);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);cursor:pointer;}.sv-board-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 6%, transparent);}.sv-board-btn.is-primary.svelte-15b6cgu {background:var(--sv-board-accent);border-color:var(--sv-board-accent);color:#fff;}.sv-board-btn.is-primary.svelte-15b6cgu:hover {filter:brightness(0.95);}.sv-board-card-title.svelte-15b6cgu {font-weight:600;font-size:0.84rem;line-height:1.3;}.sv-board-card-meta.svelte-15b6cgu {margin:6px 0 0;display:flex;flex-direction:column;gap:2px;}.sv-board-card-metarow.svelte-15b6cgu {display:flex;gap:6px;font-size:0.74rem;}.sv-board-card-metarow.svelte-15b6cgu dt:where(.svelte-15b6cgu) {color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);margin:0;}.sv-board-card-metarow.svelte-15b6cgu dd:where(.svelte-15b6cgu) {margin:0;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-board-lane-empty.svelte-15b6cgu {text-align:center;font-size:0.76rem;color:color-mix(in srgb, var(--sg-fg, #101828) 42%, transparent);padding:14px 0;border:1px dashed var(--sg-border, #e4e7ec);border-radius:var(--sg-radius, 8px);}.sv-board-drop-marker.svelte-15b6cgu {height:2px;border-radius:2px;background:var(--sv-board-accent);margin:-3px 0;}.sv-board-ctx {z-index:2147483646;min-width:200px;background:var(--sg-bg, #fff);color:var(--sg-fg, #0f172a);border:1px solid var(--sg-border, #e2e8f0);border-radius:10px;box-shadow:0 16px 48px -12px rgba(15, 23, 42, 0.35);font-size:13px;}.sv-board-sr.svelte-15b6cgu {position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}\n /* Card badges */.sv-board-badges.svelte-15b6cgu {display:flex;align-items:center;flex-wrap:wrap;gap:4px;margin-top:6px;}.sv-board-badge.svelte-15b6cgu {font-size:0.66rem;font-weight:600;padding:1px 6px;border-radius:4px;line-height:1.5;white-space:nowrap;}.sv-board-badge.is-label.svelte-15b6cgu {--b: var(--sv-board-accent);background:color-mix(in srgb, var(--b) 16%, transparent);color:color-mix(in srgb, var(--b) 80%, var(--sg-fg, #101828));}.sv-board-badge.is-due.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:color-mix(in srgb, var(--sg-fg, #101828) 65%, transparent);}.sv-board-badge.is-due.is-overdue.svelte-15b6cgu {background:color-mix(in srgb, var(--sg-danger, #ef4444) 15%, transparent);color:var(--sg-danger, #ef4444);}.sv-board-badge.is-meta.svelte-15b6cgu {display:inline-flex;align-items:center;gap:3px;background:transparent;padding:1px 3px;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);}.sv-board-badge.is-btn.svelte-15b6cgu {border:0;cursor:pointer;font:inherit;font-size:0.66rem;font-weight:600;border-radius:5px;}.sv-board-badge.is-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);color:var(--sg-fg, #101828);}.sv-board-badge.is-blocked.svelte-15b6cgu {background:var(--sg-danger, #ef4444);color:#fff;text-transform:uppercase;letter-spacing:0.03em;font-size:0.6rem;}\n /* Comments thread */.sv-board-comments.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:7px;display:flex;flex-direction:column;gap:5px;}.sv-board-drawer-comments.svelte-15b6cgu {margin-top:16px;padding-top:12px;border-top:1px solid var(--sg-border, #e4e7ec);display:flex;flex-direction:column;gap:6px;}.sv-board-drawer-h.svelte-15b6cgu {font-weight:600;font-size:0.82rem;margin-bottom:2px;}.sv-board-comment.svelte-15b6cgu {display:flex;align-items:flex-start;gap:6px;font-size:0.74rem;}.sv-board-comment-body.svelte-15b6cgu {flex:1 1 auto;min-width:0;}.sv-board-comment-author.svelte-15b6cgu {font-weight:600;margin-right:5px;}.sv-board-comment-at.svelte-15b6cgu {margin-left:6px;font-size:0.66rem;color:color-mix(in srgb, var(--sg-fg, #101828) 45%, transparent);}.sv-board-comment-del.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.9rem;line-height:1;color:color-mix(in srgb, var(--sg-fg, #101828) 40%, transparent);padding:0 2px;}.sv-board-comment-del.svelte-15b6cgu:hover {color:var(--sg-danger, #ef4444);}.sv-board-comment-empty.svelte-15b6cgu {font-size:0.72rem;color:color-mix(in srgb, var(--sg-fg, #101828) 42%, transparent);}.sv-board-comment-add.svelte-15b6cgu {width:100%;box-sizing:border-box;font:inherit;font-size:0.74rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}.sv-board-card-cover.svelte-15b6cgu {height:6px;border-radius:4px;margin:-2px 0 7px;}.sv-board-avatars.svelte-15b6cgu {display:inline-flex;margin-left:auto;}.sv-board-avatar.svelte-15b6cgu {width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-size:0.6rem;font-weight:700;color:#fff;background:var(--sv-board-accent);border:1.5px solid var(--sg-bg, #fff);margin-left:-6px;}.sv-board-avatar.svelte-15b6cgu:first-child {margin-left:0;}\n /* Sub-tasks */.sv-board-subs.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:6px;}.sv-board-subs-head.svelte-15b6cgu {all:unset;cursor:pointer;display:flex;align-items:center;gap:6px;width:100%;font-size:0.7rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-subs-chev.svelte-15b6cgu {font-size:0.6rem;}.sv-board-subs-count.svelte-15b6cgu {font-variant-numeric:tabular-nums;font-weight:600;}.sv-board-subs-bar.svelte-15b6cgu {flex:1 1 auto;height:4px;border-radius:2px;background:color-mix(in srgb, var(--sg-fg, #101828) 10%, transparent);overflow:hidden;}.sv-board-subs-bar.svelte-15b6cgu span:where(.svelte-15b6cgu) {display:block;height:100%;background:var(--sv-board-accent);transition:width 0.15s ease;}.sv-board-subs-list.svelte-15b6cgu {list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:3px;}.sv-board-subs-list.svelte-15b6cgu label:where(.svelte-15b6cgu) {display:flex;align-items:center;gap:6px;font-size:0.74rem;cursor:pointer;}.sv-board-subs-list.svelte-15b6cgu label.is-done:where(.svelte-15b6cgu) span:where(.svelte-15b6cgu) {text-decoration:line-through;color:color-mix(in srgb, var(--sg-fg, #101828) 45%, transparent);}.sv-board-subs-list.svelte-15b6cgu input:where(.svelte-15b6cgu) {accent-color:var(--sv-board-accent);}.sv-board-subs-add.svelte-15b6cgu {margin-top:5px;width:100%;box-sizing:border-box;font:inherit;font-size:0.74rem;padding:3px 6px;border:1px solid var(--sg-border, #e4e7ec);border-radius:5px;background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}\n /* Quick-add composer */.sv-board-composer-btn.svelte-15b6cgu {all:unset;cursor:pointer;display:block;margin:6px 8px 8px;padding:5px 8px;border-radius:var(--sg-radius, 6px);font-size:0.76rem;color:color-mix(in srgb, var(--sg-fg, #101828) 55%, transparent);}.sv-board-composer-btn.svelte-15b6cgu:hover {background:color-mix(in srgb, var(--sg-fg, #101828) 6%, transparent);color:var(--sg-fg, #101828);}.sv-board-composer-input.svelte-15b6cgu {margin:6px 8px 8px;width:calc(100% - 16px);box-sizing:border-box;font:inherit;font-size:0.8rem;padding:6px 8px;border:1px solid var(--sv-board-accent);border-radius:var(--sg-radius, 6px);background:var(--sg-bg, #fff);color:var(--sg-fg, #101828);}\n /* Facet filter bar */.sv-board-facets.svelte-15b6cgu {display:flex;flex-wrap:wrap;gap:6px;padding:4px 4px 8px;align-items:center;}.sv-board-facet.svelte-15b6cgu {all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:5px;font-size:0.73rem;padding:2px 9px;border-radius:999px;border:1px solid var(--sg-border, #e4e7ec);color:color-mix(in srgb, var(--sg-fg, #101828) 70%, transparent);}.sv-board-facet.svelte-15b6cgu:hover {border-color:var(--sg-accent, #3b82f6);}.sv-board-facet.is-active.svelte-15b6cgu {background:var(--sg-accent, #3b82f6);border-color:var(--sg-accent, #3b82f6);color:#fff;}.sv-board-facet-count.svelte-15b6cgu {font-size:0.66rem;opacity:0.7;font-variant-numeric:tabular-nums;}.sv-board-facet-clear.svelte-15b6cgu {all:unset;cursor:pointer;font-size:0.72rem;color:var(--sg-accent, #3b82f6);padding:2px 6px;}\n /* Blocked flag + selection */.sv-board-card.svelte-15b6cgu {position:relative;}.sv-board-card-flag.svelte-15b6cgu {position:absolute;top:0;right:0;width:0;height:0;border-top:14px solid var(--sg-danger, #ef4444);border-left:14px solid transparent;border-top-right-radius:var(--sg-radius, 8px);}.sv-board-card.is-selected.svelte-15b6cgu {border-color:var(--sv-board-accent);box-shadow:0 0 0 2px color-mix(in srgb, var(--sv-board-accent) 55%, transparent);}.sv-board-card.is-locked.svelte-15b6cgu {cursor:default;}\n /* Child cards (epic -> stories) */.sv-board-kids.svelte-15b6cgu {margin-top:7px;border-top:1px solid color-mix(in srgb, var(--sg-fg, #101828) 8%, transparent);padding-top:6px;}.sv-board-kids-head.svelte-15b6cgu {all:unset;cursor:pointer;display:flex;align-items:center;gap:5px;font-size:0.7rem;color:color-mix(in srgb, var(--sg-fg, #101828) 60%, transparent);}.sv-board-kids-list.svelte-15b6cgu {list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px;}.sv-board-kid.svelte-15b6cgu {display:flex;align-items:center;gap:6px;font-size:0.74rem;padding:4px 7px;border:1px solid var(--sg-border, #e4e7ec);border-radius:6px;background:var(--sg-bg, #fff);}.sv-board-kid-title.svelte-15b6cgu {flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}.sv-board-kid-lane.svelte-15b6cgu {font-size:0.64rem;font-weight:600;padding:0 6px;border-radius:999px;background:color-mix(in srgb, var(--sv-board-accent) 15%, transparent);color:color-mix(in srgb, var(--sv-board-accent) 85%, var(--sg-fg, #101828));text-transform:capitalize;}\n @media (prefers-reduced-motion: reduce) {.sv-board-card.svelte-15b6cgu,\n .sv-board-lane-body.svelte-15b6cgu,\n .sv-board-subs-bar.svelte-15b6cgu span:where(.svelte-15b6cgu) {transition:none;}\n }"
10892
10892
  };
10893
10893
  function _l(t, r) {
10894
10894
  e.push(r, !0), e.append_styles(t, gl);
@@ -24764,4 +24764,4 @@ function KC(e, t, n) {
24764
24764
  //#endregion
24765
24765
  export { Bf as COUNTRIES, Uf as COUNTRY_BY_CODE, Mb as DEFAULT_PALETTE, qs as FOCUSABLE_SELECTOR, jb as FlexRender, Ue as PANEL_THEME_VARS, Vf as PHONE_NATIONAL_LENGTHS, go as STRENGTH_LABELS, yg as SvAccordion, j_ as SvAlert, ym as SvAutoComplete, jv as SvAvatar, Iv as SvAvatarGroup, d_ as SvBadge, By as SvBreadcrumb, ks as SvButton, ff as SvButtonGroup, mn as SvCalendar, C_ as SvCard, sy as SvCarousel, ts as SvCheckBox, X_ as SvChip, Ab as SvCircularProgress, _s as SvColorInput, fm as SvComboBox, Jv as SvCommand, Zy as SvContextMenu, Th as SvCountryInput, af as SvDateRangeInput, dr as SvDateTimePicker, U_ as SvDivider, cc as SvDrawer, qo as SvDropDownList, Af as SvDurationInput, R_ as SvEmptyState, Q as SvField, Mg as SvFileUpload, Ks as SvForm, Wh as SvGauge, Qd as SvGrid, _l as SvGridBoard, IS as SvGridChart, at as SvGridDropdown, mh as SvGridSelect, hC as SvGroupCell, em as SvListBox, zp as SvMaskedInput, tb as SvMenu, qg as SvModal, Um as SvMultiSelect, bb as SvNavPane, ho as SvNumberInput, wf as SvOtpInput, Ty as SvPagination, Do as SvPasswordInput, Wp as SvPhoneInput, Ig as SvPopover, Tb as SvProgress, Sp as SvRadioGroup, Cs as SvRating, ao as SvRepeatButton, ey as SvRichText, CC as SvRowGroupPanel, Sv as SvScrollArea, h_ as SvSkeleton, Rh as SvSlider, yv as SvSparkline, Cg as SvSplitter, iv as SvStat, qy as SvStepper, ss as SvSwitchButton, Qh as SvTabs, Tm as SvTagsInput, Mp as SvTextArea, Dp as SvTextInput, kn as SvTimePicker, fv as SvTimeline, s_ as SvToaster, _p as SvToggleButton, Bg as SvTooltip, my as SvTour, fg as SvTree, th as SvTreeSelect, gt as addDays, _t as addMonths, vt as addYears, G as anchoredRect, gf as announce, VC as applyExcelFilter, V as applyGroupAggregate, Yf as applyMask, DC as attachAutoSavedView, wv as avatarColorHue, Cv as avatarInitials, Km as branchValues, tC as broadcastChannelTransport, nx as buildChart, Wb as buildLinePath, Ve as buildSparkline, HS as chartToPngBlob, zS as chartToSvgString, yt as clampDate, $g as clearToasts, x as coerceExportDate, ae as columnFilteringFeature, se as columnGroupingFeature, wi as computeColumnGroupMeta, d as computeColumnStat, Yb as computeOverlay, g as contrastText, re as copyTextToClipboard, mg as createAccordion, Lf as createAutocomplete, sf as createButtonGroup, Wt as createCalendar, Jo as createCheckbox, nC as createCollaboration, us as createColorInput, IC as createColumnVirtualizer, If as createCombobox, fe as createCoreRowModel, Wf as createCountryInput, rr as createDateTimePicker, Bn as createDismissableLayer, Io as createDropdownList, ge as createExpandedRowModel, Tg as createFileUpload, pe as createFilteredRowModel, Xs as createFocusTrap, mp as createGauge, xe as createGrid, Se as createGridState, he as createGroupedRowModel, eC as createHyperFormulaSheet, Pf as createListbox, $f as createMaskedInput, EC as createNamedViews, oo as createNumberInput, me as createPaginatedRowModel, vo as createPasswordInput, tp as createPhoneInput, rp as createRadioGroup, vs as createRating, rC as createServerDataSource, sC as createServerGroupModel, pp as createSlider, _e as createSortedRowModel, bg as createSplitter, be as createSvGrid, be as createTable, Ce as createSvGridState, FC as createSvelteVirtualizer, ns as createSwitch, ap as createTabs, Rf as createTagsInput, xn as createTimePicker, np as createToggle, fp as createTree, Mo as createTypeaheadBuffer, PC as createVirtualizer, Om as debounce, xt as decadeRange, vr as defaultEditorProps, Qg as dismissToast, Vn as dismissableDepth, ne as downloadBlobFile, US as downloadChartPng, VS as downloadChartSvg, B as downloadTextFile, q as editorAria, ot as editorErrorId, st as editorHintId, Tt as emptySelection, Vt as expandRecurrence, Jb as exponentialMovingAverage, wg as fileMatchesAccept, U as filterFns, nh as filterGridRows, Oo as filterOptions, Gm as findNodePath, zf as flagEmoji, Wm as flattenVisible, Zn as formatDate, Ef as formatDuration, l as formatNumericWithConfig, S as formatValueForExport, zv as fuzzyMatch, Rv as fuzzyScore, mr as getCellEditor, Ys as getFocusable, GC as getGridCellA11yProps, KC as getGridCellDomId, UC as getGridHeaderA11yProps, HC as getGridRootA11yProps, WC as getGridRowA11yProps, Xr as getKeyboardIntent, Zr as getNextActiveCell, ko as groupOptions, hr as hasCellEditor, Ao as hasGroups, Ti as hiddenLeavesForCollapse, xi as inferCellDataType, Ft as isDisabledDay, Ns as isEmptyValue, It as isImportant, Qf as isMaskComplete, jt as isMultiSelectMode, yf as isOtpComplete, Nt as isOutOfRange, Pt as isRestricted, mt as isSameDay, Et as isSelected, No as isTypeaheadKey, bt as isoWeek, _ as lerpColor, Kb as linearTrend, TC as localStorageViews, ec as lockScroll, Bt as matchesRecurrence, wC as memoryViews, St as monthMatrix, up as moveTreeNode, K as nextEditorId, jo as nextTypeaheadIndex, Hb as niceLogScale, Xb as niceScale, Ut as normalizeCalendarValue, LC as normalizeEditorOptions, BC as normalizeForFilter, ls as normalizeHex, vf as otpCells, gy as paginationRange, tr as parseDate, Tf as parseDuration, RC as parseEditorValue, bn as parseTimeValue, _o as passwordStrength, e_ as pauseToast, Hf as phoneDigitsValid, Vb as pickContrastText, W as popIn, We as portalToBody, w as projectGridRows, Dt as rangeDays, jf as registerBuiltinEditors, pr as registerCellEditor, _r as registeredCellEditorTypes, Le as renderComponent, Re as renderSnippet, y as resolveCellFormat, Si as resolveColumnTypes, i as resolveDatePattern, yr as resolveEditorProps, J as resolveMessages, t_ as resumeToast, gi as rowDropZone, le as rowExpandingFeature, oe as rowPaginationFeature, $S as rowResize, ce as rowSelectionFeature, ie as rowSortingFeature, rx as rowsToChartSpec, Fs as rules, Is as runRules, zb as sampleGradient, _f as sanitizeOtp, tc as scrollLockDepth, Fo as scrollToIndex, At as selectDate, j as serializeDelimited, P as serializeHtml, F as serializeJson, L as serializeMarkdown, te as serializeXml, aC as serverGroupNav, iC as serverGroupRows, qb as simpleMovingAverage, Z as snapMinute, de as sortFns, dp as sortTreeNodes, WS as spansToMerges, ZS as spreadsheetLayout, Y as startOfDay, Te as subscribeGrid, Ee as subscribeSvGrid, ue as tableFeatures, lt as toDate, C as toExcelNumFmt, of as toGroupArray, Nf as toSelectedArray, Be as toSparklineValues, Zg as toast, Xg as toastStore, Un as tokenizeMask, sp as treeCheckState, lp as treeContains, op as treeDescendantIds, Zf as unmask, gr as unregisterCellEditor, E as valueForExcel, Po as virtualRange, wt as withTime };
24766
24766
 
24767
- ;(function(){try{if(typeof document==='undefined')return;var s=document.createElement('style');s.setAttribute('data-svgrid','');s.textContent=".sv-grid-root{position:relative}.sv-grid-sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.sv-grid-loading-overlay{z-index:18;pointer-events:auto;background:color-mix(in srgb, var(--sg-bg,#fff) 35%, transparent);position:absolute;inset:0}.sv-grid-loading-bar{background:color-mix(in srgb, var(--sg-accent,#2563eb) 18%, transparent);height:3px;position:absolute;top:0;left:0;right:0;overflow:hidden}.sv-grid-loading-bar:before{content:\"\";background:var(--sg-accent,#2563eb);width:40%;animation:1.1s ease-in-out infinite sv-grid-loading-slide;position:absolute;inset:0}@keyframes sv-grid-loading-slide{0%{transform:translate(-100%)}to{transform:translate(350%)}}.sv-grid-skeleton{top:var(--sg-thead-h,40px);padding:0;position:absolute;left:0;right:0;overflow:hidden}.sv-grid-skeleton-row{height:var(--sg-pinned-row-h,36px);border-bottom:1px solid var(--sg-border,#e2e8f0);align-items:center;display:flex}.sv-grid-skeleton-cell{box-sizing:border-box;flex-shrink:0;padding:0 12px}.sv-grid-skeleton-bar{background:linear-gradient(90deg, color-mix(in srgb, var(--sg-muted,#94a3b8) 18%, transparent) 25%, color-mix(in srgb, var(--sg-muted,#94a3b8) 32%, transparent) 50%, color-mix(in srgb, var(--sg-muted,#94a3b8) 18%, transparent) 75%);background-size:200% 100%;border-radius:4px;width:70%;height:10px;animation:1.3s linear infinite sv-grid-shimmer;display:block}@keyframes sv-grid-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.sv-grid-toolbar{align-items:center;gap:8px;padding:6px 2px;display:flex}.sv-grid-toolbar-btn{border:1px solid var(--sg-border,#e2e8f0);border-radius:var(--sg-radius,6px);background:var(--sg-bg,#fff);color:var(--sg-fg,#0f172a);cursor:pointer;align-items:center;gap:6px;padding:6px 12px;font-size:12.5px;font-weight:600;transition:background-color .12s,color .12s,border-color .12s;display:inline-flex}.sv-grid-toolbar-btn:hover{border-color:var(--sg-accent,#2563eb);color:var(--sg-accent,#2563eb)}.sv-grid-toolbar-btn.is-active{background:var(--sg-accent,#2563eb);border-color:var(--sg-accent,#2563eb);color:#fff}.sv-grid-tool-panel{z-index:901;background:var(--sg-bg,#fff);border-left:1px solid var(--sg-border,#e2e8f0);flex-direction:column;width:250px;display:flex;position:absolute;top:0;bottom:0;right:0;box-shadow:-8px 0 24px #0000001f}.sv-grid-tool-panel-head{text-transform:uppercase;letter-spacing:.05em;color:var(--sg-muted,#64748b);border-bottom:1px solid var(--sg-border,#e2e8f0);justify-content:space-between;align-items:center;padding:8px 12px;font-size:12px;font-weight:700;display:flex}.sv-grid-tool-panel-close{color:var(--sg-muted,#64748b);cursor:pointer;background:0 0;border:0;font-size:14px}.sv-grid-tool-panel-list{flex:1;margin:0;padding:6px;list-style:none;overflow-y:auto}.sv-grid-tool-panel-item{border-radius:5px;justify-content:space-between;align-items:center;gap:6px;padding:3px 6px;display:flex}.sv-grid-tool-panel-item:hover{background:var(--sg-row-hover-bg,#94a3b81a)}.sv-grid-tool-panel-vis{min-width:0;color:var(--sg-fg,#0f172a);cursor:pointer;flex:1;align-items:center;gap:8px;font-size:13px;display:flex}.sv-grid-tool-panel-vis input{accent-color:var(--sg-accent,#2563eb)}.sv-grid-tool-panel-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sv-grid-tool-panel-actions{flex-shrink:0;gap:2px;display:inline-flex}.sv-grid-tool-panel-btn{width:22px;height:22px;color:var(--sg-muted,#64748b);cursor:pointer;background:0 0;border:0;border-radius:4px;font-size:13px}.sv-grid-tool-panel-btn:hover:not(:disabled){background:var(--sg-row-hover-bg,#94a3b82e);color:var(--sg-fg,#0f172a)}.sv-grid-tool-panel-btn.is-active{color:var(--sg-accent,#2563eb)}.sv-grid-tool-panel-btn:disabled{opacity:.35;cursor:default}.sv-grid-tool-panel-tabs{border-bottom:1px solid var(--sg-border,#e2e8f0);gap:2px;padding:6px 6px 0;display:flex}.sv-grid-tool-panel-tab{color:var(--sg-muted,#64748b);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;flex:1;padding:6px 8px;font-size:12px;font-weight:600}.sv-grid-tool-panel-tab:hover{color:var(--sg-fg,#0f172a)}.sv-grid-tool-panel-tab.is-active{color:var(--sg-accent,#2563eb);border-bottom-color:var(--sg-accent,#2563eb)}.sv-grid-tool-panel-filters{flex-direction:column;flex:1;gap:8px;padding:6px;display:flex;overflow-y:auto}.sv-grid-tp-filter{border:1px solid var(--sg-border,#e2e8f0);border-radius:6px;flex-direction:column;gap:4px;padding:6px;display:flex}.sv-grid-tp-filter.is-filtered{border-color:var(--sg-accent,#2563eb)}.sv-grid-tp-filter-head{justify-content:space-between;align-items:center;display:flex}.sv-grid-tp-filter-name{color:var(--sg-fg,#0f172a);font-size:12px;font-weight:600}.sv-grid-tp-filter-clear{color:var(--sg-muted,#64748b);cursor:pointer;background:0 0;border:0;padding:0 2px;font-size:11px}.sv-grid-tp-filter-clear:hover{color:var(--sg-accent,#2563eb)}.sv-grid-tp-filter-op,.sv-grid-tp-filter-input{box-sizing:border-box;border:1px solid var(--sg-border,#e2e8f0);background:var(--sg-bg,#fff);width:100%;color:var(--sg-fg,#0f172a);border-radius:5px;padding:4px 6px;font-size:12px}.sv-grid-root-fill{flex-direction:column;height:100%;min-height:0;display:flex}.sv-grid-root-fill>.sv-grid-shell{flex:1 1 0;min-height:0;height:auto!important}.sv-grid-shell{border-bottom:1px solid var(--sg-border,#cbd5e1);position:relative}.sv-grid-table{table-layout:fixed;border-collapse:separate;border-spacing:0}.sv-grid-table:focus{outline:none}.sv-grid-column,.sv-grid-cell{box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;background:var(--sg-bg,#fff);color:var(--sg-fg,#0f172a);-webkit-user-select:none;user-select:none;border-right:1px solid var(--sg-border,#e2e8f0);border-bottom:1px solid var(--sg-border,#e2e8f0);overflow:hidden}.sv-grid-table tr>:last-child.sv-grid-column,.sv-grid-table tr>:last-child.sv-grid-cell{border-right:0}.sv-grid-table:not(.sv-grid-no-row-hover) tbody tr:hover>.sv-grid-cell:not([data-selected-range=true]){background-color:var(--sg-row-hover-bg,#eef2ff)}.sv-grid-cell-active,.sv-grid-cell-has-fill-handle{position:relative}.sv-grid-cell-has-fill-handle{overflow:visible}.sv-grid-detail-row{height:auto!important}.sv-grid-detail-cell{text-overflow:clip;white-space:normal;background:var(--sg-bg,#fff);-webkit-user-select:text;user-select:text;height:auto;padding:0;overflow:visible}.sv-grid-cell[data-pinned=left],.sv-grid-column[data-pinned=left]{background:var(--sg-pinned-bg,color-mix(in oklab, var(--sg-header-bg,#f1f5f9) 92%, var(--sg-accent,#2563eb) 8%));box-shadow:inset -1px 0 0 var(--sg-pinned-divider,var(--sg-border,#cbd5e1)), 8px 0 12px -6px #0f172a38}.sv-grid-cell[data-pinned=right],.sv-grid-column[data-pinned=right]{background:var(--sg-pinned-bg,color-mix(in oklab, var(--sg-header-bg,#f1f5f9) 92%, var(--sg-accent,#2563eb) 8%));box-shadow:inset 1px 0 0 var(--sg-pinned-divider,var(--sg-border,#cbd5e1)), -8px 0 12px -6px #0f172a38}.sv-grid-head .sv-grid-column[data-pinned=left],.sv-grid-head .sv-grid-column[data-pinned=right]{background:var(--sg-pinned-header-bg,color-mix(in oklab, var(--sg-header-bg,#f1f5f9) 86%, var(--sg-accent,#2563eb) 14%));font-weight:600}.sv-grid-row-alt>.sv-grid-cell{background:var(--sg-row-alt-bg,#f8fafc)}.sv-grid-row-alt>.sv-grid-cell[data-pinned]{background:var(--sg-pinned-bg,color-mix(in oklab, var(--sg-header-bg,#f1f5f9) 92%, var(--sg-accent,#2563eb) 8%))}.sv-grid-row-selected>.sv-grid-cell[data-pinned]{background:linear-gradient(color-mix(in srgb, var(--sg-selection-bg,#dbeafe) 65%, transparent), color-mix(in srgb, var(--sg-selection-bg,#dbeafe) 65%, transparent)), var(--sg-pinned-bg,color-mix(in oklab, var(--sg-header-bg,#f1f5f9) 92%, var(--sg-accent,#2563eb) 8%))}.sv-grid-table:not(.sv-grid-no-row-hover) .sv-grid-row:hover>.sv-grid-cell[data-pinned]:not([data-selected-range=true]){background:linear-gradient(color-mix(in srgb, var(--sg-row-hover-bg,#eef2ff) 55%, transparent), color-mix(in srgb, var(--sg-row-hover-bg,#eef2ff) 55%, transparent)), var(--sg-pinned-bg,color-mix(in oklab, var(--sg-header-bg,#f1f5f9) 92%, var(--sg-accent,#2563eb) 8%))}.sv-grid-column{position:relative}.sv-grid-cell[data-align=left],.sv-grid-column[data-align=left]{padding-left:var(--sg-cell-px,7px)}.sv-grid-cell[data-align=right]{text-align:right;padding-right:var(--sg-cell-px,7px)}.sv-grid-cell[data-align=center]{text-align:center}.sv-grid-column[data-align=right]{padding-right:var(--sg-cell-px,7px)}.sv-grid-column[data-align=right] .sv-grid-header-sort{justify-content:flex-end}.sv-grid-has-vscroll .sv-grid-table tr>:last-child.sv-grid-cell[data-align=right],.sv-grid-has-vscroll .sv-grid-table tr>:last-child.sv-grid-column[data-align=right]{padding-right:calc(var(--sg-cell-px,7px) + 16px)}.sv-grid-column[data-align=center] .sv-grid-header-sort{justify-content:center}.sv-grid-resize-handle{cursor:col-resize;-webkit-user-select:none;user-select:none;z-index:2;width:5px;height:100%;transition:background-color .1s;position:absolute;top:0;right:0}.sv-grid-resize-handle:after{content:\"\";background:var(--sg-fg,#0f172a);opacity:0;border-radius:1px;width:2px;margin:auto 2px;transition:background-color .1s,opacity .1s;position:absolute;inset:0}.sv-grid-column:hover .sv-grid-resize-handle:after{opacity:.3}.sv-grid-column:hover .sv-grid-resize-handle:hover:after,.sv-grid-resize-handle.is-resizing:after{background:var(--sg-accent,#2563eb);opacity:1}.sv-grid-row-resize-handle{transition:background-color .1s}.sv-grid-row-resize-handle:hover,.sv-grid-row-resize-handle.is-resizing{background:color-mix(in srgb, var(--sg-accent,#0b63f3) 30%, transparent)}.sv-grid-head{z-index:35;background:var(--sg-header-bg,#f5f7fb);position:sticky;top:0}.sv-grid-head .sv-grid-column{background:var(--sg-header-bg,#f5f7fb);color:var(--sg-header-label-color,var(--sg-header-fg,var(--sg-fg,#0f172a)));font-weight:var(--sg-header-weight,600);font-size:var(--sg-header-size,inherit);text-transform:var(--sg-header-transform,none);letter-spacing:var(--sg-header-tracking,normal)}.sv-grid-column[draggable=true]{cursor:grab}.sv-grid-column[draggable=true]:active{cursor:grabbing}.sv-grid-column.is-dragging{opacity:.55}.sv-grid-column.is-drag-target-before,.sv-grid-column.is-drag-target-after{position:relative}.sv-grid-column.is-drag-target-before:before,.sv-grid-column.is-drag-target-after:after{content:\"\";pointer-events:none;z-index:7;background:linear-gradient(#6366f1,#8b5cf6);border-radius:2px;width:3px;animation:.7s ease-in-out infinite alternate sg-drop-pulse;position:absolute;top:4px;bottom:4px;box-shadow:0 0 6px #6366f1}.sv-grid-column.is-drag-target-before:before{left:-2px}.sv-grid-column.is-drag-target-after:after{right:-2px}@keyframes sg-drop-pulse{0%{opacity:.55}to{opacity:1}}.sv-grid-row-draggable{cursor:grab}.sv-grid-row-draggable:active{cursor:grabbing}.sv-grid-row-draggable .sv-grid-row-number-cell{padding-left:14px;position:relative}.sv-grid-row-draggable .sv-grid-row-number-cell:before{content:\"⠇\";color:var(--sg-muted,#94a3b8);opacity:.4;pointer-events:none;font-size:13px;line-height:1;transition:opacity .12s;position:absolute;top:50%;left:3px;transform:translateY(-50%)}.sv-grid-row-draggable:hover .sv-grid-row-number-cell:before{opacity:1}.sv-grid-row-dropzone-over{outline:2px dashed var(--sg-accent,#6366f1);outline-offset:-2px;background:color-mix(in srgb, var(--sg-accent,#6366f1) 10%, transparent)}.sv-grid-row-drop-before>td{box-shadow:inset 0 2px 0 0 var(--sg-accent,#6366f1)}.sv-grid-row-drop-after>td{box-shadow:inset 0 -2px 0 0 var(--sg-accent,#6366f1)}.sv-grid-pinned-row td{z-index:4;background:var(--sg-pinned-bg,oklab(98.3416% .00101131 -.00809926));border-bottom:1px solid var(--sg-pinned-border,oklab(58.5404% .0252827 -.202483/.24));font-weight:600;position:sticky}.sv-grid-pinned-row-top td{top:var(--sg-thead-h,36px)}.sv-grid-pinned-row-bottom td{border-top:1px solid var(--sg-pinned-border,oklab(58.5404% .0252827 -.202483/.24));bottom:0}.sv-grid-pinned-row-top[data-pinned-index=\"1\"] td{top:calc(var(--sg-thead-h,36px) + var(--sg-pinned-row-h,32px))}.sv-grid-pinned-row-top[data-pinned-index=\"2\"] td{top:calc(var(--sg-thead-h,36px) + var(--sg-pinned-row-h,32px) * 2)}.sv-grid-pinned-row-top[data-pinned-index=\"3\"] td{top:calc(var(--sg-thead-h,36px) + var(--sg-pinned-row-h,32px) * 3)}.sv-grid-pinned-row-bottom[data-pinned-index=\"1\"] td{bottom:var(--sg-pinned-row-h,32px)}.sv-grid-pinned-row-bottom[data-pinned-index=\"2\"] td{bottom:calc(var(--sg-pinned-row-h,32px) * 2)}.sv-grid-pinned-row-bottom[data-pinned-index=\"3\"] td{bottom:calc(var(--sg-pinned-row-h,32px) * 3)}.sv-grid-pinned-row td[data-pinned]{z-index:5}.sv-grid-group-header-row{background:var(--sg-header-bg,#eef2f8)}.sv-grid-group-header-cell{box-sizing:border-box;border-bottom:1px solid var(--sg-border,#d8dee9);border-right:1px solid var(--sg-border,#e2e8f0);text-align:center;color:var(--sg-header-fg,#475569);text-transform:uppercase;letter-spacing:.04em;padding:4px 8px;font-size:11.5px;font-weight:700}.sv-grid-group-header-placeholder{background:0 0;border-right-color:#0000}.sv-grid-group-header-label{text-overflow:ellipsis;white-space:nowrap;max-width:100%;display:inline-block;overflow:hidden}.sv-grid-group-toggle{max-width:100%;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;background:0 0;border:0;border-radius:5px;align-items:center;gap:5px;padding:2px 6px;display:inline-flex}.sv-grid-group-toggle:hover{background:color-mix(in srgb, var(--sg-accent,#2563eb) 12%, transparent);color:var(--sg-accent,#2563eb)}.sv-grid-group-caret{flex-shrink:0;transition:transform .14s}.sv-grid-group-toggle.is-collapsed .sv-grid-group-caret{transform:rotate(-90deg)}.sv-grid-foot{z-index:6;background:var(--sg-header-bg,#f5f7fb);position:sticky;bottom:0}.sv-grid-container.sv-grid-narrow{-webkit-overflow-scrolling:touch;scroll-behavior:auto}.sv-grid-container{scrollbar-width:auto;-ms-overflow-style:auto;overscroll-behavior:contain;overflow-anchor:none;scroll-padding-top:var(--sg-thead-h,36px)}.sv-grid-container.sv-grid-container-custom-scrollbars{scrollbar-width:none;-ms-overflow-style:none}.sv-grid-container.sv-grid-container-custom-scrollbars::-webkit-scrollbar{display:none}.sv-grid-scrollbar{z-index:40;position:absolute}.sv-grid-scrollbar-vertical{top:0;width:16px;height:calc(100% - 16px);inset-inline-end:0}.sv-grid-scrollbar-corner{top:0;background:var(--sg-header-bg,#f5f7fb);z-index:41;pointer-events:none;border-bottom:1px solid #0f172a14;width:16px;position:absolute;inset-inline-end:0}.sv-grid-scrollbar-corner-br{inset-inline-end:0;background:var(--sg-header-bg,#eef2f8);z-index:42;pointer-events:none;width:16px;height:16px;position:absolute;bottom:0;box-shadow:inset 0 0 0 1px #0f172a0d}.sv-grid-scrollbar-horizontal{inset-inline-start:0;width:calc(100% - 16px);height:16px;bottom:0}.sv-grid-selection-column,.sv-grid-selection-cell{text-align:center;z-index:4;padding-inline:6px;position:sticky}.sv-grid-row-number-column,.sv-grid-row-number-cell{text-align:right;z-index:4;background:var(--sg-header-bg,#f5f7fb);color:var(--sg-muted,#64748b);font-variant-numeric:tabular-nums;padding-inline:8px;position:sticky;left:0}.sv-grid-row-number-head{color:inherit}.sv-grid-filter-row-control{flex-direction:row;align-items:center;gap:4px;display:flex}.sv-grid-filter-operator{box-sizing:border-box;flex:2 1 0;min-width:0}.sv-grid-filter-value{box-sizing:border-box;flex:3 1 0;min-width:0}.sv-grid-filter-value.sv-grid-filter-value-pulse{animation:.7s ease-out sv-grid-filter-pulse}@keyframes sv-grid-filter-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--sg-accent,#0b63f3) 55%, transparent)}70%{box-shadow:0 0 0 6px color-mix(in srgb, var(--sg-accent,#0b63f3) 0%, transparent)}to{box-shadow:0 0 0 0 color-mix(in srgb, var(--sg-accent,#0b63f3) 0%, transparent)}}.sv-grid-checkbox{border:1px solid var(--sg-input-border,#8794a8);background:var(--sg-input-bg,#fff);width:16px;height:16px;color:var(--sg-accent,#0b63f3);cursor:pointer;border-radius:4px;justify-content:center;align-items:center;margin:0 auto;transition:border-color .12s,background-color .12s;display:inline-flex;position:relative}.sv-grid-fr-editor{box-sizing:border-box;width:100%}select.sv-grid-fr-editor{height:100%;min-height:26px}.sv-grid-fr-checkbox{width:16px;height:16px;accent-color:var(--sg-accent,#3b82f6);cursor:pointer}.sv-grid-cell-editor-color{cursor:pointer;background:0 0;border:0;width:100%;height:100%;padding:2px}.sv-grid-cell-editor-color::-webkit-color-swatch-wrapper{padding:0}.sv-grid-cell-editor-color::-webkit-color-swatch{border:0;border-radius:4px}.sv-grid-cell-editor-color::-moz-color-swatch{border:0;border-radius:4px}.sv-grid-rating-editor{align-items:center;gap:1px;height:100%;display:inline-flex}.sv-grid-rating-star{cursor:pointer;color:var(--sg-rating-empty,#cbd5e1);background:0 0;border:0;padding:0 1px;font-size:18px;line-height:1;transition:color 80ms,transform 80ms}.sv-grid-rating-star-on{color:var(--sg-rating-on,#f59e0b)}.sv-grid-rating-star:hover{color:var(--sg-rating-hover,#fbbf24);transform:scale(1.12)}.sv-grid-rating-clear{color:var(--sg-muted,#94a3b8);cursor:pointer;background:0 0;border:0;margin-left:4px;font-size:14px}.sv-grid-rating-clear:hover{color:var(--sg-fg,#0f172a)}.sv-grid-checkbox[aria-checked=true],.sv-grid-checkbox[aria-checked=mixed]{border-color:var(--sg-accent,#2563eb);background:var(--sg-accent,#2563eb);color:var(--sg-on-accent,#fff)}.sv-grid-checkbox[aria-checked=true]:after{content:\"\";border-bottom:2px solid;border-right:2px solid;width:5px;height:9px;transform:rotate(40deg)translate(-1px,-1px)}.sv-grid-checkbox[aria-checked=mixed]:after{content:\"\";background:currentColor;border-radius:1px;width:8px;height:2px}.sv-grid-checkbox:focus-visible{outline:2px solid var(--sg-accent,#0b63f3);outline-offset:1px}.sv-grid-checkbox-readonly{cursor:default;pointer-events:none}@keyframes sv-grid-cell-flash-kf{0%{background-color:var(--sg-cell-flash,color-mix(in oklab, var(--sg-accent,#3b82f6) 42%, transparent))}to{background-color:#0000}}.sv-grid-cell-flash{animation:.7s ease-out sv-grid-cell-flash-kf}@media (prefers-reduced-motion:reduce){.sv-grid-cell-flash{animation:none}}.sv-grid-cell-active,.sv-grid-cell-editing{z-index:20;box-shadow:inset 0 0 0 2px var(--sg-accent,#0b63f3);outline:none;position:relative;overflow:visible}.sv-grid-cell-note-corner{background:linear-gradient(45deg, transparent 50%, var(--sg-note-corner,#f59e0b) 50%);cursor:help;z-index:6;width:12px;height:12px;position:absolute;top:0;right:0}.sv-grid-cell-note-corner:before{content:\"\";position:absolute;inset:-3px -3px 0 0}.sv-grid-fill-handle{background:var(--sg-accent,#0b63f3);border:1px solid var(--sg-bg,#fff);box-sizing:border-box;cursor:crosshair;z-index:15;touch-action:none;width:9px;height:9px;position:absolute;bottom:0;right:0}.sv-grid-fill-handle:hover{transform-origin:100% 100%;transform:scale(1.3)}.sv-grid-cell[data-fill-top=true],.sv-grid-cell[data-fill-bottom=true],.sv-grid-cell[data-fill-left=true],.sv-grid-cell[data-fill-right=true]{--sv-fill-top:none;--sv-fill-bottom:none;--sv-fill-left:none;--sv-fill-right:none;--sv-fill-color:var(--sg-fill-marquee,var(--sg-accent,#2563eb))}.sv-grid-cell[data-fill-top=true]{--sv-fill-top:repeating-linear-gradient(to right, var(--sv-fill-color) 0 3px, transparent 3px 6px)}.sv-grid-cell[data-fill-bottom=true]{--sv-fill-bottom:repeating-linear-gradient(to right, var(--sv-fill-color) 0 3px, transparent 3px 6px)}.sv-grid-cell[data-fill-left=true]{--sv-fill-left:repeating-linear-gradient(to bottom, var(--sv-fill-color) 0 3px, transparent 3px 6px)}.sv-grid-cell[data-fill-right=true]{--sv-fill-right:repeating-linear-gradient(to bottom, var(--sv-fill-color) 0 3px, transparent 3px 6px)}.sv-grid-table .sv-grid-cell[data-fill-top=true],.sv-grid-table .sv-grid-cell[data-fill-bottom=true],.sv-grid-table .sv-grid-cell[data-fill-left=true],.sv-grid-table .sv-grid-cell[data-fill-right=true]{background-image:var(--sv-fill-top), var(--sv-fill-bottom), var(--sv-fill-left), var(--sv-fill-right);background-position:0 0,0 100%,0 0,100% 0;background-repeat:no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%}.sv-grid-cell-editing{padding:0}.sv-grid-cell[data-selected-range=true]{background:var(--sg-selection-bg,#eef4ff);--sv-range-top:0 0 0 transparent;--sv-range-bottom:0 0 0 transparent;--sv-range-left:0 0 0 transparent;--sv-range-right:0 0 0 transparent;box-shadow:var(--sv-range-top), var(--sv-range-bottom), var(--sv-range-left), var(--sv-range-right)}.sv-grid-cell[data-range-top=true]{--sv-range-top:inset 0 2px 0 var(--sg-accent,#0b63f3)}.sv-grid-cell[data-range-bottom=true]{--sv-range-bottom:inset 0 -2px 0 var(--sg-accent,#0b63f3)}.sv-grid-cell[data-range-left=true]{--sv-range-left:inset 2px 0 0 var(--sg-accent,#0b63f3)}.sv-grid-cell[data-range-right=true]{--sv-range-right:inset -2px 0 0 var(--sg-accent,#0b63f3)}.sv-grid-cell[data-range-top=true],.sv-grid-cell[data-range-bottom=true],.sv-grid-cell[data-range-left=true],.sv-grid-cell[data-range-right=true],.sv-grid-cell.sv-merge-edge-right,.sv-grid-cell.sv-merge-edge-bottom{z-index:3;position:relative}.sv-grid-cell.sv-merge-edge-right{box-shadow:inset -2px 0 0 var(--sg-accent,#0b63f3)}.sv-grid-cell.sv-merge-edge-bottom{box-shadow:inset 0 -2px 0 var(--sg-accent,#0b63f3)}.sv-grid-cell.sv-merge-in-range{background:var(--sg-selection-bg,#eef4ff)}.sv-grid-cell-editor{background:var(--sg-input-bg,#fff);box-sizing:border-box;width:100%;height:100%;font:inherit;color:inherit;border:0;outline:none;padding:0 8px;position:absolute;inset:0}.sv-grid-column-filter,.sv-grid-filter-value,.sv-grid-global-filter input,.sv-grid-menu-search,.sv-grid-menu-condition-value{background:var(--sg-input-bg,#fff);color:var(--sg-fg,#0f172a);border:1px solid var(--sg-input-border,#cbd5e1);box-sizing:border-box;font:inherit;border-radius:5px;padding:0 8px}.sv-grid-column-filter{width:100%;height:28px;font-size:.8125rem}.sv-grid-column-filter::placeholder,.sv-grid-filter-value::placeholder,.sv-grid-menu-search::placeholder,.sv-grid-global-filter input::placeholder,.sv-grid-cell-editor::placeholder{color:var(--sg-muted,#64748b);opacity:.7}.sv-grid-global-filter input:focus,.sv-grid-filter-value:focus,.sv-grid-column-filter:focus,.sv-grid-menu-search:focus,.sv-grid-menu-condition-value:focus,.sv-grid-menu-operator:focus,.sv-grid-cell-editor:focus{border-color:var(--sg-accent,#2563eb);box-shadow:0 0 0 2px color-mix(in srgb, var(--sg-accent,#2563eb) 30%, transparent);outline:none}.sv-grid-cell-editor-number,.sv-grid-cell-editor-date,.sv-grid-cell-editor-datetime{width:100%;height:100%}.sv-grid-cell-editor-list{appearance:auto;width:100%;height:100%;font:inherit;color:inherit;background:var(--sg-input-bg,#fff);box-sizing:border-box;border:0;padding:0 6px}.sv-grid-cell-editor-list[multiple]{z-index:5;border:1px solid var(--sg-accent,#0b63f3);background:var(--sg-input-bg,#fff);height:auto;min-height:100%;max-height:220px;padding:4px;position:absolute;top:0;left:0;right:0;box-shadow:0 8px 24px #0f172a2e}.sv-grid-cell-editor-chips{background:var(--sg-header-bg,var(--sg-bg,#fff));min-height:calc(100% + 2px);color:var(--sg-fg,#0f172a);box-sizing:border-box;z-index:1000;border:1px solid var(--sg-accent,#2563eb);border-radius:var(--sg-radius,6px);align-items:flex-start;padding:4px 6px;display:flex;position:absolute;top:-1px;left:-1px;right:-1px;overflow:visible;box-shadow:0 12px 28px #00000073}.sv-grid-cell-editing:has(.sv-grid-cell-editor-chips){outline:none}.sv-grid-chips-row{flex-wrap:wrap;align-items:center;gap:4px;width:100%;display:flex}.sv-grid-chip-input{min-width:60px;font:inherit;color:inherit;background:0 0;border:0;outline:none;flex:80px;padding:2px 4px}.sv-grid-chip-picker{min-width:80px;font:inherit;color:inherit;background:var(--sg-bg,#fff);border:1px solid #0f172a26;border-radius:4px;flex:100px;padding:2px 4px}.sv-grid-chip-commit{text-transform:uppercase;letter-spacing:.04em;color:#fff;background:var(--sg-accent,#0b63f3);cursor:pointer;border:0;border-radius:4px;padding:3px 8px;font-size:11px}.sv-grid-chip-commit:hover{filter:brightness(1.1)}.sv-grid-chips-display{vertical-align:middle;flex-wrap:nowrap;align-items:center;gap:4px;max-width:100%;display:inline-flex}.sv-grid-sparkline{vertical-align:middle;display:inline-block;overflow:visible}.sv-grid-cf-bg{z-index:0;pointer-events:none;position:absolute;inset:0}.sv-grid-cf-bar{z-index:0;opacity:.85;pointer-events:none;border-radius:0 2px 2px 0;position:absolute;top:0;bottom:0;left:0}.sv-grid-cell-cf{position:relative}.sv-grid-cell-invalid{box-shadow:inset 0 0 0 1px var(--sg-invalid-border,#ef444473);color:var(--sg-invalid-fg,#b91c1c);background-color:var(--sg-invalid-bg,#ef444424)!important}.sv-grid-cell-invalid.sv-grid-cell-active{box-shadow:inset 0 0 0 2px var(--sg-invalid-border,#ef4444b3)}.sv-grid-status-bar{color:var(--sg-fg);background:var(--sg-header-bg,#f1f5f9);border:1px solid var(--sg-border,#e2e8f0);border-top:0;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:18px;padding:6px 14px;font-size:12px;display:flex}.sv-grid-status-item{font-variant-numeric:tabular-nums;font-weight:600}.sv-grid-status-label{color:var(--sg-muted,#64748b);margin-right:5px;font-weight:400}.sv-grid-cf-content{z-index:1;position:relative}.sv-grid-cf-icon{margin-right:5px;font-size:.95em}.sv-grid-chip{background:color-mix(in srgb, var(--sg-accent,#2563eb) 18%, transparent);color:var(--sg-fg,inherit);border:1px solid color-mix(in srgb, var(--sg-accent,#2563eb) 35%, transparent);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:.85em;line-height:1.4;display:inline-flex}.sv-grid-chip-removable{padding-right:2px}.sv-grid-chip-remove{background:color-mix(in srgb, var(--sg-fg,#0f172a) 18%, transparent);width:16px;height:16px;color:inherit;cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;padding:0;font-size:12px;line-height:1;display:inline-flex}.sv-grid-chip-remove:hover{color:#fff;background:#dc2626b3}.sv-grid-icon{flex:none;width:1em;height:1em;display:block}.sv-grid-header-cell{width:100%;min-width:0;min-height:var(--sg-header-min-height,auto);align-items:center;gap:2px;display:flex}.sv-grid-header-sort{min-width:0;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:auto;align-items:center;gap:4px;padding:2px;display:flex}.sv-grid-header-custom{text-align:left;cursor:pointer;outline:none;flex:auto;align-items:center;gap:4px;min-width:0;padding:2px;display:flex}.sv-grid-header-label{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;overflow:hidden}.sv-grid-header-icon{color:var(--sg-muted,#5b6b85);flex:none;font-size:13px;display:inline-flex}.sv-grid-header-icon-hint{opacity:0;transition:opacity .12s}.sv-grid-column:hover .sv-grid-header-icon-hint{opacity:.4}.sv-grid-header-icon-flag{color:var(--sg-accent,#0b63f3)}.sv-grid-col-menu-btn{width:0;height:22px;color:var(--sg-muted,#5b6b85);cursor:pointer;opacity:0;pointer-events:none;background:0 0;border:0;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;font-size:15px;transition:width .14s,opacity .14s,background-color .12s;display:inline-flex;overflow:hidden}.sv-grid-column:hover .sv-grid-col-menu-btn,.sv-grid-col-menu-btn.is-open,.sv-grid-col-menu-btn:focus-visible,.sv-grid-col-filter-btn.is-active{opacity:1;pointer-events:auto;width:22px}.sv-grid-col-menu-btn:hover,.sv-grid-col-menu-btn.is-open{background:var(--sg-row-hover-bg,#e2e8f3)}.sv-grid-filter-operator-btn{border:1px solid var(--sg-input-border,#cbd5e1);background:var(--sg-input-bg,#fff);height:24px;color:var(--sg-fg,#334155);cursor:pointer;border-radius:4px;flex:none;align-items:center;gap:2px;padding:0 4px;font-size:13px;display:inline-flex}.sv-grid-filter-operator-btn.is-open{border-color:var(--sg-accent,#0b63f3)}.sv-grid-caret{color:var(--sg-muted,#94a3b8);font-size:9px;display:inline-flex}.sv-grid-menu-backdrop{z-index:900;background:0 0;position:fixed;inset:0}.sv-grid-menu{z-index:901;background:var(--sg-bg,#fff);border:1px solid var(--sg-border,#d6dee9);max-height:calc(100vh - 24px);color:var(--sg-fg,#1f2937);border-radius:8px;padding:4px;font-size:13px;position:fixed;overflow:auto;box-shadow:0 12px 28px #0f172a2e}.sv-grid-column-menu{width:260px}.sv-grid-menu-tabs{border-bottom:1px solid var(--sg-border,#e2e8f0);gap:2px;margin:-2px -2px 4px;padding:2px 2px 0;display:flex}.sv-grid-menu-tab{color:var(--sg-muted,#64748b);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;flex:1;padding:6px;font-size:12px;font-weight:600}.sv-grid-menu-tab:hover{color:var(--sg-fg,#0f172a)}.sv-grid-menu-tab.is-active{color:var(--sg-accent,#2563eb);border-bottom-color:var(--sg-accent,#2563eb)}.sv-grid-operator-menu{width:184px}.sv-grid-context-menu{min-width:180px}.sv-grid-comment-editor{width:240px;padding:8px}.sv-grid-comment-textarea{resize:vertical;border:1px solid var(--sg-input-border,#cbd5e1);background:var(--sg-input-bg,#fff);width:100%;min-height:60px;color:var(--sg-fg,#0f172a);font:inherit;border-radius:4px;outline:none;padding:6px 8px;font-size:13px}.sv-grid-comment-textarea:focus{border-color:var(--sg-accent,#6366f1)}.sv-grid-comment-actions{align-items:center;gap:6px;margin-top:8px;display:flex}.sv-grid-comment-spacer{flex:auto}.sv-grid-comment-actions button{border:1px solid var(--sg-border,#cbd5e1);background:var(--sg-bg,#fff);color:var(--sg-fg,#1f2937);font:inherit;cursor:pointer;border-radius:4px;padding:4px 10px;font-size:12px}.sv-grid-comment-save{border-color:var(--sg-accent,#6366f1)!important;background:var(--sg-accent,#6366f1)!important;color:#fff!important}.sv-grid-comment-remove{color:var(--sg-danger,#dc2626)!important}.sv-grid-menu-item{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:5px;align-items:center;gap:8px;padding:7px 10px;display:flex}.sv-grid-menu-item:hover{background:var(--sg-row-hover-bg,#eef2f8)}.sv-grid-menu-item[aria-checked=true]{background:var(--sg-selection-bg,#eaf2ff);color:var(--sg-accent,#0b63f3)}.sv-grid-menu-sep{background:var(--sg-border,#e6ebf2);height:1px;margin:4px 6px}.sv-grid-menu-filter{padding:4px 6px 6px}.sv-grid-menu-filter-head{color:var(--sg-muted,#475569);align-items:center;gap:6px;padding:2px 0 6px;font-weight:600;display:flex}.sv-grid-menu-search{box-sizing:border-box;border:1px solid var(--sg-input-border,#cbd5e1);width:100%;height:28px;font:inherit;border-radius:5px;margin-bottom:6px;padding:0 8px}.sv-grid-menu-filter-row{gap:4px;margin-bottom:6px;display:flex}.sv-grid-menu-operator-group{gap:2px;margin-bottom:6px;display:flex}.sv-grid-menu-operator-btn{border:1px solid var(--sg-input-border,#cbd5e1);background:var(--sg-input-bg,#fff);height:28px;color:var(--sg-fg,#475569);cursor:pointer;border-radius:4px;flex:1 1 0;justify-content:center;align-items:center;padding:0;transition:background-color .1s,color .1s,border-color .1s;display:inline-flex}.sv-grid-menu-operator-btn:hover{background:var(--sg-row-hover-bg,#eef2f8)}.sv-grid-menu-operator-btn.is-active{background:var(--sg-accent,#0b63f3);border-color:var(--sg-accent,#0b63f3);color:#fff}.sv-grid-menu-condition-value{box-sizing:border-box;border:1px solid var(--sg-input-border,#cbd5e1);min-width:0;height:28px;font:inherit;border-radius:5px;flex:1 1 0;padding:0 8px}.sv-grid-menu-add-cond{color:var(--sg-accent,#3b82f6);border:1px dashed var(--sg-border,#cbd5e1);cursor:pointer;background:0 0;border-radius:5px;align-self:flex-start;margin-top:2px;padding:3px 8px;font-size:11.5px;font-weight:600}.sv-grid-menu-add-cond:hover{background:color-mix(in oklab, var(--sg-accent,#3b82f6) 8%, transparent);border-style:solid}.sv-grid-menu-join{align-items:center;gap:2px;margin:2px 0;display:inline-flex}.sv-grid-menu-join button{color:var(--sg-muted,#64748b);border:1px solid var(--sg-border,#cbd5e1);cursor:pointer;background:0 0;padding:2px 10px;font-size:11px;font-weight:700}.sv-grid-menu-join button:first-child{border-radius:5px 0 0 5px}.sv-grid-menu-join button:nth-child(2){border-left:0;border-radius:0}.sv-grid-menu-join button.is-on{background:var(--sg-accent,#3b82f6);color:#fff;border-color:var(--sg-accent,#3b82f6)}.sv-grid-menu-join-x{margin-left:auto;font-size:14px;line-height:1;border-radius:5px!important;padding:2px 7px!important}.sv-grid-facet-list{border:1px solid var(--sg-border,#eaeef4);border-radius:5px;max-height:200px;overflow:auto}.sv-grid-facet{cursor:pointer;align-items:center;gap:8px;padding:4px 8px;display:flex}.sv-grid-facet:hover{background:var(--sg-row-hover-bg,#f4f6fa)}.sv-grid-facet-all{border-bottom:1px solid var(--sg-border,#eaeef4);font-weight:600}.sv-grid-facet input{flex:none}.sv-grid-facet-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sv-grid-facet-empty,.sv-grid-facet-note{color:var(--sg-muted,#94a3b8);padding:6px 8px;font-size:12px}.sv-grid-menu-actions{justify-content:flex-end;gap:6px;padding-top:8px;display:flex}.sv-grid-menu-btn{border:1px solid var(--sg-input-border,#cbd5e1);background:var(--sg-input-bg,#fff);color:var(--sg-fg,#334155);font:inherit;cursor:pointer;border-radius:5px;padding:5px 10px}.sv-grid-menu-btn-primary{background:var(--sg-accent,#0b63f3);border-color:var(--sg-accent,#0b63f3);color:#fff}.sv-grid-menu-item:disabled,.sv-grid-menu-btn:disabled{opacity:.4;cursor:default}.sv-grid-menu-item:disabled:hover{background:0 0}.sv-grid-group-row>.sv-grid-cell{background:var(--sg-header-bg,#eef2f8);cursor:pointer;font-weight:600}.sv-grid-row-selected>.sv-grid-cell{background:var(--sg-selection-bg,#eaf2ff)}.sv-grid-group-cell{padding:0 12px}.sv-grid-group-content{align-items:center;gap:6px;display:inline-flex}.sv-grid-group-toggle{color:var(--sg-fg,#334155);cursor:pointer;background:0 0;border:0;padding:0 4px 0 0;font-size:11px;line-height:1}.sv-grid-group-count{color:var(--sg-muted,#64748b);margin-left:6px;font-size:12px;font-weight:400}.sv-grid-group-agg{color:var(--sg-fg);white-space:nowrap;margin-left:10px;font-size:12px;font-weight:600}.sv-grid-group-agg-label{color:var(--sg-muted,#64748b);margin-right:4px;font-weight:400}.sv-grid-group-agg-label:after{content:\":\"}.sv-grid-group-child-indent{width:18px;display:inline-block}.sv-grid-tooltip{z-index:10000;color:#f1f5f9;border-radius:var(--sg-radius,6px);pointer-events:none;white-space:pre-wrap;word-wrap:break-word;background:#0f172a;max-width:280px;padding:8px 10px;font-size:12px;line-height:1.45;position:fixed;box-shadow:0 8px 24px #0f172a47}[data-theme=dark] .sv-grid-tooltip{color:#0f172a;background:#f1f5f9}.sv-grid-cell-editor-textarea{border:1px solid var(--sg-accent,#6366f1);background:var(--sg-bg,#fff);width:100%;min-height:80px;color:var(--sg-fg,#0f172a);resize:vertical;box-shadow:var(--sg-focus-ring,0 0 0 2px #6366f166);border-radius:4px;outline:none;padding:6px 8px;font-family:inherit;font-size:13px;line-height:1.4}.sv-grid-autocomplete{width:100%;position:relative}.sv-grid-autocomplete-list{z-index:30;background:var(--sg-bg,#fff);border:1px solid var(--sg-border,#d6dee9);border-radius:var(--sg-radius,6px);max-height:220px;margin-top:2px;padding:4px;position:absolute;top:100%;left:0;right:0;overflow:auto;box-shadow:0 12px 28px #0f172a2e}.sv-grid-autocomplete-option{text-align:left;width:100%;color:var(--sg-fg,#1f2937);font:inherit;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:0;border-radius:4px;padding:5px 8px;font-size:13px;display:block;overflow:hidden}.sv-grid-autocomplete-option:hover,.sv-grid-autocomplete-option[aria-selected=true]{background:var(--sg-row-hover-bg,#6366f11a)}.sv-grid-find{z-index:60;background:var(--sg-bg,#fff);color:var(--sg-fg,#0f172a);border:1px solid var(--sg-border,#cbd5e1);border-radius:8px;align-items:center;gap:4px;min-width:280px;padding:6px 8px;display:inline-flex;position:absolute;top:8px;right:8px;box-shadow:0 10px 25px #0f172a2e}.sv-grid-find-icon{width:14px;height:14px;color:var(--sg-muted,#94a3b8);flex:none;margin-left:2px}.sv-grid-find-input{min-width:0;color:inherit;background:0 0;border:0;outline:none;flex:1;padding:2px 6px;font-size:13px}.sv-grid-find-input::placeholder{color:var(--sg-muted,#94a3b8)}.sv-grid-find-count{color:var(--sg-muted,#64748b);font-variant-numeric:tabular-nums;white-space:nowrap;padding:0 4px;font-size:11px}.sv-grid-find-step,.sv-grid-find-close{width:22px;height:22px;color:var(--sg-muted,#64748b);cursor:pointer;background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;font-size:12px;display:inline-flex}.sv-grid-find-step:hover:not(:disabled),.sv-grid-find-close:hover{background:var(--sg-row-hover-bg,#94a3b81f);color:var(--sg-fg,#0f172a)}.sv-grid-find-step:disabled{opacity:.3;cursor:default}.sv-grid-pagination{border:1px solid var(--sg-border,#e2e8f0);border-radius:0 0 var(--sg-radius,6px) var(--sg-radius,6px);background:var(--sg-header-bg,#f1f5f9);color:var(--sg-fg,#0f172a);border-top:0;justify-content:flex-end;align-items:center;gap:24px;margin-top:0;padding:12px 16px;font-size:13px;display:flex}.sv-grid-pagination-top{border-top:1px solid var(--sg-border,#e2e8f0);border-radius:var(--sg-radius,6px) var(--sg-radius,6px) 0 0;border-bottom:0}.sv-grid-pagination-pagesize{color:var(--sg-muted,#64748b);align-items:center;gap:8px;display:inline-flex}.sv-grid-pagination-pagesize-dd{border:1px solid var(--sg-input-border,#cbd5e1);background:var(--sg-input-bg,#fff);border-radius:5px;min-width:62px;height:28px;position:relative}.sv-grid-pagination-pagesize-dd .sv-grid-dropdown,.sv-grid-pagination-pagesize-dd .sv-grid-dropdown-trigger{color:var(--sg-fg,#0f172a);background:0 0;border-radius:5px;font-size:13px}.sv-grid-pagination-pagesize-dd:focus-within{border-color:var(--sg-accent,#2563eb);box-shadow:0 0 0 2px color-mix(in srgb, var(--sg-accent,#2563eb) 30%, transparent)}.sv-grid-pagination-range{color:var(--sg-fg,#0f172a)}.sv-grid-pagination-nav{align-items:center;gap:4px;display:inline-flex}.sv-grid-pagination-btn{width:28px;height:28px;color:var(--sg-fg,#0f172a);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:5px;justify-content:center;align-items:center;padding:0;font-size:16px;transition:background-color .1s,color .1s;display:inline-flex}.sv-grid-pagination-btn:hover:not(:disabled){background:var(--sg-input-bg,#fff);color:var(--sg-accent,#2563eb)}.sv-grid-pagination-btn:disabled{color:var(--sg-muted,#64748b);opacity:.4;cursor:default}.sv-grid-pagination-label{color:var(--sg-fg,#0f172a);margin:0 8px}.sv-grid-no-scroll .sv-grid-scrollbar-corner,.sv-grid-no-scroll .sv-grid-scrollbar{display:none}.sv-grid-scrollbar-corner,.sv-grid-scrollbar-corner-br{border-bottom-color:var(--sg-border,#e2e8f0)}.sv-grid-menu-operator-select{border:1px solid var(--sg-input-border,#cbd5e1);background:var(--sg-input-bg,#fff);width:100%;height:28px;color:var(--sg-fg,#0f172a);font:inherit;cursor:pointer;appearance:none;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 12px) 12px,calc(100% - 8px) 12px;background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-radius:5px;margin-bottom:6px;padding:0 22px 0 8px;font-size:13px}.sv-grid-menu-operator-select:focus{border-color:var(--sg-accent,#2563eb);box-shadow:0 0 0 2px color-mix(in srgb, var(--sg-accent,#2563eb) 40%, transparent);outline:none}.sv-grid-menu-operator-btn.is-active{color:var(--sg-on-accent,#fff)}.sv-grid-filter-menu{width:260px}.sv-grid-choose-columns-menu{width:240px}.sv-grid-choose-columns-menu .sv-grid-facet-list{max-height:280px}.sv-grid-facet input[type=checkbox]{accent-color:var(--sg-accent,#2563eb);cursor:pointer;width:14px;height:14px}.sv-grid-menu-item-chevron{opacity:.55;margin-left:auto;transform:rotate(-90deg)}.sv-grid-menu-item.is-open .sv-grid-menu-item-chevron{opacity:1}.sv-grid-menu-search{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='6'/%3E%3Cpath d='M20 20l-4.5-4.5'/%3E%3C/svg%3E\");background-position:8px;background-repeat:no-repeat;background-size:14px 14px;padding-left:28px}.sv-grid-menu-filter>*+*{margin-top:6px}.sv-grid-col-filter-btn.is-active{color:var(--sg-accent,#2563eb)}.sv-grid-row-number-column,.sv-grid-row-number-cell{border-right-color:var(--sg-header-bg,#f1f5f9)}.sv-grid-group-row>.sv-grid-cell{color:var(--sg-header-fg,#0f172a)}.sv-grid-filter-operator-btn{opacity:.85}.sv-grid-filter-operator-btn:hover{opacity:1;border-color:var(--sg-accent,#2563eb)}.sv-grid-filter-operator-btn.is-open{opacity:1}.sv-grid-board-search{border:1px solid var(--sg-border,#e4e7ec);border-radius:var(--sg-radius,8px);background:var(--sg-bg,#fff);color:color-mix(in srgb, var(--sg-fg,#101828) 55%, transparent);align-items:center;gap:6px;max-width:280px;margin-bottom:8px;padding:5px 9px;display:flex}.sv-grid-board-search:focus-within{border-color:var(--sg-accent,#3b82f6)}.sv-grid-board-search input{font:inherit;color:var(--sg-fg,#101828);background:0 0;border:0;outline:none;flex:auto;font-size:.82rem}\n/*$vite$:1*/";document.head.appendChild(s)}catch(e){}})();
24767
+ ;(function(){try{if(typeof document==='undefined')return;var s=document.createElement('style');s.setAttribute('data-svgrid','');s.textContent=".sv-grid-root{font-family:var(--sg-font,inherit);position:relative}.sv-grid-sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.sv-grid-loading-overlay{z-index:18;pointer-events:auto;background:color-mix(in srgb, var(--sg-bg,#fff) 35%, transparent);position:absolute;inset:0}.sv-grid-loading-bar{background:color-mix(in srgb, var(--sg-accent,#2563eb) 18%, transparent);height:3px;position:absolute;top:0;left:0;right:0;overflow:hidden}.sv-grid-loading-bar:before{content:\"\";background:var(--sg-accent,#2563eb);width:40%;animation:1.1s ease-in-out infinite sv-grid-loading-slide;position:absolute;inset:0}@keyframes sv-grid-loading-slide{0%{transform:translate(-100%)}to{transform:translate(350%)}}.sv-grid-skeleton{top:var(--sg-thead-h,40px);padding:0;position:absolute;left:0;right:0;overflow:hidden}.sv-grid-skeleton-row{height:var(--sg-pinned-row-h,36px);border-bottom:1px solid var(--sg-border,#e2e8f0);align-items:center;display:flex}.sv-grid-skeleton-cell{box-sizing:border-box;flex-shrink:0;padding:0 12px}.sv-grid-skeleton-bar{background:linear-gradient(90deg, color-mix(in srgb, var(--sg-muted,#94a3b8) 18%, transparent) 25%, color-mix(in srgb, var(--sg-muted,#94a3b8) 32%, transparent) 50%, color-mix(in srgb, var(--sg-muted,#94a3b8) 18%, transparent) 75%);background-size:200% 100%;border-radius:4px;width:70%;height:10px;animation:1.3s linear infinite sv-grid-shimmer;display:block}@keyframes sv-grid-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.sv-grid-toolbar{align-items:center;gap:8px;padding:6px 2px;display:flex}.sv-grid-toolbar-btn{border:1px solid var(--sg-border,#e2e8f0);border-radius:var(--sg-radius,6px);background:var(--sg-bg,#fff);color:var(--sg-fg,#0f172a);cursor:pointer;align-items:center;gap:6px;padding:6px 12px;font-size:12.5px;font-weight:600;transition:background-color .12s,color .12s,border-color .12s;display:inline-flex}.sv-grid-toolbar-btn:hover{border-color:var(--sg-accent,#2563eb);color:var(--sg-accent,#2563eb)}.sv-grid-toolbar-btn.is-active{background:var(--sg-accent,#2563eb);border-color:var(--sg-accent,#2563eb);color:#fff}.sv-grid-tool-panel{z-index:901;background:var(--sg-bg,#fff);border-left:1px solid var(--sg-border,#e2e8f0);flex-direction:column;width:250px;display:flex;position:absolute;top:0;bottom:0;right:0;box-shadow:-8px 0 24px #0000001f}.sv-grid-tool-panel-head{text-transform:uppercase;letter-spacing:.05em;color:var(--sg-muted,#64748b);border-bottom:1px solid var(--sg-border,#e2e8f0);justify-content:space-between;align-items:center;padding:8px 12px;font-size:12px;font-weight:700;display:flex}.sv-grid-tool-panel-close{color:var(--sg-muted,#64748b);cursor:pointer;background:0 0;border:0;font-size:14px}.sv-grid-tool-panel-list{flex:1;margin:0;padding:6px;list-style:none;overflow-y:auto}.sv-grid-tool-panel-item{border-radius:5px;justify-content:space-between;align-items:center;gap:6px;padding:3px 6px;display:flex}.sv-grid-tool-panel-item:hover{background:var(--sg-row-hover-bg,#94a3b81a)}.sv-grid-tool-panel-vis{min-width:0;color:var(--sg-fg,#0f172a);cursor:pointer;flex:1;align-items:center;gap:8px;font-size:13px;display:flex}.sv-grid-tool-panel-vis input{accent-color:var(--sg-accent,#2563eb)}.sv-grid-tool-panel-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sv-grid-tool-panel-actions{flex-shrink:0;gap:2px;display:inline-flex}.sv-grid-tool-panel-btn{width:22px;height:22px;color:var(--sg-muted,#64748b);cursor:pointer;background:0 0;border:0;border-radius:4px;font-size:13px}.sv-grid-tool-panel-btn:hover:not(:disabled){background:var(--sg-row-hover-bg,#94a3b82e);color:var(--sg-fg,#0f172a)}.sv-grid-tool-panel-btn.is-active{color:var(--sg-accent,#2563eb)}.sv-grid-tool-panel-btn:disabled{opacity:.35;cursor:default}.sv-grid-tool-panel-tabs{border-bottom:1px solid var(--sg-border,#e2e8f0);gap:2px;padding:6px 6px 0;display:flex}.sv-grid-tool-panel-tab{color:var(--sg-muted,#64748b);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;flex:1;padding:6px 8px;font-size:12px;font-weight:600}.sv-grid-tool-panel-tab:hover{color:var(--sg-fg,#0f172a)}.sv-grid-tool-panel-tab.is-active{color:var(--sg-accent,#2563eb);border-bottom-color:var(--sg-accent,#2563eb)}.sv-grid-tool-panel-filters{flex-direction:column;flex:1;gap:8px;padding:6px;display:flex;overflow-y:auto}.sv-grid-tp-filter{border:1px solid var(--sg-border,#e2e8f0);border-radius:6px;flex-direction:column;gap:4px;padding:6px;display:flex}.sv-grid-tp-filter.is-filtered{border-color:var(--sg-accent,#2563eb)}.sv-grid-tp-filter-head{justify-content:space-between;align-items:center;display:flex}.sv-grid-tp-filter-name{color:var(--sg-fg,#0f172a);font-size:12px;font-weight:600}.sv-grid-tp-filter-clear{color:var(--sg-muted,#64748b);cursor:pointer;background:0 0;border:0;padding:0 2px;font-size:11px}.sv-grid-tp-filter-clear:hover{color:var(--sg-accent,#2563eb)}.sv-grid-tp-filter-op,.sv-grid-tp-filter-input{box-sizing:border-box;border:1px solid var(--sg-border,#e2e8f0);background:var(--sg-bg,#fff);width:100%;color:var(--sg-fg,#0f172a);border-radius:5px;padding:4px 6px;font-size:12px}.sv-grid-root-fill{flex-direction:column;height:100%;min-height:0;display:flex}.sv-grid-root-fill>.sv-grid-shell{flex:1 1 0;min-height:0;height:auto!important}.sv-grid-shell{border-bottom:1px solid var(--sg-border,#cbd5e1);position:relative}.sv-grid-table{table-layout:fixed;border-collapse:separate;border-spacing:0}.sv-grid-table:focus{outline:none}.sv-grid-column,.sv-grid-cell{box-sizing:border-box;text-overflow:ellipsis;white-space:nowrap;background:var(--sg-bg,#fff);color:var(--sg-fg,#0f172a);-webkit-user-select:none;user-select:none;border-right:1px solid var(--sg-border,#e2e8f0);border-bottom:1px solid var(--sg-border,#e2e8f0);overflow:hidden}.sv-grid-table tr>:last-child.sv-grid-column,.sv-grid-table tr>:last-child.sv-grid-cell{border-right:0}.sv-grid-table:not(.sv-grid-no-row-hover) tbody tr:hover>.sv-grid-cell:not([data-selected-range=true]){background-color:var(--sg-row-hover-bg,#eef2ff)}.sv-grid-cell-active,.sv-grid-cell-has-fill-handle{position:relative}.sv-grid-cell-has-fill-handle{overflow:visible}.sv-grid-detail-row{height:auto!important}.sv-grid-detail-cell{text-overflow:clip;white-space:normal;background:var(--sg-bg,#fff);-webkit-user-select:text;user-select:text;height:auto;padding:0;overflow:visible}.sv-grid-cell[data-pinned=left],.sv-grid-column[data-pinned=left]{background:var(--sg-pinned-bg,color-mix(in oklab, var(--sg-header-bg,#f1f5f9) 92%, var(--sg-accent,#2563eb) 8%));box-shadow:inset -1px 0 0 var(--sg-pinned-divider,var(--sg-border,#cbd5e1)), 8px 0 12px -6px #0f172a38}.sv-grid-cell[data-pinned=right],.sv-grid-column[data-pinned=right]{background:var(--sg-pinned-bg,color-mix(in oklab, var(--sg-header-bg,#f1f5f9) 92%, var(--sg-accent,#2563eb) 8%));box-shadow:inset 1px 0 0 var(--sg-pinned-divider,var(--sg-border,#cbd5e1)), -8px 0 12px -6px #0f172a38}.sv-grid-head .sv-grid-column[data-pinned=left],.sv-grid-head .sv-grid-column[data-pinned=right]{background:var(--sg-pinned-header-bg,color-mix(in oklab, var(--sg-header-bg,#f1f5f9) 86%, var(--sg-accent,#2563eb) 14%));font-weight:600}.sv-grid-row-alt>.sv-grid-cell{background:var(--sg-row-alt-bg,#f8fafc)}.sv-grid-row-alt>.sv-grid-cell[data-pinned]{background:var(--sg-pinned-bg,color-mix(in oklab, var(--sg-header-bg,#f1f5f9) 92%, var(--sg-accent,#2563eb) 8%))}.sv-grid-row-selected>.sv-grid-cell[data-pinned]{background:linear-gradient(color-mix(in srgb, var(--sg-selection-bg,#dbeafe) 65%, transparent), color-mix(in srgb, var(--sg-selection-bg,#dbeafe) 65%, transparent)), var(--sg-pinned-bg,color-mix(in oklab, var(--sg-header-bg,#f1f5f9) 92%, var(--sg-accent,#2563eb) 8%))}.sv-grid-table:not(.sv-grid-no-row-hover) .sv-grid-row:hover>.sv-grid-cell[data-pinned]:not([data-selected-range=true]){background:linear-gradient(color-mix(in srgb, var(--sg-row-hover-bg,#eef2ff) 55%, transparent), color-mix(in srgb, var(--sg-row-hover-bg,#eef2ff) 55%, transparent)), var(--sg-pinned-bg,color-mix(in oklab, var(--sg-header-bg,#f1f5f9) 92%, var(--sg-accent,#2563eb) 8%))}.sv-grid-column{position:relative}.sv-grid-cell[data-align=left],.sv-grid-column[data-align=left]{padding-left:var(--sg-cell-px,7px)}.sv-grid-cell[data-align=right]{text-align:right;padding-right:var(--sg-cell-px,7px)}.sv-grid-cell[data-align=center]{text-align:center}.sv-grid-column[data-align=right]{padding-right:var(--sg-cell-px,7px)}.sv-grid-column[data-align=right] .sv-grid-header-sort{justify-content:flex-end}.sv-grid-has-vscroll .sv-grid-table tr>:last-child.sv-grid-cell[data-align=right],.sv-grid-has-vscroll .sv-grid-table tr>:last-child.sv-grid-column[data-align=right]{padding-right:calc(var(--sg-cell-px,7px) + 16px)}.sv-grid-column[data-align=center] .sv-grid-header-sort{justify-content:center}.sv-grid-resize-handle{cursor:col-resize;-webkit-user-select:none;user-select:none;z-index:2;width:5px;height:100%;transition:background-color .1s;position:absolute;top:0;right:0}.sv-grid-resize-handle:after{content:\"\";background:var(--sg-fg,#0f172a);opacity:0;border-radius:1px;width:2px;margin:auto 2px;transition:background-color .1s,opacity .1s;position:absolute;inset:0}.sv-grid-column:hover .sv-grid-resize-handle:after{opacity:.3}.sv-grid-column:hover .sv-grid-resize-handle:hover:after,.sv-grid-resize-handle.is-resizing:after{background:var(--sg-accent,#2563eb);opacity:1}.sv-grid-row-resize-handle{transition:background-color .1s}.sv-grid-row-resize-handle:hover,.sv-grid-row-resize-handle.is-resizing{background:color-mix(in srgb, var(--sg-accent,#0b63f3) 30%, transparent)}.sv-grid-head{z-index:35;background:var(--sg-header-bg,#f5f7fb);position:sticky;top:0}.sv-grid-head .sv-grid-column{background:var(--sg-header-bg,#f5f7fb);color:var(--sg-header-label-color,var(--sg-header-fg,var(--sg-fg,#0f172a)));font-weight:var(--sg-header-weight,600);font-size:var(--sg-header-size,inherit);text-transform:var(--sg-header-transform,none);letter-spacing:var(--sg-header-tracking,normal)}.sv-grid-column[draggable=true]{cursor:grab}.sv-grid-column[draggable=true]:active{cursor:grabbing}.sv-grid-column.is-dragging{opacity:.55}.sv-grid-column.is-drag-target-before,.sv-grid-column.is-drag-target-after{position:relative}.sv-grid-column.is-drag-target-before:before,.sv-grid-column.is-drag-target-after:after{content:\"\";pointer-events:none;z-index:7;background:linear-gradient(#6366f1,#8b5cf6);border-radius:2px;width:3px;animation:.7s ease-in-out infinite alternate sg-drop-pulse;position:absolute;top:4px;bottom:4px;box-shadow:0 0 6px #6366f1}.sv-grid-column.is-drag-target-before:before{left:-2px}.sv-grid-column.is-drag-target-after:after{right:-2px}@keyframes sg-drop-pulse{0%{opacity:.55}to{opacity:1}}.sv-grid-row-draggable{cursor:grab}.sv-grid-row-draggable:active{cursor:grabbing}.sv-grid-row-draggable .sv-grid-row-number-cell{padding-left:14px;position:relative}.sv-grid-row-draggable .sv-grid-row-number-cell:before{content:\"⠇\";color:var(--sg-muted,#94a3b8);opacity:.4;pointer-events:none;font-size:13px;line-height:1;transition:opacity .12s;position:absolute;top:50%;left:3px;transform:translateY(-50%)}.sv-grid-row-draggable:hover .sv-grid-row-number-cell:before{opacity:1}.sv-grid-row-dropzone-over{outline:2px dashed var(--sg-accent,#6366f1);outline-offset:-2px;background:color-mix(in srgb, var(--sg-accent,#6366f1) 10%, transparent)}.sv-grid-row-drop-before>td{box-shadow:inset 0 2px 0 0 var(--sg-accent,#6366f1)}.sv-grid-row-drop-after>td{box-shadow:inset 0 -2px 0 0 var(--sg-accent,#6366f1)}.sv-grid-pinned-row td{z-index:4;background:var(--sg-pinned-bg,color-mix(in oklab, var(--sg-header-bg,#f1f5f9) 92%, var(--sg-accent,#2563eb) 8%));border-bottom:1px solid var(--sg-pinned-border,color-mix(in oklab, var(--sg-accent,#2563eb) 24%, transparent));font-weight:600;position:sticky}.sv-grid-pinned-row-top td{top:var(--sg-thead-h,36px)}.sv-grid-pinned-row-bottom td{border-top:1px solid var(--sg-pinned-border,color-mix(in oklab, var(--sg-accent,#2563eb) 24%, transparent));bottom:0}.sv-grid-pinned-row-top[data-pinned-index=\"1\"] td{top:calc(var(--sg-thead-h,36px) + var(--sg-pinned-row-h,32px))}.sv-grid-pinned-row-top[data-pinned-index=\"2\"] td{top:calc(var(--sg-thead-h,36px) + var(--sg-pinned-row-h,32px) * 2)}.sv-grid-pinned-row-top[data-pinned-index=\"3\"] td{top:calc(var(--sg-thead-h,36px) + var(--sg-pinned-row-h,32px) * 3)}.sv-grid-pinned-row-bottom[data-pinned-index=\"1\"] td{bottom:var(--sg-pinned-row-h,32px)}.sv-grid-pinned-row-bottom[data-pinned-index=\"2\"] td{bottom:calc(var(--sg-pinned-row-h,32px) * 2)}.sv-grid-pinned-row-bottom[data-pinned-index=\"3\"] td{bottom:calc(var(--sg-pinned-row-h,32px) * 3)}.sv-grid-pinned-row td[data-pinned]{z-index:5}.sv-grid-group-header-row{background:var(--sg-header-bg,#eef2f8)}.sv-grid-group-header-cell{box-sizing:border-box;border-bottom:1px solid var(--sg-border,#d8dee9);border-right:1px solid var(--sg-border,#e2e8f0);text-align:center;color:var(--sg-header-fg,#475569);text-transform:uppercase;letter-spacing:.04em;padding:4px 8px;font-size:11.5px;font-weight:700}.sv-grid-group-header-placeholder{background:0 0;border-right-color:#0000}.sv-grid-group-header-label{text-overflow:ellipsis;white-space:nowrap;max-width:100%;display:inline-block;overflow:hidden}.sv-grid-group-toggle{max-width:100%;color:inherit;font:inherit;letter-spacing:inherit;text-transform:inherit;cursor:pointer;background:0 0;border:0;border-radius:5px;align-items:center;gap:5px;padding:2px 6px;display:inline-flex}.sv-grid-group-toggle:hover{background:color-mix(in srgb, var(--sg-accent,#2563eb) 12%, transparent);color:var(--sg-accent,#2563eb)}.sv-grid-group-caret{flex-shrink:0;transition:transform .14s}.sv-grid-group-toggle.is-collapsed .sv-grid-group-caret{transform:rotate(-90deg)}.sv-grid-foot{z-index:6;background:var(--sg-header-bg,#f5f7fb);position:sticky;bottom:0}.sv-grid-container.sv-grid-narrow{-webkit-overflow-scrolling:touch;scroll-behavior:auto}.sv-grid-container{scrollbar-width:auto;-ms-overflow-style:auto;overscroll-behavior:contain;overflow-anchor:none;scroll-padding-top:var(--sg-thead-h,36px)}.sv-grid-container.sv-grid-container-custom-scrollbars{scrollbar-width:none;-ms-overflow-style:none}.sv-grid-container.sv-grid-container-custom-scrollbars::-webkit-scrollbar{display:none}.sv-grid-scrollbar{z-index:40;position:absolute}.sv-grid-scrollbar-vertical{top:0;width:16px;height:calc(100% - 16px);inset-inline-end:0}.sv-grid-scrollbar-corner{top:0;background:var(--sg-header-bg,#f5f7fb);z-index:41;pointer-events:none;border-bottom:1px solid #0f172a14;width:16px;position:absolute;inset-inline-end:0}.sv-grid-scrollbar-corner-br{inset-inline-end:0;background:var(--sg-header-bg,#eef2f8);z-index:42;pointer-events:none;width:16px;height:16px;position:absolute;bottom:0;box-shadow:inset 0 0 0 1px #0f172a0d}.sv-grid-scrollbar-horizontal{inset-inline-start:0;width:calc(100% - 16px);height:16px;bottom:0}.sv-grid-selection-column,.sv-grid-selection-cell{text-align:center;z-index:4;padding-inline:6px;position:sticky}.sv-grid-row-number-column,.sv-grid-row-number-cell{text-align:right;z-index:4;background:var(--sg-header-bg,#f5f7fb);color:var(--sg-muted,#64748b);font-variant-numeric:tabular-nums;padding-inline:8px;position:sticky;left:0}.sv-grid-row-number-head{color:inherit}.sv-grid-filter-row-control{flex-direction:row;align-items:center;gap:4px;display:flex}.sv-grid-filter-operator{box-sizing:border-box;flex:2 1 0;min-width:0}.sv-grid-filter-value{box-sizing:border-box;flex:3 1 0;min-width:0}.sv-grid-filter-value.sv-grid-filter-value-pulse{animation:.7s ease-out sv-grid-filter-pulse}@keyframes sv-grid-filter-pulse{0%{box-shadow:0 0 0 0 color-mix(in srgb, var(--sg-accent,#0b63f3) 55%, transparent)}70%{box-shadow:0 0 0 6px color-mix(in srgb, var(--sg-accent,#0b63f3) 0%, transparent)}to{box-shadow:0 0 0 0 color-mix(in srgb, var(--sg-accent,#0b63f3) 0%, transparent)}}.sv-grid-checkbox{border:1px solid var(--sg-input-border,#8794a8);background:var(--sg-input-bg,#fff);width:16px;height:16px;color:var(--sg-accent,#0b63f3);cursor:pointer;border-radius:4px;justify-content:center;align-items:center;margin:0 auto;transition:border-color .12s,background-color .12s;display:inline-flex;position:relative}.sv-grid-fr-editor{box-sizing:border-box;width:100%}select.sv-grid-fr-editor{height:100%;min-height:26px}.sv-grid-fr-checkbox{width:16px;height:16px;accent-color:var(--sg-accent,#3b82f6);cursor:pointer}.sv-grid-cell-editor-color{cursor:pointer;background:0 0;border:0;width:100%;height:100%;padding:2px}.sv-grid-cell-editor-color::-webkit-color-swatch-wrapper{padding:0}.sv-grid-cell-editor-color::-webkit-color-swatch{border:0;border-radius:4px}.sv-grid-cell-editor-color::-moz-color-swatch{border:0;border-radius:4px}.sv-grid-rating-editor{align-items:center;gap:1px;height:100%;display:inline-flex}.sv-grid-rating-star{cursor:pointer;color:var(--sg-rating-empty,#cbd5e1);background:0 0;border:0;padding:0 1px;font-size:18px;line-height:1;transition:color 80ms,transform 80ms}.sv-grid-rating-star-on{color:var(--sg-rating-on,#f59e0b)}.sv-grid-rating-star:hover{color:var(--sg-rating-hover,#fbbf24);transform:scale(1.12)}.sv-grid-rating-clear{color:var(--sg-muted,#94a3b8);cursor:pointer;background:0 0;border:0;margin-left:4px;font-size:14px}.sv-grid-rating-clear:hover{color:var(--sg-fg,#0f172a)}.sv-grid-checkbox[aria-checked=true],.sv-grid-checkbox[aria-checked=mixed]{border-color:var(--sg-accent,#2563eb);background:var(--sg-accent,#2563eb);color:var(--sg-on-accent,#fff)}.sv-grid-checkbox[aria-checked=true]:after{content:\"\";border-bottom:2px solid;border-right:2px solid;width:5px;height:9px;transform:rotate(40deg)translate(-1px,-1px)}.sv-grid-checkbox[aria-checked=mixed]:after{content:\"\";background:currentColor;border-radius:1px;width:8px;height:2px}.sv-grid-checkbox:focus-visible{outline:2px solid var(--sg-accent,#0b63f3);outline-offset:1px}.sv-grid-checkbox-readonly{cursor:default;pointer-events:none}@keyframes sv-grid-cell-flash-kf{0%{background-color:var(--sg-cell-flash,color-mix(in oklab, var(--sg-accent,#3b82f6) 42%, transparent))}to{background-color:#0000}}.sv-grid-cell-flash{animation:.7s ease-out sv-grid-cell-flash-kf}@media (prefers-reduced-motion:reduce){.sv-grid-cell-flash{animation:none}}.sv-grid-cell-active,.sv-grid-cell-editing{z-index:20;box-shadow:inset 0 0 0 2px var(--sg-accent,#0b63f3);outline:none;position:relative;overflow:visible}.sv-grid-cell-note-corner{background:linear-gradient(45deg, transparent 50%, var(--sg-note-corner,#f59e0b) 50%);cursor:help;z-index:6;width:12px;height:12px;position:absolute;top:0;right:0}.sv-grid-cell-note-corner:before{content:\"\";position:absolute;inset:-3px -3px 0 0}.sv-grid-fill-handle{background:var(--sg-accent,#0b63f3);border:1px solid var(--sg-bg,#fff);box-sizing:border-box;cursor:crosshair;z-index:15;touch-action:none;width:9px;height:9px;position:absolute;bottom:0;right:0}.sv-grid-fill-handle:hover{transform-origin:100% 100%;transform:scale(1.3)}.sv-grid-cell[data-fill-top=true],.sv-grid-cell[data-fill-bottom=true],.sv-grid-cell[data-fill-left=true],.sv-grid-cell[data-fill-right=true]{--sv-fill-top:none;--sv-fill-bottom:none;--sv-fill-left:none;--sv-fill-right:none;--sv-fill-color:var(--sg-fill-marquee,var(--sg-accent,#2563eb))}.sv-grid-cell[data-fill-top=true]{--sv-fill-top:repeating-linear-gradient(to right, var(--sv-fill-color) 0 3px, transparent 3px 6px)}.sv-grid-cell[data-fill-bottom=true]{--sv-fill-bottom:repeating-linear-gradient(to right, var(--sv-fill-color) 0 3px, transparent 3px 6px)}.sv-grid-cell[data-fill-left=true]{--sv-fill-left:repeating-linear-gradient(to bottom, var(--sv-fill-color) 0 3px, transparent 3px 6px)}.sv-grid-cell[data-fill-right=true]{--sv-fill-right:repeating-linear-gradient(to bottom, var(--sv-fill-color) 0 3px, transparent 3px 6px)}.sv-grid-table .sv-grid-cell[data-fill-top=true],.sv-grid-table .sv-grid-cell[data-fill-bottom=true],.sv-grid-table .sv-grid-cell[data-fill-left=true],.sv-grid-table .sv-grid-cell[data-fill-right=true]{background-image:var(--sv-fill-top), var(--sv-fill-bottom), var(--sv-fill-left), var(--sv-fill-right);background-position:0 0,0 100%,0 0,100% 0;background-repeat:no-repeat;background-size:100% 2px,100% 2px,2px 100%,2px 100%}.sv-grid-cell-editing{padding:0}.sv-grid-cell[data-selected-range=true]{background:var(--sg-selection-bg,#eef4ff);--sv-range-top:0 0 0 transparent;--sv-range-bottom:0 0 0 transparent;--sv-range-left:0 0 0 transparent;--sv-range-right:0 0 0 transparent;box-shadow:var(--sv-range-top), var(--sv-range-bottom), var(--sv-range-left), var(--sv-range-right)}.sv-grid-cell[data-range-top=true]{--sv-range-top:inset 0 2px 0 var(--sg-accent,#0b63f3)}.sv-grid-cell[data-range-bottom=true]{--sv-range-bottom:inset 0 -2px 0 var(--sg-accent,#0b63f3)}.sv-grid-cell[data-range-left=true]{--sv-range-left:inset 2px 0 0 var(--sg-accent,#0b63f3)}.sv-grid-cell[data-range-right=true]{--sv-range-right:inset -2px 0 0 var(--sg-accent,#0b63f3)}.sv-grid-cell[data-range-top=true],.sv-grid-cell[data-range-bottom=true],.sv-grid-cell[data-range-left=true],.sv-grid-cell[data-range-right=true],.sv-grid-cell.sv-merge-edge-right,.sv-grid-cell.sv-merge-edge-bottom{z-index:3;position:relative}.sv-grid-cell.sv-merge-edge-right{box-shadow:inset -2px 0 0 var(--sg-accent,#0b63f3)}.sv-grid-cell.sv-merge-edge-bottom{box-shadow:inset 0 -2px 0 var(--sg-accent,#0b63f3)}.sv-grid-cell.sv-merge-in-range{background:var(--sg-selection-bg,#eef4ff)}.sv-grid-cell-editor{background:var(--sg-input-bg,#fff);box-sizing:border-box;width:100%;height:100%;font:inherit;color:inherit;border:0;outline:none;padding:0 8px;position:absolute;inset:0}.sv-grid-column-filter,.sv-grid-filter-value,.sv-grid-global-filter input,.sv-grid-menu-search,.sv-grid-menu-condition-value{background:var(--sg-input-bg,#fff);color:var(--sg-fg,#0f172a);border:1px solid var(--sg-input-border,#cbd5e1);box-sizing:border-box;font:inherit;border-radius:5px;padding:0 8px}.sv-grid-column-filter{width:100%;height:28px;font-size:.8125rem}.sv-grid-column-filter::placeholder,.sv-grid-filter-value::placeholder,.sv-grid-menu-search::placeholder,.sv-grid-global-filter input::placeholder,.sv-grid-cell-editor::placeholder{color:var(--sg-muted,#64748b);opacity:.7}.sv-grid-global-filter input:focus,.sv-grid-filter-value:focus,.sv-grid-column-filter:focus,.sv-grid-menu-search:focus,.sv-grid-menu-condition-value:focus,.sv-grid-menu-operator:focus,.sv-grid-cell-editor:focus{border-color:var(--sg-accent,#2563eb);box-shadow:0 0 0 2px color-mix(in srgb, var(--sg-accent,#2563eb) 30%, transparent);outline:none}.sv-grid-cell-editor-number,.sv-grid-cell-editor-date,.sv-grid-cell-editor-datetime{width:100%;height:100%}.sv-grid-cell-editor-list{appearance:auto;width:100%;height:100%;font:inherit;color:inherit;background:var(--sg-input-bg,#fff);box-sizing:border-box;border:0;padding:0 6px}.sv-grid-cell-editor-list[multiple]{z-index:5;border:1px solid var(--sg-accent,#0b63f3);background:var(--sg-input-bg,#fff);height:auto;min-height:100%;max-height:220px;padding:4px;position:absolute;top:0;left:0;right:0;box-shadow:0 8px 24px #0f172a2e}.sv-grid-cell-editor-chips{background:var(--sg-header-bg,var(--sg-bg,#fff));min-height:calc(100% + 2px);color:var(--sg-fg,#0f172a);box-sizing:border-box;z-index:1000;border:1px solid var(--sg-accent,#2563eb);border-radius:var(--sg-radius,6px);align-items:flex-start;padding:4px 6px;display:flex;position:absolute;top:-1px;left:-1px;right:-1px;overflow:visible;box-shadow:0 12px 28px #00000073}.sv-grid-cell-editing:has(.sv-grid-cell-editor-chips){outline:none}.sv-grid-chips-row{flex-wrap:wrap;align-items:center;gap:4px;width:100%;display:flex}.sv-grid-chip-input{min-width:60px;font:inherit;color:inherit;background:0 0;border:0;outline:none;flex:80px;padding:2px 4px}.sv-grid-chip-picker{min-width:80px;font:inherit;color:inherit;background:var(--sg-bg,#fff);border:1px solid #0f172a26;border-radius:4px;flex:100px;padding:2px 4px}.sv-grid-chip-commit{text-transform:uppercase;letter-spacing:.04em;color:#fff;background:var(--sg-accent,#0b63f3);cursor:pointer;border:0;border-radius:4px;padding:3px 8px;font-size:11px}.sv-grid-chip-commit:hover{filter:brightness(1.1)}.sv-grid-chips-display{vertical-align:middle;flex-wrap:nowrap;align-items:center;gap:4px;max-width:100%;display:inline-flex}.sv-grid-sparkline{vertical-align:middle;display:inline-block;overflow:visible}.sv-grid-cf-bg{z-index:0;pointer-events:none;position:absolute;inset:0}.sv-grid-cf-bar{z-index:0;opacity:.85;pointer-events:none;border-radius:0 2px 2px 0;position:absolute;top:0;bottom:0;left:0}.sv-grid-cell-cf{position:relative}.sv-grid-cell-invalid{box-shadow:inset 0 0 0 1px var(--sg-invalid-border,#ef444473);color:var(--sg-invalid-fg,#b91c1c);background-color:var(--sg-invalid-bg,#ef444424)!important}.sv-grid-cell-invalid.sv-grid-cell-active{box-shadow:inset 0 0 0 2px var(--sg-invalid-border,#ef4444b3)}.sv-grid-status-bar{color:var(--sg-fg);background:var(--sg-header-bg,#f1f5f9);border:1px solid var(--sg-border,#e2e8f0);border-top:0;flex-wrap:wrap;flex-shrink:0;align-items:center;gap:18px;padding:6px 14px;font-size:12px;display:flex}.sv-grid-status-item{font-variant-numeric:tabular-nums;font-weight:600}.sv-grid-status-label{color:var(--sg-muted,#64748b);margin-right:5px;font-weight:400}.sv-grid-cf-content{z-index:1;position:relative}.sv-grid-cf-icon{margin-right:5px;font-size:.95em}.sv-grid-chip{background:color-mix(in srgb, var(--sg-accent,#2563eb) 18%, transparent);color:var(--sg-fg,inherit);border:1px solid color-mix(in srgb, var(--sg-accent,#2563eb) 35%, transparent);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:2px 8px;font-size:.85em;line-height:1.4;display:inline-flex}.sv-grid-chip-removable{padding-right:2px}.sv-grid-chip-remove{background:color-mix(in srgb, var(--sg-fg,#0f172a) 18%, transparent);width:16px;height:16px;color:inherit;cursor:pointer;border:0;border-radius:999px;justify-content:center;align-items:center;padding:0;font-size:12px;line-height:1;display:inline-flex}.sv-grid-chip-remove:hover{color:#fff;background:#dc2626b3}.sv-grid-icon{flex:none;width:1em;height:1em;display:block}.sv-grid-header-cell{width:100%;min-width:0;min-height:var(--sg-header-min-height,auto);align-items:center;gap:2px;display:flex}.sv-grid-header-sort{min-width:0;font:inherit;color:inherit;text-align:left;cursor:pointer;background:0 0;border:0;flex:auto;align-items:center;gap:4px;padding:2px;display:flex}.sv-grid-header-custom{text-align:left;cursor:pointer;outline:none;flex:auto;align-items:center;gap:4px;min-width:0;padding:2px;display:flex}.sv-grid-header-label{text-overflow:ellipsis;white-space:nowrap;flex:0 auto;min-width:0;overflow:hidden}.sv-grid-header-icon{color:var(--sg-muted,#5b6b85);flex:none;font-size:13px;display:inline-flex}.sv-grid-header-icon-hint{opacity:0;transition:opacity .12s}.sv-grid-column:hover .sv-grid-header-icon-hint{opacity:.4}.sv-grid-header-icon-flag{color:var(--sg-accent,#0b63f3)}.sv-grid-col-menu-btn{width:0;height:22px;color:var(--sg-muted,#5b6b85);cursor:pointer;opacity:0;pointer-events:none;background:0 0;border:0;border-radius:4px;flex:none;justify-content:center;align-items:center;padding:0;font-size:15px;transition:width .14s,opacity .14s,background-color .12s;display:inline-flex;overflow:hidden}.sv-grid-column:hover .sv-grid-col-menu-btn,.sv-grid-col-menu-btn.is-open,.sv-grid-col-menu-btn:focus-visible,.sv-grid-col-filter-btn.is-active{opacity:1;pointer-events:auto;width:22px}.sv-grid-col-menu-btn:hover,.sv-grid-col-menu-btn.is-open{background:var(--sg-row-hover-bg,#e2e8f3)}.sv-grid-filter-operator-btn{border:1px solid var(--sg-input-border,#cbd5e1);background:var(--sg-input-bg,#fff);height:24px;color:var(--sg-fg,#334155);cursor:pointer;border-radius:4px;flex:none;align-items:center;gap:2px;padding:0 4px;font-size:13px;display:inline-flex}.sv-grid-filter-operator-btn.is-open{border-color:var(--sg-accent,#0b63f3)}.sv-grid-caret{color:var(--sg-muted,#94a3b8);font-size:9px;display:inline-flex}.sv-grid-menu-backdrop{z-index:900;background:0 0;position:fixed;inset:0}.sv-grid-menu{z-index:901;background:var(--sg-bg,#fff);border:1px solid var(--sg-border,#d6dee9);max-height:calc(100vh - 24px);color:var(--sg-fg,#1f2937);border-radius:8px;padding:4px;font-size:13px;position:fixed;overflow:auto;box-shadow:0 12px 28px #0f172a2e}.sv-grid-column-menu{width:260px}.sv-grid-menu-tabs{border-bottom:1px solid var(--sg-border,#e2e8f0);gap:2px;margin:-2px -2px 4px;padding:2px 2px 0;display:flex}.sv-grid-menu-tab{color:var(--sg-muted,#64748b);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;flex:1;padding:6px;font-size:12px;font-weight:600}.sv-grid-menu-tab:hover{color:var(--sg-fg,#0f172a)}.sv-grid-menu-tab.is-active{color:var(--sg-accent,#2563eb);border-bottom-color:var(--sg-accent,#2563eb)}.sv-grid-operator-menu{width:184px}.sv-grid-context-menu{min-width:180px}.sv-grid-comment-editor{width:240px;padding:8px}.sv-grid-comment-textarea{resize:vertical;border:1px solid var(--sg-input-border,#cbd5e1);background:var(--sg-input-bg,#fff);width:100%;min-height:60px;color:var(--sg-fg,#0f172a);font:inherit;border-radius:4px;outline:none;padding:6px 8px;font-size:13px}.sv-grid-comment-textarea:focus{border-color:var(--sg-accent,#6366f1)}.sv-grid-comment-actions{align-items:center;gap:6px;margin-top:8px;display:flex}.sv-grid-comment-spacer{flex:auto}.sv-grid-comment-actions button{border:1px solid var(--sg-border,#cbd5e1);background:var(--sg-bg,#fff);color:var(--sg-fg,#1f2937);font:inherit;cursor:pointer;border-radius:4px;padding:4px 10px;font-size:12px}.sv-grid-comment-save{border-color:var(--sg-accent,#6366f1)!important;background:var(--sg-accent,#6366f1)!important;color:#fff!important}.sv-grid-comment-remove{color:var(--sg-danger,#dc2626)!important}.sv-grid-menu-item{width:100%;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;border-radius:5px;align-items:center;gap:8px;padding:7px 10px;display:flex}.sv-grid-menu-item:hover{background:var(--sg-row-hover-bg,#eef2f8)}.sv-grid-menu-item[aria-checked=true]{background:var(--sg-selection-bg,#eaf2ff);color:var(--sg-accent,#0b63f3)}.sv-grid-menu-sep{background:var(--sg-border,#e6ebf2);height:1px;margin:4px 6px}.sv-grid-menu-filter{padding:4px 6px 6px}.sv-grid-menu-filter-head{color:var(--sg-muted,#475569);align-items:center;gap:6px;padding:2px 0 6px;font-weight:600;display:flex}.sv-grid-menu-search{box-sizing:border-box;border:1px solid var(--sg-input-border,#cbd5e1);width:100%;height:28px;font:inherit;border-radius:5px;margin-bottom:6px;padding:0 8px}.sv-grid-menu-filter-row{gap:4px;margin-bottom:6px;display:flex}.sv-grid-menu-operator-group{gap:2px;margin-bottom:6px;display:flex}.sv-grid-menu-operator-btn{border:1px solid var(--sg-input-border,#cbd5e1);background:var(--sg-input-bg,#fff);height:28px;color:var(--sg-fg,#475569);cursor:pointer;border-radius:4px;flex:1 1 0;justify-content:center;align-items:center;padding:0;transition:background-color .1s,color .1s,border-color .1s;display:inline-flex}.sv-grid-menu-operator-btn:hover{background:var(--sg-row-hover-bg,#eef2f8)}.sv-grid-menu-operator-btn.is-active{background:var(--sg-accent,#0b63f3);border-color:var(--sg-accent,#0b63f3);color:#fff}.sv-grid-menu-condition-value{box-sizing:border-box;border:1px solid var(--sg-input-border,#cbd5e1);min-width:0;height:28px;font:inherit;border-radius:5px;flex:1 1 0;padding:0 8px}.sv-grid-menu-add-cond{color:var(--sg-accent,#3b82f6);border:1px dashed var(--sg-border,#cbd5e1);cursor:pointer;background:0 0;border-radius:5px;align-self:flex-start;margin-top:2px;padding:3px 8px;font-size:11.5px;font-weight:600}.sv-grid-menu-add-cond:hover{background:color-mix(in oklab, var(--sg-accent,#3b82f6) 8%, transparent);border-style:solid}.sv-grid-menu-join{align-items:center;gap:2px;margin:2px 0;display:inline-flex}.sv-grid-menu-join button{color:var(--sg-muted,#64748b);border:1px solid var(--sg-border,#cbd5e1);cursor:pointer;background:0 0;padding:2px 10px;font-size:11px;font-weight:700}.sv-grid-menu-join button:first-child{border-radius:5px 0 0 5px}.sv-grid-menu-join button:nth-child(2){border-left:0;border-radius:0}.sv-grid-menu-join button.is-on{background:var(--sg-accent,#3b82f6);color:#fff;border-color:var(--sg-accent,#3b82f6)}.sv-grid-menu-join-x{margin-left:auto;font-size:14px;line-height:1;border-radius:5px!important;padding:2px 7px!important}.sv-grid-facet-list{border:1px solid var(--sg-border,#eaeef4);border-radius:5px;max-height:200px;overflow:auto}.sv-grid-facet{cursor:pointer;align-items:center;gap:8px;padding:4px 8px;display:flex}.sv-grid-facet:hover{background:var(--sg-row-hover-bg,#f4f6fa)}.sv-grid-facet-all{border-bottom:1px solid var(--sg-border,#eaeef4);font-weight:600}.sv-grid-facet input{flex:none}.sv-grid-facet-label{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sv-grid-facet-empty,.sv-grid-facet-note{color:var(--sg-muted,#94a3b8);padding:6px 8px;font-size:12px}.sv-grid-menu-actions{justify-content:flex-end;gap:6px;padding-top:8px;display:flex}.sv-grid-menu-btn{border:1px solid var(--sg-input-border,#cbd5e1);background:var(--sg-input-bg,#fff);color:var(--sg-fg,#334155);font:inherit;cursor:pointer;border-radius:5px;padding:5px 10px}.sv-grid-menu-btn-primary{background:var(--sg-accent,#0b63f3);border-color:var(--sg-accent,#0b63f3);color:#fff}.sv-grid-menu-item:disabled,.sv-grid-menu-btn:disabled{opacity:.4;cursor:default}.sv-grid-menu-item:disabled:hover{background:0 0}.sv-grid-group-row>.sv-grid-cell{background:var(--sg-header-bg,#eef2f8);cursor:pointer;font-weight:600}.sv-grid-row-selected>.sv-grid-cell{background:var(--sg-selection-bg,#eaf2ff)}.sv-grid-group-cell{padding:0 12px}.sv-grid-group-content{align-items:center;gap:6px;display:inline-flex}.sv-grid-group-toggle{color:var(--sg-fg,#334155);cursor:pointer;background:0 0;border:0;padding:0 4px 0 0;font-size:11px;line-height:1}.sv-grid-group-count{color:var(--sg-muted,#64748b);margin-left:6px;font-size:12px;font-weight:400}.sv-grid-group-agg{color:var(--sg-fg);white-space:nowrap;margin-left:10px;font-size:12px;font-weight:600}.sv-grid-group-agg-label{color:var(--sg-muted,#64748b);margin-right:4px;font-weight:400}.sv-grid-group-agg-label:after{content:\":\"}.sv-grid-group-child-indent{width:18px;display:inline-block}.sv-grid-tooltip{z-index:10000;color:#f1f5f9;border-radius:var(--sg-radius,6px);pointer-events:none;white-space:pre-wrap;word-wrap:break-word;background:#0f172a;max-width:280px;padding:8px 10px;font-size:12px;line-height:1.45;position:fixed;box-shadow:0 8px 24px #0f172a47}[data-theme=dark] .sv-grid-tooltip{color:#0f172a;background:#f1f5f9}.sv-grid-cell-editor-textarea{border:1px solid var(--sg-accent,#6366f1);background:var(--sg-bg,#fff);width:100%;min-height:80px;color:var(--sg-fg,#0f172a);resize:vertical;box-shadow:var(--sg-focus-ring,0 0 0 2px #6366f166);border-radius:4px;outline:none;padding:6px 8px;font-family:inherit;font-size:13px;line-height:1.4}.sv-grid-autocomplete{width:100%;position:relative}.sv-grid-autocomplete-list{z-index:30;background:var(--sg-bg,#fff);border:1px solid var(--sg-border,#d6dee9);border-radius:var(--sg-radius,6px);max-height:220px;margin-top:2px;padding:4px;position:absolute;top:100%;left:0;right:0;overflow:auto;box-shadow:0 12px 28px #0f172a2e}.sv-grid-autocomplete-option{text-align:left;width:100%;color:var(--sg-fg,#1f2937);font:inherit;cursor:pointer;white-space:nowrap;text-overflow:ellipsis;background:0 0;border:0;border-radius:4px;padding:5px 8px;font-size:13px;display:block;overflow:hidden}.sv-grid-autocomplete-option:hover,.sv-grid-autocomplete-option[aria-selected=true]{background:var(--sg-row-hover-bg,#6366f11a)}.sv-grid-find{z-index:60;background:var(--sg-bg,#fff);color:var(--sg-fg,#0f172a);border:1px solid var(--sg-border,#cbd5e1);border-radius:8px;align-items:center;gap:4px;min-width:280px;padding:6px 8px;display:inline-flex;position:absolute;top:8px;right:8px;box-shadow:0 10px 25px #0f172a2e}.sv-grid-find-icon{width:14px;height:14px;color:var(--sg-muted,#94a3b8);flex:none;margin-left:2px}.sv-grid-find-input{min-width:0;color:inherit;background:0 0;border:0;outline:none;flex:1;padding:2px 6px;font-size:13px}.sv-grid-find-input::placeholder{color:var(--sg-muted,#94a3b8)}.sv-grid-find-count{color:var(--sg-muted,#64748b);font-variant-numeric:tabular-nums;white-space:nowrap;padding:0 4px;font-size:11px}.sv-grid-find-step,.sv-grid-find-close{width:22px;height:22px;color:var(--sg-muted,#64748b);cursor:pointer;background:0 0;border:0;border-radius:4px;justify-content:center;align-items:center;font-size:12px;display:inline-flex}.sv-grid-find-step:hover:not(:disabled),.sv-grid-find-close:hover{background:var(--sg-row-hover-bg,#94a3b81f);color:var(--sg-fg,#0f172a)}.sv-grid-find-step:disabled{opacity:.3;cursor:default}.sv-grid-pagination{border:1px solid var(--sg-border,#e2e8f0);border-radius:0 0 var(--sg-radius,6px) var(--sg-radius,6px);background:var(--sg-header-bg,#f1f5f9);color:var(--sg-fg,#0f172a);border-top:0;justify-content:flex-end;align-items:center;gap:24px;margin-top:0;padding:12px 16px;font-size:13px;display:flex}.sv-grid-pagination-top{border-top:1px solid var(--sg-border,#e2e8f0);border-radius:var(--sg-radius,6px) var(--sg-radius,6px) 0 0;border-bottom:0}.sv-grid-pagination-pagesize{color:var(--sg-muted,#64748b);align-items:center;gap:8px;display:inline-flex}.sv-grid-pagination-pagesize-dd{border:1px solid var(--sg-input-border,#cbd5e1);background:var(--sg-input-bg,#fff);border-radius:5px;min-width:62px;height:28px;position:relative}.sv-grid-pagination-pagesize-dd .sv-grid-dropdown,.sv-grid-pagination-pagesize-dd .sv-grid-dropdown-trigger{color:var(--sg-fg,#0f172a);background:0 0;border-radius:5px;font-size:13px}.sv-grid-pagination-pagesize-dd:focus-within{border-color:var(--sg-accent,#2563eb);box-shadow:0 0 0 2px color-mix(in srgb, var(--sg-accent,#2563eb) 30%, transparent)}.sv-grid-pagination-range{color:var(--sg-fg,#0f172a)}.sv-grid-pagination-nav{align-items:center;gap:4px;display:inline-flex}.sv-grid-pagination-btn{width:28px;height:28px;color:var(--sg-fg,#0f172a);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:5px;justify-content:center;align-items:center;padding:0;font-size:16px;transition:background-color .1s,color .1s;display:inline-flex}.sv-grid-pagination-btn:hover:not(:disabled){background:var(--sg-input-bg,#fff);color:var(--sg-accent,#2563eb)}.sv-grid-pagination-btn:disabled{color:var(--sg-muted,#64748b);opacity:.4;cursor:default}.sv-grid-pagination-label{color:var(--sg-fg,#0f172a);margin:0 8px}.sv-grid-no-scroll .sv-grid-scrollbar-corner,.sv-grid-no-scroll .sv-grid-scrollbar{display:none}.sv-grid-scrollbar-corner,.sv-grid-scrollbar-corner-br{border-bottom-color:var(--sg-border,#e2e8f0)}.sv-grid-menu-operator-select{border:1px solid var(--sg-input-border,#cbd5e1);background:var(--sg-input-bg,#fff);width:100%;height:28px;color:var(--sg-fg,#0f172a);font:inherit;cursor:pointer;appearance:none;background-image:linear-gradient(45deg,#0000 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,#0000 50%);background-position:calc(100% - 12px) 12px,calc(100% - 8px) 12px;background-repeat:no-repeat;background-size:4px 4px,4px 4px;border-radius:5px;margin-bottom:6px;padding:0 22px 0 8px;font-size:13px}.sv-grid-menu-operator-select:focus{border-color:var(--sg-accent,#2563eb);box-shadow:0 0 0 2px color-mix(in srgb, var(--sg-accent,#2563eb) 40%, transparent);outline:none}.sv-grid-menu-operator-btn.is-active{color:var(--sg-on-accent,#fff)}.sv-grid-filter-menu{width:260px}.sv-grid-choose-columns-menu{width:240px}.sv-grid-choose-columns-menu .sv-grid-facet-list{max-height:280px}.sv-grid-facet input[type=checkbox]{accent-color:var(--sg-accent,#2563eb);cursor:pointer;width:14px;height:14px}.sv-grid-menu-item-chevron{opacity:.55;margin-left:auto;transform:rotate(-90deg)}.sv-grid-menu-item.is-open .sv-grid-menu-item-chevron{opacity:1}.sv-grid-menu-search{background-image:url(\"data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2394a3b8' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='6'/%3E%3Cpath d='M20 20l-4.5-4.5'/%3E%3C/svg%3E\");background-position:8px;background-repeat:no-repeat;background-size:14px 14px;padding-left:28px}.sv-grid-menu-filter>*+*{margin-top:6px}.sv-grid-col-filter-btn.is-active{color:var(--sg-accent,#2563eb)}.sv-grid-row-number-column,.sv-grid-row-number-cell{border-right-color:var(--sg-header-bg,#f1f5f9)}.sv-grid-group-row>.sv-grid-cell{color:var(--sg-header-fg,#0f172a)}.sv-grid-filter-operator-btn{opacity:.85}.sv-grid-filter-operator-btn:hover{opacity:1;border-color:var(--sg-accent,#2563eb)}.sv-grid-filter-operator-btn.is-open{opacity:1}.sv-grid-board-search{border:1px solid var(--sg-border,#e4e7ec);border-radius:var(--sg-radius,8px);background:var(--sg-bg,#fff);color:color-mix(in srgb, var(--sg-fg,#101828) 55%, transparent);align-items:center;gap:6px;max-width:280px;margin-bottom:8px;padding:5px 9px;display:flex}.sv-grid-board-search:focus-within{border-color:var(--sg-accent,#3b82f6)}.sv-grid-board-search input{font:inherit;color:var(--sg-fg,#101828);background:0 0;border:0;outline:none;flex:auto;font-size:.82rem}\n/*$vite$:1*/";document.head.appendChild(s)}catch(e){}})();
@@ -0,0 +1,45 @@
1
+ /**
2
+ * SvGrid's built-in design-system theme presets (shadcn/ui, Tailwind, Material 3,
3
+ * Excel, Fluent 2, ...). Each preset carries an explicit light + dark palette;
4
+ * resolving one (plus a light/dark mode) yields the full `--sg-*` token set that
5
+ * restyles the whole grid - not just the accent.
6
+ *
7
+ * Pure, framework-agnostic data + helpers - safe to import from Node or the
8
+ * browser. `@svgrid/enterprise`'s Studio layer builds its `ProjectTheme`-aware
9
+ * wrapper on top of this module instead of keeping its own copy.
10
+ */
11
+ export type ThemeMode = 'light' | 'dark';
12
+ /** The core palette for one mode. */
13
+ export type ThemePalette = {
14
+ bg: string;
15
+ fg: string;
16
+ muted: string;
17
+ border: string;
18
+ headerBg: string;
19
+ headerFg: string;
20
+ accent: string;
21
+ rowAlt: string;
22
+ rowHover: string;
23
+ selectionBg: string;
24
+ };
25
+ export type ThemePreset = {
26
+ /** Stable id, e.g. used as a CSS file name (`themes/<id>.css`). */
27
+ id: string;
28
+ /** Display name shown on a theme picker. */
29
+ name: string;
30
+ /** Control corner rounding (px). */
31
+ radius: number;
32
+ /** Font stack applied to the app surface. */
33
+ font: string;
34
+ light: ThemePalette;
35
+ dark: ThemePalette;
36
+ };
37
+ /** The built-in theme presets, in gallery order (default first). */
38
+ export declare const themePresets: ThemePreset[];
39
+ /** The default preset (used when nothing is chosen). */
40
+ export declare const defaultThemePreset: ThemePreset;
41
+ /** Look up a preset by id. */
42
+ export declare const getThemePreset: (id?: string) => ThemePreset | undefined;
43
+ /** Resolve the effective `--sg-*` tokens for a preset in a given mode, with an
44
+ * optional accent override applied. */
45
+ export declare function resolveThemeTokens(preset: ThemePreset | undefined, mode: ThemeMode, accentOverride?: string): Record<string, string>;
@@ -0,0 +1,132 @@
1
+ /**
2
+ * SvGrid's built-in design-system theme presets (shadcn/ui, Tailwind, Material 3,
3
+ * Excel, Fluent 2, ...). Each preset carries an explicit light + dark palette;
4
+ * resolving one (plus a light/dark mode) yields the full `--sg-*` token set that
5
+ * restyles the whole grid - not just the accent.
6
+ *
7
+ * Pure, framework-agnostic data + helpers - safe to import from Node or the
8
+ * browser. `@svgrid/enterprise`'s Studio layer builds its `ProjectTheme`-aware
9
+ * wrapper on top of this module instead of keeping its own copy.
10
+ */
11
+ /** The built-in theme presets, in gallery order (default first). */
12
+ export const themePresets = [
13
+ { id: 'shadcn', name: 'shadcn/ui', radius: 6, font: 'ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif',
14
+ light: { bg: '#ffffff', fg: '#09090b', muted: '#71717a', border: '#e4e4e7', headerBg: '#fafafa', headerFg: '#71717a', accent: '#18181b', rowAlt: '#ffffff', rowHover: '#f4f4f5', selectionBg: '#f4f4f5' },
15
+ dark: { bg: '#0a0a0a', fg: '#fafafa', muted: '#a1a1aa', border: '#27272a', headerBg: '#18181b', headerFg: '#a1a1aa', accent: '#fafafa', rowAlt: '#0a0a0a', rowHover: '#18181b', selectionBg: '#27272a' } },
16
+ { id: 'tailwind', name: 'Tailwind', radius: 6, font: 'Inter, ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif',
17
+ light: { bg: '#ffffff', fg: '#0f172a', muted: '#64748b', border: '#e2e8f0', headerBg: '#f8fafc', headerFg: '#0f172a', accent: '#4f46e5', rowAlt: '#ffffff', rowHover: '#f1f5f9', selectionBg: '#e0e7ff' },
18
+ dark: { bg: '#0f172a', fg: '#f8fafc', muted: '#94a3b8', border: '#334155', headerBg: '#1e293b', headerFg: '#f8fafc', accent: '#818cf8', rowAlt: '#0f172a', rowHover: '#1e293b', selectionBg: '#312e81' } },
19
+ { id: 'material', name: 'Material 3', radius: 8, font: '"Roboto Flex", Roboto, "Segoe UI", system-ui, sans-serif',
20
+ light: { bg: '#fef7ff', fg: '#1d1b20', muted: '#49454f', border: '#cac4d0', headerBg: '#f3edf7', headerFg: '#1d1b20', accent: '#6750a4', rowAlt: '#fffbfe', rowHover: '#ece6f0', selectionBg: '#e8def8' },
21
+ dark: { bg: '#141218', fg: '#e6e0e9', muted: '#cac4d0', border: '#49454f', headerBg: '#211f26', headerFg: '#e6e0e9', accent: '#d0bcff', rowAlt: '#141218', rowHover: '#2b2930', selectionBg: '#4a4458' } },
22
+ { id: 'excel', name: 'Excel', radius: 0, font: '"Aptos", "Segoe UI", Calibri, Arial, sans-serif',
23
+ light: { bg: '#ffffff', fg: '#323130', muted: '#605e5c', border: '#d2d0ce', headerBg: '#f3f2f1', headerFg: '#444444', accent: '#107c41', rowAlt: '#ffffff', rowHover: '#edebe9', selectionBg: 'rgba(16, 124, 65, 0.10)' },
24
+ dark: { bg: '#1b1a19', fg: '#f3f2f1', muted: '#c8c6c4', border: '#3b3a39', headerBg: '#252423', headerFg: '#c8c6c4', accent: '#58c188', rowAlt: '#1b1a19', rowHover: '#323130', selectionBg: 'rgba(88, 193, 136, 0.16)' } },
25
+ { id: 'fluent', name: 'Fluent 2', radius: 4, font: '"Segoe UI Variable", "Segoe UI", system-ui, sans-serif',
26
+ light: { bg: '#ffffff', fg: '#242424', muted: '#616161', border: '#e0e0e0', headerBg: '#f5f5f5', headerFg: '#242424', accent: '#0f6cbd', rowAlt: '#fafafa', rowHover: '#f0f0f0', selectionBg: '#ebebeb' },
27
+ dark: { bg: '#1f1f1f', fg: '#ffffff', muted: '#d6d6d6', border: '#666666', headerBg: '#141414', headerFg: '#ffffff', accent: '#479ef5', rowAlt: '#1a1a1a', rowHover: '#3d3d3d', selectionBg: '#383838' } },
28
+ { id: 'carbon', name: 'Carbon', radius: 0, font: '"IBM Plex Sans", "Helvetica Neue", Arial, sans-serif',
29
+ light: { bg: '#ffffff', fg: '#161616', muted: '#525252', border: '#e0e0e0', headerBg: '#e0e0e0', headerFg: '#161616', accent: '#0f62fe', rowAlt: '#f4f4f4', rowHover: '#e8e8e8', selectionBg: '#d0e2ff' },
30
+ dark: { bg: '#161616', fg: '#f4f4f4', muted: '#c6c6c6', border: '#393939', headerBg: '#393939', headerFg: '#f4f4f4', accent: '#78a9ff', rowAlt: '#262626', rowHover: '#333333', selectionBg: '#393939' } },
31
+ { id: 'sap', name: 'SAP Fiori', radius: 6, font: '"72", "72full", "Arial", sans-serif',
32
+ light: { bg: '#f5f6f7', fg: '#131e29', muted: '#556b82', border: '#e5e5e5', headerBg: '#ffffff', headerFg: '#131e29', accent: '#0070f2', rowAlt: '#f5f6f7', rowHover: '#eaecee', selectionBg: '#ebf8ff' },
33
+ dark: { bg: '#12171c', fg: '#f5f6f7', muted: '#8396a8', border: '#2e3742', headerBg: '#1d232a', headerFg: '#f5f6f7', accent: '#4db1ff', rowAlt: '#12171c', rowHover: '#222b35', selectionBg: '#1d2d3e' } },
34
+ { id: 'salesforce', name: 'Salesforce', radius: 4, font: '"Salesforce Sans", "SF Pro", Helvetica, Arial, sans-serif',
35
+ light: { bg: '#ffffff', fg: '#181818', muted: '#757575', border: '#c9c9c9', headerBg: '#f3f3f3', headerFg: '#181818', accent: '#0176d3', rowAlt: '#ffffff', rowHover: '#f3f3f3', selectionBg: '#ecebea' },
36
+ dark: { bg: '#181818', fg: '#ffffff', muted: '#c9c9c9', border: '#3e3e3c', headerBg: '#2e2e2e', headerFg: '#ffffff', accent: '#1b96ff', rowAlt: '#181818', rowHover: '#2e2e2e', selectionBg: '#1e4d8e' } },
37
+ { id: 'atlassian', name: 'Atlassian', radius: 3, font: '"Charlie Display", "Atlassian Sans", -apple-system, "Segoe UI", sans-serif',
38
+ light: { bg: '#ffffff', fg: '#172b4d', muted: '#44546f', border: '#dcdfe4', headerBg: '#fafbfc', headerFg: '#44546f', accent: '#0c66e4', rowAlt: '#ffffff', rowHover: '#f1f2f4', selectionBg: '#e9f2ff' },
39
+ dark: { bg: '#1d2125', fg: '#b6c2cf', muted: '#8590a2', border: '#38414a', headerBg: '#22272b', headerFg: '#8590a2', accent: '#579dff', rowAlt: '#1d2125', rowHover: '#2c333a', selectionBg: '#09326c' } },
40
+ { id: 'github', name: 'GitHub', radius: 6, font: '-apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif',
41
+ light: { bg: '#ffffff', fg: '#1f2328', muted: '#59636e', border: '#d1d9e0', headerBg: '#f6f8fa', headerFg: '#59636e', accent: '#0969da', rowAlt: '#ffffff', rowHover: '#f6f8fa', selectionBg: '#ddf4ff' },
42
+ dark: { bg: '#0d1117', fg: '#f0f6fc', muted: '#9198a1', border: '#3d444d', headerBg: '#151b23', headerFg: '#9198a1', accent: '#4493f8', rowAlt: '#0d1117', rowHover: '#151b23', selectionBg: 'rgba(56, 139, 253, 0.10)' } },
43
+ { id: 'antd', name: 'Ant Design', radius: 6, font: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "PingFang SC", sans-serif',
44
+ light: { bg: '#ffffff', fg: 'rgba(0, 0, 0, 0.88)', muted: 'rgba(0, 0, 0, 0.65)', border: '#d9d9d9', headerBg: '#fafafa', headerFg: 'rgba(0, 0, 0, 0.88)', accent: '#1677ff', rowAlt: '#ffffff', rowHover: '#f5f5f5', selectionBg: '#e6f4ff' },
45
+ dark: { bg: '#141414', fg: 'rgba(255, 255, 255, 0.85)', muted: 'rgba(255, 255, 255, 0.65)', border: '#424242', headerBg: '#1f1f1f', headerFg: 'rgba(255, 255, 255, 0.85)', accent: '#177ddc', rowAlt: '#141414', rowHover: '#262626', selectionBg: '#111a2c' } },
46
+ { id: 'ag-alpine', name: 'Alpine', radius: 3, font: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
47
+ light: { bg: '#ffffff', fg: '#181d1f', muted: 'rgba(24, 29, 31, 0.5)', border: '#babfc7', headerBg: '#f8f8f8', headerFg: '#181d1f', accent: '#2196f3', rowAlt: '#fcfcfc', rowHover: 'rgba(33, 150, 243, 0.1)', selectionBg: 'rgba(33, 150, 243, 0.3)' },
48
+ dark: { bg: '#181d1f', fg: '#ffffff', muted: 'rgba(255, 255, 255, 0.5)', border: '#68686e', headerBg: '#222628', headerFg: '#ffffff', accent: '#2196f3', rowAlt: '#222628', rowHover: 'rgba(33, 150, 243, 0.1)', selectionBg: 'rgba(33, 150, 243, 0.3)' } },
49
+ { id: 'bootstrap', name: 'Bootstrap 5', radius: 6, font: 'system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif',
50
+ light: { bg: '#ffffff', fg: '#212529', muted: '#6c757d', border: '#dee2e6', headerBg: '#f8f9fa', headerFg: '#212529', accent: '#0d6efd', rowAlt: '#fcfcfd', rowHover: '#f2f2f2', selectionBg: '#cfe2ff' },
51
+ dark: { bg: '#212529', fg: '#dee2e6', muted: '#adb5bd', border: '#495057', headerBg: '#2b3035', headerFg: '#dee2e6', accent: '#0d6efd', rowAlt: '#25292e', rowHover: '#2c3034', selectionBg: '#031633' } },
52
+ { id: 'vercel', name: 'Vercel', radius: 6, font: '"Geist", "Geist Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
53
+ light: { bg: '#ffffff', fg: '#000000', muted: '#666666', border: '#eaeaea', headerBg: '#fafafa', headerFg: '#666666', accent: '#0070f3', rowAlt: '#fafafa', rowHover: '#f5f5f5', selectionBg: '#e8f0fe' },
54
+ dark: { bg: '#000000', fg: '#ffffff', muted: '#888888', border: '#333333', headerBg: '#111111', headerFg: '#888888', accent: '#3291ff', rowAlt: '#0a0a0a', rowHover: '#1a1a1a', selectionBg: '#0d2847' } },
55
+ { id: 'linear', name: 'Linear', radius: 6, font: '"Inter Variable", "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',
56
+ light: { bg: '#ffffff', fg: '#282a30', muted: '#6b6f76', border: '#e9e9eb', headerBg: '#f7f8f8', headerFg: '#6b6f76', accent: '#5e6ad2', rowAlt: '#fbfbfc', rowHover: '#f4f4f5', selectionBg: '#e8eafd' },
57
+ dark: { bg: '#08090a', fg: '#f7f8f8', muted: '#8a8f98', border: '#23252a', headerBg: '#0f1011', headerFg: '#8a8f98', accent: '#5e6ad2', rowAlt: '#0f1011', rowHover: '#1a1b1e', selectionBg: '#2a2d4a' } },
58
+ { id: 'notion', name: 'Notion', radius: 4, font: 'ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif',
59
+ light: { bg: '#ffffff', fg: '#37352f', muted: '#787774', border: '#e9e9e7', headerBg: '#f7f6f3', headerFg: '#787774', accent: '#2383e2', rowAlt: '#fbfbfa', rowHover: '#f1f1ef', selectionBg: '#d9eaf7' },
60
+ dark: { bg: '#191919', fg: '#d4d4d4', muted: '#9b9b9b', border: '#2f2f2f', headerBg: '#202020', headerFg: '#9b9b9b', accent: '#529cca', rowAlt: '#1c1c1c', rowHover: '#252525', selectionBg: '#20415c' } },
61
+ { id: 'nord', name: 'Nord', radius: 4, font: '"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
62
+ light: { bg: '#eceff4', fg: '#2e3440', muted: '#4c566a', border: '#d8dee9', headerBg: '#e5e9f0', headerFg: '#2e3440', accent: '#5e81ac', rowAlt: '#e5e9f0', rowHover: '#dde3ec', selectionBg: '#d8dee9' },
63
+ dark: { bg: '#2e3440', fg: '#d8dee9', muted: '#4c566a', border: '#434c5e', headerBg: '#3b4252', headerFg: '#e5e9f0', accent: '#88c0d0', rowAlt: '#333b48', rowHover: '#3b4252', selectionBg: '#434c5e' } },
64
+ { id: 'dracula', name: 'Dracula', radius: 6, font: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
65
+ light: { bg: '#fffbeb', fg: '#1f1f1f', muted: '#6c664b', border: '#dedccf', headerBg: '#ece9df', headerFg: '#1f1f1f', accent: '#644ac9', rowAlt: '#fffdf5', rowHover: '#f2efe3', selectionBg: '#cfcfde' },
66
+ dark: { bg: '#282a36', fg: '#f8f8f2', muted: '#6272a4', border: '#44475a', headerBg: '#21222c', headerFg: '#f8f8f2', accent: '#bd93f9', rowAlt: '#2d2f3b', rowHover: '#343746', selectionBg: '#44475a' } },
67
+ { id: 'catppuccin', name: 'Catppuccin', radius: 8, font: '"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
68
+ light: { bg: '#eff1f5', fg: '#4c4f69', muted: '#6c6f85', border: '#ccd0da', headerBg: '#e6e9ef', headerFg: '#4c4f69', accent: '#8839ef', rowAlt: '#e6e9ef', rowHover: '#dce0e8', selectionBg: '#dce0e8' },
69
+ dark: { bg: '#1e1e2e', fg: '#cdd6f4', muted: '#a6adc8', border: '#313244', headerBg: '#181825', headerFg: '#cdd6f4', accent: '#cba6f7', rowAlt: '#1a1a28', rowHover: '#313244', selectionBg: '#45475a' } },
70
+ ];
71
+ /** The default preset (used when nothing is chosen). */
72
+ export const defaultThemePreset = themePresets.find((t) => t.id === 'tailwind') ?? themePresets[0];
73
+ /** Look up a preset by id. */
74
+ export const getThemePreset = (id) => id ? themePresets.find((t) => t.id === id) : undefined;
75
+ /** A readable (near-black / white) foreground for text placed on the accent. */
76
+ function onAccent(accent) {
77
+ const m = /^#?([0-9a-f]{6})$/i.exec(accent.trim());
78
+ if (!m)
79
+ return '#ffffff';
80
+ const n = parseInt(m[1], 16);
81
+ const r = (n >> 16) & 255, g = (n >> 8) & 255, b = n & 255;
82
+ // Perceived luminance (sRGB, quick approximation).
83
+ const lum = (0.299 * r + 0.587 * g + 0.114 * b) / 255;
84
+ return lum > 0.6 ? '#18181b' : '#ffffff';
85
+ }
86
+ /** Resolve the effective `--sg-*` tokens for a preset in a given mode, with an
87
+ * optional accent override applied. */
88
+ export function resolveThemeTokens(preset, mode, accentOverride) {
89
+ const resolved = preset ?? defaultThemePreset;
90
+ const p = resolved[mode];
91
+ const accent = accentOverride || p.accent;
92
+ return {
93
+ '--sg-bg': p.bg,
94
+ '--sg-fg': p.fg,
95
+ '--sg-muted': p.muted,
96
+ '--sg-border': p.border,
97
+ '--sg-header-bg': p.headerBg,
98
+ '--sg-header-fg': p.headerFg,
99
+ // A subtle inset surface (used by e.g. the master-detail region behind the
100
+ // nested grid). Themed so it isn't a fixed light grey on dark presets.
101
+ '--sg-bg-subtle': p.headerBg,
102
+ '--sg-row-alt-bg': p.rowAlt,
103
+ '--sg-row-hover-bg': p.rowHover,
104
+ '--sg-selection-bg': p.selectionBg,
105
+ // Inputs/checkboxes: pin to the theme's own surface so they never borrow the
106
+ // host page's input tokens (which is how a themed grid ended up with dark
107
+ // checkboxes on a light page when the host mode differed).
108
+ '--sg-input-bg': p.bg,
109
+ '--sg-input-border': p.border,
110
+ '--sg-accent': accent,
111
+ '--sg-on-accent': onAccent(accent),
112
+ '--sg-radius': `${resolved.radius}px`,
113
+ '--sg-font': resolved.font,
114
+ // The grid's custom scrollbar is a shadow-DOM web component that reads its
115
+ // OWN --sg-scrollbar-* tokens (with fixed light-mode fallbacks). Without
116
+ // these it ignores the theme entirely - a light scrollbar left on a dark
117
+ // grid. CSS custom properties pierce shadow DOM, so defining them here (on
118
+ // the themed container) reaches the scrollbar. Derive them from the palette
119
+ // so the scrollbar tracks the preset + light/dark mode like everything else.
120
+ '--sg-scrollbar-bg': p.headerBg,
121
+ '--sg-scrollbar-border': p.border,
122
+ '--sg-scrollbar-thumb': p.muted,
123
+ '--sg-scrollbar-thumb-hover': p.fg,
124
+ '--sg-scrollbar-thumb-active': p.fg,
125
+ '--sg-scrollbar-arrow': p.muted,
126
+ '--sg-scrollbar-arrow-hover': p.fg,
127
+ '--sg-scrollbar-arrow-hover-bg': p.rowHover,
128
+ '--sg-scrollbar-arrow-active': p.fg,
129
+ '--sg-scrollbar-arrow-active-bg': p.selectionBg,
130
+ '--sg-scrollbar-arrow-disabled': p.border,
131
+ };
132
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@svgrid/grid",
3
- "version": "2.0.2",
3
+ "version": "2.1.1",
4
4
  "description": "SvGrid - a headless-first, Svelte 5-native data grid engine and render component.",
5
5
  "author": "jQWidgets <boikom@jqwidgets.com>",
6
6
  "license": "MIT",
@@ -52,6 +52,12 @@
52
52
  "svelte": "./dist/flex-render.js",
53
53
  "import": "./dist/flex-render.js"
54
54
  },
55
+ "./themes": {
56
+ "types": "./dist/themes/index.d.ts",
57
+ "svelte": "./dist/themes/index.js",
58
+ "import": "./dist/themes/index.js"
59
+ },
60
+ "./themes/*.css": "./themes/*.css",
55
61
  "./package.json": "./package.json"
56
62
  },
57
63
  "engines": {
@@ -59,7 +65,8 @@
59
65
  },
60
66
  "files": [
61
67
  "dist",
62
- "src"
68
+ "src",
69
+ "themes"
63
70
  ],
64
71
  "scripts": {
65
72
  "clean": "rimraf ./build && rimraf ./dist",
@@ -67,7 +74,7 @@
67
74
  "test:types": "svelte-check --tsconfig ./tsconfig.json",
68
75
  "test:lib": "vitest run --coverage",
69
76
  "test:build": "publint --strict",
70
- "build": "svelte-package --input ./src --output ./dist && node ../../tools/strip-dist-tests.mjs ./dist && node ./scripts/build-cdn.mjs"
77
+ "build": "svelte-package --input ./src --output ./dist && node ../../tools/strip-dist-tests.mjs ./dist && node ./scripts/build-cdn.mjs && node ./scripts/build-themes.mjs"
71
78
  },
72
79
  "devDependencies": {
73
80
  "@sveltejs/package": "^2.5.7",
package/src/SvGrid.css CHANGED
@@ -12,6 +12,7 @@
12
12
  * viewport. */
13
13
  .sv-grid-root {
14
14
  position: relative;
15
+ font-family: var(--sg-font, inherit);
15
16
  }
16
17
  .sv-grid-sr-only {
17
18
  position: absolute;
@@ -647,12 +648,12 @@
647
648
  .sv-grid-pinned-row td {
648
649
  position: sticky;
649
650
  z-index: 4;
650
- background: var(--sg-pinned-bg, color-mix(in oklab, #6366f1 4%, #ffffff));
651
- border-bottom: 1px solid var(--sg-pinned-border, color-mix(in oklab, #6366f1 24%, transparent));
651
+ background: var(--sg-pinned-bg, color-mix(in oklab, var(--sg-header-bg, #f1f5f9) 92%, var(--sg-accent, #2563eb) 8%));
652
+ border-bottom: 1px solid var(--sg-pinned-border, color-mix(in oklab, var(--sg-accent, #2563eb) 24%, transparent));
652
653
  font-weight: 600;
653
654
  }
654
655
  .sv-grid-pinned-row-top td { top: var(--sg-thead-h, 36px); }
655
- .sv-grid-pinned-row-bottom td { bottom: 0; border-top: 1px solid var(--sg-pinned-border, color-mix(in oklab, #6366f1 24%, transparent)); }
656
+ .sv-grid-pinned-row-bottom td { bottom: 0; border-top: 1px solid var(--sg-pinned-border, color-mix(in oklab, var(--sg-accent, #2563eb) 24%, transparent)); }
656
657
  /* Stack multiple pinned-top rows: row 1 stops at thead, row 2 stops
657
658
  * at thead + 36px, etc. The component itself sets --sg-pinned-top-h
658
659
  * to the current pinned-top stack height via $effect. */
@@ -1569,7 +1569,7 @@
1569
1569
  flex-direction: column;
1570
1570
  background: var(--sg-bg, #fff);
1571
1571
  color: var(--sg-fg, #101828);
1572
- font-family: var(--sg-font-family, inherit);
1572
+ font-family: var(--sg-font, inherit);
1573
1573
  }
1574
1574
  .sv-board.is-swim {
1575
1575
  overflow-y: auto;