(() => {
  'use strict';
  const C=window.IBCWPConfig||{}, pages=C.pages||{}, allowed=/^ibeauty-(table-card-|referrals$|promo-|hire-|booking-settings-|notice-|reviews-given-|saved-|team-|company-association-|listing-|gallery-|offers-|analytics-|applications|my-applications)/;
  try { const previous=localStorage.getItem('ibc-wp-state-owner'); if(previous!==String(C.account?.wpUserId||0)) Object.keys(localStorage).filter(key=>allowed.test(key)).forEach(key=>localStorage.removeItem(key));localStorage.setItem('ibc-wp-state-owner',String(C.account?.wpUserId||0));if(!C.loggedIn)localStorage.removeItem('ibeauty-demo-session'); } catch(_){}
  /* Feed the unmodified B2 session adapter with the authenticated WordPress account. */
  if(C.account&&C.loggedIn){try{localStorage.setItem('ibeauty-demo-users',JSON.stringify([C.account]));localStorage.setItem('ibeauty-demo-session',JSON.stringify({userId:C.account.id,loggedAt:Date.now(),wordpress:true}))}catch(_){}}
  window.IBCReceiptUrl=receipt=>{const target=new URL(C.pages?.['thankyou.html']||location.href,C.siteUrl);target.searchParams.set('booking',receipt.id);if(receipt.receiptKey)target.searchParams.set('key',receipt.receiptKey);return target.href};
  window.IBCRefreshReceipt=async()=>{let saved;try{saved=JSON.parse(localStorage.getItem('ibeauty-last-booking')||'null')}catch(_){}if(!saved)return null;const current=await window.IBCWP.api('/bookings/receipt?'+new URLSearchParams({booking:saved.id,key:saved.receiptKey||''}));localStorage.setItem('ibeauty-last-booking',JSON.stringify(current));window.dispatchEvent(new CustomEvent('ibc:receipt-updated',{detail:current}));return current};
  const queryBooking=new URLSearchParams(C.contextQuery||'').get('booking');try{window.IBCFirstBooking=!!queryBooking&&sessionStorage.getItem('ibc-new-booking')===queryBooking;if(window.IBCFirstBooking)sessionStorage.removeItem('ibc-new-booking')}catch(_){window.IBCFirstBooking=false;}
  const bookingId=new URLSearchParams(C.contextQuery||'').get('booking');const serverBooking=[...(C.dashboard?.myBookings||[]),...(C.dashboard?.incomingBookings||[])].find(item=>item.id===bookingId);if(bookingId&&!C.receipt&&!serverBooking)try{const saved=JSON.parse(localStorage.getItem('ibeauty-last-booking')||'null');if(saved&&saved.id!==bookingId)localStorage.removeItem('ibeauty-last-booking')}catch(_){}if(C.receipt||serverBooking)try{localStorage.setItem('ibeauty-last-booking',JSON.stringify(C.receipt||serverBooking))}catch(_){}
  Object.entries(C.state||{}).forEach(([key,value])=>{if(allowed.test(key))try{localStorage.setItem(key,value)}catch(_){}});
  try { if(C.account){for(const [collection,key] of [['offers',`ibeauty-offers-${C.account.id}`],['reviewsReceived',`ibeauty-reviews-${C.account.id}`],['reviewsGiven',`ibeauty-reviews-given-${C.account.id}`]])if(Array.isArray(C.dashboard?.[collection]))localStorage.setItem(key,JSON.stringify(C.dashboard[collection].map(item=>({...item,id:String(item.id)}))));if(Array.isArray(C.dashboard?.gallery)){const key=`ibeauty-gallery-${C.account.id}`;let legacy=[];try{const saved=JSON.parse(localStorage.getItem(key)||'[]');if(Array.isArray(saved))legacy=saved.filter(item=>!/^\d+$/.test(String(item.id)));}catch(_){}localStorage.setItem(key,JSON.stringify([...C.dashboard.gallery,...legacy]));}} } catch(_){}
  // Reset the service manager from the database on each load; discard stale demo rows.
  if(C.loggedIn&&C.account){const isCompany=C.account.type==='company',owner=(isCompany?C.catalog?.companies:C.catalog?.professionals)?.find(item=>item.id===C.account.entityId);if(owner){const services=(owner.services||[]).map(service=>isCompany?{id:String(service.databaseId),databaseId:Number(service.databaseId),name:service[0],description:service[1],price:Number(String(service[2]).replace(/[^0-9.]/g,'')),duration:`${service.duration||0} min`,category:owner.category||'',image:service[3]}:{...service,id:String(service.databaseId||service.id),databaseId:Number(service.databaseId||service.id),duration:`${service.duration||0} min`});try{localStorage.setItem(`ibeauty-services-${C.account.id}`,JSON.stringify(services))}catch(_){}}}
  const originalSet=Storage.prototype.setItem,originalRemove=Storage.prototype.removeItem;
  Storage.prototype.setItem=function(key,value){originalSet.call(this,key,value);if(this===localStorage&&C.loggedIn&&allowed.test(String(key)))fetch(`${C.rest}/state`,{method:'PUT',credentials:'same-origin',headers:{'Content-Type':'application/json','X-WP-Nonce':C.nonce},body:JSON.stringify({key:String(key),value:String(value)})}).catch(()=>{})};
  Storage.prototype.removeItem=function(key){originalRemove.call(this,key);if(this===localStorage&&C.loggedIn&&allowed.test(String(key)))fetch(`${C.rest}/state`,{method:'PUT',credentials:'same-origin',headers:{'Content-Type':'application/json','X-WP-Nonce':C.nonce},body:JSON.stringify({key:String(key),remove:true})}).catch(()=>{})};
  const split=value=>{const match=String(value||'').match(/^(?:\.\.\/)?([^?#/]+\.html)(.*)$/i);return match?{file:match[1],tail:match[2]||''}:null};
  const url=value=>{
    const raw=String(value||'');if(raw==='#login')return pages['login.html']||raw;if(raw==='#account'||raw==='#dashboard')return pages['dashboard.html']||raw;if(raw==='#signup')return pages['signup.html']||raw;
    const part=split(raw);if(!part)return value;
    const tail=new URL(part.tail||'',C.siteUrl||location.href);
    const query=new URLSearchParams((part.tail.split('#')[0]||'').replace(/^\?/,''));
    const views={'profile.html':['professionals',''],'company.html':['companies',''],'services.html':['professionals','services/'],'reviews.html':['professionals','reviews/'],'company-services.html':['companies','services/'],'company-reviews.html':['companies','reviews/'],'table-business-card.html':['professionals','card/']};
    const route=views[part.file];let slug=query.get('company')||query.get('id');
    if(!slug&&query.get('name')){const item=[...(C.catalog?.professionals||[]),...(C.catalog?.companies||[])].find(item=>item.name===query.get('name'));slug=item?.id;}
    if(route&&slug&&/^[a-z0-9-]+$/.test(slug)){
      if(!C.prettyPermalinks){const target=new URL(pages[part.file]||C.siteUrl);target.searchParams.set(part.file.startsWith('company')?'company':'id',slug);return target.href;}
      ['id','company','name','role','location','image','price','rating','reviews','reviewType'].forEach(key=>query.delete(key));
      const target=new URL(`${route[0]}/${slug}/${route[1]}`,C.siteUrl||location.origin+'/');target.search=query.toString();target.hash=part.tail.includes('#')?part.tail.slice(part.tail.indexOf('#')):'';return target.href;
    }
    return pages[part.file]?`${pages[part.file]}${part.tail}`:value;
  };
  if(C.prettyPermalinks&&C.profileSlug&&['profile.html','company.html','services.html','reviews.html','company-services.html','company-reviews.html','table-business-card.html'].includes(C.currentFile)){const canonical=url(`${C.currentFile}?id=${encodeURIComponent(C.profileSlug)}`);history.replaceState(null,'',canonical+location.hash);}
  window.IBCWP={config:C,url,api:async(path,options={})=>{const response=await fetch(`${C.rest}${path}`,{credentials:'same-origin',...options,headers:{'Content-Type':'application/json',...(C.nonce?{'X-WP-Nonce':C.nonce}:{}),...(options.headers||{})}});const data=await response.json().catch(()=>({}));if(!response.ok)throw new Error(data.message||'Request failed');return data}};
  const rewrite=root=>root.querySelectorAll?.('a[href],form[action]').forEach(el=>{const attr=el.hasAttribute('href')?'href':'action',value=el.getAttribute(attr),next=url(value);if(next!==value)el.setAttribute(attr,next)});
  const ready=()=>{rewrite(document);new MutationObserver(records=>records.forEach(record=>record.addedNodes.forEach(node=>{if(node.nodeType===1){rewrite(node);if(node.matches?.('a[href],form[action]')){const attr=node.hasAttribute('href')?'href':'action';node.setAttribute(attr,url(node.getAttribute(attr)))}}}))).observe(document.body,{childList:true,subtree:true})};
  document.readyState==='loading'?document.addEventListener('DOMContentLoaded',ready):ready();
})();
.dashboard-main .dashboard-nav [hidden]{display:none!important}
.dashboard-main[data-role="visitor"] .professional-menu,.dashboard-main[data-role="visitor"] .professional-only,.dashboard-main:not([data-role="company"]) .company-menu{display:none!important}
/* Preserve original layouts while keeping hidden pagination and collection sections hidden. */
.load-reviews[hidden],.load-professionals[hidden],.saved-grid[hidden],.saved-tabs[hidden],.ibc-my-subscriptions[hidden]{display:none!important}
.company-page-header-actions{display:flex!important;flex-direction:row!important;align-items:center;gap:12px}
.company-page-header-actions .open-review-form{order:0;white-space:nowrap;margin:0}
.company-page-header-actions .services-view-profile{order:1;white-space:nowrap}
.table-action-one{box-shadow:0 3px 3px #0005!important}
.promotional-email-panel .promo-audience-options{grid-template-columns:repeat(3,minmax(0,1fr))}
.promotional-email-panel .promo-audience-options label{min-width:0}
.promotional-email-panel .promo-audience-options small{line-height:1.5}
.promotional-email-panel .ibc-subscribers{padding:0;margin:24px 0 0;border:1px solid #eadfe3;border-radius:16px;background:#fffafd;overflow:hidden}
.ibc-subscribers summary{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:17px 20px;cursor:pointer;list-style:none}
.ibc-subscribers summary::-webkit-details-marker{display:none}
.ibc-subscribers summary b{font-size:14px}.ibc-subscribers summary small{display:block;margin-top:5px;color:#847681;font-size:12px}
.ibc-details-chevron{color:#ed376c;font-size:22px}.ibc-subscribers[open] .ibc-details-chevron{transform:rotate(180deg)}
.ibc-subscriber-content{padding:0 20px 18px}.ibc-subscriber-content>label{display:grid;gap:7px;font-size:11px;color:#73646b}.ibc-subscriber-content input{width:100%;padding:12px;border:1px solid #eadfe3;border-radius:10px;background:#fff;font:inherit;font-size:13px}
.ibc-subscriber-list{margin-top:12px}.ibc-subscriber-row{padding:12px 0;display:flex;align-items:center;justify-content:space-between;gap:14px;border-bottom:1px solid #eee4e8;font-size:13px}.ibc-subscriber-row>span{min-width:0;overflow-wrap:anywhere}.ibc-subscriber-row small{display:block;color:#97838d;font-size:10px;margin-top:4px}.ibc-subscriber-row>b{padding:6px 10px;border-radius:30px;font-size:10px;background:#e6f6ee;color:#168262}.ibc-subscriber-row.unsubscribed>b{background:#f1edef;color:#8b7782}
.promo-more,.ibc-contacts-empty{font-size:12px;color:#8d7782;line-height:1.6}.ibc-collection-tabs{margin-bottom:20px}.ibc-collection-tabs button span{margin-left:6px;background:#fff0f5;padding:3px 7px;border-radius:20px;color:#ed376c}
.ibc-my-subscriptions{display:grid;gap:14px}.ibc-subscription-item{display:flex;align-items:center;gap:16px;padding:20px;border:1px solid #eadfe3;border-radius:17px;background:#fff}.ibc-subscription-avatar{display:grid;place-items:center;width:52px;height:52px;flex-shrink:0;border-radius:15px;background:#fff0f5;color:#ed376c;font-size:23px;font-weight:700}.ibc-subscription-item>div{flex:1;min-width:0}.ibc-subscription-item h3{margin:4px 0;font-size:17px;overflow-wrap:anywhere}.ibc-subscription-item p,.ibc-subscription-item small{margin:0 0 7px;color:#8d7782;font-size:12px}.ibc-subscription-item a{color:#ed376c;font-size:12px;font-weight:700}.ibc-subscription-item button{border:1px solid #edd9e2;background:#fff8fa;border-radius:10px;padding:10px 14px;color:#ba305b;font:600 12px 'DM Sans',sans-serif;cursor:pointer}
@media(max-width:800px){.promotional-email-panel .promo-audience-options{grid-template-columns:1fr}.company-page-header-actions{flex-wrap:wrap}.company-page-header-actions>*{flex:1}.ibc-subscription-item{flex-wrap:wrap;padding:16px}.ibc-subscription-item button{margin-left:68px}.ibc-subscribers summary{padding:15px}.ibc-subscriber-content{padding:0 15px 15px}}
.company-page-header-actions .open-review-form,.company-page-header-actions .services-view-profile{height:50px!important;display:inline-flex!important;align-items:center;justify-content:center}
@media(max-width:800px){.company-page-header-actions{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));width:100%;gap:10px}.company-page-header-actions>*{min-width:0!important;width:auto!important;padding-left:10px!important;padding-right:10px!important;font-size:12px!important}}
.company-page-header-actions .open-review-form,.company-page-header-actions .services-view-profile{margin:0!important}
.services-hero .company-page-header-actions .open-review-form,.services-hero .company-page-header-actions .services-view-profile{margin:0!important}
.ib-card .pro-price>em{display:flex!important;align-items:center!important;justify-content:center!important;text-align:center!important;flex-shrink:0;min-width:48px;line-height:1.25!important;padding:6px!important;word-break:normal!important}
.ibc-profile-share[data-company="true"] .shared-profile>img{width:150px!important;height:82px!important;max-width:45%;border-radius:12px!important;object-fit:contain!important;padding:8px;background:#fff;border:1px solid #eee4e8;flex-shrink:0}
.professional-review-badge>span,.card-reviews-link>span{white-space:nowrap}
.ibc-owner-referrals[hidden],.ibc-owner-subscribers[hidden],.ibc-owner-more[hidden]{display:none!important}
.ibc-owner-tabs{margin:0 0 24px}.ibc-owner-tabs span{margin-left:7px;color:#ed376c}.ibc-export-subscribers,.ibc-owner-more{padding:11px 17px;border:1px solid #eadbe3;border-radius:11px;background:#fff3f7;color:#d52f64;font:700 12px 'DM Sans',sans-serif;cursor:pointer}
.ibc-subscriber-summary{padding:18px;border-radius:14px;background:#fff1f6;color:#b52e5b;font-weight:700;font-size:14px;margin-bottom:20px}.ibc-owner-filters{display:flex;gap:12px}.ibc-owner-filters input{flex:1;min-width:0}.ibc-owner-filters input,.ibc-owner-filters select{padding:13px;border:1px solid #eadfe3;border-radius:11px;font:inherit;font-size:13px}.ibc-owner-contact{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:18px 0;border-bottom:1px solid #eee4e8}.ibc-owner-contact>span{min-width:0;overflow-wrap:anywhere}.ibc-owner-contact small{display:block;margin-top:7px;color:#94818c;font-size:11px;line-height:1.6}.ibc-owner-contact em{font-style:normal;border-radius:20px;padding:7px 10px;font-size:11px;color:#168262;background:#e7f7ee}.ibc-owner-contact em.unsubscribed{background:#f1edef;color:#8b7783}.ibc-owner-more{margin-top:20px}
@media(max-width:600px){.ibc-owner-filters{flex-direction:column}.ibc-owner-contact{align-items:flex-start}.ibc-owner-contact b{font-size:12px}.ibc-owner-contact small{font-size:10px}}
.ibc-profile-share[data-company="true"] .shared-profile>img{height:auto!important;aspect-ratio:2 / 1!important;max-height:none!important}
.ibc-profile-share .shared-profile>span{min-width:0}.ibc-profile-share .shared-profile b{overflow-wrap:anywhere}
@media(max-width:720px){.professionals-head{flex-direction:column;align-items:flex-start;gap:14px}.professionals-head>a{display:inline-flex!important;align-items:center;gap:8px;min-height:38px;margin:0;font-size:12px}}
.ibc-profile-share[data-company="true"] .shared-profile{padding:16px!important;gap:18px!important;min-height:110px}.ibc-profile-share[data-company="true"] .shared-profile>img{width:140px!important;max-width:42%;height:auto!important;aspect-ratio:2 / 1;padding:8px!important;box-sizing:border-box;margin:0!important}
.dbc-toolbar{display:flex;align-items:center;gap:12px;margin:20px 0}.dbc-toolbar strong{margin-right:auto;color:#51424b;font-size:14px}.dbc-toolbar input,.dbc-toolbar select{padding:12px;border:1px solid #eadfe3;border-radius:10px;font:inherit;font-size:13px;min-width:0}.dbc-download{display:inline-flex;padding:11px 16px;border:1px solid #eadfe3;border-radius:10px;background:#fff5f8;color:#d52f64;font-size:13px;font-weight:700;cursor:pointer}.dbc-table-wrap{width:100%;overflow-x:auto;border:1px solid #eee3e9;border-radius:14px;background:#fff}.dbc-table{width:100%;border-collapse:collapse;font-size:13px;line-height:1.45}.dbc-table th{padding:12px;text-align:left;white-space:nowrap;background:#fff7fa;font-size:12px;color:#8c6d7d;font-weight:700}.dbc-table td{padding:10px 12px;border-top:1px solid #f0e6ec;white-space:nowrap;color:#45323f}.dbc-table tbody tr:hover{background:#fffafd}.dbc-status{display:inline-block;padding:4px 8px;border-radius:20px;font-size:11px;color:#177b61;background:#e9f7ef}.dbc-status.unsubscribed,.dbc-status.failed,.dbc-status.skipped{background:#f7edf1;color:#aa4367}.dbc-status.new{color:#d52f64;background:#fff0f5}.dbc-actions button,.dbc-pagination button{padding:6px 10px;border:1px solid #e8dce4;border-radius:8px;background:#fff;color:#806274;font:inherit;font-size:12px;cursor:pointer}.dbc-actions{display:flex;gap:6px}.dbc-pagination{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:16px;font-size:13px;color:#88717f}.dbc-pagination nav{display:flex;align-items:center;gap:5px}.dbc-pagination nav[hidden]{display:none!important}.dbc-pagination button.active{color:#fff;background:#ed376c;border-color:#ed376c}.dbc-pagination button:disabled{opacity:.45;cursor:default}.dbc-message{font-size:13px;color:#96717f;min-height:18px}.promo-send-list .dbc-table td{white-space:normal;overflow-wrap:anywhere}.promo-audience-block .promo-recipient-count{font-size:24px}.promo-audience-block header>strong{width:auto;min-width:90px;padding:12px}.promo-delivery-stats b{overflow-wrap:anywhere}.dba-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.dba-heading>div>span,.dba-chart-card small,.dba-status-card>small,.dba-services-card small{font-size:10px;font-weight:800;letter-spacing:.15em;color:#ed376c}.dba-heading h2{font-size:28px;margin:9px 0}.dba-heading p{font-size:14px;color:#8e7584;line-height:1.6}.dba-heading label{display:grid;gap:7px;font-size:12px;font-weight:700}.dba-heading input{padding:11px;border:1px solid #eadfe3;border-radius:10px;background:#fff;font:inherit}.dba-message,.dba-footnote{color:#9a7e8d;font-size:12px;line-height:1.65}.dba-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:22px 0}.dba-metric{position:relative;padding:20px;border:1px solid #eee0e8;border-radius:18px;background:linear-gradient(135deg,#fff,#fff9fc);box-shadow:0 10px 30px #6d304409;overflow:hidden;animation:dbaIn .35s ease both}.dba-metric .dba-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:#fff0f5;color:#ed376c;font-size:18px;font-weight:700;margin-bottom:12px}.dba-metric small{font-size:12px;color:#8c6a7c}.dba-metric>b{display:block;margin:9px 0;font-size:27px;font-weight:800;letter-spacing:-.03em;overflow-wrap:anywhere}.dba-metric p{margin:0;font-size:11px;color:#9b8492;line-height:1.5}.dba-layout{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(260px,1fr);gap:18px}.dba-chart-card,.dba-status-card,.dba-services-card{padding:22px;border:1px solid #eee1e8;border-radius:19px;background:#fff}.dba-chart-card header,.dba-services-card header{display:flex;justify-content:space-between;gap:15px;align-items:center}.dba-chart-card h3,.dba-status-card h3,.dba-services-card h3{margin:8px 0;font-size:17px}.dba-legend{display:flex;flex-wrap:wrap;gap:10px;font-size:11px;color:#ed376c}.dba-legend span:last-child{color:#b38a39}.dba-chart svg{width:100%;height:auto;min-height:190px}.dba-line{fill:none;stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1800;stroke-dashoffset:0;animation:dbaDraw .85s ease}.dba-views{stroke:#ed376c}.dba-books{stroke:#b38a39}.dba-chart svg g:focus{outline:none}.dba-chart svg g:focus circle,.dba-chart svg g:hover circle{r:6;stroke:#fff;stroke-width:2}.dba-chart-card>p,.dba-status-card>p,.dba-services-card p{font-size:12px;color:#9a8090;line-height:1.65}.dba-chart-card summary{cursor:pointer;color:#d42d62;font-size:12px;margin:14px 0}.dba-statuses>div{margin:22px 0}.dba-statuses header{display:flex;justify-content:space-between;font-size:13px;color:#765567}.dba-statuses i{display:block;height:7px;margin-top:9px;background:#f6edf2;border-radius:20px;overflow:hidden}.dba-statuses em{display:block;height:100%;background:#ed376c;border-radius:inherit;animation:dbaGrow .6s ease}.dba-statuses .status-1{background:#37a17e}.dba-statuses .status-2{background:#9b69be}.dba-statuses .status-3{background:#c09aa9}.dba-services-card{margin:20px 0}.dba-services-card .dbc-table td{white-space:normal}@keyframes dbaIn{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes dbaDraw{from{stroke-dashoffset:1800}to{stroke-dashoffset:0}}@keyframes dbaGrow{from{transform:scaleX(0);transform-origin:left}to{transform:scaleX(1);transform-origin:left}}
@media(max-width:1050px){.dba-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.dba-layout{grid-template-columns:1fr}}@media(max-width:650px){.dbc-toolbar{flex-wrap:wrap}.dbc-toolbar strong{width:100%}.dbc-toolbar input{flex:1;max-width:100%}.dbc-toolbar select{max-width:100%}.dbc-pagination{align-items:flex-start;flex-direction:column}.dbc-pagination nav{flex-wrap:wrap}.dba-heading{flex-direction:column}.dba-metric{padding:15px}.dba-metric>b{font-size:22px}.dba-chart-card,.dba-status-card,.dba-services-card{padding:15px}.dba-chart-card header{align-items:flex-start;flex-direction:column}.dba-chart svg{min-height:120px}.dba-heading h2{font-size:24px}}
@media(prefers-reduced-motion:reduce){.dba-metric,.dba-line,.dba-statuses em{animation:none!important}}
.ibc-profile-share[data-company="true"] .shared-profile{min-height:0!important}
.promo-history-list [data-history]{padding:7px 12px;border:1px solid #eadfe3;border-radius:9px;background:#fff;font:inherit;font-size:12px;color:#d52f64;cursor:pointer}

.ibc-profile-share[data-company="true"] .shared-profile{height:auto!important;overflow:visible!important;min-height:104px!important}
