/*! For license information please see bundle.js.LICENSE.txt */ (()=>{"use strict";var e={20(e,n,i){var t=i(540),a=Symbol.for("react.element"),r=Symbol.for("react.fragment"),o=Object.prototype.hasOwnProperty,s=t.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,l={key:!0,ref:!0,__self:!0,__source:!0};function d(e,n,i){var t,r={},d=null,c=null;for(t in void 0!==i&&(d=""+i),void 0!==n.key&&(d=""+n.key),void 0!==n.ref&&(c=n.ref),n)o.call(n,t)&&!l.hasOwnProperty(t)&&(r[t]=n[t]);if(e&&e.defaultProps)for(t in n=e.defaultProps)void 0===r[t]&&(r[t]=n[t]);return{$$typeof:a,type:e,key:d,ref:c,props:r,_owner:s.current}}n.Fragment=r,n.jsx=d,n.jsxs=d},27(e,n,i){i.d(n,{A:()=>s});var t=i(601),a=i.n(t),r=i(314),o=i.n(r)()(a());o.push([e.id,"/* ── Modifiers Panel ────────────────────────────────────── */\n\n.modifiers-panel {\n max-width: 900px;\n}\n\n/* ── Toast ── */\n.mod-toast {\n position: fixed;\n top: 16px;\n right: 24px;\n background: #059669;\n color: #fff;\n padding: 8px 20px;\n border-radius: 8px;\n font-size: 13px;\n font-weight: 600;\n z-index: 1000;\n box-shadow: 0 4px 12px rgba(0,0,0,0.15);\n animation: mod-toast-in 0.25s ease-out;\n}\n@keyframes mod-toast-in {\n from { opacity: 0; transform: translateY(-8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n\n.mod-dismiss-btn {\n margin-left: 12px;\n cursor: pointer;\n background: none;\n border: none;\n font-weight: 700;\n font-size: 14px;\n color: inherit;\n}\n\n/* ── Intro ── */\n.mod-intro {\n margin-bottom: 20px;\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n gap: 12px;\n}\n.mod-intro p {\n color: #64748b;\n margin: 0;\n font-size: 13px;\n line-height: 1.5;\n}\n.mod-dirty-badge {\n flex-shrink: 0;\n background: #fef3c7;\n color: #92400e;\n font-size: 11px;\n font-weight: 600;\n padding: 3px 10px;\n border-radius: 12px;\n white-space: nowrap;\n}\n\n/* ── Factor Group Card ── */\n.mod-group {\n background: #fff;\n border: 1px solid var(--border, #e2e8f0);\n border-radius: 10px;\n margin-bottom: 16px;\n overflow: hidden;\n}\n.mod-group-header {\n display: flex;\n align-items: flex-start;\n gap: 12px;\n padding: 16px 20px 12px;\n border-bottom: 1px solid var(--border, #e2e8f0);\n background: #fafbfc;\n}\n.mod-group-icon {\n font-size: 20px;\n flex-shrink: 0;\n margin-top: 2px;\n}\n.mod-group-title {\n margin: 0;\n font-size: 15px;\n font-weight: 700;\n color: var(--text, #1e293b);\n}\n.mod-group-desc {\n margin: 2px 0 0;\n font-size: 12px;\n color: var(--text-dim, #64748b);\n}\n\n/* ── Value Section (young, mature, local, etc.) ── */\n.mod-value-section {\n border-bottom: 1px solid #f1f5f9;\n}\n.mod-value-section:last-child {\n border-bottom: none;\n}\n.mod-value-header {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 12px 20px 4px;\n}\n.mod-value-icon {\n font-size: 14px;\n}\n.mod-value-label {\n font-size: 13px;\n font-weight: 600;\n color: var(--text, #1e293b);\n flex: 1;\n}\n.mod-save-group-btn {\n background: var(--accent, #4F46E5);\n color: #fff;\n border: none;\n border-radius: 6px;\n padding: 4px 12px;\n font-size: 11px;\n font-weight: 600;\n cursor: pointer;\n transition: opacity 0.15s;\n}\n.mod-save-group-btn:hover { opacity: 0.85; }\n.mod-save-group-btn:disabled { opacity: 0.5; cursor: default; }\n\n/* ── Modifier Row ── */\n.mod-slider-list {\n padding: 2px 20px 14px;\n}\n.mod-row {\n padding: 10px 0 6px;\n border-bottom: 1px solid #f8fafc;\n transition: opacity 0.2s;\n}\n.mod-row:last-child { border-bottom: none; }\n.mod-row-disabled { opacity: 0.4; }\n.mod-row-dirty {\n background: #fffbeb;\n margin: 0 -8px;\n padding-left: 8px;\n padding-right: 8px;\n border-radius: 6px;\n}\n.mod-row-top {\n display: flex;\n align-items: center;\n gap: 10px;\n}\n.mod-ch-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n.mod-ch-name {\n font-size: 13px;\n font-weight: 500;\n color: var(--text, #1e293b);\n min-width: 90px;\n}\n.mod-empty {\n padding: 12px 0;\n color: #94a3b8;\n font-size: 13px;\n font-style: italic;\n}\n\n/* ── Slider ── */\n.mod-slider-wrap {\n flex: 1;\n min-width: 180px;\n display: flex;\n align-items: center;\n gap: 6px;\n}\n.mod-slider-tick {\n font-size: 10px;\n color: #94a3b8;\n flex-shrink: 0;\n width: 24px;\n font-variant-numeric: tabular-nums;\n}\n.mod-slider-tick-neg { text-align: right; }\n.mod-slider-tick-pos { text-align: left; }\n\n.mod-slider {\n -webkit-appearance: none;\n appearance: none;\n width: 100%;\n height: 6px;\n border-radius: 3px;\n background: linear-gradient(to right, #fecaca 0%, #f1f5f9 50%, #bbf7d0 100%);\n outline: none;\n cursor: pointer;\n}\n.mod-slider::-webkit-slider-thumb {\n -webkit-appearance: none;\n appearance: none;\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background: var(--slider-color, #94a3b8);\n border: 2px solid #fff;\n box-shadow: 0 1px 4px rgba(0,0,0,0.2);\n cursor: grab;\n transition: transform 0.1s;\n}\n.mod-slider::-webkit-slider-thumb:hover {\n transform: scale(1.15);\n}\n.mod-slider::-moz-range-thumb {\n width: 18px;\n height: 18px;\n border-radius: 50%;\n background: var(--slider-color, #94a3b8);\n border: 2px solid #fff;\n box-shadow: 0 1px 4px rgba(0,0,0,0.2);\n cursor: grab;\n}\n\n/* ── Percentage Badge ── */\n.mod-pct-badge {\n font-size: 13px;\n font-weight: 700;\n min-width: 48px;\n text-align: center;\n padding: 2px 6px;\n border-radius: 4px;\n font-variant-numeric: tabular-nums;\n color: #64748b;\n background: #f1f5f9;\n}\n.mod-pct-badge.pos { color: #059669; background: #ecfdf5; }\n.mod-pct-badge.neg { color: #dc2626; background: #fef2f2; }\n\n/* ── Toggle Switch ── */\n.mod-toggle {\n position: relative;\n cursor: pointer;\n flex-shrink: 0;\n}\n.mod-toggle input {\n position: absolute;\n opacity: 0;\n width: 0;\n height: 0;\n}\n.mod-toggle-track {\n display: block;\n width: 34px;\n height: 18px;\n border-radius: 9px;\n background: #cbd5e1;\n transition: background 0.2s;\n position: relative;\n}\n.mod-toggle-track::after {\n content: '';\n position: absolute;\n top: 2px;\n left: 2px;\n width: 14px;\n height: 14px;\n border-radius: 50%;\n background: #fff;\n transition: transform 0.2s;\n box-shadow: 0 1px 2px rgba(0,0,0,0.1);\n}\n.mod-toggle input:checked + .mod-toggle-track {\n background: #4F46E5;\n}\n.mod-toggle input:checked + .mod-toggle-track::after {\n transform: translateX(16px);\n}\n\n/* ── Save Button (per row) ── */\n.mod-save-btn {\n background: #4F46E5;\n color: #fff;\n border: none;\n border-radius: 6px;\n width: 28px;\n height: 28px;\n font-size: 14px;\n font-weight: 700;\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n transition: opacity 0.15s;\n}\n.mod-save-btn:hover { opacity: 0.85; }\n.mod-save-btn:disabled { opacity: 0.5; cursor: default; }\n\n/* ── Rationale Row ── */\n.mod-row-bottom {\n margin-top: 4px;\n padding-left: 20px;\n}\n.mod-rationale {\n width: 100%;\n border: 1px solid transparent;\n border-radius: 4px;\n padding: 4px 8px;\n font-size: 11px;\n color: #64748b;\n background: transparent;\n transition: border-color 0.15s, background 0.15s;\n box-sizing: border-box;\n}\n.mod-rationale:hover {\n background: #f8fafc;\n}\n.mod-rationale:focus {\n outline: none;\n border-color: #4F46E5;\n background: #fff;\n color: #1e293b;\n}\n.mod-rationale::placeholder {\n color: #94a3b8;\n}\n\n/* ── Preview Section ── */\n.mod-preview-controls {\n display: flex;\n flex-wrap: wrap;\n gap: 12px;\n padding: 14px 20px;\n align-items: flex-end;\n}\n.mod-preview-field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n.mod-preview-field label {\n font-size: 11px;\n font-weight: 600;\n color: #64748b;\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n.mod-preview-field input,\n.mod-preview-field select {\n border: 1px solid var(--border, #e2e8f0);\n border-radius: 6px;\n padding: 6px 10px;\n font-size: 13px;\n min-width: 120px;\n color: var(--text, #1e293b);\n background: #fff;\n}\n.mod-preview-field input:focus,\n.mod-preview-field select:focus {\n outline: none;\n border-color: #4F46E5;\n}\n.mod-preview-btn {\n background: var(--text, #1e293b);\n color: #fff;\n border: none;\n border-radius: 6px;\n padding: 7px 18px;\n font-size: 13px;\n font-weight: 600;\n cursor: pointer;\n transition: opacity 0.15s;\n}\n.mod-preview-btn:hover { opacity: 0.85; }\n.mod-preview-btn:disabled { opacity: 0.5; cursor: default; }\n\n/* ── Preview Result ── */\n.mod-preview-result {\n padding: 14px 20px;\n border-top: 1px solid #f1f5f9;\n}\n.mod-preview-channels {\n display: flex;\n flex-direction: column;\n gap: 2px;\n}\n.mod-preview-row {\n display: flex;\n align-items: center;\n gap: 10px;\n padding: 6px 0;\n font-size: 13px;\n}\n.mod-preview-header-row {\n padding-bottom: 4px;\n border-bottom: 1px solid #f1f5f9;\n margin-bottom: 2px;\n}\n.mod-preview-ch-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n.mod-preview-ch-dot-spacer {\n width: 10px;\n flex-shrink: 0;\n}\n.mod-preview-ch-name {\n font-weight: 500;\n min-width: 90px;\n flex: 1;\n}\n.mod-preview-ch-val {\n min-width: 40px;\n text-align: right;\n font-variant-numeric: tabular-nums;\n}\n.mod-preview-ch-arrow {\n color: #94a3b8;\n font-size: 12px;\n width: 16px;\n text-align: center;\n}\n.mod-preview-ch-diff {\n font-size: 11px;\n font-weight: 600;\n padding: 1px 8px;\n border-radius: 4px;\n min-width: 32px;\n text-align: center;\n font-variant-numeric: tabular-nums;\n}\n.mod-preview-ch-diff.pos {\n color: #059669;\n background: #ecfdf5;\n}\n.mod-preview-ch-diff.neg {\n color: #dc2626;\n background: #fef2f2;\n}\n.mod-preview-ch-diff-spacer {\n min-width: 32px;\n}\n\n/* ── Responsive ── */\n@media (max-width: 768px) {\n .mod-row-top {\n flex-wrap: wrap;\n }\n .mod-slider-wrap {\n min-width: 100%;\n order: 10;\n margin-top: 4px;\n }\n .mod-preview-controls {\n flex-direction: column;\n }\n .mod-preview-field input,\n .mod-preview-field select {\n min-width: 100%;\n }\n}\n",""]);const s=o},42(e,n,i){i.d(n,{A:()=>s});var t=i(601),a=i.n(t),r=i(314),o=i.n(r)()(a());o.push([e.id,"/* ============================================================\n Intelligence Panel Styles\n ============================================================ */\n\n.intel-panel {\n width: 100%;\n}\n\n.intel-loading {\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 12px;\n padding: 60px 20px;\n color: var(--text-dim);\n}\n\n/* ─── Emulated Data Banner ───────────────────────────────── */\n\n.intel-emulated-banner {\n padding: 10px 16px;\n background: #eff6ff;\n border: 1px solid #bfdbfe;\n border-radius: 8px;\n color: #1e40af;\n font-size: 13px;\n margin-bottom: 16px;\n}\n.intel-emulated-banner code {\n background: rgba(0,0,0,0.06);\n padding: 1px 5px;\n border-radius: 3px;\n font-size: 12px;\n}\n\n\n/* ─── KPI Grid ───────────────────────────────────────────── */\n\n.intel-kpi-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\n gap: 12px;\n margin: 16px 0 24px;\n}\n\n.intel-kpi-card {\n background: var(--card-bg);\n border: 1px solid var(--border);\n border-radius: 10px;\n padding: 18px 16px;\n text-align: center;\n}\n\n.intel-kpi-value {\n font-size: 26px;\n font-weight: 700;\n color: var(--accent);\n letter-spacing: -0.5px;\n margin-bottom: 4px;\n}\n\n.intel-kpi-label {\n font-size: 11px;\n color: var(--text-dim);\n text-transform: uppercase;\n letter-spacing: 0.5px;\n font-weight: 550;\n}\n\n\n/* ─── Channel Breakdown ──────────────────────────────────── */\n\n.intel-channel-breakdown {\n margin-bottom: 24px;\n}\n.intel-channel-breakdown h3 {\n font-size: 15px;\n font-weight: 600;\n margin-bottom: 12px;\n color: var(--text);\n}\n\n.intel-channel-cards {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n gap: 12px;\n}\n\n.intel-channel-card {\n background: var(--card-bg);\n border: 1px solid var(--border);\n border-top: 3px solid;\n border-radius: 8px;\n padding: 16px;\n}\n\n.intel-channel-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 12px;\n}\n\n.intel-channel-badge {\n display: inline-block;\n padding: 3px 10px;\n border-radius: 12px;\n font-size: 12px;\n font-weight: 600;\n}\n\n.intel-channel-count {\n font-size: 12px;\n color: var(--text-dim);\n}\n\n.intel-channel-metrics {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 10px;\n}\n\n.intel-channel-metrics > div {\n display: flex;\n flex-direction: column;\n}\n\n.metric-val {\n font-size: 16px;\n font-weight: 600;\n color: var(--text);\n}\n\n.metric-lbl {\n font-size: 10px;\n color: var(--text-dim);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n margin-top: 1px;\n}\n\n\n/* ─── Campaigns Performance Table ────────────────────────── */\n\n.intel-campaigns-table {\n margin-top: 4px;\n}\n.intel-campaigns-table h3 {\n font-size: 15px;\n font-weight: 600;\n margin-bottom: 12px;\n color: var(--text);\n}\n\n\n/* ─── Pacing Bar ─────────────────────────────────────────── */\n\n.intel-pacing {\n display: flex;\n align-items: center;\n gap: 6px;\n min-width: 100px;\n}\n\n.intel-pacing-label {\n font-size: 11px;\n color: var(--text-dim);\n white-space: nowrap;\n}\n\n.intel-pacing-track {\n flex: 1;\n height: 6px;\n background: #e5e7eb;\n border-radius: 3px;\n overflow: hidden;\n min-width: 50px;\n}\n\n.intel-pacing-fill {\n height: 100%;\n border-radius: 3px;\n transition: width 0.3s ease;\n}\n\n.intel-pacing-pct {\n font-size: 11px;\n font-weight: 600;\n color: var(--text-secondary);\n min-width: 32px;\n text-align: right;\n}\n\n\n/* ─── Insights View ──────────────────────────────────────── */\n\n.intel-insights-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 16px;\n}\n\n.intel-insights-summary {\n display: flex;\n align-items: baseline;\n gap: 8px;\n font-size: 14px;\n color: var(--text-secondary);\n}\n\n.intel-insights-count {\n font-size: 28px;\n font-weight: 700;\n color: var(--accent);\n letter-spacing: -0.5px;\n}\n\n.intel-insights-list {\n display: flex;\n flex-direction: column;\n gap: 10px;\n}\n\n.intel-insight-card {\n background: var(--card-bg);\n border: 1px solid var(--border);\n border-left: 4px solid;\n border-radius: 8px;\n overflow: hidden;\n}\n\n.intel-insight-top {\n padding: 14px 16px;\n}\n.intel-insight-top:hover {\n background: rgba(0,0,0,0.01);\n}\n\n.intel-insight-meta {\n display: flex;\n align-items: center;\n gap: 10px;\n margin-bottom: 6px;\n}\n\n.intel-insight-severity {\n display: inline-flex;\n align-items: center;\n gap: 4px;\n padding: 2px 10px;\n border-radius: 10px;\n font-size: 11px;\n font-weight: 600;\n}\n\n.intel-insight-type {\n font-size: 11px;\n color: var(--text-dim);\n text-transform: uppercase;\n letter-spacing: 0.3px;\n}\n\n.intel-insight-title {\n font-size: 14px;\n font-weight: 600;\n color: var(--text);\n margin: 0 0 4px;\n}\n\n.intel-insight-context {\n display: flex;\n align-items: center;\n gap: 6px;\n font-size: 12px;\n color: var(--text-dim);\n}\n\n.intel-insight-expand {\n margin-left: auto;\n font-size: 12px;\n color: var(--text-dim);\n}\n\n.intel-insight-body {\n padding: 0 16px 14px;\n border-top: 1px solid var(--border-light);\n padding-top: 12px;\n margin-top: 4px;\n}\n\n.intel-insight-desc {\n font-size: 13px;\n color: var(--text-secondary);\n line-height: 1.6;\n margin: 0 0 10px;\n}\n\n.intel-insight-rec {\n font-size: 13px;\n color: var(--text);\n background: #f0fdf4;\n border: 1px solid #bbf7d0;\n border-radius: 6px;\n padding: 10px 12px;\n line-height: 1.5;\n}\n.intel-insight-rec strong {\n color: #16a34a;\n}\n\n\n/* ─── Analysis View ──────────────────────────────────────── */\n\n.intel-analysis-list {\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.intel-analysis-card {\n background: var(--card-bg);\n border: 1px solid var(--border);\n border-radius: 10px;\n overflow: hidden;\n}\n\n.intel-analysis-top {\n padding: 16px;\n}\n.intel-analysis-top:hover {\n background: rgba(0,0,0,0.01);\n}\n\n.intel-analysis-header {\n display: flex;\n align-items: flex-start;\n justify-content: space-between;\n margin-bottom: 14px;\n}\n.intel-analysis-header h4 {\n font-size: 15px;\n font-weight: 600;\n color: var(--text);\n margin: 0 0 2px;\n}\n\n.intel-analysis-expand {\n font-size: 14px;\n color: var(--text-dim);\n padding: 4px;\n}\n\n.intel-analysis-kpis {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));\n gap: 12px;\n margin-bottom: 12px;\n}\n\n.intel-analysis-kpi {\n display: flex;\n flex-direction: column;\n}\n\n.intel-analysis-budget {\n margin-top: 4px;\n}\n\n.intel-analysis-channels {\n padding: 0 16px 16px;\n border-top: 1px solid var(--border-light);\n padding-top: 14px;\n}\n.intel-analysis-channels h5 {\n font-size: 13px;\n font-weight: 600;\n color: var(--text);\n margin: 0 0 10px;\n}\n\n\n/* ─── Responsive ─────────────────────────────────────────── */\n\n@media (max-width: 768px) {\n .intel-kpi-grid { grid-template-columns: repeat(2, 1fr); }\n .intel-channel-cards { grid-template-columns: 1fr; }\n .intel-analysis-kpis { grid-template-columns: repeat(3, 1fr); }\n}\n",""]);const s=o},56(e,n,i){e.exports=function(e){var n=i.nc;n&&e.setAttribute("nonce",n)}},72(e){var n=[];function i(e){for(var i=-1,t=0;t0?" ".concat(n[5]):""," {")),i+=e(n),t&&(i+="}"),n[2]&&(i+="}"),n[4]&&(i+="}"),i}).join("")},n.i=function(e,i,t,a,r){"string"==typeof e&&(e=[[null,e,void 0]]);var o={};if(t)for(var s=0;s0?" ".concat(c[5]):""," {").concat(c[1],"}")),c[5]=r),i&&(c[2]?(c[1]="@media ".concat(c[2]," {").concat(c[1],"}"),c[2]=i):c[2]=i),a&&(c[4]?(c[1]="@supports (".concat(c[4],") {").concat(c[1],"}"),c[4]=a):c[4]="".concat(a)),n.push(c))}},n}},336(e,n,i){i.d(n,{A:()=>s});var t=i(601),a=i.n(t),r=i(314),o=i.n(r)()(a());o.push([e.id,"/* ============================================================\n Templates Panel — Sidebar + Grouped Card Layout\n Append to app.css or import separately\n ============================================================ */\n\n/* ─── Layout ─────────────────────────────────────────────── */\n.templates-layout {\n display: flex;\n gap: 0;\n min-height: calc(100vh - var(--header-height) - 100px);\n}\n\n.templates-sidebar {\n width: 240px;\n min-width: 240px;\n background: var(--surface);\n border-right: 1px solid var(--border);\n border-radius: 8px 0 0 8px;\n padding: 0;\n overflow-y: auto;\n max-height: calc(100vh - var(--header-height) - 100px);\n}\n\n.templates-content {\n flex: 1;\n min-width: 0;\n padding: 20px 24px;\n}\n\n/* ─── Sidebar Sections ───────────────────────────────────── */\n.sidebar-section {\n padding: 12px 0;\n border-bottom: 1px solid var(--border-light);\n}\n\n.sidebar-section:last-child {\n border-bottom: none;\n}\n\n.sidebar-section-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 0 14px 6px;\n}\n\n.sidebar-section-title {\n font-size: 10px;\n font-weight: 700;\n text-transform: uppercase;\n letter-spacing: 0.08em;\n color: var(--text-dim);\n}\n\n/* ─── Sidebar Items ──────────────────────────────────────── */\n.sidebar-list {\n display: flex;\n flex-direction: column;\n gap: 1px;\n}\n\n.sidebar-list-scrollable {\n max-height: 280px;\n overflow-y: auto;\n scrollbar-width: thin;\n scrollbar-color: var(--border) transparent;\n}\n\n.sidebar-list-scrollable::-webkit-scrollbar {\n width: 4px;\n}\n\n.sidebar-list-scrollable::-webkit-scrollbar-thumb {\n background: var(--border);\n border-radius: 4px;\n}\n\n.sidebar-list-scrollable::-webkit-scrollbar-track {\n background: transparent;\n}\n\n/* Add button pinned below the scrollable list */\n.sidebar-section > .sidebar-add-btn,\n.sidebar-section > .sidebar-new-item {\n margin: 4px 6px 0;\n}\n\n.sidebar-item-wrapper {\n display: flex;\n align-items: center;\n position: relative;\n}\n\n.sidebar-item-wrapper .btn-icon-xs {\n position: absolute;\n right: 6px;\n top: 50%;\n transform: translateY(-50%);\n opacity: 0;\n transition: opacity 0.15s;\n}\n\n.sidebar-item-wrapper:hover .btn-icon-xs {\n opacity: 1;\n}\n\n.sidebar-item {\n display: flex;\n align-items: center;\n gap: 8px;\n width: 100%;\n padding: 7px 14px;\n border: none;\n background: none;\n cursor: pointer;\n font-size: 13px;\n color: var(--text);\n text-align: left;\n font-family: inherit;\n transition: background 0.12s;\n border-radius: 0;\n}\n\n.sidebar-item:hover {\n background: var(--sidebar-hover);\n}\n\n.sidebar-item.active {\n background: var(--sidebar-active);\n color: var(--accent);\n font-weight: 600;\n}\n\n.sidebar-item-static {\n cursor: default;\n}\n\n.sidebar-item-static:hover {\n background: none;\n}\n\n.sidebar-item-icon {\n font-size: 16px;\n width: 22px;\n text-align: center;\n flex-shrink: 0;\n}\n\n.sidebar-item-label {\n flex: 1;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.sidebar-item-count {\n font-size: 11px;\n color: var(--text-dim);\n background: var(--bg);\n padding: 1px 7px;\n border-radius: 10px;\n font-weight: 500;\n flex-shrink: 0;\n}\n\n.sidebar-color-dot {\n width: 10px;\n height: 10px;\n border-radius: 50%;\n flex-shrink: 0;\n margin-left: 6px;\n}\n\n.sidebar-add-btn {\n color: var(--accent);\n font-style: italic;\n}\n\n.sidebar-new-item {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 4px 14px;\n}\n\n.sidebar-new-item input {\n flex: 1;\n font-size: 12px;\n padding: 4px 8px;\n border: 1px solid var(--border);\n border-radius: 4px;\n font-family: inherit;\n background: var(--bg);\n}\n\n/* ─── Icon & Color Pickers ───────────────────────────────── */\n.icon-picker-btn {\n font-size: 16px;\n background: var(--bg);\n border: 1px solid var(--border);\n border-radius: 5px;\n cursor: pointer;\n width: 28px;\n height: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n transition: border-color 0.15s;\n}\n\n.icon-picker-btn:hover {\n border-color: var(--accent);\n}\n\n.icon-picker-popover {\n position: absolute;\n left: 0;\n z-index: 999;\n border-radius: 10px;\n box-shadow: 0 8px 24px rgba(0,0,0,0.15), 0 1px 4px rgba(0,0,0,0.08);\n overflow: hidden;\n animation: iconPickerIn 0.12s ease-out;\n}\n\n.icon-picker-popover em-emoji-picker {\n --em-rgb-background: var(--surface-rgb, 255, 255, 255);\n --em-rgb-input: 241, 245, 249;\n border: none !important;\n}\n\n@keyframes iconPickerIn {\n from { opacity: 0; transform: translateY(-3px) scale(0.98); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n.color-picker-btn {\n width: 14px;\n height: 14px;\n border-radius: 50%;\n border: 2px solid var(--border);\n cursor: pointer;\n padding: 0;\n transition: border-color 0.15s;\n margin-left: 6px;\n flex-shrink: 0;\n}\n\n.color-picker-btn:hover {\n border-color: var(--accent);\n}\n\n.color-picker-grid {\n position: absolute;\n left: 0;\n top: 24px;\n background: var(--surface);\n border: 1px solid var(--border);\n border-radius: 8px;\n padding: 6px;\n display: grid;\n grid-template-columns: repeat(5, 1fr);\n gap: 4px;\n z-index: 99;\n box-shadow: 0 8px 24px rgba(0,0,0,0.12);\n}\n\n.color-picker-option {\n width: 22px;\n height: 22px;\n border-radius: 50%;\n border: 2px solid transparent;\n cursor: pointer;\n padding: 0;\n transition: border-color 0.15s, transform 0.1s;\n}\n\n.color-picker-option:hover {\n transform: scale(1.15);\n}\n\n.color-picker-option.active {\n border-color: var(--text);\n}\n\n/* ─── Small Button Variants ──────────────────────────────── */\n.btn-icon-sm {\n width: 24px;\n height: 24px;\n border: 1px solid var(--border);\n background: var(--bg);\n border-radius: 4px;\n cursor: pointer;\n font-size: 13px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--text-secondary);\n transition: all 0.12s;\n padding: 0;\n font-family: inherit;\n}\n\n.btn-icon-sm:hover {\n background: var(--accent-light);\n color: var(--accent);\n border-color: var(--accent);\n}\n\n.btn-icon-xs {\n width: 20px;\n height: 20px;\n border: none;\n background: none;\n border-radius: 4px;\n cursor: pointer;\n font-size: 12px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: var(--text-dim);\n transition: all 0.12s;\n padding: 0;\n font-family: inherit;\n}\n\n.btn-icon-xs:hover {\n background: var(--danger-bg);\n color: var(--danger);\n}\n\n.btn-icon-xs:disabled {\n opacity: 0.3;\n cursor: not-allowed;\n}\n\n.btn-danger-icon:hover {\n background: var(--danger-bg);\n color: var(--danger);\n}\n\n/* ─── Template Groups ────────────────────────────────────── */\n.template-group {\n background: var(--surface);\n border: 1px solid var(--border);\n border-radius: 8px;\n margin-bottom: 16px;\n overflow: hidden;\n}\n\n.template-group-header {\n padding: 16px 20px;\n background: var(--bg);\n border-bottom: 1px solid var(--border-light);\n}\n\n.template-group-info {\n display: flex;\n align-items: flex-start;\n gap: 20px;\n}\n\n.template-group-meta {\n flex: 1;\n min-width: 0;\n}\n\n.template-group-title {\n font-size: 15px;\n font-weight: 600;\n display: flex;\n align-items: center;\n gap: 8px;\n margin-bottom: 4px;\n}\n\n.cat-icon {\n font-size: 18px;\n}\n\n.objective-tag,\n.header-objective-tag {\n display: inline-block;\n font-size: 11px;\n font-weight: 600;\n color: #fff;\n padding: 2px 10px;\n border-radius: 10px;\n margin-left: 6px;\n}\n\n.template-group-stats {\n font-size: 12px;\n color: var(--text-secondary);\n margin-bottom: 10px;\n}\n\n.text-success { color: var(--success); font-weight: 600; }\n.text-danger { color: var(--danger); font-weight: 600; }\n.text-dim { color: var(--text-dim); }\n\n/* ─── Channel Bars (mini horizontal bars) ────────────────── */\n.template-group-channel-bars {\n display: flex;\n flex-direction: column;\n gap: 4px;\n}\n\n.channel-bar {\n display: flex;\n align-items: center;\n gap: 8px;\n font-size: 12px;\n}\n\n.channel-bar-color {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n.channel-bar-label {\n width: 80px;\n flex-shrink: 0;\n color: var(--text-secondary);\n}\n\n.channel-bar-pct {\n width: 36px;\n text-align: right;\n font-weight: 600;\n flex-shrink: 0;\n}\n\n.channel-bar-track {\n flex: 1;\n height: 6px;\n background: var(--border-light);\n border-radius: 3px;\n overflow: hidden;\n max-width: 200px;\n}\n\n.channel-bar-fill {\n height: 100%;\n border-radius: 3px;\n transition: width 0.3s ease;\n}\n\n/* ─── Template Group Table ───────────────────────────────── */\n.template-group .data-table {\n margin: 0;\n border: none;\n border-radius: 0;\n}\n\n.template-group .data-table thead th {\n background: var(--surface);\n}\n\n/* ─── Channel Legend Bar (top of content) ───────────────── */\n.channel-legend-bar {\n display: flex;\n gap: 8px;\n flex-wrap: wrap;\n margin-bottom: 14px;\n}\n\n.channel-chip {\n display: inline-flex;\n align-items: center;\n gap: 6px;\n padding: 4px 12px;\n font-size: 12px;\n font-weight: 500;\n color: var(--text-secondary);\n background: var(--surface);\n border: 1px solid var(--border);\n border-radius: 20px;\n border-left-width: 3px;\n}\n\n.channel-chip-dot {\n width: 8px;\n height: 8px;\n border-radius: 50%;\n flex-shrink: 0;\n}\n\n/* ─── Add Channel Button (per group) ────────────────────── */\n.btn-add-channel {\n display: block;\n margin: 8px 0 4px;\n padding: 6px 12px;\n font-size: 12px;\n color: var(--accent);\n background: var(--surface);\n border: 1px dashed var(--border);\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s;\n}\n\n.btn-add-channel:hover {\n background: var(--accent-light, #f0f7ff);\n border-color: var(--accent);\n}\n\n/* ─── Empty State ────────────────────────────────────────── */\n.empty-state {\n text-align: center;\n padding: 60px 20px;\n color: var(--text-secondary);\n}\n\n.empty-state-icon {\n font-size: 48px;\n margin-bottom: 12px;\n}\n\n/* ─── Responsive ─────────────────────────────────────────── */\n@media (max-width: 1024px) {\n .templates-sidebar {\n width: 200px;\n min-width: 200px;\n }\n}\n\n@media (max-width: 768px) {\n .templates-layout {\n flex-direction: column;\n }\n\n .templates-sidebar {\n width: 100%;\n min-width: unset;\n max-height: 260px;\n border-right: none;\n border-bottom: 1px solid var(--border);\n border-radius: 8px 8px 0 0;\n }\n\n .template-group-info {\n flex-direction: column;\n align-items: center;\n }\n}\n\n/* ── Forecast Validation ── */\n.btn-validate {\n background: none;\n border: 1px solid var(--border, #d1d5db);\n color: var(--text-primary, #374151);\n padding: 4px 12px;\n border-radius: 6px;\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n}\n.btn-validate:hover:not(:disabled) {\n background: var(--bg-hover, #f3f4f6);\n border-color: #8B5CF6;\n color: #8B5CF6;\n}\n.btn-validate:disabled {\n opacity: 0.6;\n cursor: wait;\n}\n\n.validation-results {\n background: #fafafa;\n border: 1px solid var(--border, #e5e7eb);\n border-radius: 8px;\n padding: 12px 16px;\n margin: 8px 0 12px;\n font-size: 13px;\n}\n.validation-results.validation-error {\n border-color: #fca5a5;\n background: #fef2f2;\n}\n.validation-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n margin-bottom: 10px;\n font-weight: 600;\n font-size: 13px;\n}\n.validation-comparison {\n display: flex;\n flex-direction: column;\n gap: 6px;\n}\n.validation-row {\n display: flex;\n align-items: center;\n gap: 8px;\n padding: 4px 0;\n}\n.validation-ch {\n min-width: 80px;\n font-size: 12px;\n}\n.validation-template {\n min-width: 36px;\n text-align: right;\n font-weight: 500;\n color: var(--text-dim, #6b7280);\n}\n.validation-arrow {\n color: var(--text-dim, #9ca3af);\n font-size: 11px;\n}\n.validation-api {\n min-width: 36px;\n text-align: right;\n font-weight: 600;\n}\n.validation-api.validation-divergent {\n color: #d97706;\n}\n.validation-diff {\n font-size: 11px;\n font-weight: 600;\n min-width: 40px;\n}\n.validation-error-msg {\n color: #dc2626;\n font-size: 13px;\n}\n",""]);const s=o},338(e,n,i){var t=i(961);n.H=t.createRoot,t.hydrateRoot},463(e,n){function i(e,n){var i=e.length;e.push(n);e:for(;0>>1,a=e[t];if(!(0>>1;tr(l,i))dr(c,l)?(e[t]=c,e[d]=i,t=d):(e[t]=l,e[s]=i,t=s);else{if(!(dr(c,i)))break e;e[t]=c,e[d]=i,t=d}}}return n}function r(e,n){var i=e.sortIndex-n.sortIndex;return 0!==i?i:e.id-n.id}if("object"==typeof performance&&"function"==typeof performance.now){var o=performance;n.unstable_now=function(){return o.now()}}else{var s=Date,l=s.now();n.unstable_now=function(){return s.now()-l}}var d=[],c=[],f=1,u=null,h=3,m=!1,p=!1,g=!1,v="function"==typeof setTimeout?setTimeout:null,y="function"==typeof clearTimeout?clearTimeout:null,b="undefined"!=typeof setImmediate?setImmediate:null;function k(e){for(var n=t(c);null!==n;){if(null===n.callback)a(c);else{if(!(n.startTime<=e))break;a(c),n.sortIndex=n.expirationTime,i(d,n)}n=t(c)}}function w(e){if(g=!1,k(e),!p)if(null!==t(d))p=!0,M(_);else{var n=t(c);null!==n&&R(w,n.startTime-e)}}function _(e,i){p=!1,g&&(g=!1,y(j),j=-1),m=!0;var r=h;try{for(k(i),u=t(d);null!==u&&(!(u.expirationTime>i)||e&&!A());){var o=u.callback;if("function"==typeof o){u.callback=null,h=u.priorityLevel;var s=o(u.expirationTime<=i);i=n.unstable_now(),"function"==typeof s?u.callback=s:u===t(d)&&a(d),k(i)}else a(d);u=t(d)}if(null!==u)var l=!0;else{var f=t(c);null!==f&&R(w,f.startTime-i),l=!1}return l}finally{u=null,h=r,m=!1}}"undefined"!=typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);var x,C=!1,S=null,j=-1,T=5,I=-1;function A(){return!(n.unstable_now()-Ie||125o?(e.sortIndex=r,i(c,e),null===t(d)&&e===t(c)&&(g?(y(j),j=-1):g=!0,R(w,r-o))):(e.sortIndex=s,i(d,e),p||m||(p=!0,M(_))),e},n.unstable_shouldYield=A,n.unstable_wrapCallback=function(e){var n=h;return function(){var i=h;h=n;try{return e.apply(this,arguments)}finally{h=i}}}},540(e,n,i){e.exports=i(287)},551(e,n,i){var t=i(540),a=i(982);function r(e){for(var n="https://reactjs.org/docs/error-decoder.html?invariant="+e,i=1;i