PageSourceSearch

https://www.citizenwatches.store/chunk-W6PMBGT4.js

js citizenwatches.store collected 2026-09-26 05:19:57 UTC 193,598 bytes, 1 lines download raw bytes

1import{a as ve}from"./chunk-AUFNJ3KC.js";import{b as se,c as de,d as _e,g as me,i as pe,k as ge,l as fe,m as ue,n as Ce,r as xe}from"./chunk-SX4JAACJ.js";import{b as he}from"./chunk-PDIR5E4T.js";import"./chunk-37SBWCOS.js";import{$ as b,Ab as U,Bb as W,Cb as A,Cc as ae,Db as R,Dc as ce,Eb as F,Fb as O,Fc as le,Ha as N,Hb as l,Ib as f,Jb as v,Kb as k,La as j,Lb as $,Ma as r,Mb as q,Nb as Y,Ob as S,Pb as E,Qb as T,Tb as Q,Ua as H,Ub as J,Vb as z,Xb as B,Z as p,Za as K,Zb as L,_ as g,a as M,aa as w,b as I,bb as m,fc as X,kb as D,lb as d,mb as n,nb as o,ob as C,sb as P,sc as Z,tb as y,tc as ee,ub as G,uc as te,vb as x,vc as ne,wc as oe,xb as u,xc as ie,yc as re,zb as s}from"./chunk-RP4YKYTM.js";var Pe=["suggestBox"],ye=["suggestBoxModal"],we=["offerNameInput"],Me=i=>({$implicit:i}),ke=(i,t)=>({discount_type:i,discount_value:t});function Se(i,t){i&1&&(b(),n(0,"svg",21),C(1,"path",22)(2,"circle",23)(3,"circle",24)(4,"path",25),o())}function Ee(i,t){i&1&&(b(),n(0,"svg",21),C(1,"path",26),o())}function Te(i,t){i&1&&(b(),n(0,"svg",21),C(1,"circle",27)(2,"path",28),o())}function Ie(i,t){i&1&&(b(),n(0,"svg",21),C(1,"path",29)(2,"circle",30),o())}function Ve(i,t){i&1&&(b(),n(0,"svg",21),C(1,"rect",31),o())}function Re(i,t){if(i&1&&(n(0,"span",18),m(1,Se,5,0,"svg",19)(2,Ee,2,0,"svg",19)(3,Te,3,0,"svg",19)(4,Ie,3,0,"svg",19)(5,Ve,2,0,"svg",20),o()),i&2){let e=t.$implicit;d("ngSwitch",e),r(),d("ngSwitchCase","cart"),r(),d("ngSwitchCase","wishlist"),r(),d("ngSwitchCase","failed"),r(),d("ngSwitchCase","view")}}function Fe(i,t){i&1&&(n(0,"div",32),C(1,"div",33),o())}function ze(i,t){if(i&1&&(n(0,"div",34)(1,"span",35),b(),n(2,"svg",36),C(3,"circle",27)(4,"path",37)(5,"path",38),o()(),w(),n(6,"h3"),l(7,"Could not load the console"),o(),n(8,"p"),l(9),o()()),i&2){let e=s();r(9),f(e.error)}}function Be(i,t){i&1&&(b(),n(0,"svg",49),C(1,"path",50)(2,"path",51),o())}function Le(i,t){i&1&&(b(),n(0,"svg",49),C(1,"path",52)(2,"path",53)(3,"path",54),o())}function De(i,t){if(i&1){let e=x();n(0,"a",47),u("click",function(){let c=p(e).$implicit,_=s(2);return g(_.selectTab(c.key))}),m(1,Be,3,0,"svg",48)(2,Le,4,0,"svg",48),l(3),o()}if(i&2){let e=t.$implicit,a=s(2);O("sel",a.tab===e.key),r(),d("ngIf",e.key==="list"),r(),d("ngIf",e.key==="conversion"),r(),v(" ",e.label," ")}}function $e(i,t){if(i&1){let e=x();n(0,"button",55),u("click",function(){p(e);let c=s(2);return g(c.closeCompose())}),b(),n(1,"svg",56),C(2,"path",57)(3,"path",58),o(),l(4," Back to list "),o()}}function qe(i,t){i&1&&(n(0,"div",32),C(1,"div",33),o())}function Ne(i,t){i&1&&(n(0,"div",66)(1,"span",35),b(),n(2,"svg",36),C(3,"path",67)(4,"path",68)(5,"path",69),o()(),w(),n(6,"h3"),l(7,"No offer lists yet"),o(),n(8,"p"),l(9,"Add one to pick an audience and save the rule. Sending happens from this list."),o()())}function He(i,t){if(i&1&&(n(0,"small"),l(1),o()),i&2){let e=s().$implicit;r(),k("",(e.products==null?null:e.products.length)||0," watch",((e.products==null?null:e.products.length)||0)===1?"":"es")}}function We(i,t){if(i&1&&(n(0,"small"),l(1),z(2,"date"),o()),i&2){let e=s().$implicit;r(),f(B(2,1,e.sent_at,"dd MMM y"))}}function Ae(i,t){if(i&1){let e=x();n(0,"button",84),u("click",function(){p(e);let c=s().$implicit,_=s(4);return g(_.viewRecipients(c))}),l(1),o()}if(i&2){let e=s().$implicit,a=s(4);d("disabled",a.recipientsLoading),r(),v(" ",a.recipientsLoading?"\u2026":e.status==="sent"?e.customers:e.eligible," ")}}function je(i,t){i&1&&l(0,"\u2014")}function Ge(i,t){if(i&1){let e=x();n(0,"button",85),u("click",function(){p(e);let c=s().$implicit,_=s(4);return g(_.startSendFromList(c))}),b(),n(1,"svg",79),C(2,"path",86)(3,"path",87),o(),l(4),o()}if(i&2){let e=s(5);d("disabled",e.sending),r(4),v(" ",e.sending?"Checking\u2026":"Send notification"," ")}}function Qe(i,t){if(i&1){let e=x();n(0,"button",78),u("click",function(){p(e);let c=s().$implicit,_=s(4);return g(_.openConversionFor(c))}),b(),n(1,"svg",79),C(2,"path",52)(3,"path",53)(4,"path",54),o(),l(5," Conversion "),o()}}function Ke(i,t){if(i&1){let e=x();n(0,"tr")(1,"td")(2,"b"),l(3),o(),n(4,"small"),l(5),z(6,"date"),o()(),n(7,"td"),l(8),z(9,"date"),z(10,"date"),o(),n(11,"td")(12,"span",74),l(13),o(),m(14,He,2,2,"small",15),o(),n(15,"td")(16,"span",75),l(17),o(),m(18,We,3,4,"small",15),o(),n(19,"td",72),m(20,Ae,2,2,"button",76)(21,je,1,0,"ng-template",null,1,L),o(),n(23,"td",72),l(24),o(),n(25,"td",77)(26,"button",78),u("click",function(){let c=p(e).$implicit,_=s(4);return g(_.viewRule(c))}),b(),n(27,"svg",79),C(28,"path",29)(29,"circle",30),o(),l(30," View "),o(),m(31,Ge,5,2,"button",8
10)(32,Qe,6,0,"button",81),w(),n(33,"button",78),u("click",function(){let c=p(e).$implicit,_=s(4);return g(_.startDuplicate(c))}),b(),n(34,"svg",79),C(35,"rect",82)(36,"path",83),o(),l(37," Duplicate "),o()()()}if(i&2){let e=t.$implicit,a=R(22),c=s(4);O("row-pending",e.status==="draft"),r(3),f(e.name),r(2),v("built ",B(6,16,e.created_at,"dd MMM y, HH:mm")),r(3),k(" ",B(9,19,e.from,"dd MMM")," \u2192 ",B(10,22,e.to,"dd MMM y")," "),r(5),f(c.productModeLabel(e.product_mode)),r(),d("ngIf",e.product_mode!=="all"),r(2),d("ngClass",e.status==="sent"?"approved":"pending"),r(),v(" ",e.status),r(),d("ngIf",e.sent_at),r(2),d("ngIf",e.status==="sent"?e.customers:e.eligible)("ngIfElse",a),r(4),f(e.coupons||"\u2014"),r(7),d("ngIf",e.status==="draft"),r(),d("ngIf",e.status==="sent")}}function Ue(i,t){if(i&1&&(n(0,"div",70)(1,"table",71)(2,"thead")(3,"tr")(4,"th"),l(5,"Offer list"),o(),n(6,"th"),l(7,"Window"),o(),n(8,"th"),l(9,"Products"),o(),n(10,"th"),l(11,"Status"),o(),n(12,"th",72),l(13,"Customers"),o(),n(14,"th",72),l(15,"Coupons"),o(),n(16,"th"),l(17,"Action"),o()()(),n(18,"tbody"),m(19,Ke,38,25,"tr",73),o()()()),i&2){let e=s(3);r(19),d("ngForOf",e.rules)}}function Ye(i,t){if(i&1){let e=x();P(0),n(1,"div",59)(2,"p",60),l(3," Saved offer lists. Add one to set the window, discounts and which watches are in or out, then send the notification from here. "),o(),n(4,"button",61),u("click",function(){p(e);let c=s(2);return g(c.openCompose())}),b(),n(5,"svg",62),C(6,"path",63),o(),l(7," Add new offer list "),o()(),m(8,qe,2,0,"div",13)(9,Ne,10,0,"div",64)(10,Ue,20,1,"div",65),y()}if(i&2){let e=s(2);r(8),d("ngIf",e.rulesLoading),r(),d("ngIf",!e.rulesLoading&&!e.rules.length),r(),d("ngIf",!e.rulesLoading&&e.rules.length)}}function Je(i,t){i&1&&(n(0,"small",111),l(1,"Offer name is required"),o())}function Xe(i,t){if(i&1&&(n(0,"option",112),l(1),o()),i&2){let e=t.$implicit;d("ngValue",e.key),r(),f(e.label)}}function Ze(i,t){i&1&&C(0,"span",120)}function et(i,t){if(i&1){let e=x();n(0,"li",124),u("mouseenter",function(){let c=p(e).index,_=s(6);return g(_.highlighted=c)})("click",function(){let c=p(e).$implicit,_=s(6);return g(_.toggleScopeHit(c))}),C(1,"span",125)(2,"span",126)(3,"span",127),o()}if(i&2){let e=t.$implicit,a=t.index,c=s(6);O("active",a===c.highlighted)("on",e.excluded),r(),O("on",e.excluded),r(),d("innerHTML",c.hitLabel(e.code),N),r(),d("innerHTML",c.hitLabel(e.name),N)}}function tt(i,t){if(i&1&&(n(0,"ul"),m(1,et,4,8,"li",123),o()),i&2){let e=s(5);r(),d("ngForOf",e.hits)}}function nt(i,t){i&1&&(n(0,"div",129),l(1,"No product matches that."),o())}function ot(i,t){if(i&1&&m(0,nt,2,0,"div",128),i&2){let e=s(5);d("ngIf",!e.hitsLoading)}}function it(i,t){if(i&1&&(n(0,"div",121),m(1,tt,2,1,"ul",122)(2,ot,1,1,"ng-template",null,4,L),o()),i&2){let e=R(3),a=s(4);r(),d("ngIf",a.hits.length)("ngIfElse",e)}}function rt(i,t){if(i&1&&(n(0,"em"),l(1),o()),i&2){let e=s(4);r(),f(e.scopeProducts.length)}}function at(i,t){if(i&1){let e=x();n(0,"div",113)(1,"div",114,3)(3,"span"),l(4,"Product code or name"),o(),n(5,"input",115),T("ngModelChange",function(c){p(e);let _=s(3);return E(_.excludeCode,c)||(_.excludeCode=c),g(c)}),u("input",function(){p(e);let c=s(3);return g(c.onExcludeInput())})("keydown",function(c){p(e);let _=s(3);return g(_.onExcludeKey(c))}),o(),m(6,Ze,1,0,"span",116)(7,it,4,2,"div",117),o(),n(8,"button",118),u("click",function(){p(e);let c=s(3);return g(c.openScopePanel())}),b(),n(9,"svg",119),C(10,"path",50)(11,"path",51),o(),m(12,rt,2,1,"em",15),o()()}if(i&2){let e=s(3);r(5),S("ngModel",e.excludeCode),r(),d("ngIf",e.hitsLoading),r(),d("ngIf",e.hitsOpen),r(),D("title",e.productMode==="include"?"View included products":"View excluded products")("aria-label",(e.productMode==="include"?"View included products":"View excluded products")+(e.scopeProducts.length?", "+e.scopeProducts.length:"")),r(4),d("ngIf",e.scopeProducts.length)}}function ct(i,t){if(i&1&&(n(0,"div",134)(1,"span",132),l(2,"Unplaced"),o(),n(3,"span",136),l(4),o()()),i&2){let e=s(4);r(4),f(e.matrix.unplaced)}}function lt(i,t){if(i&1&&(n(0,"div",130)(1,"div",131)(2,"span",132),l(3,"Products"),o(),n(4,"span",133),l(5),o()(),n(6,"div",134)(7,"span",132),l(8,"Pipeline"),o(),n(9,"span",133),l(10),o()(),n(11,"div",134)(12,"span",132),l(13,"Ready"),o(),n(14,"span",133),l(15),o()(),m(16,ct,5,1,"div",135),o()),i&2){let e=s(3);r(5),f(e.matrix.grand_total.products),r(5),f(e.lakh(e.matrix.grand_total.total)),r(),O("kpi--ready",e.readyOffers()),r(4),f(e.readyOffers()),r(),d("ngIf",e.matrix.unplaced)}}function st(i,t){i&1&&(P(0),l(1," Tick watches in the list \u2014 only those count. Anyone with none of them is dropped. "),y())}function dt(i,t){i&1&&(P(0),l(1," Tick watches to keep them off this offer. Other lists are not affected. "),y())}function _t(i,t){if(i&1&&(n(0,"p",137),m(1,st,2,0,"ng-container",15)(2,dt,2,0,"ng-container",15),o()),i&2){let e=s(3);r(),d("ngIf",e.productMode==="include"),r(),d("ngIf",e.productMode==="exclude")}}function mt(i,t){if(i&1){let e=x();n(0,"div",138)(1,"p"),l(2," Suggestions are modelled on this module's own conversion history per price range \u2014 see the AI Report. A cell with too little history falls back to a stated heuristic and says so. Applying them sets every cell; anyone hand-edited in a drill-down keeps their own value. "),o(),n(3,"button",139),u("click",function(){p(e);let c=s(3);return g(c.applyAllSuggestions())}),l(4,"Apply AI suggestions"),o()()}}function pt(i,t){i&1&&(n(0,"div",32),C(1,"div",33),o())}function gt(i,t){i&1&&(n(0,"div",66)(1,"span",35),b(),n(2,"svg",36),C(3,"rect",140)(4,"rect",141)(5,"rect",142)(6,"rect",143),o()(),w(),n(7,"h3"),l(8,"Pick at least one module"),o(),n(9,"p"),l(10,"The grid is built from the modules included in this campaign."),o()())}function ft(i,t){i&1&&G(0)}function ut(i,t){if(i&1&&(P(0),l(1),y()),i&2){let e=t.ngIf,a=s(5);r(),v(" ",e.products?e.products+" \xB7 "+a.lakh(e.total):"None in window"," ")}}function Ct(i,t){if(i&1&&(n(0,"th")(1,"span",147),m(2,ft,1,0,"ng-container",190),l(3),o(),n(4,"small",191),m(5,ut,2,1,"ng-container",15),o()()),i&2){let e=t.$implicit,a=s(4),c=R(2);
1O("col-idle",!a.moduleColumnTotal(e.key).products),r(2),d("ngTemplateOutlet",c)("ngTemplateOutletContext",Q(6,Me,e.key)),r(),v(" ",e.label," "),r(2),d("ngIf",a.moduleColumnTotal(e.key))}}function xt(i,t){if(i&1&&(n(0,"span",217),l(1),o()),i&2){let e=s(2).$implicit,a=s().$implicit,c=s(4);r(),v(" ",c.cellStat(a.ref,e.key).excluded," excluded")}}function ht(i,t){if(i&1){let e=x();n(0,"button",212),u("click",function(){p(e);let c=s().$implicit,_=s().$implicit,h=s(4);return g(h.openDrill(_.ref,c.key))}),n(1,"span",213),l(2),o(),n(3,"span",214),l(4),o(),m(5,xt,2,1,"span",215),n(6,"span",216),l(7,"Open list"),o()()}if(i&2){let e=s().$implicit,a=s().$implicit,c=s(4);d("ngClass",c.cellTone(a.ref,e.key))("title","Open the "+a.label+" \xB7 "+e.label+" list"),r(2),f(c.lakh(c.cellStat(a.ref,e.key).total)),r(2),q("",c.cellStat(a.ref,e.key).products," product",c.cellStat(a.ref,e.key).products===1?"":"s"," \xB7 ",c.cellStat(a.ref,e.key).customers," customer",c.cellStat(a.ref,e.key).customers===1?"":"s"),r(),d("ngIf",c.cellStat(a.ref,e.key).excluded)}}function vt(i,t){i&1&&(n(0,"span",218),l(1,"None"),o())}function Ot(i,t){if(i&1&&(n(0,"span",223),l(1),o()),i&2){let e=s().ngIf;r(),k(" ~",e.historical_conversion,"% conv \xB7 ",e.sample," sends")}}function bt(i,t){i&1&&(n(0,"span",224),l(1," no history yet \u2014 heuristic"),o())}function Mt(i,t){if(i&1&&(n(0,"div",219)(1,"span",220),l(2),o(),m(3,Ot,2,2,"span",221)(4,bt,2,0,"span",222),o()),i&2){let e=t.ngIf,a=s(6);d("title",e.rationale),r(2),f(a.offerText(J(4,ke,e.type,e.value))),r(),d("ngIf",e.source==="history"),r(),d("ngIf",e.source==="heuristic")}}function Pt(i,t){if(i&1&&(n(0,"div",225),l(1),o()),i&2){let e=s().$implicit,a=s().$implicit,c=s(4);r(),v(" ",c.offerText(c.cellOffer(a.ref,e.key))," ")}}function yt(i,t){if(i&1&&(n(0,"td",208),m(1,ht,8,8,"button",209)(2,vt,2,0,"ng-template",null,6,L)(4,Mt,5,7,"div",210)(5,Pt,2,1,"div",211),o()),i&2){let e=t.$implicit,a=R(3),c=s().$implicit,_=s(4);O("col-idle",!_.moduleColumnTotal(e.key).products),r(),d("ngIf",_.cellStat(c.ref,e.key).products)("ngIfElse",a),r(3),d("ngIf",_.mode==="auto"&&_.suggestionFor(c.ref,e.key)),r(),d("ngIf",_.cellOffer(c.ref,e.key).discount_value)}}function wt(i,t){if(i&1){let e=x();n(0,"input",229),u("input",function(c){p(e);let _=s(2).$implicit,h=s(4);return g(h.setBracketQtyCap(_.ref,c.target.value))}),o()}if(i&2){let e=s(2).$implicit,a=s(4);d("value",a.settingsFor(e.ref).qty_cap)}}function kt(i,t){if(i&1){let e=x();P(0),n(1,"select",203),u("change",function(c){p(e);let _=s().$implicit,h=s(4);return g(h.setBracketQtyMode(_.ref,c.target.value))}),n(2,"option",226),l(3,"Fixed per Order"),o(),n(4,"option",227),l(5,"Scales with QTY"),o()(),m(6,wt,1,1,"input",228),y()}if(i&2){let e=s().$implicit,a=s(4);r(),d("value",a.settingsFor(e.ref).qty_mode),r(5),d("ngIf",a.settingsFor(e.ref).qty_mode==="scale")}}function St(i,t){i&1&&(n(0,"span",230),l(1,"n/a"),o())}function Et(i,t){if(i&1){let e=x();n(0,"tr")(1,"td",146)(2,"div",192)(3,"input",193),T("ngModelChange",function(c){let _=p(e).$implicit;return E(_.label,c)||(_.label=c),g(c)}),u("change",function(){p(e);let c=s(4);return g(c.loadMatrix())}),o(),n(4,"span",194)(5,"input",195),T("ngModelChange",function(c){let _=p(e).$implicit;return E(_.min,c)||(_.min=c),g(c)}),u("change",function(){p(e);let c=s(4);return g(c.loadMatrix())}),o(),n(6,"em"),l(7,"to"),o(),n(8,"input",196),T("ngModelChange",function(c){let _=p(e).$implicit;return E(_.max,c)||(_.max=c),g(c)}),u("change",function(){p(e);let c=s(4);return g(c.loadMatrix())}),o()()()(),m(9,yt,6,6,"td",197),n(10,"td",154)(11,"span",173),l(12),o(),n(13,"small"),l(14),o(),n(15,"small",174),l(16),o()(),n(17,"td",198)(18,"div",199)(19,"input",200),u("input",function(c){let _=p(e).$implicit,h=s(4);return g(h.setBracketValue(_.ref,c.target.value))}),o(),n(20,"span",201),l(21),o()()(),n(22,"td",202)(23,"select",203),u("change",function(c){let _=p(e).$implicit,h=s(4);return g(h.setBracketReuse(_.ref,c.target.value))}),n(24,"option",204),l(25,"One Time"),o(),n(26,"option",205),l(27,"Multiple Use"),o()()(),n(28,"td",206),m(29,kt,7,2,"ng-container",122)(30,St,2,0,"ng-template",null,5,L),o(),n(32,"td",171)(33,"button",207),u("click",function(){let c=p(e).$implicit,_=s(4);return g(_.askRemoveBracket(c.ref))}),l(34,"\xD7"),o()()()}if(i&2){let e=t.$implicit,a=R(31),c=s(4);O("row-armed",c.bracketValue(e.ref)),r(2),O("has-offer",c.bracketValue(e.ref)),r(),S("ngModel",e.label),r(2),S("ngModel",e.min),r(3),S("ngModel",e.max),r(),d("ngForOf",c.activeModules())("ngForTrackBy",c.trackByModule),r(3),f(c.lakh(c.rowTotal(e.ref).total)),r(2),k("",c.rowTotal(e.ref).products," product",c.rowTotal(e.ref).products===1?"":"s"),r(2),k("",c.rowTotal(e.ref).customers," customer",c.rowTotal(e.ref).customers===1?"":"s"),r(2),O("has-value",c.bracketValue(e.ref))("need",c.saveTried&&!c.hasDiscountValue()),r(),d("value",c.bracketValue(e.ref)??"")("placeholder",c.discountType==="percent"?"Set %":"Set \u20B9"),r(2),f(c.settingsFor(e.ref).discount_type==="percent"?"%":"\u20B9"),r(2),d("value",c.settingsFor(e.ref).reuse),r(5),O("na",c.settingsFor(e.ref).discount_type!=="flat"),r(),d("ngIf",c.settingsFor(e.ref).discount_type==="flat")("ngIfElse",a),r(4),d("disabled",c.brackets.length<=1)}}function Tt(i,t){if(i&1&&(n(0,"span",232),l(1),o()),i&2){let e=s().ngIf,a=s(5);r(),f(a.lakh(e.total))}}function It(i,t){if(i&1&&(P(0),m(1,Tt,2,1,"span",231),y()),i&2){let e=t.ngIf;r(),d("ngIf",e.products)}}function Vt(i,t){if(i&1&&(n(0,"td"),m(1,It,2,1,"ng-container",15),o()),i&2){let e=t.$implicit,a=s(4);
1O("col-idle",!a.moduleColumnTotal(e.key).products),r(),d("ngIf",a.moduleColumnTotal(e.key))}}function Rt(i,t){if(i&1&&(n(0,"span",233),l(1),o()),i&2){let e=s(4);r(),v(" ",e.matrix.unplaced," customers fall outside every range and are not counted anywhere above. ")}}function Ft(i,t){if(i&1&&(P(0),l(1),y()),i&2){let e=s().$implicit;r(),v(" ",e.label," hit the per-module ceiling \u2014 narrow the window to see all of it. ")}}function zt(i,t){if(i&1&&(n(0,"span",233),m(1,Ft,2,1,"ng-container",15),o()),i&2){let e=t.$implicit,a=s(4);r(),d("ngIf",a.matrix.capped[e.key])}}function Bt(i,t){if(i&1){let e=x();n(0,"button",238),u("click",function(c){p(e);let _=s().index,h=s(4);return c.preventDefault(),g(h.removeReminder(_))}),l(1,"\xD7"),o()}}function Lt(i,t){if(i&1){let e=x();n(0,"label",234)(1,"input",235),u("change",function(c){let _=p(e).$implicit;return g(_.enabled=c.target.checked)}),o(),n(2,"span",236),l(3),o(),m(4,Bt,2,0,"button",237),o()}if(i&2){let e=t.$implicit,a=s(4);O("locked",e.locked)("on",e.enabled),r(),d("checked",e.enabled)("disabled",e.locked),r(2),f(a.reminderLabel(e)),r(),d("ngIf",!e.locked)}}function Dt(i,t){i&1&&(n(0,"em"),l(1,"\u2014 save the list, then send the notification from there"),o())}function $t(i,t){i&1&&(n(0,"em"),l(1,"\u2014 offer name is required"),o())}function qt(i,t){i&1&&(n(0,"em"),l(1,"\u2014 set a discount value on at least one range"),o())}function Nt(i,t){i&1&&(b(),n(0,"svg",239),C(1,"path",240),o())}function Ht(i,t){if(i&1){let e=x();P(0),n(1,"p",144),l(2," Each cell is one behaviour in one price band. Click a filled cell to choose who is mailed. Set a discount on the range to arm the send. "),o(),n(3,"div",70)(4,"table",145)(5,"thead")(6,"tr")(7,"th",146)(8,"span",147),b(),n(9,"svg",148),C(10,"path",149)(11,"circle",150)(12,"circle",151)(13,"circle",152),o(),l(14," Price range "),o()(),m(15,Ct,6,8,"th",153),w(),n(16,"th",154)(17,"span",147),b(),n(18,"svg",148),C(19,"path",52)(20,"path",53)(21,"path",54),o(),l(22," Total "),o()(),w(),n(23,"th",155)(24,"span",147),b(),n(25,"svg",148),C(26,"circle",156)(27,"circle",157)(28,"path",158),o(),l(29," Discount "),w(),n(30,"i",93),l(31,"*"),o()(),n(32,"span",159)(33,"button",160),u("click",function(){p(e);let c=s(3);return g(c.setDiscountType("percent"))}),l(34,"%"),o(),n(35,"button",161),u("click",function(){p(e);let c=s(3);return g(c.setDiscountType("flat"))}),l(36,"\u20B9"),o()()(),n(37,"th",162)(38,"span",147),b(),n(39,"svg",148),C(40,"path",163)(41,"path",164)(42,"path",165)(43,"path",166),o(),l(44," Reuse "),o()(),w(),n(45,"th",167)(46,"span",147),b(),n(47,"svg",148),C(48,"path",168)(49,"path",169)(50,"path",170),o(),l(51," QTY "),o()(),w(),C(52,"th",171),o()(),n(53,"tbody"),m(54,Et,35,27,"tr",172),o(),n(55,"tfoot")(56,"tr")(57,"td",146)(58,"b"),l(59,"Grand total"),o()(),m(60,Vt,2,3,"td",153),n(61,"td",154)(62,"span",173),l(63),o(),n(64,"small"),l(65),o(),n(66,"small",174),l(67),o()(),C(68,"td",175),o()()()(),n(69,"div",176)(70,"button",177),u("click",function(){p(e);let c=s(3);return g(c.addBracket())}),b(),n(71,"svg",62),C(72,"path",63),o(),l(73," Add price range "),o(),m(74,Rt,2,1,"span",178)(75,zt,2,1,"span",179),o(),w(),n(76,"section",180)(77,"header")(78,"h3"),l(79,"Reminder schedule"),o(),n(80,"p",60),l(81," Every reminder reuses the same coupon code and skips anyone who has already redeemed or whose code has expired. Day 0 is the send itself, so it cannot be switched off. "),o()(),n(82,"div",181)(83,"div",182),m(84,Lt,5,8,"label",183),o(),n(85,"button",184),u("click",function(){p(e);let c=s(3);return g(c.addReminder())}),b(),n(86,"svg",62),C(87,"path",63),o(),l(88," Add a reminder "),o()()(),w(),n(89,"footer",185)(90,"span",186)(91,"b"),l(92),o(),l(93),m(94,Dt,2,0,"em",15)(95,$t,2,0,"em",15)(96,qt,2,0,"em",15),o(),n(97,"span",187)(98,"button",177),u("click",function(){p(e);let c=s(3);return g(c.closeCompose())}),l(99,"Cancel"),o(),n(100,"button",188),u("click",function(){p(e);let c=s(3);return g(c.saveOffer())}),m(101,Nt,2,0,"svg",189),l(102),o()()(),y()}if(i&2){let e=s(3);r(15),d("ngForOf",e.activeModules())("ngForTrackBy",e.trackByModule),r(8),O("need",e.saveTried&&!e.hasDiscountValue()),r(10),O("on",e.discountType==="percent"),r(2),O("on",e.discountType==="flat"),r(19),d("ngForOf",e.brackets)("ngForTrackBy",e.trackByRef),r(6),d("ngForOf",e.activeModules())("ngForTrackBy",e.trackByModule),r(3),f(e.lakh(e.matrix.grand_total.total)),r(2),k("",e.matrix.grand_total.products," product",e.matrix.grand_total.products===1?"":"s"),r(2),k("",e.matrix.grand_total.customers," customer",e.matrix.grand_total.customers===1?"":"s"),r(7),d("ngIf",e.matrix.unplaced),r(),d("ngForOf",e.activeModules())("ngForTrackBy",e.trackByModule),r(9),d("ngForOf",e.reminders),r(5),O("armed",e.canSaveOffer()&&e.readyOffers()),r(3),f(e.readyOffers()),r(),v(" offer",e.readyOffers()===1?"":"s"," ready "),r(),d("ngIf",e.canSaveOffer()),r(),d("ngIf",!e.hasOfferName()),r(),d("ngIf",!e.hasDiscountValue()),r(4),d("disabled",e.saving),r(),d("ngIf",!e.saving),r(),v(" ",e.saving?"Saving\u2026":"Save offer list"," ")}}function Wt(i,t){if(i&1){let e=x();P(0),n(1,"div",88)(2,"label",89)(3,"span"),b(),n(4,"svg",90),C(5,"path",91)(6,"circle",92),o(),l(7," Offer name "),w(),n(8,"i",93),l(9,"*"),o()(),n(10,"input",94,2),u("input",function(c){p(e);let _=s(2);return g(_.setCampaignName(c.target.value))})("blur",function(){p(e);let c=s(2);return g(c.onOfferNameBlur())}),o(),m(12,Je,2,0,"small",95),o(),n(13,"label",96)(14,"span"),b(),n(15,"svg",90),C(16,"path",97)(17,"path",98)(18,"path",99),o(),l(19," Product scope "),o(),w(),n(20,"select",100),u("ngModelChange",function(c){p(e);let _=s(2);return g(_.setProductMode(c))}),m(21,Xe,2,2,"option",101),o()(),m(22,at,13,6,"div",102),n(23,"div",103)(24,"label",96)(25,"span"),l(26,"Window start"),o(),n(27,"input",104),T("ngModelChange",function(c){p(e);let _=s(2);
1return E(_.filters.from,c)||(_.filters.from=c),g(c)}),u("change",function(){p(e);let c=s(2);return g(c.loadMatrix())}),o()(),n(28,"label",96)(29,"span"),l(30,"Window end"),o(),n(31,"input",104),T("ngModelChange",function(c){p(e);let _=s(2);return E(_.filters.to,c)||(_.filters.to=c),g(c)}),u("change",function(){p(e);let c=s(2);return g(c.loadMatrix())}),o()(),n(32,"label",105)(33,"span"),l(34,"Min views"),o(),n(35,"input",106),T("ngModelChange",function(c){p(e);let _=s(2);return E(_.filters.min_views,c)||(_.filters.min_views=c),g(c)}),u("change",function(){p(e);let c=s(2);return g(c.loadMatrix())}),o()(),n(36,"label",105)(37,"span"),l(38,"Min secs"),o(),n(39,"input",107),T("ngModelChange",function(c){p(e);let _=s(2);return E(_.filters.min_seconds,c)||(_.filters.min_seconds=c),g(c)}),u("change",function(){p(e);let c=s(2);return g(c.loadMatrix())}),o()(),m(40,lt,17,6,"div",108),o()(),m(41,_t,3,2,"p",109)(42,mt,5,0,"div",110)(43,pt,2,0,"div",13)(44,gt,11,0,"div",64)(45,Ht,103,31,"ng-container",15),y()}if(i&2){let e=s(2);r(2),O("bad",e.nameInvalid()),r(8),d("value",e.campaignName),r(2),d("ngIf",e.nameInvalid()),r(8),d("ngModel",e.productMode),r(),d("ngForOf",e.productModes),r(),d("ngIf",e.productMode!=="all"&&!e.scopeOpen),r(5),S("ngModel",e.filters.from),r(4),S("ngModel",e.filters.to),r(),d("title",e.derivationNote),r(3),S("ngModel",e.filters.min_views),r(),d("title",e.derivationNote),r(3),S("ngModel",e.filters.min_seconds),r(),d("ngIf",!e.matrixLoading&&e.matrix),r(),d("ngIf",e.productMode!=="all"),r(),d("ngIf",e.mode==="auto"),r(),d("ngIf",e.matrixLoading),r(),d("ngIf",!e.matrixLoading&&!e.selectedModules.length),r(),d("ngIf",!e.matrixLoading&&e.matrix&&e.selectedModules.length)}}function At(i,t){if(i&1&&(n(0,"option",112),l(1),o()),i&2){let e=t.$implicit;d("ngValue",e.id),r(),v(" ",e.name," ")}}function jt(i,t){if(i&1&&(n(0,"div",252)(1,"span",132),l(2,"Dropped"),o(),n(3,"span",133),l(4),o(),n(5,"span",248),l(6,"applied, did not buy"),o()()),i&2){let e=s(2).ngIf;r(4),f(e.dropped)}}function Gt(i,t){if(i&1&&(n(0,"div",246)(1,"div",247)(2,"span",132),l(3,"Sent"),o(),n(4,"span",133),l(5),o(),n(6,"span",248),l(7,"coupons issued"),o()(),n(8,"div",249)(9,"span",132),l(10,"Applied"),o(),n(11,"span",133),l(12),o(),n(13,"span",248),l(14,"codes used at checkout"),o()(),n(15,"div",250)(16,"span",132),l(17,"Converted"),o(),n(18,"span",133),l(19),o(),n(20,"span",248),l(21),o()(),m(22,jt,7,1,"div",251),o()),i&2){let e=s().ngIf;r(5),f(e.sent),r(7),f(e.applied),r(7),f(e.converted),r(2),f(e.applied?e.conversion+"% of applied":"waiting on applies"),r(),d("ngIf",e.dropped)}}function Qt(i,t){if(i&1&&(P(0),m(1,Gt,23,5,"div",245),y()),i&2){let e=t.ngIf;r(),d("ngIf",e.sent)}}function Kt(i,t){i&1&&(n(0,"div",32),C(1,"div",33),o())}function Ut(i,t){if(i&1&&(n(0,"div",272)(1,"span",273),l(2),o(),n(3,"span",274),C(4,"i"),o(),n(5,"span",275),l(6),n(7,"small"),l(8),z(9,"number"),o()()()),i&2){let e=t.$implicit;D("data-k",e.key),r(2),f(e.label),r(2),F("width",e.pct,"%"),r(2),v("",e.value," "),r(2),v("",B(9,6,e.pct,"1.0-0"),"%")}}function Yt(i,t){if(i&1&&(n(0,"section",256)(1,"header",257)(2,"h3"),l(3,"Funnel"),o(),n(4,"p"),l(5,"Every coupon issued, then applied, then bought \u2014 or dropped."),o()(),n(6,"div",270),m(7,Ut,10,9,"div",271),o()()),i&2){let e=s(5);r(7),d("ngForOf",e.funnelSteps())}}function Jt(i,t){if(i&1&&(n(0,"span"),C(1,"i",276),l(2),o()),i&2){let e=t.$implicit,a=t.index,c=s(5);r(),F("background",c.moduleTint(a)),r(),v("",e.label," ")}}function Xt(i,t){if(i&1&&(n(0,"span",283),l(1),o()),i&2){let e=s().$implicit,a=s().$implicit,c=s(5);r(),v(" ",c.convCell(a,e.key).conversion,"%")}}function Zt(i,t){if(i&1){let e=x();n(0,"button",281),u("click",function(){let c=p(e).$implicit,_=s().$implicit,h=s(5);return g(h.openConversionDrill(_.ref,c.key))}),m(1,Xt,2,1,"span",282),o()}if(i&2){let e=t.$implicit,a=t.index,c=s().$implicit,_=s(5);F("height",_.convBarHeight(_.convCell(c,e.key)),"%")("background",_.moduleTint(a)),d("ngClass",_.convTone(_.convCell(c,e.key)))("disabled",!_.convCell(c,e.key).sent)("title",e.label+" \xB7 "+c.label+" \xB7 "+(_.convCell(c,e.key).applied?_.convCell(c,e.key).conversion+"%":"no applies")),r(),d("ngIf",_.convCell(c,e.key).applied)}}function en(i,t){if(i&1&&(n(0,"div",277)(1,"div",278),m(2,Zt,2,8,"button",279),o(),n(3,"span",280),l(4),o()()),i&2){let e=t.$implicit,a=s(5);r(2),d("ngForOf",a.conversion.modules)("ngForTrackBy",a.trackByModule),r(2),f(e.label)}}function tn(i,t){if(i&1&&(n(0,"div",284)(1,"div",285)(2,"b"),l(3),o(),n(4,"span",286),l(5),o()(),n(6,"div",287)(7,"div",288),C(8,"i",289),o(),n(9,"div",288),C(10,"i",225),o(),n(11,"div",288),C(12,"i",290),o()(),n(13,"div",291)(14,"span"),l(15),o(),n(16,"span"),l(1
17),o(),n(18,"span"),l(19),o()()()),i&2){let e=t.$implicit,a=s(5);r(3),f(e.label),r(),O("good",e.conversion>=a.healthy)("bad",e.applied&&e.conversion<a.healthy),r(),v(" ",e.applied?e.conversion+"%":"\u2014"," "),r(3),F("width",a.pctOf(e.sent,a.convMaxSent()),"%"),r(2),F("width",a.pctOf(e.applied,a.convMaxSent()),"%"),r(2),F("width",a.pctOf(e.converted,a.convMaxSent()),"%"),r(3),f(e.sent),r(2),f(e.applied),r(2),f(e.converted)}}function nn(i,t){if(i&1&&(n(0,"div",254),m(1,Yt,8,1,"section",255),n(2,"section",256)(3,"header",257)(4,"h3"),l(5,"Conversion by price range"),o(),n(6,"p"),l(7,"Applied \u2192 converted, per module. Click a bar to open the drop-offs."),o()(),n(8,"div",258),m(9,Jt,3,3,"span",259),o(),n(10,"div",260)(11,"div",261)(12,"span"),l(13,"100%"),o(),n(14,"span"),l(15,"50%"),o(),n(16,"span"),l(17,"0"),o()(),n(18,"div",262)(19,"div",263),C(20,"i")(21,"i"),o(),n(22,"div",264),m(23,en,5,3,"div",265),o()()()(),n(24,"section",256)(25,"header",257)(26,"h3"),l(27,"Volume by module"),o(),n(28,"p"),l(29,"How many coupons each module actually issued, applied and converted."),o()(),n(30,"div",258)(31,"span"),C(32,"i",266),l(33," Sent"),o(),n(34,"span"),C(35,"i",267),l(36," Applied"),o(),n(37,"span"),C(38,"i",268),l(39," Converted"),o()(),m(40,tn,20,15,"div",269),o()()),i&2){let e=s(4);r(),d("ngIf",e.funnelSteps().length),r(8),d("ngForOf",e.conversion.modules)("ngForTrackBy",e.trackByModule),r(14),d("ngForOf",e.conversion.brackets)("ngForTrackBy",e.trackByRef),r(17),d("ngForOf",e.moduleRollup())}}function on(i,t){i&1&&G(0)}function rn(i,t){if(i&1&&(n(0,"th")(1,"span",147),m(2,on,1,0,"ng-container",190),l(3),o()()),i&2){let e=t.$implicit;s(5);let a=R(2);r(2),d("ngTemplateOutlet",a)("ngTemplateOutletContext",Q(3,Me,e.key)),r(),v(" ",e.label," ")}}function an(i,t){if(i&1){let e=x();n(0,"td")(1,"button",293),u("click",function(){let c=p(e).$implicit,_=s().$implicit,h=s(5);return g(h.openConversionDrill(_.ref,c.key))}),n(2,"span",294)(3,"span",295),l(4),o(),n(5,"span",296),l(6),o()(),n(7,"span",297),l(8),o()()()}if(i&2){let e=t.$implicit,a=s().$implicit,c=s(5);r(),d("ngClass",c.convTone(a.cells[e.key]))("disabled",!a.cells[e.key].sent),r(3),v("",a.cells[e.key].converted," converted"),r(),O("good",a.cells[e.key].conversion>=c.healthy)("bad",a.cells[e.key].applied&&a.cells[e.key].conversion<c.healthy),r(),v(" ",a.cells[e.key].applied?a.cells[e.key].conversion+"%":"\u2014"," "),r(2),$(" ",a.cells[e.key].sent," sent \xB7 ",a.cells[e.key].applied," applied \xB7 ",a.cells[e.key].dropped," dropped ")}}function cn(i,t){if(i&1&&(n(0,"tr")(1,"td",146)(2,"b"),l(3),o()(),m(4,an,9,11,"td",259),o()),i&2){let e=t.$implicit,a=s(5);r(3),f(e.label),r(),d("ngForOf",a.conversion.modules)("ngForTrackBy",a.trackByModule)}}function ln(i,t){if(i&1&&(n(0,"div",70)(1,"table",292)(2,"thead")(3,"tr")(4,"th",146),l(5,"Price range"),o(),m(6,rn,4,5,"th",259),o()(),n(7,"tbody"),m(8,cn,5,3,"tr",259),o()()()),i&2){let e=s(4);r(6),d("ngForOf",e.conversion.modules)("ngForTrackBy",e.trackByModule),r(2),d("ngForOf",e.conversion.brackets)("ngForTrackBy",e.trackByRef)}}function sn(i,t){if(i&1&&(P(0),m(1,nn,41,6,"div",253)(2,ln,9,4,"div",65),y()),i&2){let e=s(3);r(),d("ngIf",e.reportView==="chart"),r(),d("ngIf",e.reportView==="table")}}function dn(i,t){if(i&1&&(n(0,"div",66)(1,"span",35),b(),n(2,"svg",36),C(3,"path",52)(4,"path",53)(5,"path",54),o()(),w(),n(6,"h3"),l(7),o(),n(8,"p"),l(9),o()()),i&2){let e=s(3);r(7),f(e.sentRules().length?"Pick an offer list":"No sent offer lists"),r(2),f(e.sentRules().length?"Conversion is per sent rule. Choose a list that has already been mailed.":"Send a notification from Offer List first. Drafts have no conversions to report.")}}function _n(i,t){i&1&&(n(0,"div",66)(1,"span",35),b(),n(2,"svg",36),C(3,"path",52)(4,"path",53)(5,"path",54),o()(),w(),n(6,"h3"),l(7,"No conversions yet"),o(),n(8,"p"),l(9,"This offer list has not converted yet. Results land here as codes are used at checkout."),o()())}function mn(i,t){if(i&1){let e=x();P(0),n(1,"div",241)(2,"label",96)(3,"span"),l(4,"Offer list"),o(),n(5,"select",242),T("ngModelChange",function(c){p(e);let _=s(2);return E(_.conversionCampaignId,c)||(_.conversionCampaignId=c),g(c)}),u("change",function(){p(e);let c=s(2);return g(c.loadConversion())}),n(6,"option",112),l(7,"Select an offer list"),o(),m(8,At,2,2,"option",101),o()(),n(9,"p",60),l(10," Outcomes for this offer list only, using the price ranges it was saved with. Open a bar for customers who applied a code and did not buy. "),o(),n(11,"div",243)(12,"button",244),u("click",function(){p(e);let c=s(2);return g(c.reportView="chart")}),l(13,"Charts"),o(),n(14,"button",244),u("click",function(){p(e);let c=s(2);return g(c.reportView="table")}),l(15,"Table"),o()()(),m(16,Qt,2,1,"ng-container",15)(17,Kt,2,0,"div",13)(18,sn,3,2,"ng-container",15)(19,dn,10,2,"div",64)(20,_n,10,0,"div",64),y()}if(i&2){let e=s(2);r(5),S("ngModel",e.conversionCampaignId),r(),d("ngValue",null),r(2),d("ngForOf",e.sentRules()),r(4),O("on",e.reportView==="chart"),r(2),O("on",e.reportView==="table"),r(2),d("ngIf",!e.conversionLoading&&e.conversionSummary()),r(),d("ngIf",e.conversionLoading),r(),d("ngIf",!e.conversionLoading&&e.conversion&&e.conversion.brackets.length),r(),d("ngIf",!e.conversionLoading&&!e.conversionCampaignId),r(),d("ngIf",!e.conversionLoading&&e.conversionCampaignId&&e.conversion&&!e.conversion.brackets.length)}}function pn(i,t){if(i&1&&(n(0,"div",299)(1,"div",300),l(2,"AI brief \xB7 generated from this campaign's data"),o(),n(3,"h2"),l(4),o(),n(5,"p"),l(6),o()()),i&2){let e=s(3);r(4),f(e.brief.headline),r(2),f(e.brief.body)}}function gn(i,t){if(i&1&&(n(0,"div",304),b(),n(1,"svg",305),C(2,"circle",306)(3,"circle",307)(4,"circle",308),n(5,"text",309),l(6),o(),n(7,"text",310),l(8,"converted"),o()(),w(),n(9,"div",311)(10,"div",312),C(11,"span",313),l(12," Converted "),n(13,"strong"),l(14),o()(),n(15,"div",312),C(16,"span",314),l(17," Dropped "),n(18,"strong"),l(19),o()(),n(20,"div",315),l(21),o()()()),i&2){let e=s().ngIf,a=s(4);r(),D("aria-label","Converted "+e.converted+" of "+e.applied+" applied"),r(),D("r",a.donutR),r(),D("r",a.donutR)("stroke-dasharray",a.donutDroppedDash())("stroke-dashoffset",a.donutDroppedOffset()),r(),D("r",a.donutR)("stroke-dasharray",a.donutConvertedDash()),r(2),v("",e.conversion,"%"),r(8),f(e.converted),r(5),f(e.applied-e.converted),r(2),k("of ",e.applied," applied \xB7 ",e.sent," sent")}}function fn(i,t){i&1&&(n(0,"p",316),l(1,"Nothing applied yet \u2014 the donut fills once codes are used."),o())}function un(i,t){if(i&1&&(n(0,"section",256)(1,"header",257)(2,"h3"),l(3,"Applied \u2192 converted"),o(),n(4,"p"),l(5,"Of everyone who used a code, how many bought."),o()(),m(6,gn,22,12,"div",303)(7,fn,2,0,"ng-template",null,7,L),o()),i&2){let e=t.ngIf,a=R(8);r(6),d("ngIf",e.applied)("ngIfElse",a)}}function Cn(i,t){if(i&1&&(n(0,"em"),l(1),o()),i&2){let e=s(2).$implicit;r(),f(e.top_reason_label)}}function xn(i,t){if(i&1&&(n(0,"p",318),m(1,Cn,2,1,"em",15),l(2),o()),i&2){let e=s().$implicit;r(),d("ngIf",e.top_reason_label),r(),v(" ",e.action," ")}}function hn(i,t){if(i&1&&(n(0,"div",284)(1,"div",285)(2,"b"),l(3),o(),n(4,"span",286),l(5),o()(),n(6,"div",287)(7,"div",288),C(8,"i",289),o(),n(9,"div",288),C(10,"i",225),o(),n(11,"div",288),C(12,"i",290),o()(),n(13,"div",291)(14,"span"),l(15),o(),n(16,"span"),l(1
17),o(),n(18,"span"),l(19),o()(),m(20,xn,3,2,"p",317),o()),i&2){let e=t.$implicit,a=s(4);r(3),f(e.label),r(),O("good",e.conversion>=a.healthy)("bad",e.applied&&e.conversion<a.healthy),r(),v(" ",e.applied?e.conversion+"%":"\u2014"," "),r(3),F("width",a.pctOf(e.sent,a.reportMaxSent()),"%"),r(2),F("width",a.pctOf(e.applied,a.reportMaxSent()),"%"),r(2),F("width",a.pctOf(e.converted,a.reportMaxSent()),"%"),r(3),f(e.sent),r(2),f(e.applied),r(2),f(e.converted),r(),d("ngIf",e.top_reason_label||e.action)}}function vn(i,t){if(i&1&&(n(0,"div",254)(1,"div",301),m(2,un,9,2,"section",255),n(3,"section",302)(4,"header",257)(5,"h3"),l(6,"Volume by module"),o(),n(7,"p"),l(8,"Sent, applied and converted \u2014 the same numbers as the table."),o()(),n(9,"div",258)(10,"span"),C(11,"i",266),l(12," Sent"),o(),n(13,"span"),C(14,"i",267),l(15," Applied"),o(),n(16,"span"),C(17,"i",268),l(18," Converted"),o()(),m(19,hn,21,16,"div",269),o()()()),i&2){let e=s(3);r(2),d("ngIf",e.brief),r(17),d("ngForOf",e.reportRows)}}function On(i,t){if(i&1&&(n(0,"span",324),C(1,"i"),o()),i&2){let e=s().$implicit,a=s(4);O("good",e.conversion>=a.healthy)("bad",e.conversion<a.healthy),r(),F("width",e.conversion,"%")}}function bn(i,t){if(i&1&&(n(0,"tr")(1,"td")(2,"b"),l(3),o()(),n(4,"td"),l(5),o(),n(6,"td"),l(7),o(),n(8,"td"),l(9),o(),n(10,"td")(11,"div",321)(12,"span",286),l(13),o(),m(14,On,2,6,"span",322),o()(),n(15,"td"),l(16),o(),n(17,"td",323),l(18),o()()),i&2){let e=t.$implicit,a=s(4);r(3),f(e.label),r(2),f(e.sent),r(2),f(e.applied),r(2),f(e.converted),r(3),O("good",e.conversion>=a.healthy)("bad",e.applied&&e.conversion<a.healthy),r(),v(" ",e.applied?e.conversion+"%":"\u2014"," "),r(),d("ngIf",e.applied),r(2),f(e.top_reason_label),r(2),f(e.action)}}function Mn(i,t){if(i&1&&(n(0,"div",70)(1,"table",319)(2,"thead")(3,"tr")(4,"th"),l(5,"Module"),o(),n(6,"th"),l(7,"Sent"),o(),n(8,"th"),l(9,"Applied"),o(),n(10,"th"),l(11,"Converted"),o(),n(12,"th"),l(13,"Applied \u2192 converted"),o(),n(14,"th"),l(15,"Top feedback reason"),o(),n(16,"th"),l(17,"Suggested action"),o()()(),n(18,"tbody"),m(19,bn,19,12,"tr",320),o()()()),i&2){let e=s(3);r(19),d("ngForOf",e.reportRows)}}function Pn(i,t){if(i&1){let e=x();P(0),n(1,"div",241)(2,"p",60),l(3),o(),n(4,"div",243)(5,"button",244),u("click",function(){p(e);let c=s(2);return g(c.reportView="chart")}),l(6,"Charts"),o(),n(7,"button",244),u("click",function(){p(e);let c=s(2);return g(c.reportView="table")}),l(8,"Table"),o()()(),m(9,pn,7,2,"div",298)(10,vn,20,2,"div",253)(11,Mn,20,1,"div",65),y()}if(i&2){let e=s(2);r(3),v(" Comparing the Offer Matrix (what was given) against the Conversion Report (what happened) and the captured feedback (why). Anything at or above ",e.healthy,"% applied \u2192 converted is holding; the rest has a named blocker rather than a guess. "),r(2),O("on",e.reportView==="chart"),r(2),O("on",e.reportView==="table"),r(2),d("ngIf",e.brief),r(),d("ngIf",e.reportView==="chart"&&e.reportRows.length),r(),d("ngIf",e.reportView==="table")}}function yn(i,t){i&1&&(n(0,"div",32),C(1,"div",33),o())}function wn(i,t){i&1&&(n(0,"div",66)(1,"span",35),b(),n(2,"svg",36),C(3,"path",325),o()(),w(),n(4,"h3"),l(5,"Nothing waiting"),o(),n(6,"p"),l(7,"Extension and product-swap requests from customers will land here."),o()())}function kn(i,t){if(i&1&&(n(0,"small"),l(1),o()),i&2){let e=s().$implicit;r(),v("\u201C",e.message,"\u201D")}}function Sn(i,t){if(i&1){let e=x();P(0),n(1,"button",326),u("click",function(){p(e);let c=s().$implicit,_=s(4);return g(_.decide(c,"approve"))}),l(2,"Approve"),o(),n(3,"button",327),u("click",function(){p(e);let c=s().$implicit,_=s(4);return g(_.decide(c,"deny"))}),l(4,"Deny"),o(),y()}}function En(i,t){i&1&&(n(0,"span",328),l(1,"\u2014"),o())}function Tn(i,t){if(i&1&&(n(0,"tr")(1,"td")(2,"b"),l(3),o(),n(4,"small"),l(5),o()(),n(6,"td"),l(7),o(),n(8,"td"),l(9),o(),n(10,"td"),l(11),m(12,kn,2,1,"small",15),o(),n(13,"td")(14,"code"),l(15),o()(),n(16,"td")(17,"span",75),l(18),o()(),n(19,"td",77),m(20,Sn,5,0,"ng-container",122)(21,En,2,0,"ng-template",null,8,L),o()()),i&2){let e=t.$implicit,a=R(22);O("row-pending",e.status==="pending"),r(3),f(e.name||e.email),r(2),f(e.email),r(2),f(e.kind_label),r(2),f(e.module),r(2),f(e.detail),r(),d("ngIf",e.message),r(3),f(e.coupon),r(2),d("ngClass",e.status),r(),f(e.status),r(2),d("ngIf",e.status==="pending")("ngIfElse",a)}}function In(i,t){if(i&1&&(n(0,"div",70)(1,"table",319)(2,"thead")(3,"tr")(4,"th"),l(5,"Customer"),o(),n(6,"th"),l(7,"Request"),o(),n(8,"th"),l(9,"Module"),o(),n(10,"th"),l(11,"Detail"),o(),n(12,"th"),l(13,"Coupon"),o(),n(14,"th"),l(15,"Status"),o(),n(16,"th"),l(1
17,"Action"),o()()(),n(18,"tbody"),m(19,Tn,23,13,"tr",73),o()()()),i&2){let e=s(3);r(19),d("ngForOf",e.requests)}}function Vn(i,t){if(i&1&&(P(0),n(1,"p",60),l(2," Customers asking for more time on a coupon, or for the same discount on a different watch. Approving is what edits the coupon \u2014 in this table and in the coupon table checkout validates against. "),o(),m(3,yn,2,0,"div",13)(4,wn,8,0,"div",64)(5,In,20,1,"div",65),y()),i&2){let e=s(2);r(3),d("ngIf",e.requestsLoading),r(),d("ngIf",!e.requestsLoading&&!e.requests.length),r(),d("ngIf",!e.requestsLoading&&e.requests.length)}}function Rn(i,t){if(i&1&&(P(0),n(1,"div",39)(2,"div",40)(3,"div",41)(4,"h1"),l(5,"AI Offer Engine"),o(),n(6,"p",42),l(7,"Build, send and measure targeted coupons from live browsing behaviour."),o()()()(),n(8,"div",43)(9,"nav",44),m(10,De,4,5,"a",45),o(),m(11,$e,5,0,"button",46),o(),m(12,Ye,11,3,"ng-container",15)(13,Wt,46,19,"ng-container",15)(14,mn,21,12,"ng-container",15)(15,Pn,12,8,"ng-container",15)(16,Vn,6,3,"ng-container",15),y()),i&2){let e=s();r(10),d("ngForOf",e.tabs),r(),d("ngIf",e.tab==="list"&&e.screen==="compose"),r(),d("ngIf",e.tab==="list"&&e.screen==="browse"),r(),d("ngIf",e.tab==="list"&&e.screen==="compose"),r(),d("ngIf",e.tab==="conversion"),r(),d("ngIf",e.tab==="report"),r(),d("ngIf",e.tab==="requests")}}function Fn(i,t){i&1&&(n(0,"div",32),C(1,"div",33),o())}function zn(i,t){i&1&&(n(0,"div",338),l(1,"Nobody in this cell."),o())}function Bn(i,t){if(i&1&&(n(0,"em"),l(1),o()),i&2){let e=s().$implicit;r(),v("\xB7 ",e.excluded," auto-excluded")}}function Ln(i,t){i&1&&(n(0,"th",72),l(1,"Views / time"),o())}function Dn(i,t){i&1&&(n(0,"span",357),l(1,"edited"),o())}function $n(i,t){if(i&1&&(n(0,"small",358),l(1),o()),i&2){let e=s().$implicit;r(),f(e.code)}}function qn(i,t){if(i&1&&(n(0,"td",72),l(1),o()),i&2){let e=s().$implicit,a=s(4);r(),k(" ",e.views," \xB7 ",a.minutes(e.seconds)," ")}}function Nn(i,t){if(i&1){let e=x();n(0,"input",360),u("input",function(c){p(e);let _=s(2).$implicit,h=s(4);return g(h.updateRow(_,{qty_cap:+c.target.value}))}),o()}if(i&2){let e=s(2).$implicit,a=s(4);d("value",a.rowOffer(e).qty_cap)("disabled",!a.rowOffer(e).included)}}function Hn(i,t){if(i&1){let e=x();P(0),n(1,"select",353),u("change",function(c){p(e);let _=s().$implicit,h=s(4);return g(h.updateRow(_,{qty_mode:c.target.value}))}),n(2,"option",226),l(3,"Fixed"),o(),n(4,"option",227),l(5,"Scales"),o()(),m(6,Nn,1,2,"input",359),y()}if(i&2){let e=s().$implicit,a=s(4);r(),d("value",a.rowOffer(e).qty_mode)("disabled",!a.rowOffer(e).included),r(5),d("ngIf",a.rowOffer(e).qty_mode==="scale")}}function Wn(i,t){i&1&&(n(0,"span",328),l(1,"n/a"),o())}function An(i,t){if(i&1){let e=x();n(0,"button",361),u("click",function(){p(e);let c=s().$implicit,_=s(4);return g(_.clearRow(c))}),l(1,"Reset"),o()}}function jn(i,t){if(i&1){let e=x();n(0,"tr")(1,"td",346)(2,"input",349),u("change",function(c){let _=p(e).$implicit,h=s(4);return g(h.updateRow(_,{included:c.target.checked}))}),o()(),n(3,"td"),l(4),m(5,Dn,2,0,"span",350)(6,$n,2,1,"small",351),o(),n(7,"td",72),l(8),o(),m(9,qn,2,2,"td",347),n(10,"td",72)(11,"input",352),u("input",function(c){let _=p(e).$implicit,h=s(4);return g(h.updateRow(_,{discount_value:c.target.value}))}),o()(),n(12,"td")(13,"select",353),u("change",function(c){let _=p(e).$implicit,h=s(4);return g(h.updateRow(_,{discount_type:c.target.value}))}),n(14,"option",354),l(15,"%"),o(),n(16,"option",355),l(17,"\u20B9"),o()()(),n(18,"td")(19,"select",353),u("change",function(c){let _=p(e).$implicit,h=s(4);return g(h.updateRow(_,{reuse:c.target.value}))}),n(20,"option",204),l(21,"One-time"),o(),n(22,"option",205),l(23,"Multi-use"),o()()(),n(24,"td"),m(25,Hn,7,3,"ng-container",122)(26,Wn,2,0,"ng-template",null,9,
1L),o(),n(28,"td"),m(29,An,2,0,"button",356),o()()}if(i&2){let e=t.$implicit,a=R(27),c=s(4);O("off",!c.rowOffer(e).included),r(2),d("checked",c.rowOffer(e).included),r(2),v(" ",e.product," "),r(),d("ngIf",c.isCustomized(e)),r(),d("ngIf",e.code!==e.product),r(2),f(c.inr(e.value)),r(),d("ngIf",(c.openCell==null?null:c.openCell.module)==="view"),r(2),d("value",c.rowOffer(e).discount_value??"")("disabled",!c.rowOffer(e).included),r(2),d("value",c.rowOffer(e).discount_type)("disabled",!c.rowOffer(e).included),r(6),d("value",c.rowOffer(e).reuse)("disabled",!c.rowOffer(e).included),r(6),d("ngIf",c.rowOffer(e).discount_type==="flat")("ngIfElse",a),r(4),d("ngIf",c.isCustomized(e))}}function Gn(i,t){if(i&1){let e=x();n(0,"div",339)(1,"div",340)(2,"label",341)(3,"input",342),u("change",function(c){let _=p(e).$implicit,h=s(3);return g(h.toggleGroup(_,c.target.checked))}),o()(),n(4,"span",343)(5,"b"),l(6),o(),n(7,"small"),l(8),o()(),n(9,"span",344),l(10),m(11,Bn,2,1,"em",15),o()(),n(12,"table",345)(13,"thead")(14,"tr"),C(15,"th",346),n(16,"th"),l(17,"Product"),o(),n(18,"th",72),l(19,"Value"),o(),m(20,Ln,2,0,"th",347),n(21,"th",72),l(22,"Discount"),o(),n(23,"th"),l(24,"Type"),o(),n(25,"th"),l(26,"Reuse"),o(),n(27,"th"),l(28,"Qty pricing"),o(),C(29,"th"),o()(),n(30,"tbody"),m(31,jn,30,17,"tr",348),o()()()}if(i&2){let e=t.$implicit,a=s(3);r(3),d("checked",a.groupIncluded(e)),r(3),f(e.name||e.email),r(2),f(e.email),r(2),$(" ",a.offerable(e).length," product",a.offerable(e).length===1?"":"s"," \xB7 ",a.inr(e.total)," "),r(),d("ngIf",e.excluded),r(9),d("ngIf",(a.openCell==null?null:a.openCell.module)==="view"),r(11),d("ngForOf",a.offerable(e))("ngForTrackBy",a.trackByKey)}}function Qn(i,t){if(i&1&&(n(0,"small",358),l(1),o()),i&2){let e=s().$implicit;r(),f(e.code)}}function Kn(i,t){if(i&1&&(n(0,"tr")(1,"td")(2,"b"),l(3),o(),n(4,"small"),l(5),o()(),n(6,"td"),l(7),m(8,Qn,2,1,"small",351),o(),n(9,"td",365),l(10),o(),n(11,"td",72),l(12),o()()),i&2){let e=t.$implicit,a=s(5);r(3),f(e.name),r(2),f(e.email),r(2),v("",e.product," "),r(),d("ngIf",e.code!==e.product),r(2),f(e.excluded_label),r(2),f(a.inr(e.value))}}function Un(i,t){if(i&1&&(n(0,"table",364)(1,"tbody"),m(2,Kn,13,6,"tr",259),o()()),i&2){let e=s(4);r(2),d("ngForOf",e.excludedRows())("ngForTrackBy",e.trackByKey)}}function Yn(i,t){if(i&1){let e=x();P(0),n(1,"button",362),u("click",function(){p(e);let c=s(3);return g(c.showExcluded=!c.showExcluded)}),l(2),o(),m(3,Un,3,2,"table",363),y()}if(i&2){let e=s(3);r(2),$(" ",e.showExcluded?"Hide":"Show"," ",e.excludedRows().length," auto-excluded product",e.excludedRows().length===1?"":"s"," "),r(),d("ngIf",e.showExcluded)}}function Jn(i,t){if(i&1&&(n(0,"div",335),m(1,zn,2,0,"div",336)(2,Gn,32,10,"div",337)(3,Yn,4,4,"ng-container",15),o()),i&2){let e=t.ngIf,a=s(2);r(),d("ngIf",!e.groups.length),r(),d("ngForOf",a.drillGroups())("ngForTrackBy",a.trackByCustomer),r(),d("ngIf",a.excludedRows().length)}}function Xn(i,t){if(i&1){let e=x();n(0,"div",329),u("click",function(){p(e);let c=s();return g(c.closeDrill())}),n(1,"div",330),u("click",function(c){return c.stopPropagation()}),n(2,"header")(3,"div")(4,"div",331),l(5),o(),n(6,"h3"),l(7),n(8,"span",332),l(9),o()()(),n(10,"button",78),u("click",function(){p(e);let c=s();return g(c.closeDrill())}),l(11,"Close"),o()(),m(12,Fn,2,0,"div",13)(13,Jn,4,4,"div",333),n(14,"footer")(15,"span",328),l(16),o(),n(17,"button",334),u("click",function(){p(e);let c=s();return g(c.closeDrill())}),l(18,"Done"),o()()()()}if(i&2){let e=s();r(5),f(e.moduleLabel(e.openCell.module)),r(2),k("",e.includedCount().products," product",e.includedCount().products===1?"":"s"," included "),r(2),k("across ",e.includedCount().customers," customer",e.includedCount().customers===1?"":"s"),r(3),d("ngIf",e.drillLoading),r(),d("ngIf",!e.drillLoading&&e.drill),r(3),k(" Flat capped at ",e.inr(e.maxFlat)," \xB7 percentage capped at ",e.maxPercent," \xB7 QTY pricing applies to flat discounts only ")}}function Zn(i,t){i&1&&C(0,"span",120)}function eo(i,t){if(i&1){let e=x();n(0,"li",124),u("mouseenter",function(){let c=p(e).index,_=s(4);return g(_.highlighted=c)})("click",function(){let c=p(e).$implicit,_=s(4);return g(_.toggleScopeHit(c))}),C(1,"span",125)(2,"span",126)(3,"span",127),o()}if(i&2){let e=t.$implicit,a=t.index,c=s(4);O("active",a===c.highlighted)("on",e.excluded),r(),O("on",e.excluded),r(),d("innerHTML",c.hitLabel(e.code),N),r(),d("innerHTML",c.hitLabel(e.name),N)}}function to(i,t){if(i&1&&(n(0,"ul"),m(1,eo,4,8,"li",123),o()),i&2){let e=s(3);r(),d("ngForOf",e.hits)}}function no(i,t){i&1&&(n(0,"div",129),l(1,"No product matches that."),o())}function oo(i,t){if(i&1&&m(0,no,2,0,"div",128),i&2){let e=s(3);d("ngIf",!e.hitsLoading)}}function io(i,t){if(i&1&&(n(0,"div",121),m(1,to,2,1,"ul",122)(2,oo,1,1,"ng-template",null,11,L),o()),i&2){let e=R(3),a=s(2);r(),d("ngIf",a.hits.length)("ngIfElse",e)}}function ro(i,t){if(i&1&&(n(0,"div",371)(1,"h3"),l(2,"Nothing on the list yet"),o(),n(3,"p"),l(4),o()()),i&2){let e=s(2);r(4),v("Type a code or name above and tick the watches to ",e.productMode==="include"?"include":"exclude",".")}}function ao(i,t){if(i&1){let e=x();n(0,"tr")(1,"td")(2,"code"),l(3),o()(),n(4,"td"),l(5),o(),n(6,"td",77)(7,"button",374),u("click",function(){let c=p(e).$implicit,_=s(3);return g(_.askRemoveScopeProduct(c))}),l(8,"Remove"),o()()()}if(i&2){let e=t.$implicit;r(3),f(e.code),r(2),f(e.name)}
1}function co(i,t){if(i&1&&(n(0,"div",372)(1,"table",373)(2,"thead")(3,"tr")(4,"th"),l(5,"Code"),o(),n(6,"th"),l(7,"Product"),o(),C(8,"th"),o()(),n(9,"tbody"),m(10,ao,9,2,"tr",320),o()()()),i&2){let e=s(2);r(10),d("ngForOf",e.scopeProducts)}}function lo(i,t){if(i&1){let e=x();n(0,"div",329),u("click",function(){p(e);let c=s();return g(c.closeScopePanel())}),n(1,"div",366),u("click",function(c){return c.stopPropagation()}),n(2,"div",331),l(3),o(),n(4,"h3"),l(5),o(),n(6,"p",328),l(7," Search by code or name and tick several at once. Remove any that should not stay on this list. "),o(),n(8,"div",367,10)(10,"span"),l(11,"Product code or name"),o(),n(12,"input",368),T("ngModelChange",function(c){p(e);let _=s();return E(_.excludeCode,c)||(_.excludeCode=c),g(c)}),u("input",function(){p(e);let c=s();return g(c.onExcludeInput())})("keydown",function(c){p(e);let _=s();return g(_.onExcludeKey(c))}),o(),m(13,Zn,1,0,"span",116)(14,io,4,2,"div",117),o(),m(15,ro,5,1,"div",369)(16,co,11,1,"div",370),n(17,"footer")(18,"button",61),u("click",function(){p(e);let c=s();return g(c.closeScopePanel())}),l(19,"Done"),o()()()()}if(i&2){let e=s();r(3),f(e.productMode==="include"?"Included products":"Excluded products"),r(2),k("",e.scopeProducts.length," watch",e.scopeProducts.length===1?"":"es"," on this offer"),r(7),S("ngModel",e.excludeCode),r(),d("ngIf",e.hitsLoading),r(),d("ngIf",e.hitsOpen),r(),d("ngIf",!e.scopeProducts.length),r(),d("ngIf",e.scopeProducts.length)}}function so(i,t){if(i&1&&(n(0,"tr")(1,"td")(2,"code"),l(3),o()(),n(4,"td"),l(5),o()()),i&2){let e=t.$implicit;r(3),f(e.code),r(2),f(e.name)}}function _o(i,t){if(i&1&&(n(0,"div",70)(1,"table",373)(2,"thead")(3,"tr")(4,"th"),l(5,"Code"),o(),n(6,"th"),l(7),o()()(),n(8,"tbody"),m(9,so,6,2,"tr",320),o()()()),i&2){let e=s().ngIf;r(7),f(e.product_mode==="include"?"Included":"Excluded"),r(2),d("ngForOf",e.products)}}function mo(i,t){if(i&1&&(n(0,"tr")(1,"td")(2,"b"),l(3),o()(),n(4,"td"),l(5),o(),n(6,"td"),l(7),o(),n(8,"td"),l(9),o()()),i&2){let e=t.$implicit,a=s(2);r(3),f(e.label),r(2),f(a.offerText(e)),r(2),f(e.reuse==="multi"?"Multi-use":"One-time"),r(2),f(e.discount_type==="percent"?"n/a":e.qty_mode==="scale"?"Scales to "+e.qty_cap:"Fixed per order")}}function po(i,t){if(i&1&&(n(0,"div",381)(1,"span"),l(2),o(),n(3,"span",328),l(4),o()()),i&2){let e=t.$implicit,a=s(3);r(2),f(a.reminderLabel(e)),r(2),v(" ",e.sent_at?e.sent_count+" sent":e.enabled?"scheduled":"off"," ")}}function go(i,t){if(i&1&&(n(0,"div",378)(1,"span"),l(2,"Schedule"),o(),n(3,"div",379),m(4,po,5,2,"div",380),o()()),i&2){let e=s().ngIf;r(4),d("ngForOf",e.reminders)}}function fo(i,t){if(i&1){let e=x();n(0,"button",326),u("click",function(){p(e);let c=s().ngIf,_=s();return _.openRule=null,g(_.startSendFromList(c))}),l(1," Send Notification"),o()}}function uo(i,t){if(i&1){let e=x();n(0,"div",329),u("click",function(){p(e);let c=s();return g(c.openRule=null)}),n(1,"div",375),u("click",function(c){return c.stopPropagation()}),n(2,"div",331),l(3,"Offer rule"),o(),n(4,"h3"),l(5),o(),n(6,"p",328),l(7),z(8,"date"),z(9,"date"),o(),m(10,_o,10,2,"div",65),n(11,"div",70)(12,"table",373)(13,"thead")(14,"tr")(15,"th"),l(16,"Price range"),o(),n(17,"th"),l(18,"Offer"),o(),n(19,"th"),l(20,"Reuse"),o(),n(21,"th"),l(22,"Qty pricing"),o()()(),n(23,"tbody"),m(24,mo,10,4,"tr",320),o()()(),m(25,go,5,1,"div",376),n(26,"footer")(27,"button",362),u("click",function(){p(e);let c=s();return g(c.openRule=null)}),l(28,"Close"),o(),m(29,fo,2,0,"button",377),n(30,"button",334),u("click",function(){let c=p(e).ngIf,_=s();return _.openRule=null,g(_.startDuplicate(c))}),l(31," Duplicate"),o()()()()}if(i&2){let e=t.ngIf,a=s();r(5),f(e.name),r(2),Y(" ",B(8,12,e.from,"dd MMM y")," \u2192 ",B(9,15,e.to,"dd MMM y")," \xB7 ",e.mode==="auto"?"AI-suggested":"Manual"," \xB7 coupons valid ",e.valid_days," days \xB7 Product View threshold ",e.min_views," views and ",e.min_seconds,"s \xB7 ",a.productModeLabel(e.product_mode)," "),r(3),d("ngIf",e.products==null?null:e.products.length),r(14),d("ngForOf",e.brackets),r(),d("ngIf",e.reminders==null?null:e.reminders.length),r(4),d("ngIf",e.status==="draft")}}function Co(i,t){i&1&&(n(0,"p",328),l(1," Recomputed just now \u2014 this is who would be mailed if this draft were sent this instant. "),o())}function xo(i,t){if(i&1&&(n(0,"em"),l(1),o()),i&2){let e=t.$implicit,a=s(3);r(),$(" ",e.module," \xB7 ",e.code||e.product," \xB7 ",a.offerText(e)," ")}}function ho(i,t){if(i&1&&(n(0,"div",386)(1,"span")(2,"b"),l(3),o(),n(4,"small"),l(5),o()(),n(6,"span",387),m(7,xo,2,3,"em",320),o()()),i&2){let e=t.$implicit;r(3),f(e.name||e.email),r(2),f(e.email),r(2),d("ngForOf",e.items)}}function vo(i,t){i&1&&(n(0,"p",328),l(1,"Nobody qualifies right now."),o())}function Oo(i,t){if(i&1){let e=x();n(0,"div",329),u("click",function(){p(e);let c=s();return g(c.closeRecipients())}),n(1,"div",382),u("click",function(c){return c.stopPropagation()}),n(2,"div",331),l(3),o(),n(4,"h3"),l(5),o(),m(6,Co,2,0,"p",383),n(7,"div",378)(8,"div",384),m(9,ho,8,3,"div",385)(10,vo,2,0,"p",383),o()(),n(11,"footer")(12,"button",362),u("click",function(){p(e);let c=s();return g(c.closeRecipients())}),l(13,"Close"),o()()()()}if(i&2){let e=t.ngIf;r(3),f(e.status==="sent"?"Sent to":"Currently eligible"),r(2),k("",e.customer_count," customer",e.customer_count===1?"":"s"),r(),d("ngIf",e.status!=="sent"),r(3),d("ngForOf",e.customers),r(),d("ngIf",!e.customers.length)}}function bo(i,t){if(i&1&&(n(0,"tr")(1,"td")(2,"b"),l(3),o()(),n(4,"td"),l(5),o()()),i&2){let e=t.$implicit,a=s(2);r(3),f(e.label),r(2),f(a.offerText(e))}}function Mo(i,t){if(i&1){let e=x();n(0,"div",329),u("click",function(){p(e);let c=s();return g(c.duplicating=null)}),n(1,"div",388),u("click",function(c){return c.stopPropagation()}),n(2,"div",331),l(3,"Duplicate rule"),o(),n(4,"h3"),l(5),o(),n(6,"p",328),l(7," The price ranges and their values carry over. The audience does not \u2014 it is rebuilt from behaviour inside the new window, which is the reason to run a rule again at all. "),o(),n(8,"div",389)(9,"label",96)(10,"span"),l(11,"New start"),o(),n(12,"input",390),T("ngModelChange",function(c){p(e);let _=s();
1return E(_.duplicateWindow.from,c)||(_.duplicateWindow.from=c),g(c)}),o()(),n(13,"label",96)(14,"span"),l(15,"New end"),o(),n(16,"input",390),T("ngModelChange",function(c){p(e);let _=s();return E(_.duplicateWindow.to,c)||(_.duplicateWindow.to=c),g(c)}),o()()(),n(17,"div",70)(18,"table",373)(19,"tbody"),m(20,bo,6,2,"tr",320),o()()(),n(21,"footer")(22,"button",362),u("click",function(){p(e);let c=s();return g(c.duplicating=null)}),l(23,"Cancel"),o(),n(24,"button",391),u("click",function(){p(e);let c=s();return g(c.applyDuplicate())}),l(25," Open in Offer List"),o()()()()}if(i&2){let e=t.ngIf,a=s();r(5),f(e.name),r(7),S("ngModel",a.duplicateWindow.from),r(4),S("ngModel",a.duplicateWindow.to),r(4),d("ngForOf",e.brackets),r(4),d("disabled",!a.duplicateWindow.from||!a.duplicateWindow.to)}}function Po(i,t){if(i&1&&(n(0,"div",396)(1,"span"),l(2),o(),n(3,"b"),l(4),o()()),i&2){let e=t.$implicit;r(2),f(e.label),r(2),f(e.count)}}function yo(i,t){if(i&1&&(n(0,"div",393)(1,"div",394),l(2),o(),m(3,Po,5,2,"div",395),o()),i&2){let e=s(2);r(2),q(" ",e.preview.customers_excluded||0," customer",(e.preview.customers_excluded||0)===1?"":"s"," excluded \xB7 ",e.preview.skipped_total," offer",e.preview.skipped_total===1?"":"s"," dropped "),r(),d("ngForOf",e.skipRows())}}function wo(i,t){i&1&&(n(0,"p",328),l(1," No discount reached the coupons that would have gone out. Set a value on the range you intend to mail, then try again. "),o())}function ko(i,t){if(i&1){let e=x();n(0,"div",329),u("click",function(){p(e);let c=s();return g(c.closeFlow())}),n(1,"div",388),u("click",function(c){return c.stopPropagation()}),n(2,"div",331),l(3,"Nothing left to send"),o(),n(4,"h3"),l(5,"Every candidate was removed at the final check"),o(),n(6,"p",328),l(7," The list was saved from who qualified at that moment. Send re-checks stock, whether the watch is still listed, this offer\u2019s include/exclude list, and whether that person already holds a live coupon for the same watch \u2014 and that last one is the usual reason a second send of the same window comes back empty. "),o(),m(8,yo,4,5,"div",392)(9,wo,2,0,"p",383),n(10,"footer")(11,"button",334),u("click",function(){p(e);let c=s();return g(c.closeFlow())}),l(12,"Back to Offer List"),o()()()()}if(i&2){let e=s();r(8),d("ngIf",e.preview.skipped_total),r(),d("ngIf",!e.preview.removed_total)}}function So(i,t){if(i&1&&(n(0,"div",381)(1,"span")(2,"b"),l(3),o(),n(4,"small"),l(5),o()()()),i&2){let e=t.$implicit;r(3),f(e.code),r(2),f(e.name)}}function Eo(i,t){if(i&1&&(n(0,"div",378)(1,"span"),l(2),o(),n(3,"div",379),m(4,So,6,2,"div",380),o()()),i&2){let e=s(2);r(2),k("Included in this send (",e.preview.included_products==null?null:e.preview.included_products.length," watch",(e.preview.included_products==null?null:e.preview.included_products.length)===1?"":"es",")"),r(2),d("ngForOf",e.preview.included_products)}}function To(i,t){if(i&1&&(n(0,"div",396)(1,"span"),l(2),o(),n(3,"b"),l(4),o()()),i&2){let e=t.$implicit;r(2),f(e.label),r(2),f(e.count)}}function Io(i,t){if(i&1&&(n(0,"div",393)(1,"div",394),l(2),o(),m(3,To,5,2,"div",395),o()),i&2){let e=s(2);r(2),q(" ",e.preview.customers_excluded||0," customer",(e.preview.customers_excluded||0)===1?"":"s"," excluded \xB7 ",e.preview.skipped_total," offer",e.preview.skipped_total===1?"":"s"," not sent "),r(),d("ngForOf",e.skipRows())}}function Vo(i,t){if(i&1&&(n(0,"em"),l(1),o()),i&2){let e=t.$implicit,a=s(3);r(),$(" ",e.module," \xB7 ",e.code||e.product," \xB7 ",a.offerText(e)," ")}}function Ro(i,t){if(i&1&&(n(0,"div",386)(1,"span")(2,"b"),l(3),o(),n(4,"small"),l(5),o()(),n(6,"span",387),m(7,Vo,2,3,"em",320),o()()),i&2){let e=t.$implicit;r(3),f(e.name||e.email),r(2),f(e.email),r(2),d("ngForOf",e.items)}}function Fo(i,t){if(i&1){let e=x();n(0,"div",329),u("click",function(){p(e);let c=s();return g(c.closeFlow())}),n(1,"div",382),u("click",function(c){return c.stopPropagation()}),n(2,"div",331),l(3,"Confirm send"),o(),n(4,"h3"),l(5),o(),n(6,"p",328),l(7),z(8,"date"),z(9,"date"),o(),m(10,Eo,5,3,"div",376)(11,Io,4,5,"div",392),n(12,"div",378)(13,"span"),l(14,"Who will be mailed"),o(),n(15,"div",384),m(16,Ro,8,3,"div",385),o()(),n(17,"footer")(18,"button",362),u("click",function(){p(e);let c=s();return g(c.closeFlow())}),l(19,"Cancel"),o(),n(20,"button",334),u("click",function(){p(e);let c=s();return g(c.flow="schedule")}),l(21,"Choose reminder schedule"),o()()()()}if(i&2){let e=s();r(5),q("",e.preview.coupon_count," coupon",e.preview.coupon_count===1?"":"s"," for ",e.preview.customer_count," customer",e.preview.customer_count===1?"":"s"),r(2),q(" ",e.preview.name," \xB7 ",B(8,11,e.preview.from,"dd MMM")," \u2192 ",B(9,14,e.preview.to,"dd MMM y")," \xB7 ",e.productModeLabel(e.preview.product_mode),". One consolidated email per person, listing every offer they were given. "),r(3),d("ngIf",e.preview.included_products==null?null:e.preview.included_products.length),r(),d("ngIf",e.preview.skipped_total),r(5),d("ngForOf",e.preview.customers)}}function zo(i,t){if(i&1&&(n(0,"span",236),l(1),o()),i&2){let e=s().$implicit,a=s(2);r(),f(a.reminderLabel(e))}}function Bo(i,t){if(i&1){let e=x();P(0),n(1,"span"),l(2,"Day"),o(),n(3,"input",402),T("ngModelChange",function(c){p(e);let _=s().$implicit;return E(_.offset_days,c)||(_.offset_days=c),g(c)}),o(),n(4,"span"),l(5),o(),n(6,"button",327),u("click",function(){p(e);let c=s().index,_=s(2);return g(_.removeReminder(c))}),l(7,"Remove"),o(),y()}if(i&2){let e=s().$implicit;r(3),S("ngModel",e.offset_days),r(2),f(e.label||"\u2014 custom reminder")}}function Lo(i,t){i&1&&(n(0,"span",403),l(1,"always on"),o())}function Do(i,t){if(i&1){let e=x();n(0,"label",234)(1,"input",399),T("ngModelChange",function(c){let _=p(e).$implicit;return E(_.enabled,c)||(_.enabled=c),g(c)}),o(),m(2,zo,2,1,"span",400)(3,Bo,8,2,"ng-container",15)(4,Lo,2,0,"span",401),o()}if(i&2){let e=t.$implicit;O("locked",e.locked),r(),S("ngModel",e.enabled),d("disabled",e.locked),r(),d("ngIf",e.locked),r(),d("ngIf",!e.locked),r(),d("ngIf",e.locked)}}function $o(i,t){if(i&1){let e=x();n(0,"div",329),u("click",function(){p(e);let c=s();return g(c.flow="confirm")}),n(1,"div",388),u("click",function(c){return c.stopPropagation()}),n(2,"div",331),l(3,"Schedule"),o(),n(4,"h3"),l(5),o(),n(6,"p",328),l(7," Pick which touchpoints send. Every reminder reuses the same code and is skipped once it has been redeemed or expired. "),o(),n(8,"div",182),m(9,Do,5,7,"label",397),o(),n(10,"button",362),u("click",function(){p(e);let c=s();return g(c.addReminder())}),l(11,"+ Add custom interval"),o(),n(12,"p",398),l(13),o(),n(14,"footer")(15,"button",362),u("click",function(){p(e);let c=s();return g(c.flow="confirm")}),l(16,"Back"),o(),n(17,"button",391),u("click",function(){p(e);let c=s();return g(c.confirmSend())}),l(18),o()()()()}if(i&2){let e=s();r(5),k("",e.preview.coupon_count," coupons \xB7 ",e.preview.customer_count," customers"),r(4),d("ngForOf",e.reminders),r(4),v(" Coupons stay redeemable for ",e.filters.valid_days," days. "),r(4),d("disabled",e.sending),r(),v(" ",e.sending?"Sending\u2026":"Confirm & send"," ")}}function qo(i,t){i&1&&(n(0,"div",405)(1,"b"),l(2,"No email was delivered."),o(),l(3," The coupons exist and are redeemable, but outbound mail is not configured on this server \u2014 check "),n(4,"code"),l(5,"MAIL_PASSWORD"),o(),l(6," in "),n(7,"code"),l(8,".env"),o(),l(9,". Nobody has been told about their offer yet. "),o())}function No(i,t){if(i&1&&(n(0,"p",328),l(1," Mail is in test mode \u2014 every message went to "),n(2,"b"),l(3),o(),l(4,", not to the customers. "),o()),i&2){let e=s(2);r(3),f(e.sentSummary.redirectedTo)}}function Ho(i,t){if(i&1&&(n(0,"div",381)(1,"span"),l(2),o(),n(3,"span",328),l(4,"scheduled"),o()()),i&2){let e=t.$implicit,a=s(2);r(2),f(a.reminderLabel(e))}}function Wo(i,t){if(i&1){let e=x();n(0,"div",329),u("click",function(){p(e);let c=s();return g(c.closeFlow())}),n(1,"div",388),u("click",function(c){return c.stopPropagation()}),n(2,"div",331),l(3),o(),n(4,"h3"),l(5),o(),m(6,qo,10,0,"div",404)(7,No,5,1,"p",383),n(8,"p",328),l(9),z(10,"date"),o(),n(11,"div",379),m(12,Ho,5,1,"div",380
1),o(),n(13,"footer")(14,"button",334),u("click",function(){p(e);let c=s();return g(c.closeFlow())}),l(15,"Done"),o()()()()}if(i&2){let e=s();r(2),O("good",e.sentSummary.mailConfigured),r(),v(" ",e.sentSummary.mailConfigured?"Sent":"Issued \u2014 not sent"," "),r(2),k("",e.sentSummary.coupons," coupons issued to ",e.sentSummary.customers," customers"),r(),d("ngIf",!e.sentSummary.mailConfigured),r(),d("ngIf",e.sentSummary.mailConfigured&&e.sentSummary.redirectedTo),r(2),v("Valid to ",B(10,9,e.sentSummary.valid_to,"dd MMM y"),". Scheduled touchpoints:"),r(3),d("ngForOf",e.sentSummary.reminders)}}function Ao(i,t){i&1&&(n(0,"div",338),l(1," Nobody applied a code in this cell without buying. "),o())}function jo(i,t){if(i&1&&(n(0,"small",358),l(1),o()),i&2){let e=s().$implicit;r(),f(e.code)}}function Go(i,t){if(i&1&&(n(0,"small"),l(1),o()),i&2){let e=s().$implicit;r(),v("\u201C",e.note,"\u201D")}}function Qo(i,t){if(i&1&&(n(0,"tr")(1,"td")(2,"b"),l(3),o(),n(4,"small"),l(5),o()(),n(6,"td"),l(7),m(8,jo,2,1,"small",351),o(),n(9,"td"),l(10),n(11,"small")(12,"code"),l(13),o()()(),n(14,"td"),l(15),m(16,Go,2,1,"small",15),o()()),i&2){let e=t.$implicit,a=s(4);r(3),f(e.name||e.email),r(2),f(e.email),r(2),v("",e.product," "),r(),d("ngIf",e.code!==e.product),r(2),f(a.offerText(e)),r(3),f(e.coupon),r(2),v(" ",e.reason_label," "),r(),d("ngIf",e.note)}}function Ko(i,t){if(i&1&&(n(0,"table",345)(1,"thead")(2,"tr")(3,"th"),l(4,"Customer"),o(),n(5,"th"),l(6,"Product"),o(),n(7,"th"),l(8,"Offer"),o(),n(9,"th"),l(10,"Feedback"),o()()(),n(11,"tbody"),m(12,Qo,17,8,"tr",320),o()()),i&2){let e=s().ngIf;r(12),d("ngForOf",e.dropoffs)}}function Uo(i,t){if(i&1){let e=x();P(0),n(1,"header")(2,"div")(3,"div",331),l(4),o(),n(5,"h3"),l(6),o()(),n(7,"button",78),u("click",function(){p(e);let c=s(2);return g(c.closeConversionDrill())}),l(8,"Close"),o()(),n(9,"div",406)(10,"div",407)(11,"span"),l(12,"Sent"),o(),n(13,"b"),l(14),o()(),n(15,"div",407)(16,"span"),l(17,"Applied"),o(),n(18,"b"),l(19),o()(),n(20,"div",408)(21,"span"),l(22,"Converted"),o(),n(23,"b"),l(24),o()(),n(25,"div",409)(26,"span"),l(27,"Dropped"),o(),n(28,"b"),l(29),o()()(),n(30,"div",335),m(31,Ao,2,0,"div",336)(32,Ko,13,1,"table",410),o(),n(33,"footer")(34,"span",328),l(35," Feedback is asked for a couple of hours after a code is applied \u2014 a blank reason means nobody answered, not that nobody was asked. "),o(),n(36,"button",334),u("click",function(){p(e);let c=s(2);return g(c.closeConversionDrill())}),l(37,"Close"),o()(),y()}if(i&2){let e=t.ngIf;r(4),k("",e.module.label," \xB7 ",e.bracket.label),r(2),v("",e.dropoffs.length," applied and did not buy"),r(8),f(e.totals.sent),r(5),f(e.totals.applied),r(5),f(e.totals.converted),r(5),f(e.totals.dropped),r(2),d("ngIf",!e.dropoffs.length),r(),d("ngIf",e.dropoffs.length)}}function Yo(i,t){i&1&&(n(0,"div",32),C(1,"div",33),o())}function Jo(i,t){if(i&1){let e=x();n(0,"div",329),u("click",function(){p(e);let c=s();return g(c.closeConversionDrill())}),n(1,"div",330),u("click",function(c){return c.stopPropagation()}),m(2,Uo,38,9,"ng-container",15)(3,Yo,2,0,"div",13),o()()}if(i&2){let e=s();r(2),d("ngIf",e.conversionDetail),r(),d("ngIf",!e.conversionDetail)}}function Xo(i,t){if(i&1){let e=x();n(0,"div",411),u("click",function(){p(e);let c=s();return g(c.cancelPendingRemove())}),n(1,"div",412),u("click",function(c){return c.stopPropagation()}),n(2,"span",413),b(),n(3,"svg",414),C(4,"circle",27)(5,"path",37)(6,"path",38),o()(),w(),n(7,"h3",415),l(8),o(),n(9,"p",416),l(10),o(),n(11,"footer")(12,"button",177),u("click",function(){p(e);let c=s();return g(c.cancelPendingRemove())}),l(13,"Cancel"),o(),n(14,"button",61),u("click",function(){p(e);let c=s();return g(c.confirmPendingRemove())}),l(15,"Remove"),o()()()()}if(i&2){let e=t.ngIf;r(),D("aria-labelledby","rm-title")("aria-describedby","rm-detail"),r(7),f(e.title),r(2),f(e.detail)}}var Oe={discount_type:"percent",discount_value:null,reuse:"one-time",qty_mode:"fixed",qty_cap:5},be=class i{constructor(t,e,a){this.api=t;this.cdr=e;this.toast=a}tab="list";screen="browse";tabs=[{key:"list",label:"Offer List"},{key:"conversion",label:"Conversion Report"}];loading=!0;error="";allModules=[];selectedModules=[];brackets=[];filters={from:"",to:"",min_views:3,min_seconds:60,valid_days:15};derivationNote="";maxFlat=1e4;maxPercent=100;exclusionLabels={};nextBracket=0;defaultBrackets=[];defaultReminders=[];campaignName="";saveTried=!1;productMode="all";scopeProducts=[];productModes=[{key:"all",label:"All Products"},{key:"include",label:"Include Products"},{key:"exclude",label:"Exclude Products"}];discountType="percent";mode="manual";matrix=null;matrixLoading=!1;statsByRef={};suggestions={};minSample=0;bracketSettings={};cellSettings={};overrides={};untickedByCell={};openCell=null;drill=null;drillLoading=!1;showExcluded=!1;flow="";preview=null;recipients=null;recipientsLoading=!1;sending=!1;saving=!1;pendingRemove=null;reminders=[];sentSummary=null;reportView="chart";conversion=null;conversionLoading=!1;conversionCampaignId=null;openConversionCell=null;conversionDetail=null;reportRows=[];brief=null;healthy=30;requests=[];requestsLoading=!1;rules=[];rulesLoading=!1;openRule=null;duplicating=null;duplicateWindow={from:"",to:""};exclusions=[];exclusionsLoading=!1;excludeCode="";excluding=!1;scopeOpen=!1;suggestBox;suggestBoxModal;offerNameInput;hits=[];hitsOpen=!1;hitsLoading=!1;highlighted=-1;hitTimer=null;hitReq=0;scopeReloadTimer=null;loaded=new Set;ngOnInit(){this.api.get("/admin/offers/options/").subscribe({next:t=>{this.allModules=t.modules,this.selectedModules=t.modules.map(c=>c.key),this.brackets=t.brackets.map(c=>({ref:c.ref,label:c.label,min:c.min,max:c.max})),this.defaultBrackets=this.brackets.map(c=>M({},c)),this.nextBracket=this.brackets.length,this.reminders=t.reminders.map(c=>M({},c)),this.defaultReminders=this.reminders.map(c=>M({},c)),this.exclusionLabels=t.exclusion_labels||{},t.product_modes?.length&&(this.productModes=t.product_modes),this.maxFlat=t.limits.max_flat,this.maxPercent=t.limits.max_percent,this.minSample=t.limits.min_sample??0,this.derivationNote=t.derivation_note,this.filters.min_views=t.defaults.min_views,this.filters.min_seconds=t.defaults.min_seconds,this.filters.valid_days=t.defaults.valid_days;let e=new Date,a=new Date(e.getTime()-t.defaults.window_days*864e5);this.filters.to=this.iso(e),this.filters.from=this.iso(a),this.loading=!1,this.cdr.markForCheck(),this.loadRules()},error:()=>{this.error="Could not load the offer console.",this.loading=!1,this.cdr.markForCheck()}})}iso(t){return t.toISOString().slice(0,10)}query(){return{from:this.filters.from,to:this.filters.to,modules:this.selectedModules.join(","),brackets:JSON.stringify(this.brackets),min_views:this.filters.min_views,min_seconds:this.filters.min_seconds,product_mode:this.productMode,product_ids:this.scopeProducts.map(t=>
1t.id).join(",")}}loadMatrix(){if(!this.selectedModules.length){this.matrix=null;return}this.matrixLoading=!0,this.cdr.markForCheck(),this.api.get("/admin/offers/matrix/",this.query()).subscribe({next:t=>{this.matrix=t,this.statsByRef={};for(let e of t.brackets)this.statsByRef[e.ref]=e;this.matrixLoading=!1,this.cdr.markForCheck()},error:t=>{this.matrixLoading=!1,this.toast.error(t?.error?.detail||"Could not build the matrix."),this.cdr.markForCheck()}}),this.mode==="auto"&&this.loadSuggestions()}loadSuggestions(){this.api.get("/admin/offers/suggestions/",{modules:this.selectedModules.join(","),brackets:JSON.stringify(this.brackets)}).subscribe({next:t=>{this.suggestions=t.suggestions,this.minSample=t.min_sample,this.cdr.markForCheck()},error:()=>{}})}setMode(t){this.mode=t,t==="auto"&&!Object.keys(this.suggestions).length&&this.loadSuggestions()}toggleModule(t){this.selectedModules=this.selectedModules.includes(t)?this.selectedModules.filter(e=>e!==t):[...this.selectedModules,t],this.loadMatrix()}cellStat(t,e){return this.statsByRef[t]?.cells[e]||{products:0,customers:0,total:0,excluded:0}}moduleColumnTotal(t){let e=0,a=0,c=0;for(let _ of this.brackets){let h=this.cellStat(_.ref,t);e+=h.products,a+=h.customers,c+=h.total}return{products:e,customers:a,total:c}}rowTotal(t){return this.statsByRef[t]?.total||{products:0,customers:0,total:0}}moduleLabel(t){return this.allModules.find(e=>e.key===t)?.label||t}activeModules(){return this.allModules.filter(t=>this.selectedModules.includes(t.key))}addBracket(){let t={ref:`custom-${this.nextBracket++}`,label:"",min:0,max:null},e=[...this.brackets].sort((a,c)=>(a.max??a.min)-(c.max??c.min)).pop();if(!e)t.label=this.rangeLabel(0,null);else if(e.max==null){let a=this.splitPoint(e.min);e.max=a,e.label=this.rangeLabel(e.min,a),t.min=a+1,t.label=this.rangeLabel(t.min,null)}else t.min=e.max+1,t.label=this.rangeLabel(t.min,null);this.brackets=[...this.brackets,t],this.loadMatrix()}splitPoint(t){let e=Math.max(t*2,t+1e4),a=e>=1e5?5e4:e>=1e4?1e4:1e3;return Math.round(e/a)*a}rangeLabel(t,e){let a=this.money(Math.max(0,t-1));return e==null?`${a}+`:`${a} \u2013 ${this.money(e).replace("\u20B9","")}`}money(t){if(t>=1e5){let e=t/1e5;return"\u20B9"+(Number.isInteger(e)?e:e.toFixed(1))+"L"}return t>=1e3?"\u20B9"+Math.round(t/1e3)+"K":"\u20B9"+t}askRemoveBracket(t){if(this.brackets.length<=1)return;let e=this.brackets.find(a=>a.ref===t);this.pendingRemove={kind:"bracket",ref:t,title:"Remove this price range?",detail:e?.label?`\u201C${e.label}\u201D will be dropped from this offer list.`:"This price range will be dropped from this offer list."},this.cdr.markForCheck()}removeBracket(t){if(!(this.brackets.length<=1)){this.brackets=this.brackets.filter(e=>e.ref!==t),delete this.bracketSettings[t];for(let e of Object.keys(this.cellSettings))e.startsWith(`${t}-`)&&delete this.cellSettings[e];for(let e of Object.keys(this.untickedByCell))e.startsWith(`${t}-`)&&delete this.untickedByCell[e];this.loadMatrix()}}askRemoveScopeProduct(t){this.pendingRemove={kind:"scope",productId:t.id,title:"Remove this product?",detail:`${t.code}${t.name?" \xB7 "+t.name:""} will be taken off this offer list.`},this.cdr.markForCheck()}cancelPendingRemove(){this.pendingRemove=null,this.cdr.markForCheck()}confirmPendingRemove(){let t=this.pendingRemove;if(this.pendingRemove=null,!!t){if(t.kind==="bracket"&&t.ref)this.removeBracket(t.ref);else if(t.kind==="scope"&&t.productId!=null){let e=this.scopeProducts.find(a=>a.id===t.productId);e&&this.removeScopeProduct(e)}this.cdr.markForCheck()}}settingsFor(t){return this.bracketSettings[t]||I(M({},Oe),{discount_type:this.discountType})}setDiscountType(t){this.discountType=t;for(let e of Object.keys(this.bracketSettings)){let a=this.bracketSettings[e];this.bracketSettings[e]=I(M({},a),{discount_type:t,discount_value:this.clamp(t,a.discount_value)})}}cellOffer(t,e){return M(M({},this.settingsFor(t)),this.cellSettings[`${t}-${e}`]||{})}setBracketValue(t,e){let a=this.clamp(this.settingsFor(t).discount_type,e);this.bracketSettings[t]=I(M({},this.settingsFor(t)),{discount_value:a})}bracketValue(t){return this.settingsFor(t).discount_value}setBracketReuse(t,e){let a=e==="multi"?"multi":"one-time";this.bracketSettings[t]=I(M({},this.settingsFor(t)),{reuse:a})}setBracketQtyMode(t,e){let a=e==="scale"?"scale":"fixed";this.bracketSettings[t]=I(M({},this.settingsFor(t)),{qty_mode:a})}setBracketQtyCap(t,e){let a=String(e??"").replace(/[^0-9]/g,""),c=Math.min(99,Math.max(1,Number(a)||1));this.bracketSettings[t]=I(M({},this.settingsFor(t)),{qty_cap:c})}clamp(t,e){let a=String(e??"").replace(/[^0-9]/g,"");if(!a)return null;
1let c=t==="percent"?this.maxPercent:this.maxFlat;return Math.min(Number(a),c)}suggestionFor(t,e){return this.suggestions[`${t}-${e}`]||null}applyAllSuggestions(){let t=0;for(let e of this.brackets)for(let a of this.selectedModules){let c=this.suggestionFor(e.ref,a);c&&(this.cellSettings[`${e.ref}-${a}`]=I(M({},this.cellOffer(e.ref,a)),{discount_type:c.type,discount_value:c.value}),t++)}this.toast.success(`${t} cells set from suggestions`,"Hand-edited customers keep their own values")}openDrill(t,e){this.openCell={ref:t,module:e},this.drill=null,this.drillLoading=!0,this.showExcluded=!1,this.cdr.markForCheck(),this.api.get("/admin/offers/matrix/cell/",I(M({},this.query()),{bracket:t,module:e})).subscribe({next:a=>{this.drill=a,this.drillLoading=!1,this.cdr.markForCheck()},error:()=>{this.drillLoading=!1,this.toast.error("Could not load that cell."),this.cdr.markForCheck()}})}drillGroups(){return(this.drill?.groups||[]).filter(t=>t.products.some(e=>!e.excluded_reason))}offerable(t){return t.products.filter(e=>!e.excluded_reason)}groupIncluded(t){return this.offerable(t).every(e=>this.rowOffer(e).included)}toggleGroup(t,e){for(let a of this.offerable(t))this.updateRow(a,{included:e})}closeDrill(){this.openCell=null}rowOffer(t){let e=this.openCell?this.cellOffer(this.openCell.ref,this.openCell.module):M({},Oe),a=this.overrides[t.key]||{};return I(M(M({},e),a),{included:a.included!==!1&&!t.excluded_reason})}isCustomized(t){return!!this.overrides[t.key]}updateRow(t,e){if(e.included!==void 0&&this.openCell){let _=`${this.openCell.ref}-${this.openCell.module}`,h=this.untickedByCell[_]||(this.untickedByCell[_]=new Set);e.included?h.delete(t.key):h.add(t.key)}let a=this.overrides[t.key]||{},c=M(M({},a),e);if(e.discount_value!==void 0||e.discount_type!==void 0){let _=c.discount_type||this.rowOffer(t).discount_type;c.discount_type=_,c.discount_value=this.clamp(_,c.discount_value??null)}this.overrides[t.key]=c}clearRow(t){delete this.overrides[t.key],this.openCell&&this.untickedByCell[`${this.openCell.ref}-${this.openCell.module}`]?.delete(t.key)}excludedRows(){return(this.drill?.groups||[]).flatMap(t=>t.products).filter(t=>!!t.excluded_reason)}includedCount(){let t=this.drillGroups().flatMap(e=>this.offerable(e)).filter(e=>this.rowOffer(e).included);return{products:t.length,customers:new Set(t.map(e=>e.customer_id)).size}}readyOffers(){if(!this.matrix)return 0;let t=0;for(let e of this.brackets)for(let a of this.selectedModules){if(!this.cellOffer(e.ref,a).discount_value)continue;let c=this.untickedByCell[`${e.ref}-${a}`]?.size||0;t+=Math.max(0,this.cellStat(e.ref,a).products-c)}return t}hasOfferName(){return!!(this.campaignName||"").trim()}nameInvalid(){return this.saveTried&&!this.hasOfferName()}setCampaignName(t){this.campaignName=t,this.cdr.markForCheck()}onOfferNameBlur(){this.syncOfferName(),this.hasOfferName()||(this.saveTried=!0),this.cdr.markForCheck()}syncOfferName(){let t=this.offerNameInput?.nativeElement,e=(t?.value??this.campaignName??"").trim();return this.campaignName=e,t&&t.value!==e&&(t.value=e),e}hasDiscountValue(){let t=e=>!!(e&&e.discount_value);return!!(Object.values(this.bracketSettings).some(t)||Object.values(this.cellSettings).some(t)||Object.values(this.overrides).some(t))}canSaveOffer(){return!(!this.hasOfferName()||!this.hasDiscountValue()||this.productMode==="include"&&!this.scopeProducts.length)}campaignPayload(){return{name:(this.campaignName||"").trim(),from:this.filters.from,to:this.filters.to,modules:this.selectedModules,mode:this.mode,min_views:this.filters.min_views,min_seconds:this.filters.min_seconds,valid_days:this.filters.valid_days,brackets:this.brackets,bracket_settings:this.bracketSettings,cells:this.cellSettings,overrides:this.overrides,product_mode:this.productMode,products:this.scopeProducts,reminders:this.reminders}}saveOffer(){if(!this.saving){if(this.saveTried=!0,this.syncOfferName(),this.cdr.markForCheck(),!this.hasOfferName()){this.toast.error("Enter an offer name.");let t=this.offerNameInput?.nativeElement;t&&(t.focus(),t.reportValidity(),t.scrollIntoView({behavior:"smooth",block:"center"}));return}if(!this.hasDiscountValue()){this.toast.error("Set a discount value on at least one range."),this.cdr.markForCheck();return}if(this.productMode==="include"&&!this.scopeProducts.length){this.toast.error("Add at least one product to include.");return}this.saving=!0,this.cdr.markForCheck(),this.api.post("/admin/offers/campaigns/",this.campaignPayload()).subscribe({next:()=>{this.saving=!1,this.toast.success("Offer list saved","Send the notification from the list when you are ready."),this.closeCompose()},error:t=>{this.saving=!1,this.toast.error(this.sendError(t)||"Could not save the offer list."),this.cdr.markForCheck()}})}}startSend(){this.toast.error("Save the offer list first, then send from the list.")}startSendFromList(t){t.status==="sent"||this.sending||(this.sending=!0,this.cdr.markForCheck(),this.fetchRule(t.id,e=>{e.reminders?.length?this.reminders=e.reminders.map(a=>({offset_days:a.offset_days,label:a.label,enabled:a.enabled,locked:a.locked})):this.reminders=this.defaultReminders.map(a=>M({},a)),this.filters.valid_days=e.valid_days,this.api.get(`/admin/offers/campaigns/${t.id}/preview/`).subscribe({next:a=>{this.preview=a,this.sending=!1,this.flow=a.coupon_count?"confirm":"blocked",this.cdr.markForCheck()},error:a=>{this.sending=!1,this.toast.error(this.sendError(a)||"Could not prepare the send."),this.cdr.markForCheck()}})}))}addReminder(){let t=this.reminders[this.reminders.length-1];this.reminders=[...this.reminders,{offset_days:(t?t.offset_days:7)+5,label:"",enabled:!0,locked:!1}]}removeReminder(t){this.reminders[t]?.locked||(this.reminders=this.reminders.filter((e,a)=>a!==t))}reminderLabel(t){return t.label||`Day ${t.offset_days} \u2014 custom reminder`}confirmSend(){!this.preview||this.sending||(this.sending=!0,this.cdr.markForCheck(),this.api.post(`/admin/offers/campaigns/${this.preview.campaign_id}/send/`,{reminders:this.reminders}).subscribe({next:t=>{this.sending=!1,this.sentSummary={customers:t.customers,coupons:t.coupons,valid_to:t.valid_to,reminders:this.reminders.filter(e=>e.enabled),mailConfigured:t.mail_configured!==!1,redirectedTo:t.mail_redirected_to||""},this.flow="sent",this.overrides={},this.untickedByCell={},this.screen="browse",this.tab="list",this.loadRules(),this.cdr.markForCheck()},error:t=>{this.sending=!1,this.toast.error(this.sendError(t)),this.cdr.markForCheck()}}))}closeFlow(){this.flow="",this.preview=null}sendError(t){let e=t?.error?.detail;return typeof e=="string"&&e?e:Array.isArray(e)&&e.length?String(e[0]):"The send failed."}removalRows(){return this.preview?Object.entries(this.preview.removed).map(([t,e])=>({label:this.preview.removed_labels[t]||t,count:e})):[]}skipRows(){return this.preview?.skipped?Object.entries(this.preview.skipped).map(([t,e])=>({label:this.preview.skipped_labels?.[t]||this.preview.removed_labels?.[t]||t,count:e})):[]}productModeLabel(t){let e=t||this.productMode;return this.productModes.find(a=>a.key===e)?.label||"All Products"}selectTab(t){if(this.tab=t,t==="list"){this.screen="browse",this.loadRules();return}if(t==="conversion"){this.loadRules(()=>this.loadConversion());return}this.loaded.has(t)||(this.loaded.add(t),t==="report"&&this.loadReport(),t==="requests"&&this.loadRequests())}sentRules(){return this.rules.filter(t=>t.status==="sent")}loadConversion(){let t=this.sentRules();if(this.conversionCampaignId&&!t.some(e=>e.id===this.conversionCampaignId)&&(this.conversionCampaignId=null),this.conversionCampaignId||(this.conversionCampaignId=t[0]?t[0].id:null),!this.conversionCampaignId){this.conversion=null,this.conversionLoading=!1,this.cdr.markForCheck();return}this.conversionLoading=!0,this.cdr.markForCheck(),this.api.get("/admin/offers/conversion/",{campaign:this.conversionCampaignId}).subscribe({next:e=>{this.conversion=e,this.conversionLoading=!1,this.cdr.markForCheck()},error:()=>{this.conversionLoading=!1,this.toast.error("Could not load the conversion report."),this.cdr.markForCheck()}})}openConversionDrill(t,e){this.openConversionCell={ref:t,module:e},this.conversionDetail=null,this.cdr.markForCheck(),this.api.get("/admin/offers/conversion/cell/",{campaign:this.conversionCampaignId,bracket:t,module:e}).subscribe({next:a=>{this.conversionDetail=a,this.cdr.markForCheck()},error:()=>{this.openConversionCell=null,this.toast.error("Could not load that cell."),this.cdr.markForCheck()}})}closeConversionDrill(){this.openConversionCell=null,this.conversionDetail=null}loadReport(){this.api.get("/admin/offers/report/").subscribe({next:t=>{this.reportRows=t.rows,this.brief=t.brief,this.healthy=t.healthy_conversion,this.cdr.markForCheck()},error:()=>this.toast.error("Could not load the AI report.")})}loadRequests(){this.requestsLoading=!0,this.cdr.markForCheck(),this.api.get("/admin/offers/requests/").subscribe({next:t=>{this.requests=t.results,this.requestsLoading=!1,this.cdr.markForCheck()},error:()=>{this.requestsLoading=!1,this.toast.error("Could not load the request queue."),this.cdr.markForCheck()}})}preloadRequests(){this.api.get("/admin/offers/requests/").subscribe({next:t=>{this.requests=t.results,this.loaded.add("requests"),this.cdr.markForCheck()},error:()=>{}})}loadRules(t){this.rulesLoading=!0,this.cdr.markForCheck(),this.api.get("/admin/offers/campaigns/").subscribe({next:e=>{this.rules=e.results,this.rulesLoading=!1,this.cdr.markForCheck(),t?.()},error:()=>{this.rulesLoading=!1,this.toast.error("Could not load the offer lists."),this.cdr.markForCheck()}})}fetchRule(t,e){this.api.get(`/admin/offers/campaigns/${t}/`).subscribe({next:a=>{e(a),this.cdr.markForCheck()},error:()=>{this.sending=!1,this.toast.error("Could not open that offer list."),this.cdr.markForCheck()}})}viewRule(t){this.fetchRule(t.id,e=>{this.openRule=e})}viewRecipients(t){this.recipientsLoading||(this.recipientsLoading=!0,this.cdr.markForCheck(),this.api.get(`/admin/offers/campaigns/${t.id}/recipients/`).subscribe({next:e=>{this.recipients=e,this.recipientsLoading=!1,this.cdr.markForCheck()},error:()=>{this.toast.error("Could not load the customer list."),this.recipientsLoading=!1,this.cdr.markForCheck()}}))}closeRecipients(){this.recipients=null}startDuplicate(t){this.fetchRule(t.id,e=>{let a=Math.max(1,Math.round((Date.parse(e.to)-Date.parse(e.from))/864e5)),c=new Date;this.duplicateWindow={to:this.iso(c),from:this.iso(new Date(c.getTime()-a*864e5))},this.duplicating=e})}applyDuplicate(){let t=this.duplicating;if(t){this.brackets=t.brackets.map(e=>({ref:e.ref,label:e.label,min:e.min,max:e.max})),this.bracketSettings={};for(let e of t.brackets)this.bracketSettings[e.ref]={discount_type:e.discount_type,discount_value:e.discount_value||null,reuse:e.reuse,qty_mode:e.qty_mode,qty_cap:e.qty_cap};this.discountType=t.brackets[0]?.discount_type||this.discountType,this.selectedModules=t.modules.map(e=>e.key),this.filters={from:this.duplicateWindow.from,to:this.duplicateWindow.to,min_views:t.min_views,min_seconds:t.min_seconds,valid_days:t.valid_days},this.cellSettings={},this.overrides={},this.untickedByCell={},this.nextBracket=this.brackets.length,this.campaignName=`${t.name} (copy)`,this.productMode=t.product_mode||"all",this.scopeProducts=(t.products||[]).map(e=>M({},e)),this.reminders=t.reminders?.length?t.reminders.map(e=>({offset_days:e.offset_days,label:e.label,enabled:e.enabled,locked:e.locked})):this.defaultReminders.map(e=>M({},e)),this.duplicating=null,this.tab="list",this.screen="compose",this.toast.success("Rule copied",`Rebuilding the audience for ${this.filters.from} \u2192 ${this.filters.to}`),this.loadMatrix()}}openCompose(){this.resetCompose(),this.tab="list",this.screen="compose",this.cdr.markForCheck(),this.loadMatrix()}closeCompose(){this.scopeOpen=!1,this.hitsOpen=!1,this.screen="browse",this.tab="list",this.loadRules(),this.cdr.markForCheck()}
1openConversionFor(t){this.conversionCampaignId=t.id,this.tab="conversion",this.loadConversion()}resetCompose(){this.campaignName="",this.saveTried=!1,this.productMode="all",this.scopeProducts=[],this.scopeOpen=!1,this.brackets=this.defaultBrackets.map(t=>M({},t)),this.nextBracket=this.brackets.length,this.bracketSettings={},this.cellSettings={},this.overrides={},this.untickedByCell={},this.matrix=null,this.excludeCode="",this.hits=[],this.hitsOpen=!1,this.reminders=this.defaultReminders.map(t=>M({},t)),this.pendingRemove=null}setProductMode(t){this.productMode!==t&&(this.productMode=t,t==="all"&&(this.scopeOpen=!1),this.loadMatrix())}openScopePanel(){this.hitsOpen=!1,this.scopeOpen=!0,this.cdr.markForCheck()}closeScopePanel(){this.scopeOpen=!1,this.hitsOpen=!1,this.cdr.markForCheck()}toggleScopeHit(t){this.scopeProducts.some(e=>e.id===t.id)?this.scopeProducts=this.scopeProducts.filter(e=>e.id!==t.id):this.scopeProducts=[...this.scopeProducts,{id:t.id,code:t.code,name:t.name,reason:""}].sort((e,a)=>e.code.localeCompare(a.code)),this.hits=this.hits.map(e=>I(M({},e),{excluded:this.scopeProducts.some(a=>a.id===e.id)})),this.hitsOpen=!0,this.scheduleMatrix(),this.cdr.markForCheck()}addScopeProduct(){let t=this.excludeCode.trim();if(!t||this.excluding)return;if(this.scopeProducts.find(c=>c.code.toLowerCase()===t.toLowerCase())){this.toast.error(`${t} is already on this list.`);return}let a=this.hits.find(c=>c.code.toLowerCase()===t.toLowerCase());if(a){this.toggleScopeHit(a);return}this.excluding=!0,this.cdr.markForCheck(),this.api.get("/admin/offers/products/suggest/",{term:t}).subscribe({next:c=>{this.excluding=!1;let _=c.results.find(h=>h.code.toLowerCase()===t.toLowerCase())||c.results[0];if(!_){this.toast.error(`No product with the code \u201C${t}\u201D.`),this.cdr.markForCheck();return}this.toggleScopeHit(_)},error:()=>{this.excluding=!1,this.toast.error("Could not look up that code."),this.cdr.markForCheck()}})}removeScopeProduct(t){this.scopeProducts=this.scopeProducts.filter(e=>e.id!==t.id),this.hits=this.hits.map(e=>I(M({},e),{excluded:this.scopeProducts.some(a=>a.id===e.id)})),this.scheduleMatrix(),this.cdr.markForCheck()}scheduleMatrix(){clearTimeout(this.scopeReloadTimer),this.scopeReloadTimer=setTimeout(()=>this.loadMatrix(),280)}ruleSummary(t){return t.brackets?.length?t.brackets.map(e=>`${e.label}: ${this.offerText(e)}`).join(" \xB7 "):"\u2014"}loadExclusions(){this.exclusionsLoading=!0,this.cdr.markForCheck(),this.api.get("/admin/offers/exclusions/").subscribe({next:t=>{this.exclusions=t.results,this.exclusionsLoading=!1,this.cdr.markForCheck()},error:()=>{this.exclusionsLoading=!1,this.toast.error("Could not load the exclusion list."),this.cdr.markForCheck()}})}onExcludeInput(){clearTimeout(this.hitTimer);let t=this.excludeCode.trim();if(t.length<2){this.hits=[],this.hitsOpen=!1,this.hitsLoading=!1;return}this.hitsLoading=!0,this.hitsOpen=!0,this.highlighted=-1,this.hitTimer=setTimeout(()=>this.fetchHits(t),250)}fetchHits(t){let e=++this.hitReq;this.api.get("/admin/offers/products/suggest/",{term:t}).subscribe({next:a=>{if(e!==this.hitReq)return;let c=new Set(this.scopeProducts.map(_=>_.id));this.hits=a.results.map(_=>I(M({},_),{excluded:c.has(_.id)})),this.hitsLoading=!1,this.cdr.markForCheck()},error:()=>{e===this.hitReq&&(this.hits=[],this.hitsLoading=!1,this.cdr.markForCheck())}})}onExcludeKey(t){!this.hitsOpen||!this.hits.length||(t.key==="ArrowDown"?(t.preventDefault(),this.highlighted=(this.highlighted+1)%this.hits.length):t.key==="ArrowUp"?(t.preventDefault(),this.highlighted=(this.highlighted-1+this.hits.length)%this.hits.length):t.key==="Enter"&&this.highlighted>=0?(t.preventDefault(),this.toggleScopeHit(this.hits[this.highlighted])):t.key==="Enter"?(t.preventDefault(),this.addScopeProduct()):t.key==="Escape"&&(this.hitsOpen=!1))}pickHit(t){this.toggleScopeHit(t)}closeHits(){this.hitsOpen=!1}onEscape(){this.pendingRemove&&this.cancelPendingRemove()}onDocumentDown(t){if(!this.hitsOpen)return;let e=t.target,a=c=>!!c?.nativeElement.contains(e);!a(this.suggestBox)&&!a(this.suggestBoxModal)&&(this.hitsOpen=!1,this.cdr.markForCheck())}hitLabel(t){let e=(t||"").replace(/[&<>"]/g,_=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[_]),a=this.excludeCode.trim();if(!a)return e;let c=e.toLowerCase().indexOf(a.toLowerCase());return c<0?e:e.slice(0,c)+"<b>"+e.slice(c,c+a.length)+"</b>"+e.slice(c+a.length)}addExclusion(){let t=this.excludeCode.trim();!t||this.excluding||(this.excluding=!0,this.cdr.markForCheck(),this.api.post("/admin/offers/exclusions/",{code:t,reason:""}).subscribe({next:e=>{this.exclusions=[...this.exclusions,e].sort((a,c)=>a.code.localeCompare(c.code)),this.excludeCode="",this.hits=[],this.hitsOpen=!1,this.excluding=!1,this.toast.success(`${e.code} excluded`,"It will not appear in any matrix built from now on"),this.loadMatrix(),this.cdr.markForCheck()},error:e=>{this.excluding=!1,this.toast.error(e?.error?.detail||"Could not add that code."),this.cdr.markForCheck()}}))}removeExclusion(t){this.api.delete(`/admin/offers/exclusions/${t.id}/`).subscribe({next:()=>{this.exclusions=this.exclusions.filter(e=>e.id!==t.id),this.toast.success(`${t.code} can be offered again`),this.loadMatrix(),this.cdr.markForCheck()},error:()=>this.toast.error("Could not remove that code.")})}decide(t,e){this.api.post(`/admin/offers/requests/${t.id}/decision/`,{decision:e}).subscribe({next:a=>{t.status=a.status,this.toast.success(`Request ${a.status}`),this.cdr.markForCheck()},error:a=>this.toast.error(a?.error?.detail||"Could not record that.")})}pendingRequests(){return this.requests.filter(t=>t.status==="pending").length}cellTone(t,e){return this.cellStat(t,e).products?this.cellOffer(t,e).discount_value?"set":"":"idle"}convTone(t){return t?.sent?t.applied?t.conversion>=this.healthy?"good":"bad":"":"idle"}conversionSummary(){if(!this.conversion)return null;let t=0,e=0,a=0,c=0;for(let _ of this.conversion.brackets)for(let h of this.conversion.modules){let V=_.cells[h.key];V&&(t+=V.sent,e+=V.applied,a+=V.converted,c+=V.dropped)}return{sent:t,applied:e,converted:a,dropped:c,conversion:e?Math.round(a/e*100):0}
1}convCell(t,e){return t.cells[e]||{sent:0,applied:0,converted:0,dropped:0,conversion:0}}convBarHeight(t){return t?.sent?t.applied?Math.max(t.conversion,8):6:2}moduleTint(t){return`var(--viz-${t%8+1})`}pctOf(t,e){return e?Math.max(t/e*100,t?1.5:0):0}funnelSteps(){let t=this.conversionSummary();return!t||!t.sent?[]:[{key:"sent",label:"Sent",value:t.sent,pct:t.sent/t.sent*100},{key:"applied",label:"Applied",value:t.applied,pct:t.applied/t.sent*100},{key:"converted",label:"Converted",value:t.converted,pct:t.converted/t.sent*100},{key:"dropped",label:"Dropped",value:t.dropped,pct:t.dropped/t.sent*100}]}moduleRollup(){return this.conversion?this.conversion.modules.map(t=>{let e=0,a=0,c=0,_=0;for(let h of this.conversion.brackets){let V=h.cells[t.key];V&&(e+=V.sent,a+=V.applied,c+=V.converted,_+=V.dropped)}return{key:t.key,label:t.label,sent:e,applied:a,converted:c,dropped:_,conversion:a?Math.round(c/a*100):0}}):[]}reportMaxSent(){return Math.max(...this.reportRows.map(t=>t.sent),1)}convMaxSent(){return Math.max(...this.moduleRollup().map(t=>t.sent),1)}donutR=54;donutC=2*Math.PI*54;reportConvertedFrac(){return this.brief?.applied?this.brief.converted/this.brief.applied:0}donutConvertedDash(){let e=Math.max(this.donutC*this.reportConvertedFrac()-2,0);return`${e} ${this.donutC-e}`}donutDroppedDash(){let e=Math.max(this.donutC*(1-this.reportConvertedFrac())-2,0);return`${e} ${this.donutC-e}`}donutDroppedOffset(){return-(this.donutC*this.reportConvertedFrac()+1)}inr(t){return t==null?"\u2014":"\u20B9"+Number(t).toLocaleString("en-IN")}lakh(t){return t==null?"\u2014":t>=1e5?"\u20B9"+(t/1e5).toFixed(1)+"L":t>=1e3?"\u20B9"+Math.round(t/1e3)+"K":this.inr(t)}offerText(t){return t.discount_value?t.discount_type==="percent"?`${t.discount_value}% off`:`${this.inr(t.discount_value)} off`:"\u2014"}minutes(t){return t==null?"\u2014":t<60?`${t}s`:`${Math.floor(t/60)}m ${t%60}s`}trackByRef=(t,e)=>e.ref;trackByKey=(t,e)=>e.key;trackByCustomer=(t,e)=>e.customer_id;trackByModule=(t,e)=>e.key;static \u0275fac=function(e){return new(e||i)(H(he),H(X),H(ve))};static \u0275cmp=K({type:i,selectors:[["app-offer-console"]],viewQuery:function(e,a){if(e&1&&U(Pe,5)(ye,5)(we,5),e&2){let c;W(c=A())&&(a.suggestBox=c.first),W(c=A())&&(a.suggestBoxModal=c.first),W(c=A())&&(a.offerNameInput=c.first)}},hostBindings:function(e,a){e&1&&u("keydown.escape",function(){return a.onEscape()},j)("mousedown",function(_){return a.onDocumentDown(_)},j)},decls:17,vars:14,consts:[["modIco",""],["noCount",""],["offerNameInput",""],["suggestBox",""],["noHitsBar",""],["qtyNa",""],["emptyCell",""],["noApplies",""],["decided",""],["notApplicable",""],["suggestBoxModal",""],["noHitsModal",""],[1,"adm-page","offer-console"],["class","loading-row",4,"ngIf"],["class","empty-state fatal",4,"ngIf"],[4,"ngIf"],["class","overlay",3,"click",4,"ngIf"],["class","overlay confirm-overlay",3,"click",4,"ngIf"],["aria-hidden","true",1,"th-ico-wrap",3,"ngSwitch"],["class","th-ico","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.7","stroke-linecap","round","stroke-linejoin","round",4,"ngSwitchCase"],["class","th-ico","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.7","stroke-linecap","round","stroke-linejoin","round",4,"ngSwitchDefault"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.7","stroke-linecap","round","stroke-linejoin","round",1,"th-ico"],["d","M6 6h15l-1.5 9h-12z"],["cx","9","cy","20","r","1.4"],["cx","18","cy","20","r","1.4"],["d","M6 6 5 3H3"],["d","M20.8 8.6a5 5 0 0 0-8.8-3.6A5 5 0 0 0 3.2 8.6c0 6 8.8 11 8.8 11s8.8-5 8.8-11z"],["cx","12","cy","12","r","9"],["d","m9 9 6 6M15 9l-6 6"],["d","M2 12s4-7 10-7 10 7 10 7-4 7-10 7S2 12 2 12z"],["cx","12","cy","12","r","3"],["x","4","y","4","width","16","height","16"],[1,"loading-row"],[1,"spinner"],[1,"empty-state","fatal"],["aria-hidden","true",1,"empty-ico"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.6","stroke-linecap","round","stroke-linejoin","round"],["d","M12 8v5"],["d","M12 16h.01"],[1,"flrheads"],[1,"page-header","flrhed"],[1,"title-block"],[1,"page-lede"],[1,"pmenu-row"],[1,"pmenu"],[3,"sel","click",4,"ngFor","ngForOf"],["class","btn-ghost back-list","type","button",3,"click",4,"ngIf"],[3,"click"],["class","tab-ico","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.7","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",4,"ngIf"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.7","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"tab-ico"],["d","M8 6h13M8 12h13M8 18h13"],["d","M3 6h.01M3 12h.01M3 18h.01"],["d","M4 19V5"],["d","M4 19h16"],["d","m7 14 3-3 3 2 4-5"],["type","button",1,"btn-ghost","back-list",3,"click"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.8","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"btn-ico"],["d","M19 12H5"],["d","m12 19-7-7 7-7"],[1,"list-toolbar"],[1,"pnote"],["type","button",1,"btn-primary",3,"click"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","aria-hidden","true",1,"btn-ico"],["d","M12 5v14M5 12h14"],["class","empty-state",4,"ngIf"],["class","table-wrap",4,"ngIf"],[1,"empty-state"],["d","M14 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8z"],["d","M14 2v6h6"],["d","M8 13h8M8 17h5"],[1,"table-wrap"],[1,"data-table","rules-table"],[1,"num"],[3,"row-pending",4,"ngFor","ngForOf"],[1,"mod-count"],[1,"pill",3,"ngClass"],["type","button","class","count-link",3,"disabled","click",4,"ngIf","ngIfElse"],[1,"acts"],[1,"ibtn",3,"click"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.7","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"btn-ico"],["class","ibtn good",3,"disabled","click",4,"ngIf"],["class","ibtn",3,"click",4,"ngIf"],["x","8","y","8","width","12","height","12"],["d","M16 8V6a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h2"],["type","button",1,"count-link",3,"click","disabled"],[1,"ibtn","good",3,"click","disabled"],["d","M22 2 11 13"],["d","M22 2 15 22l-4-9-9-4z"],[1,"compose-bar"],[1,"fld","name"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.8","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"fld-ico"],["d","M20.6 13.1 12.9 20.8a2 2 0 0 1-2.8 0L3.2 14a2 2 0 0 1 0-2.8l7.7-7.7a2 2 0 0 1 1.4-.6H20v7.7a2 2 0 0 1-.6 1.4z"],["cx","16","cy","8","r","1.4"],["aria-hidden","true",1,"req"],["name","offerN
1ame","placeholder","Festive Cart Recovery","required","","aria-required","true","autocomplete","off",3,"input","blur","value"],["class","field-err",4,"ngIf"],[1,"fld"],["d","M21 16V8l-9-5-9 5v8l9 5z"],["d","M3.3 7 12 12l8.7-5"],["d","M12 22V12"],[1,"scope-select",3,"ngModelChange","ngModel"],[3,"ngValue",4,"ngFor","ngForOf"],["class","scope-picker",4,"ngIf"],[1,"toolbar-dates"],["type","date",3,"ngModelChange","change","ngModel"],[1,"fld","narrow",3,"title"],["type","number","min","1",3,"ngModelChange","change","ngModel"],["type","number","min","0","step","10",3,"ngModelChange","change","ngModel"],["class","compose-kpis",4,"ngIf"],["class","pnote scope-hint",4,"ngIf"],["class","ai-banner",4,"ngIf"],[1,"field-err"],[3,"ngValue"],[1,"scope-picker"],[1,"fld","ac"],["name","scopeCode","placeholder","AN3684-59L","autocomplete","off","spellcheck","false",3,"ngModelChange","input","keydown","ngModel"],["class","ac-spin",4,"ngIf"],["class","ac-panel",4,"ngIf"],["type","button",1,"scope-view",3,"click"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.7","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true"],[1,"ac-spin"],[1,"ac-panel"],[4,"ngIf","ngIfElse"],[3,"active","on","mouseenter","click",4,"ngFor","ngForOf"],[3,"mouseenter","click"],["aria-hidden","true",1,"h-check"],[1,"h-code",3,"innerHTML"],[1,"h-name",3,"innerHTML"],["class","ac-empty",4,"ngIf"],[1,"ac-empty"],[1,"compose-kpis"],[1,"kpi","kpi--ink","kpi--mini"],[1,"kpi-lbl"],[1,"kpi-val"],[1,"kpi","kpi--mini"],["class","kpi kpi--mini",4,"ngIf"],[1,"kpi-val","kpi-val--warn"],[1,"pnote","scope-hint"],[1,"ai-banner"],[1,"btn-ai",3,"click"],["x","3","y","3","width","7","height","7"],["x","14","y","3","width","7","height","7"],["x","3","y","14","width","7","height","7"],["x","14","y","14","width","7","height","7"],[1,"matrix-lede"],[1,"data-table","matrix"],[1,"col-range"],[1,"th-lab"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.7","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"th-ico"],["d","M4 6h16M4 12h10M4 18h13"],["cx","10","cy","6","r","1.7"],["cx","16","cy","12","r","1.7"],["cx","15","cy","18","r","1.7"],[3,"col-idle",4,"ngFor","ngForOf","ngForTrackBy"],[1,"col-total"],["title","Applies to everyone in the range you have not edited by hand",1,"col-value"],["cx","8","cy","8","r","2.2"],["cx","16","cy","16","r","2.2"],["d","m7 17 10-10"],[1,"head-seg"],["title","Percentage off",3,"click"],["title","Flat rupee amount",3,"click"],["title","Whether one code can be spent more than once",1,"col-reuse"],["d","M17 2.1 21 6l-4 3.9"],["d","M3 12V9a3 3 0 0 1 3-3h15"],["d","M7 21.9 3 18l4-3.9"],["d","M21 12v3a3 3 0 0 1-3 3H3"],["title","Flat discounts only \u2014 a % already scales with the basket",1,"col-qty"],["d","M3 6h18"],["d","M3 12h18"],["d","M3 18h18"],[1,"col-acts"],[3,"row-armed",4,"ngFor","ngForOf","ngForTrackBy"],[1,"tot-value"],[1,"people"],["colspan","4"],[1,"grid-notes"],["type","button",1,"btn-ghost",3,"click"],["class","warn",4,"ngIf"],["class","warn",4,"ngFor","ngForOf","ngForTrackBy"],[1,"compose-schedule"],[1,"schedule-form"],[1,"reminders"],["class","rem",3,"locked","on",4,"ngFor","ngForOf"],["type","button",1,"btn-add-rem",3,"click"],[1,"sendbar"],[1,"ready"],[1,"send-actions"],["type","button",1,"btn-primary",3,"click","disabled"],["class","btn-ico","viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",4,"ngIf"],[4,"ngTemplateOutlet","ngTemplateOutletContext"],[1,"th-stat"],[1,"range-card"],[1,"range-label",3,"ngModelChange","change","ngModel"],[1,"range-bounds"],["type","number",3,"ngModelChange","change","ngModel"],["type","number","placeholder","\u221E",3,"ngModelChange","change","ngModel"],["class","cell",3,"col-idle",4,"ngFor","ngForOf","ngForTrackBy"],[1,"col-value"],[1,"value-input"],[3,"input","value","placeholder"],[1,"unit"],[1,"col-reuse"],[3,"change","value"],["value","one-time"],["value","multi"],[1,"col-qty"],["type","button","title","Remove range",1,"ibtn","danger",3,"click","disabled"],[1,"cell"],["class","cell-btn",3,"ngClass","title","click",4,"ngIf","ngIfElse"],["class","sugg",3,"title",4,"ngIf"],["class","applied",4,"ngIf"],[1,"cell-btn",3,"click","ngClass","title"],[1,"c-value"],[1,"c-count"],["class","c-ex",4,"ngIf"],[1,"c-open"],[1,"c-ex"],[1,"cell-empty"],[1,"sugg",3,"title"],[1,"s-val"],["class","s-conv",4,"ngIf"],["class","s-conv heur",4,"ngIf"],[1,"s-conv"],[1,"s-conv","heur"],[1,"applied"],["value","fixed"],["value","scale"],["type","number","min","1","max","99","class","qty-cap","title","Largest quantity the discount keeps scaling to",3,"value","input",4,"ngIf"],["type","number","min","1","max","99","title","Largest quantity the discount keeps scaling to",1,"qty-cap",3,"input","value"],[1,"na-text"],["class","foot-mod",4,"ngIf"],[1,"foot-mod"],[1,"warn"],[1,"rem"],["type","checkbox",3,"change","checked","disabled"],[1,"rem-label"],["class","ibtn danger","type","button","title","Remove this reminder",3,"click",4,"ngIf"],["type","button","title","Remove this reminder",1,"ibtn","danger",3,"click"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","2","stroke-linecap","round","stroke-linejoin","round","aria-hidden","true",1,"btn-ico"],["d","M20 6 9 17l-5-5"],[1,"report-head"],["name","convCampaign",3,"ngModelChange","change","ngModel"],["role","group","aria-label","Report view",1,"view-toggle"],["type","button",3,"click"],["class","kpi-strip",4,"ngIf"],[1,"kpi-strip"],[1,"kpi","kpi--ink"],[1,"kpi-sub"],[1,"kpi"],[1,"kpi","kpi--good"],["class","kpi kpi--bad",4,"ngIf"],[1,"kpi","kpi--bad"],["class","charts",4,"ngIf"],[1,"charts"],["class","chart-panel",4,"ngIf"],[1,"chart-panel"],[1,"chart-hd"],[1,"chart-legend"],[4,"ngFor","ngForOf","ngForTrackBy"],[1,"vchart"],["aria-hidden","true",1,"vchart-y"],[1,"vchart-plot"],["aria-hidden","true",1,"vchart-grid"],[1,"vchart-cols"],["class","vchart-col",4,"ngFor","ngForOf","ngForTrackBy"],[1,"sw","sw-sent"],[1,"sw","sw-applied"],[1,"sw","sw-converted"],["class","hchart",4,"ngFor","ngForOf"],[1,"funnel"],["class","funnel-row",4,"ngFor","ngForOf"],[1,"funnel-row"],[1,"funnel-lbl"],[1,"funnel-track"],[1,"funnel-val"],[1,"sw"],[1,"vchart-col"],[1,"vchart-cluster"],["type","button","class","vbar",3,"ngClass","height","background","disabled","title","click",4,"ngFor","ngForOf","ngForTrackBy"],[1,"vchart-lbl"],["type","button",1,"vbar",3,"click","ngClass","disabled","title"],["class","vbar-val",4,"ngIf"],[1,"vbar-val"],[1,"hchart"],[1,"hchart-meta"],[1,"pct"],[1,"hchart-bars"],[1,"hbar-track"],[1,"sent"],[1,"converted"],[1,"hchart-nums"],[1,"data-table","conv"],[1,"conv-btn",3,"click","ngClass","disabled"],[1,"cv-top"],[1,"cv-won"],[1,"cv-pct"],[1,"cv-sub"],["class","brief",4,"ngIf"],[1,"brief"],[1,"brief-eyebrow"],[1,"chart-cols"],[1,"chart-panel","grow"],["class","donut-wrap",4,"ngIf","ngIfElse"],[1,"donut-wrap"],["viewBox","0 0 160 160","role","img",1,"donut"],["cx","8
10","cy","80",1,"seg","seg-track"],["cx","80","cy","80",1,"seg","seg-dropped"],["cx","80","cy","80","stroke-dashoffset","0",1,"seg","seg-converted"],["x","80","y","76",1,"donut-big"],["x","80","y","94",1,"donut-small"],[1,"donut-legend"],[1,"leg-row"],[1,"swatch","sw-converted"],[1,"swatch","sw-dropped"],[1,"leg-row","muted"],[1,"chart-empty"],["class","hchart-note",4,"ngIf"],[1,"hchart-note"],[1,"data-table"],[4,"ngFor","ngForOf"],[1,"pct-cell"],["class","pct-bar",3,"good","bad",4,"ngIf"],[1,"action"],[1,"pct-bar"],["d","M4 4h16v12H7l-3 3z"],[1,"ibtn","good",3,"click"],[1,"ibtn","danger",3,"click"],[1,"muted"],[1,"overlay",3,"click"],[1,"panel",3,"click"],[1,"eyebrow"],[1,"sub"],["class","panel-body",4,"ngIf"],[1,"btn-primary",3,"click"],[1,"panel-body"],["class","no-data",4,"ngIf"],["class","cgroup",4,"ngFor","ngForOf","ngForTrackBy"],[1,"no-data"],[1,"cgroup"],[1,"cgroup-head"],[1,"cg-tick"],["type","checkbox","title","Include or drop every product for this customer",3,"change","checked"],[1,"cg-who"],[1,"cg-meta"],[1,"data-table","drill"],[1,"w-tick"],["class","num",4,"ngIf"],[3,"off",4,"ngFor","ngForOf","ngForTrackBy"],["type","checkbox",3,"change","checked"],["class","edited","title","Edited individually \u2014 bulk applies skip this row",4,"ngIf"],["class","pcode",4,"ngIf"],["placeholder","0",1,"mini",3,"input","value","disabled"],[3,"change","value","disabled"],["value","percent"],["value","flat"],["class","ibtn","title","Drop this row's own values and inherit the range again",3,"click",4,"ngIf"],["title","Edited individually \u2014 bulk applies skip this row",1,"edited"],[1,"pcode"],["class","mini","type","number","min","1",3,"value","disabled","input",4,"ngIf"],["type","number","min","1",1,"mini",3,"input","value","disabled"],["title","Drop this row's own values and inherit the range again",1,"ibtn",3,"click"],[1,"btn-ghost",3,"click"],["class","data-table drill excluded",4,"ngIf"],[1,"data-table","drill","excluded"],[1,"reason"],[1,"modal","wide","scope-modal",3,"click"],[1,"fld","ac","scope-modal-search"],["name","scopeModalCode","placeholder","AN3684-59L","autocomplete","off","spellcheck","false",3,"ngModelChange","input","keydown","ngModel"],["class","empty-state compact",4,"ngIf"],["class","table-wrap scope-list-wrap",4,"ngIf"],[1,"empty-state","compact"],[1,"table-wrap","scope-list-wrap"],[1,"data-table","compact"],["type","button",1,"ibtn","danger",3,"click"],[1,"modal","wide","rule-modal",3,"click"],["class","fgroup",4,"ngIf"],["class","ibtn good",3,"click",4,"ngIf"],[1,"fgroup"],[1,"preview-list"],["class","pv-row",4,"ngFor","ngForOf"],[1,"pv-row"],[1,"modal","wide",3,"click"],["class","muted",4,"ngIf"],[1,"preview-list","tall"],["class","pv-row stack",4,"ngFor","ngForOf"],[1,"pv-row","stack"],[1,"pv-items"],[1,"modal",3,"click"],[1,"dup-window"],["type","date",3,"ngModelChange","ngModel"],[1,"btn-primary",3,"click","disabled"],["class","removals",4,"ngIf"],[1,"removals"],[1,"rem-head"],["class","rem-row",4,"ngFor","ngForOf"],[1,"rem-row"],["class","rem",3,"locked",4,"ngFor","ngForOf"],[1,"muted","small"],["type","checkbox",3,"ngModelChange","ngModel","disabled"],["class","rem-label",4,"ngIf"],["class","pill on",4,"ngIf"],["type","number","min","1",1,"mini",3,"ngModelChange","ngModel"],[1,"pill","on"],["class","mailwarn",4,"ngIf"],[1,"mailwarn"],[1,"chips"],[1,"stat"],[1,"stat","good"],[1,"stat","bad"],["class","data-table drill",4,"ngIf"],[1,"overlay","confirm-overlay",3,"click"],["role","alertdialog","aria-modal","true",1,"modal","confirm-alert",3,"click"],["aria-hidden","true",1,"confirm-ico"],["viewBox","0 0 24 24","fill","none","stroke","currentColor","stroke-width","1.7","stroke-linecap","round","stroke-linejoin","round"],["id","rm-title"],["id","rm-detail",1,"muted"]],template:function(e,a){e&1&&(n(0,"div",12),m(1,Re,6,5,"ng-template",null,0,L)(3,Fe,2,0,"div",13)(4,ze,10,1,"div",14)(5,Rn,17,7,"ng-container",15)(6,Xn,19,9,"div",16)(7,lo,20,8,"div",16)(8,uo,32,18,"div",16)(9,Oo,14,6,"div",16)(10,Mo,26,5,"div",16)(11,ko,13,2,"div",16)(12,Fo,22,17,"div",16)(13,$o,19,6,"div",16)(14,Wo,16,12,"div",16)(15,Jo,4,2,"div",16)(16,Xo,16,4,"div",17),o()),e&2&&(r(3),d("ngIf",a.loading),r(),d("ngIf",!a.loading&&a.error),r(),d("ngIf",!a.loading&&!a.error),r(),d("ngIf",a.openCell),r(),d("ngIf",a.scopeOpen),r(),d("ngIf",a.openRule),r(),d("ngIf",a.recipients),r(),d("ngIf",a.duplicating),r(),d("ngIf",a.flow==="blocked"&&a.preview),r(),d("ngIf",a.flow==="confirm"&&a.preview),r(),d("ngIf",a.flow==="schedule"&&a.preview),r(),d("ngIf",a.flow==="sent"&&a.sentSummary),r(),d("ngIf",a.openConversionCell),r(),d("ngIf",a.pendingRemove))},dependencies:[le,Z,ee,te,re,ne,oe,ie,xe,fe,ue,de,pe,se,ge,_e,Ce,me,ce,ae],styles:[`@charset "UTF-8";.page-header[_ngcontent-%COMP%], .flrhed[_ngcontent-%COMP%]{display:flex;align-items:center;margin-bottom:1.5rem}.page-header[_ngcontent-%COMP%]   h1[_ngcontent-%COMP%], .page-header[_ngcontent-%COMP%]   h2[_ngcontent-%COMP%], .flrhed[_ngcontent-%COMP%]   h1[_ngcontent-%COMP%], .flrhed[_ngcontent-%COMP%]   h2[_ngcontent-%COMP%]{font-size:1.4em;font-weight:900;color:#211f20;text-transform:uppercase;font-family:Roboto,sans-serif;padding-right:58px;position:relative;margin:0}.page-header[_ngcontent-%COMP%]   h1[_ngcontent-%COMP%]:after, .page-header[_ngcontent-%COMP%]   h2[_ngcontent-%COMP%]:after, .flrhed[_ngcontent-%COMP%]   h1[_ngcontent-%COMP%]:after, .flrhed[_ngcontent-%COMP%]   h2[_ngcontent-%COMP%]:after{content:"";position:absolute;right:12px;top:14px;width:41px;height:1px;background-color:#000}.page-header[_ngcontent-%COMP%]   .badge[_ngcontent-%COMP%], .flrhed[_ngcontent-%COMP%]   .badge[_ngcontent-%COMP%]{display:none}.btn-add[_ngcontent-%COMP%], .btn-primary[_ngcontent-%COMP%], .addbtn-link[_ngcontent-%COMP%]{margin-left:auto;background:#000;color:#fff;border:none;padding:.45rem 1.25rem;cursor:pointer;font-size:.82rem;font-weight:600;text-decoration:none;letter-spacing:.03em;text-transform:uppercase;display:inline-flex;align-items:center;gap:.4rem}.btn-add[_ngcontent-%COMP%]:hover, .btn-primary[_ngcontent-%COMP%]:hover, .addbtn-link[_ngcontent-%COMP%]:hover{background:#333}.btn-add[_ngcontent-%COMP%]   .plus[_ngcontent-%COMP%], .btn-primary[_ngcontent-%COMP%]   .plus[_ngcontent-%COMP%], .addbtn-link[_ngcontent-%COMP%]   .plus[_ngcontent-%COMP%]{font-size:1rem;line-height:1}.btn-export[_ngcontent-%COMP%]{background:#fff;border:1px solid #ccc;color:#555;padding:.45rem 1rem;text-decoration:none;font-size:.82rem;margin-left:auto}.btn-export[_ngcontent-%COMP%]:hover{border-color:#999}.btn-view[_ngcontent-%COMP%]{background:#f0f0f0;border:1px solid #ddd;padding:.25rem .65rem;text-decoration:none;color:#333;font-size:.78rem;cursor:pointer}.btn-view[_ngcontent-%COMP%]:hover{background:#e0e0e0}
1.btn-search[_ngcontent-%COMP%]{background:#000;color:#fff;border:none;padding:.45rem 1rem;cursor:pointer;font-size:.82rem}.btn-reset[_ngcontent-%COMP%]{background:none;border:none;color:#555;cursor:pointer;font-size:.78rem;padding:.4rem .5rem;white-space:nowrap}.btn-reset[_ngcontent-%COMP%]:hover{color:#000}.btn-danger[_ngcontent-%COMP%]{background:#dc3545;color:#fff;border:none;padding:.25rem .65rem;cursor:pointer;font-size:.78rem}.btn-danger[_ngcontent-%COMP%]:hover{background:#b02a37}.btn-deactivate[_ngcontent-%COMP%]{background:#3c9b3c;color:#fff;border:none;padding:.3rem .85rem;cursor:pointer;font-size:.75rem;font-weight:600}.btn-deactivate[_ngcontent-%COMP%]:hover{background:#2e7d2e}.btn-activate[_ngcontent-%COMP%]{background:#c9a227;color:#fff;border:none;padding:.3rem .85rem;cursor:pointer;font-size:.75rem;font-weight:600}.btn-activate[_ngcontent-%COMP%]:hover{background:#a8881f}.fltr7[_ngcontent-%COMP%]{display:flex;align-items:flex-start;flex-wrap:wrap;gap:4px 2px;padding:16px 0 22px;position:relative;z-index:30}.fltr-srt[_ngcontent-%COMP%]{padding:4px 10px 0 0;font-weight:400;line-height:1.2em;color:#000;font-size:.7rem;text-transform:capitalize;white-space:nowrap;align-self:flex-start}.fltr-spacer[_ngcontent-%COMP%]{flex:1}.resetall[_ngcontent-%COMP%]{align-self:flex-start;padding-top:0}.resetall[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{font-size:.85rem;text-transform:capitalize;cursor:pointer;color:#000;background-image:url(/img/reload.png);background-repeat:no-repeat;background-size:16px auto;background-position:100% 2px;padding:1px 24px 4px 0;display:inline-block}.resetall[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]:hover{opacity:.7}.search7[_ngcontent-%COMP%]{position:relative;align-self:flex-start;margin-left:14px}.search7[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{width:210px;border:0;border-bottom:1px solid #000;background:transparent;background-image:url(/img/search.png);background-repeat:no-repeat;background-size:20px auto;background-position:0 1px;padding:0 0 9px 29px;font-size:.82rem;outline:none}.search7[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]::placeholder{color:#888}.filters-bar[_ngcontent-%COMP%]{display:flex;gap:.75rem;flex-wrap:wrap;margin-bottom:.75rem;align-items:center}.filters-right[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;align-items:center;gap:.6rem;flex-wrap:wrap;margin-bottom:.75rem}.sort-label[_ngcontent-%COMP%]{font-size:.78rem;color:#555;font-weight:500}.filter-input[_ngcontent-%COMP%]{border:1px solid #ddd;padding:.4rem .75rem;font-size:.82rem;outline:none}.filter-input[_ngcontent-%COMP%]:focus{border-color:#999}.filter-input.wide[_ngcontent-%COMP%]{flex:1;
1min-width:200px}.filter-sort[_ngcontent-%COMP%]{border:none;border-bottom:1px solid transparent;padding:.3rem .4rem;font-size:.8rem;font-weight:600;background:#fff;cursor:pointer;outline:none;color:#000;text-transform:capitalize}.filter-sort[_ngcontent-%COMP%]:hover{border-bottom-color:#000}.sortbar[_ngcontent-%COMP%]{gap:1.1rem}.filter-select[_ngcontent-%COMP%]{border:1px solid #ddd;padding:.4rem .5rem;font-size:.82rem;background:#fff;outline:none}.filter-date[_ngcontent-%COMP%]{border:1px solid #ddd;padding:.4rem;font-size:.82rem;outline:none}.search-wrap[_ngcontent-%COMP%]{display:flex;align-items:center;border:1px solid #ddd}.search-wrap[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{border:none;padding:.4rem .75rem;font-size:.82rem;outline:none;min-width:180px}.search-wrap[_ngcontent-%COMP%]   .search-icon-btn[_ngcontent-%COMP%]{background:none;border:none;padding:.4rem .6rem;cursor:pointer;color:#666;font-size:.9rem}.search-wrap[_ngcontent-%COMP%]   .search-icon-btn[_ngcontent-%COMP%]:hover{color:#000}.results-row[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem;flex-wrap:wrap;gap:.5rem}.results-row.bottom[_ngcontent-%COMP%]{margin-top:1rem;margin-bottom:0}.results-info[_ngcontent-%COMP%]{font-size:.8rem;color:#555}.table-wrap[_ngcontent-%COMP%]{background:#fff;overflow-x:auto;margin-bottom:1rem}.data-table[_ngcontent-%COMP%]{width:100%;border-collapse:collapse;font-size:.9em}.data-table[_ngcontent-%COMP%]   thead[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]{background:#000;color:#fff}.data-table[_ngcontent-%COMP%]   th[_ngcontent-%COMP%]{background:#000;color:#fff;text-align:left;height:47px;padding:0 1rem;font-size:.9em;font-weight:400;text-transform:uppercase;border:1px solid #adadad}.data-table[_ngcontent-%COMP%]   th[_ngcontent-%COMP%]:first-child{border-left:0}.data-table[_ngcontent-%COMP%]   th[_ngcontent-%COMP%]:last-child{border-right:0}.data-table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{padding:1rem;border-left:1px solid #adadad;border-right:1px solid #adadad;vertical-align:middle;text-align:left;font-size:.9em;font-weight:400;color:#000}.data-table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{color:#888;display:block;font-size:.85em}.data-table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]   code[_ngcontent-%COMP%]{font-size:.85em;background:#f5f5f5;padding:.1rem .3rem}.data-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]{background:#fff}.data-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:nth-child(2n){background:#f4f4f4}.data-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:last-child{border-bottom:1px solid #adadad}.loading-row[_ngcontent-%COMP%]{display:flex;justify-content:center;padding:3rem;background:#fff}.spinner[_ngcontent-%COMP%]{width:30px;height:30px;border:3px solid #eee;border-top-color:#000;border-radius:50%;animation:_ngcontent-%COMP%_spin .8s linear infinite}@keyframes _ngcontent-%COMP%_spin{to{transform:rotate(360deg)}}.pagination[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.35rem;justify-content:flex-end;margin-top:1rem;flex-wrap:wrap}.pagination[_ngcontent-%COMP%]   .page-btn[_ngcontent-%COMP%]{width:34px;height:34px;border-radius:50%;border:1.5px solid #222;background:#fff;color:#222;font-size:.75rem;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s;line-height:1;padding:0}.pagination[_ngcontent-%COMP%]   .page-btn[_ngcontent-%COMP%]:hover:not(:disabled):not(.ellipsis){background:#222;color:#fff}.pagination[_ngcontent-%COMP%]   .page-btn.current[_ngcontent-%COMP%]{background:#000;color:#fff;border-color:#000}.pagination[_ngcontent-%COMP%]   .page-btn[_ngcontent-%COMP%]:disabled{opacity:.35;cursor:not-allowed}.pagination[_ngcontent-%COMP%]   .page-btn.ellipsis[_ngcontent-%COMP%]{border:none;background:none;cursor:default;color:#555;font-weight:400}.pagination[_ngcontent-%COMP%]   .page-btn.arrow[_ngcontent-%COMP%]{font-size:.85rem}.offer-console[_ngcontent-%COMP%]{--r-sm: 0px;--r: 0px;--r-full: 0px}.offer-console[_ngcontent-%COMP%]   .btn-primary[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .btn-add[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .btn-ghost[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .ibtn[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .scope-view[_ngcontent-%COMP%]{border-radius:0}.offer-console[_ngcontent-%COMP%]   .btn-ico[_ngcontent-%COMP%]{width:13px;height:13px;flex-shrink:0}.offer-console[_ngcontent-%COMP%]   input[type=checkbox][_ngcontent-%COMP%]{appearance:none;-webkit-appearance:none;width:14px;
1height:14px;flex-shrink:0;margin:0;vertical-align:middle;border:1.5px solid var(--border-strong);border-radius:0;background:#fff;cursor:pointer}.offer-console[_ngcontent-%COMP%]   input[type=checkbox][_ngcontent-%COMP%]:checked{background:#1a1a1a;border-color:#1a1a1a;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><path fill='none' stroke='white' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round' d='M2.5 6.2 5 8.7 9.5 3.5'/></svg>");background-size:10px 10px;background-position:center;background-repeat:no-repeat}.offer-console[_ngcontent-%COMP%]   input[type=checkbox][_ngcontent-%COMP%]:disabled{cursor:default;opacity:.55}.offer-console[_ngcontent-%COMP%]   .flrheads[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem 1.25rem;flex-wrap:wrap;margin-bottom:.2rem}.offer-console[_ngcontent-%COMP%]   .flrheads[_ngcontent-%COMP%]   .page-header[_ngcontent-%COMP%]{margin-bottom:0}.offer-console[_ngcontent-%COMP%]   .title-block[_ngcontent-%COMP%]{display:flex;flex-direction:column}.offer-console[_ngcontent-%COMP%]   .page-lede[_ngcontent-%COMP%]{margin:.4rem 0 0;max-width:62ch;font-size:.82rem;line-height:1.5;color:#8a8a8a;text-transform:none;font-weight:400;letter-spacing:0}.offer-console[_ngcontent-%COMP%]   .fld[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.2rem}.offer-console[_ngcontent-%COMP%]   .fld[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{font-size:.64rem;letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);font-weight:700;display:inline-flex;align-items:center;gap:.35rem}.offer-console[_ngcontent-%COMP%]   .fld[_ngcontent-%COMP%]   .fld-ico[_ngcontent-%COMP%]{width:12px;height:12px;flex-shrink:0;opacity:.7}.offer-console[_ngcontent-%COMP%]   .fld[_ngcontent-%COMP%]   .req[_ngcontent-%COMP%]{color:#c0392b;font-style:normal;font-weight:800;margin-left:.15rem}.offer-console[_ngcontent-%COMP%]   .fld[_ngcontent-%COMP%]   input[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .fld[_ngcontent-%COMP%]   select[_ngcontent-%COMP%]{height:var(--control-h-sm);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:0 .5rem;font-size:.82rem;background:var(--input-bg);color:var(--text)}.offer-console[_ngcontent-%COMP%]   .fld[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]:focus, .offer-console[_ngcontent-%COMP%]   .fld[_ngcontent-%COMP%]   select[_ngcontent-%COMP%]:focus{outline:none;border-color:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .fld[_ngcontent-%COMP%]   select[_ngcontent-%COMP%]{min-width:180px}.offer-console[_ngcontent-%COMP%]   .fld.narrow[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{width:88px}.offer-console[_ngcontent-%COMP%]   .pmenu-row[_ngcontent-%COMP%]{display:flex;align-items:flex-end;justify-content:space-between;gap:1rem;margin:.7rem 0 .85rem;border-bottom:1px solid #f8f8f8}.offer-console[_ngcontent-%COMP%]   .pmenu[_ngcontent-%COMP%]{display:flex;gap:0;flex-wrap:wrap;margin:0;border-bottom:0;flex:1;min-width:0}.offer-console[_ngcontent-%COMP%]   .pmenu[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]{position:relative;top:1px;display:inline-flex;align-items:center;gap:.4rem;padding:.75rem 1.2rem;font-size:.82rem;font-weight:700;color:#8a8a8a;cursor:pointer;border-bottom:2px solid transparent}.offer-console[_ngcontent-%COMP%]   .pmenu[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]:hover{color:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .pmenu[_ngcontent-%COMP%]   a.sel[_ngcontent-%COMP%]{color:#1a1a1a;border-bottom-color:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .pmenu[_ngcontent-%COMP%]   a[_ngcontent-%COMP%]   .tab-ico[_ngcontent-%COMP%]{width:15px;height:15px;flex-shrink:0}.offer-console[_ngcontent-%COMP%]   .pmenu-row[_ngcontent-%COMP%]   .back-list[_ngcontent-%COMP%]{flex-shrink:0;white-space:nowrap;margin:0 .15rem .55rem 0}.offer-console[_ngcontent-%COMP%]   .pnote[_ngcontent-%COMP%]{font-size:.78rem;color:var(--text-2);line-height:1.6;margin:0 0 .9rem;max-width:78ch}.offer-console[_ngcontent-%COMP%]   .muted[_ngcontent-%COMP%]{color:var(--text-2);font-size:.78rem;text-transform:capitalize}.offer-console[_ngcontent-%COMP%]   .muted.small[_ngcontent-%COMP%]{font-size:.72rem}.offer-console[_ngcontent-%COMP%]   .report-head[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.9rem}.offer-console[_ngcontent-%COMP%]   .report-head[_ngcontent-%COMP%]   .pnote[_ngcontent-%COMP%]{margin:0;flex:1;min-width:240px}.offer-console[_ngcontent-%COMP%]   .view-toggle[_ngcontent-%COMP%]{display:flex;flex-shrink:0;border:1px solid #1a1a1a;border-radius:var(--r-sm);overflow:hidden}.offer-console[_ngcontent-%COMP%]   .view-toggle[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]{border:0;background:#fff;
1color:#1a1a1a;cursor:pointer;padding:.4rem .9rem;font-size:.76rem;font-weight:700}.offer-console[_ngcontent-%COMP%]   .view-toggle[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]:hover{background:#f7f7f4}.offer-console[_ngcontent-%COMP%]   .view-toggle[_ngcontent-%COMP%]   button.on[_ngcontent-%COMP%]{background:#1a1a1a;color:#fff}.offer-console[_ngcontent-%COMP%]   .toolbar-dates[_ngcontent-%COMP%]{display:flex;gap:.45rem;flex-wrap:wrap;align-items:flex-end;flex-shrink:0}.offer-console[_ngcontent-%COMP%]   .toolbar-dates[_ngcontent-%COMP%]   .fld[_ngcontent-%COMP%]   input[type=date][_ngcontent-%COMP%]{width:128px}.offer-console[_ngcontent-%COMP%]   .compose-kpis[_ngcontent-%COMP%]{display:flex;align-items:stretch;gap:.45rem;flex-wrap:wrap}.offer-console[_ngcontent-%COMP%]   .compose-kpis[_ngcontent-%COMP%]   .kpi--mini[_ngcontent-%COMP%]{height:var(--control-h-sm);justify-content:center}.offer-console[_ngcontent-%COMP%]   .list-toolbar[_ngcontent-%COMP%]{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:.9rem}.offer-console[_ngcontent-%COMP%]   .list-toolbar[_ngcontent-%COMP%]   .pnote[_ngcontent-%COMP%]{margin:0;flex:1}.offer-console[_ngcontent-%COMP%]   .compose-bar[_ngcontent-%COMP%]{display:flex;align-items:flex-end;gap:.5rem;flex-wrap:wrap;margin:0 0 .55rem;overflow:visible}.offer-console[_ngcontent-%COMP%]   .compose-bar[_ngcontent-%COMP%]   .fld.name[_ngcontent-%COMP%]{flex:0 1 180px;max-width:200px;min-width:140px}.offer-console[_ngcontent-%COMP%]   .compose-bar[_ngcontent-%COMP%]   .fld.name[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{width:100%;min-width:0}.offer-console[_ngcontent-%COMP%]   .compose-bar[_ngcontent-%COMP%]   .fld.name.bad[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{border-color:#c0392b}.offer-console[_ngcontent-%COMP%]   .compose-bar[_ngcontent-%COMP%]   .fld.name[_ngcontent-%COMP%]   .field-err[_ngcontent-%COMP%]{font-size:.72rem;font-weight:700;letter-spacing:0;text-transform:none;color:#c0392b}.offer-console[_ngcontent-%COMP%]   .compose-bar[_ngcontent-%COMP%]   .fld[_ngcontent-%COMP%]   select[_ngcontent-%COMP%]{min-width:132px}.offer-console[_ngcontent-%COMP%]   .scope-hint[_ngcontent-%COMP%]{margin:0 0 .75rem;font-size:.74rem}.offer-console[_ngcontent-%COMP%]   .scope-picker[_ngcontent-%COMP%]{display:flex;align-items:flex-end;gap:.35rem;flex:0 0 200px;min-width:0;width:200px}.offer-console[_ngcontent-%COMP%]   .scope-picker[_ngcontent-%COMP%]   .fld.ac[_ngcontent-%COMP%]{position:relative;flex:1;display:flex;flex-direction:column;gap:.2rem;min-width:0}.offer-console[_ngcontent-%COMP%]   .scope-picker[_ngcontent-%COMP%]   .fld.ac[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{width:100%;min-width:0;height:var(--control-h-sm);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:0 .5rem;font-size:.82rem;background:var(--input-bg);color:var(--text)}.offer-console[_ngcontent-%COMP%]   .scope-picker[_ngcontent-%COMP%]   .fld.ac[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]{min-width:280px;right:auto}.offer-console[_ngcontent-%COMP%]   .scope-view[_ngcontent-%COMP%]{position:relative;flex-shrink:0;width:34px;height:var(--control-h-sm);border:1px solid var(--border-strong);border-radius:var(--r-sm);background:#fff;color:#1a1a1a;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}.offer-console[_ngcontent-%COMP%]   .scope-view[_ngcontent-%COMP%]:hover{border-color:#1a1a1a;background:#f7f7f4}.offer-console[_ngcontent-%COMP%]   .scope-view[_ngcontent-%COMP%]   svg[_ngcontent-%COMP%]{width:16px;height:16px}.offer-console[_ngcontent-%COMP%]   .scope-view[_ngcontent-%COMP%]   em[_ngcontent-%COMP%]{position:absolute;top:-6px;right:-6px;min-width:16px;height:16px;padding:0 4px;border-radius:0;background:#1a1a1a;color:#fff;font-style:normal;font-size:.62rem;font-weight:800;line-height:16px;text-align:center}.offer-console[_ngcontent-%COMP%]   .scope-modal-search[_ngcontent-%COMP%]{position:relative;margin:.65rem 0 .85rem;display:flex;flex-direction:column;gap:.2rem}.offer-console[_ngcontent-%COMP%]   .scope-modal-search[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]:first-child{font-size:.64rem;letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);font-weight:700}.offer-console[_ngcontent-%COMP%]   .scope-modal-search[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{height:var(--control-h-sm);width:100%;border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:0 .5rem;font-size:.82rem;background:var(--input-bg);color:var(--text)}.offer-console[_ngcontent-%COMP%]   .scope-modal-search[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]{z-index:80}.offer-console[_ngcontent-%COMP%]   .kpi-strip[_ngcontent-%COMP%]{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-bottom:1rem}.offer-console[_ngcontent-%COMP%]   .kpi[_ngcontent-%COMP%]{position:relative;overflow:hidden;background:#fff;border:1px solid #f8f8f8;border-radius:0;box-shadow:0 1px 2px #0000000a,0 1px 12px #00000008;padding:14px 16px;display:flex;flex-direction:column;gap:2px}.offer-console[_ngcontent-%COMP%]   .kpi[_ngcontent-%COMP%]:before{content:"";position:absolute;
1left:0;top:0;bottom:0;width:3px;background:#f8f8f8}.offer-console[_ngcontent-%COMP%]   .kpi[_ngcontent-%COMP%]   .kpi-lbl[_ngcontent-%COMP%]{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:#8a8a8a;font-weight:700}.offer-console[_ngcontent-%COMP%]   .kpi[_ngcontent-%COMP%]   .kpi-val[_ngcontent-%COMP%]{font-size:1.35rem;font-weight:800;color:#1a1a1a;line-height:1.2;font-variant-numeric:tabular-nums}.offer-console[_ngcontent-%COMP%]   .kpi[_ngcontent-%COMP%]   .kpi-val--warn[_ngcontent-%COMP%]{color:var(--amber)}.offer-console[_ngcontent-%COMP%]   .kpi[_ngcontent-%COMP%]   .kpi-sub[_ngcontent-%COMP%]{font-size:11px;color:#a0a0a0}.offer-console[_ngcontent-%COMP%]   .kpi--ink[_ngcontent-%COMP%]{background:#1a1a1a;border-color:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .kpi--ink[_ngcontent-%COMP%]:before{background:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .kpi--ink[_ngcontent-%COMP%]   .kpi-lbl[_ngcontent-%COMP%]{color:#ffffff8c}.offer-console[_ngcontent-%COMP%]   .kpi--ink[_ngcontent-%COMP%]   .kpi-val[_ngcontent-%COMP%]{color:#fff}.offer-console[_ngcontent-%COMP%]   .kpi--ink[_ngcontent-%COMP%]   .kpi-sub[_ngcontent-%COMP%]{color:#ffffff73}.offer-console[_ngcontent-%COMP%]   .kpi--ready[_ngcontent-%COMP%]:before{background:var(--green)}.offer-console[_ngcontent-%COMP%]   .kpi--good[_ngcontent-%COMP%]:before{background:var(--green)}.offer-console[_ngcontent-%COMP%]   .kpi--bad[_ngcontent-%COMP%]:before{background:var(--red)}.offer-console[_ngcontent-%COMP%]   .kpi--mini[_ngcontent-%COMP%]{box-shadow:none;border-radius:0;padding:.28rem .65rem .32rem .7rem;min-width:76px;gap:0}.offer-console[_ngcontent-%COMP%]   .kpi--mini[_ngcontent-%COMP%]:before{width:2px}.offer-console[_ngcontent-%COMP%]   .kpi--mini[_ngcontent-%COMP%]   .kpi-lbl[_ngcontent-%COMP%]{font-size:9px;letter-spacing:.06em}.offer-console[_ngcontent-%COMP%]   .kpi--mini[_ngcontent-%COMP%]   .kpi-val[_ngcontent-%COMP%]{font-size:.95rem}.offer-console[_ngcontent-%COMP%]   .empty-state[_ngcontent-%COMP%]{text-align:center;padding:2.6rem 1.4rem;background:#fff;border:1px dashed #f8f8f8;border-radius:0;color:var(--text-2)}.offer-console[_ngcontent-%COMP%]   .empty-state[_ngcontent-%COMP%]   .empty-ico[_ngcontent-%COMP%]{display:inline-grid;place-items:center;width:48px;height:48px;border-radius:0;margin-bottom:.7rem;background:#f4f4f2;color:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .empty-state[_ngcontent-%COMP%]   .empty-ico[_ngcontent-%COMP%]   svg[_ngcontent-%COMP%]{width:24px;height:24px}.offer-console[_ngcontent-%COMP%]   .empty-state[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%]{font-size:.95rem;font-weight:800;color:#1a1a1a;margin:0 0 .3rem}.offer-console[_ngcontent-%COMP%]   .empty-state[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{margin:0 auto;max-width:46ch;font-size:.8rem;line-height:1.55}.offer-console[_ngcontent-%COMP%]   .empty-state.compact[_ngcontent-%COMP%]{padding:1.1rem .8rem;border:0;background:transparent}.offer-console[_ngcontent-%COMP%]   .empty-state.fatal[_ngcontent-%COMP%]{border-style:solid;border-color:#f2c9c4;background:var(--red-soft)}.offer-console[_ngcontent-%COMP%]   .empty-state.fatal[_ngcontent-%COMP%]   .empty-ico[_ngcontent-%COMP%]{background:#fff;color:var(--red)}.offer-console[_ngcontent-%COMP%]   .modbar[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;padding:.65rem .85rem;margin-bottom:.8rem;background:#fff;border:1px solid #f8f8f8;border-radius:0;box-shadow:0 1px 2px #0000000a,0 1px 12px #00000008}.offer-console[_ngcontent-%COMP%]   .modbar-label[_ngcontent-%COMP%]{font-size:.66rem;letter-spacing:.08em;text-transform:uppercase;font-weight:800;color:var(--text-3);margin-right:.35rem}.offer-console[_ngcontent-%COMP%]   .chip[_ngcontent-%COMP%]{border:1px solid var(--border-strong);background:var(--surface);color:var(--text-2);border-radius:var(--r-full);padding:.3rem .7rem;font-size:.76rem;font-weight:600;cursor:pointer}.offer-console[_ngcontent-%COMP%]   .chip[_ngcontent-%COMP%]:hover{border-color:var(--text-3)}.offer-console[_ngcontent-%COMP%]   .chip.on[_ngcontent-%COMP%]{background:#000;border-color:#000;color:#fff}.offer-console[_ngcontent-%COMP%]   .chip.static[_ngcontent-%COMP%]{cursor:default;background:var(--surface);color:var(--text-2)}.offer-console[_ngcontent-%COMP%]   .chip.static[_ngcontent-%COMP%]:hover{border-color:var(--border-strong)}.offer-console[_ngcontent-%COMP%]   .head-seg[_ngcontent-%COMP%]{display:inline-flex;margin-left:.5rem;vertical-align:middle;border-radius:var(--r-sm);overflow:hidden}.offer-console[_ngcontent-%COMP%]   .head-seg[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]{border:0;background:#2a2a2a;color:#cfcfcf;cursor:pointer;padding:.1rem .45rem;font-size:.82rem;font-weight:700;line-height:1.5}.offer-console[_ngcontent-%COMP%]   .head-seg[_ngcontent-%COMP%]   button[_ngcontent-%COMP%] + button[_ngcontent-%COMP%]{border-left:1px solid #6b6b6b}.offer-console[_ngcontent-%COMP%]   .head-seg[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]:hover{color:#fff}.offer-console[_ngcontent-%COMP%]   .head-seg[_ngcontent-%COMP%]   button.on[_ngcontent-%COMP%]{background:#fff;color:#000}.offer-console[_ngcontent-%COMP%]   .modes[_ngcontent-%COMP%]{display:flex;border:1px solid #1a1a1a;border-radius:var(--r-sm);overflow:hidden}.offer-console[_ngcontent-%COMP%]   .modes[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]{border:0;background:#fff;
1color:#1a1a1a;padding:.4rem .9rem;font-size:.76rem;font-weight:700;cursor:pointer}.offer-console[_ngcontent-%COMP%]   .modes[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]:hover{background:#f7f7f4}.offer-console[_ngcontent-%COMP%]   .modes[_ngcontent-%COMP%]   button.on[_ngcontent-%COMP%]{background:#1a1a1a;color:#fff}.offer-console[_ngcontent-%COMP%]   .modes[_ngcontent-%COMP%]   button.on.ai[_ngcontent-%COMP%]{background:var(--blue)}.offer-console[_ngcontent-%COMP%]   .ai-banner[_ngcontent-%COMP%]{display:flex;align-items:flex-start;gap:1rem;flex-wrap:wrap;background:var(--blue-soft);border:1px solid #cfdcf0;border-radius:0;padding:.85rem 1rem;margin-bottom:.8rem}.offer-console[_ngcontent-%COMP%]   .ai-banner[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{margin:0;font-size:.78rem;line-height:1.6;color:#2b3d5e;flex:1;min-width:320px}.offer-console[_ngcontent-%COMP%]   .btn-ai[_ngcontent-%COMP%]{border:0;background:var(--blue);color:#fff;cursor:pointer;padding:.45rem 1rem;border-radius:var(--r-sm);font-size:.76rem;font-weight:700;letter-spacing:.03em;white-space:nowrap}.offer-console[_ngcontent-%COMP%]   .btn-ai[_ngcontent-%COMP%]:hover{background:#26406e}.offer-console[_ngcontent-%COMP%]   .matrix-lede[_ngcontent-%COMP%]{margin:0 0 .65rem;max-width:105ch;font-size:.78rem;line-height:1.55;color:var(--text-2)}.offer-console[_ngcontent-%COMP%]   .table-wrap[_ngcontent-%COMP%]{overflow-x:auto;border:1px solid #f8f8f8;border-radius:0;box-shadow:0 1px 2px #0000000a,0 6px 18px #0000000d;background:#fff}.offer-console[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   th[_ngcontent-%COMP%]{height:auto;padding:.7rem .9rem;white-space:nowrap;vertical-align:middle;border:0}.offer-console[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{padding:.85rem .9rem;vertical-align:middle;background:transparent;border-left:0;border-right:1px solid #f8f8f8;border-bottom:1px solid #eee}.offer-console[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]:last-child{border-right:0}.offer-console[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:nth-child(2n){background:transparent}.offer-console[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:last-child{border-bottom:0}.offer-console[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:last-child   td[_ngcontent-%COMP%]{border-bottom:0}.offer-console[_ngcontent-%COMP%]   .data-table.rules-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{border-bottom:1px solid #f8f8f8}.offer-console[_ngcontent-%COMP%]   .data-table.rules-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:last-child   td[_ngcontent-%COMP%]{border-bottom:1px solid #f8f8f8}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-range[_ngcontent-%COMP%]{min-width:200
1px}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-total[_ngcontent-%COMP%]{min-width:112px;white-space:nowrap}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-total[_ngcontent-%COMP%]   .tot-value[_ngcontent-%COMP%]{display:block;font-size:1.05rem;font-weight:800;color:#1a1a1a;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-total[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{display:block;color:var(--text-2);font-variant-numeric:tabular-nums}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-total[_ngcontent-%COMP%]   small.people[_ngcontent-%COMP%]{color:var(--text-3);font-size:.72rem}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   tfoot[_ngcontent-%COMP%]   td.col-range[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   tfoot[_ngcontent-%COMP%]{background-color:#fafafa}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   td.col-total[_ngcontent-%COMP%]{background:#fafafa}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   tfoot[_ngcontent-%COMP%]   td.col-range[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   tfoot[_ngcontent-%COMP%]   td.col-total[_ngcontent-%COMP%]{background:#f8f8f8}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-value[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-reuse[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-qty[_ngcontent-%COMP%]{white-space:nowrap;padding-left:.55rem;padding-right:.55rem;text-transform:none;letter-spacing:0}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-value[_ngcontent-%COMP%]   .th-lab[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-reuse[_ngcontent-%COMP%]   .th-lab[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-qty[_ngcontent-%COMP%]   .th-lab[_ngcontent-%COMP%]{white-space:nowrap}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-value[_ngcontent-%COMP%]   .th-hint[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-reuse[_ngcontent-%COMP%]   .th-hint[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-qty[_ngcontent-%COMP%]   .th-hint[_ngcontent-%COMP%]{display:none}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-value[_ngcontent-%COMP%]{width:136px;min-width:136px;max-width:136px}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   th.col-value[_ngcontent-%COMP%]{font-size:.72rem;font-weight:600}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   th.col-value[_ngcontent-%COMP%]   .head-seg[_ngcontent-%COMP%]{display:flex;margin:.35rem 0 0}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   th.col-value[_ngcontent-%COMP%]   .req[_ngcontent-%COMP%]{color:#c0392b;font-style:normal;font-weight:800;margin-left:.15rem}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   th.col-value.need[_ngcontent-%COMP%]{color:#c0392b}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-acts[_ngcontent-%COMP%]{width:1%;white-space:nowrap}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-reuse[_ngcontent-%COMP%]{width:112px;min-width:112px;max-width:112px}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   .col-qty[_ngcontent-%COMP%]{width:120px;min-width:120px;max-width:120px}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   th.col-reuse[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   th.col-qty[_ngcontent-%COMP%]{font-size:.72rem;font-weight:600}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   td.col-reuse[_ngcontent-%COMP%]   select[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   td.col-qty[_ngcontent-%COMP%]   select[_ngcontent-%COMP%]{width:100%;max-width:100%;height:30px;font-size:.78rem;border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:0 .35rem;background:#fff}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   td.col-qty[_ngcontent-%COMP%]   .qty-cap[_ngcontent-%COMP%]{width:100%;height:28px;margin-top:.3rem;text-align:right;border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:0 .35rem;font-size:.78rem}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   td.col-qty.na[_ngcontent-%COMP%]{opacity:.45}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   td.col-qty[_ngcontent-%COMP%]   .na-text[_ngcontent-%COMP%]{font-size:.78rem;color:var(--muted, #888)}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   th.col-idle[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   td.col-idle[_ngcontent-%COMP%]{opacity:.48}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   td.col-idle[_ngcontent-%COMP%]{background:transparent}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:hover   td[_ngcontent-%COMP%]{background:#fafafa}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:hover   td.col-total[_ngcontent-%COMP%]{background:#eeeeec}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr.row-armed[_ngcontent-%COMP%]   td.col-idle[_ngcontent-%COMP%]{background:transparent;opacity:.48}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   thead[_ngcontent-%COMP%]   th[_ngcontent-%COMP%]{box-shadow:none}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   tfoot[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{background:transparent;
1color:#1a1a1a;border-top:1px solid #1a1a1a;border-bottom:0;padding-top:1rem;font-variant-numeric:tabular-nums}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   tfoot[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]   b[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   tfoot[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]   .tot-value[_ngcontent-%COMP%]{color:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   tfoot[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{color:var(--text-3)}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   tfoot[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]   .foot-mod[_ngcontent-%COMP%]{font-weight:700;font-variant-numeric:tabular-nums}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   tfoot[_ngcontent-%COMP%]   td.col-idle[_ngcontent-%COMP%]{opacity:.4;background:transparent}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   th.col-range[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   td.col-range[_ngcontent-%COMP%]{position:sticky;left:0;z-index:2}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   thead[_ngcontent-%COMP%]   th.col-range[_ngcontent-%COMP%]{z-index:3;background:#000}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   td.col-range[_ngcontent-%COMP%]{background:#fff}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:hover   td.col-range[_ngcontent-%COMP%]{background:#fafafa}.offer-console[_ngcontent-%COMP%]   .matrix[_ngcontent-%COMP%]   tfoot[_ngcontent-%COMP%]   td.col-range[_ngcontent-%COMP%]{background:#fff;z-index:3}.offer-console[_ngcontent-%COMP%]   .th-lab[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.4rem}.offer-console[_ngcontent-%COMP%]   .th-ico-wrap[_ngcontent-%COMP%]{display:inline-flex}.offer-console[_ngcontent-%COMP%]   .th-ico[_ngcontent-%COMP%]{width:14px;height:14px;flex-shrink:0;opacity:.85}.offer-console[_ngcontent-%COMP%]   .th-stat[_ngcontent-%COMP%]{display:block;margin-top:3px;font-size:.62rem;font-weight:600;letter-spacing:.02em;text-transform:none;color:#ffffff80;line-height:1.3}.offer-console[_ngcontent-%COMP%]   .th-hint[_ngcontent-%COMP%]{display:block;margin-top:3px;font-size:.62rem;font-weight:500;letter-spacing:0;text-transform:none;color:#ffffff8c;line-height:1.3;white-space:normal}.offer-console[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   td.num[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   th.num[_ngcontent-%COMP%]{text-align:right;font-variant-numeric:tabular-nums}.offer-console[_ngcontent-%COMP%]   .count-link[_ngcontent-%COMP%]{background:none;border:0;padding:0;margin:0;cursor:pointer;font:inherit;font-variant-numeric:tabular-nums;color:inherit;text-decoration:underline;text-underline-offset:2px}.offer-console[_ngcontent-%COMP%]   .count-link[_ngcontent-%COMP%]:hover{color:#c9a227}.offer-console[_ngcontent-%COMP%]   .range-card[_ngcontent-%COMP%]{border:0;border-radius:0;padding:0}.offer-console[_ngcontent-%COMP%]   .range-card.has-offer[_ngcontent-%COMP%]{border:0;background:transparent}.offer-console[_ngcontent-%COMP%]   .range-label[_ngcontent-%COMP%]{width:100%;border:0;background:transparent;font-size:.9rem;font-weight:800;color:var(--text);padding:.1rem 0;border-radius:0}.offer-console[_ngcontent-%COMP%]   .range-label[_ngcontent-%COMP%]:hover, .offer-console[_ngcontent-%COMP%]   .range-label[_ngcontent-%COMP%]:focus{outline:none;border-bottom:1px solid #1a1a1a;background:transparent}.offer-console[_ngcontent-%COMP%]   .range-bounds[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.3rem;margin-top:.25rem}.offer-console[_ngcontent-%COMP%]   .range-bounds[_ngcontent-%COMP%]   em[_ngcontent-%COMP%]{font-style:normal;font-size:.68rem;color:var(--text-3)}.offer-console[_ngcontent-%COMP%]   .range-bounds[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{width:72px;height:26px;font-size:.72rem;border:0;border-bottom:1px solid #ddd;border-radius:0;padding:0 .15rem;font-variant-numeric:tabular-nums;background:transparent}.offer-console[_ngcontent-%COMP%]   .range-bounds[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]:focus{outline:none;border-bottom-color:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .cell[_ngcontent-%COMP%]{min-width:148px}.offer-console[_ngcontent-%COMP%]   .cell-empty[_ngcontent-%COMP%]{display:flex;align-items:center;min-height:44px;color:#c5c5c2;font-size:.68rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase}.offer-console[_ngcontent-%COMP%]   .cell-btn[_ngcontent-%COMP%]{width:100%;text-align:left;cursor:pointer;border:0;border-radius:0;background:transparent;padding:.2rem .1rem;display:flex;flex-direction:column;gap:.1rem;transition:background .12s ease}.offer-console[_ngcontent-%COMP%]   .cell-btn[_ngcontent-%COMP%]:hover{background:transparent}.offer-console[_ngcontent-%COMP%]   .cell-btn[_ngcontent-%COMP%]:hover   .c-open[_ngcontent-%COMP%]{opacity:1}.offer-console[_ngcontent-%COMP%]   .cell-btn[_ngcontent-%COMP%]   .c-value[_ngcontent-%COMP%]{font-size:1.05rem;font-weight:800;
1color:#1a1a1a;line-height:1.15;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.offer-console[_ngcontent-%COMP%]   .cell-btn[_ngcontent-%COMP%]   .c-count[_ngcontent-%COMP%]{font-size:.7rem;font-weight:600;color:var(--text-2)}.offer-console[_ngcontent-%COMP%]   .cell-btn[_ngcontent-%COMP%]   .c-ex[_ngcontent-%COMP%]{font-size:.68rem;color:var(--amber);font-weight:600}.offer-console[_ngcontent-%COMP%]   .cell-btn[_ngcontent-%COMP%]   .c-open[_ngcontent-%COMP%]{margin-top:.15rem;font-size:.62rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#1a1a1a;transition:opacity .14s ease}.offer-console[_ngcontent-%COMP%]   .cell-btn.idle[_ngcontent-%COMP%]{background:transparent}.offer-console[_ngcontent-%COMP%]   .cell-btn.idle[_ngcontent-%COMP%]   .c-count[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .cell-btn.idle[_ngcontent-%COMP%]   .c-value[_ngcontent-%COMP%]{color:var(--text-3)}.offer-console[_ngcontent-%COMP%]   .cell-btn.set[_ngcontent-%COMP%]{background:transparent;box-shadow:none}.offer-console[_ngcontent-%COMP%]   .sugg[_ngcontent-%COMP%]{margin-top:.3rem;display:flex;flex-direction:column;gap:.05rem}.offer-console[_ngcontent-%COMP%]   .sugg[_ngcontent-%COMP%]   .s-val[_ngcontent-%COMP%]{font-size:.74rem;font-weight:700;color:var(--blue)}.offer-console[_ngcontent-%COMP%]   .sugg[_ngcontent-%COMP%]   .s-conv[_ngcontent-%COMP%]{font-size:.66rem;color:var(--text-3)}.offer-console[_ngcontent-%COMP%]   .sugg[_ngcontent-%COMP%]   .s-conv.heur[_ngcontent-%COMP%]{color:var(--amber);font-style:italic}.offer-console[_ngcontent-%COMP%]   .applied[_ngcontent-%COMP%]{margin-top:.25rem;font-size:.72rem;font-weight:600;color:var(--text-3);background:transparent;border-radius:0;padding:0;display:inline-block}.offer-console[_ngcontent-%COMP%]   .value-input[_ngcontent-%COMP%]{position:relative;display:flex;align-items:center}.offer-console[_ngcontent-%COMP%]   .value-input[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{width:100%;height:32px;padding:0 1.5rem 0 .1rem;border:0;border-bottom:1px solid #ddd;border-radius:0;background:transparent;font-size:.8rem;font-variant-numeric:tabular-nums}.offer-console[_ngcontent-%COMP%]   .value-input[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]:focus{outline:none;border-bottom-color:#1a1a1a;box-shadow:none}.offer-console[_ngcontent-%COMP%]   .value-input[_ngcontent-%COMP%]   .unit[_ngcontent-%COMP%]{position:absolute;right:.15rem;font-size:.82rem;color:var(--text-3);font-weight:700}.offer-console[_ngcontent-%COMP%]   .value-input.has-value[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{border-bottom-color:#1a1a1a;background:transparent}.offer-console[_ngcontent-%COMP%]   .value-input.has-value[_ngcontent-%COMP%]   .unit[_ngcontent-%COMP%]{color:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .value-input.need[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{border-bottom-color:#c0392b}.offer-console[_ngcontent-%COMP%]   .hint[_ngcontent-%COMP%]{display:block;margin-top:.25rem;color:var(--text-3);font-size:.66rem;line-height:1.4}.offer-console[_ngcontent-%COMP%]   .ibtn[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.3rem;border:1px solid #f8f8f8;background:#fff;color:var(--text-2);border-radius:var(--r-sm);cursor:pointer;padding:.3rem .65rem;font-size:.72rem;font-weight:700;transition:border-color .12s ease,color .12s ease,background .12s ease}.offer-console[_ngcontent-%COMP%]   .ibtn[_ngcontent-%COMP%]:hover:not(:disabled){border-color:#1a1a1a;color:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .ibtn[_ngcontent-%COMP%]:disabled{opacity:.35;cursor:not-allowed}.offer-console[_ngcontent-%COMP%]   .ibtn.danger[_ngcontent-%COMP%]:hover:not(:disabled){border-color:var(--red);color:var(--red);background:var(--red-soft)}.offer-console[_ngcontent-%COMP%]   .ibtn.good[_ngcontent-%COMP%]:hover:not(:disabled){border-color:var(--green);color:var(--green);background:var(--green-soft)}.offer-console[_ngcontent-%COMP%]   .ibtn[_ngcontent-%COMP%] + .ibtn[_ngcontent-%COMP%]{margin-left:.3rem}.offer-console[_ngcontent-%COMP%]   .ibtn[_ngcontent-%COMP%]   .btn-ico[_ngcontent-%COMP%]{width:12px;height:12px}.offer-console[_ngcontent-%COMP%]   .col-acts[_ngcontent-%COMP%]   .ibtn[_ngcontent-%COMP%]{width:28px;height:28px;padding:0;font-size:1.1rem;line-height:1;border:0;background:transparent;color:#bbb}.offer-console[_ngcontent-%COMP%]   .col-acts[_ngcontent-%COMP%]   .ibtn[_ngcontent-%COMP%]:hover:not(:disabled){color:var(--red);background:transparent;border:0}.offer-console[_ngcontent-%COMP%]   .btn-ghost[_ngcontent-%COMP%]{border:0;background:transparent;color:var(--text-2);border-radius:0;cursor:pointer;padding:.4rem .15rem;font-size:.76rem;font-weight:600;display:inline-flex;align-items:center;gap:.35rem}.offer-console[_ngcontent-%COMP%]   .btn-ghost[_ngcontent-%COMP%]:hover{color:#1
1a1a1a}.offer-console[_ngcontent-%COMP%]   .grid-notes[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.9rem;flex-wrap:wrap;margin:.7rem 0}.offer-console[_ngcontent-%COMP%]   .grid-notes[_ngcontent-%COMP%]   .warn[_ngcontent-%COMP%]{font-size:.74rem;color:var(--amber);font-weight:600}.offer-console[_ngcontent-%COMP%]   .sendbar[_ngcontent-%COMP%]{position:sticky;bottom:12px;z-index:8;display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;background:#fff;border:0;border-top:1px solid #f8f8f8;border-radius:0;box-shadow:0 -10px 24px #ffffffe6;padding:.9rem 0;margin-top:.9rem}.offer-console[_ngcontent-%COMP%]   .sendbar[_ngcontent-%COMP%]   .ready[_ngcontent-%COMP%]{font-size:.82rem;color:var(--text-2)}.offer-console[_ngcontent-%COMP%]   .sendbar[_ngcontent-%COMP%]   .ready[_ngcontent-%COMP%]   b[_ngcontent-%COMP%]{color:var(--text);font-size:1.05rem}.offer-console[_ngcontent-%COMP%]   .sendbar[_ngcontent-%COMP%]   .ready[_ngcontent-%COMP%]   em[_ngcontent-%COMP%]{font-style:normal;color:var(--text-3);font-size:.74rem}.offer-console[_ngcontent-%COMP%]   .sendbar[_ngcontent-%COMP%]   .btn-primary[_ngcontent-%COMP%]{margin-left:0}.offer-console[_ngcontent-%COMP%]   .sendbar[_ngcontent-%COMP%]   .send-actions[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.5rem}.offer-console[_ngcontent-%COMP%]   .sendbar.armed[_ngcontent-%COMP%]{border-top-color:#1a1a1a;box-shadow:0 -10px 24px #ffffffe6}.offer-console[_ngcontent-%COMP%]   .sendbar.armed[_ngcontent-%COMP%]   b[_ngcontent-%COMP%]{color:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .conv[_ngcontent-%COMP%]   .col-range[_ngcontent-%COMP%]{min-width:140px}.offer-console[_ngcontent-%COMP%]   .conv-btn[_ngcontent-%COMP%]{width:100%;min-width:170px;text-align:left;cursor:pointer;border:0;border-radius:0;background:transparent;padding:.35rem .1rem;display:flex;flex-direction:column;gap:.15rem}.offer-console[_ngcontent-%COMP%]   .conv-btn[_ngcontent-%COMP%]:hover:not(:disabled){background:transparent}.offer-console[_ngcontent-%COMP%]   .conv-btn[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:default}.offer-console[_ngcontent-%COMP%]   .conv-btn[_ngcontent-%COMP%]   .cv-top[_ngcontent-%COMP%]{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem}.offer-console[_ngcontent-%COMP%]   .conv-btn[_ngcontent-%COMP%]   .cv-won[_ngcontent-%COMP%]{font-size:.8rem;font-weight:700}.offer-console[_ngcontent-%COMP%]   .conv-btn[_ngcontent-%COMP%]   .cv-pct[_ngcontent-%COMP%]{font-size:.92rem;font-weight:800;font-variant-numeric:tabular-nums;color:var(--text-3)}.offer-console[_ngcontent-%COMP%]   .conv-btn[_ngcontent-%COMP%]   .cv-sub[_ngcontent-%COMP%]{font-size:.68rem;color:var(--text-2)}.offer-console[_ngcontent-%COMP%]   .conv-btn.idle[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .conv-btn.good[_ngcontent-%COMP%]{background:transparent}.offer-console[_ngcontent-%COMP%]   .conv-btn.good[_ngcontent-%COMP%]   .cv-pct[_ngcontent-%COMP%]{color:var(--green)}.offer-console[_ngcontent-%COMP%]   .conv-btn.bad[_ngcontent-%COMP%]{background:transparent}.offer-console[_ngcontent-%COMP%]   .conv-btn.bad[_ngcontent-%COMP%]   .cv-pct[_ngcontent-%COMP%]{color:var(--red)}.offer-console[_ngcontent-%COMP%]   .pct.good[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .cv-pct.good[_ngcontent-%COMP%]{color:var(--green)}.offer-console[_ngcontent-%COMP%]   .pct.bad[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .cv-pct.bad[_ngcontent-%COMP%]{color:var(--red)}.offer-console[_ngcontent-%COMP%]   .brief[_ngcontent-%COMP%]{border:1px solid #f8f8f8;background:#fff;border-radius:0;padding:1.05rem 1.15rem;margin-bottom:1rem}.offer-console[_ngcontent-%COMP%]   .brief[_ngcontent-%COMP%]   .brief-eyebrow[_ngcontent-%COMP%]{font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;font-weight:800;color:#1a1a1a;margin-bottom:.35rem}.offer-console[_ngcontent-%COMP%]   .brief[_ngcontent-%COMP%]   h2[_ngcontent-%COMP%]{font-size:1.05rem;font-weight:800;color:#1a1a1a;margin:0 0 .45rem}.offer-console[_ngcontent-%COMP%]   .brief[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{margin:0;font-size:.82rem;line-height:1.65;color:#4a4334;max-width:90ch}.offer-console[_ngcontent-%COMP%]   td.action[_ngcontent-%COMP%]{color:var(--blue);font-weight:600}.offer-console[_ngcontent-%COMP%]   .pct-cell[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.28rem;min-width:88px}.offer-console[_ngcontent-%COMP%]   .pct-bar[_ngcontent-%COMP%]{display:block;height:4px;border-radius:var(--r-full);background:#ecece8;overflow:hidden}.offer-console[_ngcontent-%COMP%]   .pct-bar[_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{display:block;height:100%;background:#8a8a8a;border-radius:inherit}.offer-console[_ngcontent-%COMP%]   .pct-bar.good[_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{background:var(--green)}.offer-console[_ngcontent-%COMP%]   .pct-bar.bad[_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{background:var(--red)}.offer-console[_ngcontent-%COMP%]   .pill[_ngcontent-%COMP%]{display:inline-block;padding:.14rem .55rem;border-radius:0;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.offer-console[_ngcontent-%COMP%]   .pill.pending[_ngcontent-%COMP%]{background:#f0f0f0;color:#555}.offer-console[_ngcontent-%COMP%]   .pill.approved[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .pill.on[_ngcontent-%COMP%]{background:var(--green-soft);color:var(--green)}.offer-console[_ngcontent-%COMP%]   .pill.denied[_ngcontent-%COMP%]{background:var(--red-soft);color:var(--red)}.offer-console[_ngcontent-%COMP%]   .pill.sent[_ngcontent-%COMP%]{background:var(--green-soft);color:var(--green)}.offer-console[_ngcontent-%COMP%]   .mod-count[_ngcontent-%COMP%]{font-size:.78rem;color:var(--text-2);font-weight:600}.offer-console[_ngcontent-%COMP%]   td.acts[_ngcontent-%COMP%]{white-space:nowrap}.offer-console[_ngcontent-%COMP%]   tr.row-pending[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{background:#fff!important}.offer-console[_ngcontent-%COMP%]   .overlay[_ngcontent-%COMP%]{position:fixed;inset:0;z-index:60;background:#10182880;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:2rem 1rem}.offer-console[_ngcontent-%COMP%]   .panel[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .modal[_ngcontent-%COMP%]{background:var(--surface);border-radius:0;box-shadow:var(--shadow-lg);display:flex;flex-direction:column;max-height:100%;border:1px solid #f8f8f8}.offer-console[_ngcontent-%COMP%]   .panel[_ngcontent-%COMP%]{width:min(1180px,100%)}.offer-console[_ngcontent-%COMP%]   .modal[_ngcontent-%COMP%]{width:min(560px,100%);padding:1.2rem 1.3rem;gap:.1rem;overflow-y:auto}.offer-console[_ngcontent-%COMP%]   .modal.wide[_ngcontent-%COMP%]{width:min(760px,100%)}.offer-console[_ngcontent-%COMP%]   .modal.rule-modal[_ngcontent-%COMP%]   .eyebrow[_ngcontent-%COMP%]{font-size:.72rem;letter-spacing:.08em}.offer-console[_ngcontent-%COMP%]   .modal.rule-modal[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%]{font-size:1.2rem;line-height:1.3;font-weight:800;margin:.3rem 0 .45rem}.offer-console[_ngcontent-%COMP%]   .modal.rule-modal[_ngcontent-%COMP%] > .muted[_ngcontent-%COMP%]{font-size:.84rem;line-height:1.55;margin:0 0 .2rem}.offer-console[_ngcontent-%COMP%]   .modal.rule-modal[_ngcontent-%COMP%]   .data-table.compact[_ngcontent-%COMP%]   th[_ngcontent-%COMP%]{height:40px;font-size:.78rem;font-weight:600;letter-spacing:.04em}.offer-console[_ngcontent-%COMP%]   .modal.rule-modal[_ngcontent-%COMP%]   .data-table.compact[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{font-size:.84rem;padding:.55rem .75rem}.offer-console[_ngcontent-%COMP%]   .modal.rule-modal[_ngcontent-%COMP%]   .data-table.compact[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]   b[_ngcontent-%COMP%]{font-size:inherit;font-weight:700}.offer-console[_ngcontent-%COMP%]   .modal.rule-modal[_ngcontent-%COMP%]   .fgroup[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{font-size:.72rem}.offer-console[_ngcontent-%COMP%]   .modal.rule-modal[_ngcontent-%COMP%]   .pv-row[_ngcontent-%COMP%]{font-size:.84rem;padding:.45rem 0}.offer-console[_ngcontent-%COMP%]   .modal.rule-modal[_ngcontent-%COMP%]   .pv-row[_ngcontent-%COMP%]   .muted[_ngcontent-%COMP%]{font-size:.84rem}.offer-console[_ngcontent-%COMP%]   .modal.rule-modal[_ngcontent-%COMP%] > footer[_ngcontent-%COMP%]   .btn-ghost[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .modal.rule-modal[_ngcontent-%COMP%] > footer[_ngcontent-%COMP%]   .btn-primary[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .modal.rule-modal[_ngcontent-%COMP%] > footer[_ngcontent-%COMP%]   .ibtn[_ngcontent-%COMP%]{font-size:.82rem;letter-spacing:.03em}.offer-console[_ngcontent-%COMP%]   .modal.rule-modal[_ngcontent-%COMP%] > footer[_ngcontent-%COMP%]   .btn-ghost[_ngcontent-%COMP%]{padding:.45rem .7rem}.offer-console[_ngcontent-%COMP%]   .modal.scope-modal[_ngcontent-%COMP%]{overflow:visible}.offer-console[_ngcontent-%COMP%]   .modal.scope-modal[_ngcontent-%COMP%]   .scope-list-wrap[_ngcontent-%COMP%]{max-height:42vh;overflow-y:auto;margin-top:.2rem}.offer-console[_ngcontent-%COMP%]   .modal.scope-modal[_ngcontent-%COMP%]   .data-table.compact[_ngcontent-%COMP%]{margin-top:0}.offer-console[_ngcontent-%COMP%]   .modal[_ngcontent-%COMP%]   .table-wrap[_ngcontent-%COMP%]{margin:.8rem 0 0;border:0;border-top:1px solid #f8f8f8;border-bottom:1px solid #f8f8f8;border-radius:0;box-shadow:none;overflow:hidden}.offer-console[_ngcontent-%COMP%]   .modal[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]{margin-top:0}.offer-console[_ngcontent-%COMP%]   .modal[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   th[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .modal[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{border:0;border-bottom:1px solid #eee}.offer-console[_ngcontent-%COMP%]   .modal[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:last-child{border-bottom:0}.offer-console[_ngcontent-%COMP%]   .modal[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:last-child   td[_ngcontent-%COMP%]{border-bottom:0}.offer-console[_ngcontent-%COMP%]   .data-table.compact[_ngcontent-%COMP%]{margin-top:.8rem}.offer-console[_ngcontent-%COMP%]   .data-table.compact[_ngcontent-%COMP%]   th[_ngcontent-%COMP%]{height:34px;font-size:.74rem}.offer-console[_ngcontent-%COMP%]   .data-table.compact[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{padding:.4rem .6rem;font-size:.8rem}.offer-console[_ngcontent-%COMP%]   .exclude-add[_ngcontent-%COMP%]{display:flex;align-items:flex-end;
1gap:.75rem;flex-wrap:wrap;padding:.85rem 1rem;margin-bottom:.9rem;background:#fff;border:1px solid #f8f8f8;border-radius:0;box-shadow:0 1px 2px #0000000a,0 1px 12px #00000008}.offer-console[_ngcontent-%COMP%]   .exclude-add[_ngcontent-%COMP%]   .fld[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{min-width:190px}.offer-console[_ngcontent-%COMP%]   .exclude-add[_ngcontent-%COMP%]   .fld.ac[_ngcontent-%COMP%]{position:relative;display:flex;flex-direction:column;gap:.2rem}.offer-console[_ngcontent-%COMP%]   .exclude-add[_ngcontent-%COMP%]   .fld.ac[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]:first-child{font-size:.64rem;letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);font-weight:700}.offer-console[_ngcontent-%COMP%]   .exclude-add[_ngcontent-%COMP%]   .fld.ac[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{height:var(--control-h-sm);min-width:240px;border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:0 .5rem;font-size:.82rem;background:var(--input-bg);color:var(--text)}.offer-console[_ngcontent-%COMP%]   .exclude-add[_ngcontent-%COMP%]   .fld.wide[_ngcontent-%COMP%]{flex:1}.offer-console[_ngcontent-%COMP%]   .exclude-add[_ngcontent-%COMP%]   .fld.wide[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{width:100%;min-width:260px}.offer-console[_ngcontent-%COMP%]   .exclude-add[_ngcontent-%COMP%]   .btn-primary[_ngcontent-%COMP%]{margin-left:0}.offer-console[_ngcontent-%COMP%]   .dup-window[_ngcontent-%COMP%]{display:flex;gap:.75rem;margin:.9rem 0 .2rem}.offer-console[_ngcontent-%COMP%]   .ac-spin[_ngcontent-%COMP%]{position:absolute;right:.55rem;bottom:.6rem;width:13px;height:13px;border:2px solid var(--border-strong);border-top-color:var(--text-2);border-radius:50%;animation:_ngcontent-%COMP%_spin .8s linear infinite}.offer-console[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]{position:absolute;top:100%;left:0;right:0;z-index:30;margin-top:2px;max-height:300px;overflow-y:auto;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-sm);box-shadow:var(--shadow)}.offer-console[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]   ul[_ngcontent-%COMP%]{list-style:none;margin:0;padding:0}.offer-console[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]{display:grid;grid-template-columns:16px minmax(100px,auto) 1fr;align-items:center;gap:.55rem;padding:.4rem .6rem;cursor:pointer;font-size:.8rem;border-bottom:1px solid var(--border)}.offer-console[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]   li[_ngcontent-%COMP%]:last-child{border-bottom:0}.offer-console[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]   li.active[_ngcontent-%COMP%]{background:var(--surface-hover)}.offer-console[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]   li.on[_ngcontent-%COMP%]{background:#fff}.offer-console[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]   li.gone[_ngcontent-%COMP%]{cursor:not-allowed;opacity:.5}.offer-console[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]   .h-check[_ngcontent-%COMP%]{width:14px;height:14px;border-radius:3px;border:1.5px solid var(--border-strong);background:#fff}.offer-console[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]   .h-check.on[_ngcontent-%COMP%]{border-color:#1a1a1a;background:#1a1a1a;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><path fill='none' stroke='white' stroke-width='1.8' stroke-linecap='round' d='M2.5 6.2 5 8.6 9.5 3.4'/></svg>");background-size:10px 10px;background-repeat:no-repeat;background-position:center}.offer-console[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]   .h-code[_ngcontent-%COMP%]{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem;color:var(--text)}.offer-console[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]   .h-code[_ngcontent-%COMP%]   b[_ngcontent-%COMP%]{color:var(--brand);font-weight:800}.offer-console[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]   .h-name[_ngcontent-%COMP%]{color:var(--text-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.offer-console[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]   .h-name[_ng
1content-%COMP%]   b[_ngcontent-%COMP%]{color:var(--brand);font-weight:700}.offer-console[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]   .h-meta[_ngcontent-%COMP%]{font-size:.72rem;color:var(--text-3);white-space:nowrap;font-variant-numeric:tabular-nums}.offer-console[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]   .h-meta[_ngcontent-%COMP%]   em[_ngcontent-%COMP%]{font-style:normal;color:var(--amber);font-weight:700}.offer-console[_ngcontent-%COMP%]   .ac-panel[_ngcontent-%COMP%]   .h-meta[_ngcontent-%COMP%]   em.off[_ngcontent-%COMP%]{color:var(--red)}.offer-console[_ngcontent-%COMP%]   .ac-empty[_ngcontent-%COMP%]{padding:.6rem;font-size:.78rem;color:var(--text-2)}.offer-console[_ngcontent-%COMP%]   .ac-picked[_ngcontent-%COMP%]{position:absolute;top:100%;left:0;margin-top:.2rem;font-size:.7rem;color:var(--green);font-weight:600}.offer-console[_ngcontent-%COMP%]   .panel[_ngcontent-%COMP%] > header[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .panel[_ngcontent-%COMP%] > footer[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.9rem 1.1rem}.offer-console[_ngcontent-%COMP%]   .panel[_ngcontent-%COMP%] > header[_ngcontent-%COMP%]{border-bottom:1px solid var(--border)}.offer-console[_ngcontent-%COMP%]   .panel[_ngcontent-%COMP%] > footer[_ngcontent-%COMP%]{border-top:1px solid var(--border);flex-wrap:wrap}.offer-console[_ngcontent-%COMP%]   .panel-body[_ngcontent-%COMP%]{overflow:auto;padding:.9rem 1.1rem}.offer-console[_ngcontent-%COMP%]   .eyebrow[_ngcontent-%COMP%]{font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;font-weight:800;color:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .eyebrow.good[_ngcontent-%COMP%]{color:var(--green)}.offer-console[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%]{text-transform:capitalize;font-size:1.02rem;font-weight:800;color:var(--text);margin:.2rem 0 .1rem}.offer-console[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%]   .sub[_ngcontent-%COMP%]{font-weight:500;font-size:.82rem;color:var(--text-2)}.offer-console[_ngcontent-%COMP%]   .cgroup[_ngcontent-%COMP%]{border:1px solid var(--border);border-radius:var(--r);margin-bottom:.7rem;overflow:hidden}.offer-console[_ngcontent-%COMP%]   .cgroup[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]{font-size:.84rem}.offer-console[_ngcontent-%COMP%]   .cgroup[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   thead[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]{background:var(--surface-2)}.offer-console[_ngcontent-%COMP%]   .cgroup[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   th[_ngcontent-%COMP%]{background:var(--surface-2);color:var(--text-3);border:0;border-bottom:1px solid var(--border);height:30px;font-size:.66rem;letter-spacing:.05em;font-weight:800}.offer-console[_ngcontent-%COMP%]   .cgroup[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{border-left:0;border-right:0}.offer-console[_ngcontent-%COMP%]   .cgroup[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]{background:var(--surface)}.offer-console[_ngcontent-%COMP%]   .cgroup[_ngcontent-%COMP%]   .data-table[_ngcontent-%COMP%]   tbody[_ngcontent-%COMP%]   tr[_ngcontent-%COMP%]:last-child{border-bottom:0}.offer-console[_ngcontent-%COMP%]   .cgroup-head[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.6rem;padding:.55rem .75rem;background:#f0f0f0;border-bottom:1px solid #f8f8f8}.offer-console[_ngcontent-%COMP%]   .cgroup-head[_ngcontent-%COMP%]   .cg-tick[_ngcontent-%COMP%]{display:flex}.offer-console[_ngcontent-%COMP%]   .cgroup-head[_ngcontent-%COMP%]   .cg-who[_ngcontent-%COMP%]   b[_ngcontent-%COMP%]{font-size:.86rem}.offer-console[_ngcontent-%COMP%]   .cgroup-head[_ngcontent-%COMP%]   .cg-who[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{display:block;color:var(--text-3);font-size:.7rem}.offer-console[_ngcontent-%COMP%]   .cgroup-head[_ngcontent-%COMP%]   .cg-meta[_ngcontent-%COMP%]{margin-left:auto;font-size:.76rem;color:var(--text-2);font-variant-numeric:tabular-nums}.offer-console[_ngcontent-%COMP%]   .cgroup-head[_ngcontent-%COMP%]   .cg-meta[_ngcontent-%COMP%]   em[_ngcontent-%COMP%]{font-style:normal;color:var(--amber);font-weight:600}.offer-console[_ngcontent-%COMP%]   .drill[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{padding:.45rem .6rem}.offer-console[_ngcontent-%COMP%]   .drill[_ngcontent-%COMP%]   tr.off[_ngcontent-%COMP%]{opacity:.45}.offer-console[_ngcontent-%COMP%]   .drill[_ngcontent-%COMP%]   .w-tick[_ngcontent-%COMP%]{width:34px}.offer-console[_ngcontent-%COMP%]   .drill[_ngcontent-%COMP%]   .edited[_ngcontent-%COMP%]{margin-left:.35rem;font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;
1color:var(--blue);background:var(--blue-soft);padding:.05rem .3rem;border-radius:var(--r-sm)}.offer-console[_ngcontent-%COMP%]   .drill[_ngcontent-%COMP%]   .reason[_ngcontent-%COMP%]{color:var(--amber);font-weight:600}.offer-console[_ngcontent-%COMP%]   .drill[_ngcontent-%COMP%]   select[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .drill[_ngcontent-%COMP%]   .mini[_ngcontent-%COMP%]{height:28px;border:1px solid var(--border-strong);border-radius:var(--r-sm);font-size:.76rem;padding:0 .3rem;background:var(--input-bg);color:var(--text)}.offer-console[_ngcontent-%COMP%]   .drill[_ngcontent-%COMP%]   .mini[_ngcontent-%COMP%]{width:68px;text-align:right;font-variant-numeric:tabular-nums}.offer-console[_ngcontent-%COMP%]   .drill[_ngcontent-%COMP%]   select[_ngcontent-%COMP%] + .mini[_ngcontent-%COMP%]{margin-left:.25rem;width:52px}.offer-console[_ngcontent-%COMP%]   .excluded[_ngcontent-%COMP%]   td[_ngcontent-%COMP%]{background:#fffaf1}.offer-console[_ngcontent-%COMP%]   .pcode[_ngcontent-%COMP%]{display:block;margin-top:2px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.7rem;color:var(--text-3);letter-spacing:.02em}.offer-console[_ngcontent-%COMP%]   .chips[_ngcontent-%COMP%]{display:flex;gap:.6rem;padding:.9rem 1.1rem 0;flex-wrap:wrap}.offer-console[_ngcontent-%COMP%]   .stat[_ngcontent-%COMP%]{border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:.4rem .7rem;min-width:92px}.offer-console[_ngcontent-%COMP%]   .stat[_ngcontent-%COMP%]   span[_ngcontent-%COMP%]{display:block;font-size:.62rem;letter-spacing:.06em;text-transform:uppercase;color:var(--text-3);font-weight:700}.offer-console[_ngcontent-%COMP%]   .stat[_ngcontent-%COMP%]   b[_ngcontent-%COMP%]{font-size:1.15rem;font-variant-numeric:tabular-nums}.offer-console[_ngcontent-%COMP%]   .stat.good[_ngcontent-%COMP%]{border-color:#bfe3ce}.offer-console[_ngcontent-%COMP%]   .stat.good[_ngcontent-%COMP%]   b[_ngcontent-%COMP%]{color:var(--green)}.offer-console[_ngcontent-%COMP%]   .stat.bad[_ngcontent-%COMP%]{border-color:#f2c9c4}.offer-console[_ngcontent-%COMP%]   .stat.bad[_ngcontent-%COMP%]   b[_ngcontent-%COMP%]{color:var(--red)}.offer-console[_ngcontent-%COMP%]   .fgroup[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.35rem;margin:.8rem 0}.offer-console[_ngcontent-%COMP%]   .fgroup[_ngcontent-%COMP%] > span[_ngcontent-%COMP%]{font-size:.66rem;letter-spacing:.07em;text-transform:uppercase;font-weight:800;color:var(--text-3)}.offer-console[_ngcontent-%COMP%]   .fgroup[_ngcontent-%COMP%] > input[_ngcontent-%COMP%]{height:var(--control-h-sm);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:0 .5rem;font-size:.84rem;font-variant-numeric:tabular-nums}.offer-console[_ngcontent-%COMP%]   .seg[_ngcontent-%COMP%]{display:flex;border:1px solid var(--border-strong);border-radius:var(--r-sm);overflow:hidden}.offer-console[_ngcontent-%COMP%]   .seg[_ngcontent-%COMP%]   button[_ngcontent-%COMP%]{flex:1;border:0;background:var(--surface);cursor:pointer;padding:.4rem .6rem;font-size:.76rem;font-weight:700;color:var(--text-2)}.offer-console[_ngcontent-%COMP%]   .seg[_ngcontent-%COMP%]   button[_ngcontent-%COMP%] + button[_ngcontent-%COMP%]{border-left:1px solid var(--border-strong)}.offer-console[_ngcontent-%COMP%]   .seg[_ngcontent-%COMP%]   button.on[_ngcontent-%COMP%]{background:#000;color:#fff}.offer-console[_ngcontent-%COMP%]   .inline[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.4rem;font-size:.78rem;color:var(--text-2)}.offer-console[_ngcontent-%COMP%]   .inline[_ngcontent-%COMP%]   input[_ngcontent-%COMP%]{width:62px;height:28px;border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:0 .35rem;text-align:right}.offer-console[_ngcontent-%COMP%]   .mailwarn[_ngcontent-%COMP%]{border:1px solid #f2c9c4;background:var(--red-soft);border-radius:var(--r-sm);padding:.65rem .75rem;margin:.8rem 0;font-size:.78rem;line-height:1.6;color:#7a3b34}.offer-console[_ngcontent-%COMP%]   .mailwarn[_ngcontent-%COMP%]   b[_ngcontent-%COMP%]{color:var(--red)}.offer-console[_ngcontent-%COMP%]   .mailwarn[_ngcontent-%COMP%]   code[_ngcontent-%COMP%]{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.74rem;background:#fff;padding:.05rem .25rem;border-radius:3px}.offer-console[_ngcontent-%COMP%]   .removals[_ngcontent-%COMP%]{border:1px solid #f2c9c4;background:var(--red-soft);border-radius:var(--r-sm);padding:.6rem .7rem;margin:.8rem 0}.offer-console[_ngcontent-%COMP%]   .removals[_ngcontent-%COMP%]   .rem-head[_ngcontent-%COMP%]{font-size:.74rem;font-weight:800;color:var(--red);margin-bottom:.3rem}.offer-console[_ngcontent-%COMP%]   .removals[_ngcontent-%COMP%]   .rem-row[_ngcontent-%COMP%]{display:flex;justify-content:space-between;gap:.8rem;font-size:.76rem;color:#7a3b34;padding:.1rem 0}.offer-console[_ngcontent-%COMP%]   .removals[_ngcontent-%COMP%]   .rem-row[_ngcontent-%COMP%]   b[_ngcontent-%COMP%]{font-variant-numeric:tabular-nums}.offer-console[_ngcontent-%COMP%]   .preview-list[_ngcontent-%COMP%]{border:1px solid var(--border);border-radius:var(--r-sm);padding:.3rem .6rem;margin:.7rem 0;max-height:210px;overflow-y:auto}.offer-console[_ngcontent-%COMP%]   .preview-list.tall[_ngcontent-%COMP%]{max-height:280px}.offer-console[_ngcontent-%COMP%]   .pv-row[_ngcontent-%COMP%]{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.35rem 0;font-size:.8rem}.offer-console[_ngcontent-%COMP%]   .pv-row[_ngcontent-%COMP%] + .pv-row[_ngcontent-%COMP%]{border-top:1px solid var(--border)}.offer-console[_ngcontent-%COMP%]   .pv-row[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{display:block;color:var(--text-3);font-size:.7rem}.offer-console[_ngcontent-%COMP%]   .pv-row.stack[_ngcontent-%COMP%]{align-items:flex-start;flex-direction:column;gap:.2rem}.offer-console[_ngcontent-%COMP%]   .pv-items[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.12rem}.offer-console[_ngcontent-%COMP%]   .pv-items[_ngcontent-%COMP%]   em[_ngcontent-%COMP%]{font-style:normal;font-size:.72rem;color:var(--text-2)}.offer-console[_ngcontent-%COMP%]   .compose-schedule[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(240px,1fr) minmax(280px,1.15fr);gap:1.1rem 2rem;align-items:start;margin:1.25rem 0 0;padding:1rem 1.1rem;border:1px solid var(--border);border-radius:0;background:var(--surface-2, #fafafa)}.offer-console[_ngcontent-%COMP%]   .compose-schedule[_ngcontent-%COMP%]   header[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%]{margin:0;font-size:.82rem;text-transform:uppercase;letter-spacing:.09em;color:var(--ink, #333)}.offer-console[_ngcontent-%COMP%]   .compose-schedule[_ngcontent-%COMP%]   .pnote[_ngcontent-%COMP%]{margin:.35rem 0 0;max-width:48ch}.offer-console[_ngcontent-%COMP%]   .compose-schedule[_ngcontent-%COMP%]   .schedule-form[_ngcontent-%COMP%]{min-width:0}.offer-console[_ngcontent-%COMP%]   .compose-schedule[_ngcontent-%COMP%]   .reminders[_ngcontent-%COMP%]{max-width:none;margin:0 0 .65rem}.offer-console[_ngcontent-%COMP%]   .compose-schedule[_ngcontent-%COMP%]   .rem[_ngcontent-%COMP%]{background:#fff;border-radius:0}.offer-console[_ngcontent-%COMP%]   .compose-schedule[_ngcontent-%COMP%]   .btn-add-rem[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:.35rem;text-transform:capitalize;border:1px solid #1a1a1a;border-radius:0;background:#fff;
1color:#1a1a1a;padding:.4rem .85rem;font-size:.76rem;font-weight:700;cursor:pointer}.offer-console[_ngcontent-%COMP%]   .compose-schedule[_ngcontent-%COMP%]   .btn-add-rem[_ngcontent-%COMP%]:hover{background:#1a1a1a;color:#fff}.offer-console[_ngcontent-%COMP%]   .compose-schedule[_ngcontent-%COMP%]   .btn-add-rem[_ngcontent-%COMP%]   .btn-ico[_ngcontent-%COMP%]{width:13px;height:13px}@media(max-width:860px){.offer-console[_ngcontent-%COMP%]   .compose-schedule[_ngcontent-%COMP%]{grid-template-columns:1fr}}.offer-console[_ngcontent-%COMP%]   .reminders[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.4rem;margin:.8rem 0 .6rem}.offer-console[_ngcontent-%COMP%]   .rem[_ngcontent-%COMP%]{display:flex;align-items:center;gap:.45rem;border:1px solid var(--border);border-radius:0;padding:.4rem .6rem;font-size:.8rem}.offer-console[_ngcontent-%COMP%]   .rem.locked[_ngcontent-%COMP%]{background:var(--surface-2)}.offer-console[_ngcontent-%COMP%]   .rem[_ngcontent-%COMP%]   .rem-label[_ngcontent-%COMP%]{font-weight:600}.offer-console[_ngcontent-%COMP%]   .rem[_ngcontent-%COMP%]   .mini[_ngcontent-%COMP%]{width:62px;height:28px;border:1px solid var(--border-strong);border-radius:0;padding:0 .35rem;text-align:right}.offer-console[_ngcontent-%COMP%]   .rem[_ngcontent-%COMP%]   .ibtn[_ngcontent-%COMP%]{margin-left:auto;border-radius:0}.offer-console[_ngcontent-%COMP%]   .rem[_ngcontent-%COMP%]   .pill[_ngcontent-%COMP%]{margin-left:auto}.offer-console[_ngcontent-%COMP%]   .modal[_ngcontent-%COMP%] > footer[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;gap:.5rem;margin-top:1rem;padding-top:.8rem;border-top:1px solid var(--border)}.offer-console[_ngcontent-%COMP%]   .confirm-overlay[_ngcontent-%COMP%]{z-index:80}.offer-console[_ngcontent-%COMP%]   .modal.confirm-alert[_ngcontent-%COMP%]{width:min(420px,100%);text-align:left}.offer-console[_ngcontent-%COMP%]   .modal.confirm-alert[_ngcontent-%COMP%]   .confirm-ico[_ngcontent-%COMP%]{display:inline-grid;place-items:center;width:36px;height:36px;margin-bottom:.45rem;background:#f4f4f2;color:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .modal.confirm-alert[_ngcontent-%COMP%]   .confirm-ico[_ngcontent-%COMP%]   svg[_ngcontent-%COMP%]{width:20px;height:20px}.offer-console[_ngcontent-%COMP%]   .modal.confirm-alert[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%]{margin:0 0 .35rem}.offer-console[_ngcontent-%COMP%]   .modal.confirm-alert[_ngcontent-%COMP%]   .muted[_ngcontent-%COMP%]{margin:0}.offer-console[_ngcontent-%COMP%]   .modal.confirm-alert[_ngcontent-%COMP%]   footer[_ngcontent-%COMP%]{margin-top:1.1rem}.offer-console[_ngcontent-%COMP%]   .btn-primary[_ngcontent-%COMP%]:disabled{opacity:.45;cursor:not-allowed}.offer-console[_ngcontent-%COMP%]   .charts[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.9rem;margin-bottom:.9rem}.offer-console[_ngcontent-%COMP%]   .chart-cols[_ngcontent-%COMP%]{display:grid;grid-template-columns:minmax(240px,280px) 1fr;gap:.9rem;align-items:start}@media(max-width:860px){.offer-console[_ngcontent-%COMP%]   .chart-cols[_ngcontent-%COMP%]{grid-template-columns:1fr}}.offer-console[_ngcontent-%COMP%]   .chart-panel[_ngcontent-%COMP%]{background:#fff;border:1px solid #f8f8f8;border-radius:0;box-shadow:0 1px 2px #0000000a,0 1px 12px #00000008;padding:1rem 1.1rem}.offer-console[_ngcontent-%COMP%]   .chart-panel.grow[_ngcontent-%COMP%]{min-width:0}.offer-console[_ngcontent-%COMP%]   .chart-hd[_ngcontent-%COMP%]{margin-bottom:.75rem}.offer-console[_ngcontent-%COMP%]   .chart-hd[_ngcontent-%COMP%]   h3[_ngcontent-%COMP%]{margin:0 0 .2rem;font-size:.92rem;font-weight:800;color:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .chart-hd[_ngcontent-%COMP%]   p[_ngcontent-%COMP%]{margin:0;font-size:.74rem;color:var(--text-2);line-height:1.45}.offer-console[_ngcontent-%COMP%]   .chart-empty[_ngcontent-%COMP%]{margin:.4rem 0 0;font-size:.8rem;color:var(--text-2)}.offer-console[_ngcontent-%COMP%]   .chart-legend[_ngcontent-%COMP%]{display:flex;flex-wrap:wrap;gap:.55rem 1rem;margin-bottom:.75rem;font-size:.72rem;color:var(--text-2);font-weight:600}
1.offer-console[_ngcontent-%COMP%]   .chart-legend[_ngcontent-%COMP%]   .sw[_ngcontent-%COMP%]{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:.35rem;vertical-align:-1px}.offer-console[_ngcontent-%COMP%]   .chart-legend[_ngcontent-%COMP%]   .sw-sent[_ngcontent-%COMP%]{background:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .chart-legend[_ngcontent-%COMP%]   .sw-applied[_ngcontent-%COMP%]{background:var(--blue)}.offer-console[_ngcontent-%COMP%]   .chart-legend[_ngcontent-%COMP%]   .sw-converted[_ngcontent-%COMP%]{background:var(--green)}.offer-console[_ngcontent-%COMP%]   .funnel[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.45rem}.offer-console[_ngcontent-%COMP%]   .funnel-row[_ngcontent-%COMP%]{display:grid;grid-template-columns:88px 1fr auto;align-items:center;gap:.65rem}.offer-console[_ngcontent-%COMP%]   .funnel-row[_ngcontent-%COMP%]   .funnel-lbl[_ngcontent-%COMP%]{font-size:.74rem;font-weight:700;color:var(--text-2)}.offer-console[_ngcontent-%COMP%]   .funnel-row[_ngcontent-%COMP%]   .funnel-track[_ngcontent-%COMP%]{height:18px;background:#f0efec;border-radius:var(--r-full);overflow:hidden}.offer-console[_ngcontent-%COMP%]   .funnel-row[_ngcontent-%COMP%]   .funnel-track[_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{display:block;height:100%;border-radius:inherit;min-width:0}.offer-console[_ngcontent-%COMP%]   .funnel-row[_ngcontent-%COMP%]   .funnel-val[_ngcontent-%COMP%]{font-size:.82rem;font-weight:800;font-variant-numeric:tabular-nums;min-width:72px}.offer-console[_ngcontent-%COMP%]   .funnel-row[_ngcontent-%COMP%]   .funnel-val[_ngcontent-%COMP%]   small[_ngcontent-%COMP%]{display:block;font-size:.64rem;font-weight:600;color:var(--text-3)}.offer-console[_ngcontent-%COMP%]   .funnel-row[data-k=sent][_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{background:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .funnel-row[data-k=applied][_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{background:var(--blue)}.offer-console[_ngcontent-%COMP%]   .funnel-row[data-k=converted][_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{background:var(--green)}.offer-console[_ngcontent-%COMP%]   .funnel-row[data-k=dropped][_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{background:var(--red)}.offer-console[_ngcontent-%COMP%]   .vchart[_ngcontent-%COMP%]{display:flex;gap:.55rem;min-height:220px}.offer-console[_ngcontent-%COMP%]   .vchart-y[_ngcontent-%COMP%]{display:flex;flex-direction:column;justify-content:space-between;font-size:.64rem;color:var(--text-3);font-weight:700;padding:.2rem 0;text-align:right;min-width:36px;height:180px}.offer-console[_ngcontent-%COMP%]   .vchart-plot[_ngcontent-%COMP%]{position:relative;flex:1;min-width:0}.offer-console[_ngcontent-%COMP%]   .vchart-grid[_ngcontent-%COMP%]{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:space-between;pointer-events:none;height:180px}.offer-console[_ngcontent-%COMP%]   .vchart-grid[_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{display:block;height:0;border-top:1px dashed #f8f8f8}.offer-console[_ngcontent-%COMP%]   .vchart-cols[_ngcontent-%COMP%]{position:relative;z-index:1;display:flex;align-items:stretch;gap:.5rem}.offer-console[_ngcontent-%COMP%]   .vchart-col[_ngcontent-%COMP%]{flex:1;min-width:52px;display:flex;flex-direction:column}.offer-console[_ngcontent-%COMP%]   .vchart-cluster[_ngcontent-%COMP%]{height:180px;display:flex;align-items:flex-end;justify-content:center;gap:4px;border-bottom:1px solid #f8f8f8;padding:0 2px}.offer-console[_ngcontent-%COMP%]   .vbar[_ngcontent-%COMP%]{flex:1;max-width:22px;min-width:10px;min-height:2px;border:0;border-radius:4px 4px 0 0;cursor:pointer;padding:0;position:relative;opacity:.92}.offer-console[_ngcontent-%COMP%]   .vbar[_ngcontent-%COMP%]:hover:not(:disabled){opacity:1;filter:brightness(.92)}.offer-console[_ngcontent-%COMP%]   .vbar[_ngcontent-%COMP%]:disabled{cursor:default;opacity:.28}.offer-console[_ngcontent-%COMP%]   .vbar.bad[_ngcontent-%COMP%]{box-shadow:inset 0 3px 0 var(--red)}.offer-console[_ngcontent-%COMP%]   .vbar.good[_ngcontent-%COMP%]{box-shadow:inset 0 3px 0 var(--green)}.offer-console[_ngcontent-%COMP%]   .vbar[_ngcontent-%COMP%]   .vbar-val[_ngcontent-%COMP%]{position:absolute;
1left:50%;top:-1.1rem;transform:translate(-50%);font-size:.58rem;font-weight:800;color:#1a1a1a;white-space:nowrap}.offer-console[_ngcontent-%COMP%]   .vchart-lbl[_ngcontent-%COMP%]{display:block;margin-top:.4rem;text-align:center;font-size:.66rem;font-weight:700;color:var(--text-2);line-height:1.25}.offer-console[_ngcontent-%COMP%]   .hchart[_ngcontent-%COMP%]{padding:.55rem 0}.offer-console[_ngcontent-%COMP%]   .hchart[_ngcontent-%COMP%] + .hchart[_ngcontent-%COMP%]{border-top:1px solid #f8f8f8}.offer-console[_ngcontent-%COMP%]   .hchart-meta[_ngcontent-%COMP%]{display:flex;align-items:baseline;justify-content:space-between;gap:.6rem;margin-bottom:.3rem}.offer-console[_ngcontent-%COMP%]   .hchart-meta[_ngcontent-%COMP%]   b[_ngcontent-%COMP%]{font-size:.82rem}.offer-console[_ngcontent-%COMP%]   .hchart-bars[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:4px}.offer-console[_ngcontent-%COMP%]   .hbar-track[_ngcontent-%COMP%]{height:8px;background:#f0efec;border-radius:var(--r-full);overflow:hidden}.offer-console[_ngcontent-%COMP%]   .hbar-track[_ngcontent-%COMP%]   i[_ngcontent-%COMP%]{display:block;height:100%;border-radius:inherit}.offer-console[_ngcontent-%COMP%]   .hbar-track[_ngcontent-%COMP%]   .sent[_ngcontent-%COMP%]{background:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .hbar-track[_ngcontent-%COMP%]   .applied[_ngcontent-%COMP%]{background:var(--blue)}.offer-console[_ngcontent-%COMP%]   .hbar-track[_ngcontent-%COMP%]   .converted[_ngcontent-%COMP%]{background:var(--green)}.offer-console[_ngcontent-%COMP%]   .hchart-nums[_ngcontent-%COMP%]{display:flex;gap:.8rem;margin-top:.28rem;font-size:.68rem;font-variant-numeric:tabular-nums;color:var(--text-3);font-weight:600}.offer-console[_ngcontent-%COMP%]   .hchart-note[_ngcontent-%COMP%]{margin:.35rem 0 0;font-size:.72rem;color:var(--text-2);line-height:1.4}.offer-console[_ngcontent-%COMP%]   .hchart-note[_ngcontent-%COMP%]   em[_ngcontent-%COMP%]{font-style:normal;font-weight:700;color:#1a1a1a;margin-right:.35rem}.offer-console[_ngcontent-%COMP%]   .donut-wrap[_ngcontent-%COMP%]{display:flex;align-items:center;gap:1rem;flex-wrap:wrap}.offer-console[_ngcontent-%COMP%]   .donut[_ngcontent-%COMP%]{width:140px;height:140px;transform:rotate(-90deg)}.offer-console[_ngcontent-%COMP%]   .donut[_ngcontent-%COMP%]   .seg[_ngcontent-%COMP%]{fill:none;stroke-width:16}.offer-console[_ngcontent-%COMP%]   .donut[_ngcontent-%COMP%]   .seg-track[_ngcontent-%COMP%]{stroke:#f0efec}.offer-console[_ngcontent-%COMP%]   .donut[_ngcontent-%COMP%]   .seg-converted[_ngcontent-%COMP%]{stroke:var(--green)}.offer-console[_ngcontent-%COMP%]   .donut[_ngcontent-%COMP%]   .seg-dropped[_ngcontent-%COMP%]{stroke:#e8c4c0}.offer-console[_ngcontent-%COMP%]   .donut[_ngcontent-%COMP%]   .donut-big[_ngcontent-%COMP%], .offer-console[_ngcontent-%COMP%]   .donut[_ngcontent-%COMP%]   .donut-small[_ngcontent-%COMP%]{transform:rotate(90deg);transform-origin:80px 80px;text-anchor:middle;font-family:inherit}.offer-console[_ngcontent-%COMP%]   .donut[_ngcontent-%COMP%]   .donut-big[_ngcontent-%COMP%]{font-size:18px;font-weight:800;fill:#1a1a1a}.offer-console[_ngcontent-%COMP%]   .donut[_ngcontent-%COMP%]   .donut-small[_ngcontent-%COMP%]{font-size:9px;font-weight:700;fill:var(--text-3);letter-spacing:.06em;text-transform:uppercase}.offer-console[_ngcontent-%COMP%]   .donut-legend[_ngcontent-%COMP%]{display:flex;flex-direction:column;gap:.35rem;font-size:.78rem}.offer-console[_ngcontent-%COMP%]   .donut-legend[_ngcontent-%COMP%]   .leg-row[_ngcontent-%COMP%]{color:var(--text-2)}.offer-console[_ngcontent-%COMP%]   .donut-legend[_ngcontent-%COMP%]   .leg-row[_ngcontent-%COMP%]   strong[_ngcontent-%COMP%]{color:#1a1a1a;margin-left:.3rem;font-variant-numeric:tabular-nums}.offer-console[_ngcontent-%COMP%]   .donut-legend[_ngcontent-%COMP%]   .leg-row.muted[_ngcontent-%COMP%]{font-size:.7rem;color:var(--text-3)}.offer-console[_ngcontent-%COMP%]   .donut-legend[_ngcontent-%COMP%]   .swatch[_ngcontent-%COMP%]{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:.4rem;vertical-align:-1px}.offer-console[_ngcontent-%COMP%]   .donut-legend[_ngcontent-%COMP%]   .sw-converted[_ngcontent-%COMP%]{background:var(--green)}.offer-console[_ngcontent-%COMP%]   .donut-legend[_ngcontent-%COMP%]   .sw-dropped[_ngcontent-%COMP%]{background:#e8c4c0}.offer-console[_ngcontent-%COMP%]   .no-data[_ngcontent-%COMP%]{padding:2rem 1rem;text-align:center;color:var(--text-2);font-size:.84rem;background:var(--surface)}`],changeDetection:0})};export{be as OfferConsoleComponent};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.