@metricinsights/pp-dev 1.5.0-beta.23 → 1.5.0-beta.24

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@metricinsights/pp-dev",
3
3
  "type": "commonjs",
4
- "version": "1.5.0-beta.23",
4
+ "version": "1.5.0-beta.24",
5
5
  "description": "Portal Page dev build tool",
6
6
  "bin": {
7
7
  "pp-dev": "bin/pp-dev.js"
@@ -47,15 +47,16 @@
47
47
  },
48
48
  "chokidar": "^5.0.0",
49
49
  "file-type": "^22.2.0",
50
+ "glob": "^14.0.3",
50
51
  "http-cache-semantics": ">=4.3.0",
51
52
  "ip-address": ">=10.7.1",
52
53
  "js-yaml": ">=4.3.1",
53
- "minimatch": "10.2.5",
54
+ "minimatch": "11.0.4",
54
55
  "nanoid": "3.3.18",
55
56
  "next@*": {
56
57
  "postcss": "8.5.23"
57
58
  },
58
- "qs": ">=6.15.2",
59
+ "qs": ">=6.16.1",
59
60
  "serialize-javascript": ">=7.1.2",
60
61
  "sharp": "^0.35.5",
61
62
  "tar": "^7.5.22",
@@ -1,3 +1,3 @@
1
- *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}:root,:root[data-pp-dev-theme=light]{--bg: #ffffff;--bg2: #f4f5f7;--bg3: #e9ebef;--bg4: #dbdee3;--border: #d7dae0;--border2: #c2c6cd;--text: #1a1a1e;--text2: #54566b;--text3: #8a8c9c;--accent: #4f46e5;--accent2: #7c3aed;--m-accent: var(--accent);--m-bg2: var(--bg2);--green: #16a34a;--red: #dc2626;--yellow: #a16207;--blue: #2563eb;--btn-primary-fg: #ffffff;--font-mono: 'Cascadia Code', 'Fira Code', 'JetBrains Mono', Consolas, monospace;--font-ui: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif}:root[data-pp-dev-theme=dark]{--bg: #1a1a1e;--bg2: #222228;--bg3: #2a2a32;--bg4: #32323c;--border: #3a3a46;--border2: #4a4a58;--text: #e0e0f0;--text2: #a0a0b8;--text3: #606078;--accent: #6e8efb;--accent2: #a78bfa;--m-accent: var(--accent);--m-bg2: var(--bg2);--green: #4ade80;--red: #f87171;--yellow: #fbbf24;--blue: #60a5fa;--btn-primary-fg: #0d0d10}@media(prefers-color-scheme: dark){:root{--bg: #1a1a1e;--bg2: #222228;--bg3: #2a2a32;--bg4: #32323c;--border: #3a3a46;--border2: #4a4a58;--text: #e0e0f0;--text2: #a0a0b8;--text3: #606078;--accent: #6e8efb;--accent2: #a78bfa;--m-accent: var(--accent);--m-bg2: var(--bg2);--green: #4ade80;--red: #f87171;--yellow: #fbbf24;--blue: #60a5fa;--btn-primary-fg: #0d0d10}}html,body{height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:13px;line-height:1.5}.app{display:flex;flex-direction:column;height:100vh}.toolbar{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg2);border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap}.toolbar-title{font-weight:600;font-size:14px;margin-right:8px}.tabs{display:flex;gap:4px}.tab{padding:5px 12px;border-radius:4px;border:1px solid rgba(0,0,0,0);background:rgba(0,0,0,0);color:var(--text2);font-size:12px;cursor:pointer}.tab:hover{background:var(--bg3);color:var(--text)}.tab.active{background:var(--bg4);color:var(--text);border-color:var(--border2)}.toolbar-spacer{flex:1}.ve-loading-indicator{display:inline-flex;align-items:center;gap:6px;color:var(--text3);font-size:11px}.ve-loading-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);animation:ve-pulse 1s ease-in-out infinite}.ve-skeleton{padding:16px}.ve-skeleton-row{height:32px;border-radius:4px;background:var(--bg3);margin-bottom:8px;animation:ve-pulse 1.4s ease-in-out infinite}.ve-skeleton-row:nth-child(2){width:92%}.ve-skeleton-row:nth-child(3){width:96%}.ve-skeleton-row:nth-child(4){width:88%}.ve-skeleton-row:nth-child(5){width:94%}@keyframes ve-pulse{0%,100%{opacity:1}50%{opacity:.4}}.theme-switch{display:flex;gap:2px;background:var(--bg3);border:1px solid var(--border);border-radius:4px;padding:2px}.theme-switch button{padding:3px 8px;border:none;border-radius:3px;background:rgba(0,0,0,0);color:var(--text2);font-size:11px;cursor:pointer;font-family:var(--font-ui)}.theme-switch button.active{background:var(--accent);color:var(--btn-primary-fg)}.btn{padding:5px 12px;border-radius:4px;border:1px solid var(--border);background:var(--bg3);color:var(--text);font-size:12px;cursor:pointer;transition:background .1s}.btn:hover{background:var(--bg4);border-color:var(--border2)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--btn-primary-fg);font-weight:600}.btn-primary:hover{opacity:.9;background:var(--accent)}.btn-sm{padding:5px 8px;font-size:11px;min-width:30px;min-height:30px}.local-update-btn{position:fixed;right:16px;bottom:16px;z-index:20;box-shadow:0 4px 16px rgba(0,0,0,.25)}.local-update-btn[hidden]{display:none}.content{flex:1;overflow:auto;padding:14px}.banner{margin-bottom:12px;padding:8px 12px;border-radius:4px;font-size:12px}.banner-warning{background:color-mix(in srgb, var(--yellow) 15%, var(--bg));color:var(--yellow);border:1px solid color-mix(in srgb, var(--yellow) 40%, var(--bg))}.banner-error{background:color-mix(in srgb, var(--red) 15%, var(--bg));color:var(--red);border:1px solid color-mix(in srgb, var(--red) 40%, var(--bg))}.banner-success{background:color-mix(in srgb, var(--green) 15%, var(--bg));color:var(--green);border:1px solid color-mix(in srgb, var(--green) 40%, var(--bg))}.banner ul{margin:6px 0 0 18px}table{width:100%;border-collapse:separate;border-spacing:0;font-size:12px}thead{border-radius:6px 6px 0 0;overflow:hidden}thead th{padding:8px 8px 6px}th{text-align:left;padding:6px 8px;color:var(--text2);border-bottom:1px solid var(--border);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.4px;background:var(--bg2)}thead th:first-child{border-radius:6px 0 0 0}thead th:last-child{border-radius:0 6px 0 0}td{padding:12px 8px;vertical-align:top}tr:hover td{background:var(--bg2)}input[type=text],select,textarea{width:100%;background:var(--bg3);border:1px solid var(--border);color:var(--text);padding:4px 6px;border-radius:4px;font-size:12px;font-family:var(--font-mono);outline:none;min-height:30px}input[type=text]:focus,select:focus,textarea:focus{border-color:var(--accent)}input[type=color]{max-width:150px;width:100%;height:30px;padding:0;border:1px solid var(--border);border-radius:4px;background:var(--bg3)}textarea{resize:vertical;min-height:32px}.cell-textarea{min-height:30px;height:30px;resize:none;overflow:hidden;line-height:1.8}.col-name{width:180px}.col-type{width:130px}.col-source{width:110px}.col-actions{width:70px;text-align:right}.col-expand{width:48px;padding-left:0px;padding-right:0 !important}.ve-expand-cell{display:flex;align-items:center;gap:2px}.ve-schema-row-handle{flex-shrink:0;width:18px;height:22px;display:inline-flex;align-items:center;justify-content:center;cursor:grab;color:var(--text3);user-select:none;border:none;background:rgba(0,0,0,0);font-size:20px;line-height:1;padding:0;letter-spacing:-2px}.ve-schema-row-handle:hover{color:var(--text2)}.ve-schema-row-handle:active{cursor:grabbing}tr.schema-row.is-dragging td,tr.details-row.is-dragging td{opacity:.45}tr.schema-row.is-drop-target td,tr.details-row.is-drop-target td{box-shadow:inset 0 2px 0 var(--accent)}.ve-expand-btn{width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:13px;line-height:1;color:var(--text2)}.ve-expand-btn:hover{color:var(--text)}.raw-toggle{margin-bottom:10px}.raw-editor{width:100%;height:min(60vh,600px);font-family:var(--font-mono);font-size:12px;white-space:pre}.hint{color:var(--text3);font-size:11px}.ve-md p{margin:0 0 4px}.ve-md p:last-child,.ve-md ul:last-child,.ve-md ol:last-child,.ve-md pre:last-child{margin-bottom:0}.ve-md ul,.ve-md ol{margin:0 0 4px;padding-left:18px}.ve-md code{font-family:var(--font-mono, monospace);background:var(--bg4);border-radius:3px;padding:0 3px}.ve-md pre{margin:0 0 4px;padding:6px 8px;background:var(--bg4);border-radius:4px;overflow-x:auto}.ve-md pre code{background:none;padding:0}.ve-md strong{color:var(--text2)}.details-row td{background:var(--bg2);padding:16px}.details-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:12px}.details-grid-item-wrapper{display:flex;gap:12px;grid-column:1/-1}.details-grid label{display:block;font-size:10px;color:var(--text3);text-transform:uppercase;margin-bottom:6px}.badge{font-size:10px;padding:1px 6px;border-radius:8px;background:var(--bg4);color:var(--text3);text-transform:uppercase;letter-spacing:.3px;white-space:nowrap}.badge-source-dataset{background:color-mix(in srgb, var(--yellow) 22%, var(--bg));color:var(--yellow)}.badge-source-static{background:var(--bg4);color:var(--text3)}.ve-values-layout{display:flex;gap:16px;align-items:stretch;height:calc(100vh - 115px);min-height:320px}.ve-values-detail>.ve-values-layout{height:100%;min-height:0}.ve-values-nav{width:280px;flex-shrink:0;display:flex;flex-direction:column;gap:8px;min-height:0}.ve-values-nav-list{display:flex;flex-direction:column;gap:6px;overflow:auto;min-height:0}.ve-values-nav-item{display:flex;align-items:center;gap:8px;min-height:30px;padding:6px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg2);color:var(--text);cursor:pointer;text-align:left;width:100%;font-family:var(--font-ui);font-size:12px}.ve-values-nav-item:hover{border-color:var(--border2);background:var(--bg3)}.ve-values-nav-item.is-active{border-color:var(--m-accent);background:color-mix(in srgb, var(--m-accent) 12%, var(--m-bg2))}.ve-values-nav-dot{width:8px;height:8px;border-radius:50%;background:var(--text3);flex-shrink:0}.ve-values-nav-item.is-active .ve-values-nav-dot{background:var(--m-accent)}.ve-values-nav-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono)}.ve-values-nav-badges{display:flex;gap:4px;flex-shrink:0;align-items:center}.ve-values-nav-add{border-style:dashed;justify-content:center;background:rgba(0,0,0,0)}.ve-values-nav-add:hover{background:var(--bg3)}.ve-values-detail{flex:1;min-width:0;overflow:auto;padding-right:10px}.ve-values-anchor{scroll-margin-top:12px}.ve-values-anchor.is-active{border-color:var(--accent)}.ve-values-anchor+.ve-values-anchor{margin-top:24px;padding-top:10px}.ve-values-detail-header{display:flex;align-items:center;gap:8px}.ve-values-detail-title{font-family:var(--font-mono);font-size:13px;font-weight:600}.ve-values-detail-header .ve-values-field-label{flex:1;min-width:0}.ve-values-detail-header .btn{margin-left:auto;flex-shrink:0}.ve-values-fields{display:grid;grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));gap:12px}.ve-values-field{display:flex;flex-direction:column;align-items:flex-start;gap:10px;min-width:0}.ve-values-field.is-wide{grid-column:1/-1}.ve-values-field-label{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--text3)}.ve-values-field-label>span:first-child{font-family:var(--font-mono)}.ve-values-field textarea,.ve-values-field input[type=text],.ve-values-field select{min-height:30px;height:30px;resize:none;overflow:hidden}.ve-values-empty{color:var(--text3);padding:24px 0}.ve-values-list-items{display:flex;flex-direction:column;gap:12px}.ve-values-list-item{background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:10px 8px 16px;display:flex;gap:6px;align-items:flex-start;transition:opacity .12s ease,border-color .12s ease,box-shadow .12s ease}.ve-values-list-item.is-dragging{opacity:.45}.ve-values-list-item.is-drop-target{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.ve-values-list-item-handle{flex-shrink:0;width:22px;align-self:stretch;display:inline-flex;align-items:center;justify-content:center;cursor:grab;color:var(--text3);user-select:none;border:none;background:rgba(0,0,0,0);font-size:16px;line-height:1;padding:0;letter-spacing:-2px}.ve-values-list-item-handle:hover{color:var(--text2)}.ve-values-list-item-handle:active{cursor:grabbing}.ve-values-list-item>.ve-values-fields{flex:1;min-width:0}.ve-values-list-item-remove{flex-shrink:0}.checkbox-row{display:flex;flex-wrap:wrap;gap:4px 16px}.details-grid .checkbox-label{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--text2);text-transform:none;margin-bottom:0}.checkbox-label input{width:auto}.empty-state{color:var(--text3);text-align:center;padding:40px}.ve-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:100}.ve-modal{background:var(--bg2);border:1px solid var(--border2);border-radius:6px;padding:16px;width:min(400px,90vw);box-shadow:0 8px 24px rgba(0,0,0,.4);position:relative}.ve-modal-diff{width:min(860px,94vw);min-width:min(500px,90vw);min-height:min(300px,80vh);max-height:85vh;display:flex;flex-direction:column}.ve-modal-wide{width:min(560px,90vw)}.ve-modal-title{font-size:12px;color:var(--text2);margin-bottom:8px}.ve-modal-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.ve-modal-title-row .ve-modal-title{margin-bottom:0;flex:1}.ve-modal-close{width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.ve-modal-body{font-size:12px;line-height:1.6;max-height:60vh;overflow-y:auto}.ve-modal-diff .ve-modal-body{flex:1;max-height:none;min-height:0;display:flex;flex-direction:column;gap:8px}.ve-diff-nav{display:flex;align-items:center;gap:8px;flex-shrink:0}.ve-diff-nav .btn{min-width:30px;min-height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center}.ve-diff-nav-count{font-size:12px;color:var(--text2);font-variant-numeric:tabular-nums;min-width:4.5em}.ve-diff{background:var(--bg);border:1px solid var(--border);border-radius:6px;overflow:auto;flex:1;min-height:180px;font-family:var(--font-mono);font-size:11px;line-height:1.55}.ve-diff-line{display:flex;gap:8px;padding:1px 8px;white-space:pre-wrap;word-break:break-word}.ve-diff-prefix{flex-shrink:0;width:12px;user-select:none;opacity:.8}.ve-diff-line.is-add{background:color-mix(in srgb, var(--green) 14%, var(--bg));color:var(--text)}.ve-diff-line.is-remove{background:color-mix(in srgb, var(--red) 14%, var(--bg));color:var(--text)}.ve-diff-line.is-add .ve-diff-prefix{color:var(--green)}.ve-diff-line.is-remove .ve-diff-prefix{color:var(--red)}.ve-diff-line.is-current-change{outline:1px solid var(--accent);outline-offset:-1px}.ve-diff-inline-add{background:color-mix(in srgb, var(--green) 35%, transparent);color:var(--green);font-weight:700;border-radius:2px}.ve-diff-inline-remove{background:color-mix(in srgb, var(--red) 35%, transparent);color:color-mix(in srgb, var(--red) 80%, #fff);font-weight:700;border-radius:2px}.ve-diff-empty{padding:24px;color:var(--text3);text-align:center}.ve-modal-body pre{background:var(--bg3);border:1px solid var(--border);border-radius:4px;padding:8px;font-family:var(--font-mono);font-size:11px;white-space:pre-wrap;word-break:break-word}.ve-modal-body code{background:var(--bg3);padding:1px 4px;border-radius:3px;font-family:var(--font-mono)}.ve-modal-actions{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:12px}.ve-modal-actions .hint{margin:0;margin-right:auto;text-align:left}.ve-combo{position:relative}.ve-combo-input{margin-bottom:0}.ve-combo-list{position:absolute;left:0;right:0;top:100%;z-index:10;max-height:220px;overflow-y:auto;background:var(--bg3);border:1px solid var(--border2);border-radius:4px;margin-top:2px;box-shadow:0 4px 12px rgba(0,0,0,.3)}.ve-combo-option{padding:5px 8px;font-size:12px;cursor:pointer}.ve-combo-option:hover{background:var(--bg4)}.ve-combo-chips{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}.ve-chip{display:inline-flex;align-items:center;gap:4px;background:var(--bg3);border:1px solid var(--border2);border-radius:10px;padding:2px 4px 2px 8px;font-size:11px}.ve-chip button{background:none;border:none;color:var(--text3);cursor:pointer;font-size:11px;padding:0 2px}.ve-chip button:hover{color:var(--text)}.ve-list-items{display:flex;flex-direction:column;gap:6px}.ve-list-item{display:flex;gap:6px;align-items:flex-start}.ve-list-item>input[type=text]{flex:1}.ve-list-item-cols{background:var(--bg2);border:1px solid var(--border);border-radius:4px;padding:8px;display:flex;gap:8px;align-items:flex-start}.ve-list-item-fields{display:flex;flex-direction:column;gap:8px;width:100%}.ve-list-field{display:flex;flex-direction:column;gap:6px;max-width:450px;width:100%}.ve-list-field label{font-size:10px;color:var(--text3)}.ve-list-field textarea,.ve-list-field input[type=text],.ve-list-field select{min-height:30px;height:30px;resize:none;overflow:hidden}.ve-list-item-actions{flex-shrink:0}.box-style{border:1px solid var(--border);border-radius:6px;padding:8px;background:var(--bg3)}.ve-ao-columns{display:flex;flex-direction:column;gap:8px;margin-top:8px}.ve-ao-column{background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:10px 8px 16px;display:flex;gap:6px;align-items:flex-start;transition:opacity .12s ease,border-color .12s ease,box-shadow .12s ease}.ve-ao-column.is-dragging{opacity:.45}.ve-ao-column.is-drop-target{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.ve-ao-column-handle{flex-shrink:0;width:22px;align-self:stretch;display:inline-flex;align-items:center;justify-content:center;cursor:grab;color:var(--text3);user-select:none;border:none;background:rgba(0,0,0,0);font-size:16px;line-height:1;padding:0;letter-spacing:-2px}.ve-ao-column-handle:hover{color:var(--text2)}.ve-ao-column-handle:active{cursor:grabbing}.ve-ao-column-fields{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.ve-ao-column-top{display:flex;gap:6px;align-items:flex-end}.ve-ao-column-field{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.ve-ao-column-field label{font-size:10px;color:var(--text3);text-transform:none;margin-bottom:0;font-family:var(--font-mono)}.ve-ao-column-name{position:relative;min-width:0}.ve-ao-column-name input{width:100%;padding-right:28px;font-family:var(--font-mono)}.ve-ao-column-remove{position:absolute;right:0px;top:50%;transform:translateY(-50%);width:24px;height:24px;padding:0;display:inline-flex;align-items:center;justify-content:center}.ve-ao-column-bottom{display:flex;gap:6px;align-items:flex-end}.ve-ao-column-bottom>.ve-ao-column-field{flex:1;min-width:0}.ve-json-issues{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.ve-json-issue-badge{display:inline-flex;align-items:center;gap:4px;background:color-mix(in srgb, var(--yellow) 15%, var(--bg));color:var(--yellow);border:1px solid color-mix(in srgb, var(--yellow) 40%, var(--bg));border-radius:10px;padding:2px 8px;font-size:11px;cursor:default}.ve-modal-back{background:none;border:none;color:var(--accent);font-size:11px;cursor:pointer;padding:0 0 4px;font-family:var(--font-ui);display:block}.ve-import-search{position:relative;margin-bottom:12px}.ve-import-search input{padding-left:28px}.ve-import-search::before{content:"⌕";position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--text3);font-size:14px;pointer-events:none}.ve-import-section-title{font-size:10.5px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin:14px 0 6px;font-weight:600}.ve-import-section-title:first-child{margin-top:0}.ve-import-page-list{display:flex;flex-direction:column;gap:5px}.ve-import-page-row{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg3);color:var(--text);cursor:pointer;font-family:var(--font-ui);font-size:12px}.ve-import-page-row:hover{border-color:var(--accent)}.ve-import-page-name{font-weight:500}.ve-import-page-slug{font-size:11px;color:var(--text3);font-family:var(--font-mono);margin-left:auto;flex-shrink:0}.ve-import-empty{padding:20px 4px;text-align:center;color:var(--text3);font-size:12px}.ve-import-list-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.ve-import-list-head .badge{background:color-mix(in srgb, var(--green) 18%, var(--bg));color:var(--green)}.ve-import-select-all{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--text2);cursor:pointer;text-transform:none}.ve-import-list{display:flex;flex-direction:column;gap:6px}.ve-import-row{display:flex;align-items:flex-start;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg3);cursor:pointer}.ve-import-row input[type=checkbox]{margin-top:2px;flex-shrink:0}.ve-import-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.ve-import-row-top{display:flex;align-items:center;gap:8px}.ve-import-row-name{font-family:var(--font-mono);font-size:12px;font-weight:600}.ve-import-row-value{font-size:11.5px;color:var(--text2);font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ve-import-swatch{width:12px;height:12px;border-radius:3px;border:1px solid var(--border2);flex-shrink:0;display:inline-block;vertical-align:-1px;margin-right:5px}.ve-import-skip-row{display:flex;align-items:baseline;gap:8px;padding:7px 10px;opacity:.85}.ve-import-skip-row .ve-import-row-name{color:var(--text2)}.ve-import-skip-reason{font-size:11.5px;color:var(--text3)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--bg4);border-radius:4px}body[data-template-less=true] .ve-template-only{display:none !important}
1
+ *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}:root,:root[data-pp-dev-theme=light]{--bg: #ffffff;--bg2: #f4f5f7;--bg3: #e9ebef;--bg4: #dbdee3;--border: #d7dae0;--border2: #c2c6cd;--text: #1a1a1e;--text2: #54566b;--text3: #8a8c9c;--accent: #4f46e5;--accent2: #7c3aed;--m-accent: var(--accent);--m-bg2: var(--bg2);--green: #16a34a;--red: #dc2626;--yellow: #a16207;--blue: #2563eb;--btn-primary-fg: #ffffff;--font-mono: 'Cascadia Code', 'Fira Code', 'JetBrains Mono', Consolas, monospace;--font-ui: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif}:root[data-pp-dev-theme=dark]{--bg: #1a1a1e;--bg2: #222228;--bg3: #2a2a32;--bg4: #32323c;--border: #3a3a46;--border2: #4a4a58;--text: #e0e0f0;--text2: #a0a0b8;--text3: #606078;--accent: #6e8efb;--accent2: #a78bfa;--m-accent: var(--accent);--m-bg2: var(--bg2);--green: #4ade80;--red: #f87171;--yellow: #fbbf24;--blue: #60a5fa;--btn-primary-fg: #0d0d10}@media(prefers-color-scheme: dark){:root{--bg: #1a1a1e;--bg2: #222228;--bg3: #2a2a32;--bg4: #32323c;--border: #3a3a46;--border2: #4a4a58;--text: #e0e0f0;--text2: #a0a0b8;--text3: #606078;--accent: #6e8efb;--accent2: #a78bfa;--m-accent: var(--accent);--m-bg2: var(--bg2);--green: #4ade80;--red: #f87171;--yellow: #fbbf24;--blue: #60a5fa;--btn-primary-fg: #0d0d10}}html,body{height:100%;overflow:hidden;background:var(--bg);color:var(--text);font-family:var(--font-ui);font-size:13px;line-height:1.5}.app{display:flex;flex-direction:column;height:100vh}.toolbar{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--bg2);border-bottom:1px solid var(--border);flex-shrink:0;flex-wrap:wrap}.toolbar-title{font-weight:600;font-size:14px;margin-right:8px}.tabs{display:flex;gap:4px}.tab{padding:5px 12px;border-radius:4px;border:1px solid rgba(0,0,0,0);background:rgba(0,0,0,0);color:var(--text2);font-size:12px;cursor:pointer}.tab:hover{background:var(--bg3);color:var(--text)}.tab.active{background:var(--bg4);color:var(--text);border-color:var(--border2)}.toolbar-spacer{flex:1}.ve-loading-indicator{display:inline-flex;align-items:center;gap:6px;color:var(--text3);font-size:11px}.ve-loading-dot{width:6px;height:6px;border-radius:50%;background:var(--accent);animation:ve-pulse 1s ease-in-out infinite}.ve-skeleton{padding:16px}.ve-skeleton-row{height:32px;border-radius:4px;background:var(--bg3);margin-bottom:8px;animation:ve-pulse 1.4s ease-in-out infinite}.ve-skeleton-row:nth-child(2){width:92%}.ve-skeleton-row:nth-child(3){width:96%}.ve-skeleton-row:nth-child(4){width:88%}.ve-skeleton-row:nth-child(5){width:94%}@keyframes ve-pulse{0%,100%{opacity:1}50%{opacity:.4}}.theme-switch{display:flex;gap:2px;background:var(--bg3);border:1px solid var(--border);border-radius:4px;padding:2px}.theme-switch button{padding:3px 8px;border:none;border-radius:3px;background:rgba(0,0,0,0);color:var(--text2);font-size:11px;cursor:pointer;font-family:var(--font-ui)}.theme-switch button.active{background:var(--accent);color:var(--btn-primary-fg)}.btn{padding:5px 12px;border-radius:4px;border:1px solid var(--border);background:var(--bg3);color:var(--text);font-size:12px;cursor:pointer;transition:background .1s}.btn:hover{background:var(--bg4);border-color:var(--border2)}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--btn-primary-fg);font-weight:600}.btn-primary:hover{opacity:.9;background:var(--accent)}.btn-sm{padding:5px 8px;font-size:11px;min-width:30px;min-height:30px}.local-update-btn{position:fixed;right:16px;bottom:16px;z-index:20;box-shadow:0 4px 16px rgba(0,0,0,.25)}.local-update-btn[hidden]{display:none}.content{flex:1;overflow:auto;padding:14px}.banner{margin-bottom:12px;padding:8px 12px;border-radius:4px;font-size:12px}.banner-warning{background:color-mix(in srgb, var(--yellow) 15%, var(--bg));color:var(--yellow);border:1px solid color-mix(in srgb, var(--yellow) 40%, var(--bg))}.banner-error{background:color-mix(in srgb, var(--red) 15%, var(--bg));color:var(--red);border:1px solid color-mix(in srgb, var(--red) 40%, var(--bg))}.banner-success{background:color-mix(in srgb, var(--green) 15%, var(--bg));color:var(--green);border:1px solid color-mix(in srgb, var(--green) 40%, var(--bg))}.banner ul{margin:6px 0 0 18px}table{width:100%;border-collapse:separate;border-spacing:0;font-size:12px}thead{border-radius:6px 6px 0 0;overflow:hidden}thead th{padding:8px 8px 6px}th{text-align:left;padding:6px 8px;color:var(--text2);border-bottom:1px solid var(--border);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.4px;background:var(--bg2)}thead th:first-child{border-radius:6px 0 0 0}thead th:last-child{border-radius:0 6px 0 0}td{padding:12px 8px;vertical-align:top}tr:hover td{background:var(--bg2)}input[type=text],select,textarea{width:100%;background:var(--bg3);border:1px solid var(--border);color:var(--text);padding:4px 6px;border-radius:4px;font-size:12px;font-family:var(--font-mono);outline:none;min-height:30px}input[type=text]:focus,select:focus,textarea:focus{border-color:var(--accent)}input[type=color]{max-width:150px;width:100%;height:30px;padding:0;border:1px solid var(--border);border-radius:4px;background:var(--bg3)}textarea{resize:vertical;min-height:32px}.cell-textarea{min-height:30px;height:30px;resize:none;overflow:hidden;line-height:1.8}.col-name{width:180px}.col-type{width:130px}.col-source{width:110px}.col-actions{width:70px;text-align:right}.col-expand{width:48px;padding-left:0px;padding-right:0 !important}.ve-expand-cell{display:flex;align-items:center;gap:2px}.ve-schema-row-handle{flex-shrink:0;width:18px;height:22px;display:inline-flex;align-items:center;justify-content:center;cursor:grab;color:var(--text3);user-select:none;border:none;background:rgba(0,0,0,0);font-size:20px;line-height:1;padding:0;letter-spacing:-2px}.ve-schema-row-handle:hover{color:var(--text2)}.ve-schema-row-handle:active{cursor:grabbing}tr.schema-row.is-dragging td,tr.details-row.is-dragging td{opacity:.45}tr.schema-row.is-drop-target td,tr.details-row.is-drop-target td{box-shadow:inset 0 2px 0 var(--accent)}.ve-expand-btn{width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:13px;line-height:1;color:var(--text2)}.ve-expand-btn:hover{color:var(--text)}.raw-toggle{margin-bottom:10px}.raw-editor{width:100%;height:min(60vh,600px);font-family:var(--font-mono);font-size:12px;white-space:pre}.hint{color:var(--text3);font-size:11px}.ve-md p{margin:0 0 4px}.ve-md p:last-child,.ve-md ul:last-child,.ve-md ol:last-child,.ve-md pre:last-child{margin-bottom:0}.ve-md ul,.ve-md ol{margin:0 0 4px;padding-left:18px}.ve-md code{font-family:var(--font-mono, monospace);background:var(--bg4);border-radius:3px;padding:0 3px}.ve-md pre{margin:0 0 4px;padding:6px 8px;background:var(--bg4);border-radius:4px;overflow-x:auto}.ve-md pre code{background:none;padding:0}.ve-md strong{color:var(--text2)}.details-row td{background:var(--bg2);padding:16px}.details-grid{display:grid;grid-template-columns:repeat(auto-fit, minmax(280px, 1fr));gap:12px}.details-grid-item-wrapper{display:flex;gap:12px;grid-column:1/-1}.details-grid label{display:block;font-size:10px;color:var(--text3);font-family:var(--font-mono);margin-bottom:6px}.badge{font-size:10px;padding:1px 6px;border-radius:8px;background:var(--bg4);color:var(--text3);text-transform:uppercase;letter-spacing:.3px;white-space:nowrap}.badge-source-dataset{background:color-mix(in srgb, var(--yellow) 22%, var(--bg));color:var(--yellow)}.badge-source-static{background:var(--bg4);color:var(--text3)}.ve-values-layout{display:flex;gap:16px;align-items:stretch;height:calc(100vh - 115px);min-height:320px}.ve-values-detail>.ve-values-layout{height:100%;min-height:0}.ve-values-nav{width:280px;flex-shrink:0;display:flex;flex-direction:column;gap:8px;min-height:0}.ve-values-nav-list{display:flex;flex-direction:column;gap:6px;overflow:auto;min-height:0}.ve-values-nav-item{display:flex;align-items:center;gap:8px;min-height:30px;padding:6px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg2);color:var(--text);cursor:pointer;text-align:left;width:100%;font-family:var(--font-ui);font-size:12px}.ve-values-nav-item:hover{border-color:var(--border2);background:var(--bg3)}.ve-values-nav-item.is-active{border-color:var(--m-accent);background:color-mix(in srgb, var(--m-accent) 12%, var(--m-bg2))}.ve-values-nav-dot{width:8px;height:8px;border-radius:50%;background:var(--text3);flex-shrink:0}.ve-values-nav-item.is-active .ve-values-nav-dot{background:var(--m-accent)}.ve-values-nav-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--font-mono)}.ve-values-nav-badges{display:flex;gap:4px;flex-shrink:0;align-items:center}.ve-values-nav-add{border-style:dashed;justify-content:center;background:rgba(0,0,0,0)}.ve-values-nav-add:hover{background:var(--bg3)}.ve-values-detail{flex:1;min-width:0;overflow:auto;padding-right:10px}.ve-values-anchor{scroll-margin-top:12px}.ve-values-anchor.is-active{border-color:var(--accent)}.ve-values-anchor+.ve-values-anchor{margin-top:24px;padding-top:10px}.ve-values-detail-header{display:flex;align-items:center;gap:8px}.ve-values-detail-title{font-family:var(--font-mono);font-size:13px;font-weight:600}.ve-values-detail-header .ve-values-field-label{flex:1;min-width:0}.ve-values-detail-header .btn{margin-left:auto;flex-shrink:0}.ve-values-fields{display:grid;grid-template-columns:repeat(auto-fit, minmax(220px, 1fr));gap:12px}.ve-values-field{display:flex;flex-direction:column;align-items:flex-start;gap:10px;min-width:0}.ve-values-field.is-wide{grid-column:1/-1}.ve-values-field-label{display:flex;align-items:center;gap:6px;font-size:10px;color:var(--text3)}.ve-values-field-label>span:first-child{font-family:var(--font-mono)}.ve-values-field textarea,.ve-values-field input[type=text],.ve-values-field select{min-height:30px;height:30px;resize:none;overflow:hidden}.ve-values-empty{color:var(--text3);padding:24px 0}.ve-values-list-items{display:flex;flex-direction:column;gap:12px}.ve-values-list-item{background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:10px 8px 16px;display:flex;gap:6px;align-items:flex-start;transition:opacity .12s ease,border-color .12s ease,box-shadow .12s ease}.ve-values-list-item.is-dragging{opacity:.45}.ve-values-list-item.is-drop-target{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.ve-values-list-item-handle{flex-shrink:0;width:22px;align-self:stretch;display:inline-flex;align-items:center;justify-content:center;cursor:grab;color:var(--text3);user-select:none;border:none;background:rgba(0,0,0,0);font-size:16px;line-height:1;padding:0;letter-spacing:-2px}.ve-values-list-item-handle:hover{color:var(--text2)}.ve-values-list-item-handle:active{cursor:grabbing}.ve-values-list-item>.ve-values-fields{flex:1;min-width:0}.ve-values-list-item-remove{flex-shrink:0}.checkbox-row{display:flex;flex-wrap:wrap;gap:4px 16px}.details-grid .checkbox-label{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--text2);font-family:var(--font-ui);margin-bottom:0}.checkbox-label input{width:auto}.empty-state{color:var(--text3);text-align:center;padding:40px}.ve-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);display:flex;align-items:center;justify-content:center;z-index:100}.ve-modal{background:var(--bg2);border:1px solid var(--border2);border-radius:6px;padding:16px;width:min(400px,90vw);box-shadow:0 8px 24px rgba(0,0,0,.4);position:relative}.ve-modal-diff{width:min(860px,94vw);min-width:min(500px,90vw);min-height:min(300px,80vh);max-height:85vh;display:flex;flex-direction:column}.ve-modal-wide{width:min(560px,90vw)}.ve-modal-title{font-size:12px;color:var(--text2);margin-bottom:8px}.ve-modal-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}.ve-modal-title-row .ve-modal-title{margin-bottom:0;flex:1}.ve-modal-close{width:28px;height:28px;padding:0;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.ve-modal-body{font-size:12px;line-height:1.6;max-height:60vh;overflow-y:auto}.ve-modal-diff .ve-modal-body{flex:1;max-height:none;min-height:0;display:flex;flex-direction:column;gap:8px}.ve-diff-nav{display:flex;align-items:center;gap:8px;flex-shrink:0}.ve-diff-nav .btn{min-width:30px;min-height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center}.ve-diff-nav-count{font-size:12px;color:var(--text2);font-variant-numeric:tabular-nums;min-width:4.5em}.ve-diff{background:var(--bg);border:1px solid var(--border);border-radius:6px;overflow:auto;flex:1;min-height:180px;font-family:var(--font-mono);font-size:11px;line-height:1.55}.ve-diff-line{display:flex;gap:8px;padding:1px 8px;white-space:pre-wrap;word-break:break-word}.ve-diff-prefix{flex-shrink:0;width:12px;user-select:none;opacity:.8}.ve-diff-line.is-add{background:color-mix(in srgb, var(--green) 14%, var(--bg));color:var(--text)}.ve-diff-line.is-remove{background:color-mix(in srgb, var(--red) 14%, var(--bg));color:var(--text)}.ve-diff-line.is-add .ve-diff-prefix{color:var(--green)}.ve-diff-line.is-remove .ve-diff-prefix{color:var(--red)}.ve-diff-line.is-current-change{outline:1px solid var(--accent);outline-offset:-1px}.ve-diff-inline-add{background:color-mix(in srgb, var(--green) 35%, transparent);color:var(--green);font-weight:700;border-radius:2px}.ve-diff-inline-remove{background:color-mix(in srgb, var(--red) 35%, transparent);color:color-mix(in srgb, var(--red) 80%, #fff);font-weight:700;border-radius:2px}.ve-diff-empty{padding:24px;color:var(--text3);text-align:center}.ve-modal-body pre{background:var(--bg3);border:1px solid var(--border);border-radius:4px;padding:8px;font-family:var(--font-mono);font-size:11px;white-space:pre-wrap;word-break:break-word}.ve-modal-body code{background:var(--bg3);padding:1px 4px;border-radius:3px;font-family:var(--font-mono)}.ve-modal-actions{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:12px}.ve-modal-actions .hint{margin:0;margin-right:auto;text-align:left}.ve-combo{position:relative}.ve-combo-input{margin-bottom:0}.ve-combo-list{position:absolute;left:0;right:0;top:100%;z-index:10;max-height:220px;overflow-y:auto;background:var(--bg3);border:1px solid var(--border2);border-radius:4px;margin-top:2px;box-shadow:0 4px 12px rgba(0,0,0,.3)}.ve-combo-option{padding:5px 8px;font-size:12px;cursor:pointer}.ve-combo-option:hover{background:var(--bg4)}.ve-combo-chips{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}.ve-chip{display:inline-flex;align-items:center;gap:4px;background:var(--bg3);border:1px solid var(--border2);border-radius:10px;padding:2px 4px 2px 8px;font-size:11px}.ve-chip button{background:none;border:none;color:var(--text3);cursor:pointer;font-size:11px;padding:0 2px}.ve-chip button:hover{color:var(--text)}.ve-list-items{display:flex;flex-direction:column;gap:6px}.ve-list-item{display:flex;gap:6px;align-items:flex-start}.ve-list-item>input[type=text]{flex:1}.ve-list-item-cols{background:var(--bg2);border:1px solid var(--border);border-radius:4px;padding:8px;display:flex;gap:8px;align-items:flex-start}.ve-list-item-fields{display:flex;flex-direction:column;gap:8px;width:100%}.ve-list-field{display:flex;flex-direction:column;gap:6px;max-width:450px;width:100%}.ve-list-field label{font-size:10px;color:var(--text3)}.ve-list-field textarea,.ve-list-field input[type=text],.ve-list-field select{min-height:30px;height:30px;resize:none;overflow:hidden}.ve-list-item-actions{flex-shrink:0}.box-style{border:1px solid var(--border);border-radius:6px;padding:8px;background:var(--bg3)}.ve-ao-columns{display:flex;flex-direction:column;gap:8px;margin-top:8px}.ve-ao-column{background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:10px 8px 16px;display:flex;gap:6px;align-items:flex-start;transition:opacity .12s ease,border-color .12s ease,box-shadow .12s ease}.ve-ao-column.is-dragging{opacity:.45}.ve-ao-column.is-drop-target{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.ve-ao-column-handle{flex-shrink:0;width:22px;align-self:stretch;display:inline-flex;align-items:center;justify-content:center;cursor:grab;color:var(--text3);user-select:none;border:none;background:rgba(0,0,0,0);font-size:16px;line-height:1;padding:0;letter-spacing:-2px}.ve-ao-column-handle:hover{color:var(--text2)}.ve-ao-column-handle:active{cursor:grabbing}.ve-ao-column-fields{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.ve-ao-column-top{display:flex;gap:6px;align-items:flex-end}.ve-ao-column-field{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}.ve-ao-column-field label{font-size:10px;color:var(--text3);text-transform:none;margin-bottom:0;font-family:var(--font-mono)}.ve-ao-column-name{position:relative;min-width:0}.ve-ao-column-name input{width:100%;padding-right:28px;font-family:var(--font-mono)}.ve-ao-column-remove{position:absolute;right:0px;top:50%;transform:translateY(-50%);width:24px;height:24px;padding:0;display:inline-flex;align-items:center;justify-content:center}.ve-ao-column-bottom{display:flex;gap:6px;align-items:flex-end}.ve-ao-column-bottom>.ve-ao-column-field{flex:1;min-width:0}.ve-json-issues{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.ve-json-issue-badge{display:inline-flex;align-items:center;gap:4px;background:color-mix(in srgb, var(--yellow) 15%, var(--bg));color:var(--yellow);border:1px solid color-mix(in srgb, var(--yellow) 40%, var(--bg));border-radius:10px;padding:2px 8px;font-size:11px;cursor:default}.ve-modal-back{background:none;border:none;color:var(--accent);font-size:11px;cursor:pointer;padding:0 0 4px;font-family:var(--font-ui);display:block}.ve-import-search{position:relative;margin-bottom:12px}.ve-import-search input{padding-left:28px}.ve-import-search::before{content:"⌕";position:absolute;left:9px;top:50%;transform:translateY(-50%);color:var(--text3);font-size:14px;pointer-events:none}.ve-import-section-title{font-size:10.5px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;margin:14px 0 6px;font-weight:600}.ve-import-section-title:first-child{margin-top:0}.ve-import-page-list{display:flex;flex-direction:column;gap:5px}.ve-import-page-row{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg3);color:var(--text);cursor:pointer;font-family:var(--font-ui);font-size:12px}.ve-import-page-row:hover{border-color:var(--accent)}.ve-import-page-name{font-weight:500}.ve-import-page-slug{font-size:11px;color:var(--text3);font-family:var(--font-mono);margin-left:auto;flex-shrink:0}.ve-import-empty{padding:20px 4px;text-align:center;color:var(--text3);font-size:12px}.ve-import-list-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.ve-import-list-head .badge{background:color-mix(in srgb, var(--green) 18%, var(--bg));color:var(--green)}.ve-import-select-all{margin-left:auto;display:flex;align-items:center;gap:6px;font-size:11.5px;color:var(--text2);cursor:pointer;text-transform:none}.ve-import-list{display:flex;flex-direction:column;gap:6px}.ve-import-row{display:flex;align-items:flex-start;gap:10px;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg3);cursor:pointer}.ve-import-row input[type=checkbox]{margin-top:2px;flex-shrink:0}.ve-import-row-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.ve-import-row-top{display:flex;align-items:center;gap:8px}.ve-import-row-name{font-family:var(--font-mono);font-size:12px;font-weight:600}.ve-import-row-value{font-size:11.5px;color:var(--text2);font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ve-import-swatch{width:12px;height:12px;border-radius:3px;border:1px solid var(--border2);flex-shrink:0;display:inline-block;vertical-align:-1px;margin-right:5px}.ve-import-skip-row{display:flex;align-items:baseline;gap:8px;padding:7px 10px;opacity:.85}.ve-import-skip-row .ve-import-row-name{color:var(--text2)}.ve-import-skip-reason{font-size:11.5px;color:var(--text3)}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--bg4);border-radius:4px}body[data-template-less=true] .ve-template-only{display:none !important}
2
2
 
3
3
  /*# sourceMappingURL=variables-editor.css.map */
@@ -1 +1 @@
1
- {"version":3,"sourceRoot":"","sources":["variables-editor.scss"],"names":[],"mappings":"CACA,qBAGE,sBACA,SACA,UAEF,qCAEE,cACA,eACA,eACA,eACA,kBACA,mBACA,gBACA,iBACA,iBACA,kBACA,mBACA,0BACA,oBACA,iBACA,eACA,kBACA,gBACA,0BACA,iFACA,qEAEF,8BACE,cACA,eACA,eACA,eACA,kBACA,mBACA,gBACA,iBACA,iBACA,kBACA,mBACA,0BACA,oBACA,iBACA,eACA,kBACA,gBACA,0BAEF,mCACE,MACE,cACA,eACA,eACA,eACA,kBACA,mBACA,gBACA,iBACA,iBACA,kBACA,mBACA,0BACA,oBACA,iBACA,eACA,kBACA,gBACA,2BAGJ,UAEE,YACA,gBACA,qBACA,kBACA,2BACA,eACA,gBAEF,KACE,aACA,sBACA,aAEF,SACE,aACA,mBACA,QACA,iBACA,sBACA,sCACA,cACA,eAEF,eACE,gBACA,eACA,iBAEF,MACE,aACA,QAEF,KACE,iBACA,kBACA,+BACA,yBACA,mBACA,eACA,eAEF,WACE,sBACA,kBAEF,YACE,sBACA,kBACA,4BAEF,gBACE,OAEF,sBACE,oBACA,mBACA,QACA,mBACA,eAEF,gBACE,UACA,WACA,kBACA,yBACA,2CAEF,aACE,aAEF,iBACE,YACA,kBACA,sBACA,kBACA,6CAEF,8BACE,UAEF,8BACE,UAEF,8BACE,UAEF,8BACE,UAEF,oBACE,QAEE,UAEF,IACE,YAGJ,cACE,aACA,QACA,sBACA,+BACA,kBACA,YAEF,qBACE,gBACA,YACA,kBACA,yBACA,mBACA,eACA,eACA,2BAEF,4BACE,yBACA,4BAEF,KACE,iBACA,kBACA,+BACA,sBACA,kBACA,eACA,eACA,0BAEF,WACE,sBACA,4BAEF,aACE,yBACA,2BACA,4BACA,gBAEF,mBACE,WACA,yBAEF,QACE,gBACA,eACA,eACA,gBAEF,kBACE,eACA,WACA,YACA,WACA,sCAEF,0BACE,aAEF,SACE,OACA,cACA,aAEF,QACE,mBACA,iBACA,kBACA,eAEF,gBACE,4DACA,oBACA,kEAEF,cACE,yDACA,iBACA,+DAEF,gBACE,2DACA,mBACA,iEAEF,WACE,oBAEF,MACE,WACA,yBACA,iBACA,eAEF,MACE,0BACA,gBAEF,SACE,oBAEF,GACE,gBACA,gBACA,mBACA,sCACA,gBACA,eACA,yBACA,oBACA,sBAEF,qBACE,wBAEF,oBACE,wBAEF,GACE,iBACA,mBAEF,YACE,sBAEF,iCAGE,WACA,sBACA,+BACA,kBACA,gBACA,kBACA,eACA,6BACA,aACA,gBAEF,mDAGE,2BAEF,kBACE,gBACA,WACA,YACA,UACA,+BACA,kBACA,sBAEF,SACE,gBACA,gBAEF,eACE,gBACA,YACA,YACA,gBACA,gBAEF,UACE,YAEF,UACE,YAEF,YACE,YAEF,aACE,WACA,iBAEF,YACE,WACA,iBACA,2BAEF,gBACE,aACA,mBACA,QAEF,sBACE,cACA,WACA,YACA,oBACA,mBACA,uBACA,YACA,mBACA,iBACA,YACA,yBACA,eACA,cACA,UACA,oBAEF,4BACE,mBAEF,6BACE,gBAEF,2DAEE,YAEF,iEAEE,uCAEF,eACE,WACA,YACA,UACA,oBACA,mBACA,uBACA,eACA,cACA,mBAEF,qBACE,kBAEF,YACE,mBAEF,YACE,WACA,uBACA,6BACA,eACA,gBAEF,MACE,mBACA,eAEF,SACE,eAEF,oFAIE,gBAEF,oBAEE,eACA,kBAEF,YACE,wCACA,sBACA,kBACA,cAEF,WACE,eACA,gBACA,sBACA,kBACA,gBAEF,gBACE,gBACA,UAEF,cACE,mBAEF,gBACE,sBACA,aAEF,cACE,aACA,2DACA,SAEF,2BACE,aACA,SACA,iBAEF,oBACE,cACA,eACA,mBACA,yBACA,kBAEF,OACE,eACA,gBACA,kBACA,sBACA,mBACA,yBACA,oBACA,mBAEF,sBACE,4DACA,oBAEF,qBACE,sBACA,mBAEF,kBACE,aACA,SACA,oBACA,2BACA,iBAEF,oCACE,YACA,aAEF,eACE,YACA,cACA,aACA,sBACA,QACA,aAEF,oBACE,aACA,sBACA,QACA,cACA,aAEF,oBACE,aACA,mBACA,QACA,gBACA,iBACA,+BACA,kBACA,sBACA,kBACA,eACA,gBACA,WACA,2BACA,eAEF,0BACE,4BACA,sBAEF,8BACE,6BACA,iEAEF,mBACE,UACA,WACA,kBACA,wBACA,cAEF,iDACE,2BAEF,qBACE,OACA,YACA,gBACA,uBACA,mBACA,6BAEF,sBACE,aACA,QACA,cACA,mBAEF,mBACE,oBACA,uBACA,yBAEF,yBACE,sBAEF,kBACE,OACA,YACA,cACA,mBAEF,kBACE,uBAEF,4BACE,2BAEF,oCACE,gBACA,iBAEF,yBACE,aACA,mBACA,QAEF,wBACE,6BACA,eACA,gBAEF,gDACE,OACA,YAEF,8BACE,iBACA,cAEF,kBACE,aACA,2DACA,SAEF,iBACE,aACA,sBACA,uBACA,SACA,YAEF,yBACE,iBAEF,uBACE,aACA,mBACA,QACA,eACA,mBAEF,wCACE,6BAEF,oFAGE,gBACA,YACA,YACA,gBAEF,iBACE,mBACA,eAEF,sBACE,aACA,sBACA,SAEF,qBACE,qBACA,+BACA,kBACA,sBACA,aACA,QACA,uBACA,WACE,8DAIJ,iCACE,YAEF,oCACE,2BACA,mCAEF,4BACE,cACA,WACA,mBACA,oBACA,mBACA,uBACA,YACA,mBACA,iBACA,YACA,yBACA,eACA,cACA,UACA,oBAEF,kCACE,mBAEF,mCACE,gBAEF,uCACE,OACA,YAEF,4BACE,cAEF,cACE,aACA,eACA,aAEF,8BACE,oBACA,mBACA,QACA,eACA,mBACA,oBACA,gBAEF,sBACE,WAEF,aACE,mBACA,kBACA,aAEF,kBACE,eACA,QACA,0BACA,aACA,mBACA,uBACA,YAEF,UACE,sBACA,gCACA,kBACA,aACA,sBACA,qCACA,kBAEF,eACE,sBACA,0BACA,2BACA,gBACA,aACA,sBAEF,eACE,sBAEF,gBACE,eACA,mBACA,kBAEF,oBACE,aACA,uBACA,8BACA,SACA,mBAEF,oCACE,gBACA,OAEF,gBACE,WACA,YACA,UACA,oBACA,mBACA,uBACA,cAEF,eACE,eACA,gBACA,gBACA,gBAEF,8BACE,OACA,gBACA,aACA,aACA,sBACA,QAEF,aACE,aACA,mBACA,QACA,cAEF,kBACE,eACA,gBACA,UACA,oBACA,mBACA,uBAEF,mBACE,eACA,mBACA,kCACA,gBAEF,SACE,qBACA,+BACA,kBACA,cACA,OACA,iBACA,6BACA,eACA,iBAEF,cACE,aACA,QACA,gBACA,qBACA,sBAEF,gBACE,cACA,WACA,iBACA,WAEF,qBACE,2DACA,kBAEF,wBACE,yDACA,kBAEF,qCACE,mBAEF,wCACE,iBAEF,gCACE,gCACA,oBAEF,oBACE,6DACA,mBACA,gBACA,kBAEF,uBACE,2DACA,+CACA,gBACA,kBAEF,eACE,aACA,mBACA,kBAEF,mBACE,sBACA,+BACA,kBACA,YACA,6BACA,eACA,qBACA,sBAEF,oBACE,sBACA,gBACA,kBACA,6BAEF,kBACE,aACA,yBACA,mBACA,QACA,gBAEF,wBACE,SACA,kBACA,gBAEF,UACE,kBAEF,gBACE,gBAEF,eACE,kBACA,OACA,QACA,SACA,WACA,iBACA,gBACA,sBACA,gCACA,kBACA,eACA,qCAEF,iBACE,gBACA,eACA,eAEF,uBACE,sBAEF,gBACE,aACA,eACA,QACA,kBAEF,SACE,oBACA,mBACA,QACA,sBACA,gCACA,mBACA,wBACA,eAEF,gBACE,gBACA,YACA,mBACA,eACA,eACA,cAEF,sBACE,kBAEF,eACE,aACA,sBACA,QAEF,cACE,aACA,QACA,uBAEF,+BACE,OAEF,mBACE,sBACA,+BACA,kBACA,YACA,aACA,QACA,uBAEF,qBACE,aACA,sBACA,QACA,WAEF,eACE,aACA,sBACA,QACA,gBACA,WAEF,qBACE,eACA,mBAEF,8EAGE,gBACA,YACA,YACA,gBAEF,sBACE,cAEF,WACE,+BACA,kBACA,YACA,sBAEF,eACE,aACA,sBACA,QACA,eAEF,cACE,qBACA,+BACA,kBACA,sBACA,aACA,QACA,uBACA,WACE,8DAIJ,0BACE,YAEF,6BACE,2BACA,mCAEF,qBACE,cACA,WACA,mBACA,oBACA,mBACA,uBACA,YACA,mBACA,iBACA,YACA,yBACA,eACA,cACA,UACA,oBAEF,2BACE,mBAEF,4BACE,gBAEF,qBACE,OACA,YACA,aACA,sBACA,QAEF,kBACE,aACA,QACA,qBAEF,oBACE,OACA,YACA,aACA,sBACA,QAEF,0BACE,eACA,mBACA,oBACA,gBACA,6BAEF,mBACE,kBACA,YAEF,yBACE,WACA,mBACA,6BAEF,qBACE,kBACA,UACA,QACA,2BACA,WACA,YACA,UACA,oBACA,mBACA,uBAEF,qBACE,aACA,QACA,qBAEF,yCACE,OACA,YAEF,gBACE,aACA,eACA,QACA,eAEF,qBACE,oBACA,mBACA,QACA,4DACA,oBACA,kEACA,mBACA,gBACA,eACA,eAEF,eACE,gBACA,YACA,oBACA,eACA,eACA,gBACA,2BACA,cAEF,kBACE,kBACA,mBAEF,wBACE,kBAEF,0BACE,YACA,kBACA,SACA,QACA,2BACA,mBACA,eACA,oBAEF,yBACE,iBACA,mBACA,yBACA,oBACA,kBACA,gBAEF,qCACE,aAEF,qBACE,aACA,sBACA,QAEF,oBACE,aACA,mBACA,SACA,WACA,gBACA,iBACA,+BACA,kBACA,sBACA,kBACA,eACA,2BACA,eAEF,0BACE,2BAEF,qBACE,gBAEF,qBACE,eACA,mBACA,6BACA,iBACA,cAEF,iBACE,iBACA,kBACA,mBACA,eAEF,qBACE,aACA,mBACA,QACA,kBAEF,4BACE,2DACA,mBAEF,sBACE,iBACA,aACA,mBACA,QACA,iBACA,mBACA,eACA,oBAEF,gBACE,aACA,sBACA,QAEF,eACE,aACA,uBACA,SACA,iBACA,+BACA,kBACA,sBACA,eAEF,oCACE,eACA,cAEF,oBACE,OACA,YACA,aACA,sBACA,QAEF,mBACE,aACA,mBACA,QAEF,oBACE,6BACA,eACA,gBAEF,qBACE,iBACA,mBACA,6BACA,mBACA,gBACA,uBAEF,kBACE,WACA,YACA,kBACA,gCACA,cACA,qBACA,oBACA,iBAEF,oBACE,aACA,qBACA,QACA,iBACA,YAEF,wCACE,mBAEF,uBACE,iBACA,mBAEF,oBACE,UACA,WAEF,0BACE,qBAEF,0BACE,sBACA,kBAIF,gDACE","file":"variables-editor.css","sourcesContent":["// The Variables Editor page (moved from the template literal in src/lib/variables-editor.ts).\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n:root,\n:root[data-pp-dev-theme='light'] {\n --bg: #ffffff;\n --bg2: #f4f5f7;\n --bg3: #e9ebef;\n --bg4: #dbdee3;\n --border: #d7dae0;\n --border2: #c2c6cd;\n --text: #1a1a1e;\n --text2: #54566b;\n --text3: #8a8c9c;\n --accent: #4f46e5;\n --accent2: #7c3aed;\n --m-accent: var(--accent);\n --m-bg2: var(--bg2);\n --green: #16a34a;\n --red: #dc2626;\n --yellow: #a16207;\n --blue: #2563eb;\n --btn-primary-fg: #ffffff;\n --font-mono: 'Cascadia Code', 'Fira Code', 'JetBrains Mono', Consolas, monospace;\n --font-ui: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n}\n:root[data-pp-dev-theme='dark'] {\n --bg: #1a1a1e;\n --bg2: #222228;\n --bg3: #2a2a32;\n --bg4: #32323c;\n --border: #3a3a46;\n --border2: #4a4a58;\n --text: #e0e0f0;\n --text2: #a0a0b8;\n --text3: #606078;\n --accent: #6e8efb;\n --accent2: #a78bfa;\n --m-accent: var(--accent);\n --m-bg2: var(--bg2);\n --green: #4ade80;\n --red: #f87171;\n --yellow: #fbbf24;\n --blue: #60a5fa;\n --btn-primary-fg: #0d0d10;\n}\n@media (prefers-color-scheme: dark) {\n :root {\n --bg: #1a1a1e;\n --bg2: #222228;\n --bg3: #2a2a32;\n --bg4: #32323c;\n --border: #3a3a46;\n --border2: #4a4a58;\n --text: #e0e0f0;\n --text2: #a0a0b8;\n --text3: #606078;\n --accent: #6e8efb;\n --accent2: #a78bfa;\n --m-accent: var(--accent);\n --m-bg2: var(--bg2);\n --green: #4ade80;\n --red: #f87171;\n --yellow: #fbbf24;\n --blue: #60a5fa;\n --btn-primary-fg: #0d0d10;\n }\n}\nhtml,\nbody {\n height: 100%;\n overflow: hidden;\n background: var(--bg);\n color: var(--text);\n font-family: var(--font-ui);\n font-size: 13px;\n line-height: 1.5;\n}\n.app {\n display: flex;\n flex-direction: column;\n height: 100vh;\n}\n.toolbar {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--bg2);\n border-bottom: 1px solid var(--border);\n flex-shrink: 0;\n flex-wrap: wrap;\n}\n.toolbar-title {\n font-weight: 600;\n font-size: 14px;\n margin-right: 8px;\n}\n.tabs {\n display: flex;\n gap: 4px;\n}\n.tab {\n padding: 5px 12px;\n border-radius: 4px;\n border: 1px solid transparent;\n background: transparent;\n color: var(--text2);\n font-size: 12px;\n cursor: pointer;\n}\n.tab:hover {\n background: var(--bg3);\n color: var(--text);\n}\n.tab.active {\n background: var(--bg4);\n color: var(--text);\n border-color: var(--border2);\n}\n.toolbar-spacer {\n flex: 1;\n}\n.ve-loading-indicator {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--text3);\n font-size: 11px;\n}\n.ve-loading-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--accent);\n animation: ve-pulse 1s ease-in-out infinite;\n}\n.ve-skeleton {\n padding: 16px;\n}\n.ve-skeleton-row {\n height: 32px;\n border-radius: 4px;\n background: var(--bg3);\n margin-bottom: 8px;\n animation: ve-pulse 1.4s ease-in-out infinite;\n}\n.ve-skeleton-row:nth-child(2) {\n width: 92%;\n}\n.ve-skeleton-row:nth-child(3) {\n width: 96%;\n}\n.ve-skeleton-row:nth-child(4) {\n width: 88%;\n}\n.ve-skeleton-row:nth-child(5) {\n width: 94%;\n}\n@keyframes ve-pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.4;\n }\n}\n.theme-switch {\n display: flex;\n gap: 2px;\n background: var(--bg3);\n border: 1px solid var(--border);\n border-radius: 4px;\n padding: 2px;\n}\n.theme-switch button {\n padding: 3px 8px;\n border: none;\n border-radius: 3px;\n background: transparent;\n color: var(--text2);\n font-size: 11px;\n cursor: pointer;\n font-family: var(--font-ui);\n}\n.theme-switch button.active {\n background: var(--accent);\n color: var(--btn-primary-fg);\n}\n.btn {\n padding: 5px 12px;\n border-radius: 4px;\n border: 1px solid var(--border);\n background: var(--bg3);\n color: var(--text);\n font-size: 12px;\n cursor: pointer;\n transition: background 0.1s;\n}\n.btn:hover {\n background: var(--bg4);\n border-color: var(--border2);\n}\n.btn-primary {\n background: var(--accent);\n border-color: var(--accent);\n color: var(--btn-primary-fg);\n font-weight: 600;\n}\n.btn-primary:hover {\n opacity: 0.9;\n background: var(--accent);\n}\n.btn-sm {\n padding: 5px 8px;\n font-size: 11px;\n min-width: 30px;\n min-height: 30px;\n}\n.local-update-btn {\n position: fixed;\n right: 16px;\n bottom: 16px;\n z-index: 20;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);\n}\n.local-update-btn[hidden] {\n display: none;\n}\n.content {\n flex: 1;\n overflow: auto;\n padding: 14px;\n}\n.banner {\n margin-bottom: 12px;\n padding: 8px 12px;\n border-radius: 4px;\n font-size: 12px;\n}\n.banner-warning {\n background: color-mix(in srgb, var(--yellow) 15%, var(--bg));\n color: var(--yellow);\n border: 1px solid color-mix(in srgb, var(--yellow) 40%, var(--bg));\n}\n.banner-error {\n background: color-mix(in srgb, var(--red) 15%, var(--bg));\n color: var(--red);\n border: 1px solid color-mix(in srgb, var(--red) 40%, var(--bg));\n}\n.banner-success {\n background: color-mix(in srgb, var(--green) 15%, var(--bg));\n color: var(--green);\n border: 1px solid color-mix(in srgb, var(--green) 40%, var(--bg));\n}\n.banner ul {\n margin: 6px 0 0 18px;\n}\ntable {\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n font-size: 12px;\n}\nthead {\n border-radius: 6px 6px 0 0;\n overflow: hidden;\n}\nthead th {\n padding: 8px 8px 6px;\n}\nth {\n text-align: left;\n padding: 6px 8px;\n color: var(--text2);\n border-bottom: 1px solid var(--border);\n font-weight: 600;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.4px;\n background: var(--bg2);\n}\nthead th:first-child {\n border-radius: 6px 0 0 0;\n}\nthead th:last-child {\n border-radius: 0 6px 0 0;\n}\ntd {\n padding: 12px 8px;\n vertical-align: top;\n}\ntr:hover td {\n background: var(--bg2);\n}\ninput[type='text'],\nselect,\ntextarea {\n width: 100%;\n background: var(--bg3);\n border: 1px solid var(--border);\n color: var(--text);\n padding: 4px 6px;\n border-radius: 4px;\n font-size: 12px;\n font-family: var(--font-mono);\n outline: none;\n min-height: 30px;\n}\ninput[type='text']:focus,\nselect:focus,\ntextarea:focus {\n border-color: var(--accent);\n}\ninput[type='color'] {\n max-width: 150px;\n width: 100%;\n height: 30px;\n padding: 0;\n border: 1px solid var(--border);\n border-radius: 4px;\n background: var(--bg3);\n}\ntextarea {\n resize: vertical;\n min-height: 32px;\n}\n.cell-textarea {\n min-height: 30px;\n height: 30px;\n resize: none;\n overflow: hidden;\n line-height: 1.8;\n}\n.col-name {\n width: 180px;\n}\n.col-type {\n width: 130px;\n}\n.col-source {\n width: 110px;\n}\n.col-actions {\n width: 70px;\n text-align: right;\n}\n.col-expand {\n width: 48px;\n padding-left: 0px;\n padding-right: 0 !important;\n}\n.ve-expand-cell {\n display: flex;\n align-items: center;\n gap: 2px;\n}\n.ve-schema-row-handle {\n flex-shrink: 0;\n width: 18px;\n height: 22px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: grab;\n color: var(--text3);\n user-select: none;\n border: none;\n background: transparent;\n font-size: 20px;\n line-height: 1;\n padding: 0;\n letter-spacing: -2px;\n}\n.ve-schema-row-handle:hover {\n color: var(--text2);\n}\n.ve-schema-row-handle:active {\n cursor: grabbing;\n}\ntr.schema-row.is-dragging td,\ntr.details-row.is-dragging td {\n opacity: 0.45;\n}\ntr.schema-row.is-drop-target td,\ntr.details-row.is-drop-target td {\n box-shadow: inset 0 2px 0 var(--accent);\n}\n.ve-expand-btn {\n width: 30px;\n height: 30px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n line-height: 1;\n color: var(--text2);\n}\n.ve-expand-btn:hover {\n color: var(--text);\n}\n.raw-toggle {\n margin-bottom: 10px;\n}\n.raw-editor {\n width: 100%;\n height: min(60vh, 600px);\n font-family: var(--font-mono);\n font-size: 12px;\n white-space: pre;\n}\n.hint {\n color: var(--text3);\n font-size: 11px;\n}\n.ve-md p {\n margin: 0 0 4px;\n}\n.ve-md p:last-child,\n.ve-md ul:last-child,\n.ve-md ol:last-child,\n.ve-md pre:last-child {\n margin-bottom: 0;\n}\n.ve-md ul,\n.ve-md ol {\n margin: 0 0 4px;\n padding-left: 18px;\n}\n.ve-md code {\n font-family: var(--font-mono, monospace);\n background: var(--bg4);\n border-radius: 3px;\n padding: 0 3px;\n}\n.ve-md pre {\n margin: 0 0 4px;\n padding: 6px 8px;\n background: var(--bg4);\n border-radius: 4px;\n overflow-x: auto;\n}\n.ve-md pre code {\n background: none;\n padding: 0;\n}\n.ve-md strong {\n color: var(--text2);\n}\n.details-row td {\n background: var(--bg2);\n padding: 16px;\n}\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 12px;\n}\n.details-grid-item-wrapper {\n display: flex;\n gap: 12px;\n grid-column: 1/-1;\n}\n.details-grid label {\n display: block;\n font-size: 10px;\n color: var(--text3);\n text-transform: uppercase;\n margin-bottom: 6px;\n}\n.badge {\n font-size: 10px;\n padding: 1px 6px;\n border-radius: 8px;\n background: var(--bg4);\n color: var(--text3);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n white-space: nowrap;\n}\n.badge-source-dataset {\n background: color-mix(in srgb, var(--yellow) 22%, var(--bg));\n color: var(--yellow);\n}\n.badge-source-static {\n background: var(--bg4);\n color: var(--text3);\n}\n.ve-values-layout {\n display: flex;\n gap: 16px;\n align-items: stretch;\n height: calc(100vh - 115px);\n min-height: 320px;\n}\n.ve-values-detail > .ve-values-layout {\n height: 100%;\n min-height: 0;\n}\n.ve-values-nav {\n width: 280px;\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-height: 0;\n}\n.ve-values-nav-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n overflow: auto;\n min-height: 0;\n}\n.ve-values-nav-item {\n display: flex;\n align-items: center;\n gap: 8px;\n min-height: 30px;\n padding: 6px 10px;\n border: 1px solid var(--border);\n border-radius: 6px;\n background: var(--bg2);\n color: var(--text);\n cursor: pointer;\n text-align: left;\n width: 100%;\n font-family: var(--font-ui);\n font-size: 12px;\n}\n.ve-values-nav-item:hover {\n border-color: var(--border2);\n background: var(--bg3);\n}\n.ve-values-nav-item.is-active {\n border-color: var(--m-accent);\n background: color-mix(in srgb, var(--m-accent) 12%, var(--m-bg2));\n}\n.ve-values-nav-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--text3);\n flex-shrink: 0;\n}\n.ve-values-nav-item.is-active .ve-values-nav-dot {\n background: var(--m-accent);\n}\n.ve-values-nav-label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-family: var(--font-mono);\n}\n.ve-values-nav-badges {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n align-items: center;\n}\n.ve-values-nav-add {\n border-style: dashed;\n justify-content: center;\n background: transparent;\n}\n.ve-values-nav-add:hover {\n background: var(--bg3);\n}\n.ve-values-detail {\n flex: 1;\n min-width: 0;\n overflow: auto;\n padding-right: 10px;\n}\n.ve-values-anchor {\n scroll-margin-top: 12px;\n}\n.ve-values-anchor.is-active {\n border-color: var(--accent);\n}\n.ve-values-anchor + .ve-values-anchor {\n margin-top: 24px;\n padding-top: 10px;\n}\n.ve-values-detail-header {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.ve-values-detail-title {\n font-family: var(--font-mono);\n font-size: 13px;\n font-weight: 600;\n}\n.ve-values-detail-header .ve-values-field-label {\n flex: 1;\n min-width: 0;\n}\n.ve-values-detail-header .btn {\n margin-left: auto;\n flex-shrink: 0;\n}\n.ve-values-fields {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 12px;\n}\n.ve-values-field {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 10px;\n min-width: 0;\n}\n.ve-values-field.is-wide {\n grid-column: 1/-1;\n}\n.ve-values-field-label {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 10px;\n color: var(--text3);\n}\n.ve-values-field-label > span:first-child {\n font-family: var(--font-mono);\n}\n.ve-values-field textarea,\n.ve-values-field input[type='text'],\n.ve-values-field select {\n min-height: 30px;\n height: 30px;\n resize: none;\n overflow: hidden;\n}\n.ve-values-empty {\n color: var(--text3);\n padding: 24px 0;\n}\n.ve-values-list-items {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n.ve-values-list-item {\n background: var(--bg);\n border: 1px solid var(--border);\n border-radius: 4px;\n padding: 10px 8px 16px;\n display: flex;\n gap: 6px;\n align-items: flex-start;\n transition:\n opacity 0.12s ease,\n border-color 0.12s ease,\n box-shadow 0.12s ease;\n}\n.ve-values-list-item.is-dragging {\n opacity: 0.45;\n}\n.ve-values-list-item.is-drop-target {\n border-color: var(--accent);\n box-shadow: 0 0 0 1px var(--accent);\n}\n.ve-values-list-item-handle {\n flex-shrink: 0;\n width: 22px;\n align-self: stretch;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: grab;\n color: var(--text3);\n user-select: none;\n border: none;\n background: transparent;\n font-size: 16px;\n line-height: 1;\n padding: 0;\n letter-spacing: -2px;\n}\n.ve-values-list-item-handle:hover {\n color: var(--text2);\n}\n.ve-values-list-item-handle:active {\n cursor: grabbing;\n}\n.ve-values-list-item > .ve-values-fields {\n flex: 1;\n min-width: 0;\n}\n.ve-values-list-item-remove {\n flex-shrink: 0;\n}\n.checkbox-row {\n display: flex;\n flex-wrap: wrap;\n gap: 4px 16px;\n}\n.details-grid .checkbox-label {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n color: var(--text2);\n text-transform: none;\n margin-bottom: 0;\n}\n.checkbox-label input {\n width: auto;\n}\n.empty-state {\n color: var(--text3);\n text-align: center;\n padding: 40px;\n}\n.ve-modal-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 100;\n}\n.ve-modal {\n background: var(--bg2);\n border: 1px solid var(--border2);\n border-radius: 6px;\n padding: 16px;\n width: min(400px, 90vw);\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n position: relative;\n}\n.ve-modal-diff {\n width: min(860px, 94vw);\n min-width: min(500px, 90vw);\n min-height: min(300px, 80vh);\n max-height: 85vh;\n display: flex;\n flex-direction: column;\n}\n.ve-modal-wide {\n width: min(560px, 90vw);\n}\n.ve-modal-title {\n font-size: 12px;\n color: var(--text2);\n margin-bottom: 8px;\n}\n.ve-modal-title-row {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n margin-bottom: 12px;\n}\n.ve-modal-title-row .ve-modal-title {\n margin-bottom: 0;\n flex: 1;\n}\n.ve-modal-close {\n width: 28px;\n height: 28px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n.ve-modal-body {\n font-size: 12px;\n line-height: 1.6;\n max-height: 60vh;\n overflow-y: auto;\n}\n.ve-modal-diff .ve-modal-body {\n flex: 1;\n max-height: none;\n min-height: 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.ve-diff-nav {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n.ve-diff-nav .btn {\n min-width: 30px;\n min-height: 30px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.ve-diff-nav-count {\n font-size: 12px;\n color: var(--text2);\n font-variant-numeric: tabular-nums;\n min-width: 4.5em;\n}\n.ve-diff {\n background: var(--bg);\n border: 1px solid var(--border);\n border-radius: 6px;\n overflow: auto;\n flex: 1;\n min-height: 180px;\n font-family: var(--font-mono);\n font-size: 11px;\n line-height: 1.55;\n}\n.ve-diff-line {\n display: flex;\n gap: 8px;\n padding: 1px 8px;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.ve-diff-prefix {\n flex-shrink: 0;\n width: 12px;\n user-select: none;\n opacity: 0.8;\n}\n.ve-diff-line.is-add {\n background: color-mix(in srgb, var(--green) 14%, var(--bg));\n color: var(--text);\n}\n.ve-diff-line.is-remove {\n background: color-mix(in srgb, var(--red) 14%, var(--bg));\n color: var(--text);\n}\n.ve-diff-line.is-add .ve-diff-prefix {\n color: var(--green);\n}\n.ve-diff-line.is-remove .ve-diff-prefix {\n color: var(--red);\n}\n.ve-diff-line.is-current-change {\n outline: 1px solid var(--accent);\n outline-offset: -1px;\n}\n.ve-diff-inline-add {\n background: color-mix(in srgb, var(--green) 35%, transparent);\n color: var(--green);\n font-weight: 700;\n border-radius: 2px;\n}\n.ve-diff-inline-remove {\n background: color-mix(in srgb, var(--red) 35%, transparent);\n color: color-mix(in srgb, var(--red) 80%, #fff);\n font-weight: 700;\n border-radius: 2px;\n}\n.ve-diff-empty {\n padding: 24px;\n color: var(--text3);\n text-align: center;\n}\n.ve-modal-body pre {\n background: var(--bg3);\n border: 1px solid var(--border);\n border-radius: 4px;\n padding: 8px;\n font-family: var(--font-mono);\n font-size: 11px;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.ve-modal-body code {\n background: var(--bg3);\n padding: 1px 4px;\n border-radius: 3px;\n font-family: var(--font-mono);\n}\n.ve-modal-actions {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 8px;\n margin-top: 12px;\n}\n.ve-modal-actions .hint {\n margin: 0;\n margin-right: auto;\n text-align: left;\n}\n.ve-combo {\n position: relative;\n}\n.ve-combo-input {\n margin-bottom: 0;\n}\n.ve-combo-list {\n position: absolute;\n left: 0;\n right: 0;\n top: 100%;\n z-index: 10;\n max-height: 220px;\n overflow-y: auto;\n background: var(--bg3);\n border: 1px solid var(--border2);\n border-radius: 4px;\n margin-top: 2px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n}\n.ve-combo-option {\n padding: 5px 8px;\n font-size: 12px;\n cursor: pointer;\n}\n.ve-combo-option:hover {\n background: var(--bg4);\n}\n.ve-combo-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-bottom: 8px;\n}\n.ve-chip {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: var(--bg3);\n border: 1px solid var(--border2);\n border-radius: 10px;\n padding: 2px 4px 2px 8px;\n font-size: 11px;\n}\n.ve-chip button {\n background: none;\n border: none;\n color: var(--text3);\n cursor: pointer;\n font-size: 11px;\n padding: 0 2px;\n}\n.ve-chip button:hover {\n color: var(--text);\n}\n.ve-list-items {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.ve-list-item {\n display: flex;\n gap: 6px;\n align-items: flex-start;\n}\n.ve-list-item > input[type='text'] {\n flex: 1;\n}\n.ve-list-item-cols {\n background: var(--bg2);\n border: 1px solid var(--border);\n border-radius: 4px;\n padding: 8px;\n display: flex;\n gap: 8px;\n align-items: flex-start;\n}\n.ve-list-item-fields {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n}\n.ve-list-field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n max-width: 450px;\n width: 100%;\n}\n.ve-list-field label {\n font-size: 10px;\n color: var(--text3);\n}\n.ve-list-field textarea,\n.ve-list-field input[type='text'],\n.ve-list-field select {\n min-height: 30px;\n height: 30px;\n resize: none;\n overflow: hidden;\n}\n.ve-list-item-actions {\n flex-shrink: 0;\n}\n.box-style {\n border: 1px solid var(--border);\n border-radius: 6px;\n padding: 8px;\n background: var(--bg3);\n}\n.ve-ao-columns {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 8px;\n}\n.ve-ao-column {\n background: var(--bg);\n border: 1px solid var(--border);\n border-radius: 4px;\n padding: 10px 8px 16px;\n display: flex;\n gap: 6px;\n align-items: flex-start;\n transition:\n opacity 0.12s ease,\n border-color 0.12s ease,\n box-shadow 0.12s ease;\n}\n.ve-ao-column.is-dragging {\n opacity: 0.45;\n}\n.ve-ao-column.is-drop-target {\n border-color: var(--accent);\n box-shadow: 0 0 0 1px var(--accent);\n}\n.ve-ao-column-handle {\n flex-shrink: 0;\n width: 22px;\n align-self: stretch;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: grab;\n color: var(--text3);\n user-select: none;\n border: none;\n background: transparent;\n font-size: 16px;\n line-height: 1;\n padding: 0;\n letter-spacing: -2px;\n}\n.ve-ao-column-handle:hover {\n color: var(--text2);\n}\n.ve-ao-column-handle:active {\n cursor: grabbing;\n}\n.ve-ao-column-fields {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.ve-ao-column-top {\n display: flex;\n gap: 6px;\n align-items: flex-end;\n}\n.ve-ao-column-field {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n.ve-ao-column-field label {\n font-size: 10px;\n color: var(--text3);\n text-transform: none;\n margin-bottom: 0;\n font-family: var(--font-mono);\n}\n.ve-ao-column-name {\n position: relative;\n min-width: 0;\n}\n.ve-ao-column-name input {\n width: 100%;\n padding-right: 28px;\n font-family: var(--font-mono);\n}\n.ve-ao-column-remove {\n position: absolute;\n right: 0px;\n top: 50%;\n transform: translateY(-50%);\n width: 24px;\n height: 24px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.ve-ao-column-bottom {\n display: flex;\n gap: 6px;\n align-items: flex-end;\n}\n.ve-ao-column-bottom > .ve-ao-column-field {\n flex: 1;\n min-width: 0;\n}\n.ve-json-issues {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 8px;\n}\n.ve-json-issue-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: color-mix(in srgb, var(--yellow) 15%, var(--bg));\n color: var(--yellow);\n border: 1px solid color-mix(in srgb, var(--yellow) 40%, var(--bg));\n border-radius: 10px;\n padding: 2px 8px;\n font-size: 11px;\n cursor: default;\n}\n.ve-modal-back {\n background: none;\n border: none;\n color: var(--accent);\n font-size: 11px;\n cursor: pointer;\n padding: 0 0 4px;\n font-family: var(--font-ui);\n display: block;\n}\n.ve-import-search {\n position: relative;\n margin-bottom: 12px;\n}\n.ve-import-search input {\n padding-left: 28px;\n}\n.ve-import-search::before {\n content: '⌕';\n position: absolute;\n left: 9px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--text3);\n font-size: 14px;\n pointer-events: none;\n}\n.ve-import-section-title {\n font-size: 10.5px;\n color: var(--text3);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin: 14px 0 6px;\n font-weight: 600;\n}\n.ve-import-section-title:first-child {\n margin-top: 0;\n}\n.ve-import-page-list {\n display: flex;\n flex-direction: column;\n gap: 5px;\n}\n.ve-import-page-row {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n text-align: left;\n padding: 8px 10px;\n border: 1px solid var(--border);\n border-radius: 6px;\n background: var(--bg3);\n color: var(--text);\n cursor: pointer;\n font-family: var(--font-ui);\n font-size: 12px;\n}\n.ve-import-page-row:hover {\n border-color: var(--accent);\n}\n.ve-import-page-name {\n font-weight: 500;\n}\n.ve-import-page-slug {\n font-size: 11px;\n color: var(--text3);\n font-family: var(--font-mono);\n margin-left: auto;\n flex-shrink: 0;\n}\n.ve-import-empty {\n padding: 20px 4px;\n text-align: center;\n color: var(--text3);\n font-size: 12px;\n}\n.ve-import-list-head {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n}\n.ve-import-list-head .badge {\n background: color-mix(in srgb, var(--green) 18%, var(--bg));\n color: var(--green);\n}\n.ve-import-select-all {\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 11.5px;\n color: var(--text2);\n cursor: pointer;\n text-transform: none;\n}\n.ve-import-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.ve-import-row {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n padding: 8px 10px;\n border: 1px solid var(--border);\n border-radius: 6px;\n background: var(--bg3);\n cursor: pointer;\n}\n.ve-import-row input[type='checkbox'] {\n margin-top: 2px;\n flex-shrink: 0;\n}\n.ve-import-row-main {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 3px;\n}\n.ve-import-row-top {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.ve-import-row-name {\n font-family: var(--font-mono);\n font-size: 12px;\n font-weight: 600;\n}\n.ve-import-row-value {\n font-size: 11.5px;\n color: var(--text2);\n font-family: var(--font-mono);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ve-import-swatch {\n width: 12px;\n height: 12px;\n border-radius: 3px;\n border: 1px solid var(--border2);\n flex-shrink: 0;\n display: inline-block;\n vertical-align: -1px;\n margin-right: 5px;\n}\n.ve-import-skip-row {\n display: flex;\n align-items: baseline;\n gap: 8px;\n padding: 7px 10px;\n opacity: 0.85;\n}\n.ve-import-skip-row .ve-import-row-name {\n color: var(--text2);\n}\n.ve-import-skip-reason {\n font-size: 11.5px;\n color: var(--text3);\n}\n::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n::-webkit-scrollbar-track {\n background: var(--bg);\n}\n::-webkit-scrollbar-thumb {\n background: var(--bg4);\n border-radius: 4px;\n}\n\n// A page without a template has no tabs, Refresh, Save or local update: only the message.\nbody[data-template-less='true'] .ve-template-only {\n display: none !important;\n}\n"]}
1
+ {"version":3,"sourceRoot":"","sources":["variables-editor.scss"],"names":[],"mappings":"CACA,qBAGE,sBACA,SACA,UAEF,qCAEE,cACA,eACA,eACA,eACA,kBACA,mBACA,gBACA,iBACA,iBACA,kBACA,mBACA,0BACA,oBACA,iBACA,eACA,kBACA,gBACA,0BACA,iFACA,qEAEF,8BACE,cACA,eACA,eACA,eACA,kBACA,mBACA,gBACA,iBACA,iBACA,kBACA,mBACA,0BACA,oBACA,iBACA,eACA,kBACA,gBACA,0BAEF,mCACE,MACE,cACA,eACA,eACA,eACA,kBACA,mBACA,gBACA,iBACA,iBACA,kBACA,mBACA,0BACA,oBACA,iBACA,eACA,kBACA,gBACA,2BAGJ,UAEE,YACA,gBACA,qBACA,kBACA,2BACA,eACA,gBAEF,KACE,aACA,sBACA,aAEF,SACE,aACA,mBACA,QACA,iBACA,sBACA,sCACA,cACA,eAEF,eACE,gBACA,eACA,iBAEF,MACE,aACA,QAEF,KACE,iBACA,kBACA,+BACA,yBACA,mBACA,eACA,eAEF,WACE,sBACA,kBAEF,YACE,sBACA,kBACA,4BAEF,gBACE,OAEF,sBACE,oBACA,mBACA,QACA,mBACA,eAEF,gBACE,UACA,WACA,kBACA,yBACA,2CAEF,aACE,aAEF,iBACE,YACA,kBACA,sBACA,kBACA,6CAEF,8BACE,UAEF,8BACE,UAEF,8BACE,UAEF,8BACE,UAEF,oBACE,QAEE,UAEF,IACE,YAGJ,cACE,aACA,QACA,sBACA,+BACA,kBACA,YAEF,qBACE,gBACA,YACA,kBACA,yBACA,mBACA,eACA,eACA,2BAEF,4BACE,yBACA,4BAEF,KACE,iBACA,kBACA,+BACA,sBACA,kBACA,eACA,eACA,0BAEF,WACE,sBACA,4BAEF,aACE,yBACA,2BACA,4BACA,gBAEF,mBACE,WACA,yBAEF,QACE,gBACA,eACA,eACA,gBAEF,kBACE,eACA,WACA,YACA,WACA,sCAEF,0BACE,aAEF,SACE,OACA,cACA,aAEF,QACE,mBACA,iBACA,kBACA,eAEF,gBACE,4DACA,oBACA,kEAEF,cACE,yDACA,iBACA,+DAEF,gBACE,2DACA,mBACA,iEAEF,WACE,oBAEF,MACE,WACA,yBACA,iBACA,eAEF,MACE,0BACA,gBAEF,SACE,oBAEF,GACE,gBACA,gBACA,mBACA,sCACA,gBACA,eACA,yBACA,oBACA,sBAEF,qBACE,wBAEF,oBACE,wBAEF,GACE,iBACA,mBAEF,YACE,sBAEF,iCAGE,WACA,sBACA,+BACA,kBACA,gBACA,kBACA,eACA,6BACA,aACA,gBAEF,mDAGE,2BAEF,kBACE,gBACA,WACA,YACA,UACA,+BACA,kBACA,sBAEF,SACE,gBACA,gBAEF,eACE,gBACA,YACA,YACA,gBACA,gBAEF,UACE,YAEF,UACE,YAEF,YACE,YAEF,aACE,WACA,iBAEF,YACE,WACA,iBACA,2BAEF,gBACE,aACA,mBACA,QAEF,sBACE,cACA,WACA,YACA,oBACA,mBACA,uBACA,YACA,mBACA,iBACA,YACA,yBACA,eACA,cACA,UACA,oBAEF,4BACE,mBAEF,6BACE,gBAEF,2DAEE,YAEF,iEAEE,uCAEF,eACE,WACA,YACA,UACA,oBACA,mBACA,uBACA,eACA,cACA,mBAEF,qBACE,kBAEF,YACE,mBAEF,YACE,WACA,uBACA,6BACA,eACA,gBAEF,MACE,mBACA,eAEF,SACE,eAEF,oFAIE,gBAEF,oBAEE,eACA,kBAEF,YACE,wCACA,sBACA,kBACA,cAEF,WACE,eACA,gBACA,sBACA,kBACA,gBAEF,gBACE,gBACA,UAEF,cACE,mBAEF,gBACE,sBACA,aAEF,cACE,aACA,2DACA,SAEF,2BACE,aACA,SACA,iBAEF,oBACE,cACA,eACA,mBACA,6BACA,kBAEF,OACE,eACA,gBACA,kBACA,sBACA,mBACA,yBACA,oBACA,mBAEF,sBACE,4DACA,oBAEF,qBACE,sBACA,mBAEF,kBACE,aACA,SACA,oBACA,2BACA,iBAEF,oCACE,YACA,aAEF,eACE,YACA,cACA,aACA,sBACA,QACA,aAEF,oBACE,aACA,sBACA,QACA,cACA,aAEF,oBACE,aACA,mBACA,QACA,gBACA,iBACA,+BACA,kBACA,sBACA,kBACA,eACA,gBACA,WACA,2BACA,eAEF,0BACE,4BACA,sBAEF,8BACE,6BACA,iEAEF,mBACE,UACA,WACA,kBACA,wBACA,cAEF,iDACE,2BAEF,qBACE,OACA,YACA,gBACA,uBACA,mBACA,6BAEF,sBACE,aACA,QACA,cACA,mBAEF,mBACE,oBACA,uBACA,yBAEF,yBACE,sBAEF,kBACE,OACA,YACA,cACA,mBAEF,kBACE,uBAEF,4BACE,2BAEF,oCACE,gBACA,iBAEF,yBACE,aACA,mBACA,QAEF,wBACE,6BACA,eACA,gBAEF,gDACE,OACA,YAEF,8BACE,iBACA,cAEF,kBACE,aACA,2DACA,SAEF,iBACE,aACA,sBACA,uBACA,SACA,YAEF,yBACE,iBAEF,uBACE,aACA,mBACA,QACA,eACA,mBAEF,wCACE,6BAEF,oFAGE,gBACA,YACA,YACA,gBAEF,iBACE,mBACA,eAEF,sBACE,aACA,sBACA,SAEF,qBACE,qBACA,+BACA,kBACA,sBACA,aACA,QACA,uBACA,WACE,8DAIJ,iCACE,YAEF,oCACE,2BACA,mCAEF,4BACE,cACA,WACA,mBACA,oBACA,mBACA,uBACA,YACA,mBACA,iBACA,YACA,yBACA,eACA,cACA,UACA,oBAEF,kCACE,mBAEF,mCACE,gBAEF,uCACE,OACA,YAEF,4BACE,cAEF,cACE,aACA,eACA,aAEF,8BACE,oBACA,mBACA,QACA,eACA,mBACA,2BACA,gBAEF,sBACE,WAEF,aACE,mBACA,kBACA,aAEF,kBACE,eACA,QACA,0BACA,aACA,mBACA,uBACA,YAEF,UACE,sBACA,gCACA,kBACA,aACA,sBACA,qCACA,kBAEF,eACE,sBACA,0BACA,2BACA,gBACA,aACA,sBAEF,eACE,sBAEF,gBACE,eACA,mBACA,kBAEF,oBACE,aACA,uBACA,8BACA,SACA,mBAEF,oCACE,gBACA,OAEF,gBACE,WACA,YACA,UACA,oBACA,mBACA,uBACA,cAEF,eACE,eACA,gBACA,gBACA,gBAEF,8BACE,OACA,gBACA,aACA,aACA,sBACA,QAEF,aACE,aACA,mBACA,QACA,cAEF,kBACE,eACA,gBACA,UACA,oBACA,mBACA,uBAEF,mBACE,eACA,mBACA,kCACA,gBAEF,SACE,qBACA,+BACA,kBACA,cACA,OACA,iBACA,6BACA,eACA,iBAEF,cACE,aACA,QACA,gBACA,qBACA,sBAEF,gBACE,cACA,WACA,iBACA,WAEF,qBACE,2DACA,kBAEF,wBACE,yDACA,kBAEF,qCACE,mBAEF,wCACE,iBAEF,gCACE,gCACA,oBAEF,oBACE,6DACA,mBACA,gBACA,kBAEF,uBACE,2DACA,+CACA,gBACA,kBAEF,eACE,aACA,mBACA,kBAEF,mBACE,sBACA,+BACA,kBACA,YACA,6BACA,eACA,qBACA,sBAEF,oBACE,sBACA,gBACA,kBACA,6BAEF,kBACE,aACA,yBACA,mBACA,QACA,gBAEF,wBACE,SACA,kBACA,gBAEF,UACE,kBAEF,gBACE,gBAEF,eACE,kBACA,OACA,QACA,SACA,WACA,iBACA,gBACA,sBACA,gCACA,kBACA,eACA,qCAEF,iBACE,gBACA,eACA,eAEF,uBACE,sBAEF,gBACE,aACA,eACA,QACA,kBAEF,SACE,oBACA,mBACA,QACA,sBACA,gCACA,mBACA,wBACA,eAEF,gBACE,gBACA,YACA,mBACA,eACA,eACA,cAEF,sBACE,kBAEF,eACE,aACA,sBACA,QAEF,cACE,aACA,QACA,uBAEF,+BACE,OAEF,mBACE,sBACA,+BACA,kBACA,YACA,aACA,QACA,uBAEF,qBACE,aACA,sBACA,QACA,WAEF,eACE,aACA,sBACA,QACA,gBACA,WAEF,qBACE,eACA,mBAEF,8EAGE,gBACA,YACA,YACA,gBAEF,sBACE,cAEF,WACE,+BACA,kBACA,YACA,sBAEF,eACE,aACA,sBACA,QACA,eAEF,cACE,qBACA,+BACA,kBACA,sBACA,aACA,QACA,uBACA,WACE,8DAIJ,0BACE,YAEF,6BACE,2BACA,mCAEF,qBACE,cACA,WACA,mBACA,oBACA,mBACA,uBACA,YACA,mBACA,iBACA,YACA,yBACA,eACA,cACA,UACA,oBAEF,2BACE,mBAEF,4BACE,gBAEF,qBACE,OACA,YACA,aACA,sBACA,QAEF,kBACE,aACA,QACA,qBAEF,oBACE,OACA,YACA,aACA,sBACA,QAEF,0BACE,eACA,mBACA,oBACA,gBACA,6BAEF,mBACE,kBACA,YAEF,yBACE,WACA,mBACA,6BAEF,qBACE,kBACA,UACA,QACA,2BACA,WACA,YACA,UACA,oBACA,mBACA,uBAEF,qBACE,aACA,QACA,qBAEF,yCACE,OACA,YAEF,gBACE,aACA,eACA,QACA,eAEF,qBACE,oBACA,mBACA,QACA,4DACA,oBACA,kEACA,mBACA,gBACA,eACA,eAEF,eACE,gBACA,YACA,oBACA,eACA,eACA,gBACA,2BACA,cAEF,kBACE,kBACA,mBAEF,wBACE,kBAEF,0BACE,YACA,kBACA,SACA,QACA,2BACA,mBACA,eACA,oBAEF,yBACE,iBACA,mBACA,yBACA,oBACA,kBACA,gBAEF,qCACE,aAEF,qBACE,aACA,sBACA,QAEF,oBACE,aACA,mBACA,SACA,WACA,gBACA,iBACA,+BACA,kBACA,sBACA,kBACA,eACA,2BACA,eAEF,0BACE,2BAEF,qBACE,gBAEF,qBACE,eACA,mBACA,6BACA,iBACA,cAEF,iBACE,iBACA,kBACA,mBACA,eAEF,qBACE,aACA,mBACA,QACA,kBAEF,4BACE,2DACA,mBAEF,sBACE,iBACA,aACA,mBACA,QACA,iBACA,mBACA,eACA,oBAEF,gBACE,aACA,sBACA,QAEF,eACE,aACA,uBACA,SACA,iBACA,+BACA,kBACA,sBACA,eAEF,oCACE,eACA,cAEF,oBACE,OACA,YACA,aACA,sBACA,QAEF,mBACE,aACA,mBACA,QAEF,oBACE,6BACA,eACA,gBAEF,qBACE,iBACA,mBACA,6BACA,mBACA,gBACA,uBAEF,kBACE,WACA,YACA,kBACA,gCACA,cACA,qBACA,oBACA,iBAEF,oBACE,aACA,qBACA,QACA,iBACA,YAEF,wCACE,mBAEF,uBACE,iBACA,mBAEF,oBACE,UACA,WAEF,0BACE,qBAEF,0BACE,sBACA,kBAIF,gDACE","file":"variables-editor.css","sourcesContent":["// The Variables Editor page (moved from the template literal in src/lib/variables-editor.ts).\n*,\n*::before,\n*::after {\n box-sizing: border-box;\n margin: 0;\n padding: 0;\n}\n:root,\n:root[data-pp-dev-theme='light'] {\n --bg: #ffffff;\n --bg2: #f4f5f7;\n --bg3: #e9ebef;\n --bg4: #dbdee3;\n --border: #d7dae0;\n --border2: #c2c6cd;\n --text: #1a1a1e;\n --text2: #54566b;\n --text3: #8a8c9c;\n --accent: #4f46e5;\n --accent2: #7c3aed;\n --m-accent: var(--accent);\n --m-bg2: var(--bg2);\n --green: #16a34a;\n --red: #dc2626;\n --yellow: #a16207;\n --blue: #2563eb;\n --btn-primary-fg: #ffffff;\n --font-mono: 'Cascadia Code', 'Fira Code', 'JetBrains Mono', Consolas, monospace;\n --font-ui: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;\n}\n:root[data-pp-dev-theme='dark'] {\n --bg: #1a1a1e;\n --bg2: #222228;\n --bg3: #2a2a32;\n --bg4: #32323c;\n --border: #3a3a46;\n --border2: #4a4a58;\n --text: #e0e0f0;\n --text2: #a0a0b8;\n --text3: #606078;\n --accent: #6e8efb;\n --accent2: #a78bfa;\n --m-accent: var(--accent);\n --m-bg2: var(--bg2);\n --green: #4ade80;\n --red: #f87171;\n --yellow: #fbbf24;\n --blue: #60a5fa;\n --btn-primary-fg: #0d0d10;\n}\n@media (prefers-color-scheme: dark) {\n :root {\n --bg: #1a1a1e;\n --bg2: #222228;\n --bg3: #2a2a32;\n --bg4: #32323c;\n --border: #3a3a46;\n --border2: #4a4a58;\n --text: #e0e0f0;\n --text2: #a0a0b8;\n --text3: #606078;\n --accent: #6e8efb;\n --accent2: #a78bfa;\n --m-accent: var(--accent);\n --m-bg2: var(--bg2);\n --green: #4ade80;\n --red: #f87171;\n --yellow: #fbbf24;\n --blue: #60a5fa;\n --btn-primary-fg: #0d0d10;\n }\n}\nhtml,\nbody {\n height: 100%;\n overflow: hidden;\n background: var(--bg);\n color: var(--text);\n font-family: var(--font-ui);\n font-size: 13px;\n line-height: 1.5;\n}\n.app {\n display: flex;\n flex-direction: column;\n height: 100vh;\n}\n.toolbar {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 8px 12px;\n background: var(--bg2);\n border-bottom: 1px solid var(--border);\n flex-shrink: 0;\n flex-wrap: wrap;\n}\n.toolbar-title {\n font-weight: 600;\n font-size: 14px;\n margin-right: 8px;\n}\n.tabs {\n display: flex;\n gap: 4px;\n}\n.tab {\n padding: 5px 12px;\n border-radius: 4px;\n border: 1px solid transparent;\n background: transparent;\n color: var(--text2);\n font-size: 12px;\n cursor: pointer;\n}\n.tab:hover {\n background: var(--bg3);\n color: var(--text);\n}\n.tab.active {\n background: var(--bg4);\n color: var(--text);\n border-color: var(--border2);\n}\n.toolbar-spacer {\n flex: 1;\n}\n.ve-loading-indicator {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n color: var(--text3);\n font-size: 11px;\n}\n.ve-loading-dot {\n width: 6px;\n height: 6px;\n border-radius: 50%;\n background: var(--accent);\n animation: ve-pulse 1s ease-in-out infinite;\n}\n.ve-skeleton {\n padding: 16px;\n}\n.ve-skeleton-row {\n height: 32px;\n border-radius: 4px;\n background: var(--bg3);\n margin-bottom: 8px;\n animation: ve-pulse 1.4s ease-in-out infinite;\n}\n.ve-skeleton-row:nth-child(2) {\n width: 92%;\n}\n.ve-skeleton-row:nth-child(3) {\n width: 96%;\n}\n.ve-skeleton-row:nth-child(4) {\n width: 88%;\n}\n.ve-skeleton-row:nth-child(5) {\n width: 94%;\n}\n@keyframes ve-pulse {\n 0%,\n 100% {\n opacity: 1;\n }\n 50% {\n opacity: 0.4;\n }\n}\n.theme-switch {\n display: flex;\n gap: 2px;\n background: var(--bg3);\n border: 1px solid var(--border);\n border-radius: 4px;\n padding: 2px;\n}\n.theme-switch button {\n padding: 3px 8px;\n border: none;\n border-radius: 3px;\n background: transparent;\n color: var(--text2);\n font-size: 11px;\n cursor: pointer;\n font-family: var(--font-ui);\n}\n.theme-switch button.active {\n background: var(--accent);\n color: var(--btn-primary-fg);\n}\n.btn {\n padding: 5px 12px;\n border-radius: 4px;\n border: 1px solid var(--border);\n background: var(--bg3);\n color: var(--text);\n font-size: 12px;\n cursor: pointer;\n transition: background 0.1s;\n}\n.btn:hover {\n background: var(--bg4);\n border-color: var(--border2);\n}\n.btn-primary {\n background: var(--accent);\n border-color: var(--accent);\n color: var(--btn-primary-fg);\n font-weight: 600;\n}\n.btn-primary:hover {\n opacity: 0.9;\n background: var(--accent);\n}\n.btn-sm {\n padding: 5px 8px;\n font-size: 11px;\n min-width: 30px;\n min-height: 30px;\n}\n.local-update-btn {\n position: fixed;\n right: 16px;\n bottom: 16px;\n z-index: 20;\n box-shadow: 0 4px 16px rgba(0, 0, 0, 0.25);\n}\n.local-update-btn[hidden] {\n display: none;\n}\n.content {\n flex: 1;\n overflow: auto;\n padding: 14px;\n}\n.banner {\n margin-bottom: 12px;\n padding: 8px 12px;\n border-radius: 4px;\n font-size: 12px;\n}\n.banner-warning {\n background: color-mix(in srgb, var(--yellow) 15%, var(--bg));\n color: var(--yellow);\n border: 1px solid color-mix(in srgb, var(--yellow) 40%, var(--bg));\n}\n.banner-error {\n background: color-mix(in srgb, var(--red) 15%, var(--bg));\n color: var(--red);\n border: 1px solid color-mix(in srgb, var(--red) 40%, var(--bg));\n}\n.banner-success {\n background: color-mix(in srgb, var(--green) 15%, var(--bg));\n color: var(--green);\n border: 1px solid color-mix(in srgb, var(--green) 40%, var(--bg));\n}\n.banner ul {\n margin: 6px 0 0 18px;\n}\ntable {\n width: 100%;\n border-collapse: separate;\n border-spacing: 0;\n font-size: 12px;\n}\nthead {\n border-radius: 6px 6px 0 0;\n overflow: hidden;\n}\nthead th {\n padding: 8px 8px 6px;\n}\nth {\n text-align: left;\n padding: 6px 8px;\n color: var(--text2);\n border-bottom: 1px solid var(--border);\n font-weight: 600;\n font-size: 11px;\n text-transform: uppercase;\n letter-spacing: 0.4px;\n background: var(--bg2);\n}\nthead th:first-child {\n border-radius: 6px 0 0 0;\n}\nthead th:last-child {\n border-radius: 0 6px 0 0;\n}\ntd {\n padding: 12px 8px;\n vertical-align: top;\n}\ntr:hover td {\n background: var(--bg2);\n}\ninput[type='text'],\nselect,\ntextarea {\n width: 100%;\n background: var(--bg3);\n border: 1px solid var(--border);\n color: var(--text);\n padding: 4px 6px;\n border-radius: 4px;\n font-size: 12px;\n font-family: var(--font-mono);\n outline: none;\n min-height: 30px;\n}\ninput[type='text']:focus,\nselect:focus,\ntextarea:focus {\n border-color: var(--accent);\n}\ninput[type='color'] {\n max-width: 150px;\n width: 100%;\n height: 30px;\n padding: 0;\n border: 1px solid var(--border);\n border-radius: 4px;\n background: var(--bg3);\n}\ntextarea {\n resize: vertical;\n min-height: 32px;\n}\n.cell-textarea {\n min-height: 30px;\n height: 30px;\n resize: none;\n overflow: hidden;\n line-height: 1.8;\n}\n.col-name {\n width: 180px;\n}\n.col-type {\n width: 130px;\n}\n.col-source {\n width: 110px;\n}\n.col-actions {\n width: 70px;\n text-align: right;\n}\n.col-expand {\n width: 48px;\n padding-left: 0px;\n padding-right: 0 !important;\n}\n.ve-expand-cell {\n display: flex;\n align-items: center;\n gap: 2px;\n}\n.ve-schema-row-handle {\n flex-shrink: 0;\n width: 18px;\n height: 22px;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: grab;\n color: var(--text3);\n user-select: none;\n border: none;\n background: transparent;\n font-size: 20px;\n line-height: 1;\n padding: 0;\n letter-spacing: -2px;\n}\n.ve-schema-row-handle:hover {\n color: var(--text2);\n}\n.ve-schema-row-handle:active {\n cursor: grabbing;\n}\ntr.schema-row.is-dragging td,\ntr.details-row.is-dragging td {\n opacity: 0.45;\n}\ntr.schema-row.is-drop-target td,\ntr.details-row.is-drop-target td {\n box-shadow: inset 0 2px 0 var(--accent);\n}\n.ve-expand-btn {\n width: 30px;\n height: 30px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n font-size: 13px;\n line-height: 1;\n color: var(--text2);\n}\n.ve-expand-btn:hover {\n color: var(--text);\n}\n.raw-toggle {\n margin-bottom: 10px;\n}\n.raw-editor {\n width: 100%;\n height: min(60vh, 600px);\n font-family: var(--font-mono);\n font-size: 12px;\n white-space: pre;\n}\n.hint {\n color: var(--text3);\n font-size: 11px;\n}\n.ve-md p {\n margin: 0 0 4px;\n}\n.ve-md p:last-child,\n.ve-md ul:last-child,\n.ve-md ol:last-child,\n.ve-md pre:last-child {\n margin-bottom: 0;\n}\n.ve-md ul,\n.ve-md ol {\n margin: 0 0 4px;\n padding-left: 18px;\n}\n.ve-md code {\n font-family: var(--font-mono, monospace);\n background: var(--bg4);\n border-radius: 3px;\n padding: 0 3px;\n}\n.ve-md pre {\n margin: 0 0 4px;\n padding: 6px 8px;\n background: var(--bg4);\n border-radius: 4px;\n overflow-x: auto;\n}\n.ve-md pre code {\n background: none;\n padding: 0;\n}\n.ve-md strong {\n color: var(--text2);\n}\n.details-row td {\n background: var(--bg2);\n padding: 16px;\n}\n.details-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 12px;\n}\n.details-grid-item-wrapper {\n display: flex;\n gap: 12px;\n grid-column: 1/-1;\n}\n.details-grid label {\n display: block;\n font-size: 10px;\n color: var(--text3);\n font-family: var(--font-mono);\n margin-bottom: 6px;\n}\n.badge {\n font-size: 10px;\n padding: 1px 6px;\n border-radius: 8px;\n background: var(--bg4);\n color: var(--text3);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n white-space: nowrap;\n}\n.badge-source-dataset {\n background: color-mix(in srgb, var(--yellow) 22%, var(--bg));\n color: var(--yellow);\n}\n.badge-source-static {\n background: var(--bg4);\n color: var(--text3);\n}\n.ve-values-layout {\n display: flex;\n gap: 16px;\n align-items: stretch;\n height: calc(100vh - 115px);\n min-height: 320px;\n}\n.ve-values-detail > .ve-values-layout {\n height: 100%;\n min-height: 0;\n}\n.ve-values-nav {\n width: 280px;\n flex-shrink: 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n min-height: 0;\n}\n.ve-values-nav-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n overflow: auto;\n min-height: 0;\n}\n.ve-values-nav-item {\n display: flex;\n align-items: center;\n gap: 8px;\n min-height: 30px;\n padding: 6px 10px;\n border: 1px solid var(--border);\n border-radius: 6px;\n background: var(--bg2);\n color: var(--text);\n cursor: pointer;\n text-align: left;\n width: 100%;\n font-family: var(--font-ui);\n font-size: 12px;\n}\n.ve-values-nav-item:hover {\n border-color: var(--border2);\n background: var(--bg3);\n}\n.ve-values-nav-item.is-active {\n border-color: var(--m-accent);\n background: color-mix(in srgb, var(--m-accent) 12%, var(--m-bg2));\n}\n.ve-values-nav-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n background: var(--text3);\n flex-shrink: 0;\n}\n.ve-values-nav-item.is-active .ve-values-nav-dot {\n background: var(--m-accent);\n}\n.ve-values-nav-label {\n flex: 1;\n min-width: 0;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n font-family: var(--font-mono);\n}\n.ve-values-nav-badges {\n display: flex;\n gap: 4px;\n flex-shrink: 0;\n align-items: center;\n}\n.ve-values-nav-add {\n border-style: dashed;\n justify-content: center;\n background: transparent;\n}\n.ve-values-nav-add:hover {\n background: var(--bg3);\n}\n.ve-values-detail {\n flex: 1;\n min-width: 0;\n overflow: auto;\n padding-right: 10px;\n}\n.ve-values-anchor {\n scroll-margin-top: 12px;\n}\n.ve-values-anchor.is-active {\n border-color: var(--accent);\n}\n.ve-values-anchor + .ve-values-anchor {\n margin-top: 24px;\n padding-top: 10px;\n}\n.ve-values-detail-header {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.ve-values-detail-title {\n font-family: var(--font-mono);\n font-size: 13px;\n font-weight: 600;\n}\n.ve-values-detail-header .ve-values-field-label {\n flex: 1;\n min-width: 0;\n}\n.ve-values-detail-header .btn {\n margin-left: auto;\n flex-shrink: 0;\n}\n.ve-values-fields {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));\n gap: 12px;\n}\n.ve-values-field {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n gap: 10px;\n min-width: 0;\n}\n.ve-values-field.is-wide {\n grid-column: 1/-1;\n}\n.ve-values-field-label {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 10px;\n color: var(--text3);\n}\n.ve-values-field-label > span:first-child {\n font-family: var(--font-mono);\n}\n.ve-values-field textarea,\n.ve-values-field input[type='text'],\n.ve-values-field select {\n min-height: 30px;\n height: 30px;\n resize: none;\n overflow: hidden;\n}\n.ve-values-empty {\n color: var(--text3);\n padding: 24px 0;\n}\n.ve-values-list-items {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n.ve-values-list-item {\n background: var(--bg);\n border: 1px solid var(--border);\n border-radius: 4px;\n padding: 10px 8px 16px;\n display: flex;\n gap: 6px;\n align-items: flex-start;\n transition:\n opacity 0.12s ease,\n border-color 0.12s ease,\n box-shadow 0.12s ease;\n}\n.ve-values-list-item.is-dragging {\n opacity: 0.45;\n}\n.ve-values-list-item.is-drop-target {\n border-color: var(--accent);\n box-shadow: 0 0 0 1px var(--accent);\n}\n.ve-values-list-item-handle {\n flex-shrink: 0;\n width: 22px;\n align-self: stretch;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: grab;\n color: var(--text3);\n user-select: none;\n border: none;\n background: transparent;\n font-size: 16px;\n line-height: 1;\n padding: 0;\n letter-spacing: -2px;\n}\n.ve-values-list-item-handle:hover {\n color: var(--text2);\n}\n.ve-values-list-item-handle:active {\n cursor: grabbing;\n}\n.ve-values-list-item > .ve-values-fields {\n flex: 1;\n min-width: 0;\n}\n.ve-values-list-item-remove {\n flex-shrink: 0;\n}\n.checkbox-row {\n display: flex;\n flex-wrap: wrap;\n gap: 4px 16px;\n}\n.details-grid .checkbox-label {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n font-size: 11px;\n color: var(--text2);\n font-family: var(--font-ui);\n margin-bottom: 0;\n}\n.checkbox-label input {\n width: auto;\n}\n.empty-state {\n color: var(--text3);\n text-align: center;\n padding: 40px;\n}\n.ve-modal-overlay {\n position: fixed;\n inset: 0;\n background: rgba(0, 0, 0, 0.5);\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 100;\n}\n.ve-modal {\n background: var(--bg2);\n border: 1px solid var(--border2);\n border-radius: 6px;\n padding: 16px;\n width: min(400px, 90vw);\n box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);\n position: relative;\n}\n.ve-modal-diff {\n width: min(860px, 94vw);\n min-width: min(500px, 90vw);\n min-height: min(300px, 80vh);\n max-height: 85vh;\n display: flex;\n flex-direction: column;\n}\n.ve-modal-wide {\n width: min(560px, 90vw);\n}\n.ve-modal-title {\n font-size: 12px;\n color: var(--text2);\n margin-bottom: 8px;\n}\n.ve-modal-title-row {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n margin-bottom: 12px;\n}\n.ve-modal-title-row .ve-modal-title {\n margin-bottom: 0;\n flex: 1;\n}\n.ve-modal-close {\n width: 28px;\n height: 28px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n}\n.ve-modal-body {\n font-size: 12px;\n line-height: 1.6;\n max-height: 60vh;\n overflow-y: auto;\n}\n.ve-modal-diff .ve-modal-body {\n flex: 1;\n max-height: none;\n min-height: 0;\n display: flex;\n flex-direction: column;\n gap: 8px;\n}\n.ve-diff-nav {\n display: flex;\n align-items: center;\n gap: 8px;\n flex-shrink: 0;\n}\n.ve-diff-nav .btn {\n min-width: 30px;\n min-height: 30px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.ve-diff-nav-count {\n font-size: 12px;\n color: var(--text2);\n font-variant-numeric: tabular-nums;\n min-width: 4.5em;\n}\n.ve-diff {\n background: var(--bg);\n border: 1px solid var(--border);\n border-radius: 6px;\n overflow: auto;\n flex: 1;\n min-height: 180px;\n font-family: var(--font-mono);\n font-size: 11px;\n line-height: 1.55;\n}\n.ve-diff-line {\n display: flex;\n gap: 8px;\n padding: 1px 8px;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.ve-diff-prefix {\n flex-shrink: 0;\n width: 12px;\n user-select: none;\n opacity: 0.8;\n}\n.ve-diff-line.is-add {\n background: color-mix(in srgb, var(--green) 14%, var(--bg));\n color: var(--text);\n}\n.ve-diff-line.is-remove {\n background: color-mix(in srgb, var(--red) 14%, var(--bg));\n color: var(--text);\n}\n.ve-diff-line.is-add .ve-diff-prefix {\n color: var(--green);\n}\n.ve-diff-line.is-remove .ve-diff-prefix {\n color: var(--red);\n}\n.ve-diff-line.is-current-change {\n outline: 1px solid var(--accent);\n outline-offset: -1px;\n}\n.ve-diff-inline-add {\n background: color-mix(in srgb, var(--green) 35%, transparent);\n color: var(--green);\n font-weight: 700;\n border-radius: 2px;\n}\n.ve-diff-inline-remove {\n background: color-mix(in srgb, var(--red) 35%, transparent);\n color: color-mix(in srgb, var(--red) 80%, #fff);\n font-weight: 700;\n border-radius: 2px;\n}\n.ve-diff-empty {\n padding: 24px;\n color: var(--text3);\n text-align: center;\n}\n.ve-modal-body pre {\n background: var(--bg3);\n border: 1px solid var(--border);\n border-radius: 4px;\n padding: 8px;\n font-family: var(--font-mono);\n font-size: 11px;\n white-space: pre-wrap;\n word-break: break-word;\n}\n.ve-modal-body code {\n background: var(--bg3);\n padding: 1px 4px;\n border-radius: 3px;\n font-family: var(--font-mono);\n}\n.ve-modal-actions {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n gap: 8px;\n margin-top: 12px;\n}\n.ve-modal-actions .hint {\n margin: 0;\n margin-right: auto;\n text-align: left;\n}\n.ve-combo {\n position: relative;\n}\n.ve-combo-input {\n margin-bottom: 0;\n}\n.ve-combo-list {\n position: absolute;\n left: 0;\n right: 0;\n top: 100%;\n z-index: 10;\n max-height: 220px;\n overflow-y: auto;\n background: var(--bg3);\n border: 1px solid var(--border2);\n border-radius: 4px;\n margin-top: 2px;\n box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);\n}\n.ve-combo-option {\n padding: 5px 8px;\n font-size: 12px;\n cursor: pointer;\n}\n.ve-combo-option:hover {\n background: var(--bg4);\n}\n.ve-combo-chips {\n display: flex;\n flex-wrap: wrap;\n gap: 4px;\n margin-bottom: 8px;\n}\n.ve-chip {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: var(--bg3);\n border: 1px solid var(--border2);\n border-radius: 10px;\n padding: 2px 4px 2px 8px;\n font-size: 11px;\n}\n.ve-chip button {\n background: none;\n border: none;\n color: var(--text3);\n cursor: pointer;\n font-size: 11px;\n padding: 0 2px;\n}\n.ve-chip button:hover {\n color: var(--text);\n}\n.ve-list-items {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.ve-list-item {\n display: flex;\n gap: 6px;\n align-items: flex-start;\n}\n.ve-list-item > input[type='text'] {\n flex: 1;\n}\n.ve-list-item-cols {\n background: var(--bg2);\n border: 1px solid var(--border);\n border-radius: 4px;\n padding: 8px;\n display: flex;\n gap: 8px;\n align-items: flex-start;\n}\n.ve-list-item-fields {\n display: flex;\n flex-direction: column;\n gap: 8px;\n width: 100%;\n}\n.ve-list-field {\n display: flex;\n flex-direction: column;\n gap: 6px;\n max-width: 450px;\n width: 100%;\n}\n.ve-list-field label {\n font-size: 10px;\n color: var(--text3);\n}\n.ve-list-field textarea,\n.ve-list-field input[type='text'],\n.ve-list-field select {\n min-height: 30px;\n height: 30px;\n resize: none;\n overflow: hidden;\n}\n.ve-list-item-actions {\n flex-shrink: 0;\n}\n.box-style {\n border: 1px solid var(--border);\n border-radius: 6px;\n padding: 8px;\n background: var(--bg3);\n}\n.ve-ao-columns {\n display: flex;\n flex-direction: column;\n gap: 8px;\n margin-top: 8px;\n}\n.ve-ao-column {\n background: var(--bg);\n border: 1px solid var(--border);\n border-radius: 4px;\n padding: 10px 8px 16px;\n display: flex;\n gap: 6px;\n align-items: flex-start;\n transition:\n opacity 0.12s ease,\n border-color 0.12s ease,\n box-shadow 0.12s ease;\n}\n.ve-ao-column.is-dragging {\n opacity: 0.45;\n}\n.ve-ao-column.is-drop-target {\n border-color: var(--accent);\n box-shadow: 0 0 0 1px var(--accent);\n}\n.ve-ao-column-handle {\n flex-shrink: 0;\n width: 22px;\n align-self: stretch;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n cursor: grab;\n color: var(--text3);\n user-select: none;\n border: none;\n background: transparent;\n font-size: 16px;\n line-height: 1;\n padding: 0;\n letter-spacing: -2px;\n}\n.ve-ao-column-handle:hover {\n color: var(--text2);\n}\n.ve-ao-column-handle:active {\n cursor: grabbing;\n}\n.ve-ao-column-fields {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.ve-ao-column-top {\n display: flex;\n gap: 6px;\n align-items: flex-end;\n}\n.ve-ao-column-field {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n.ve-ao-column-field label {\n font-size: 10px;\n color: var(--text3);\n text-transform: none;\n margin-bottom: 0;\n font-family: var(--font-mono);\n}\n.ve-ao-column-name {\n position: relative;\n min-width: 0;\n}\n.ve-ao-column-name input {\n width: 100%;\n padding-right: 28px;\n font-family: var(--font-mono);\n}\n.ve-ao-column-remove {\n position: absolute;\n right: 0px;\n top: 50%;\n transform: translateY(-50%);\n width: 24px;\n height: 24px;\n padding: 0;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n}\n.ve-ao-column-bottom {\n display: flex;\n gap: 6px;\n align-items: flex-end;\n}\n.ve-ao-column-bottom > .ve-ao-column-field {\n flex: 1;\n min-width: 0;\n}\n.ve-json-issues {\n display: flex;\n flex-wrap: wrap;\n gap: 6px;\n margin-top: 8px;\n}\n.ve-json-issue-badge {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n background: color-mix(in srgb, var(--yellow) 15%, var(--bg));\n color: var(--yellow);\n border: 1px solid color-mix(in srgb, var(--yellow) 40%, var(--bg));\n border-radius: 10px;\n padding: 2px 8px;\n font-size: 11px;\n cursor: default;\n}\n.ve-modal-back {\n background: none;\n border: none;\n color: var(--accent);\n font-size: 11px;\n cursor: pointer;\n padding: 0 0 4px;\n font-family: var(--font-ui);\n display: block;\n}\n.ve-import-search {\n position: relative;\n margin-bottom: 12px;\n}\n.ve-import-search input {\n padding-left: 28px;\n}\n.ve-import-search::before {\n content: '⌕';\n position: absolute;\n left: 9px;\n top: 50%;\n transform: translateY(-50%);\n color: var(--text3);\n font-size: 14px;\n pointer-events: none;\n}\n.ve-import-section-title {\n font-size: 10.5px;\n color: var(--text3);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n margin: 14px 0 6px;\n font-weight: 600;\n}\n.ve-import-section-title:first-child {\n margin-top: 0;\n}\n.ve-import-page-list {\n display: flex;\n flex-direction: column;\n gap: 5px;\n}\n.ve-import-page-row {\n display: flex;\n align-items: center;\n gap: 10px;\n width: 100%;\n text-align: left;\n padding: 8px 10px;\n border: 1px solid var(--border);\n border-radius: 6px;\n background: var(--bg3);\n color: var(--text);\n cursor: pointer;\n font-family: var(--font-ui);\n font-size: 12px;\n}\n.ve-import-page-row:hover {\n border-color: var(--accent);\n}\n.ve-import-page-name {\n font-weight: 500;\n}\n.ve-import-page-slug {\n font-size: 11px;\n color: var(--text3);\n font-family: var(--font-mono);\n margin-left: auto;\n flex-shrink: 0;\n}\n.ve-import-empty {\n padding: 20px 4px;\n text-align: center;\n color: var(--text3);\n font-size: 12px;\n}\n.ve-import-list-head {\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 8px;\n}\n.ve-import-list-head .badge {\n background: color-mix(in srgb, var(--green) 18%, var(--bg));\n color: var(--green);\n}\n.ve-import-select-all {\n margin-left: auto;\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 11.5px;\n color: var(--text2);\n cursor: pointer;\n text-transform: none;\n}\n.ve-import-list {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.ve-import-row {\n display: flex;\n align-items: flex-start;\n gap: 10px;\n padding: 8px 10px;\n border: 1px solid var(--border);\n border-radius: 6px;\n background: var(--bg3);\n cursor: pointer;\n}\n.ve-import-row input[type='checkbox'] {\n margin-top: 2px;\n flex-shrink: 0;\n}\n.ve-import-row-main {\n flex: 1;\n min-width: 0;\n display: flex;\n flex-direction: column;\n gap: 3px;\n}\n.ve-import-row-top {\n display: flex;\n align-items: center;\n gap: 8px;\n}\n.ve-import-row-name {\n font-family: var(--font-mono);\n font-size: 12px;\n font-weight: 600;\n}\n.ve-import-row-value {\n font-size: 11.5px;\n color: var(--text2);\n font-family: var(--font-mono);\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n.ve-import-swatch {\n width: 12px;\n height: 12px;\n border-radius: 3px;\n border: 1px solid var(--border2);\n flex-shrink: 0;\n display: inline-block;\n vertical-align: -1px;\n margin-right: 5px;\n}\n.ve-import-skip-row {\n display: flex;\n align-items: baseline;\n gap: 8px;\n padding: 7px 10px;\n opacity: 0.85;\n}\n.ve-import-skip-row .ve-import-row-name {\n color: var(--text2);\n}\n.ve-import-skip-reason {\n font-size: 11.5px;\n color: var(--text3);\n}\n::-webkit-scrollbar {\n width: 8px;\n height: 8px;\n}\n::-webkit-scrollbar-track {\n background: var(--bg);\n}\n::-webkit-scrollbar-thumb {\n background: var(--bg4);\n border-radius: 4px;\n}\n\n// A page without a template has no tabs, Refresh, Save or local update: only the message.\nbody[data-template-less='true'] .ve-template-only {\n display: none !important;\n}\n"]}
@@ -966,7 +966,7 @@ function listColumnsEditorHtml(tag, i) {
966
966
  const cols = listColumnsFor(tag);
967
967
  const itemsHtml = cols.map((col, colIndex) => listColumnItemHtml(col, i, colIndex)).join('');
968
968
  return ('<div class="box-style" style="grid-column:1/-1">' +
969
- '<label>additional_options (UI version)<button type="button" class="btn btn-sm" style="text-transform:none;padding:0 6px;margin-left:4px"' +
969
+ '<label>additional_options (UI version)<button type="button" class="btn btn-sm" style="padding:0 6px;margin-left:4px"' +
970
970
  actionAttrs('show-list-columns-help') +
971
971
  ' title="What is additional_options for list?">?</button></label>' +
972
972
  '<div class="ve-ao-columns">' +
@@ -1039,7 +1039,7 @@ function schemaRowHtml(tag, i) {
1039
1039
  <div class="box-style" style="height:fit-content;">${editorFlagsRow(tag, i, vis)}</div>
1040
1040
  </div>
1041
1041
  <div class="box-style" style="grid-column:1/-1">
1042
- <label>additional_options (raw JSON) <button type="button" class="btn btn-sm" style="text-transform:none;padding:0 6px;margin-left:4px"${actionAttrs('show-additional-options-help', { index: i })} title="What goes here for this type/source?">?</button></label>
1042
+ <label>additional_options (raw JSON) <button type="button" class="btn btn-sm" style="padding:0 6px;margin-left:4px"${actionAttrs('show-additional-options-help', { index: i })} title="What goes here for this type/source?">?</button></label>
1043
1043
  ${additionalOptionsCell}
1044
1044
  <div class="hint">${additionalOptionsHint(tag)}</div>
1045
1045