.bls-app{margin-left:-20px;display:flex;min-height:calc(100vh - 32px);background:#f5f2ea;font-family:Inter,Arial,sans-serif;color:#0e1114}.bls-sidebar{width:285px;background:#080a0a;color:#fff;padding:34px 22px;position:sticky;top:32px;height:calc(100vh - 32px);box-sizing:border-box}.bls-logo{display:flex;gap:14px;align-items:center;margin-bottom:50px}.bls-logo b{font-size:28px;letter-spacing:.5px;display:block;line-height:1.1}.bls-pin-img{width:64px;height:64px;object-fit:contain;display:block}.bls-logo span{display:block;color:#ffd200;letter-spacing:8px;font-size:18px;line-height:1.25}.bls-logo em{font-size:11px;color:#ddd;font-style:normal}.bls-pin{display:none}.bls-sidebar nav a{display:flex;justify-content:space-between;color:#ddd;text-decoration:none;padding:18px 20px;border-radius:18px;margin:10px 0;font-weight:800}.bls-sidebar nav a.active{background:#ffd200;color:#0a0a0a}.bls-sidebar small{border:1px solid #777;border-radius:20px;padding:3px 8px;font-size:10px;color:#aaa}.bls-wwbd{position:absolute;bottom:34px;left:22px;right:22px;background:linear-gradient(135deg,#202020,#121212);border:1px solid #333;border-radius:24px;padding:22px}.bls-wwbd p{color:#d8d8d8;font-weight:700;line-height:1.5}.bls-main{flex:1;padding:46px 50px}.bls-grid{display:grid;grid-template-columns:minmax(600px,1fr) 420px;gap:34px}.bls-card{background:#fff;border-radius:32px;padding:38px;box-shadow:0 12px 40px rgba(0,0,0,.06)}.bls-wide h1{font-size:56px;line-height:1.14;margin:30px 0 22px;letter-spacing:-2px}.bls-lede{font-size:24px;color:#6b7079;line-height:1.45}.bls-kicker{display:inline-block;background:#fff1b9;color:#5d4700;padding:13px 22px;border-radius:30px;font-weight:900;letter-spacing:.6px}.bls-buzzbox{border:1px solid #ffd200;background:#fff9df;border-radius:24px;padding:26px;margin:34px 0;display:flex;gap:22px;align-items:flex-start}.bls-buzzbox .bee{font-size:32px}.bls-buzzbox h2{margin:0 0 10px;font-size:28px;line-height:1.25}.bls-buzzbox p{font-size:20px;line-height:1.55;color:#66543a;margin:0}.bls-field label{font-weight:900;display:block;margin:20px 0 10px;font-size:18px}.bls-input,.bls-textarea{width:100%;box-sizing:border-box;border:1px solid #ddd;border-radius:18px;background:#eef4ff;padding:24px 28px;font-size:22px;font-weight:800}.bls-textarea{min-height:150px;background:#fff;font-weight:700;color:#333}.bls-btn{background:#050505;color:#fff;border:none;border-radius:18px;padding:17px 28px;font-size:17px;font-weight:900;cursor:pointer;margin-right:12px;line-height:1.2}.bls-btn.disabled,.bls-btn:disabled{opacity:.45;cursor:not-allowed}.bls-actions{margin-top:28px}.bls-thinking{opacity:.92}.bls-reply-ready{border-color:#f2c400;background:#fff7cf}.bls-btn.ghost{background:#fff;color:#111;border:1px solid #e5e0d5}.bls-progress-item{padding:18px 20px;background:#f4f0e7;border-radius:18px;margin:14px 0;font-weight:900;color:#777;display:flex;gap:13px;align-items:center}.bls-progress-item.active{background:#fff0b8;color:#111}.bls-progress-dot{width:20px;height:20px;border-radius:50%;border:3px solid #d0c8b8}.active .bls-progress-dot,.done .bls-progress-dot{background:#ffd200;border-color:#ffd200}.bls-dark{background:#060606;color:#fff;border-radius:24px;padding:28px;margin-top:34px}.bls-understands{background:#f7faf7;border:1px solid #dde8dd;border-radius:22px;padding:22px;margin-top:24px}.bls-understands summary{margin-top:0;font-size:20px;font-weight:900;cursor:pointer;line-height:1.3}.bls-understands[open] summary{margin-bottom:14px}.bls-understands ul{margin:0;padding-left:18px}.bls-complete h2{font-size:38px;line-height:1.22;margin:24px 0 18px}.bls-complete p{font-size:20px;line-height:1.7}.bls-test-result{margin-top:20px;font-weight:800}

@media(max-width:1200px){.bls-grid{grid-template-columns:1fr}.bls-wide h1{font-size:44px}.bls-main{padding:32px}.bls-sidebar{width:250px}.bls-logo b{font-size:23px}.bls-logo span{font-size:15px;letter-spacing:6px}}

/* v0.6.3 Stability: sidebar/settings/logo regression fixes */
.bls-sidebar{overflow-y:auto;overflow-x:hidden;padding-bottom:28px;}
.bls-logo{display:none!important;}
.bls-logo-card{display:flex;align-items:center;background:#070808;border:1px solid rgba(255,210,0,.2);border-radius:18px;padding:16px 14px;margin-bottom:30px;box-shadow:0 12px 30px rgba(0,0,0,.25)}
.bls-logo-card .bls-sidebar-logo{display:block;width:100%;max-width:220px;height:auto;}
.bls-sidebar nav{padding-bottom:22px;}
.bls-sidebar nav a{padding:15px 18px;margin:8px 0;line-height:1.25;}
.bls-wwbd{position:relative;left:auto;right:auto;bottom:auto;margin-top:22px;}
.bls-card h1,.bls-wide h1{line-height:1.12;}
.bls-complete h2{line-height:1.18!important;letter-spacing:-.8px;}
#bls-test-result{margin-top:18px;}
.bls-settings-grid{display:grid;grid-template-columns:1fr 320px;gap:28px;align-items:start}.bls-status-card{background:#fff9df;border:1px solid #ffd200;border-radius:22px;padding:22px}.bls-status-pill{display:inline-block;background:#111;color:#fff;border-radius:999px;padding:8px 14px;font-weight:900;font-size:12px;letter-spacing:.3px}
@media(max-height:850px){.bls-sidebar{position:relative;height:auto;min-height:calc(100vh - 32px);}.bls-wwbd{display:none;}}
@media(max-width:1200px){.bls-settings-grid{grid-template-columns:1fr}.bls-logo-card .bls-sidebar-logo{max-width:190px}}

.bls-ready{display:inline-flex;align-items:center;margin-top:12px;padding:9px 13px;border-radius:999px;background:#f0fff6;color:#11874a;font-weight:900;font-size:13px;border:1px solid rgba(17,135,74,.18);}
.bls-progress-item.done{transition:all .25s ease;}

/* v0.7.0 Front-End Studio Shell */
.bls-front-wrap{width:100%;min-height:100vh;background:#f5f2ea;margin:0;padding:0;font-family:Inter,Arial,sans-serif;}
.bls-frontend-app{margin-left:0!important;min-height:100vh!important;}
.bls-frontend-app .bls-sidebar{top:0!important;height:100vh!important;min-height:100vh!important;position:sticky!important;}
body:has(.bls-front-wrap){background:#f5f2ea;}
.bls-login-shell{min-height:100vh;display:grid;grid-template-columns:.82fr 1.18fr;background:radial-gradient(circle at 18% 20%,rgba(255,210,0,.22),transparent 32%),#f5f2ea;color:#0e1114;}
.bls-login-brand{padding:72px;display:flex;flex-direction:column;justify-content:center;}
.bls-login-mark{width:94px;height:94px;border-radius:28px;background:#111;display:flex;align-items:center;justify-content:center;margin-bottom:28px;box-shadow:0 22px 50px rgba(0,0,0,.16)}
.bls-login-mark img{width:68px;height:68px;object-fit:contain;}
.bls-login-brand h1{font-size:72px;line-height:1.02;margin:0 0 18px;letter-spacing:-3px;max-width:620px;}
.bls-login-tag{font-size:26px;line-height:1.4;color:#5f6570;margin:0 0 42px;max-width:560px;font-weight:800;}
.bls-login-promise{background:#fff;border-radius:30px;padding:30px 34px;box-shadow:0 18px 50px rgba(0,0,0,.08);max-width:560px;border:1px solid rgba(0,0,0,.05)}
.bls-login-promise b{display:block;font-size:24px;margin-bottom:8px;}.bls-login-promise span{font-size:19px;color:#6b7079;font-weight:700;}
.bls-login-card{align-self:center;margin-right:72px;background:#fff;border-radius:34px;padding:44px;box-shadow:0 24px 80px rgba(0,0,0,.11);border:1px solid rgba(0,0,0,.06)}
.bls-login-card h2{font-size:42px;line-height:1.1;margin:22px 0 12px;letter-spacing:-1px;}.bls-login-card p{font-size:18px;line-height:1.55;color:#68707a;font-weight:700;}
.bls-login-card label{display:block;font-weight:900;margin:18px 0 8px}.bls-login-card input[type=text],.bls-login-card input[type=password]{width:100%;box-sizing:border-box;border:1px solid #ddd;border-radius:16px;padding:17px 18px;font-size:17px;background:#f8fafc;}
.bls-login-card input[type=submit]{background:#050505;color:#fff;border:none;border-radius:18px;padding:17px 28px;font-size:17px;font-weight:900;cursor:pointer;margin-top:10px;width:100%;}
.bls-login-card .login-remember label{display:flex;gap:8px;align-items:center;font-weight:800;color:#4f5660;}
@media(max-width:900px){.bls-login-shell{grid-template-columns:1fr}.bls-login-brand{padding:44px 28px 20px}.bls-login-brand h1{font-size:48px}.bls-login-card{margin:20px 28px 44px}.bls-frontend-app{display:block}.bls-frontend-app .bls-sidebar{position:relative!important;width:auto!important;height:auto!important;min-height:auto!important}.bls-main{padding:26px!important}.bls-grid{grid-template-columns:1fr!important}}

/* v0.7.1 Front-end polish: make Studio feel like an app, not embedded page content */
.bls-hidden-intro{display:none!important;}
.bls-front-wrap{position:fixed!important;left:0!important;right:0!important;top:0!important;bottom:0!important;width:100vw!important;height:100vh!important;z-index:9999!important;overflow:auto!important;background:#f5f2ea!important;}
.admin-bar .bls-front-wrap{top:32px!important;height:calc(100vh - 32px)!important;}
.bls-front-wrap *{box-sizing:border-box;}
.bls-frontend-app .bls-sidebar{background:#060808!important;box-shadow:18px 0 40px rgba(0,0,0,.08);scrollbar-width:none;}
.bls-frontend-app .bls-sidebar::-webkit-scrollbar{width:0;height:0;}
.bls-frontend-app .bls-main{min-width:0;}
.bls-wide h1{max-width:820px;}
.bls-lede{max-width:840px;}
#bls-blueprint-intro{transition:opacity .2s ease, transform .2s ease;}
@media(max-width:782px){.admin-bar .bls-front-wrap{top:46px!important;height:calc(100vh - 46px)!important;}}


/* v0.7.2: front-end auto-render guard. The shortcode can render from Elementor, page content, or footer fallback. */
.bls-front-wrap{display:block!important;}
body:has(.bls-front-wrap) header,
body:has(.bls-front-wrap) footer{visibility:hidden;}
body:has(.bls-front-wrap) .bls-front-wrap header,
body:has(.bls-front-wrap) .bls-front-wrap footer{visibility:visible;}


/* v0.7.4 Front-End App Shell Stabilization
   Goal: Studio behaves like a standalone SaaS app inside Elementor Canvas. */
body.bls-studio-page,
body.bls-studio-page html{
  margin:0!important;
  padding:0!important;
  overflow:hidden!important;
  background:#f5f2ea!important;
}
body.bls-studio-page #wpadminbar{
  display:none!important;
  visibility:hidden!important;
  height:0!important;
}
body.bls-studio-page.admin-bar{
  margin-top:0!important;
  padding-top:0!important;
}
body.bls-studio-page .bls-front-wrap{
  position:fixed!important;
  z-index:2147483000!important;
  inset:0!important;
  top:0!important;
  left:0!important;
  right:0!important;
  bottom:0!important;
  width:100vw!important;
  height:100vh!important;
  min-height:100vh!important;
  max-height:100vh!important;
  overflow:hidden!important;
  background:#f5f2ea!important;
}
body.bls-studio-page.admin-bar .bls-front-wrap{
  top:0!important;
  height:100vh!important;
}
body.bls-studio-page .bls-frontend-app{
  display:flex!important;
  width:100%!important;
  height:100vh!important;
  min-height:100vh!important;
  max-height:100vh!important;
  margin:0!important;
  overflow:hidden!important;
}
body.bls-studio-page .bls-frontend-app .bls-sidebar{
  position:relative!important;
  top:auto!important;
  left:auto!important;
  flex:0 0 285px!important;
  width:285px!important;
  height:100vh!important;
  min-height:100vh!important;
  max-height:100vh!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  scrollbar-width:none!important;
}
body.bls-studio-page .bls-frontend-app .bls-sidebar::-webkit-scrollbar{
  width:0!important;
  height:0!important;
}
body.bls-studio-page .bls-frontend-app .bls-main{
  flex:1 1 auto!important;
  min-width:0!important;
  height:100vh!important;
  max-height:100vh!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  padding:46px 50px!important;
  overscroll-behavior:contain!important;
}
body.bls-studio-page .bls-frontend-app .bls-main::-webkit-scrollbar{
  width:12px;
}
body.bls-studio-page .bls-frontend-app .bls-main::-webkit-scrollbar-track{
  background:#eee9de;
}
body.bls-studio-page .bls-frontend-app .bls-main::-webkit-scrollbar-thumb{
  background:#c9c0ae;
  border-radius:999px;
  border:3px solid #eee9de;
}
body.bls-studio-page .elementor,
body.bls-studio-page .elementor-section,
body.bls-studio-page .elementor-container,
body.bls-studio-page .elementor-widget-wrap,
body.bls-studio-page .elementor-widget-shortcode{
  margin:0!important;
  padding:0!important;
}
@media(max-width:900px){
  body.bls-studio-page .bls-frontend-app{display:block!important;overflow-y:auto!important;}
  body.bls-studio-page .bls-frontend-app .bls-sidebar{width:100%!important;height:auto!important;min-height:auto!important;max-height:none!important;}
  body.bls-studio-page .bls-frontend-app .bls-main{height:auto!important;max-height:none!important;overflow:visible!important;padding:26px!important;}
}

/* v0.7.5 hard app-shell lock for Elementor/theme wrappers */
html:has(.bls-front-wrap),
body.bls-studio-page{
  width:100%!important;
  height:100%!important;
  max-height:100%!important;
  overflow:hidden!important;
}
body.bls-studio-page{
  position:fixed!important;
  inset:0!important;
}
body.bls-studio-page #wpadminbar{display:none!important;}
body.bls-studio-page .bls-front-wrap{
  position:fixed!important;
  inset:0!important;
  width:100vw!important;
  height:100vh!important;
  overflow:hidden!important;
}
body.bls-studio-page .bls-frontend-app .bls-main{
  overscroll-behavior:contain!important;
  -webkit-overflow-scrolling:touch;
}
body.bls-studio-page::-webkit-scrollbar,
html:has(.bls-front-wrap)::-webkit-scrollbar{
  width:0!important;
  height:0!important;
}

/* v0.8.0 Buzz Presence */
.bls-blueprint-card{position:relative;overflow:visible;}
.bls-buzz-stage{position:absolute;right:58px;top:28px;z-index:3;pointer-events:none;}
.bls-hero-buzz{display:block;width:210px;max-height:295px;object-fit:contain;filter:drop-shadow(0 18px 22px rgba(0,0,0,.16));animation:blsBuzzIn .35s ease-out both, blsBuzzFloat 4.6s ease-in-out .35s infinite;}
.bls-buzz-celebrate{width:235px;}
@keyframes blsBuzzIn{from{opacity:0;transform:translateY(10px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes blsBuzzFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
#bls-blueprint-intro{max-width:760px;position:relative;z-index:2;}
#bls-blueprint-intro .bls-lede{max-width:760px;}
.bls-question-card{margin-top:28px;position:relative;z-index:4;}
.bls-buzzbox .bee img{width:54px;height:54px;object-fit:contain;display:block;filter:drop-shadow(0 8px 10px rgba(0,0,0,.12));}
.bls-speech{position:relative;margin-left:18px;}
.bls-speech:before{content:"";position:absolute;left:-10px;top:28px;width:18px;height:18px;background:inherit;border-left:1px solid #ffd200;border-bottom:1px solid #ffd200;transform:rotate(45deg);border-radius:4px;}
.bls-reply-ready h2,.bls-thinking h2{line-height:1.2;}
.bls-complete-with-buzz{padding-top:12px;}
.bls-complete-with-buzz .bls-kicker{box-shadow:0 10px 24px rgba(255,210,0,.18);}
@media(max-width:1500px){.bls-hero-buzz{width:170px}.bls-buzz-stage{right:36px;top:34px}#bls-blueprint-intro{max-width:680px}}
@media(max-width:1250px){.bls-buzz-stage{position:relative;right:auto;top:auto;text-align:right;margin:-10px 0 -8px}.bls-hero-buzz{width:150px;display:inline-block}#bls-blueprint-intro{max-width:none}}
@media(max-width:900px){.bls-buzz-stage{display:none}.bls-buzzbox .bee img{width:42px;height:42px}.bls-speech{margin-left:0}.bls-speech:before{display:none}}


/* v0.8.1 Buzz Responsive Positioning */
.bls-blueprint-card{overflow:hidden!important;}
.bls-buzz-stage{pointer-events:none!important;}
.bls-intro-active .bls-buzz-stage{
  position:absolute!important;
  right:86px!important;
  top:48px!important;
  width:230px!important;
  height:320px!important;
  display:flex!important;
  align-items:flex-start!important;
  justify-content:center!important;
  z-index:2!important;
}
.bls-intro-active .bls-hero-buzz{
  width:min(220px,18vw)!important;
  max-height:315px!important;
}
.bls-intro-active #bls-blueprint-intro{
  max-width:calc(100% - 300px)!important;
  min-height:315px!important;
  padding-right:22px!important;
  z-index:3!important;
}
.bls-intro-active #bls-blueprint{
  position:relative!important;
  z-index:5!important;
}
.bls-step-active .bls-buzz-stage{
  position:relative!important;
  right:auto!important;
  top:auto!important;
  width:100%!important;
  height:145px!important;
  margin:-14px 0 -22px!important;
  display:flex!important;
  justify-content:flex-end!important;
  align-items:flex-start!important;
  z-index:1!important;
}
.bls-step-active .bls-hero-buzz{
  width:145px!important;
  max-height:170px!important;
  margin-right:52px!important;
}
.bls-step-active #bls-blueprint{
  position:relative!important;
  z-index:4!important;
}
.bls-question-card,.bls-field,#bls-reply,.bls-understands,.bls-actions{
  position:relative!important;
  z-index:5!important;
}
.bls-buzzbox .bee img{
  flex:0 0 auto!important;
}
@media(max-width:1450px){
  .bls-intro-active .bls-buzz-stage{right:54px!important;width:190px!important;}
  .bls-intro-active .bls-hero-buzz{width:min(180px,17vw)!important;}
  .bls-intro-active #bls-blueprint-intro{max-width:calc(100% - 235px)!important;}
  .bls-step-active .bls-hero-buzz{width:125px!important;margin-right:36px!important;}
  .bls-step-active .bls-buzz-stage{height:125px!important;}
}
@media(max-width:1180px){
  .bls-intro-active .bls-buzz-stage,
  .bls-step-active .bls-buzz-stage{
    position:relative!important;
    right:auto!important;
    top:auto!important;
    width:100%!important;
    height:auto!important;
    margin:-8px 0 10px!important;
    justify-content:flex-end!important;
    z-index:1!important;
  }
  .bls-intro-active .bls-hero-buzz,
  .bls-step-active .bls-hero-buzz{
    width:128px!important;
    max-height:150px!important;
    margin-right:16px!important;
  }
  .bls-intro-active #bls-blueprint-intro{
    max-width:100%!important;
    min-height:0!important;
    padding-right:0!important;
  }
}
@media(max-width:900px){
  .bls-buzz-stage{display:flex!important;justify-content:center!important;margin:0 0 16px!important;}
  .bls-hero-buzz{width:100px!important;max-height:120px!important;margin:0!important;}
}


/* v0.8.2 Official Buzz Asset Pack + Mood Engine */
.bls-hero-buzz{object-fit:contain!important;object-position:center center!important;}
.bls-buzzbox .bee img{border-radius:0!important;background:transparent!important;}
.bls-intro-active .bls-buzz-stage{
  right:66px!important;
  top:44px!important;
  width:260px!important;
  height:330px!important;
  align-items:flex-start!important;
  overflow:visible!important;
}
.bls-intro-active .bls-hero-buzz{
  width:250px!important;
  max-height:330px!important;
  object-position:center top!important;
}
.bls-intro-active #bls-blueprint-intro{
  max-width:calc(100% - 330px)!important;
  min-height:300px!important;
}
.bls-step-active .bls-buzz-stage{
  height:112px!important;
  margin:-8px 0 -10px!important;
  justify-content:flex-end!important;
  overflow:visible!important;
  z-index:2!important;
}
.bls-step-active .bls-hero-buzz{
  width:158px!important;
  max-height:145px!important;
  margin-right:54px!important;
  object-position:center bottom!important;
}
.bls-question-card{z-index:6!important;}
.bls-field,#bls-reply,.bls-understands,.bls-actions{z-index:7!important;}
@media(max-width:1450px){
  .bls-intro-active .bls-buzz-stage{right:42px!important;width:220px!important;}
  .bls-intro-active .bls-hero-buzz{width:210px!important;}
  .bls-intro-active #bls-blueprint-intro{max-width:calc(100% - 280px)!important;}
  .bls-step-active .bls-hero-buzz{width:140px!important;margin-right:34px!important;}
}
@media(max-width:1180px){
  .bls-intro-active .bls-buzz-stage{position:relative!important;width:100%!important;height:auto!important;right:auto!important;top:auto!important;margin:-8px 0 16px!important;justify-content:flex-end!important;}
  .bls-intro-active .bls-hero-buzz{width:150px!important;max-height:170px!important;margin-right:16px!important;}
  .bls-step-active .bls-buzz-stage{height:90px!important;margin:-6px 0 2px!important;}
  .bls-step-active .bls-hero-buzz{width:118px!important;max-height:118px!important;margin-right:16px!important;}
  .bls-intro-active #bls-blueprint-intro{max-width:100%!important;min-height:0!important;}
}
@media(max-width:900px){
  .bls-intro-active .bls-buzz-stage,.bls-step-active .bls-buzz-stage{display:flex!important;height:auto!important;margin:0 0 12px!important;justify-content:center!important;}
  .bls-intro-active .bls-hero-buzz,.bls-step-active .bls-hero-buzz{width:96px!important;max-height:110px!important;margin:0!important;}
}

/* v0.9.0 Campaign Studio Framework */
.bls-logo-upload-panel,.bls-asset-drop,.bls-campaign-summary{background:#fffaf0;border:1px solid rgba(255,210,0,.55);border-radius:22px;padding:22px;margin:20px 0;position:relative;z-index:5;}
.bls-logo-upload-panel h3{margin:0 0 6px;font-size:22px;line-height:1.25}.bls-logo-upload-panel p{margin:0 0 16px;color:#5d6470;font-weight:700;line-height:1.55}.bls-logo-upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.bls-upload-zone{display:flex;align-items:center;justify-content:center;min-height:104px;background:#fff;border:2px dashed #e1c741;border-radius:20px;font-weight:900;color:#141414;cursor:pointer;text-align:center}.bls-upload-zone input{display:none}.bls-uploaded-file{display:flex;align-items:center;gap:12px;margin-top:12px;background:#fff;border:1px solid #ece2c8;border-radius:16px;padding:12px 14px;font-weight:800;color:#222}.bls-uploaded-file img{width:44px;height:44px;object-fit:contain;border-radius:10px;background:#f6f6f6}.bls-uploaded-file small{display:block;color:#69707a;font-weight:700}.bls-option-row{display:flex;flex-wrap:wrap;gap:12px;margin:8px 0 16px}.bls-option{border:2px solid #e7e0cc;background:#fff;border-radius:999px;padding:13px 18px;font-size:15px;font-weight:900;cursor:pointer;transition:.18s ease;color:#0e1114}.bls-option:hover,.bls-option.selected{background:#ffd200;border-color:#ffd200;box-shadow:0 10px 20px rgba(255,210,0,.25)}.bls-large-textarea{min-height:220px}.bls-char-help{margin-top:8px;color:#69707a;font-size:13px;font-weight:800}.bls-two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}.bls-asset-drop{background:#fff;border:2px dashed #d6c796;text-align:center;cursor:pointer}.bls-asset-drop b{display:block;font-size:22px;margin-bottom:6px}.bls-asset-drop p{margin:0 0 12px;color:#69707a;font-weight:800}.bls-asset-drop input{display:block;margin:10px auto 0}.bls-campaign-summary{display:grid;grid-template-columns:1fr 1fr;gap:18px;background:#fff}.bls-campaign-summary>div{background:#f8f7f1;border-radius:18px;padding:18px}.bls-campaign-summary h3{font-size:28px;margin:4px 0 0;line-height:1.15}.bls-campaign-summary p{margin:6px 0 0;line-height:1.55;font-weight:750;color:#424954}.bls-channel-tags{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.bls-channel-tags span{background:#080a0a;color:#fff;border-radius:999px;padding:10px 13px;font-size:13px;font-weight:900}.bls-campaign-card{position:relative;overflow:hidden!important}.bls-campaign-card #bls-campaign-intro{max-width:calc(100% - 300px);min-height:280px;position:relative;z-index:3}.bls-campaign-card #bls-campaign-studio{position:relative;z-index:5}.bls-campaign-buzz{width:210px!important}.bls-field label{display:block;margin:0 0 8px;font-weight:900;color:#17191d}.bls-field{position:relative;z-index:6}@media(max-width:1200px){.bls-campaign-card #bls-campaign-intro{max-width:none;min-height:auto}.bls-two-col,.bls-campaign-summary,.bls-logo-upload-grid{grid-template-columns:1fr}.bls-campaign-buzz{width:150px!important}}


/* v0.9.1 Campaign Polish */
.bls-campaign-card{position:relative;overflow:hidden!important;}
.bls-campaign-card .bls-buzz-stage{pointer-events:none!important;}
.bls-campaign-card.bls-intro-active .bls-buzz-stage{
  position:absolute!important;
  right:86px!important;
  top:48px!important;
  width:230px!important;
  height:320px!important;
  display:flex!important;
  align-items:flex-start!important;
  justify-content:center!important;
  z-index:2!important;
}
.bls-campaign-card.bls-intro-active .bls-hero-buzz{
  width:min(220px,18vw)!important;
  max-height:315px!important;
}
.bls-campaign-card.bls-intro-active #bls-campaign-intro{
  max-width:calc(100% - 300px)!important;
  min-height:315px!important;
  padding-right:22px!important;
  position:relative!important;
  z-index:3!important;
}
.bls-campaign-card.bls-intro-active #bls-campaign-studio{
  position:relative!important;
  z-index:5!important;
}
.bls-campaign-card.bls-step-active .bls-buzz-stage{
  position:relative!important;
  right:auto!important;
  top:auto!important;
  width:100%!important;
  height:145px!important;
  margin:-14px 0 -22px!important;
  display:flex!important;
  justify-content:flex-end!important;
  align-items:flex-start!important;
  z-index:1!important;
}
.bls-campaign-card.bls-step-active .bls-hero-buzz{
  width:145px!important;
  max-height:170px!important;
  margin-right:52px!important;
}
.bls-campaign-card.bls-step-active #bls-campaign-studio{
  position:relative!important;
  z-index:4!important;
}
.bls-asset-browse{
  border:1px solid #ded6c5;
  background:#fffdf7;
  border-radius:24px;
  padding:34px 28px;
  text-align:center;
  box-shadow:0 12px 36px rgba(0,0,0,.04);
}
.bls-asset-browse b{display:block;font-size:24px;line-height:1.2;margin-bottom:8px;color:#151820;}
.bls-asset-browse p{font-size:17px;line-height:1.5;color:#6d6250;font-weight:700;margin:0 0 18px;}
.bls-asset-icon{font-size:34px;margin-bottom:8px;}
.bls-file-btn{display:inline-flex!important;align-items:center;justify-content:center;cursor:pointer;}
.bls-file-btn input{display:none!important;}
.bls-asset-list{margin-top:18px;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;}
.bls-btn.disabled,.bls-btn:disabled{opacity:.55;cursor:not-allowed;}
@media(max-width:1250px){
  .bls-campaign-card.bls-intro-active .bls-buzz-stage,
  .bls-campaign-card.bls-step-active .bls-buzz-stage{position:relative!important;right:auto!important;top:auto!important;text-align:right;margin:-10px 0 -8px!important;height:130px!important;justify-content:flex-end!important;}
  .bls-campaign-card.bls-intro-active .bls-hero-buzz,
  .bls-campaign-card.bls-step-active .bls-hero-buzz{width:130px!important;display:inline-block!important;margin-right:36px!important;}
  .bls-campaign-card.bls-intro-active #bls-campaign-intro{max-width:none!important;min-height:auto!important;padding-right:0!important;}
}
@media(max-width:900px){.bls-campaign-card .bls-buzz-stage{display:none!important;}}


/* v0.9.1a UX Hotfix */
.bls-file-btn,
.bls-file-btn:visited,
.bls-file-btn:hover,
.bls-file-btn:focus{
  background:#050505!important;
  color:#ffffff!important;
  font-weight:900!important;
  text-decoration:none!important;
  border-color:#050505!important;
}
.bls-file-btn *{color:#ffffff!important;}
.bls-upload-status{margin-top:16px;font-weight:900;color:#151820;}
.bls-uploading{display:inline-flex;align-items:center;gap:10px;background:#fff3c2;border:1px solid rgba(255,210,0,.75);border-radius:999px;padding:10px 14px;color:#151820;}
.bls-spinner{display:inline-block;width:16px;height:16px;border:3px solid rgba(0,0,0,.18);border-top-color:#111;border-radius:50%;animation:blsSpin .8s linear infinite;vertical-align:middle;}
@keyframes blsSpin{to{transform:rotate(360deg)}}
.bls-asset-ready{background:#f8fbf7;border:1px solid #dbe9d8;border-radius:18px;padding:14px;margin-top:10px;}
.bls-asset-ready.bls-empty{color:#747b84;font-weight:800;background:#fff;border-color:#eee;}
.bls-asset-ready>b{display:block;margin-bottom:10px;color:#162016;font-weight:900;}
.bls-asset-row{position:relative;padding-right:94px!important;}
.bls-asset-row img{width:54px!important;height:54px!important;object-fit:cover!important;border-radius:12px!important;background:#f4f4f4!important;}
.bls-file-chip{width:54px;height:54px;display:inline-flex;align-items:center;justify-content:center;background:#fff7d9;border-radius:12px;font-size:24px;}
.bls-remove-asset{position:absolute;right:12px;top:50%;transform:translateY(-50%);border:0;background:#efefef;color:#17191d;border-radius:999px;padding:8px 10px;font-size:12px;font-weight:900;cursor:pointer;}
.bls-remove-asset:hover{background:#111;color:#fff;}
.bls-add-more{display:inline-flex;margin-top:12px;align-items:center;justify-content:center;border:1px dashed #cdbb77;border-radius:999px;padding:10px 14px;font-weight:900;cursor:pointer;color:#151820;background:#fff;}
.bls-add-more input{display:none!important;}
/* v1.5.2-alpha.41: greys out Browse Files / + Add More / the Business Blueprint logo upload zones
   while their upload is in flight - pointer-events:none is the real functional guard (on top of
   the underlying <input> already being disabled via JS), opacity is just the visual cue. */
.bls-file-btn.bls-upload-disabled,
.bls-add-more.bls-upload-disabled,
.bls-upload-zone.bls-upload-disabled{opacity:.45!important;pointer-events:none!important;cursor:not-allowed!important;}
.bls-btn.disabled,.bls-btn:disabled{background:#9ca3af!important;color:#fff!important;opacity:.75!important;cursor:not-allowed!important;}

/* v0.9.2 module finalization */
.bls-dashboard-card{min-height:360px;display:flex;flex-direction:column;justify-content:center}
.bls-dashboard-card h1{font-size:64px;line-height:1.05;margin:18px 0 16px}
.bls-info-card-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:28px 0}
.bls-info-card{background:#fffdf4;border:1px solid rgba(255,210,0,.45);border-radius:22px;padding:18px 20px;box-shadow:0 10px 28px rgba(0,0,0,.04)}
.bls-info-card span{display:block;font-size:12px;letter-spacing:.08em;text-transform:uppercase;font-weight:900;color:#66520a;margin-bottom:8px}
/* v1.5.3-alpha.25: long unbroken strings (URLs especially - Website/Facebook/Instagram/LinkedIn)
   were running straight past the card's right edge instead of wrapping, since a plain URL has no
   natural break points (spaces/hyphens) for the browser to wrap on by default. overflow-wrap:break-
   word (word-break:break-word is here purely as an older-Safari fallback) lets the browser break
   mid-word/mid-URL only when a line genuinely has nowhere else to break, so normal text is unaffected
   and only the long links actually wrap. */
.bls-info-card p{font-size:16px;line-height:1.45;color:#2b2b2b;margin:0;overflow-wrap:break-word;word-break:break-word;}
.bls-blueprint-complete-card .bls-lede{font-size:24px;line-height:1.55;max-width:none;color:#222;margin:0 0 22px;}
/* v1.5.3-alpha.20: Drew found the fixed intro line ("I understand your business...") added in
   alpha.19 sat too close to Buzz's avatar. Tried capping this paragraph's width to keep it clear of
   the avatar - but that left a large, unexplained-looking blank rectangle to its right (Drew: "looks
   even more weird now") because nothing else fills that column once the text wraps early, and the
   void extended well past the avatar's own height into space that had no reason to be empty.
   v1.5.3-alpha.23: reverted to full width (matching the AI summary paragraph below it, same as
   before alpha.20) - no artificial cap, no dead space. Keeps only a modest top margin for breathing
   room off the h1/avatar and a normal bottom margin (inherited from the rule above) before the
   summary paragraph, instead of trying to solve this with width restrictions. */
.bls-blueprint-complete-card .bls-lede-intro{margin-top:16px;}
/* v1.5.3-alpha.24: nudge Buzz up ~10px on the completion screen per Drew's ask. translateY (rather
   than adjusting the shared .bls-buzz-stage's own "top" value, which differs per breakpoint and is
   reused by the intro/step-active states elsewhere in the Blueprint flow) shifts it the same amount
   regardless of which breakpoint's positioning is currently in effect, without touching anything
   those other states rely on. */
.bls-blueprint-complete-card .bls-buzz-stage{transform:translateY(-10px);}
.bls-complete .bls-actions a.bls-btn,.bls-actions a.bls-btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none;margin-right:12px}
.bls-complete .bls-actions a.bls-btn.ghost,.bls-actions a.bls-btn.ghost{background:#fff;color:#111;border:1px solid rgba(0,0,0,.12)}
.bls-buzzbox.bls-speech{margin-top:12px}
.bls-ready{margin:12px 0 0 20px;color:#4c7a28;font-weight:900}
/* Campaign Studio Save Draft (v1.5.3-alpha.7) */
.bls-actions{display:flex;align-items:center;flex-wrap:wrap;gap:10px;}
#bls-campaign-draft-status{font-size:13px;font-weight:700;}
#bls-campaign-draft-status.bls-error{color:#b00020;}
@media(max-width:900px){.bls-info-card-grid{grid-template-columns:1fr}.bls-dashboard-card h1{font-size:44px}}
.bls-hidden{display:none!important}.bls-start-field{margin-top:24px}.bls-start-options{margin-bottom:16px}.bls-start-options .bls-start-option{margin-bottom:10px}.bls-start-field #bls-start-datetime-wrap{max-width:360px}.bls-start-field input[type="datetime-local"]{font-family:Inter,Arial,sans-serif}

/* v1.0.0 Bee Local Expert Review
   v1.5.2-alpha.28 consistency pass: this used to be one long duplicate ruleset for
   .bls-review-card-grid/.bls-review-card/.bls-status-light/.bls-review-row/.bls-admin-detail-grid,
   fully superseded by a second, later pass lower in this file (search "v1.2.0 Expert Review
   Workspace Foundation") - a textbook case of the screen being rebuilt across sessions without the
   old pass ever being removed. Only the pieces that were never redefined survive here now. */
.bls-review-shell{position:relative;overflow:hidden;}
.bls-particulars{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin:20px 0;}
.bls-particulars div{background:#f7f4eb;border:1px solid rgba(0,0,0,.05);border-radius:16px;padding:12px;}
.bls-particulars span{display:block;text-transform:uppercase;letter-spacing:.06em;font-size:11px;font-weight:900;color:#8a7a4b;margin-bottom:5px;}
.bls-particulars b{font-size:15px;line-height:1.35;}
.bls-particulars.detail{grid-template-columns:1fr;}
.bls-muted{color:#777;font-weight:700;}

/* v1.1.0 Client Portal Foundation */
.bls-login-shell{background:linear-gradient(110deg,#fff3ae 0%,#f7f3e8 42%,#ffffff 100%)!important;}
.bls-login-brand{display:flex;flex-direction:column;justify-content:center;gap:18px;}
.bls-login-brand h1{font-size:72px;line-height:.98;margin:18px 0 0;color:#151820;letter-spacing:-.04em;}
.bls-login-tag{font-size:26px!important;font-weight:900!important;color:#67707c!important;margin:0!important;}
.bls-login-promise{display:none!important;}
.bls-auth-logo{display:block;width:100%;max-width:440px;height:auto;margin-bottom:28px;}
.bls-login-card .bls-auth-form{margin-top:22px;display:flex;flex-direction:column;gap:18px;}
.bls-login-card .bls-auth-form label{font-size:17px;font-weight:900;color:#65707c;display:flex;flex-direction:column;gap:8px;}
.bls-login-card .bls-auth-form .bls-input{width:100%;font-size:18px;padding:18px 20px;border-radius:16px;border:1px solid #ccd5e3;background:#eaf2ff;color:#151820;font-weight:700;}
.bls-login-card .bls-auth-form .bls-btn{width:100%;margin-top:8px;min-height:60px;font-size:18px;}
.bls-remember{flex-direction:row!important;align-items:center!important;gap:10px!important;color:#4d5562!important;}
.bls-remember input{width:18px;height:18px;}
.bls-auth-links{margin:14px 0 0!important;display:flex;justify-content:center;align-items:center;gap:10px;font-weight:900;}
.bls-auth-links a{color:#111!important;text-decoration:none;border-bottom:2px solid #ffd200;}
.bls-auth-links a:hover{color:#8a7000!important;}
.bls-auth-notice{background:#fff7d4;border:1px solid #ffd200;color:#2e2707;border-radius:16px;padding:14px 16px;font-size:15px;line-height:1.45;font-weight:900;margin:14px 0;}
.bls-two-col{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
.bls-register-shell .bls-login-card{max-width:760px;}
.bls-register-shell .bls-login-brand h1{font-size:58px;}
@media(max-width:980px){.bls-login-shell{grid-template-columns:1fr!important;overflow:auto!important;padding:28px!important}.bls-login-brand h1{font-size:46px}.bls-auth-logo{max-width:300px;}.bls-two-col{grid-template-columns:1fr}}


/* v1.1.1 Client Portal UX Hotfix */
body.bls-studio-page .bls-front-wrap:has(.bls-login-shell),
.bls-front-wrap:has(.bls-login-shell){
  overflow-y:auto!important;
  overflow-x:hidden!important;
  -webkit-overflow-scrolling:touch!important;
}
body.bls-studio-page .bls-front-wrap:has(.bls-login-shell) .bls-login-shell,
.bls-front-wrap:has(.bls-login-shell) .bls-login-shell{
  min-height:100vh!important;
  height:auto!important;
  overflow:visible!important;
  padding-top:clamp(24px,4vh,54px)!important;
  padding-bottom:clamp(24px,4vh,54px)!important;
}
.bls-register-shell .bls-login-card,
.bls-login-shell .bls-login-card{
  max-height:none!important;
}
@media(max-height:850px){
  .bls-login-brand{padding-top:32px!important;padding-bottom:32px!important;}
  .bls-login-card{align-self:start!important;margin-top:28px!important;margin-bottom:28px!important;}
  .bls-login-brand h1{font-size:clamp(42px,6vw,64px)!important;}
  .bls-login-card h2{font-size:clamp(34px,4vw,46px)!important;}
}
.bls-empty-review{margin-top:28px;background:#fff9df;border:1px solid #ffd200;border-radius:28px;padding:28px;display:flex;flex-direction:column;align-items:flex-start;gap:14px;min-height:0;}
.bls-empty-review h2{margin:0;line-height:1.15;}
.bls-empty-review p{margin:0;line-height:1.55;max-width:780px;}
.bls-empty-review .bls-btn{margin-top:8px;position:relative;z-index:2;}

/* v1.1.2 Sidebar identity, badges, and logout */
.bls-sidebar{
  display:flex!important;
  flex-direction:column!important;
  justify-content:space-between!important;
  gap:18px!important;
}
/* v1.5.2-alpha.41 zoom/short-viewport fix: previously the WHOLE sidebar (logo+profile+nav+Buzz
   box+Log Out) scrolled together as one flex column, with .bls-sidebar-bottom pinned to the
   bottom only via margin-top:auto - auto margins collapse to 0 once content already overflows the
   container, so at higher browser zoom (which shrinks the effective 100vh in CSS pixels) or with
   more nav items than usual, the Buzz box and Log Out button got squeezed with no guaranteed gap
   and visually crowded/overlapped the last nav link instead of cleanly scrolling out of view.
   Now .bls-sidebar-top (logo/profile/nav) is its own independently scrollable region that can
   shrink to fit whatever space is left; .bls-sidebar-bottom is flex:0 0 auto - it always renders
   at its natural size and is never squeezed, so it can never overlap anything above it regardless
   of zoom level or viewport height. */
.bls-sidebar{overflow:hidden!important;}
.bls-sidebar-top{
  min-height:0;
  flex:1 1 auto;
  overflow-y:auto;
  overflow-x:hidden;
}
/* v1.5.2-alpha.42: the scroll region above was working (nav can already be scrolled to reach
   whatever's cut off, e.g. the Buzz nav link at very low browser zoom levels or short windows) but
   its scrollbar was hidden entirely, so there was no visual cue that anything was scrollable at
   all - Drew reported the Buzz link as simply "hidden" rather than "off-screen, scroll for more".
   A slim, brand-colored scrollbar (rather than none at all) makes the overflow discoverable. */
.bls-sidebar-top::-webkit-scrollbar{width:6px;}
.bls-sidebar-top::-webkit-scrollbar-track{background:transparent;}
.bls-sidebar-top::-webkit-scrollbar-thumb{background:rgba(255,210,0,.35);border-radius:999px;}
.bls-sidebar-top::-webkit-scrollbar-thumb:hover{background:rgba(255,210,0,.55);}
.bls-sidebar-top{scrollbar-width:thin;scrollbar-color:rgba(255,210,0,.35) transparent;}
.bls-sidebar-bottom{flex:0 0 auto!important;}
.bls-logo-card{margin-bottom:22px!important;}
.bls-profile-card{
  display:flex;
  align-items:center;
  gap:12px;
  padding:15px;
  margin:0 0 18px;
  border:1px solid rgba(255,210,0,.28);
  border-radius:20px;
  background:linear-gradient(135deg,rgba(255,210,0,.12),rgba(255,255,255,.04));
}
.bls-profile-card .bls-avatar{
  width:42px;
  height:42px;
  border-radius:50%;
  background:#ffd200;
  color:#070707;
  display:flex;
  align-items:center;
  justify-content:center;
  font-weight:950;
  font-size:20px;
  flex:0 0 42px;
}
.bls-profile-card img.bls-avatar.bls-avatar-logo{
  object-fit:cover;
  background:#fff;
  border:1px solid rgba(255,255,255,0.12);
}
.bls-profile-card b{display:block;color:#fff;font-size:17px;line-height:1.1;}
.bls-profile-card span{display:block;color:#ffd200;font-weight:800;font-size:12px;line-height:1.3;margin-top:4px;}
.bls-profile-card em{display:block;color:#b9b9b9;font-style:normal;font-size:12px;font-weight:800;line-height:1.3;margin-top:2px;}
.bls-nav-label{display:flex;align-items:center;gap:10px;min-width:0;}
.bls-nav-label i{font-style:normal;width:20px;text-align:center;}
/* v1.5.2-alpha.43: Buzz's nav icon is now a real cropped image (his head, from the "Powered by
   Buzz" brand lockup) instead of a lightbulb emoji - sized to match the emoji icons' 20px box. */
.bls-nav-icon-img{display:inline-block;width:20px;height:20px;object-fit:contain;vertical-align:middle;}
.bls-nav-badge{
  display:inline-flex!important;
  align-items:center;
  justify-content:center;
  min-width:22px;
  height:22px;
  padding:0 7px!important;
  border-radius:999px!important;
  border:none!important;
  background:#ffd200!important;
  color:#070707!important;
  font-size:11px!important;
  font-weight:950!important;
  margin-left:10px;
}
.bls-nav-badge.complete{background:#1fbe5b!important;color:#fff!important;}
.bls-nav-badge.attention{background:#ffcf33!important;color:#111!important;}
.bls-sidebar-bottom{
  margin-top:auto;
  padding-top:18px;
}
.bls-sidebar .bls-wwbd{
  position:static!important;
  left:auto!important;
  right:auto!important;
  bottom:auto!important;
  margin:0 0 14px!important;
}
/* v1.5.2-alpha.42: icon + heading on one line (previously the icon was a bare block-level <div>,
   which always starts its own line box, so it stacked above "What would Buzz do?" instead of
   sitting beside it). */
.bls-wwbd-head{display:flex;align-items:center;gap:9px;margin-bottom:8px;}
.bls-wwbd-head b{margin:0;}
.bls-wwbd-icon{font-size:19px;line-height:1;flex-shrink:0;}
.bls-wwbd p{margin:0;}
.bls-logout{
  display:flex;
  align-items:center;
  gap:10px;
  color:#d8d8d8;
  text-decoration:none;
  font-weight:900;
  padding:15px 18px;
  border-radius:18px;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.04);
  transition:all .16s ease;
}
.bls-logout:hover{
  color:#ffd200;
  border-color:rgba(255,210,0,.4);
  background:rgba(255,210,0,.08);
}
.bls-logout:hover span{filter:saturate(1.2);}
@media(max-height:850px){.bls-sidebar .bls-wwbd{display:none!important;}}
@media(max-width:900px){.bls-sidebar{display:block!important}.bls-sidebar-bottom{margin-top:18px}.bls-profile-card{max-width:420px}}

/* v1.2.0 Expert Review Workspace Foundation */
.bls-review-page{display:flex;flex-direction:column;gap:28px;}
.bls-review-hero{background:linear-gradient(135deg,#fff,#fff8d8);border:1px solid rgba(255,210,0,.45);border-radius:32px;padding:38px 42px;box-shadow:0 16px 50px rgba(0,0,0,.06);}
.bls-review-hero h1{font-size:46px;line-height:1.08;margin:22px 0 12px;letter-spacing:-1.5px;}
.bls-review-hero p{font-size:21px;line-height:1.55;color:#59616c;max-width:900px;font-weight:750;}
.bls-review-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:24px;}
.bls-review-card{background:#fff;border-radius:28px;padding:28px;box-shadow:0 12px 38px rgba(0,0,0,.07);border:1px solid rgba(0,0,0,.06);display:flex;flex-direction:column;gap:14px;}
.bls-review-card h2{font-size:27px;line-height:1.15;margin:2px 0 0;letter-spacing:-.7px;}
.bls-review-card p{font-size:16px;line-height:1.55;color:#5d6570;margin:0;font-weight:700;}
.bls-review-card-head{display:flex;align-items:center;gap:10px;font-weight:900;}
.bls-review-card-head small{margin-left:auto;color:#8a8f98;font-weight:900;}
.bls-status-light{display:inline-block;width:14px;height:14px;border-radius:50%;box-shadow:0 0 0 4px rgba(0,0,0,.05);vertical-align:middle;margin-right:6px;}
.bls-status-light.red{background:#ff4b4b;}.bls-status-light.yellow{background:#f3c600;}.bls-status-light.green{background:#21b56b;}
/* v1.5.3-alpha.13: blue/grey added for per-platform launch tracking - blue = "partially_published"
   (a real, positive-but-not-done aggregate status, distinct from plain green "fully done"); grey =
   a single platform build's own "not yet published" state inside the launch breakdown pills. */
.bls-status-light.blue{background:#2f7bf6;}.bls-status-light.grey{background:#b7bcc4;}
.bls-status-card-red{border-top:6px solid #ff4b4b;}.bls-status-card-yellow{border-top:6px solid #f3c600;}.bls-status-card-green{border-top:6px solid #21b56b;}
.bls-status-card-blue{border-top:6px solid #2f7bf6;}
.bls-platform-launch-breakdown{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;}
.bls-platform-launch-pill{display:inline-flex;align-items:center;background:#f7f4eb;border:1px solid rgba(0,0,0,.06);border-radius:999px;padding:6px 12px;font-size:13px;font-weight:800;}
.bls-platform-status-badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:800;margin-left:8px;padding:3px 10px;border-radius:999px;background:#f7f4eb;border:1px solid rgba(0,0,0,.06);}
.bls-review-card-foot{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:auto;padding-top:12px;}
.bls-btn.small{padding:12px 18px;font-size:14px;border-radius:14px;white-space:nowrap;}
.bls-admin-queue{padding:30px;}
.bls-admin-queue-head{display:flex;justify-content:space-between;gap:24px;align-items:center;margin-bottom:20px;}
.bls-admin-queue-head h2{font-size:34px;line-height:1.1;margin:14px 0 6px;}
.bls-admin-queue-head p{font-weight:700;color:#68707a;}
.bls-queue-count{background:#050505;color:#fff;border-radius:24px;padding:18px 22px;min-width:120px;text-align:center;}
.bls-queue-count b{display:block;font-size:32px;line-height:1;}.bls-queue-count span{font-size:12px;text-transform:uppercase;letter-spacing:1px;color:#ffd200;font-weight:900;}
.bls-review-filters{display:grid;grid-template-columns:minmax(220px,1fr) 220px 260px auto;gap:14px;margin:24px 0;align-items:center;}
.bls-review-table{border:1px solid #eee;border-radius:22px;overflow:hidden;background:#fff;}
/* v1.5.2-alpha.43: Campaign column narrowed and Status column widened per Drew - Status now also
   carries the Edit/Archive/Delete icons (added alpha.41) alongside its label, and was wrapping
   onto 2-3 lines for longer labels like "Campaign Build In Progress" / "Submitted for Bee Local
   Review". Campaign had more room than it needed, so that space moved to Status instead. */
.bls-review-row{display:grid;grid-template-columns:130px minmax(170px,1.2fr) minmax(130px,.7fr) 190px 300px;gap:14px;align-items:center;padding:18px 20px;text-decoration:none;color:#111;border-bottom:1px solid #eee;font-weight:750;cursor:pointer;}
.bls-review-row.header{background:#0b0c0d;color:#fff;font-weight:950;font-size:13px;text-transform:uppercase;letter-spacing:.6px;cursor:default;}
.bls-review-row:hover:not(.header){background:#fff9df;}
.bls-review-row small{display:block;color:#777;font-weight:700;margin-top:4px;}
/* Row action icons (added v1.5.2-alpha.41): Edit/Archive-or-Restore/Delete, right-aligned within
   the Status cell. The row itself still navigates to Edit on click anywhere (see the onclick on
   .bls-review-row) - these are real distinct <a> elements so they need their own stopPropagation
   in the row's onclick guard, which is why status stays a flex row rather than the plain inline
   text it used to be. */
.bls-review-row-status{display:flex;align-items:center;gap:6px;width:100%;}
.bls-row-actions{margin-left:auto;display:flex;gap:6px;flex-shrink:0;}
.bls-row-action{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:9px;text-decoration:none;font-size:14px;background:rgba(0,0,0,.05);line-height:1;}
.bls-row-action:hover{background:rgba(0,0,0,.1);}
.bls-row-action-delete:hover{background:#ffe1e1;}
.bls-archived-campaigns{margin-top:18px;}
.bls-archived-campaigns .bls-review-table{margin-top:4px;}
.bls-notice{border-radius:16px;padding:14px 20px;font-weight:800;margin-bottom:18px;}
.bls-notice-success{background:#e9f8ef;color:#137640;border:1px solid #bfe9d1;}
.bls-review-workspace{display:flex;flex-direction:column;gap:22px;}
.bls-workspace-header{background:#fff;border-radius:32px;padding:34px 38px;box-shadow:0 14px 45px rgba(0,0,0,.06);display:grid;grid-template-columns:minmax(420px,1fr) 360px;gap:28px;align-items:center;}
.bls-workspace-header h1{font-size:44px;line-height:1.1;margin:18px 0 10px;letter-spacing:-1.5px;}
.bls-workspace-header p{font-weight:800;color:#5c646f;}
.bls-workspace-status{background:#f8f5ea;border-radius:24px;padding:24px;border:1px solid #eee0b5;}
.bls-workspace-status b{display:block;font-size:20px;margin-bottom:8px;}.bls-workspace-status span{display:block;color:#68707a;font-weight:750;line-height:1.45;}
.bls-workspace-tabs{display:flex;gap:10px;flex-wrap:wrap;background:#fff;border-radius:24px;padding:12px;box-shadow:0 12px 34px rgba(0,0,0,.05);}
.bls-workspace-tabs a{padding:13px 18px;border-radius:16px;text-decoration:none;color:#111;font-weight:900;}
.bls-workspace-tabs a.active,.bls-workspace-tabs a:hover{background:#ffd200;}
.bls-workspace-tab{padding:32px!important;}
.bls-workspace-tab h2{font-size:32px;line-height:1.15;margin:0 0 18px;}
.bls-admin-detail-grid{display:grid;grid-template-columns:minmax(260px,1fr) minmax(260px,1fr);gap:24px;}
/* One shared "nested panel" look for every sub-section inside the Overview tab (Buzz Summary,
   Campaign Particulars, Client Campaign Details, Recommendations before its Buzz-icon override
   below) - previously the two grid sections stayed white while .bls-review-block alone picked up
   a different off-white/border further down this file, so Client Campaign Details visibly didn't
   match Buzz Summary right above it. Also gives their <h3>/<p> an explicit size for the first time
   instead of falling back to the browser's unstyled heading/paragraph defaults. */
/* v1.5.3-alpha.19: client-branded lockup at the top of the Review workspace's Overview card - see
   the PHP comment above bls_review_workspace()'s $ov_brand_mark for why.
   v1.5.3-alpha.20: Drew found the first pass too small and slightly misaligned - sizes bumped up
   across the board, and display:block + a fixed line-height on the name (rather than trusting the
   theme's own heading defaults) make sure flex's align-items:center has a clean, predictable box to
   center against instead of getting thrown off by inherited heading spacing.
   v1.5.3-alpha.21: per Drew's sketch, this now lives INSIDE the Buzz Summary box (see the PHP
   comment above $ov_brand_header) rather than as its own strip above the two-column grid - the
   negative top margin that used to pull it up against the workspace header is gone since the box's
   own padding already provides that spacing. Logo bumped again to 100px per Drew's explicit ask.
   v1.5.3-alpha.22: dropped the white background tile behind the square logo - client logos are
   transparent PNGs, so the white square was just an unwanted visible box around them rather than
   serving any real purpose (it made sense as a fallback plate before logos were confirmed
   transparent, but Drew confirmed they always are). Also tightened the gap between the logo and the
   company name, which read as too far apart.
   v1.5.3-alpha.23: logo bumped again to 150px per Drew's explicit ask - initial-letter tile and
   horizontal-logo variants scaled up to match so all three stay visually consistent with each
   other. */
.bls-review-brand-header{display:flex;align-items:center;gap:10px;margin:0 0 16px;}
.bls-review-brand-header img{display:block;}
.bls-review-brand-logo-square{width:150px;height:150px;border-radius:28px;object-fit:cover;flex-shrink:0;}
.bls-review-brand-logo-horizontal{max-height:110px;max-width:440px;object-fit:contain;flex-shrink:0;}
.bls-review-brand-initial{width:150px;height:150px;border-radius:28px;background:#ffd200;color:#0a0a0a;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:58px;flex-shrink:0;line-height:1;}
.bls-review-brand-name{margin:0;font-size:26px;font-weight:900;line-height:1.2;color:#17191d;}
.bls-review-brand-rule{border:none;border-top:1px solid #edf0f2;margin:0 0 20px;}
.bls-admin-detail-grid section,.bls-review-block{background:#f9fafb;border:1px solid #edf0f2;border-radius:24px;padding:24px;}
.bls-review-block{margin-top:22px;}
.bls-admin-detail-grid section h3,.bls-review-block h3{margin:0 0 10px;font-size:18px;line-height:1.25;font-weight:900;color:#17191d;}
.bls-admin-detail-grid section p,.bls-review-block p{margin:0;font-size:16px;line-height:1.6;color:#3d434c;font-weight:700;}
.bls-mini-timeline{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px;}
.bls-mini-timeline span{padding:11px 15px;border-radius:999px;background:#eceff3;color:#68707a;font-weight:900;font-size:13px;}
.bls-mini-timeline span.done{background:#e9f8ef;color:#137640;}.bls-mini-timeline span.active{background:#fff1b9;color:#5d4700;}
.bls-chat-preview{display:flex;flex-direction:column;gap:16px;}.bls-chat-row{border-radius:22px;padding:20px 22px;max-width:820px;}.bls-chat-row.buzz{background:#fff8d8;border:1px solid #ffd200;}.bls-chat-row.expert{background:#f2f6ff;border:1px solid #dce7ff;}.bls-chat-row b{display:block;margin-bottom:6px;}.bls-chat-row p{font-weight:750;color:#4e5662;line-height:1.5;margin:0;}
/* v1.5.3-alpha.30 bug fix: this was a leftover placeholder-era rule from before the real task-item
   component (.bls-task-item/.bls-task-check, further down this file) existed. ".bls-task-list
   label" (specificity 0,1,1 - a class plus a tag) was accidentally BEATING ".bls-task-check"
   (specificity 0,1,0 - class only) on every property they both touch, regardless of which came
   first in the file - CSS specificity always wins over source order. Since .bls-task-check IS a
   <label> nested inside .bls-task-list, it was inheriting this rule's padding/border/border-radius/
   background meant for a totally different, older design, stretching what should be a clean 34px
   circle into the padded, pill-shaped "misshapen oval" Drew reported. The real .bls-task-list rules
   (gap, etc.) are fully redefined later in this file anyway, making this whole line dead weight even
   before accounting for the collision - removed outright rather than merely rescoped. */
.bls-activity-feed{display:flex;flex-direction:column;gap:12px;}.bls-activity-feed div{display:flex;justify-content:space-between;gap:20px;background:#f8f9fb;border:1px solid #edf0f2;border-radius:18px;padding:16px 18px;}.bls-activity-feed b{font-weight:950}.bls-activity-feed span{color:#6b7079;font-weight:800;}
@media(max-width:1200px){.bls-review-filters{grid-template-columns:1fr}.bls-review-row{grid-template-columns:1fr;gap:6px}.bls-workspace-header{grid-template-columns:1fr}.bls-admin-detail-grid{grid-template-columns:1fr}}

/* v1.2.1 Module unlock and upload polish */
.bls-sidebar nav a.locked{opacity:.68;}
.bls-sidebar nav a.locked:hover{background:rgba(255,210,0,.08);color:#fff;}
.bls-nav-badge.locked{background:#262626!important;color:#ffd200!important;border-color:#3b3b3b!important;}
.bls-locked-module .bls-kicker{background:#fff1b9;color:#5d4700;}
.bls-logo-upload-panel .bls-uploading{margin-top:10px;}
.bls-btn:disabled,.bls-btn.disabled{pointer-events:none;}

/* v1.2.2 Digital Presence and URL Field component */
/* v1.5.3-alpha.34: Brand Guidelines upload panel (Business Blueprint) - same card treatment as
   .bls-online-presence just below, since it sits in the same visual position (after the logo
   grid, before Online Presence). .bls-upload-zone-wide just drops the 2-column grid's forced
   min-height/centering assumption so a single full-width zone doesn't look like half a missing
   pair. */
.bls-brand-guidelines-panel{margin-top:24px;padding:22px;border-radius:24px;background:#fbfaf5;border:1px solid #eee5c8;}
.bls-brand-guidelines-panel h3{margin:0 0 6px;font-size:19px;line-height:1.25;}
.bls-brand-guidelines-panel h3 span{font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:#888;font-weight:950;margin-left:6px;}
.bls-brand-guidelines-panel p{margin:0 0 14px;color:#626a73;font-weight:750;line-height:1.45;}
.bls-upload-zone-wide{width:100%;box-sizing:border-box;}
.bls-online-presence{margin-top:24px;padding:22px;border-radius:24px;background:#fbfaf5;border:1px solid #eee5c8;}
.bls-online-presence h3{margin:0 0 6px;font-size:19px;line-height:1.25;}
.bls-online-presence h3 span,.bls-landing-field label span{font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:#888;font-weight:950;margin-left:6px;}
.bls-online-presence p,.bls-field-help{margin:0 0 14px;color:#626a73;font-weight:750;line-height:1.45;}
.bls-url-field{margin-top:14px;}
.bls-url-wrap{position:relative;display:flex;align-items:center;}
.bls-url-wrap .bls-input{padding-right:44px!important;}
.bls-url-check{position:absolute;right:14px;top:50%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:999px;font-weight:950;color:transparent;background:#f1f3f5;border:1px solid #e4e7ea;}
.bls-url-check.ok{color:#0f7b43;background:#e8f8ef;border-color:#bde9cf;}
.bls-url-help{display:block;min-height:18px;margin-top:6px;color:#b00020;font-weight:800;font-size:12px;}
.bls-landing-field{margin-top:18px;padding-top:18px;border-top:1px solid #eceff2;}

/* v1.3.0 Conversation Engine */
.bls-tab-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px}.bls-tab-head p{margin:8px 0 0!important;line-height:1.5!important}.bls-conversation-engine{display:flex;flex-direction:column;gap:14px}.bls-message-list{display:flex;flex-direction:column;gap:14px;max-height:560px;overflow:auto;padding:8px 4px 12px;scrollbar-width:thin}.bls-message{display:flex;gap:12px;align-items:flex-end;max-width:92%}.bls-message.client{align-self:flex-end;flex-direction:row-reverse}.bls-message.expert{align-self:flex-start}.bls-message.buzz{align-self:center;max-width:96%}.bls-message-avatar{width:42px;height:42px;border-radius:999px;display:flex;align-items:center;justify-content:center;flex:0 0 42px;background:#111;color:#fff;font-weight:950;font-size:13px}.bls-message.buzz .bls-message-avatar{background:#ffd200;color:#111;font-size:22px}.bls-message.client .bls-message-avatar{background:#e9eef7;color:#111}.bls-message-bubble{background:#f6f7f9;border:1px solid #edf0f2;border-radius:22px;padding:16px 18px;box-shadow:0 8px 24px rgba(0,0,0,.04);min-width:220px}.bls-message.client .bls-message-bubble{background:#111;color:#fff;border-color:#111}.bls-message.expert .bls-message-bubble{background:#eef5ff;border-color:#d9e9ff}.bls-message.buzz .bls-message-bubble{background:#fff8d8;border-color:#ffd200}.bls-message-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:7px}.bls-message-meta b{font-size:14px;font-weight:950}.bls-message-meta span{font-size:12px;font-weight:850;color:#77808c}.bls-message.client .bls-message-meta span{color:#d6d6d6}.bls-insight-badge{background:#ffd200!important;color:#111!important;border-radius:999px;padding:4px 8px;font-size:11px!important;text-transform:uppercase;letter-spacing:.04em}.bls-message-bubble p{font-size:16px;line-height:1.55;margin:0!important;font-weight:700;color:inherit}.bls-message-files{display:flex;flex-direction:column;gap:8px;margin-top:12px}.bls-message-files a{display:block;background:rgba(255,255,255,.65);border:1px solid rgba(0,0,0,.08);border-radius:14px;padding:10px 12px;color:#111!important;text-decoration:none;font-weight:900}.bls-message.client .bls-message-files a{background:rgba(255,255,255,.1);color:#fff!important;border-color:rgba(255,255,255,.18)}.bls-message-empty,.bls-message-loading{padding:28px;border-radius:22px;background:#f8f9fb;border:1px solid #edf0f2;color:#6b7280;font-weight:850;text-align:center}.bls-message-composer{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:end;border:1px solid #e8ebef;border-radius:24px;background:#fff;padding:12px;box-shadow:0 12px 32px rgba(0,0,0,.05)}.bls-message-input{width:100%;min-height:54px;max-height:180px;border:0!important;outline:none!important;resize:none;background:#f8f9fb;border-radius:18px;padding:16px 18px;font-size:16px;line-height:1.45;font-weight:750;color:#111}.bls-message-actions{display:flex;gap:8px;align-items:center}.bls-message-attach{position:relative;overflow:hidden}.bls-message-attach input{position:absolute;inset:0;opacity:0;cursor:pointer}.bls-message-attachments{display:flex;flex-direction:column;gap:8px}.bls-message-attachments .bls-uploaded-file{display:flex;align-items:center;justify-content:space-between;gap:10px}.bls-message-attachments button{border:0;background:#fff1b9;border-radius:999px;padding:6px 10px;font-weight:900;cursor:pointer}.bls-conversation-engine.uploading .bls-message-composer{opacity:.85}@media(max-width:900px){.bls-message{max-width:100%}.bls-message-composer{grid-template-columns:1fr}.bls-message-actions{justify-content:flex-end}.bls-message-list{max-height:480px}}
/* v1.5.3-alpha.30: asset_hint link (see renderMessages() in studio.js) - a small pill-style anchor
   under the message text/attachments that jumps down to the Assets tab. */
.bls-message-asset-link{display:inline-block;margin-top:12px;background:#ffd200;color:#111!important;border-radius:999px;padding:8px 14px;font-size:13px;font-weight:950;text-decoration:none!important;}
.bls-message-asset-link:hover{background:#ffc800;}
.bls-message.client .bls-message-asset-link{background:rgba(255,255,255,.9);}

/* v1.3.1 Workspace Polish + Media Library */
.bls-workspace-tabs a.active,
.bls-workspace-tabs a:hover,
.bls-workspace-tabs a:focus{
  background:#ffd200!important;
  color:#111!important;
  font-weight:950!important;
}
.bls-media-library{margin-top:18px;}
.bls-media-library-head{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:0 0 18px;}
.bls-media-library-head h3{margin:0;font-size:24px;line-height:1.2;}
.bls-media-library-head p{margin:6px 0 0;color:#68707a;font-weight:850;}
.bls-media-pill{background:#fff3bc;border:1px solid #ffd200;border-radius:999px;padding:8px 12px;font-size:12px;font-weight:950;text-transform:uppercase;letter-spacing:.04em;color:#5d4c00;}
.bls-media-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px;}
.bls-media-card{appearance:none;border:1px solid #eadfca;background:#fff;border-radius:20px;padding:0;overflow:hidden;text-align:left;cursor:pointer;box-shadow:0 10px 28px rgba(0,0,0,.04);transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;color:#111;}
.bls-media-card:hover{transform:translateY(-2px);box-shadow:0 18px 38px rgba(0,0,0,.08);border-color:#ffd200;}
.bls-media-preview{height:150px;background:#f7f5ed;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;}
.bls-media-preview img,.bls-media-preview video{width:100%;height:100%;object-fit:cover;display:block;}
.bls-file-preview{font-size:42px;color:#8b806a;}
.bls-video-preview span{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:54px;height:54px;border-radius:999px;background:rgba(0,0,0,.72);color:#fff;display:flex;align-items:center;justify-content:center;font-size:22px;box-shadow:0 10px 22px rgba(0,0,0,.25);}
.bls-media-info{padding:14px 15px 16px;min-height:92px;}
.bls-media-info b{display:block;font-size:14px;line-height:1.35;font-weight:950;word-break:break-word;color:#111;}
.bls-media-info small{display:block;margin-top:8px;color:#6d7480;font-weight:850;text-transform:uppercase;font-size:11px;letter-spacing:.03em;}
.bls-media-modal{position:fixed;inset:0;background:rgba(0,0,0,.72);z-index:999999;display:none;align-items:center;justify-content:center;padding:28px;}
.bls-media-modal.open{display:flex;}
.bls-media-modal-inner{background:#fff;border-radius:28px;max-width:min(980px,94vw);max-height:92vh;width:100%;box-shadow:0 30px 90px rgba(0,0,0,.35);overflow:hidden;position:relative;}
.bls-media-close{position:absolute;right:16px;top:14px;width:42px;height:42px;border:0;border-radius:999px;background:#111;color:#fff;font-size:28px;line-height:1;cursor:pointer;z-index:2;}
.bls-media-modal-body{min-height:260px;max-height:72vh;background:#f5f3ec;display:flex;align-items:center;justify-content:center;padding:24px;}
.bls-media-modal-body img,.bls-media-modal-body video{max-width:100%;max-height:66vh;border-radius:16px;box-shadow:0 12px 32px rgba(0,0,0,.12);background:#fff;}
.bls-media-modal-body .bls-file-preview{font-size:80px;}
.bls-media-modal-meta{display:flex;align-items:center;justify-content:flex-start;gap:18px;padding:18px 22px;border-top:1px solid #eee;}
.bls-media-modal-meta b{font-size:16px;font-weight:950;word-break:break-word;}
@media(max-width:760px){.bls-media-grid{grid-template-columns:1fr 1fr}.bls-media-preview{height:120px}.bls-media-library-head{align-items:flex-start;flex-direction:column}.bls-media-modal{padding:14px}}

/* v1.5.3-alpha.30: editable asset manager (Expert Review Assets tab + Campaign Builder Asset
   Group) - .bls-asset-browse/.bls-file-btn/.bls-upload-status above are reused as-is for the
   dropzone; these are just the new bits (the wrap that hosts the Remove button next to the
   existing read-only .bls-media-card, and a little breathing room around the whole manager). */
.bls-campaign-asset-manager{margin-top:14px;}
.bls-campaign-asset-manager-grid{margin-top:18px;}
.bls-asset-manager-browse{margin-bottom:0;}
.bls-media-card-wrap{position:relative;}
.bls-media-card-wrap .bls-media-card{width:100%;}
.bls-remove-campaign-asset{position:absolute;top:10px;right:10px;z-index:2;appearance:none;border:1px solid #e6b3ad;background:#fff5f4;color:#a02c22;font-weight:900;font-size:11px;text-transform:uppercase;letter-spacing:.03em;border-radius:999px;padding:6px 12px;cursor:pointer;box-shadow:0 6px 14px rgba(0,0,0,.1);}
.bls-remove-campaign-asset:hover{background:#a02c22;color:#fff;border-color:#a02c22;}
.bls-remove-campaign-asset:disabled{opacity:.6;cursor:default;}

/* v1.5.3-alpha.30: blsToast() (studio.js) - the polling notification for new messages/tasks. Fixed
   bottom-right, fades/slides in on .show (added a frame after insertion so the transition actually
   runs), auto-dismisses after 6s. Clickable variant (a new message/task toast) gets a pointer
   cursor and a subtle hover to signal it'll jump you to that section. */
.bls-live-toast{position:fixed;right:22px;bottom:22px;z-index:999999;background:#111;color:#fff;font-weight:900;font-size:14px;border-radius:16px;padding:14px 20px;box-shadow:0 18px 40px rgba(0,0,0,.28);opacity:0;transform:translateY(12px);transition:opacity .25s ease, transform .25s ease;max-width:320px;}
.bls-live-toast.show{opacity:1;transform:translateY(0);}
.bls-live-toast-clickable{cursor:pointer;border:1px solid #ffd200;}
.bls-live-toast-clickable:hover{background:#1d1d1d;}
@media(max-width:600px){.bls-live-toast{left:16px;right:16px;bottom:16px;max-width:none;}}

/* v1.4.1 Task System
   v1.5.2-alpha.28 consistency pass: this section - the one Drew called out by name - was two
   builds stacked on top of each other (v1.4.1 then a "v1.4.1a polish" pass layered on with
   !important overrides instead of replacing the original rules). The .bls-task-create-row wrapper
   from the first pass isn't even in the current markup any more. Below is the single clean
   definition matching what the polish pass actually rendered, with one consistent heading/body
   scale instead of two competing ones. */
.bls-task-engine{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(360px,.9fr);gap:28px;align-items:start;}
.bls-task-list{display:flex;flex-direction:column;gap:18px;}
.bls-task-empty{padding:28px;border-radius:22px;background:#f8f9fb;border:1px solid #edf0f2;color:#68707a;font-weight:850;text-align:center;}
.bls-task-group{display:flex;flex-direction:column;gap:12px;}
.bls-task-group + .bls-task-group{margin-top:22px;}
.bls-task-group h4{margin:0 0 10px;font-size:13px;letter-spacing:.06em;text-transform:uppercase;color:#68707a;font-weight:950;}
.bls-task-item{display:grid;grid-template-columns:54px 1fr;gap:16px;background:#fff;border:1px solid #eceff2;border-radius:24px;padding:22px;box-shadow:0 10px 28px rgba(0,0,0,.035);}
.bls-task-item.open{border-left:6px solid #ffd200;}
.bls-task-item.completed{opacity:.72;background:#f8f9fb;border-left:6px solid #22a36a;}
.bls-task-item h3{margin:0 0 4px;font-size:18px;line-height:1.25;font-weight:950;color:#111;}
.bls-task-item.completed h3{text-decoration:line-through;color:#68707a;}
.bls-task-item p{margin:0;font-size:15px;line-height:1.5;color:#5f6874;font-weight:750;max-width:760px;}
.bls-task-meta{display:flex;flex-wrap:wrap;gap:9px;margin-top:14px;}
.bls-task-meta span{background:#f2f3f5;border-radius:999px;padding:7px 11px;font-size:12px;font-weight:900;color:#535d68;}
/* position:relative added defensively (v1.5.3-alpha.30) - the checkbox input inside is position:
   absolute, and without an explicit positioned ancestor here it was relying on whatever the nearest
   positioned ancestor further up the page happened to be, which is fragile. Native label/input
   click association doesn't depend on this for the click-to-toggle behavior itself, but a properly
   scoped positioning context is correct regardless. */
.bls-task-check{position:relative;display:flex;align-items:flex-start;justify-content:center;}
.bls-task-check input{position:absolute;opacity:0;width:1px;height:1px;}
.bls-task-check span{width:34px;height:34px;border-radius:50%;border:2px solid #d7d1bd;background:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 6px 18px rgba(0,0,0,.04);transition:.18s ease;}
.bls-task-check input:checked + span{background:#111;border-color:#111;}
.bls-task-check input:checked + span:after{content:'✓';color:#ffd200;font-weight:950;font-size:19px;line-height:1;}
.bls-task-check input:not(:disabled)+span{cursor:pointer;}
.bls-task-check input:not(:disabled)+span:hover{border-color:#ffd200;transform:scale(1.03);}
.bls-task-create{background:#fff7d5;border:1px solid #ffd200;border-radius:26px;padding:24px;box-shadow:0 18px 44px rgba(0,0,0,.07);position:sticky;top:14px;}
.bls-task-create h3{margin:0 0 18px;font-size:22px;line-height:1.2;font-weight:950;color:#222;}
.bls-task-create label{display:block;margin:14px 0 7px;font-size:12px;text-transform:uppercase;letter-spacing:.06em;font-weight:950;color:#65501a;}
.bls-task-create label:first-child{margin-top:0;}
.bls-task-create .bls-input,.bls-task-create textarea{width:100%;box-sizing:border-box;}
.bls-task-create textarea{min-height:132px;resize:vertical;}
.bls-task-create .bls-task-create-btn{width:100%;margin-top:18px;justify-content:center;min-height:56px;font-size:16px;}
@media(max-width:1200px){.bls-task-engine{grid-template-columns:1fr;}.bls-task-create{position:static;}.bls-task-create .bls-task-create-btn{width:100%;}}

/* v1.4.2 Approval Workflow */
.bls-recommendation-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;margin-top:18px;}
.bls-recommendation-grid article{background:#fff;border:1px solid #efe6c9;border-radius:18px;padding:16px 17px;box-shadow:0 8px 22px rgba(0,0,0,.035);}
.bls-recommendation-grid b{display:block;font-size:14px;font-weight:950;margin-bottom:7px;color:#111;}
.bls-recommendation-grid span{display:block;font-size:14px;line-height:1.45;color:#59616b;font-weight:750;}
.bls-approval-engine{margin-top:22px;background:#f8fbff;border:1px solid #dfeaff;border-radius:24px;padding:22px;box-shadow:0 10px 28px rgba(0,0,0,.035);}
.bls-approval-engine h3{font-size:24px!important;line-height:1.2!important;margin:0 0 8px!important;}
.bls-approval-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:16px;}
.bls-approval-note{background:#fff;border:1px solid #edf0f2;border-radius:18px;padding:16px 18px;font-weight:850;color:#68707a;}
.bls-approval-notes-wrap{margin-top:16px;background:#fff;border:1px solid #edf0f2;border-radius:18px;padding:16px;}
.bls-approval-notes-wrap label{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.06em;font-weight:950;color:#5d6570;margin-bottom:8px;}
.bls-approval-notes{min-height:96px!important;resize:vertical;}
.bls-approval-note-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:12px;}
.bls-approval-feedback{margin-top:14px;background:#e9f8ef;color:#136b3d;border:1px solid #bde9cf;border-radius:16px;padding:12px 14px;font-weight:950;}
.bls-status-card-yellow .bls-workspace-status{background:#fff8dc;border-color:#ffe18a;}
.bls-status-card-green .bls-workspace-status{background:#ecfff4;border-color:#bde9cf;}
@media(max-width:760px){.bls-approval-actions{flex-direction:column}.bls-approval-actions .bls-btn{width:100%;}}

/* v1.5.0bb Activation Experience */
.bls-app-activation .bls-sidebar nav a.locked{opacity:.45;filter:grayscale(.25);pointer-events:auto}
.bls-app-activation .bls-sidebar nav a.locked .bls-nav-label:after{content:' 🔒';font-size:12px;opacity:.85}
.bls-app-activation .bls-sidebar nav a[href*="blueprint"]{box-shadow:0 0 0 1px rgba(246,190,0,.45) inset;background:rgba(246,190,0,.12)}
.bls-activation-shell{position:relative;min-height:calc(100vh - 64px);display:flex;align-items:center;justify-content:center;padding:42px;overflow:hidden}
.bls-dashboard-preview{position:absolute;inset:24px;display:flex;flex-direction:column;gap:18px;filter:blur(7px);opacity:.48;transform:scale(1.01);pointer-events:none}
.bls-preview-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px}
.bls-preview-card{background:#fff;border:1px solid rgba(17,17,17,.08);border-radius:24px;padding:28px;box-shadow:0 18px 50px rgba(0,0,0,.08);min-height:130px}
.bls-preview-card.wide{min-height:180px}
.bls-preview-card span{display:block;color:#777;text-transform:uppercase;font-size:12px;letter-spacing:.12em;margin-bottom:10px;font-weight:800}
.bls-preview-card strong{font-size:34px;display:block;color:#111}
.bls-preview-card p{color:#555;max-width:620px}
/* v1.5.3-alpha.27: widened per Drew - the "Get Started with Buzz" header (alpha.26) was wrapping to
   two lines because the card was sized for the old, longer "Welcome to Bee Local Studio." heading.
   Buzz's avatar is positioned via right/top offsets off the overlay's own corner (see .bls-
   activation-buzz below), so widening this box doesn't require repositioning it. */
.bls-activation-overlay{position:relative;z-index:2;max-width:860px;background:rgba(255,255,255,.94);backdrop-filter:blur(18px);border:1px solid rgba(17,17,17,.08);box-shadow:0 30px 90px rgba(0,0,0,.18);border-radius:34px;padding:46px 48px 44px;text-align:left;overflow:visible}
.bls-activation-buzz{position:absolute;right:-64px;top:-88px;width:235px;animation:blsBuzzFloat 4s ease-in-out infinite;filter:drop-shadow(0 18px 28px rgba(0,0,0,.18));pointer-events:none}
/* max-width:600px removed (was the actual cause of the wrap, independent of the overlay's own
   width above) - the heading now uses whatever width the widened overlay gives it. */
.bls-activation-overlay h1{font-size:56px;line-height:1.02;margin:14px 0 18px;letter-spacing:-.04em;color:#111;}
.bls-activation-overlay p{font-size:18px;line-height:1.65;color:#3d3d3d;max-width:690px;margin:0 0 16px}
.bls-activation-cta{margin-top:12px;font-size:16px;padding:16px 22px;border-radius:16px}
.bls-dashboard-new{display:flex;flex-direction:column;gap:20px}
.bls-dashboard-hero{display:flex;align-items:center;justify-content:space-between;min-height:220px;overflow:hidden}
.bls-dashboard-hero h1{font-size:58px;line-height:1.05;margin:12px 0;letter-spacing:-.04em}
.bls-dashboard-buzz{width:210px;align-self:flex-end;animation:blsBuzzFloat 4s ease-in-out infinite;filter:drop-shadow(0 15px 24px rgba(0,0,0,.14))}
.bls-dashboard-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:20px}
.bls-brief-card{min-height:230px}
.bls-quick-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:16px}
.bls-stat-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}
.bls-stat-row div{border:1px solid rgba(17,17,17,.08);border-radius:18px;padding:18px;background:#faf9f5}
.bls-stat-row b{display:block;font-size:34px;line-height:1;color:#111;margin-bottom:8px}
.bls-stat-row span{color:#666;font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.08em}
.bls-nav-badge.attention{background:#f6be00;color:#111;min-width:auto;padding:3px 7px;border-radius:999px;font-size:10px;font-weight:900;text-transform:uppercase;letter-spacing:.04em}
.bls-unlock-complete h2{font-size:48px;line-height:1.08;margin:10px 0 16px}
@media(max-width:1100px){.bls-preview-grid{grid-template-columns:repeat(2,1fr)}.bls-activation-buzz{right:-30px;top:-95px;width:190px}.bls-dashboard-grid{grid-template-columns:1fr}.bls-dashboard-hero h1{font-size:44px}}
@media(max-width:720px){.bls-activation-shell{padding:20px;align-items:flex-start}.bls-dashboard-preview{display:none}.bls-activation-overlay{padding:120px 24px 28px;border-radius:24px}.bls-activation-buzz{right:18px;top:-70px;width:170px}.bls-activation-overlay h1{font-size:38px}.bls-activation-overlay p{font-size:16px}.bls-dashboard-hero{flex-direction:column;align-items:flex-start}.bls-dashboard-buzz{width:160px}.bls-dashboard-hero h1{font-size:38px}}


/* Bee Local Studio Alpha v1.5.0bb — Activation Polish */
.bls-activation-card .bls-primary-cta,
.bls-activation-card .bls-start-blueprint,
.bls-activation-card a[href*="business-blueprint"],
.bls-activation-card button,
.bls-activation-cta,
.bls-start-blueprint,
.bls-activation-overlay .bls-primary,
.bls-activation-overlay .bls-btn-primary {
    margin-top: 30px !important;
}

.bls-activation-card,
.bls-activation-panel,
.bls-activation-overlay .bls-card,
.bls-activation-overlay .bls-hero-card {
    padding-bottom: 42px !important;
}

.bls-activation-card p,
.bls-activation-panel p,
.bls-activation-overlay p {
    line-height: 1.65 !important;
    margin-bottom: 0.9rem;
}

.bls-activation-card p:last-of-type,
.bls-activation-panel p:last-of-type,
.bls-activation-overlay p:last-of-type {
    margin-bottom: 0 !important;
}


/* Bee Local Studio Alpha v1.5.0b — Activation Spacing Fix
   Target only the activation intro CTA and force it onto its own clean line. */
.bls-activation-card .bls-activation-cta,
.bls-activation-panel .bls-activation-cta,
.bls-activation-overlay .bls-activation-cta,
.bls-activation-card .bls-start-blueprint,
.bls-activation-panel .bls-start-blueprint,
.bls-activation-overlay .bls-start-blueprint {
    display: inline-flex !important;
    align-items: center !important;
    justify-content: center !important;
    clear: both !important;
    float: none !important;
    position: relative !important;
    margin-top: 34px !important;
    margin-bottom: 0 !important;
    z-index: 5 !important;
}

.bls-activation-card p:last-of-type,
.bls-activation-panel p:last-of-type,
.bls-activation-overlay p:last-of-type {
    display: block !important;
    margin-bottom: 0 !important;
    padding-bottom: 0 !important;
}

.bls-activation-card .bls-activation-copy,
.bls-activation-panel .bls-activation-copy,
.bls-activation-overlay .bls-activation-copy {
    margin-bottom: 0 !important;
}

.bls-activation-card,
.bls-activation-panel,
.bls-activation-overlay .bls-card,
.bls-activation-overlay .bls-hero-card {
    padding-bottom: 52px !important;
}

/* Bee Local Studio Alpha v1.5.1 — Dashboard Foundation */
.bls-dashboard-foundation{display:flex;flex-direction:column;gap:22px;max-width:1440px;margin:0 auto;}
.bls-foundation-hero{position:relative;min-height:250px;background:radial-gradient(circle at 80% 20%, rgba(246,190,0,.24), transparent 34%), linear-gradient(135deg,#ffffff 0%,#fffaf0 55%,#f6f7f2 100%);border:1px solid rgba(17,17,17,.08);}
.bls-foundation-hero .bls-lede{max-width:760px;}
.bls-version-pill{display:inline-flex;align-items:center;gap:8px;margin-top:16px;padding:10px 14px;border-radius:999px;background:#111;color:#fff;font-size:12px;font-weight:950;text-transform:uppercase;letter-spacing:.08em;box-shadow:0 12px 26px rgba(0,0,0,.14);}
.bls-action-card-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;}
.bls-action-card{display:flex;flex-direction:column;gap:10px;min-height:170px;padding:22px;border-radius:24px;background:#fff;border:1px solid rgba(17,17,17,.08);text-decoration:none!important;color:#111!important;box-shadow:0 14px 36px rgba(0,0,0,.055);transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;}
.bls-action-card:hover{transform:translateY(-4px);box-shadow:0 22px 48px rgba(0,0,0,.09);border-color:rgba(246,190,0,.55);}
.bls-action-card span{width:46px;height:46px;display:flex;align-items:center;justify-content:center;border-radius:16px;background:#f7f2df;font-size:23px;}
.bls-action-card strong{font-size:21px;line-height:1.1;font-weight:950;}
.bls-action-card small{font-size:14px;line-height:1.45;color:#59616b;font-weight:750;}
.bls-action-card.primary{background:#111;color:#fff!important;border-color:#111;}
.bls-action-card.primary span{background:#f6be00;color:#111;}
.bls-action-card.primary small{color:rgba(255,255,255,.72);}
.bls-foundation-layout{display:grid;grid-template-columns:1.35fr .85fr;gap:20px;align-items:start;}
.bls-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:18px;}
.bls-card-head h2{margin:4px 0 0!important;}
.bls-card-head small{padding:8px 10px;border-radius:999px;background:#f4f4f1;color:#68707a;font-weight:900;font-size:11px;text-transform:uppercase;letter-spacing:.07em;white-space:nowrap;}
.bls-status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;}
.bls-status-tile{display:flex;gap:13px;border-radius:20px;padding:16px;background:#fbfbf8;border:1px solid rgba(17,17,17,.08);}
.bls-status-tile i{width:13px;height:13px;border-radius:50%;flex:0 0 auto;margin-top:4px;box-shadow:0 0 0 5px rgba(0,0,0,.04);}
.bls-status-tile.green i{background:#23b26b;}
.bls-status-tile.yellow i{background:#f6be00;}
.bls-status-tile b{display:block;font-size:15px;font-weight:950;color:#111;margin-bottom:2px;}
.bls-status-tile span{display:block;font-size:12px;font-weight:950;text-transform:uppercase;letter-spacing:.07em;color:#555;}
.bls-status-tile p{font-size:13px;line-height:1.45;color:#68707a;margin:8px 0 0!important;font-weight:700;}
.bls-snapshot-panel,.bls-buzz-panel{min-height:220px;}
.bls-foundation-stats{grid-template-columns:repeat(2,minmax(0,1fr));}
.bls-activity-panel{grid-column:1 / 2;}
.bls-activity-feed{display:flex;flex-direction:column;gap:13px;}
.bls-activity-feed article{display:flex;gap:13px;align-items:flex-start;padding:14px;border-radius:18px;background:#faf9f5;border:1px solid rgba(17,17,17,.06);}
.bls-activity-feed article>span{width:10px;height:10px;border-radius:50%;background:#f6be00;margin-top:6px;box-shadow:0 0 0 5px rgba(246,190,0,.18);}
.bls-activity-feed b{display:block;color:#111;font-weight:950;}
.bls-activity-feed small{display:block;color:#68707a;font-weight:800;margin-top:3px;}
.bls-buzz-panel{display:flex;align-items:center;gap:18px;background:linear-gradient(135deg,#111 0%,#282622 100%);color:#fff;overflow:hidden;}
.bls-buzz-panel img{width:132px;filter:drop-shadow(0 14px 22px rgba(0,0,0,.28));animation:blsBuzzFloat 4s ease-in-out infinite;}
.bls-buzz-panel h2{color:#fff!important;margin:6px 0 8px!important;}
.bls-buzz-panel p{color:rgba(255,255,255,.72)!important;font-weight:750;line-height:1.55;}
.bls-buzz-panel .bls-kicker{color:#f6be00!important;}
.bls-buzz-panel .bls-btn.ghost{border-color:rgba(255,255,255,.28)!important;color:#fff!important;background:rgba(255,255,255,.08)!important;}
.bls-studio-footer{text-align:center;color:#777;font-size:12px;font-weight:950;text-transform:uppercase;letter-spacing:.12em;padding:8px 0 2px;}
@media(max-width:1180px){.bls-action-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.bls-foundation-layout{grid-template-columns:1fr;}.bls-activity-panel{grid-column:auto;}}
@media(max-width:720px){.bls-dashboard-foundation{gap:16px}.bls-action-card-grid,.bls-status-grid{grid-template-columns:1fr}.bls-action-card{min-height:auto}.bls-foundation-hero{min-height:auto}.bls-buzz-panel{flex-direction:column;align-items:flex-start}.bls-buzz-panel img{width:110px}.bls-card-head{flex-direction:column}.bls-card-head small{white-space:normal}}

/* Bee Local Studio Alpha v1.5.1a — Expert/Client Dashboard Foundation patch */
.bls-foundation-hero .bls-version-pill{display:none!important;}
.bls-dashboard-topline{display:grid;grid-template-columns:1fr;gap:20px;align-items:stretch;}
.bls-client-dashboard .bls-dashboard-topline{grid-template-columns:minmax(360px,.72fr) minmax(420px,1fr);}
.bls-action-card-grid{max-width:980px;margin-left:auto;margin-right:auto;width:100%;justify-content:center;}
.bls-action-card-grid.bls-action-count-2{grid-template-columns:repeat(2,minmax(220px,310px));align-content:start;}
.bls-action-card-grid.bls-action-count-4{grid-template-columns:repeat(4,minmax(0,1fr));}
.bls-client-dashboard .bls-action-card-grid{align-self:stretch;align-items:stretch;}
.bls-client-dashboard .bls-action-card{min-height:190px;}
.bls-buzz-panel{padding:34px!important;align-items:center;}
.bls-buzz-panel p{margin-bottom:18px!important;}
.bls-buzz-panel .bls-btn.ghost{margin-top:6px!important;display:inline-flex;}
.bls-reporting-snapshot{min-height:100%;}
.bls-reporting-snapshot .bls-card-head{margin-bottom:10px;}
.bls-mini-chart{height:150px;border-radius:22px;background:linear-gradient(135deg,#fff8df 0%,#f7f7f1 100%);border:1px solid rgba(17,17,17,.08);padding:12px;margin:12px 0 14px;overflow:hidden;}
.bls-mini-chart svg{width:100%;height:100%;display:block;}
.bls-mini-chart polyline{fill:none;stroke:#111;stroke-width:6;stroke-linecap:round;stroke-linejoin:round;opacity:.82;}
.bls-mini-chart polyline:nth-child(2){stroke:#f6be00;opacity:.95;}
.bls-mini-chart polyline:nth-child(3){stroke:#6b7280;opacity:.55;}
.bls-kpi-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0;}
.bls-kpi-row>div{border-radius:18px;background:#faf9f5;border:1px solid rgba(17,17,17,.06);padding:14px;text-align:center;}
.bls-kpi-row b{display:block;font-size:22px;font-weight:950;color:#111;line-height:1;}
.bls-kpi-row span{display:block;margin-top:6px;font-size:11px;font-weight:950;text-transform:uppercase;letter-spacing:.08em;color:#68707a;}
.bls-reporting-snapshot p{font-weight:750;color:#59616b;line-height:1.55;margin:10px 0 16px!important;}
.bls-large-chart{height:220px;margin-top:22px;}
.bls-reporting-buzz{flex-direction:column;align-items:flex-start!important;}
.bls-reporting-buzz img{width:110px;}
@media(max-width:1180px){.bls-client-dashboard .bls-dashboard-topline{grid-template-columns:1fr}.bls-action-card-grid.bls-action-count-4{grid-template-columns:repeat(2,minmax(0,1fr));}}
@media(max-width:720px){.bls-action-card-grid.bls-action-count-2,.bls-action-card-grid.bls-action-count-4{grid-template-columns:1fr}.bls-client-dashboard .bls-dashboard-topline{grid-template-columns:1fr}.bls-kpi-row{grid-template-columns:1fr}.bls-buzz-panel{padding:26px!important;}}

/* v1.5.1b dashboard polish */
.bls-client-dashboard .bls-dashboard-topline{
  display:flex!important;
  flex-direction:column!important;
  gap:28px!important;
  align-items:stretch!important;
}
.bls-client-dashboard .bls-action-card-grid.bls-action-count-2{
  margin:0 auto 10px!important;
  justify-content:center!important;
  justify-items:center!important;
  align-items:stretch!important;
  max-width:760px!important;
  width:100%!important;
}
.bls-client-dashboard .bls-action-card-grid.bls-action-count-2 .bls-action-card{
  width:100%!important;
  max-width:340px!important;
}
.bls-buzz-panel{
  padding:38px!important;
  align-items:center!important;
}
.bls-buzz-panel > div{
  display:flex!important;
  flex-direction:column!important;
  align-items:flex-start!important;
  min-width:0!important;
}
.bls-buzz-panel p{
  margin:0 0 26px!important;
  max-width:560px!important;
}
.bls-buzz-panel .bls-btn.ghost{
  margin-top:8px!important;
  margin-bottom:4px!important;
  flex:0 0 auto!important;
}
.bls-reporting-snapshot{
  padding:34px!important;
  overflow:hidden!important;
}
.bls-reporting-snapshot .bls-card-head{
  margin-bottom:18px!important;
}
.bls-reporting-snapshot .bls-kpi-row{
  margin:10px 0 20px!important;
}
.bls-chart-image-wrap{
  width:100%!important;
  border-radius:24px!important;
  background:#fff!important;
  border:1px solid rgba(17,17,17,.08)!important;
  overflow:hidden!important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.7)!important;
  margin:14px 0 18px!important;
}
.bls-chart-image-wrap img{
  display:block!important;
  width:100%!important;
  height:auto!important;
  max-height:360px!important;
  object-fit:cover!important;
}
.bls-reporting-snapshot .bls-buzz-note{
  display:block!important;
  background:#fff7db!important;
  border:1px solid rgba(246,190,0,.25)!important;
  border-radius:14px!important;
  padding:12px 14px!important;
  margin:0 0 18px!important;
  font-weight:750!important;
  color:#3b3b33!important;
  line-height:1.45!important;
}
.bls-large-chart img{max-height:420px!important;}
@media(max-width:720px){
  .bls-client-dashboard .bls-action-card-grid.bls-action-count-2{grid-template-columns:1fr!important;max-width:420px!important;margin-bottom:16px!important;}
  .bls-buzz-panel{padding:28px!important;}
  .bls-buzz-panel p{margin-bottom:22px!important;}
  .bls-reporting-snapshot{padding:24px!important;}
}


/* v1.5.1c — Expert Dashboard Layout Polish */
.bls-expert-dashboard .bls-dashboard-topline{
  width:100%!important;
  display:block!important;
}
.bls-expert-dashboard .bls-action-card-grid.bls-action-count-4{
  max-width:none!important;
  width:100%!important;
  margin:4px 0 4px!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:24px!important;
  justify-content:stretch!important;
  justify-items:stretch!important;
  align-items:stretch!important;
}
.bls-expert-dashboard .bls-action-card-grid.bls-action-count-4 .bls-action-card{
  width:auto!important;
  min-height:190px!important;
  padding:26px!important;
}
@media(max-width:1180px){
  .bls-expert-dashboard .bls-action-card-grid.bls-action-count-4{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
}
@media(max-width:720px){
  .bls-expert-dashboard .bls-action-card-grid.bls-action-count-4{
    grid-template-columns:1fr!important;
    gap:16px!important;
  }
}

/* Campaign Center foundation (v1.5.2): ad-platform connection pills + Campaign Builder scaffold */
.bls-status-pill{display:inline-block;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.05em;padding:5px 12px;border-radius:999px;margin-left:10px;vertical-align:middle;}
.bls-status-pill.green{background:#e4f8ee;color:#178a4c;}
.bls-status-pill.yellow{background:#fff3cf;color:#8a6d00;}
.bls-status-pill.red{background:#fbe7e6;color:#a02c22;}
a.bls-status-pill{text-decoration:none;cursor:pointer;}
.bls-card h3{font-size:20px;margin:30px 0 4px;}
.bls-card h3:first-of-type{margin-top:20px;}

/* Media Pipeline (v1.5.2-alpha.33): Cloudinary "Ads Ready" / YouTube badges on uploaded assets */
.bls-ad-ready-badges{padding:0 15px 14px;margin-top:-6px;}
.bls-ad-ready-badges .bls-status-pill{margin-left:0;}
.bls-asset-row .bls-status-pill{margin-left:8px;}
.bls-media-yt-link{display:inline-block;font-weight:900;color:#178a4c;text-decoration:none;}
.bls-media-yt-link:hover{text-decoration:underline;}
.bls-cb-account-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin:20px 0;}
.bls-cb-platform-tabs{display:flex;gap:10px;margin:20px 0;}
.bls-cb-platform-tabs button{border:1px solid #ddd;background:#fff;border-radius:999px;padding:10px 20px;font-weight:900;cursor:pointer;}
.bls-cb-platform-tabs button.active{background:#050505;color:#fff;border-color:#050505;}
.bls-cb-campaign-row{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border:1px solid rgba(0,0,0,.08);border-radius:18px;margin-bottom:10px;background:#fff;}
.bls-cb-empty{background:#fff9df;border:1px solid #ffd200;border-radius:24px;padding:28px;margin-top:20px;}
.bls-btn.ghost.small{padding:6px 14px;font-size:13px;border-radius:999px;}
.bls-cb-picker{background:#f7f4eb;border:1px solid rgba(0,0,0,.06);border-radius:20px;padding:20px;margin:16px 0;}
.bls-cb-picker-search{display:flex;gap:10px;margin:8px 0;}
.bls-cb-picker-search input{flex:1;}
.bls-cb-picker-results{margin-top:10px;}
.bls-cb-picker-result{display:flex;align-items:center;gap:10px;justify-content:space-between;background:#fff;border:1px solid rgba(0,0,0,.06);border-radius:14px;padding:10px 14px;margin-bottom:8px;}
.bls-cb-picker-chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;}
.bls-cb-chip{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid rgba(0,0,0,.12);border-radius:999px;padding:6px 8px 6px 14px;font-size:13px;font-weight:800;}
.bls-cb-chip small{color:#8a7a4b;font-weight:700;}
.bls-cb-chip-remove{border:none;background:transparent;cursor:pointer;font-size:16px;line-height:1;color:#999;padding:0 4px;}
.bls-cb-chip-remove:hover{color:#b00020;}
/* v1.5.3-alpha.9: separate class (not .bls-cb-chip-remove) for the Meta Page/Instagram picker chips
   - .bls-cb-chip-remove has a generic document-level click delegate keyed on data-kind/data-index
   that's shared by the geo/audience/searchtheme/yourdata pickers; reusing it here with no data-kind
   would fall through to that delegate's default branch and incorrectly splice an unrelated array. */
.bls-cb-meta-chip-remove{border:none;background:transparent;cursor:pointer;font-size:16px;line-height:1;color:#999;padding:0 4px;}
.bls-cb-meta-chip-remove:hover{color:#b00020;}
.bls-cb-account-grid .bls-cb-unlink-account{margin-top:8px;}
.bls-cb-account-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px;}
#bls-cb-pmax-signals{margin-top:20px;}
.bls-cb-demo-group{margin-bottom:14px;}
.bls-cb-demo-group:last-child{margin-bottom:0;}
.bls-cb-demo-label{display:block;font-weight:800;font-size:12px;letter-spacing:.02em;text-transform:uppercase;color:#8a7a4b;margin-bottom:6px;}
.bls-cb-checkbox{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid rgba(0,0,0,.1);border-radius:999px;padding:6px 12px;margin:0 8px 8px 0;font-size:13px;font-weight:700;cursor:pointer;}
.bls-cb-checkbox input{margin:0;}
#bls-cb-signal-group-others.bls-cb-picker-disabled{opacity:.45;pointer-events:none;}
/* v1.5.3-alpha.15: Meta's own Age Range/Gender/Detailed Targeting mutual-exclusion group (see
   updateMetaSignalMutualExclusion() in studio.js) - same greyed-out-disabled treatment as Google's
   Pmax signal group above, just a separate id since the two live in different platform sections. */
#bls-cb-meta-signal-group-others.bls-cb-picker-disabled{opacity:.45;pointer-events:none;}
.bls-cb-account-actions button{margin-top:0;}
.bls-cb-radius-block{margin-top:16px;padding-top:16px;border-top:1px dashed rgba(0,0,0,.1);}
.bls-cb-radius-row{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0;align-items:center;}
.bls-cb-radius-row input,.bls-cb-radius-row select{width:auto;flex:1 1 120px;min-width:90px;}
.bls-buzz-note-secondary{color:#8a7a4b;font-size:13px;margin-top:-6px;}
.bls-location-fields{background:#fbfaf5;border:1px solid #eee5c8;border-radius:24px;padding:22px;}
.bls-location-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:16px;margin-bottom:8px;}
.bls-location-grid label{font-weight:900;display:block;margin:0 0 8px;font-size:15px;}
.bls-location-grid input{padding:14px 16px;font-size:16px;font-weight:700;}
.bls-location-fields>label{display:block;margin:18px 0 8px;font-weight:900;font-size:15px;}
.bls-location-fields textarea{min-height:80px;padding:14px 16px;font-size:16px;font-weight:700;}
.bls-checkbox-row{display:flex!important;align-items:center;gap:10px;font-weight:700!important;font-size:15px!important;margin:16px 0 0!important;cursor:pointer;}
.bls-checkbox-row input{width:auto;}

/* v1.5.2-alpha.24: Campaign Builder detail screen - accordion structure + visual consistency pass.
   Scoped deliberately: the accordion component itself is a brand-new class so it's safe anywhere,
   but the compact field-sizing rules only target #bls-cb-link-account/#bls-cb-build-form/
   .bls-accordion-body so the rest of Studio (Blueprint, Login, Campaign Studio) keeps its existing,
   larger, more consumer-friendly type scale - this screen is a dense expert tool used repeatedly,
   those are client-facing/onboarding screens meant to feel spacious, and conflating the two scales
   is exactly what produced the "patchworked" look Drew flagged. */

.bls-accordion{background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:20px;margin:14px 0;overflow:hidden;}
.bls-accordion:first-of-type{margin-top:0;}
.bls-accordion-summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:12px;padding:18px 22px;font-size:16px;font-weight:800;color:#17191d;user-select:none;}
.bls-accordion-summary::-webkit-details-marker{display:none;}
.bls-accordion-summary::marker{content:'';}
.bls-accordion-title{flex:1;}
.bls-accordion-meta{flex:0 1 auto;font-size:13px;font-weight:700;color:#8a7a4b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:45%;}
.bls-accordion-caret{width:9px;height:9px;border-right:2px solid #999;border-bottom:2px solid #999;transform:rotate(45deg);transition:transform .18s ease;flex-shrink:0;margin-left:auto;}
.bls-accordion[open] .bls-accordion-caret{transform:rotate(-135deg);}
.bls-accordion-summary:hover{background:#faf8f2;}
.bls-accordion-body{padding:2px 22px 22px;border-top:1px solid rgba(0,0,0,.06);}
.bls-accordion-disabled{opacity:.7;border-style:dashed;}
.bls-accordion-disabled .bls-accordion-summary:hover{background:transparent;}
.bls-cb-subheading{font-size:14px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:#8a7a4b;margin:22px 0 4px;}
.bls-cb-subheading:first-child{margin-top:0;}
.bls-cb-subheading .bls-cb-badge-soon{margin-left:8px;vertical-align:middle;text-transform:none;letter-spacing:normal;}
#bls-cb-campaign-name-preview{font-size:12px;margin:6px 0 0;}
.bls-cb-badge-soon{background:#fff1b9;color:#5d4700;padding:3px 10px;border-radius:999px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;}
.bls-cb-account-check{color:#11874a;font-weight:900;}
.bls-cb-account-summary{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#f0fff6;border:1px solid rgba(17,135,74,.18);border-radius:14px;padding:12px 16px;margin-bottom:14px;font-size:14px;}
.bls-cb-account-summary .bls-btn{margin-left:auto;margin-right:0;}
.bls-cb-suggest-strip{background:#fff9df;border:1px solid #ffd200;border-radius:20px;padding:18px 22px;margin:18px 0;}
/* Buzz's original client-side budget read (v1.5.3-alpha.6) - same boxed treatment as the Suggest
   strips above but a cooler tint, since this is a passive heads-up (what Buzz already told the
   client) rather than an action button. */
.bls-cb-budget-guidance{background:#f0f6ff;border:1px solid #cfe0ff;border-radius:20px;padding:16px 20px;margin:14px 0 18px;}
.bls-cb-budget-guidance .bls-buzz-note{margin:0;font-size:13px;line-height:1.55;}

/* Compact, consistent field scale for this screen only (see note above) - one font size for
   labels, one for inputs, one border-radius, applied uniformly instead of ad hoc per field. */
#bls-cb-link-account label:not(.bls-cb-checkbox),
#bls-cb-build-form label:not(.bls-cb-checkbox),
.bls-accordion-body label:not(.bls-cb-checkbox){display:block;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:#8a7a4b;margin:16px 0 6px;}
#bls-cb-link-account label:not(.bls-cb-checkbox):first-child,
#bls-cb-build-form label:not(.bls-cb-checkbox):first-child,
.bls-accordion-body label:not(.bls-cb-checkbox):first-child{margin-top:0;}
#bls-cb-link-account .bls-input,
#bls-cb-build-form .bls-input,
#bls-cb-build-form .bls-textarea,
.bls-accordion-body .bls-input,
.bls-accordion-body .bls-textarea{font-size:14px;font-weight:600;padding:11px 14px;border-radius:12px;}
#bls-cb-build-form .bls-textarea,
.bls-accordion-body .bls-textarea{min-height:90px;font-weight:500;line-height:1.5;}
#bls-cb-build-form .bls-two-col{gap:14px;margin-top:2px;}
#bls-cb-build-form .bls-option{padding:9px 16px;font-size:13px;}

/* v1.5.2-alpha.26: Asset Group builder (Headlines/Long Headlines/Descriptions list editor, image
   validation report, video field, extensions rows) + Business Blueprint Business Phone field. */
.bls-cb-asset-list{display:flex;flex-direction:column;gap:8px;margin-top:4px;}
.bls-cb-asset-row{display:flex;align-items:center;gap:10px;}
.bls-cb-asset-row .bls-cb-asset-input{flex:1;margin:0;}
.bls-cb-asset-count{flex:0 0 auto;font-size:11px;font-weight:700;color:#8a7a4b;min-width:44px;text-align:right;}
.bls-cb-asset-over .bls-cb-asset-count{color:#b00020;}
.bls-cb-asset-over .bls-cb-asset-input{border-color:#b00020;}
.bls-cb-asset-remove{flex:0 0 auto;background:none;border:none;color:#b00020;font-size:18px;font-weight:800;cursor:pointer;line-height:1;padding:2px 4px;}
.bls-cb-asset-add{margin-top:4px;}
.bls-cb-image-report{display:flex;flex-direction:column;gap:8px;margin:6px 0 10px;}
.bls-cb-image-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:13px;padding:10px 14px;background:#faf8f2;border-radius:12px;}
.bls-cb-image-row b{flex:0 0 160px;}
/* Clickable thumbnail for each ready creative bucket (v1.5.3-alpha.6, per Drew's ask to see the
   actual Cloudinary crop for each placement, not just a "Ready" status row) - opens in the same
   lightbox the Assets tab already uses, see ensureMediaModal()/openMediaPreview() in studio.js. */
.bls-cb-thumb{flex:0 0 auto;width:52px;height:52px;padding:0;border:1px solid #eadfca;border-radius:10px;overflow:hidden;cursor:pointer;background:#fff;appearance:none;box-shadow:0 2px 8px rgba(0,0,0,.05);transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease;}
.bls-cb-thumb:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(0,0,0,.1);border-color:#ffd200;}
.bls-cb-thumb img{width:100%;height:100%;object-fit:cover;display:block;}
.bls-cb-thumb-fallback{width:100%;height:100%;display:flex;align-items:center;justify-content:center;font-size:22px;background:#f7f5ed;}
.bls-cb-image-note{margin-top:0;}
.bls-pmax-ok{color:#11874a;font-weight:800;}
.bls-pmax-warn{color:#b00020;font-weight:800;}
.bls-cb-ext-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:13px;padding:10px 14px;background:#faf8f2;border-radius:12px;margin-bottom:8px;}
.bls-cb-ext-row b{flex:0 0 220px;}
.bls-phone-field .bls-phone-help{display:block;font-size:11px;color:#8a7a4b;margin-top:4px;}
#bls-cb-build-form .bls-actions{border-top:1px solid rgba(0,0,0,.08);padding-top:22px;margin-top:6px;}

/* v1.5.2-alpha.27: Bee Local Expert Recommendations Buzz icon + the client-facing Campaign Card /
   Ad Preview approval section that replaces it once a campaign is actually built and submitted.
   (v1.5.2-alpha.28: folded in the background/border-color tint that used to sit as a separate
   partial override elsewhere in this file - .bls-expert-recommendations is a .bls-review-block,
   so this is the one full definition rather than a base rule plus a distant color patch.) */
.bls-expert-recommendations{display:flex;gap:18px;align-items:flex-start;background:#fffdf1;border-color:#ffe18a;}
.bls-recommendations-buzz{width:64px;height:64px;flex:0 0 auto;object-fit:contain;}
@media(max-width:760px){.bls-expert-recommendations{flex-direction:column;}}
.bls-campaign-approval-section{display:flex;flex-direction:column;gap:22px;margin:18px 0;}
.bls-campaign-approval-row{display:flex;gap:22px;align-items:stretch;flex-wrap:wrap;background:#f9fafb;border:1px solid #edf0f2;border-radius:24px;padding:24px;}
.bls-campaign-recap-card{flex:1 1 300px;min-width:280px;max-width:360px;background:#fff;border:1px solid #edf0f2;border-radius:20px;padding:20px;box-shadow:0 8px 22px rgba(0,0,0,.035);}
.bls-campaign-recap-card h3{margin:10px 0 14px;font-size:18px;}
.bls-platform-badge{display:inline-block;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.04em;padding:5px 12px;border-radius:999px;}
.bls-platform-badge-google{background:#e8f0fe;color:#1a56db;}
.bls-platform-badge-meta{background:#e7f1ff;color:#0866ff;}
.bls-platform-badge-other{background:#f1f1f1;color:#444;}
.bls-campaign-recap-card .bls-particulars{grid-template-columns:1fr 1fr;gap:12px 16px;margin-bottom:14px;}
.bls-campaign-recap-card .bls-particulars b{overflow-wrap:anywhere;word-break:break-word;}
.bls-campaign-recap-card .bls-particulars .bls-particular-wide{grid-column:1/-1;}
.bls-cb-pending-badge{display:inline-block;background:#fff7d6;color:#7a5c00;border:1px solid #f2dd8a;border-radius:999px;padding:10px 18px;font-weight:800;font-size:13px;}
.bls-cb-published-badge{display:inline-block;background:#e6f7ed;color:#11874a;border:1px solid #b9e6c9;border-radius:999px;padding:12px 20px;font-weight:900;font-size:15px;}
/* v1.5.3-alpha.15: compact variant for the Campaign Builder list row (bls_campaign_builder_list())
   - the full-size badge above is sized for the roomier per-build detail screen action bar. */
.bls-cb-published-badge-sm{padding:8px 14px;font-size:12px;vertical-align:middle;}
.bls-recap-stats-list{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-direction:column;gap:4px;}
.bls-recap-stats-list li{font-size:13px;font-weight:700;color:#333;padding-left:18px;position:relative;}
.bls-recap-stats-list li::before{content:'✓';position:absolute;left:0;color:#11874a;font-weight:900;}
.bls-recap-note{margin:0;font-size:12px;line-height:1.5;}
.bls-ad-preview-group{flex:2 1 480px;display:flex;gap:16px;flex-wrap:wrap;align-items:flex-start;}
.bls-ad-preview-phone{flex:1 1 140px;max-width:180px;}
.bls-ad-preview-label{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:#8a7a4b;margin-bottom:8px;text-align:center;}
.bls-ad-preview-search,.bls-ad-preview-display,.bls-ad-preview-video{background:#fff;border:1px solid rgba(0,0,0,.1);border-radius:18px;padding:12px;font-size:11px;line-height:1.4;box-shadow:0 6px 16px rgba(0,0,0,.05);min-height:150px;}
.bls-ad-preview-tag{display:inline-block;border:1px solid #666;border-radius:3px;font-size:9px;font-weight:800;padding:0 3px;color:#444;margin-right:4px;}
.bls-ad-preview-url{color:#1a56db;font-size:10px;word-break:break-all;}
.bls-ad-preview-search-title{color:#1a56db;font-weight:700;font-size:13px;margin-top:6px;}
.bls-ad-preview-search-desc{color:#4d5156;margin-top:4px;}
.bls-ad-preview-display img,.bls-ad-preview-video img{width:100%;height:90px;object-fit:cover;border-radius:10px;display:block;}
.bls-ad-preview-img-placeholder{width:100%;height:90px;border-radius:10px;background:#f1f1f1;color:#999;display:flex;align-items:center;justify-content:center;font-size:10px;text-align:center;}
.bls-ad-preview-display-body{margin-top:8px;}
.bls-ad-preview-display-body b{display:block;font-size:12px;margin-bottom:3px;}
.bls-ad-preview-display-body span{color:#4d5156;}
.bls-ad-preview-video{position:relative;}
.bls-ad-preview-play{position:absolute;top:34px;left:50%;transform:translateX(-50%);width:32px;height:32px;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;}
.bls-ad-preview-video-body{margin-top:8px;}
.bls-ad-preview-sponsored{display:block;font-size:9px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;color:#8a7a4b;margin-bottom:3px;}
.bls-ad-preview-video-body b{display:block;font-size:12px;}
.bls-ad-preview-disclaimer{flex-basis:100%;text-align:center;font-size:11px;color:#8a8f98;margin:6px 0 0;}
/* v1.5.3-alpha.19: Meta's own Feed/Story ad preview shapes (bls_render_meta_ad_previews()) - a
   page-name/avatar header + primary text above the image (Feed), like a real Meta ad, rather than
   Google's search-result/display-banner look reused by the classes above. */
.bls-ad-preview-meta{min-height:auto;}
.bls-ad-preview-meta-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;}
.bls-ad-preview-meta-avatar{width:22px;height:22px;border-radius:50%;background:#ffd200;color:#0a0a0a;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:11px;flex-shrink:0;}
.bls-ad-preview-meta-header b{display:block;font-size:11px;line-height:1.2;}
.bls-ad-preview-meta-header span{display:block;font-size:9px;color:#8a8f98;}
.bls-ad-preview-meta-primary{margin:0 0 8px;color:#1c1e21;}
.bls-ad-preview-meta-cta-row{margin-top:8px;display:flex;align-items:flex-start;justify-content:space-between;gap:6px;background:#f0f2f5;border-radius:8px;padding:8px;}
/* v1.5.3-alpha.20: Drew caught the destination URL breaking out past the card's right edge on a
   long real domain+path. min-width:0 is the actual fix - a flex child's default min-width:auto
   otherwise refuses to shrink narrower than its text content, which is what let the URL span push
   the whole row wider than its .bls-ad-preview-phone container in the first place; the
   overflow/ellipsis rules below only have somewhere to truncate TO once that's set. */
.bls-ad-preview-meta-cta-row>div{min-width:0;}
.bls-ad-preview-meta-url{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.03em;color:#8a8f98;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.bls-ad-preview-meta-cta-row b{display:block;font-size:11px;margin:2px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.bls-ad-preview-meta-cta-row>div>span{color:#4d5156;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;}
.bls-ad-preview-meta-cta{flex-shrink:0;background:#e4e6e9;border-radius:6px;padding:4px 8px;font-size:9px;font-weight:800;color:#050505;white-space:nowrap;}
.bls-ad-preview-meta-story .bls-ad-preview-meta-cta{margin-top:4px;display:inline-block;}
/* Right Column preview (added v1.5.3-alpha.20, Meta's own minimal thumbnail+headline desktop unit)
   reuses .bls-ad-preview-display-body's existing b/span styling; only the URL line needs the same
   truncation treatment as the Feed preview's CTA row above, since it's the same "real domain can be
   long" risk. */
.bls-ad-preview-meta-rightcol .bls-ad-preview-display-body .bls-ad-preview-meta-url{margin-top:2px;}
@media(max-width:900px){.bls-campaign-approval-row{flex-direction:column;}.bls-campaign-recap-card{max-width:none;}}

/* v1.5.3-alpha.34: Client Settings (Expert-only list + inline edit + connection-status toggles) */
.bls-client-settings-engine{margin-top:8px;}
.bls-client-list{display:flex;flex-direction:column;gap:10px;}
.bls-client-row{background:#fff;border:1px solid #edf0f2;border-radius:18px;overflow:hidden;}
.bls-client-row-head{background:#f8f9fb;border-radius:14px;}
.bls-client-row-head .bls-client-col{font-size:11px;font-weight:950;text-transform:uppercase;letter-spacing:.04em;color:#6b7280;}
.bls-client-row-main{display:grid;grid-template-columns:110px 1.4fr 1.1fr 1.5fr 130px 110px 80px;gap:10px;align-items:center;padding:14px 16px;}
.bls-client-col{font-size:14px;font-weight:800;color:#151820;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.bls-client-col-id{font-weight:950;}
.bls-client-col-actions{text-align:right;}
.bls-client-edit-panel{border-top:1px solid #edf0f2;padding:18px 20px 20px;background:#fbfbfa;}
.bls-client-edit-panel.bls-hidden{display:none;}
.bls-client-connections{margin-top:16px;}
.bls-client-connections h4{margin:0 0 4px;font-size:15px;}
.bls-conn-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:10px;margin-top:10px;}
.bls-conn-toggle{display:flex;align-items:center;gap:10px;appearance:none;border:1px solid #e7e0cc;background:#fff;border-radius:14px;padding:12px 14px;font-weight:900;font-size:13px;text-align:left;cursor:pointer;transition:.15s ease;color:#151820;}
.bls-conn-toggle:hover{border-color:#ffd200;}
.bls-conn-dot{width:12px;height:12px;border-radius:999px;flex:0 0 12px;background:#e7c200;box-shadow:0 0 0 3px #fff6d1;}
.bls-conn-toggle.on{background:#eefaf2;border-color:#bdead0;}
.bls-conn-toggle.on .bls-conn-dot{background:#1f9d5c;box-shadow:0 0 0 3px #d9f5e5;}
.bls-conn-toggle.off .bls-conn-dot{background:#e7c200;box-shadow:0 0 0 3px #fff6d1;}
.bls-conn-card-wrap{display:flex;flex-direction:column;gap:6px;}
.bls-conn-card-wrap .bls-create-conn-btn{width:100%;box-sizing:border-box;background:#151820;color:#ffd200;border:none;}
.bls-conn-card-wrap .bls-create-conn-btn:hover{background:#2a2f3b;}
.bls-conn-card-wrap .bls-create-conn-btn:disabled{opacity:.6;cursor:default;}
.bls-gtm-id-readout{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;font-weight:700;color:#4a4f5c;background:#fbfbfa;border:1px solid #edf0f2;border-radius:10px;padding:8px 10px;}
.bls-gtm-id-readout code{font-weight:900;color:#151820;}
.bls-gtm-id-readout .bls-copy-gtm-id{padding:4px 10px;font-size:11px;border-radius:8px;}
.bls-client-save-status.bls-error{color:#a02c22;}
@media(max-width:900px){.bls-client-row-main{grid-template-columns:1fr 1fr;grid-auto-rows:auto;}.bls-client-col{white-space:normal;}}
