/* ═══════════════════════════════════════════════════════════
   BLASTYBIZ — GLOBAL STYLE SHEET
   Organized by component. Start here for all new styling.
   ═══════════════════════════════════════════════════════════ */


/* ── HELPERS ───────────────────────────────────────────────── */

img { margin: 0; }

.hidden      { display: none; }
.center      { text-align: center; margin-left: auto; margin-right: auto; }
.img-fill    { width: 100%; height: auto; display: block; object-fit: contain; }
.text--green { color: var(--green); }
.text--lime  { color: var(--green-lime); }
.reveal         { opacity: 0; transform: translateY(24px); transition: opacity 0.6s ease, transform 0.6s ease; }
.reveal.visible { opacity: 1; transform: translateY(0); }


/* ── SPACING UTILITIES ────────────────────────────────────────── */
.mb-0  { margin-bottom: 0; }
.mb-4  { margin-bottom: 4px; }
.mb-5  { margin-bottom: 5px; }
.mb-6  { margin-bottom: 6px; }
.mb-8  { margin-bottom: 8px; }
.mb-10 { margin-bottom: 10px; }
.mb-12 { margin-bottom: 12px; }
.mb-14 { margin-bottom: 14px; }
.mb-16 { margin-bottom: 16px; }
.mb-20 { margin-bottom: 20px; }
.mb-24 { margin-bottom: 24px; }
.mb-28 { margin-bottom: 28px; }
.mt-2  { margin-top: 2px; }
.mt-3  { margin-top: 3px; }
.mt-4  { margin-top: 4px; }
.mt-6  { margin-top: 6px; }
.mt-8  { margin-top: 8px; }
.mt-10 { margin-top: 10px; }
.mt-12 { margin-top: 12px; }
.mt-14 { margin-top: 14px; }
.mt-16 { margin-top: 16px; }
.mt-20 { margin-top: 20px; }
.mt-24 { margin-top: 24px; }
.mt-28 { margin-top: 28px; }
.gap-4  { gap: 4px; }
.gap-6  { gap: 6px; }
.gap-8  { gap: 8px; }
.gap-10 { gap: 10px; }
.gap-12 { gap: 12px; }
.gap-14 { gap: 14px; }
.gap-16 { gap: 16px; }


/* ── TYPOGRAPHY UTILITIES ─────────────────────────────────────── */
.fw-600    { font-weight: 600; }
.fw-700    { font-weight: 700; }
.text-xs   { font-size: 12px; }
.text-sm   { font-size: 13px; }
.text-base { font-size: 14px; }
.lh-14     { line-height: 1.4; }
.lh-16     { line-height: 1.6; }
.icon-md   { font-size: 18px; }
.icon-lg   { font-size: 20px; }
.text-center { text-align: center; }


/* ── ROW / FLEX UTILITIES ─────────────────────────────────────── */
/* .row = section content wrapper (block). Use it to group a heading + body
   copy before a content grid. This is the only job .row does.
   For inline icon+text or input+button pairs, use .flex-row instead. */
.row         { display: block; width: 100%; }
.flex-row    { display: flex; align-items: center; gap: 8px; }
/* 2:1 column split — left col gets 2 parts, right col gets 1 part */
.col-2-1        { display: grid; grid-template-columns: 2fr 1fr; gap: var(--gutter); align-items: stretch; }
.col-2-1 > *   { min-width: 0; }
@media (max-width: 479px) { .col-2-1 { grid-template-columns: 1fr; } }
.col-1-2        { display: grid; grid-template-columns: 1fr 2fr; gap: var(--gutter); align-items: start; }
.col-1-2 > *   { min-width: 0; }
@media (max-width: 479px) { .col-1-2 { grid-template-columns: 1fr; } }
.col-3          { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; align-items: start; }
.col-3 > *     { min-width: 0; }
@media (max-width: 479px) { .col-3 { grid-template-columns: repeat(3, 1fr); } }
/* Named column helpers — used inside .col-2-1 and similar grid wrappers */
.col-left    { min-width: 0; }
.col-right      { min-width: 0; display: flex; flex-direction: column; gap: 16px; }
.card-fill      { flex: 1; display: flex; flex-direction: column; justify-content: center; }
.card-title-btn { width: 100%; background: none; border: none; cursor: pointer; padding: 0; justify-content: space-between; margin-bottom: 8px; }
/* Whole-card tap target — use alongside onclick on the card div */
.card-tap               { cursor: pointer; transition: border-color 0.15s ease, box-shadow 0.15s ease, transform 0.1s ease; }
.card-tap:hover         { border-color: var(--green); box-shadow: 0 0 0 1px var(--green); }
.card-tap:active        { transform: scale(0.985); box-shadow: 0 0 0 2px var(--green); }
.img-cover      { width: 100%; border-radius: 12px; display: block; flex: 1; object-fit: cover; object-position: center; }
/* 50/50 two-column grid */
.col-2       { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gutter); align-items: start; }
.col-2 > *   { min-width: 0; }
@media (max-width: 479px) { .col-2 { grid-template-columns: 1fr; } }
/* Full-width single column */
.col-full    { display: block; width: 100%; }
/* Responsive visibility */
@media (max-width: 479px) { .hide-mobile { display: none !important; } }
/* .row-sb has NO gap (space-between only) — used on Home page heading/CTA pairs where gap is unwanted.
   .flex-between (~line 458) adds gap:12px — prefer it when items need spacing in addition to space-between. */
.row-sb      { display: flex; align-items: center; justify-content: space-between; }
.row-base-sb { display: flex; align-items: baseline; justify-content: space-between; }
.shrink-0    { flex-shrink: 0; }
.wrap        { flex-wrap: wrap; }
.link-green  { color: var(--green); }


/* ── COLOUR UTILITIES ─────────────────────────────────────────── */
/* .text-* (verbose, self-documenting) */
.text-danger  { color: var(--danger); }
.text-light   { color: var(--light); }
.text-green   { color: var(--green); }
.text-silver  { color: var(--silver); }
.text-muted   { color: var(--muted); }
.text-blue    { color: var(--blue); }
/* Short aliases used across app/admin pages */
.accent        { color: var(--green); }
.danger        { color: var(--danger); }
.silver        { color: var(--silver); }
.blue          { color: var(--blue); }
.money         { color: var(--green); }
/* Link helpers */
.link-blue     { color: var(--blue); font-weight: 600; }
.regen-loading { opacity: 0.4; }


/* ── LAYOUT HELPERS ───────────────────────────────────────────── */
.section-header { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.filters        { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 16px; }
.actions        { display: flex; flex-wrap: wrap; gap: 6px; }
/* ── BARE COLOUR ALIASES (used in admin table cells without text- prefix) ── */
.muted { color: var(--muted); }

/* ── ADDITIONAL TEXT / DECORATION UTILITIES ──────────────────── */
.text-warn   { color: var(--warn); }
.no-underline { text-decoration: none; }
.text-cap    { text-transform: capitalize; }

/* ── BREADCRUMB — public info pages (About, Contact, Privacy, Terms) ── */
.breadcrumb            { display: flex; align-items: center; gap: 3px; font-size: 11px; color: #999; margin-bottom: 12px; letter-spacing: 0; }
.breadcrumb a          { color: #999; text-decoration: none; transition: color 0.15s; }
.breadcrumb a:hover    { color: #ddd; }
.breadcrumb .bc-sep    { color: #666; margin: 0 1px; }
.breadcrumb .bc-current { color: #7dde7d; font-weight: 500; }





/* ── DESIGN TOKENS ─────────────────────────────────────────── */
:root {
  --bg:         #000000;   /* page background — change this one value */

  --h1-color:   #ffffff;
  --h2-color:   #ffffff;
  --h3-color:   #ffffff;
  --h4-color:   #ffffff;
  --h5-color:   #ffffff;
  --h6-color:   #ffffff;

  --green:      #00c853;
  --green-hover: #00e676;
  --green-rgb:  0, 200, 83;
  --green2:     #00B04A;
  --green-lime: #AAFC08;
  --dark:       #070D07;
  --light:      #EEF7EE;
  --silver:     #7AB87A;
  --muted:      #587058;
  --card:       #0D160D;
  --border:     #1E2E1E;
  --gap-md:     12px;
  --gap-lg:     16px;
  --gutter:     1rem;
  --v-gutter:   8%;
  --section-v:  60px;
  --max-w:      1200px;

  /* Semantic colour tokens — referenced site-wide */
  --danger:     #ff4444;   /* error / destructive */
  --warn:       #ffa726;   /* warning / caution */
  --blue:       #54a8ff;   /* info / link */
  --panel:      #0a1a0a;   /* subtle surface, admin + app pages */
  --soft:       #0d160d;   /* alias of --card, listing-preview */

  /* Header clearance — single source of truth.
     All padding-top on .main AND sticky top values must use var(--main-offset).
     Mobile default: nav-row 4px+46px+4px = 54px + 1px border = 55px exactly. No breathing room built in —
     content pages add their own section padding. JS overrides this on load anyway. */
  --main-offset: 55px;
  --badge-bar-h: 36px;     /* home-page only badge bar height */
}
@media (min-width: 600px)  { :root { --gutter: 3rem; --section-v: 80px; } }
@media (min-width: 768px)  { :root { --main-offset: 77px; } }  /* desktop: nav-row 76px + 1px border */
@media (min-width: 1100px) { :root { --section-v: 100px; } }

html, body { background-color: var(--bg); color: var(--light); overflow-x: hidden; margin: 0; padding: 0; line-height: 1.6; letter-spacing: 0.015em; }
html       { scroll-behavior: smooth; color-scheme: dark; }
main.home  { max-width: 100vw; overflow-x: hidden; }

/* Images never bust out of their containers */
.home img  { max-width: 100%; height: auto; }

/* Grid children always stay inside their tracks */
.home [class*="layout__"] > * { min-width: 0; }


/* ── TYPOGRAPHY ────────────────────────────────────────────── */

.home h1 { font-family: 'Bebas Neue', sans-serif; margin: 0 0 0.6em; line-height: 1.15; color: var(--h1-color); }
h2           { margin: 0.3rem 0; }
.home h2     { font-family: 'Bebas Neue', sans-serif; font-size: 2rem; line-height: 1.6;  font-weight: 300; color: var(--h2-color); }
.home h2 span { color: var(--green-lime); }
.home h3 { margin: 1em 0 0.5em;     line-height: 1.25; color: var(--h3-color); }
.home h4 { margin: 0.85em 0 0.45em; line-height: 1.3;  color: var(--h4-color); }
.home h1:first-child,
.home h2:first-child,
.home h3:first-child,
.home h4:first-child { margin-top: 0; }
.home p { all: revert; color: var(--light); }


/* ── FORM ELEMENT DEFAULTS ──────────────────────────────────────
   Bare element defaults so every page gets consistent form styling
   without repeating rules. Page-specific contexts can override.
   ─────────────────────────────────────────────────────────── */
label          { display: block; font-size: 12px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; color: var(--silver); margin-bottom: 7px; }
input,
textarea,
select         { width: 100%; min-width: 0; background: var(--dark); border: 1px solid var(--border); border-radius: 10px; padding: 13px 16px; color: var(--light); font-family: 'DM Sans', sans-serif; font-size: 15px; transition: border-color 0.2s, box-shadow 0.2s; -webkit-appearance: none; box-sizing: border-box; }
@media (min-width: 600px) {
  input, textarea, select { max-width: 560px; min-width: 160px; }
}
input:focus-visible,
textarea:focus-visible,
select:focus-visible { outline: none; border-color: var(--green); box-shadow: 0 0 0 3px rgba(0,200,83,0.1); }
textarea       { resize: vertical; min-height: 90px; }
select option  { background: var(--dark); }


/* ═══════════════════════════════════════════════════════════
   MENU / SITE NAVIGATION
   All header, nav bar, hamburger, mobile menu, badge bar,
   and auth-state visibility rules live here and nowhere else.
   ═══════════════════════════════════════════════════════════ */

/* Container */
.header {
  position: relative;
  z-index: 200;
  background: #000;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  border-bottom: 1px solid rgba(var(--green-rgb), 0.18);
}

/* Nav row — one flex row, logo left, nav right */
.header__nav-row {
  display: flex;
  align-items: center;
  width: 100%;
  box-sizing: border-box;
  padding: 6px 40px;
}

/* Logo — anchor takes its natural width */
.header__logo {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  text-decoration: none;
  color: inherit;
  overflow: hidden;
  min-width: 0;
}

.header__logo-icon {
  height: 40px;
  width: 40px;
  flex-shrink: 0;
  object-fit: contain;
  object-position: left center;
  display: block;
  position: relative;
  z-index: 1;
}

.header__logo-brand {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 0;
  margin-left: 1px;
  min-width: 0;
  position: relative;
  z-index: 2;
}

.header__logo-wordmark {
  height: 18px;
  width: auto;
  display: block;
}

.header__logo-tagline {
  height: 10px;
  width: auto;
  display: block;
  margin-top: 2px;
  padding: 0;
}

/* Nav — pushed to the right via margin-left: auto */
.header__nav {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 22px;
}

.header__nav-link {
  color: #b0b8c1;
  font-size: 13px;
  font-weight: 500;
  text-decoration: none;
  background: none;
  border: none;
  cursor: pointer;
  padding: 0;
  transition: color 0.18s;
}
.header__nav-link:hover { color: #fff; }

.header__nav-cta {
  background: var(--green);
  color: #000;
  font-size: 13px;
  font-weight: 700;
  text-decoration: none;
  padding: 7px 16px;
  border-radius: 6px;
  white-space: nowrap;
  transition: background 0.18s;
}
.header__nav-cta:hover { background: var(--green-hover); }

/* Hamburger — hidden on desktop, visible on mobile/tablet */
.header__hamburger {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  background: none;
  border: none;
  cursor: pointer;
  padding: 4px;
}
.header__hamburger span {
  display: block;
  width: 24px;
  height: 2px;
  background: #fff;
  border-radius: 2px;
}

/* Badge bar — home page only */
.header__badge-bar {
  height: 36px;
  display: none;
  align-items: center;
  justify-content: center;
  background: rgba(0,0,0,0.85);
  border-top: 1px solid rgba(var(--green-rgb), 0.18);
  width: 100%;
}
body.home-page .header__badge-bar { display: flex; }

.header__badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  background: rgba(var(--green-rgb), 0.12);
  border: 1px solid rgba(var(--green-rgb), 0.35);
  color: var(--green);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  padding: 4px 12px;
  border-radius: 20px;
}



/* ── STAGE BACKBONE ──────────────────────────────────────────────────
   body.stage : universal surface — vertical structure lives here.
   .row inside a stage page carries max-width + horizontal gutters.
   ─────────────────────────────────────────────────────────────────── */
.stage {
  width: 92%;
  margin-left: auto;
  margin-right: auto;
}
.stage .row {
  max-width: var(--max-w);
  margin-left: auto;
  margin-right: auto;
  padding-top: 8px;
  padding-bottom: 8px;
}

/* Auth state — JS adds/removes body.logged-in */
#header__nav-logout  { display: none; }
#header__mobile-login { display: none; }
#header__mobile-logout {
  display: none;
  background: none;
  border: none;
  color: #b0b8c1;
  font-size: 15px;
  font-weight: 500;
  text-align: left;
  cursor: pointer;
  width: 100%;
  padding: 0;
}
body.logged-in #header__nav-login               { display: none; }
@media (min-width: 768px) {
  body.logged-in #header__nav-logout             { display: inline; }
  body.logged-in .header__nav-app                { display: inline-flex; }
}
body.logged-in .header__mobile-menu .header__nav-app { display: block; }
body.logged-in #header__mobile-logout             { display: block; }
.header__mobile-menu #header__mobile-login            { display: block; }
body.logged-in .header__mobile-menu #header__mobile-login { display: none; }

/* Mobile slide-down menu */
.header__mobile-menu {
  display: none;
  position: fixed;
  top: var(--header-h, 56px);
  left: 0; right: 0;
  background: rgba(7,13,7,0.98);
  backdrop-filter: blur(16px);
  border-bottom: 1px solid rgba(var(--green-rgb), 0.18);
  z-index: 99;
  padding: 16px 24px 24px;
  flex-direction: column;
  gap: 4px;
}
.header__mobile-menu.open { display: flex; }

.header__mobile-link {
  display: block;
  padding: 14px 4px;
  font-size: 17px;
  font-weight: 500;
  color: #b0b8c1;
  text-decoration: none;
  border-bottom: 1px solid rgba(var(--green-rgb), 0.1);
  transition: color 0.2s;
  background: none;
  border-left: none;
  border-right: none;
  border-top: none;
  cursor: pointer;
  text-align: left;
  width: 100%;
}
.header__mobile-link:last-child { border-bottom: none; }
.header__mobile-link:hover      { color: #fff; }
/* App-only nav items: hidden by default, shown when logged in.
   MUST come after .header__mobile-link { display:block } or that rule wins. */
.header__nav-app { display: none; }

/* ── HEADER — Mobile (≤767px) ───────────────────────────── */
@media (max-width: 767px) {
  .header__nav-row       { padding: 4px 16px; }
  .header__logo-icon     { height: 46px; width: 46px; }
  .header__logo-wordmark { height: 14px; }
  .header__logo-tagline  { height: 8px; }
  .header__nav-link,
  .header__nav-cta       { display: none; }
  .header__hamburger     { display: flex; margin-right: 0; padding: 8px; }
  .header__badge-bar     { display: none !important; }
}

/* ── HEADER — Desktop (768px+) ─────────────────────────── */
@media (min-width: 768px) {
  .header__hamburger    { display: none; }
}

/* ── HEADER — Tablet (768px–1099px): shrink gap + font, stay desktop layout ── */
@media (min-width: 768px) and (max-width: 1099px) {
  .header__nav-row  { padding: 6px 20px; }
  .header__nav      { gap: 10px; }
  .header__nav-link { font-size: 11px; }
  .header__nav-cta  { font-size: 11px; padding: 6px 12px; }
}

/* ── HEADER — "Learn" dropdown ─────────────────────────── */
.header__nav-dropdown {
  position: relative;
}
.header__nav-dropdown-btn {
  display: flex;
  align-items: center;
  gap: 4px;
  white-space: nowrap;
}
.header__nav-dropdown-caret {
  font-size: 10px;
  transition: transform 0.2s;
}
.header__nav-dropdown:hover .header__nav-dropdown-caret,
.header__nav-dropdown:focus-within .header__nav-dropdown-caret {
  transform: rotate(180deg);
}
.header__nav-dropdown-menu {
  display: none;
  position: absolute;
  top: calc(100% + 10px);
  left: 50%;
  transform: translateX(-50%);
  background: rgba(7,13,7,0.98);
  border: 1px solid rgba(var(--green-rgb),0.2);
  border-radius: 10px;
  padding: 8px 0;
  min-width: 160px;
  backdrop-filter: blur(16px);
  z-index: 300;
  flex-direction: column;
}
.header__nav-dropdown:hover .header__nav-dropdown-menu,
.header__nav-dropdown:focus-within .header__nav-dropdown-menu {
  display: flex;
}
.header__nav-dropdown-item {
  display: block;
  padding: 10px 18px;
  font-size: 13px;
  font-weight: 500;
  color: #b0b8c1;
  text-decoration: none;
  white-space: nowrap;
  transition: color 0.15s, background 0.15s;
}
.header__nav-dropdown-item:hover {
  color: #fff;
  background: rgba(var(--green-rgb),0.08);
}

/* ── HEADER — Connected platform bar ───────────────────── */
.header__platform-bar {
  display: none;
  align-items: center;
  gap: 8px;
  padding: 5px 40px;
  border-top: 1px solid rgba(var(--green-rgb), 0.1);
  flex-wrap: wrap;
  background: rgba(0,0,0,0.4);
}
.header__platform-bar.has-platforms { display: flex; }
.header__platform-bar-label {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .5px;
  color: var(--muted);
  white-space: nowrap;
  margin-right: 4px;
}
.header__platform-pill {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  background: rgba(var(--green-rgb), 0.08);
  border: 1px solid rgba(var(--green-rgb), 0.25);
  border-radius: 20px;
  padding: 3px 10px;
  font-size: 11px;
  font-weight: 600;
  color: var(--green);
  white-space: nowrap;
  text-decoration: none;
}
.header__platform-pill-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--green);
  flex-shrink: 0;
}
@media (max-width: 767px) {
  .header__platform-bar { padding: 5px 16px; }
}

/* ═══════════════════════════════════════════════════════════
   END MENU / SITE NAVIGATION
   ═══════════════════════════════════════════════════════════ */


/* ── LAYOUT ────────────────────────────────────────────────── */

main.home                { width: 100%; }
@media (max-width: 599px) {
  .main-inner            { padding-top: 5px; }
}


/* ── LAYOUT PRIMITIVES ───────────────────────────────────────────
   Canonical grid utilities. Use .layout__split* in new markup.
   Old aliases (.split / .split-3 / .split-4 / .two-col) are kept
   until existing markup is migrated — values are tokenized to match.
   ─────────────────────────────────────────────────────────── */
.layout__split     { display: grid; grid-template-columns: 1fr;               gap: var(--gap-lg); margin-bottom: var(--gap-lg); }
@media (min-width: 600px) {
  .layout__split   { grid-template-columns: 1fr 1fr; }
}
.layout__split-3   { display: grid; grid-template-columns: 1fr 1fr 1fr;       gap: var(--gap-lg); margin-bottom: var(--gap-lg); }
.layout__split-4   { display: grid; grid-template-columns: repeat(4, 1fr);    gap: var(--gap-md); margin-bottom: var(--gap-lg); }
.layout__split-wide{ display: grid; grid-template-columns: 1.5fr 1fr;         gap: var(--gap-lg); margin-bottom: var(--gap-lg); }
.layout__split-2-1 { display: grid; grid-template-columns: 2fr 1fr;           gap: var(--gap-lg); margin-bottom: var(--gap-lg); }
.layout__split-1-2 { display: grid; grid-template-columns: 1fr 2fr;           gap: var(--gap-lg); margin-bottom: var(--gap-lg); }
/* Grid items default to min-width:auto which lets content overflow its track */
.layout__split-3 > *,
.layout__split-4 > *,
.layout__split-wide > *,
.layout__split-2-1 > *,
.layout__split-1-2 > * { min-width: 0; }

@media (max-width: 599px) {
  .layout__split-3,
  .layout__split-4,
  .layout__split-wide,
  .layout__split-2-1,
  .layout__split-1-2 { grid-template-columns: 1fr; }
}

/* Wide-page grid splits (1180px max-width context) */
.layout__split-lp-hero { display: grid; grid-template-columns: 1.2fr 0.8fr; gap: 16px; margin-bottom: 16px; }
.layout__split-lp-grid { display: grid; grid-template-columns: 0.9fr 1.1fr; gap: 16px; }
@media (max-width: 900px) {
  .layout__split-lp-hero,
  .layout__split-lp-grid { grid-template-columns: 1fr; }
}

/* Flex helpers — replace one-off inline flex rules */
.flex-row     { display: flex; align-items: center; gap: 12px; }
.flex-col     { display: flex; flex-direction: column; gap: 10px; }
/* .flex-between includes gap:12px; .row-sb does not — see note above on .row-sb */
.flex-between { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.flex-wrap    { display: flex; flex-wrap: wrap; gap: 10px; }
.flex-1       { flex: 1; min-width: 0; }

/* Button flex helpers */
.btn-flex-130 { flex: 1; min-width: 130px; }
.btn-flex-100 { flex: 1; min-width: 100px; }

/* .section-mt — semantic alias for mt-16; kept so HTML needn't change */
.section-mt   { margin-top: 16px; }


/* Image column — hidden on mobile, two stacked rows on desktop */
.hero-img-col { display: none; }
@media (min-width: 600px) {
  .hero-img-col {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 14px;
    padding-top: 20px;
  }
  .hero-blast-img { width: 100%; height: auto; display: block; max-height: 280px; object-fit: contain; }
}


/* ── BUTTONS ───────────────────────────────────────────────── */

/* ── MARKETING BUTTONS — Home page hero ONLY ──────────────────
   Intentionally differ from the app button system (.btn / .btn--*):
   larger sizing, marketing-specific spacing, display-context aware.
   Do NOT use in app pages — use .btn.btn--primary there instead.
   ──────────────────────────────────────────────────────────── */
/* .btn.btn__primary has higher specificity to beat the .btn base (transparent bg)
   when both classes appear on the same element — e.g. class="btn btn__primary" */
.btn__primary,
.btn.btn__primary {
  background: linear-gradient(135deg, var(--green) 0%, var(--green-lime) 100%);
  color: var(--dark);
  border-color: transparent;
  font-size: 16px;
  font-weight: 700;
  padding: 16px 36px;
  margin-top: 10px;
  margin-bottom: 10px;
  cursor: pointer;
  transition: transform 0.25s, box-shadow 0.25s, filter 0.25s;
  box-shadow: 0 4px 20px rgba(var(--green-rgb),0.4);
  letter-spacing: 0.03em;
}
.btn__primary:hover,
.btn.btn__primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 30px rgba(var(--green-rgb),0.55);
  filter: brightness(1.07);
}
.btn__primary:active,
.btn.btn__primary:active {
  transform: translateY(0);
  box-shadow: 0 2px 10px rgba(var(--green-rgb),0.3);
}

/* Hero-specific: primary button constrained and centred */
.hero-actions .btn__primary {
  align-self: center;
}

/* Ghost/scroll-link variant — "How it works" on hero */
/* .btn.btn__ghost has higher specificity to beat .btn's color: var(--light) */
.btn__ghost,
.btn.btn__ghost {
  color: var(--silver);
  font-size: 14px;
  font-weight: 500;
  gap: 6px;
  cursor: pointer;
  transition: color 0.2s;
}
.btn__ghost:hover,
.btn.btn__ghost:hover { color: var(--light); }


/* ── HOME ──────────────────────────────────────────────────── */

.hero-actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
  animation: fadeUp 0.6s 0.3s ease both;
}
@media (max-width: 767px) {
  .hero-actions { width: 100%; }
  .hero-actions .btn__primary,
  .hero-actions .btn.btn__primary,
  .hero-actions .btn__ghost,
  .hero-actions .btn.btn__ghost { width: 100%; justify-content: center; box-sizing: border-box; }
}

.home {
}

/* Hero text column — left grid cell, no styles yet */
.hero-text { min-width: 0; }


/* Hero headline */
.hero h1 {
  font-family: 'Bebas Neue', sans-serif;
  font-size: clamp(36px, 6vw, 62px);
  line-height: 0.95;
  letter-spacing: 2px;
  color: var(--light);
  margin: 0 0 1rem 0;
  text-align: center;
  animation: fadeUp 0.6s 0.1s ease both;
}
.hero h1 span {
  color: var(--green);
  display: block;
}

/* Hero — full-width centered section */
.hero-glow {
  position: absolute;
  top: 20%;
  left: 50%;
  transform: translateX(-50%);
  width: 600px;
  height: 600px;
  background: radial-gradient(circle, rgba(var(--green-rgb), 0.08) 0%, transparent 70%);
  pointer-events: none;
}

.hero {
  padding: 0 0 40px;
  position: relative;
  overflow: hidden;
}


/* ── PLATFORMS PAGE ────────────────────────────────────────── */
.plat-hero { padding: 52px 0 36px; }
.plat-hero h1 { font-family: 'Bebas Neue', sans-serif; font-size: clamp(36px,5.5vw,66px); line-height: 1.05; color: #fff; margin: 0 0 10px; }
.plat-hero h1 span { color: var(--green); }
.plat-kw { font-size: 16px; color: var(--muted); margin: 0 0 18px; font-weight: 400; }
.plat-lead { font-size: 18px; line-height: 1.75; color: var(--light); max-width: 680px; margin-bottom: 0; }
.plat-badge { display: inline-flex; align-items: center; gap: 8px; padding: 6px 16px; border-radius: 20px; font-size: 13px; font-weight: 700; letter-spacing: .5px; text-transform: uppercase; margin: 0 0 22px; }
.plat-badge.auto { background: rgba(57,255,20,.15); color: var(--green); border: 1px solid rgba(57,255,20,.3); }
.plat-badge.manual { background: rgba(255,255,255,.07); color: #bbb; border: 1px solid rgba(255,255,255,.15); }
.plat-body { max-width: 740px; margin: 0 auto; }
.plat-section { padding: 4px 0; }
.plat-body h2 { font-family: 'Bebas Neue', sans-serif; font-size: 34px; color: #fff; margin: 48px 0 16px; }
.plat-body h2 span { color: var(--green); }
.plat-body p { font-size: 16px; line-height: 1.8; color: var(--text, #ccc); margin: 0 0 16px; }
.plat-snapshot { list-style: none; padding: 0; margin: 0 0 8px; }
.plat-snapshot li { font-size: 15px; line-height: 1.7; color: var(--text, #ccc); padding: 10px 0 10px 20px; border-bottom: 1px solid rgba(255,255,255,.06); position: relative; }
.plat-snapshot li:last-child { border-bottom: none; }
.plat-snapshot li::before { content: "→"; position: absolute; left: 0; color: var(--green); font-weight: 700; }
.plat-look-list { list-style: none; padding: 0; margin: 0 0 8px; }
.plat-look-list li { font-size: 15px; line-height: 1.7; color: var(--text, #ccc); padding: 8px 0 8px 24px; position: relative; }
.plat-look-list li::before { content: "✓"; position: absolute; left: 0; color: var(--green); font-weight: 700; }
.plat-sample { background: rgba(255,255,255,.04); border-left: 3px solid var(--green); border-radius: 0 10px 10px 0; padding: 18px 20px; margin: 24px 0; font-size: 16px; font-style: italic; color: var(--light); line-height: 1.7; }
.plat-sample-label { font-size: 11px; font-weight: 700; letter-spacing: .8px; text-transform: uppercase; color: var(--muted); margin-bottom: 8px; }
.plat-workflow { background: rgba(57,255,20,.05); border: 1px solid rgba(57,255,20,.15); border-radius: 12px; padding: 20px 24px; margin: 32px 0; }
.plat-workflow p { margin: 0; font-size: 15px; color: var(--light); }
.plat-manual-steps { background: rgba(255,255,255,.04); border-radius: 10px; padding: 14px 18px; margin-top: 12px; font-size: 13px; color: var(--muted); }
.plat-plan-close { font-size: 15px; color: var(--muted); margin-top: 20px; font-style: italic; }
.plat-memory-box { background: rgba(57,255,20,.04); border: 1px solid rgba(57,255,20,.15); border-radius: 16px; padding: 32px; }
.plat-memory-label { font-size: 11px; font-weight: 700; letter-spacing: .8px; text-transform: uppercase; color: var(--green); margin: 0 0 6px; }
.plat-memory-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 20px; }
@media (max-width: 600px) { .plat-memory-grid { grid-template-columns: 1fr; } }
.plat-memory-card { background: rgba(255,255,255,.04); border-radius: 12px; padding: 18px 20px; }
.plat-memory-card-title { font-weight: 700; color: #fff; font-size: 14px; margin-bottom: 8px; }
.plat-plan-grid { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 16px; margin-top: 24px; }
@media (max-width: 640px) { .plat-plan-grid { grid-template-columns: 1fr; } }
.plat-plan-card { background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.1); border-radius: 14px; padding: 20px; }
.plat-plan-card--featured { background: rgba(57,255,20,.06); border-color: rgba(57,255,20,.3); }
.plat-plan-name { font-family: 'Bebas Neue', sans-serif; font-size: 22px; color: #fff; margin-bottom: 8px; }
.plat-plan-card p { font-size: 14px; color: var(--text, #ccc); margin: 0 0 14px; }
.plat-plan-link { font-size: 13px; font-weight: 700; color: var(--green); text-decoration: none; }
.plat-plan-link:hover { text-decoration: underline; }
.plat-cta-box { background: rgba(57,255,20,.06); border: 1px solid rgba(57,255,20,.2); border-radius: 16px; padding: 40px 36px; margin: 48px 0 24px; text-align: center; }
.plat-cta-box h2 { font-family: 'Bebas Neue', sans-serif; font-size: 40px; color: #fff; margin: 0 0 14px; }
.plat-cta-box h2 span { color: var(--green); }
.plat-cta-box p { font-size: 16px; color: var(--text, #ccc); margin: 0 0 24px; max-width: 560px; margin-left: auto; margin-right: auto; }
.plat-hub-nav { display: flex; flex-wrap: wrap; gap: 10px; margin: 24px 0 8px; }
.plat-hub-pill { display: inline-flex; align-items: center; gap: 6px; padding: 7px 14px; border-radius: 20px; font-size: 13px; font-weight: 600; text-decoration: none; border: 1px solid rgba(255,255,255,.12); color: var(--light); background: rgba(255,255,255,.04); transition: border-color .15s; }
.plat-hub-pill:hover { border-color: var(--green); color: #fff; }
.plat-hub-pill.auto { border-color: rgba(57,255,20,.3); color: var(--green); }

/* ── PLATFORMS HUB GRID (BlastyBiz-Platforms.html) ─────────── */
.plat-hub-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 16px; max-width: 900px; margin: 0 auto; }
.plat-hub-card { display: block; background: rgba(255,255,255,.04); border: 1px solid rgba(255,255,255,.1); border-radius: 14px; padding: 20px; text-decoration: none; color: inherit; transition: border-color .15s; }
.plat-hub-card:hover { border-color: rgba(57,255,20,.4); }
.plat-hub-card__icon { font-size: 24px; margin-bottom: 8px; }
.plat-hub-card__name { font-weight: 700; font-size: 16px; color: #fff; margin-bottom: 4px; }
.plat-hub-badge--auto { font-size: 11px; font-weight: 700; color: var(--green); }
.plat-hub-badge--copy { font-size: 11px; color: #888; }
.plat-how-box { display: flex; gap: 28px; flex-wrap: wrap; align-items: center; background: rgba(57,255,20,.04); border: 1px solid rgba(57,255,20,.15); border-radius: 14px; padding: 24px 28px; }
.plat-how-item > span { font-size: 28px; display: block; margin-bottom: 4px; }
.plat-how-item p { margin: 4px 0 0; font-size: 14px; color: var(--muted); }
.plat-how-divider { width: 1px; height: 60px; background: rgba(255,255,255,.08); }

/* ── PROBLEM SECTION ───────────────────────────────────────── */

/* .problem__lead { color: #000; font-weight: 700; } */


.problem__list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 20px; }
.problem__list li { display: flex; align-items: baseline; gap: 12px; }
.problem__list--grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-left: var(--gutter); }
@media (max-width: 599px) { .problem__list--grid { grid-template-columns: 1fr; } }
.problem__list-icon { font-size: 24px; flex-shrink: 0; }


/* ── HOW IT WORKS ──────────────────────────────────────────── */

.how__block        { display: flex; align-items: flex-start; gap: 14px; }
.how__step-num     { width: 40px; height: 40px; border-radius: 50%; background: rgba(0,200,83,0.1); border: 1px solid var(--green); display: flex; align-items: center; justify-content: center; font-family: 'Bebas Neue', sans-serif; font-size: 18px; color: var(--green); flex-shrink: 0; }
.how__step-content { padding-top: 4px; }
.how__step-content strong { font-size: 16px; font-weight: 700; color: var(--light); margin-bottom: 6px; display: block; }
.how__step-content p      { font-size: 15px; color: var(--muted); line-height: 1.65; }


/* ── FAQ ───────────────────────────────────────────────────── */

.faq__list           { display: flex; flex-direction: column; gap: 2px; margin-top: 40px; }
.faq__item           { border: 1px solid var(--border); border-radius: 10px; overflow: hidden; margin-bottom: 8px; }
.faq__q              { width: 100%; background: var(--card); border: none; padding: 18px 20px; text-align: left; color: var(--light); font-size: 15px; font-weight: 600; font-family: 'DM Sans', sans-serif; cursor: pointer; display: flex; justify-content: space-between; align-items: center; transition: background 0.2s; }
.faq__q:hover        { background: #111911; }
.faq__arrow          { color: var(--green); font-size: 18px; transition: transform 0.2s; }
.faq__q.open .faq__arrow { transform: rotate(180deg); }
.faq__a              { display: none; padding: 0 20px 18px; background: var(--card); font-size: 15px; color: var(--muted); line-height: 1.7; }
.faq__a.open         { display: block; }


/* ── REVIEWS ───────────────────────────────────────────────── */

.reviews__card   { background: var(--card); border: 1px solid var(--border); border-radius: 16px; padding: 24px; }
.reviews__quote  { font-size: 15px; color: var(--light); line-height: 1.7; font-style: italic; margin-bottom: 16px; }
.reviews__author { display: flex; align-items: center; gap: 12px; }
.reviews__avatar { width: 40px; height: 40px; border-radius: 50%; background: rgba(0,200,83,0.1); border: 1px solid var(--green); display: flex; align-items: center; justify-content: center; font-size: 18px; }
.reviews__name   { font-size: 14px; font-weight: 600; color: var(--light); display: block; }
.reviews__biz    { font-size: 13px; color: var(--muted); margin-top: 2px; }


/* ── PLATFORMS STRIP ───────────────────────────────────────── */

.platforms         { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; padding: 36px var(--gutter); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); background: var(--card); margin-left: calc(-1 * var(--gutter)); margin-right: calc(-1 * var(--gutter)); }
.platforms__label  { width: 100%; text-align: center; font-size: 12px; letter-spacing: 1.5px; text-transform: uppercase; color: var(--muted); margin-bottom: 8px; }
.platforms__pill   { display: inline-flex; align-items: center; gap: 6px; background: var(--dark); border: 1px solid var(--border); border-radius: 30px; padding: 8px 14px; font-size: 13px; font-weight: 500; color: var(--silver); transition: border-color 0.2s, color 0.2s; }
.platforms__pill:hover { border-color: var(--green); color: var(--light); }


/* ── PRICING ───────────────────────────────────────────────── */

.pricing__card         { background: var(--card); border: 1px solid var(--border); border-radius: 16px; padding: 28px 24px; position: relative; transition: border-color 0.2s; display: flex; flex-direction: column; }
.pricing__card--featured { border-color: var(--green); }
.pricing__badge        { position: absolute; top: -12px; left: 24px; background: var(--green); color: var(--dark); font-size: 11px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; padding: 4px 12px; border-radius: 20px; }
.pricing__tier         { font-family: 'Bebas Neue', sans-serif; font-size: 22px; letter-spacing: 2px; color: var(--light); margin-bottom: 4px; }
.pricing__amount       { display: flex; align-items: baseline; gap: 4px; margin-bottom: 16px; }
.pricing__num          { font-family: 'Bebas Neue', sans-serif; font-size: 52px; color: var(--green); line-height: 1; }
.pricing__per          { font-size: 14px; color: var(--muted); }
.pricing__features     { list-style: none; padding: 0; display: flex; flex-direction: column; gap: 10px; margin-bottom: 24px; flex: 1; }
.pricing__features li  { display: flex; align-items: center; gap: 10px; font-size: 15px; color: var(--silver); }
.pricing__features li::before  { content: '✓'; color: var(--green); font-weight: 700; flex-shrink: 0; }
.pricing__features li.off      { color: var(--muted); text-decoration: line-through; }
.pricing__features li.off::before { content: '✗'; color: var(--muted); }
.pricing__btn          { display: block; width: 100%; padding: 16px; border-radius: 12px; font-size: 15px; font-weight: 700; text-align: center; text-decoration: none; transition: transform 0.25s, box-shadow 0.25s, background-color 0.25s; cursor: pointer; border: none; letter-spacing: 0.03em; box-sizing: border-box; }
.pricing__btn--primary { background: linear-gradient(135deg, var(--green) 0%, var(--green-lime) 100%); color: var(--dark); box-shadow: 0 4px 20px rgba(var(--green-rgb),0.4); }
.pricing__btn--primary:hover { transform: translateY(-2px); box-shadow: 0 8px 30px rgba(var(--green-rgb),0.55); filter: brightness(1.07); }
.pricing__btn--primary:active { transform: translateY(0); box-shadow: 0 2px 10px rgba(var(--green-rgb),0.3); }
.pricing__btn--outline { background: rgba(var(--green-rgb),0.07); border: 2px solid var(--green); color: var(--green); }
.pricing__btn--outline:hover { background: rgba(var(--green-rgb),0.14); box-shadow: 0 4px 18px rgba(var(--green-rgb),0.22); transform: translateY(-1px); }
.pricing__btn--outline:active { transform: translateY(0); }


/* ── HERO STATS ────────────────────────────────────────────── */

.hero-stats {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
  width: 100%;
  min-width: 0;
}
@media (min-width: 600px) {
  .hero-stats { grid-template-columns: repeat(3, 1fr); }
}
.hero-stat {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 20px 12px;
  text-align: center;
}
.hero-stat-big {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 28px;
  color: var(--green);
  line-height: 1;
}
.hero-stat-unit {
  font-family: 'DM Sans', sans-serif;
  font-size: 20px;
  font-weight: 500;
}
.hero-stat-lbl {
  font-size: 11px;
  color: var(--muted);
  letter-spacing: 1px;
  text-transform: uppercase;
  margin-top: 4px;
}


/* ── FOOTER ────────────────────────────────────────────────── */

.footer {
  border-top: 1px solid rgba(var(--green-rgb), 0.18);
  padding: 40px 0;
  background: #000;
}

.footer__inner {
  max-width: 960px;
  margin: 0 auto;
  padding: 0 24px;
  text-align: center;
}

.footer__logo {
  font-family: 'Bebas Neue', sans-serif;
  font-size: 24px;
  letter-spacing: 2px;
  color: var(--green);
  margin-bottom: 8px;
}

.footer__tagline {
  font-size: 13px;
  color: #6b7a8d;
  margin-bottom: 20px;
}

.footer__links {
  display: flex;
  justify-content: center;
  gap: 20px;
  flex-wrap: wrap;
  margin-bottom: 24px;
}

.footer__link {
  font-size: 14px;
  color: #6b7a8d;
  text-decoration: none;
  transition: color 0.2s;
}
.footer__link:hover { color: #b0b8c1; }

.footer__copy {
  font-size: 12px;
  color: #6b7a8d;
  margin-top: 4px;
}

.footer__powered {
  font-size: 12px;
  color: #6b7a8d;
  margin-top: 4px;
}
.footer__powered a {
  color: #6b7a8d;
  text-decoration: none;
}
.footer__powered a:hover { color: #b0b8c1; }


/* ── CTA ────────────────────────────────────────────────────── */

.cta              { background: var(--card); border-top: 1px solid var(--border); margin-left: calc(-1 * var(--gutter)); margin-right: calc(-1 * var(--gutter)); padding: var(--v-gutter) var(--gutter); }
.cta__split       { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gap-lg); align-items: center; }
.cta__text        { text-align: left; }
.cta__text h2     { font-family: 'Bebas Neue', sans-serif; font-size: clamp(40px, 8vw, 72px); line-height: 1; letter-spacing: 2px; color: var(--light); margin-bottom: 16px; }
.cta__text h2 span { color: var(--green); }
.cta__text > p    { font-size: 16px; color: var(--light); margin-bottom: 36px; font-weight: 300; }
.cta__img-wrap    { display: flex; justify-content: center; align-items: center; padding: 15%; }
.cta__img         { width: 60%; max-width: 260px; height: auto; display: block; border-radius: 16px; }
.hero-note        { font-size: 13px; color: var(--muted); margin-top: 16px; }

@media (max-width: 767px) {
  .cta__split              { grid-template-columns: 1fr; }
  .cta__img-wrap           { display: none; }
  .cta__text               { text-align: center; }
  .cta__text > p           { margin-bottom: 20px; }
  .cta__text .btn__primary,
  .cta__text .btn.btn__primary { display: block; width: 100%; padding: 16px 24px; box-sizing: border-box; }
  .hero-note               { text-align: center; }
}


/* ── PUBLIC PAGES — UNIVERSAL (all has-site-header pages) ───── */

/* Outer wrapper — universal */
body.has-site-header .main               { width: 100%; max-width: 100vw; overflow-x: hidden; }

/* Inner container */
body.has-site-header .main-inner         { padding-left: var(--gutter); padding-right: var(--gutter); padding-top: 1.2rem; width: 100%; box-sizing: border-box; }
body.has-site-header .main-inner section { padding: 0; max-width: none; margin: 0; }

/* Reveal animation */
body.has-site-header .reveal             { opacity: 0; transform: translateY(24px); transition: opacity 0.6s ease, transform 0.6s ease; }
body.has-site-header .reveal.visible     { opacity: 1; transform: translateY(0); }

/* Section / aside spacing + hr */
body.has-site-header section.reveal,
body.has-site-header aside.reveal        { margin-top: 2.5rem; }
body.has-site-header hr.divider          { display: none; }


/* Images inside page body */
body.has-site-header .main img           { max-width: 100%; height: auto; }

/* Page hero — base; legal overrides padding below */
body.has-site-header .page-hero          { position: relative; padding: 2rem 0 1rem; overflow: hidden; }
body.has-site-header .page-hero .row     { position: relative; z-index: 1; }

/* Hero glow blob — dimensions differ per page, keep scoped */
.about__hero-glow, .contact__hero-glow  { position: absolute; top: -40px; left: -5%; width: 70%; height: 320px; background: radial-gradient(ellipse at 20% 40%, rgba(0,200,83,0.18) 0%, transparent 65%); pointer-events: none; z-index: 0; }

/* Page hero headline — legal overrides font-size below */
body.has-site-header .page-hero h1       { font-size: clamp(52px, 14vw, 96px); line-height: 1; margin: 0 0 0.3em; }
body.has-site-header .page-hero h1 span  { color: var(--green-lime); display: block; }
body.has-site-header .page-hero p        { font-size: 1.05rem; color: var(--silver); max-width: 540px; }

/* Accent label — HTML class names differ, comma-group is as far as we can go */
.about__label, .contact__label           { font-size: 12px; letter-spacing: 2px; text-transform: uppercase; color: var(--green-lime); font-weight: 600; margin: 0 0 0.4rem; }

/* ── TYPOGRAPHY — universal across all public pages ─────────── */
body.has-site-header h1  { font-family: 'Bebas Neue', sans-serif; font-size: clamp(36px, 8vw, 72px); line-height: 1.1; margin: 0 0 0.6em; color: var(--light); }
body.has-site-header h2  { font-family: 'Bebas Neue', sans-serif; font-size: clamp(28px, 6vw, 52px); line-height: 1.35; font-weight: 400; margin: 1.4rem 0 0.6rem; color: var(--h2-color); }
body.has-site-header h2 span { color: var(--green-lime); }
body.has-site-header h3  { font-family: 'DM Sans', sans-serif; font-size: 18px; font-weight: 600; line-height: 1.25; margin: 0 0 0.25em; color: var(--h3-color); }
body.has-site-header h3 span { color: var(--green-lime); }
body.has-site-header h4  { font-family: 'DM Sans', sans-serif; font-size: 15px; font-weight: 600; line-height: 1.3; margin: 0.85em 0 0.45em; color: var(--h4-color); }

/* p stays page-scoped — all:revert is too aggressive to apply universally */
.about p, .contact p                     { all: revert; color: var(--light); }


/* ── ABOUT PAGE — unique ────────────────────────────────────── */

/* Values list — card treatment */
.about ul               { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 14px; }
.about ul li            { display: flex; align-items: flex-start; gap: 14px; background: var(--card); border: 1px solid var(--border); border-radius: 10px; padding: 16px; }
.about ul li > span     { font-size: 24px; flex-shrink: 0; margin-top: 2px; }
.about ul li div        { color: var(--light); line-height: 1.6; }
.about ul li strong     { color: var(--light); display: block; margin-bottom: 2px; }

/* Image column — hidden on mobile (≤599px), flex-centered on tablet/desktop (≥600px).
   Use .img-col on any grid column that holds a decorative image. */
.img-col { display: none; }
@media (min-width: 600px) { .img-col { display: flex; align-items: center; } }
.about-values-img  { width: 100%; border-radius: 16px; object-fit: cover; aspect-ratio: 2/3; display: block; }
.contact-support-img { width: 100%; border-radius: 16px; object-fit: cover; aspect-ratio: 4/3; display: block; }
@media (min-width: 600px) { .contact-support-img { padding-top: 10px; } }

/* Team card */
.about__team-card       { display: flex; flex-direction: row; align-items: flex-start; gap: 20px; background: var(--card); border: 1px solid var(--border); border-radius: 12px; padding: 20px; margin: 0; }
.about__team-card img   { width: 100px; height: 100px; object-fit: cover; object-position: top; border-radius: 50%; border: 3px solid var(--green); box-shadow: 0 0 0 3px rgba(0,200,83,0.18); flex-shrink: 0; }
.about__team-info       { display: flex; flex-direction: column; }
.about__team-info h3    { font-size: 18px; font-weight: 600; color: var(--light); margin: 0 0 2px; }
.about__team-info em    { font-size: 13px; color: var(--green); letter-spacing: 0.3px; font-style: normal; display: block; margin-bottom: 10px; }
.about__team-info p     { font-size: 15px; color: var(--silver); line-height: 1.65; margin: 0; }


/* ── CONTACT PAGE — unique ──────────────────────────────────── */

.contact address          { font-style: normal; }
.contact address p        { color: var(--silver); }

/* Contact cards grid */
.contact .contact-card         { background: var(--card); border: 1px solid var(--border); border-radius: 12px; color: inherit; transition: border-color 0.2s; cursor: pointer; }
.contact .contact-card:hover   { border-color: var(--green); }
.contact .contact-card.open    { border-color: var(--green); }
.contact .contact-card__header { display: flex; align-items: flex-start; gap: 14px; padding: 18px; }
.contact .contact-card__header > span:first-child { font-size: 26px; flex-shrink: 0; }
.contact .contact-card strong  { display: block; font-size: 14px; font-weight: 600; color: var(--light); margin-bottom: 2px; }
.contact .contact-card em      { display: block; font-size: 13px; color: var(--green); font-style: normal; margin-bottom: 6px; }
.contact .contact-card p       { font-size: 13px; color: var(--muted); line-height: 1.5; margin: 0; }
.contact .contact-card__chevron { margin-left: auto; font-size: 18px; color: var(--muted); flex-shrink: 0; transition: transform 0.3s ease; line-height: 1; align-self: center; }
.contact .contact-card.open .contact-card__chevron { transform: rotate(90deg); color: var(--green); }
.contact .contact-card__form   { max-height: 0; overflow: hidden; transition: max-height 0.35s ease; }
.contact .contact-card.open .contact-card__form { max-height: 500px; }
.contact .contact-card__form-inner { padding: 0 18px 18px; }
.contact .contact-card__success { display: none; color: var(--green); font-size: 14px; font-weight: 600; padding-top: 10px; }
.contact .contact-card.sent .contact-card__success { display: block; }
.contact .contact-card.sent .contact-form { display: none; }


/* ── LEGAL PAGES — unique (Privacy & Terms) ─────────────────── */

/* Inner container override — needs min 16px on small screens */
.legal .main-inner        { padding-left: max(16px, var(--gutter)); padding-right: max(16px, var(--gutter)); padding-top: 10px; width: 100%; box-sizing: border-box; }

/* Hero overrides — larger top gap, smaller h1 */
.legal .page-hero         { position: relative; padding: var(--section-v) 0 1.5rem; overflow: hidden; }
.legal__hero-glow         { position: absolute; top: 0; left: -5%; width: 70%; height: 280px; background: radial-gradient(ellipse at 20% 40%, rgba(0,200,83,0.15) 0%, transparent 65%); pointer-events: none; z-index: 0; }
.legal .page-hero h1      { font-family: 'Bebas Neue', sans-serif; font-size: clamp(36px, 8vw, 80px); line-height: 1; margin: 0 0 0.3em; color: var(--light); }
.legal .page-hero p       { font-size: 0.9rem; color: var(--muted); }

/* Article — constrained readable width */
.legal article            { max-width: 680px; margin: 2rem 0 3rem; }
.legal article section    { padding: 2rem 0 1.5rem !important; border-bottom: 1px solid var(--border); }
.legal article section:last-child { border-bottom: none; }

/* Article typography — overrides shared defaults */
.legal article h2         { font-family: 'Bebas Neue', sans-serif; font-size: 1.5rem; color: var(--light); margin: 0 0 0.4rem; letter-spacing: 0.5px; }
.legal article p          { font-size: 15px; color: var(--silver); line-height: 1.75; margin: 0 0 0.75rem; }
.legal article p:last-child { margin-bottom: 0; }
.legal article strong     { color: var(--light); }
.legal article a          { color: var(--green); text-decoration: none; }
.legal article a:hover    { color: var(--green-hover); text-decoration: underline; }
.legal article ul         { list-style: disc; padding-left: 1.4rem; margin: 0.5rem 0 0.75rem; display: flex; flex-direction: column; gap: 6px; }
.legal article ul li      { font-size: 15px; color: var(--silver); line-height: 1.65; }

/* Pricing table (Terms page) */
.legal article table      { width: 100%; border-collapse: collapse; margin: 1rem 0; font-size: 14px; }
.legal article th         { text-align: left; padding: 10px 12px; background: var(--card); color: var(--green-lime); font-size: 11px; letter-spacing: 1.5px; text-transform: uppercase; border-bottom: 1px solid var(--border); }
.legal article td         { padding: 10px 12px; color: var(--silver); border-bottom: 1px solid var(--border); vertical-align: top; }
.legal article tr:last-child td { border-bottom: none; }
.legal article tr:nth-child(even) td { background: var(--card); }


/* ── SHARED FORM ELEMENTS ──────────────────────────────────────
   Used on Login, Onboarding, Contact, and any page with forms.
   ─────────────────────────────────────────────────────────── */

@keyframes spin    { to { transform: rotate(360deg); } }
@keyframes fadeUp  { from { opacity: 0; transform: translateY(16px); } to { opacity: 1; transform: translateY(0); } }
@keyframes pop     { from { transform: scale(0); opacity: 0; } to { transform: scale(1); opacity: 1; } }

.field                       { margin-bottom: 16px; }
.field label                 { display: block; font-size: 12px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase; color: var(--silver); margin-bottom: 7px; }
.field input,
.field textarea,
.field select                { width: 100%; background: var(--dark); border: 1px solid var(--border); border-radius: 10px; padding: 13px 16px; color: var(--light); font-family: 'DM Sans', sans-serif; font-size: 15px; transition: border-color 0.2s, box-shadow 0.2s; -webkit-appearance: none; }
.field input:focus-visible,
.field textarea:focus-visible,
.field select:focus-visible { outline: none; border-color: var(--green); box-shadow: 0 0 0 3px rgba(0,200,83,0.1); }
.field input.error,
.field textarea.error        { border-color: var(--danger); }
.field-error                 { font-size: 11px; color: var(--danger); margin-top: 5px; display: none; }
.field-error.visible         { display: block; }

.pw-wrap                     { position: relative; }
.pw-toggle                   { position: absolute; right: 14px; top: 50%; transform: translateY(-50%); background: none; border: none; color: var(--muted); cursor: pointer; font-size: 16px; padding: 4px; transition: color 0.2s; }
.pw-toggle:hover             { color: var(--silver); }

/* Primary CTA button (green) + shimmer — .btn-next is an alias */
.btn-submit,
.btn-next                    { width: 100%; padding: 15px; background: linear-gradient(135deg, var(--green) 0%, var(--green-lime) 100%); color: var(--dark); border: none; border-radius: 12px; font-size: 16px; font-weight: 700; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: transform 0.25s, box-shadow 0.25s, opacity 0.25s; display: flex; align-items: center; justify-content: center; gap: 8px; position: relative; overflow: hidden; margin-bottom: 16px; box-shadow: 0 4px 20px rgba(var(--green-rgb),0.4); letter-spacing: 0.03em; }
.btn-submit::after,
.btn-next::after             { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.18) 50%, transparent 100%); transform: translateX(-100%); transition: transform 0.45s; }
.btn-submit:hover::after,
.btn-next:hover::after       { transform: translateX(100%); }
.btn-submit:hover,
.btn-next:hover              { transform: translateY(-2px); box-shadow: 0 8px 30px rgba(var(--green-rgb),0.55); filter: brightness(1.07); }
.btn-submit:active,
.btn-next:active             { transform: translateY(0); box-shadow: 0 2px 10px rgba(var(--green-rgb),0.3); }
.btn-submit:disabled,
.btn-next:disabled           { opacity: 0.5; cursor: not-allowed; transform: none; }
.btn-submit.loading,
.btn-next.loading            { pointer-events: none; }

/* Ghost/text back button */
.btn-back                    { width: 100%; padding: 13px; background: transparent; color: var(--muted); border: none; border-radius: 12px; font-size: 14px; font-weight: 500; font-family: 'DM Sans', sans-serif; cursor: pointer; transition: color 0.2s; }
.btn-back:hover              { color: var(--silver); }

/* Spinner */
.spinner                     { width: 18px; height: 18px; border: 2px solid rgba(7,13,7,0.3); border-top-color: var(--dark); border-radius: 50%; animation: spin 0.7s linear infinite; display: none; }
.btn-submit.loading .spinner { display: block; }
.btn-submit.loading .btn-text{ display: none; }

/* OR divider */
.or-divider                  { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; }
.or-line                     { flex: 1; height: 1px; background: var(--border); }
.or-text                     { font-size: 12px; color: var(--muted); letter-spacing: 1px; }

/* Toast */
.toast                       { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%) translateY(20px); background: var(--green); color: var(--dark); padding: 12px 24px; border-radius: 30px; font-weight: 700; font-size: 14px; opacity: 0; pointer-events: none; transition: opacity 0.3s, transform 0.3s; z-index: 999; white-space: nowrap; }
.toast.error-toast           { background: var(--danger); color: #fff; }
.toast.show                  { opacity: 1; pointer-events: auto; transform: translateX(-50%) translateY(0); }

/* Email verify box */
.email-verify-box            { background: #f0faf4; border: 1px solid #b2dfdb; border-radius: 10px; padding: 14px 18px; text-align: center; color: #2e7d32; font-size: 14px; line-height: 1.5; }

/* ── Plan picker (login/signup) ── */
.plan-picker                 { display: flex; gap: 6px; }
.plan-pick-btn               { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 11px 8px; border-radius: 10px; border: 1px solid var(--border); background: var(--dark); color: var(--muted); cursor: pointer; font-family: inherit; transition: border-color .2s, background .2s, color .2s; }
.plan-pick-btn:hover:not(.active) { border-color: var(--silver); color: var(--silver); }
.plan-pick-btn.active        { border-width: 2px; border-color: var(--green); background: rgba(0,200,83,.18); color: var(--green); box-shadow: 0 0 0 2px rgba(0,200,83,.35), inset 0 0 8px rgba(0,200,83,.08); font-weight: 700; }
.plan-selected-summary       { margin: 6px 0 0; font-size: 12px; color: var(--green); text-align: center; min-height: 18px; }
.plan-pick-name              { font-size: 13px; font-weight: 700; line-height: 1.2; }
.plan-pick-price             { font-size: 12px; opacity: .85; }


/* ── LOGIN PAGE ────────────────────────────────────────────────
   Layout: .row > .layout__split-2-1 > form col + .hero-img-col
   Image column hidden on mobile via universal .hero-img-col rule.
   ─────────────────────────────────────────────────────────── */

@keyframes glowPulse {
  0%, 100% { text-shadow: 0 0 40px rgba(0,200,83,0.3); }
  50%       { text-shadow: 0 0 60px rgba(0,200,83,0.6), 0 0 100px rgba(0,200,83,0.2); }
}

/* Form column — centers card vertically in the viewport */
.login-form-col              { display: flex; flex-direction: column; align-items: center; justify-content: flex-start; min-height: calc(100dvh - 80px); padding: 40px 24px; }

/* Auth card */
.auth-card                   { width: 100%; max-width: 480px; animation: fadeUp 0.5s 0.1s ease both; }

/* Tabs */
.auth-tabs                   { display: grid; grid-template-columns: 1fr 1fr; background: var(--dark); border-radius: 10px; padding: 4px; margin-bottom: 32px; border: 1px solid var(--border); }
.auth-tab                    { padding: 18px 20px; text-align: center; font-size: 15px; font-weight: 600; color: var(--muted); cursor: pointer; border-radius: 8px; transition: color 0.2s, background-color 0.2s; border: none; background: transparent; font-family: 'DM Sans', sans-serif; }
.auth-tab.active             { background: var(--green); color: var(--dark); }

/* Forms */
.auth-form                   { display: none; }
.auth-form.active            { display: block; }

/* Password strength */
.strength-wrap               { margin-top: 8px; display: none; }
.strength-wrap.visible       { display: block; }
.strength-track              { height: 3px; background: var(--border); border-radius: 3px; overflow: hidden; margin-bottom: 4px; }
.strength-fill               { height: 100%; border-radius: 3px; transition: width 0.3s, background 0.3s; }
.strength-label              { font-size: 12px; color: var(--muted); letter-spacing: 1px; }

/* Forgot password */
.forgot                      { text-align: right; margin-top: -8px; margin-bottom: 16px; }
.forgot a                    { font-size: 13px; color: var(--muted); text-decoration: none; transition: color 0.2s; }
.forgot a:hover              { color: var(--silver); }

/* Social buttons */
.social-btns                 { display: flex; flex-direction: column; gap: 10px; margin-bottom: 20px; }
.btn-social                  { width: 100%; padding: 13px; background: var(--dark); border: 1px solid var(--border); border-radius: 12px; font-size: 14px; font-weight: 600; color: var(--light); font-family: 'DM Sans', sans-serif; cursor: pointer; display: flex; align-items: center; justify-content: center; gap: 10px; transition: border-color 0.2s, background-color 0.2s, opacity 0.2s; }
.btn-social:hover            { border-color: var(--green); }
.btn-social-icon             { font-size: 18px; }

/* Terms note */
.terms-note                  { font-size: 12px; color: var(--muted); text-align: center; line-height: 1.6; }
.terms-note a                { color: var(--silver); text-decoration: none; }
.terms-note a:hover          { color: var(--green); }

/* Back to home */
.back-home                   { text-align: center; margin-top: 20px; animation: fadeUp 0.5s 0.2s ease both; }
.back-home a                 { font-size: 13px; color: var(--muted); text-decoration: none; transition: color 0.2s; }
.back-home a:hover           { color: var(--silver); }

/* Reset password view */
.reset-view                  { display: none; animation: fadeUp 0.3s ease both; }
.reset-view.visible          { display: block; }
.reset-back                  { display: flex; align-items: center; gap: 6px; font-size: 13px; color: var(--muted); cursor: pointer; margin-bottom: 20px; transition: color 0.2s; background: none; border: none; font-family: 'DM Sans', sans-serif; padding: 0; }
.reset-back:hover            { color: var(--silver); }

/* Auth loading / card reveal */
#auth-loading                { display: flex; flex-direction: column; align-items: center; gap: 16px; padding: 40px 0; }
#auth-loading .ring          { width: 44px; height: 44px; border: 3px solid var(--border); border-top-color: var(--green); border-radius: 50%; animation: spin 0.8s linear infinite; }
#auth-card-wrap              { display: none; }
#auth-card-wrap.ready        { display: block; width: 100%; }

/* Image column — desktop only via .hero-img-col, styled here */
.login-img-col               { position: sticky; top: 80px; height: calc(100dvh - 80px); overflow: hidden; border-radius: 16px; align-self: flex-start; }
.login-img-col img           { width: 100%; height: 100%; object-fit: cover; object-position: center top; display: block; }
.login-img-overlay           { position: absolute; inset: 0; background: linear-gradient(160deg, rgba(0,200,83,0.25) 0%, rgba(7,13,7,0.75) 100%); display: flex; flex-direction: column; justify-content: flex-end; padding: 48px 40px; }
.login-panel-logo            { font-family: 'Bebas Neue', sans-serif; font-size: 52px; letter-spacing: 4px; color: #EEF7EE; line-height: 1; margin-bottom: 8px; display: block; }
.login-panel-logo span       { color: #00C853; }
.login-panel-tag             { font-size: 15px; color: rgba(238,247,238,0.75); font-weight: 300; letter-spacing: 0.5px; }
.login-panel-quote           { margin-top: 28px; font-size: 14px; color: rgba(238,247,238,0.6); font-style: italic; line-height: 1.6; max-width: 320px; border-left: 2px solid rgba(0,200,83,0.5); padding-left: 16px; }


/* ── ONBOARDING WIZARD ──────────────────────────────────────────
   Full-viewport step wizard. body.onboarding-page overrides needed
   because of particle canvas (backdrop-blur on inputs) and the
   height:100%/overflow:hidden full-screen lock (html rule stays
   as a one-liner in the page <style> since html can't be scoped).
   ─────────────────────────────────────────────────────────── */

@keyframes iconPop   { from { transform: scale(0.5); opacity: 0; } to { transform: scale(1);   opacity: 1; } }
@keyframes successPop{ from { transform: scale(0);   opacity: 0; } to { transform: scale(1);   opacity: 1; } }
@keyframes slideIn   { from { opacity: 0; transform: translateX(-20px); } to { opacity: 1; transform: translateX(0); } }
@keyframes borderGlow{ 0%,100% { box-shadow: 0 0 0 rgba(0,200,83,0); } 50% { box-shadow: 0 0 20px rgba(0,200,83,0.2); } }

body.onboarding-page              { height: 100%; overflow: hidden; position: relative; }
body.onboarding-page #canvas      { position: fixed; inset: 0; pointer-events: none; z-index: 0; }

/* Inputs get a frosted look over the particle canvas */
body.onboarding-page input,
body.onboarding-page textarea,
body.onboarding-page select       { background: rgba(13,22,13,0.8); backdrop-filter: blur(8px); }
body.onboarding-page textarea     { resize: none; }

/* Wizard chrome */
.wizard                  { position: relative; z-index: 1; height: 100dvh; padding-top: 120px; display: flex; flex-direction: column; overflow: hidden; }
.wiz-header              { padding: 20px 24px 0; display: flex; align-items: center; justify-content: flex-end; flex-shrink: 0; }
.wiz-step-label          { font-size: 12px; font-weight: 600; letter-spacing: 1.5px; text-transform: uppercase; color: var(--muted); }

/* Progress bar */
.progress-track          { margin: 16px 24px 0; height: 3px; background: var(--border); border-radius: 3px; flex-shrink: 0; overflow: visible; position: relative; }
.progress-fill           { height: 100%; background: linear-gradient(90deg, var(--green), #00FF88); border-radius: 3px; transition: width 0.5s cubic-bezier(0.4,0,0.2,1); position: relative; }
.progress-fill::after    { content: ''; position: absolute; right: -4px; top: -4px; width: 11px; height: 11px; background: var(--green); border-radius: 50%; box-shadow: 0 0 12px var(--green); }

/* Step dots */
.step-dots               { display: flex; justify-content: center; gap: 8px; padding: 14px 0 0; flex-shrink: 0; }
.dot                     { width: 6px; height: 6px; border-radius: 50%; background: var(--border); transition: background-color 0.3s ease, width 0.3s ease, height 0.3s ease; }
.dot.active              { background: var(--green); box-shadow: 0 0 8px var(--green); transform: scale(1.3); }
.dot.done                { background: var(--silver); width: 18px; border-radius: 3px; }

/* Slides */
.slides                  { flex: 1; overflow: hidden; position: relative; }
.slide                   { position: absolute; inset: 0; padding: 24px 24px 20px; display: flex; flex-direction: column; overflow-y: auto; opacity: 0; transform: translateX(60px); transition: opacity 0.45s cubic-bezier(0.4,0,0.2,1), transform 0.45s cubic-bezier(0.4,0,0.2,1); pointer-events: none; }
.slide.active            { opacity: 1; transform: translateX(0); pointer-events: all; }
.slide.exit              { opacity: 0; transform: translateX(-60px); }

/* Slide content */
.slide-icon              { font-size: 48px; margin-bottom: 16px; display: block; animation: iconPop 0.5s 0.2s cubic-bezier(0.34,1.56,0.64,1) both; }
.slide-title             { font-family: 'Bebas Neue', sans-serif; font-size: 38px; line-height: 1; letter-spacing: 1.5px; color: var(--light); margin-bottom: 8px; }
.slide-title span        { color: var(--green); }
.slide-sub               { font-size: 15px; color: var(--muted); line-height: 1.65; margin-bottom: 28px; font-weight: 300; }

/* Two-column input grid */
.input-row               { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }

/* Category grid */
.cat-grid                { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 16px; }
.cat-btn                 { background: rgba(13,22,13,0.8); border: 1px solid var(--border); border-radius: 12px; padding: 14px 10px; text-align: center; cursor: pointer; transition: border-color 0.2s, background-color 0.2s, color 0.2s; color: var(--silver); font-size: 13px; font-weight: 500; font-family: 'DM Sans', sans-serif; }
.cat-btn .cat-icon       { font-size: 24px; display: block; margin-bottom: 4px; }
.cat-btn:hover           { border-color: var(--silver); }
.cat-btn.selected        { border-color: var(--green); background: rgba(0,200,83,0.08); color: var(--light); box-shadow: 0 0 16px rgba(0,200,83,0.1); }

/* Platform connect cards */
.connect-list            { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
.connect-card            { background: rgba(13,22,13,0.8); border: 1px solid var(--border); border-radius: 12px; padding: 14px 16px; display: flex; align-items: center; gap: 12px; transition: border-color 0.25s, box-shadow 0.25s; backdrop-filter: blur(8px); }
.connect-card.connected  { border-color: var(--green); background: rgba(0,200,83,0.05); }
.connect-icon            { font-size: 26px; flex-shrink: 0; }
.connect-info            { flex: 1; }
.connect-name            { font-size: 14px; font-weight: 600; color: var(--light); }
.connect-desc            { font-size: 12px; color: var(--muted); margin-top: 2px; }
.connect-tag             { font-size: 9px; letter-spacing: 1px; text-transform: uppercase; padding: 2px 7px; border-radius: 10px; font-weight: 700; margin-top: 3px; display: inline-block; }
.tag-auto                { background: rgba(0,200,83,0.1); color: var(--green); }
.tag-copy                { background: rgba(255,167,38,0.1); color: #FFA726; }
.connect-setup           { display: inline-block; margin-top: 4px; font-size: 10px; color: #4FC3F7; text-decoration: none; font-weight: 600; }
.connect-btn             { background: transparent; border: 1px solid var(--border); border-radius: 8px; padding: 7px 14px; font-size: 12px; font-weight: 600; color: var(--silver); cursor: pointer; font-family: 'DM Sans', sans-serif; transition: border-color 0.2s, background-color 0.2s, color 0.2s; white-space: nowrap; flex-shrink: 0; }
.connect-btn:hover       { border-color: var(--green); color: var(--green); }
.connect-btn.done        { background: rgba(0,200,83,0.1); border-color: var(--green); color: var(--green); }
.connect-btn.btn-copy-paste { background: rgba(255,167,38,0.08); border-color: #FFA726; color: #FFA726; cursor: default; }
.connect-btn.btn-manual     { background: rgba(79,195,247,0.08); border-color: #4FC3F7; color: #4FC3F7; cursor: default; }
.connect-skip            { text-align: center; font-size: 12px; color: var(--muted); margin-top: 4px; cursor: pointer; transition: color 0.2s; }
.connect-skip:hover      { color: var(--silver); }

/* Tone selector */
.tone-grid               { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 16px; }
.tone-btn                { background: rgba(13,22,13,0.8); border: 1px solid var(--border); border-radius: 12px; padding: 16px 12px; cursor: pointer; transition: border-color 0.2s, background-color 0.2s; font-family: 'DM Sans', sans-serif; text-align: left; }
.tone-btn .tone-icon     { font-size: 22px; display: block; margin-bottom: 6px; }
.tone-btn .tone-name     { font-size: 14px; font-weight: 700; color: var(--light); display: block; }
.tone-btn .tone-desc     { font-size: 12px; color: var(--muted); margin-top: 2px; display: block; }
.tone-btn.selected       { border-color: var(--green); background: rgba(0,200,83,0.08); box-shadow: 0 0 16px rgba(0,200,83,0.1); }

/* Welcome screen (step 0) */
.welcome-center          { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; flex: 1; padding-top: 20px; }
.welcome-logo            { font-family: 'Bebas Neue', sans-serif; font-size: 52px; letter-spacing: 4px; color: var(--green); text-shadow: 0 0 40px rgba(0,200,83,0.4); animation: glowPulse 3s ease infinite; line-height: 1; }
.welcome-tagline         { font-size: 16px; color: var(--silver); font-weight: 300; margin: 8px 0 32px; letter-spacing: 1px; }
.welcome-features        { display: flex; flex-direction: column; gap: 12px; width: 100%; max-width: 320px; margin-bottom: 36px; }
.welcome-feat            { display: flex; align-items: center; gap: 12px; background: rgba(13,22,13,0.6); border: 1px solid var(--border); border-radius: 10px; padding: 12px 16px; text-align: left; animation: slideIn 0.4s ease both; }
.welcome-feat:nth-child(1){ animation-delay: 0.2s; }
.welcome-feat:nth-child(2){ animation-delay: 0.35s; }
.welcome-feat:nth-child(3){ animation-delay: 0.5s; }
.feat-icon               { font-size: 20px; flex-shrink: 0; }
.feat-text               { font-size: 13px; color: var(--silver); line-height: 1.4; }
.feat-text strong        { color: var(--light); display: block; font-size: 14px; }

/* Success screen */
.success-center          { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; flex: 1; }
.success-ring            { width: 100px; height: 100px; border-radius: 50%; background: rgba(0,200,83,0.1); border: 2px solid var(--green); display: flex; align-items: center; justify-content: center; font-size: 44px; margin-bottom: 24px; box-shadow: 0 0 40px rgba(0,200,83,0.3); animation: successPop 0.6s cubic-bezier(0.34,1.56,0.64,1) both; }
.success-title           { font-family: 'Bebas Neue', sans-serif; font-size: 44px; letter-spacing: 2px; color: var(--light); line-height: 1; margin-bottom: 8px; }
.success-title span      { color: var(--green); }
.success-sub             { font-size: 14px; color: var(--muted); line-height: 1.6; max-width: 280px; margin: 0 auto 32px; }
.success-stats           { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; width: 100%; margin-bottom: 28px; animation: fadeUp 0.5s 0.4s ease both; }
.sstat                   { background: var(--card); border: 1px solid var(--border); border-radius: 10px; padding: 14px 8px; text-align: center; }
.sstat-num               { font-family: 'Bebas Neue', sans-serif; font-size: 28px; color: var(--green); line-height: 1; }
.sstat-lbl               { font-size: 9px; letter-spacing: 1px; text-transform: uppercase; color: var(--muted); margin-top: 3px; }

/* Wizard footer */
.wiz-footer              { padding: 10px 24px max(env(safe-area-inset-bottom, 0px), 24px); flex-shrink: 0; display: flex; flex-direction: column; gap: 8px; }

/* Platform category rows */
.pcat-row                { padding: 10px 0; border-bottom: 1px solid var(--border); }
.pcat-row:last-child     { border-bottom: none; }
.pcat-row:not(.pcat-multi) { display: flex; align-items: center; gap: 10px; }
.pcat-header             { display: flex; align-items: center; gap: 10px; }
.pcat-multi .pcat-header { margin-bottom: 8px; }
.pcat-icon               { font-size: 20px; flex-shrink: 0; }
.pcat-name               { font-size: 13px; font-weight: 600; color: var(--light); flex: 1; }
.pcat-limit-badge        { font-size: 10px; font-weight: 600; color: var(--silver); background: rgba(255,255,255,0.08); border-radius: 20px; padding: 2px 8px; flex-shrink: 0; }
.pcat-slots              { display: flex; flex-wrap: wrap; gap: 8px; }
.pcat-row:not(.pcat-multi) .pcat-slots { margin-left: auto; flex-shrink: 0; }
.pcat-slot               { display: flex; flex-direction: column; gap: 3px; }
.pcat-slot-label         { font-size: 10px; font-weight: 600; color: var(--silver); text-transform: uppercase; letter-spacing: 0.04em; padding-left: 2px; }
.pcat-select             { background: var(--dark); border: 1px solid var(--border); border-radius: 8px; padding: 7px 10px; color: var(--silver); font-size: 12px; font-family: 'DM Sans', sans-serif; width: 160px; flex-shrink: 0; -webkit-appearance: none; transition: border-color 0.2s; margin-bottom: 0; }
.pcat-select:focus-visible { outline: none; border-color: var(--green); box-shadow: 0 0 0 2px rgba(0,200,83,.25); }
.pcat-select.ai-picked   { border-color: var(--silver); color: var(--light); }
@media (max-width: 540px) {
  .pcat-row:not(.pcat-multi) { flex-wrap: wrap; }
  .pcat-row:not(.pcat-multi) .pcat-slots { margin-left: 0; width: 100%; }
  .pcat-row:not(.pcat-multi) .pcat-select { width: 100%; }
  .pcat-slot { width: 100%; }
  .pcat-slot .pcat-select { width: 100%; }
}

/* Day buttons */
.day-btn                 { background: rgba(13,22,13,0.8); border: 1px solid var(--border); border-radius: 8px; padding: 8px 2px; font-size: 11px; font-weight: 600; color: var(--muted); cursor: pointer; font-family: 'DM Sans', sans-serif; transition: border-color 0.2s, background-color 0.2s, color 0.2s; text-align: center; }
.day-btn.selected        { background: rgba(0,200,83,0.1); border-color: var(--green); color: var(--green); }

/* Glow focus animation */
.field-focus-glow:focus-within { animation: borderGlow 2s ease infinite; }

/* Extracted utility classes */
.loc-type-btn            { flex:1; padding:10px 6px; border-radius:10px; border:1.5px solid var(--border); background:var(--card); color:var(--light); cursor:pointer; font-size:13px; font-weight:600; transition:.2s; }
.loc-btn-row             { display:flex; gap:8px; margin-top:4px; }
.cat-divider-row         { display:flex; align-items:center; gap:10px; margin-bottom:16px; }
.cat-divider-line        { flex:1; height:1px; background:var(--border); }
.cat-divider-label       { font-size:12px; letter-spacing:1.5px; text-transform:uppercase; color:var(--muted); }
.cat-note                { font-size:13px; color:var(--muted); margin-bottom:14px; }
.btn-cat-resolve         { background:var(--card); border:1px solid var(--green); color:var(--green); margin-top:4px; }
.days-grid               { display:grid; grid-template-columns:repeat(7,1fr); gap:6px; margin-bottom:4px; }
.btn-coming-soon         { opacity:0.5; cursor:default; background:var(--card); border:1px solid var(--border); color:var(--muted); }
.sstat-unit              { font-size:14px; }
.cat-loading-msg         { padding:12px; opacity:.7; }
.cat-qs-wrap             { background:rgba(0,200,83,0.05); border:1px solid var(--border); border-radius:12px; padding:16px; }
.cat-qs-note             { font-size:12px; color:var(--muted); margin-bottom:14px; }
.cat-q-field             { margin-bottom:12px; }
.cat-q-label             { display:block; font-size:11px; color:var(--silver); font-weight:700; margin-bottom:5px; }
.cat-q-input             { border-radius:8px; font-size:13px; padding:10px; }
.cat-q-submit            { width:100%; margin-top:4px; padding:12px; border-radius:10px; border:1px solid var(--green); background:transparent; color:var(--green); font-weight:700; font-size:13px; cursor:pointer; }

@media (max-width: 767px) {
  .wizard                { padding-top: 56px; }
  .wiz-header            { padding: 10px 16px 0; }
  .progress-track        { margin: 10px 16px 0; }
  .step-dots             { padding: 8px 0 0; }
  .slide                 { padding: 14px 16px 10px; }
  .slide-icon            { font-size: 36px; margin-bottom: 10px; }
  .slide-title           { font-size: 30px; }
  .slide-sub             { font-size: 13px; margin-bottom: 14px; }
  .loc-type-btn          { font-size: 12px; padding: 8px 4px; }
  .day-btn               { font-size: 10px; padding: 7px 1px; border-radius: 6px; }
  .days-grid             { gap: 4px; }
  .tone-btn              { padding: 12px 8px; }
  .tone-btn .tone-icon   { font-size: 18px; }
  .tone-btn .tone-name   { font-size: 12px; }
  .tone-btn .tone-desc   { font-size: 11px; }
  .welcome-logo          { font-size: 42px; }
  .welcome-tagline       { font-size: 14px; margin-bottom: 20px; }
  .welcome-features      { max-width: 100%; }
  .wiz-footer            { padding: 8px 16px max(env(safe-area-inset-bottom, 0px), 24px); }
}

@media (max-width: 359px) {
  .wizard                { padding-top: 48px; }
  .slide-icon            { font-size: 28px; margin-bottom: 8px; }
  .slide-title           { font-size: 26px; }
  .slide-sub             { margin-bottom: 10px; }
  .days-grid             { gap: 3px; }
  .day-btn               { font-size: 9px; padding: 6px 0; }
  .loc-type-btn          { font-size: 11px; }
}


/* ── APP COMPONENTS ─────────────────────────────────────────────
   Reusable across every authenticated app page.
   No page scope — class names are distinctive enough.
   ─────────────────────────────────────────────────────────── */

/* Card / Card Base
   .card-base = shared surface (no bottom margin) — use when stacking inside a layout grid.
   .card      = .card-base + margin-bottom — use for standalone cards in a flow. */
.card-base,
.card                { background: var(--card); border: 1px solid var(--border); border-radius: 14px; padding: 24px; }
.card                { margin-bottom: 16px; }
.col-left > .card,
.col-right > .card   { margin-bottom: 0; }
.card-title          { font-family: 'Bebas Neue', sans-serif; font-size: 21px; letter-spacing: 1.5px; color: var(--green); margin-bottom: 14px; display: flex; align-items: center; gap: 8px; }
.no-biz-state        { text-align: center; padding: 80px 20px; }
#delete-confirm-btn:hover:not(:disabled) { opacity: 0.85; }

/* App buttons — outline ghost, green fill variant */
/* ═══════════════════════════════════════════════════════════
   BUTTON SYSTEM — canonical
   .btn base → .btn--* modifiers → size/layout helpers
   Component aliases (dash-btn, btn-submit, etc.) stay near
   their page sections; shared-base group below applies once
   to every button class so font-family / border-radius /
   cursor / transition are never duplicated.
   ═══════════════════════════════════════════════════════════ */

/* ── SHARED BASE — declared once for every button class ───── */
.btn,
.btn-submit, .btn-next, .btn-back,
.btn-social,
.btn-primary, .btn-secondary,
.btn-proceed, .btn-create-page,
.dash-btn, .dash-btn-outline, .dash-btn-ghost,
.btn-connect, .btn-reconnect, .btn-disconnect,
.btn-copy, .btn-instructions,
.btn-cancel-modal,
.btn-retry,
.btn-save, .btn-cancel, .btn-camp-save, .btn-camp-cancel,
.btn-rewrite, .btn-clear, .btn-more-qs, .btn-green-out,
.btn-cat-resolve, .btn-coming-soon, .btn-upgrade-inline,
.pir-save-btn, .pending-approve-btn, .pending-skip-btn,
.btn-sched {
  font-family: 'DM Sans', sans-serif;
  cursor: pointer;
  transition: border-color 0.2s, background-color 0.2s, color 0.2s, opacity 0.2s;
  border-radius: 10px;
  text-decoration: none;
  box-sizing: border-box;
  display: block;
  width: fit-content;
  margin-left: auto;
  margin-right: auto;
}

/* ── FOCUS RING — keyboard accessibility ──────────────────── */
.btn:focus-visible,
.btn-submit:focus-visible, .btn-next:focus-visible,
.btn-proceed:focus-visible, .btn-connect:focus-visible,
.dash-btn:focus-visible, .dash-btn-outline:focus-visible {
  outline: 2px solid var(--green);
  outline-offset: 2px;
}

/* ── DISABLED ─────────────────────────────────────────────── */
.btn:disabled,
.btn-submit:disabled, .btn-next:disabled,
.btn-connect:disabled,
.btn-coming-soon { opacity: 0.5; cursor: not-allowed; transform: none !important; }

/* ── .btn — canonical app button ──────────────────────────── */
.btn                 { padding: 13px 16px; font-weight: 800; font-size: 14px; border: 1px solid var(--border); display: inline-flex; align-items: center; justify-content: center; gap: 8px; color: var(--light); background: transparent; }
.btn:hover           { border-color: var(--green); color: var(--green); }

/* ── MODIFIER: --primary (green fill + hover lift) ────────── */
.btn--primary,
.btn-primary         { background: var(--green); color: var(--dark); border-color: var(--green); }
.btn--primary:hover,
.btn-primary:hover   { background: var(--green2); color: var(--dark); transform: translateY(-1px); }

/* ── MODIFIER: --ghost / --outline (transparent + border) ── */
.btn--ghost,
.btn--outline,
.btn-outline         { background: transparent; border: 1px solid var(--border); color: var(--light); }
.btn--ghost:hover,
.btn--outline:hover,
.btn-outline:hover   { border-color: var(--green); color: var(--green); }

/* ── MODIFIER: --danger (red fill) ───────────────────────── */
.btn--danger         { background: var(--danger); color: #fff; border-color: var(--danger); }
.btn--danger:hover   { background: #b91c1c; border-color: #b91c1c; }

/* ── MODIFIER: --warn (amber outline) ────────────────────── */
.btn--warn           { background: transparent; color: var(--warn); border: 1px solid var(--warn); }
.btn--warn:hover     { background: rgba(255,167,38,0.1); }

/* ── SIZE MODIFIERS ───────────────────────────────────────── */
.btn--sm, .btn-sm, .btn--small { padding: 8px 14px; font-size: 12px; }
.btn--xs                       { padding: 5px 10px; font-size: 11px; }
.btn--lg, .btn-lg              { padding: 14px 32px; font-size: 15px; }

/* ── LAYOUT MODIFIERS ─────────────────────────────────────── */
.btn--block, .btn--full { display: flex; width: 100%; justify-content: center; }

/* Responsive: full-width + centered on mobile, shrinks to fit on desktop */
.btn--adaptive          { display: flex !important; width: 100% !important; justify-content: center; margin-top: 16px; }
@media (min-width: 768px) {
  .btn--adaptive        { display: inline-flex !important; width: fit-content !important; }
}
/* Never stretches — use inside flex rows / side-by-side groups */
.btn--inline            { display: inline-flex !important; width: auto !important; margin-left: 0 !important; margin-right: 0 !important; }

/* ── LAYOUT HELPERS ───────────────────────────────────────── */
.btn-row { display: flex; gap: 10px; margin-top: 16px; flex-wrap: wrap; }

/* ── YES / NO pill buttons (About You in Copy) ────────────── */
.yn-row   { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.yn-label { flex: 1; font-size: 13px; font-weight: 600; color: var(--light); line-height: 1.5; }
.yn-btns  { display: flex; gap: 6px; flex-shrink: 0; }
.yn-btn   { padding: 6px 16px; font-size: 12px; font-weight: 700; border-radius: 20px; border: 1.5px solid var(--border); background: transparent; color: var(--muted); cursor: pointer; font-family: 'DM Sans', sans-serif; transition: border-color 0.15s, background-color 0.15s, color 0.15s; }
.yn-btn:disabled { opacity: 0.35; cursor: not-allowed; }
.yn-btn.yn-yes.yn-active { border-color: var(--green); background: var(--green); color: #000; }
.yn-btn.yn-no.yn-active  { border-color: var(--silver); background: var(--card); color: var(--light); }

/* Progress bar */
.progress-wrap       { height: 6px; background: var(--border); border-radius: 999px; overflow: hidden; margin-top: 10px; }
.progress-bar        { height: 100%; background: var(--green); border-radius: 999px; }

/* 4-column stat grid */
.grid                { display: grid; grid-template-columns: repeat(4,1fr); gap: 12px; margin-bottom: 16px; }
.stat                { background: var(--panel); border: 1px solid var(--border); border-radius: 12px; padding: 16px; }
.stat-num            { font-family: 'Bebas Neue', sans-serif; font-size: 34px; color: var(--green); line-height: 1; }
.stat-label          { font-size: 10px; letter-spacing: 1.2px; text-transform: uppercase; color: var(--muted); margin-top: 4px; }

/* Status badges — canonical; duplicates removed from admin block */
.badge               { font-size: 10px; text-transform: uppercase; letter-spacing: .7px; font-weight: 800; border-radius: 999px; padding: 5px 8px; white-space: nowrap; }
.ok                  { color: var(--green); }
.warn                { color: var(--warn); }

/* Platform / activity / task row pattern — .list and .list-item are aliases for admin context */
.platform-list,
.activity-list,
.task-list,
.list                { display: flex; flex-direction: column; gap: 10px; }
.platform-row,
.activity-row,
.task-row,
.list-item           { background: var(--panel); border: 1px solid var(--border); border-radius: 12px; padding: 13px; display: flex; align-items: center; gap: 12px; }
.platform-icon       { width: 40px; height: 40px; border-radius: 10px; background: var(--dark); display: flex; align-items: center; justify-content: center; font-size: 20px; flex-shrink: 0; }
.row-main            { flex: 1; min-width: 0; }
.row-title           { font-size: 14px; font-weight: 700; color: var(--light); }
.row-sub             { font-size: 12px; color: var(--muted); margin-top: 3px; }

/* Two-column grid */
.two-col             { display: grid; grid-template-columns: 1fr 1fr; gap: var(--gap-lg); margin-bottom: var(--gap-lg); }

/* Utility */
.sub                 { color: var(--muted); font-size: 15px; line-height: 1.6; max-width: 650px; }
.mini-label          { font-size: 11px; text-transform: uppercase; letter-spacing: 1px; color: var(--silver); font-weight: 800; margin-top: 16px; }
.manage-link         { display: inline-block; margin-top: 10px; font-size: 12px; color: var(--green); text-decoration: none; font-weight: 600; }
.loading-text        { color: var(--muted); font-size: 13px; padding: 4px 0; }
.activity-empty      { color: var(--muted); font-size: 13px; padding: 4px 0; }
.cost-line           { display: flex; justify-content: space-between; border-bottom: 1px solid var(--border); padding: 10px 0; font-size: 13px; }
.cost-line:last-child{ border-bottom: none; }

/* Bottom mobile nav */
.mobile-nav          { position: fixed; bottom: 0; left: 0; right: 0; background: rgba(7,13,7,.98); border-top: 1px solid var(--border); display: none; grid-template-columns: repeat(4,1fr); z-index: 200; }
.mobile-nav a        { padding: 10px 4px; text-align: center; text-decoration: none; color: var(--muted); font-size: 11px; }
.mobile-nav a.active { color: var(--green); }

/* Danger zone */
.danger-zone         { margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--border); }
.danger-text { color: var(--danger); }
.delete-account-btn  { background: none; border: none; color: #c0392b; font-size: 12px; cursor: pointer; padding: 0; font-family: inherit; text-decoration: underline; }

/* Delete confirm modal */
#delete-overlay      { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.7); z-index: 1000; align-items: center; justify-content: center; }
#upgrade-overlay     { display: none; position: fixed; inset: 0; background: rgba(0,0,0,0.7); z-index: 1000; align-items: center; justify-content: center; }
.delete-modal        { background: var(--card); border: 1px solid var(--border); border-radius: 16px; padding: 32px; max-width: 440px; width: 90%; margin: auto; }
.delete-modal h3     { color: var(--light); margin-bottom: 8px; font-size: 18px; }
.delete-modal p      { color: var(--silver); font-size: 13px; line-height: 1.6; margin-bottom: 16px; }
.delete-modal p strong { color: var(--light); }
.delete-input        { width: 100%; background: #081008; border: 1px solid var(--border); border-radius: 8px; padding: 10px 14px; color: var(--light); font-size: 14px; margin-bottom: 16px; box-sizing: border-box; }
.delete-actions      { display: flex; gap: 10px; }
.delete-cancel       { flex: 1; background: var(--border); border: none; border-radius: 8px; padding: 11px; color: var(--silver); font-size: 14px; font-weight: 600; cursor: pointer; font-family: 'DM Sans', sans-serif; }
#delete-confirm-btn  { flex: 1; background: var(--danger); border: none; border-radius: 8px; padding: 11px; color: #fff; font-size: 14px; font-weight: 600; cursor: pointer; opacity: 0.5; transition: opacity .2s; }
#delete-confirm-btn:not(:disabled) { opacity: 1; }
#delete-error        { color: var(--danger); font-size: 12px; margin-top: 10px; display: none; }

/* Empty state */
.no-biz-icon         { font-size: 52px; margin-bottom: 16px; }
.no-biz-h2           { font-family: 'Bebas Neue', sans-serif; font-size: 36px; color: var(--green); margin-bottom: 12px; }
.no-biz-p            { color: var(--muted); font-size: 15px; max-width: 380px; margin: 0 auto 28px; }
.no-biz-btn          { background: var(--green); color: var(--dark); border: none; border-radius: 10px; padding: 14px 30px; font-size: 15px; font-weight: 700; cursor: pointer; }


/* ── DASHBOARD ───────────────────────────────────────────────────
   biz- / dash- / agency- / score- prefixes are distinctive;
   no body scope needed.
   biz-bar-left removed — title is now a direct flex child of
   biz-bar with justify-content: space-between.
   ─────────────────────────────────────────────────────────── */

/* Business switcher bar — single compact row */
.biz-bar             { background: rgba(13,22,13,0.95); border-bottom: 1px solid var(--border); padding: 10px 20px; display: flex; flex-direction: row; align-items: center; gap: 12px; flex-wrap: wrap; backdrop-filter: blur(8px); }
.biz-bar-header      { display: flex; align-items: center; justify-content: space-between; }
.biz-bar-title       { font-family: 'Bebas Neue', sans-serif; font-size: 20px; letter-spacing: 2px; color: var(--green); flex-shrink: 0; }
.biz-select-row      { display: flex; align-items: center; gap: 8px; flex: 1; min-width: 0; }
/* Custom on-page business dropdown */
.biz-custom-dd          { position: relative; flex: 1; min-width: 0; }
.biz-dd-trigger         { width: 100%; background: var(--dark); border: 1px solid var(--border); border-radius: 8px; color: var(--light); font-family: 'DM Sans', sans-serif; font-size: 14px; font-weight: 600; padding: 7px 12px; cursor: pointer; display: flex; align-items: center; justify-content: space-between; gap: 8px; transition: border-color 0.2s; text-align: left; }
.biz-dd-trigger:focus-visible { outline: none; border-color: var(--green); box-shadow: 0 0 0 2px rgba(0,200,83,.25); }
.biz-dd-trigger.open,
.biz-dd-trigger:focus   { border-color: var(--green); }
.biz-dd-chevron         { color: var(--muted); font-size: 12px; transition: transform 0.2s; flex-shrink: 0; }
.biz-dd-trigger.open .biz-dd-chevron { transform: rotate(180deg); }
.biz-dd-list            { display: none; position: absolute; top: calc(100% + 4px); left: 0; right: 0; background: var(--card); border: 1px solid var(--border); border-radius: 10px; overflow: hidden; z-index: 200; box-shadow: 0 8px 24px rgba(0,0,0,0.55); }
.biz-dd-list.open       { display: block; }
.biz-dd-item            { width: 100%; background: transparent; border: none; border-bottom: 1px solid var(--border); color: var(--light); font-family: 'DM Sans', sans-serif; font-size: 14px; font-weight: 500; padding: 12px 14px; cursor: pointer; display: flex; align-items: center; justify-content: space-between; text-align: left; transition: background 0.15s; }
.biz-dd-item:last-child { border-bottom: none; }
.biz-dd-item:active,
.biz-dd-item:hover      { background: rgba(255,255,255,0.05); }
.biz-dd-item.active     { color: var(--green); }
.biz-dd-item-name       { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.biz-dd-check           { color: var(--green); font-weight: 700; font-size: 13px; flex-shrink: 0; margin-left: 8px; }
.biz-bar-right       { display: flex; align-items: center; gap: 10px; }
.biz-active          { display: flex; align-items: center; gap: 10px; cursor: pointer; background: var(--dark); border: 1px solid var(--green); border-radius: 10px; padding: 10px 14px; transition: box-shadow 0.2s, opacity 0.2s; }
.biz-active:hover    { background: #0A1A0A; }
.biz-avatar          { width: 36px; height: 36px; border-radius: 9px; background: rgba(0,200,83,0.1); border: 1px solid var(--green); display: flex; align-items: center; justify-content: center; font-size: 18px; flex-shrink: 0; }
.biz-info            { flex: 1; min-width: 0; }
.biz-name            { font-size: 15px; font-weight: 700; color: var(--light); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.biz-plan            { font-size: 10px; letter-spacing: 1px; text-transform: uppercase; color: var(--green); margin-top: 2px; }
.biz-chevron         { color: var(--muted); font-size: 12px; transition: transform 0.2s; flex-shrink: 0; }
.biz-active.open .biz-chevron { transform: rotate(180deg); }
.biz-count           { font-size: 11px; color: var(--muted); white-space: nowrap; flex-shrink: 0; }
.add-biz-btn         { background: transparent; border: 1px dashed var(--border); border-radius: 10px; color: var(--muted); height: 34px; width: 34px; display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: 16px; transition: border-color 0.2s, color 0.2s, background-color 0.2s; flex-shrink: 0; }
.add-biz-btn:hover   { border-color: var(--green); color: var(--green); }
.del-biz-btn         { background: transparent; border: 1px solid transparent; border-radius: 8px; color: var(--muted); height: 34px; width: 34px; display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: 15px; transition: border-color 0.2s, color 0.2s; flex-shrink: 0; }
.del-biz-btn:hover   { border-color: #c0392b; color: #e74c3c; background: rgba(231,76,60,0.08); }
/* Business tab strip in nav header — shown for pro/agency with 2+ businesses */
.header__biz-tabs        { display: none; align-items: center; gap: 6px; padding: 5px 20px; background: rgba(0,0,0,.3); border-top: 1px solid rgba(255,255,255,.06); flex-wrap: wrap; }
.header__biz-tab         { background: transparent; border: 1px solid rgba(255,255,255,.12); border-radius: 20px; color: var(--muted, #888); font-family: 'DM Sans', sans-serif; font-size: 12px; font-weight: 600; padding: 3px 13px; cursor: pointer; transition: border-color .15s, color .15s; white-space: nowrap; line-height: 1.6; }
.header__biz-tab:hover   { border-color: rgba(57,255,20,.4); color: var(--light, #c8dbf5); }
.header__biz-tab.active  { background: rgba(57,255,20,.1); border-color: var(--green, #39ff14); color: var(--green, #39ff14); cursor: default; }
/* Business tab strip — replaces dropdown when 2+ businesses */
.biz-tab-strip       { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 10px; }
.biz-tab-bar         { display: flex; gap: 6px; flex-wrap: wrap; flex: 1; min-width: 0; }
.biz-tab             { background: var(--dark); border: 1px solid var(--border); border-radius: 8px; color: var(--light); font-family: 'DM Sans', sans-serif; font-size: 13px; font-weight: 600; padding: 7px 14px; cursor: pointer; transition: border-color 0.15s, background 0.15s; white-space: nowrap; max-width: 180px; overflow: hidden; text-overflow: ellipsis; }
.biz-tab:hover       { border-color: var(--silver, #aaa); }
.biz-tab.active      { background: rgba(57,255,20,.1); border-color: var(--green); color: var(--green); cursor: default; }
.biz-tab-actions     { display: flex; gap: 6px; flex-shrink: 0; }
.biz-solo-name       { font-size: 14px; font-weight: 600; color: var(--light); padding: 7px 0; display: block; }
.camp-open-btn       { display: inline-flex; align-items: center; background: rgba(0,200,83,0.1); border: 1px solid rgba(0,200,83,0.4); color: var(--green); border-radius: 8px; padding: 8px 14px; font-family: 'DM Sans', sans-serif; font-size: 13px; font-weight: 700; white-space: nowrap; cursor: pointer; transition: background 0.15s, border-color 0.15s; }
.camp-open-btn:hover { background: rgba(0,200,83,0.18); border-color: var(--green); }
.del-camp-btn        { background: transparent; border: none; color: var(--muted); cursor: pointer; font-size: 14px; padding: 2px 4px; border-radius: 4px; transition: color 0.15s; line-height: 1; }
.del-camp-btn:hover  { color: #e74c3c; }

/* Business switcher sheet */
.biz-sheet-overlay   { position: fixed; inset: 0; background: rgba(0,0,0,0.7); z-index: 200; opacity: 0; pointer-events: none; transition: opacity 0.25s; }
.biz-sheet-overlay.open { opacity: 1; pointer-events: all; }
.biz-sheet           { position: fixed; bottom: 0; left: 0; right: 0; background: var(--card); border-top: 1px solid var(--border); border-radius: 20px 20px 0 0; padding: 20px; z-index: 201; transform: translateY(100%); transition: transform 0.3s cubic-bezier(0.4,0,0.2,1); max-height: 75vh; overflow-y: auto; }
.biz-sheet.open      { transform: translateY(0); }
.sheet-handle        { width: 40px; height: 4px; background: var(--border); border-radius: 4px; margin: 0 auto 18px; }
.sheet-title         { font-family: 'Bebas Neue', sans-serif; font-size: 22px; letter-spacing: 1.5px; color: var(--light); margin-bottom: 4px; }
.sheet-sub           { font-size: 12px; color: var(--muted); margin-bottom: 16px; }

/* Business cards in sheet */
.biz-cards           { display: flex; flex-direction: column; gap: 10px; margin-bottom: 16px; }
.biz-card            { background: var(--dark); border: 1px solid var(--border); border-radius: 12px; padding: 14px; display: flex; align-items: center; gap: 12px; cursor: pointer; transition: border-color 0.2s, box-shadow 0.2s; }
.biz-card:hover      { border-color: var(--silver); }
.biz-card.active     { border-color: var(--green); background: rgba(0,200,83,0.05); }
.biz-card.active .biz-card-name::after { content: ' ✓'; color: var(--green); }
.biz-card-avatar     { width: 44px; height: 44px; border-radius: 11px; display: flex; align-items: center; justify-content: center; font-size: 22px; flex-shrink: 0; border: 1px solid var(--border); }
.avatar-green-tint { background: rgba(0,200,83,0.12); color: var(--green); border-color: var(--green); }

.biz-card-info       { flex: 1; min-width: 0; }
.biz-card-name       { font-size: 15px; font-weight: 700; color: var(--light); }
.biz-card-meta       { font-size: 11px; color: var(--muted); margin-top: 3px; }
.biz-card-status     { display: flex; flex-direction: column; align-items: flex-end; gap: 4px; flex-shrink: 0; }
.biz-score           { font-family: 'Bebas Neue', sans-serif; font-size: 22px; color: var(--green); line-height: 1; }
.biz-platforms       { font-size: 10px; color: var(--muted); letter-spacing: 0.5px; }

/* Add new business card */
.add-biz-card        { background: transparent; border: 1px dashed var(--border); border-radius: 12px; padding: 16px; display: flex; align-items: center; gap: 12px; cursor: pointer; transition: border-color 0.2s, background-color 0.2s; }
.add-biz-card:hover  { border-color: var(--green); }
.add-biz-icon        { width: 44px; height: 44px; border-radius: 11px; background: rgba(0,200,83,0.06); border: 1px dashed var(--green); display: flex; align-items: center; justify-content: center; font-size: 22px; flex-shrink: 0; }
.add-biz-info        { flex: 1; min-width: 0; }
.add-biz-text        { font-size: 14px; font-weight: 600; color: var(--silver); }
.add-biz-sub         { font-size: 11px; color: var(--muted); margin-top: 2px; }

/* Agency limit bar — compact inline strip in biz-bar */
.agency-bar          { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.agency-usage-text   { font-size: 11px; color: var(--muted); white-space: nowrap; }
.agency-pips         { display: flex; gap: 3px; }
.pip                 { width: 10px; height: 10px; border-radius: 2px; background: var(--border); }
.pip.used            { background: var(--green); }
.pip.active-pip      { background: var(--green); box-shadow: 0 0 5px var(--green); }

/* Dashboard layout */
.dash-hero           { display: grid; grid-template-columns: 1fr 2fr; gap: 16px; margin-bottom: 16px; }
.dash-stack          { margin-top: 16px; display: flex; flex-direction: column; gap: 16px; }
#tasks               { margin-top: 16px; }

/* Visibility score */
.score-wrap          { display: flex; align-items: center; gap: 18px; }
.score-ring          { width: 122px; height: 122px; border-radius: 50%; background: conic-gradient(var(--green) 0 0%, var(--border) 0% 100%); display: flex; align-items: center; justify-content: center; position: relative; flex-shrink: 0; }
.score-ring::after   { content: ''; position: absolute; inset: 10px; background: var(--card); border-radius: 50%; }
.score-number        { position: relative; z-index: 2; font-family: 'Bebas Neue', sans-serif; font-size: 42px; color: var(--green); }
.score-meta h3       { font-size: 18px; margin-bottom: 6px; }
.score-meta p        { font-size: 13px; color: var(--muted); line-height: 1.5; }

/* Responsive */
@media (max-width: 599px) {
  .mobile-nav          { display: grid; }
  body.logged-in .toast{ bottom: 80px; }
  .dash-hero           { grid-template-columns: 1fr; }
  .grid                { grid-template-columns: repeat(2,1fr); }
  .biz-bar             { gap: 8px; }
  .biz-bar-title       { flex-basis: 100%; }
  .biz-select-row      { flex: 1; width: 100%; }
  .agency-bar          { width: 100%; }
  .score-wrap          { align-items: flex-start; }
  .score-ring          { width: 100px; height: 100px; }
  .score-number        { font-size: 34px; }
}
@media (max-width: 900px) {
  .two-col             { grid-template-columns: 1fr; }
}


/* ── APP PAGES — authenticated views with fixed header ──────────
   Add class="app-page" to <body> on any authenticated app page.
   ─────────────────────────────────────────────────────────── */
body.app-page .main-inner { padding-top: 10px; padding-left: var(--gutter); padding-right: var(--gutter); }
@media (max-width: 599px) {
  body.app-page .main-inner  { padding-top: 10px; padding-bottom: 20px; padding-left: var(--gutter); padding-right: var(--gutter); }
  body.app-page .page-title  { font-size: 30px; }
}


/* ── CONTENT WIDTH UTILITIES ────────────────────────────────────
   Apply to main / .main-inner instead of per-page max-width styles.
   max-width only at ≥600px so mobile is always full-width/stackable.
   ─────────────────────────────────────────────────────────── */
.w-narrow,
.w-mid,
.w-form,
.w-wide,
.w-xl                { width: 100%; margin-left: auto; margin-right: auto; }
@media (min-width: 600px) {
  .w-narrow          { max-width: 560px; }
  .w-mid             { max-width: 600px; }
  .w-form            { max-width: 700px; }
  .w-wide            { max-width: 1100px; }
  .w-xl              { max-width: 1180px; }
}


/* ── PAGE-LEVEL PATTERNS ─────────────────────────────────────────
   Reusable across any authenticated app page with a content area.
   ─────────────────────────────────────────────────────────── */

/* Textarea — dark surface, readable line-height, muted placeholder */
textarea                 { background: #081008; line-height: 1.6; }
textarea::placeholder    { color: var(--muted); }
textarea.big             { min-height: 140px; }

/* Page-level loading state (32px spinner, centered) */
.page-loading            { text-align: center; padding: 60px 20px; color: var(--muted); font-size: 14px; }
.spinner-lg              { width: 32px; height: 32px; border: 3px solid var(--border); border-top-color: var(--green); border-radius: 50%; animation: spin 0.8s linear infinite; margin: 0 auto 16px; }


/* ── FORM CONTROL BASE ─────────────────────────────────────────
   .form-control  = single-line text / select base shared across all pages.
   .form-textarea = multi-line base.
   Page-specific selectors override geometry/colour on top of these.
   ─────────────────────────────────────────────────────────── */
.form-control            { width: 100%; background: var(--card); border: 1px solid var(--border); border-radius: 8px; color: var(--light); padding: 10px 12px; font-family: 'DM Sans', sans-serif; font-size: 14px; transition: border-color .15s; box-sizing: border-box; }
.form-control:focus-visible { outline: none; border-color: var(--green); box-shadow: 0 0 0 2px rgba(0,200,83,.2); }
.form-control:focus      { border-color: var(--green); }
.form-textarea           { width: 100%; background: var(--card); border: 1px solid var(--border); border-radius: 8px; color: var(--light); padding: 12px; font-family: 'DM Sans', sans-serif; font-size: 14px; transition: border-color .15s; resize: vertical; line-height: 1.6; box-sizing: border-box; }
.form-textarea:focus-visible { outline: none; border-color: var(--green); box-shadow: 0 0 0 2px rgba(0,200,83,.2); }
.form-textarea:focus     { border-color: var(--green); }
.form-control::placeholder,
.form-textarea::placeholder { color: var(--muted); }


/* Page heading */
.page-title              { font-family: 'Bebas Neue', sans-serif; font-size: 38px; letter-spacing: 2px; color: var(--light); margin-bottom: 6px; }
.page-title span         { color: var(--green); }
.page-sub                { color: var(--muted); font-size: 15px; line-height: 1.7; margin-bottom: 32px; max-width: 560px; }
.page-sub strong         { color: var(--silver); }

/* Form section labels */
.section-label           { font-size: 12px; letter-spacing: 1.5px; text-transform: uppercase; color: var(--green); font-weight: 700; margin-bottom: 6px; }
.section-hint            { font-size: 13px; color: var(--muted); margin-bottom: 12px; line-height: 1.55; }

/* Character counter */
.char-count              { font-size: 11px; color: var(--muted); text-align: right; margin-top: 4px; }

/* Save row — button + inline status */
.save-row                { display: flex; align-items: center; gap: 16px; margin-top: 8px; }
.save-status             { font-size: 13px; color: var(--muted); }
.save-status.ok          { color: var(--green); }
.save-status.err         { color: var(--danger); }

/* .btn-lg is now part of the canonical button system above */

/* AI badge */
.ai-badge                { display: inline-flex; align-items: center; gap: 6px; background: rgba(0,200,83,.08); border: 1px solid rgba(0,200,83,.25); border-radius: 999px; padding: 5px 12px; font-size: 11px; color: var(--green); font-weight: 700; letter-spacing: .5px; margin-bottom: 24px; }


/* ── CONNECTED PAGE ──────────────────────────────────────────────
   body.connected-page — OAuth return landing (success + error).
   ─────────────────────────────────────────────────────────── */

/* Hero block */
body.connected-page .hero { text-align: center; }
.hero-icon               { width: 80px; height: 80px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 36px; margin: 0 auto 20px; animation: pop 0.5s cubic-bezier(0.34,1.56,0.64,1) both; }
.hero-icon.icon-danger   { background: rgba(255,68,68,0.12); }
.hero-badge              { display: inline-block; font-size: 10px; letter-spacing: 2.5px; text-transform: uppercase; font-weight: 700; padding: 4px 12px; border-radius: 20px; margin-bottom: 14px; background: rgba(0,200,83,0.12); color: var(--green); }
.hero-badge.badge-danger-soft { background: rgba(255,68,68,0.1); color: var(--danger); }
.hero-title              { font-family: 'Bebas Neue', sans-serif; font-size: 48px; letter-spacing: 1px; line-height: 1; color: var(--light); margin-bottom: 10px; }
.hero-title span         { color: var(--green); }
.hero-sub                { font-size: 15px; color: var(--muted); line-height: 1.6; max-width: 400px; margin: 0 auto; }

/* Connected account card */
.account-card            { background: var(--card); border: 1px solid rgba(0,200,83,0.3); border-radius: 16px; padding: 20px 24px; margin-bottom: 24px; display: flex; align-items: center; gap: 16px; }
.account-icon            { width: 52px; height: 52px; border-radius: 14px; display: flex; align-items: center; justify-content: center; font-size: 24px; font-weight: 700; font-family: 'Bebas Neue', sans-serif; flex-shrink: 0; }
.account-info            { flex: 1; min-width: 0; }
.account-platform        { font-size: 11px; text-transform: uppercase; letter-spacing: 1.5px; font-weight: 700; color: var(--silver); margin-bottom: 3px; }
.account-name            { font-size: 16px; font-weight: 700; color: var(--light); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.account-detail          { font-size: 12px; color: var(--muted); margin-top: 3px; }
.account-check           { color: var(--green); font-size: 22px; flex-shrink: 0; }

/* Instagram auto-link pill */
.ig-pill                 { display: flex; align-items: center; gap: 10px; background: rgba(225,48,108,0.07); border: 1px solid rgba(225,48,108,0.2); border-radius: 12px; padding: 12px 16px; margin-bottom: 24px; }
.ig-pill-icon            { font-size: 20px; flex-shrink: 0; }
.ig-pill-text            { font-size: 13px; color: var(--light); line-height: 1.4; }
.ig-pill-text strong     { color: #E1306C; }
.ig-pill-badge           { font-size: 10px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; padding: 3px 8px; border-radius: 20px; background: rgba(225,48,108,0.15); color: #E1306C; white-space: nowrap; flex-shrink: 0; }
.ig-pill-warn            { background: rgba(100,100,100,0.07); border-color: var(--border); }
.ig-pill-warn .ig-pill-text { color: var(--muted); }
.ig-badge-warn           { background: var(--border); color: var(--silver); }

/* What happens next */
.next-section            { margin-bottom: 28px; }
/* margin-bottom: 14px overrides the global 6px; body-scope needed — utility class loses to .section-label at equal specificity */
body.connected-page .section-label { font-size: 12px; letter-spacing: 1.5px; color: var(--silver); margin-bottom: 14px; }
.step-list               { display: flex; flex-direction: column; gap: 10px; }
.step-row                { display: flex; align-items: flex-start; gap: 14px; background: var(--card); border: 1px solid var(--border); border-radius: 14px; padding: 14px 16px; }
.step-num                { width: 28px; height: 28px; border-radius: 50%; background: rgba(0,200,83,0.12); border: 1px solid rgba(0,200,83,0.25); color: var(--green); font-size: 13px; font-weight: 700; display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-top: 1px; }
.step-title              { font-size: 14px; font-weight: 700; color: var(--light); margin-bottom: 2px; }
.step-desc               { font-size: 13px; color: var(--muted); line-height: 1.5; }

/* CTA group — full-width stacked buttons */
.cta-group               { display: flex; flex-direction: column; gap: 10px; margin-bottom: 20px; }
body.connected-page .btn-primary   { display: block; width: 100%; padding: 15px 24px; border: none; font-size: 15px; font-weight: 700; text-align: center; }
body.connected-page .btn-secondary { display: block; width: 100%; padding: 13px 24px; background: transparent; color: var(--silver); border: 1px solid var(--border); font-size: 14px; font-weight: 600; text-align: center; }
body.connected-page .btn-secondary:hover { border-color: var(--silver); color: var(--light); }
/* ── Step accordion body ── */
body.connected-page .step-body { padding: 14px 16px 16px; font-size: 13px; color: var(--muted); line-height: 1.6; border-top: 1px solid var(--border); }

/* ── Modal choice panels ── */
body.connected-page .modal-choice-body { padding: 14px 20px; font-size: 14px; color: var(--light); line-height: 1.6; }


/* Error state */
.error-card              { background: rgba(255,68,68,0.06); border: 1px solid rgba(255,68,68,0.25); border-radius: 16px; padding: 20px 24px; margin-bottom: 24px; }
.error-title             { font-size: 15px; font-weight: 700; color: var(--danger); margin-bottom: 6px; }
.error-desc              { font-size: 13px; color: var(--muted); line-height: 1.6; margin-bottom: 14px; }
.btn-retry               { display: inline-flex; align-items: center; padding: 10px 20px; background: transparent; color: var(--danger); border: 1px solid var(--danger); font-size: 13px; font-weight: 700; }
.btn-retry:hover         { background: rgba(255,68,68,0.1); }


/* ── FULL-WIDTH BLOCK BUTTONS — CTA rows at bottom of app pages ─
   .dash-btn = primary green; .dash-btn-outline = ghost; .dash-btn-ghost = card+green border
   font-family / cursor / transition / border-radius inherited from shared base above
   ─────────────────────────────────────────────────────────── */
.dash-btn            { display: block; width: 100%; padding: 15px; background: var(--green); color: var(--dark); border: none; font-size: 16px; font-weight: 700; text-align: center; margin-bottom: 12px; }
.dash-btn:hover      { background: var(--green2); transform: translateY(-1px); }
.dash-btn-outline    { display: block; width: 100%; padding: 14px; background: transparent; color: var(--silver); border: 1px solid var(--border); font-size: 14px; font-weight: 600; text-align: center; margin-bottom: 12px; }
.dash-btn-outline:hover { border-color: var(--silver); color: var(--light); }
.dash-btn-ghost      { background: var(--card); color: var(--green); border: 1px solid var(--green); }
.dash-btn-ghost:hover{ background: rgba(0,200,83,0.08); }


/* ── STATUS PILL / STATUS BADGE — same pill shape; two naming contexts ──
   .status-badge: Connect page (static markup) + pill-* modifier family
   .status-pill:  Publishing-Status page (JS-rendered rows) + badge-* modifier family
   ─────────────────────────────────────────────────────────── */
.status-badge,
.status-pill         { font-size: 10px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; padding: 4px 10px; border-radius: 20px; white-space: nowrap; flex-shrink: 0; }
.pill-live           { background: rgba(0,200,83,0.12);   color: var(--green); }
.pill-manual         { background: rgba(255,167,38,0.12); color: var(--warn); }
.pill-running        { background: rgba(84,168,255,0.12); color: var(--blue); }
.pill-failed         { background: rgba(255,68,68,0.12);  color: var(--danger); }
.pill-pending        { background: rgba(122,184,122,0.1); color: var(--silver); }

/* Additional .badge-* colour variants */
.badge-running       { background: rgba(84,168,255,0.12); color: var(--blue); }
.badge-pending       { background: rgba(122,184,122,0.1); color: var(--silver); }

/* Empty state message */
.empty-state-msg     { text-align: center; padding: 30px 0; font-size: 14px; color: var(--muted); line-height: 1.6; }


/* ── PLATFORM ICON COLOURS — used on Connect & Listing-Preview ──
   Combine with a base sizing class (.platform-icon or similar).
   ─────────────────────────────────────────────────────────── */
.pi-google               { background: rgba(66,133,244,0.1);   color: #4285F4; }
.pi-fb                   { background: rgba(24,119,242,0.1);   color: #1877F2; }
.pi-ig                   { background: rgba(225,48,108,0.1);   color: #E1306C; }
.pi-bing                 { background: rgba(0,128,157,0.1);    color: #00809D; }
.pi-apple                { background: rgba(85,85,85,0.15);    color: #999; }
.pi-nd                   { background: rgba(0,178,70,0.1);     color: #00B246; }
.pi-cl                   { background: rgba(107,0,215,0.1);    color: #6B00D7; }
.pi-fbm                  { background: rgba(0,130,251,0.1);    color: #0082FB; }
.pi-yelp                 { background: rgba(211,35,35,0.1);    color: #D32323; }
.pi-default              { background: rgba(100,100,100,0.1);  color: var(--silver); }


/* ── PAGE EYEBROW — small all-caps label above headings ─────── */
.page-eyebrow            { font-size: 11px; letter-spacing: 2px; text-transform: uppercase; color: var(--silver); font-weight: 700; margin-bottom: 8px; }


/* ── STATUS BADGE colour modifiers — .badge--* canonical aliases; old names kept as aliases ── */
.badge-live,   .badge--live    { background: rgba(0,200,83,0.12);    color: var(--green); }
.badge-error,  .badge--error   { background: rgba(255,68,68,0.12);   color: var(--danger); }
.badge-manual, .badge--manual  { background: rgba(122,184,122,0.1);  color: var(--silver); }
.badge-none,   .badge--muted   { background: rgba(88,112,88,0.15);   color: var(--muted); }
.badge--warn                   { background: rgba(255,167,38,0.12);  color: var(--warn); }


/* ── MODAL SHELL — bottom-sheet overlay used on Connect ─────── */
.modal-overlay           { position: fixed; inset: 0; background: rgba(0,0,0,0.7); z-index: 100; display: flex; align-items: flex-end; justify-content: center; opacity: 0; pointer-events: none; transition: opacity 0.25s; }
.modal-overlay.open      { opacity: 1; pointer-events: all; }
.modal-sheet             { background: #0D160D; border: 1px solid var(--border); border-radius: 22px 22px 0 0; width: 100%; max-width: 560px; padding: 28px 24px 36px; transform: translateY(40px); transition: transform 0.3s cubic-bezier(0.34,1.2,0.64,1); }
.modal-overlay.open .modal-sheet { transform: translateY(0); }
.modal-handle            { width: 36px; height: 4px; background: var(--border); border-radius: 4px; margin: 0 auto 22px; }


/* ── DIVIDER WITH LABEL — horizontal rule with centred text ─── */
.divider                 { font-size: 10px; letter-spacing: 2px; text-transform: uppercase; color: var(--muted); font-weight: 700; margin: 24px 0 12px; display: flex; align-items: center; gap: 10px; }
.divider::before,
.divider::after          { content: ''; flex: 1; height: 1px; background: var(--border); }


/* ── CONNECT PAGE ────────────────────────────────────────────────
   body.connect-page — platform OAuth + manual-copy connections.
   ─────────────────────────────────────────────────────────── */
body.connect-page        { padding-bottom: 40px; }
body.connect-page .page-title  { font-size: 42px; line-height: 1; }
body.connect-page .section-label { color: var(--silver); margin: 0 0 10px; }

/* Explainer drawer */
.explainer               { display: none; background: rgba(0,200,83,0.04); border: 1px solid rgba(0,200,83,0.18); border-radius: 14px; padding: 18px 20px; margin-top: -4px; margin-bottom: 12px; }
.explainer.open          { display: block; }
.explainer-title         { font-size: 12px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--green); margin-bottom: 12px; }
.explainer-steps         { display: flex; flex-direction: column; gap: 8px; margin-bottom: 14px; }
.explainer-step          { display: flex; align-items: flex-start; gap: 10px; font-size: 13px; color: var(--muted); line-height: 1.5; }
.explainer-step-num      { width: 22px; height: 22px; border-radius: 50%; background: rgba(0,200,83,0.12); color: var(--green); font-size: 11px; font-weight: 700; display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-top: 1px; }
.explainer-note          { font-size: 12px; color: var(--muted); background: rgba(84,168,255,0.06); border: 1px solid rgba(84,168,255,0.15); border-radius: 8px; padding: 10px 12px; line-height: 1.5; }
.explainer-note strong   { color: var(--blue); }
.btn-proceed             { width: 100%; padding: 11px 18px; background: var(--green); color: var(--dark); border: none; font-size: 14px; font-weight: 700; margin-top: 12px; display: block; text-align: center; }
.btn-proceed:hover       { background: var(--green2); transform: translateY(-1px); }
/* Facebook Page creation CTA (inherits .btn-proceed, adds letter-spacing) */
.btn-create-page { letter-spacing: 0.3px; }


/* Facebook gate modal content */
.modal-title             { font-family: 'Bebas Neue', sans-serif; font-size: 28px; letter-spacing: 1px; color: var(--light); margin-bottom: 6px; }
.modal-sub               { font-size: 14px; color: var(--muted); line-height: 1.6; margin-bottom: 22px; }
.modal-choice-group      { display: flex; flex-direction: column; gap: 10px; margin-bottom: 20px; }
.modal-choice            { background: var(--card); border: 1px solid var(--border); border-radius: 14px; padding: 16px 18px; cursor: pointer; display: flex; align-items: flex-start; gap: 14px; transition: border-color 0.2s; }
.modal-choice:hover      { border-color: var(--silver); }
.modal-choice-icon       { font-size: 22px; flex-shrink: 0; margin-top: 1px; }
.modal-choice-title      { font-size: 14px; font-weight: 700; color: var(--light); margin-bottom: 2px; }
.modal-choice-desc       { font-size: 12px; color: var(--muted); line-height: 1.5; }
.modal-choice.yes        { border-color: rgba(0,200,83,0.3); }
.modal-choice.yes:hover  { border-color: var(--green); }
.no-page-guide           { display: none; }
.no-page-guide.open      { display: block; }
.guide-steps             { display: flex; flex-direction: column; gap: 10px; margin-bottom: 18px; }
.guide-step              { display: flex; gap: 12px; background: rgba(255,167,38,0.04); border: 1px solid rgba(255,167,38,0.15); border-radius: 12px; padding: 12px 14px; }
.guide-step-num          { width: 26px; height: 26px; border-radius: 50%; background: rgba(255,167,38,0.15); color: var(--warn); font-size: 12px; font-weight: 700; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.guide-step-body         { font-size: 13px; color: var(--light); line-height: 1.5; }
.guide-step-body a       { color: var(--warn); font-weight: 600; text-decoration: none; }
.guide-step-body a:hover { text-decoration: underline; }
.guide-step-body strong  { color: var(--warn); }
.guide-note              { font-size: 12px; color: var(--muted); text-align: center; margin-bottom: 4px; }
.btn-cancel-modal        { width: 100%; padding: 11px; background: transparent; color: var(--muted); border: 1px solid var(--border); font-size: 13px; font-weight: 600; }
.btn-cancel-modal:hover  { color: var(--light); border-color: var(--silver); }

/* Platform cards */
.platform-card           { background: var(--card); border: 1px solid var(--border); border-radius: 16px; padding: 18px 20px; margin-bottom: 10px; display: flex; align-items: center; gap: 16px; transition: border-color 0.2s; }
.platform-card.connected { border-color: rgba(0,200,83,0.3); }
.platform-card.error     { border-color: rgba(255,68,68,0.3); }
.platform-card .platform-icon { width: 48px; height: 48px; border-radius: 12px; display: flex; align-items: center; justify-content: center; font-size: 22px; font-family: 'Bebas Neue', sans-serif; font-weight: 700; flex-shrink: 0; }
.platform-info           { flex: 1; min-width: 0; }
.platform-name           { font-size: 15px; font-weight: 700; color: var(--light); }
.platform-mode           { font-size: 12px; text-transform: uppercase; letter-spacing: 1px; color: var(--muted); margin-top: 2px; font-weight: 600; }
.platform-status         { font-size: 13px; color: var(--muted); margin-top: 4px; }
.platform-actions        { display: flex; flex-direction: column; gap: 6px; flex-shrink: 0; align-items: flex-end; max-width: 140px; }
.btn-connect             { padding: 9px 18px; background: var(--green); color: var(--dark); border: none; font-size: 13px; font-weight: 700; white-space: nowrap; }
.btn-connect:hover       { background: var(--green2); transform: translateY(-1px); }
.btn-reconnect           { padding: 9px 18px; background: transparent; color: var(--warn); border: 1px solid var(--warn); font-size: 13px; font-weight: 700; white-space: nowrap; }
.btn-reconnect:hover     { background: rgba(255,167,38,0.1); }
.btn-disconnect          { padding: 6px 12px; background: transparent; color: var(--muted); border: 1px solid var(--border); font-size: 11px; font-weight: 600; white-space: nowrap; }
.btn-disconnect:hover    { border-color: var(--danger); color: var(--danger); }

/* Manual (copy-ready) cards */
.manual-card             { background: rgba(13,22,13,0.5); border: 1px solid var(--border); border-radius: 16px; padding: 18px 20px; margin-bottom: 10px; display: flex; align-items: center; gap: 16px; }
.manual-instructions     { font-size: 12px; color: var(--muted); margin-top: 4px; line-height: 1.55; }
.manual-link             { color: var(--silver); text-decoration: none; font-weight: 600; }
.manual-link:hover       { color: var(--green); }

/* Setup note (info box) */
.setup-note              { background: rgba(84,168,255,0.06); border: 1px solid rgba(84,168,255,0.2); border-radius: 12px; padding: 16px; margin-top: 10px; margin-bottom: 20px; font-size: 13px; color: var(--blue); line-height: 1.6; }
.setup-note strong       { display: block; margin-bottom: 4px; font-weight: 700; }

/* Info card (bottom CTA) */
.info-card               { background: rgba(0,200,83,0.05); border: 1px solid rgba(0,200,83,0.2); border-radius: 16px; padding: 20px; margin-top: 28px; }
.info-card-title         { font-family: 'Bebas Neue', sans-serif; font-size: 20px; letter-spacing: 1px; color: var(--green); margin-bottom: 8px; }
.info-card p             { font-size: 13px; color: var(--muted); line-height: 1.6; margin-bottom: 14px; }


/* ══════════════════════════════════════════════════════════════
   PUBLISHING STATUS PAGE  (body.publishing-page)
══════════════════════════════════════════════════════════════ */

/* margin-bottom: 24px overrides the global 32px; body-scope needed — utility class loses to .page-sub at equal specificity */
body.publishing-page .page-sub       { font-size: 14px; color: var(--muted); margin-bottom: 24px; line-height: 1.5; }

/* Progress card */
body.publishing-page .progress-card  { background: var(--card); border: 1px solid var(--border); border-radius: 16px; padding: 20px; }
body.publishing-page .progress-header{ display: flex; align-items: center; justify-content: space-between; }
body.publishing-page .progress-label { font-size: 11px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--muted); }
body.publishing-page .progress-count { font-family: 'Bebas Neue', sans-serif; font-size: 28px; color: var(--green); }
body.publishing-page .progress-track { height: 6px; background: var(--border); border-radius: 6px; overflow: hidden; }
body.publishing-page .progress-bar   { height: 100%; width: 0; background: linear-gradient(90deg, var(--green), #00FF88); border-radius: 6px; transition: width 0.8s cubic-bezier(0.4,0,0.2,1); }

/* Platform list rows */
.platform-list                        { display: flex; flex-direction: column; gap: 10px; }
body.publishing-page .platform-row    { display: flex; align-items: center; gap: 12px; padding: 12px 14px; background: var(--dark); border: 1px solid var(--border); border-radius: 12px; transition: border-color 0.2s; }
body.publishing-page .platform-row.status-live    { border-color: rgba(0,200,83,0.25); }
body.publishing-page .platform-row.status-manual  { border-color: rgba(255,167,38,0.25); }
body.publishing-page .platform-row.status-running { border-color: rgba(84,168,255,0.25); }
body.publishing-page .platform-row.status-failed  { border-color: rgba(255,68,68,0.25); }
body.publishing-page .platform-icon   { width: 36px; height: 36px; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 16px; font-weight: 700; flex-shrink: 0; font-family: 'Bebas Neue', sans-serif; }
body.publishing-page .platform-info   { flex: 1; min-width: 0; }
body.publishing-page .platform-name   { font-size: 14px; font-weight: 600; color: var(--light); }
body.publishing-page .platform-msg    { font-size: 12px; color: var(--muted); margin-top: 2px; line-height: 1.4; }

/* Action card */
.action-card                          { background: var(--card); border: 1px solid rgba(255,167,38,0.3); border-radius: 16px; padding: 20px; margin-bottom: 16px; }
.action-card-title                    { font-family: 'Bebas Neue', sans-serif; font-size: 20px; letter-spacing: 1px; color: var(--warn); margin-bottom: 16px; display: flex; align-items: center; gap: 8px; }
.action-item                          { border-top: 1px solid var(--border); padding: 14px 0; }
.action-item:first-of-type            { border-top: none; padding-top: 0; }
.action-platform                      { font-size: 14px; font-weight: 600; color: var(--light); margin-bottom: 4px; }
.action-desc                          { font-size: 12px; color: var(--muted); margin-bottom: 10px; line-height: 1.5; }
.action-btns                          { display: flex; gap: 8px; flex-wrap: wrap; }
.btn-copy                             { padding: 8px 14px; background: var(--green); color: var(--dark); border: none; font-size: 12px; font-weight: 700; }
.btn-copy:hover                       { background: var(--green2); }
.btn-instructions                     { padding: 8px 14px; background: transparent; color: var(--silver); border: 1px solid var(--border); font-size: 12px; font-weight: 600; }
.btn-instructions:hover               { border-color: var(--silver); }

/* Stat card */
.stat-card                            { background: var(--card); border: 1px solid var(--border); border-radius: 16px; padding: 20px; margin-bottom: 16px; display: flex; align-items: center; gap: 16px; }
.stat-card .stat-num                  { font-family: 'Bebas Neue', sans-serif; font-size: 48px; color: var(--green); line-height: 1; flex-shrink: 0; }
.stat-card .stat-label                { font-size: 13px; color: var(--muted); line-height: 1.5; }
.stat-card .stat-label strong         { display: block; font-size: 16px; color: var(--light); font-weight: 600; margin-bottom: 2px; }


/* ══════════════════════════════════════════════════════════════
   LISTING PREVIEW PAGE  (body.listing-preview-page)
══════════════════════════════════════════════════════════════ */

/* 900px breakpoint — two-col layout collapses earlier than standard 599px */
@media (max-width: 900px) {
  body.listing-preview-page .main-inner { padding-top: 56px; }
  body.listing-preview-page .big-title  { font-size: 36px; }
  body.listing-preview-page .stepper   { grid-template-columns: repeat(2, 1fr); }
  body.listing-preview-page .checks    { grid-template-columns: 1fr; }
  body.listing-preview-page .approval-inner { align-items: stretch; flex-direction: column; }
  body.listing-preview-page .approval-inner .btn-row { margin-top: 0; }
  body.listing-preview-page .approval-inner .btn     { flex: 1; }
  body.listing-preview-page .draft-head { align-items: flex-start; flex-direction: column; }
}

/* ══ Publish page — moved here out of the page's inline <style> block ══════
   Every rule below is scoped to body.listing-preview-page: these class names
   (.pub-*, .manual-*, .sched-*, .clear-btn, .section-mt) are used only by this
   page, and scoping keeps them from leaking into any page that later reuses a
   generic name. */

/* Page layout */
body.listing-preview-page .pub-page-eyebrow { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.8px; color: var(--muted); margin-bottom: 8px; }
body.listing-preview-page .pub-hero            { padding: 20px 18px 18px; }
body.listing-preview-page .pub-hero .big-title { font-size: clamp(26px, 6vw, 36px); line-height: 1.15; margin: 0 0 8px; }
body.listing-preview-page .pub-hero .sub       { font-size: 14px; color: var(--muted); margin: 0; }
body.listing-preview-page .section-mt          { margin-top: 16px; }

/* Summary grid */
body.listing-preview-page .pub-summary-grid { display: flex; flex-direction: column; gap: 8px; }
body.listing-preview-page .pub-row          { display: flex; align-items: baseline; gap: 10px; }
body.listing-preview-page .pub-row .label   { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.4px; color: var(--muted); flex-shrink: 0; min-width: 72px; }
body.listing-preview-page .pub-row .val     { font-size: 14px; color: var(--light); word-break: break-word; }

/* Platform list rows */
body.listing-preview-page .pub-plat-row       { display: flex; align-items: center; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--border); }
body.listing-preview-page .pub-plat-row:last-child { border-bottom: none; padding-bottom: 0; }
body.listing-preview-page .pub-plat-icon      { width: 34px; height: 34px; border-radius: 9px; display: flex; align-items: center; justify-content: center; font-size: 17px; flex-shrink: 0; background: rgba(255,255,255,0.06); }
body.listing-preview-page .pub-plat-info      { flex: 1; min-width: 0; }
body.listing-preview-page .pub-plat-name      { font-size: 14px; font-weight: 600; color: var(--light); }
body.listing-preview-page .pub-plat-type      { font-size: 11px; color: var(--muted); margin-top: 1px; }

/* Copy button */
body.listing-preview-page .pub-copy-btn         { margin-top: 10px; font-size: 13px; font-weight: 700; padding: 9px 16px; border-radius: 9px; border: 1px solid var(--border); background: transparent; color: var(--light); cursor: pointer; font-family: inherit; }
body.listing-preview-page .pub-copy-btn:active  { opacity: 0.7; }

/* Schedule */
body.listing-preview-page .pub-sched-grid     { display: grid; grid-template-columns: 1fr; gap: 12px; }
body.listing-preview-page .sched-input        { width: 100%; padding: 10px 12px; background: var(--input-bg, #111); border: 1px solid var(--border); border-radius: 9px; color: var(--light); font-size: 14px; font-family: inherit; box-sizing: border-box; }
body.listing-preview-page .sched-input:focus  { outline: none; border-color: var(--green); }
body.listing-preview-page .sched-status-text  { font-size: 13px; color: var(--muted); margin-left: 8px; }
body.listing-preview-page .sched-saved        { font-size: 13px; color: var(--text); background: rgba(var(--green-rgb), 0.06); border: 1px solid rgba(var(--green-rgb), 0.2); border-radius: 9px; padding: 10px 12px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
body.listing-preview-page .clear-btn          { font-size: 12px; padding: 4px 10px; border-radius: 6px; border: 1px solid var(--border); background: transparent; color: var(--muted); cursor: pointer; font-family: inherit; flex-shrink: 0; }

/* Publish action */
body.listing-preview-page .pub-action-card        { text-align: center; }
body.listing-preview-page .pub-publish-btn        { width: 100%; max-width: 340px; padding: 16px; font-size: 16px; font-weight: 700; letter-spacing: 0.3px; border-radius: 14px; border: none; background: var(--green); color: #000; cursor: pointer; font-family: inherit; transition: opacity 0.15s; }
body.listing-preview-page .pub-publish-btn:active { opacity: 0.8; }
body.listing-preview-page .pub-publish-btn:disabled { opacity: 0.45; cursor: default; }
body.listing-preview-page .pub-warn               { background: rgba(255,168,0,0.08); border: 1px solid rgba(255,168,0,0.3); border-radius: 10px; padding: 12px 14px; font-size: 13px; color: var(--warn, #ffa800); margin-top: 14px; text-align: left; }

/* Copy-paste panel */
body.listing-preview-page .manual-card            { border: 1px solid var(--border); border-radius: 12px; padding: 14px; margin-bottom: 12px; }
body.listing-preview-page .manual-card:last-child { margin-bottom: 0; }
body.listing-preview-page .manual-card-header     { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
body.listing-preview-page .manual-icon            { width: 32px; height: 32px; border-radius: 8px; background: rgba(255,255,255,0.06); display: flex; align-items: center; justify-content: center; font-size: 15px; flex-shrink: 0; margin-right: 10px; }
body.listing-preview-page .manual-name            { font-size: 14px; font-weight: 600; color: var(--light); }
body.listing-preview-page .manual-mode            { font-size: 11px; color: var(--muted); margin-top: 1px; }
body.listing-preview-page .manual-textarea        { width: 100%; min-height: 110px; background: rgba(255,255,255,0.04); border: 1px solid var(--border); border-radius: 9px; padding: 10px 12px; font-size: 13px; color: var(--text); line-height: 1.6; resize: vertical; font-family: inherit; box-sizing: border-box; }
body.listing-preview-page .manual-note            { font-size: 12px; color: var(--muted); line-height: 1.5; }
body.listing-preview-page .copy-platform-btn        { font-size: 12px; font-weight: 700; padding: 7px 12px; border-radius: 8px; border: 1px solid var(--border); background: transparent; color: var(--light); cursor: pointer; font-family: inherit; flex-shrink: 0; }
body.listing-preview-page .copy-platform-btn:active { opacity: 0.7; }

/* Photo strip (copy-paste panel) */
body.listing-preview-page .pub-photos        { margin-top: 12px; }
body.listing-preview-page .pub-photos-label  { font-size: 12px; font-weight: 700; color: var(--muted); margin-bottom: 6px; }
body.listing-preview-page .pub-photo-strip   { display: flex; gap: 8px; flex-wrap: wrap; }
body.listing-preview-page .pub-photo         { display: block; width: 74px; height: 74px; border-radius: 9px; overflow: hidden; border: 1px solid var(--border); position: relative; text-decoration: none; }
body.listing-preview-page .pub-photo img     { width: 100%; height: 100%; object-fit: cover; display: block; }
body.listing-preview-page .pub-photo-save    { position: absolute; left: 0; right: 0; bottom: 0; background: rgba(0,0,0,0.66); color: #fff; font-size: 10px; font-weight: 700; text-align: center; padding: 3px 0; }
body.listing-preview-page .pub-photo:active  { opacity: 0.7; }

/* Loading / no-draft state */
body.listing-preview-page .pub-no-draft        { text-align: center; padding: 32px 16px; color: var(--muted); font-size: 14px; }
body.listing-preview-page .pub-no-draft strong { display: block; color: var(--light); font-size: 16px; margin-bottom: 8px; }

/* ── Two-column layout + sticky preview rail ──────────────────────────────
   Single column on phones, where the rail is ordered FIRST so the owner sees
   what they are publishing before the supporting detail. From 900px up it
   becomes a sticky right-hand rail beside the flow. */
body.listing-preview-page .pub-layout   { display: grid; grid-template-columns: 1fr; gap: 24px; align-items: start; }
body.listing-preview-page .pub-rail-col { order: -1; }
body.listing-preview-page .pub-flow     { min-width: 0; }

@media (min-width: 900px) {
  /* body and .main both set overflow-x:hidden globally, which makes each of them
     a scroll container — position:sticky then resolves against that container
     instead of the viewport and the rail simply scrolls away. `clip` gives the
     identical horizontal-overflow protection WITHOUT creating a scroll container. */
  body.listing-preview-page       { overflow-x: clip; }
  body.listing-preview-page .main { overflow-x: clip; }

  body.listing-preview-page .pub-layout   { grid-template-columns: minmax(0, 1.55fr) minmax(320px, 1fr); gap: 20px; }
  body.listing-preview-page .pub-rail-col { order: 0; position: sticky; top: calc(var(--main-offset, 77px) + 16px); }
  /* The rail must be SHORTER than the viewport or sticky is pointless: a card
     taller than the screen runs out of travel inside .pub-layout and scrolls
     away almost immediately. Cap it to the visible area and let it scroll
     internally instead. */
  body.listing-preview-page .pub-rail-col > .card {
    margin-top: 16px;
    max-height: calc(100dvh - var(--main-offset, 77px) - 32px);
    overflow-y: auto;
  }
}

body.listing-preview-page .pub-rail-tabs       { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 12px; }
body.listing-preview-page .pub-rail-tab        { display: flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 700; padding: 6px 10px; border-radius: 999px; border: 1px solid var(--border); background: transparent; color: var(--muted); cursor: pointer; font-family: inherit; }
body.listing-preview-page .pub-rail-tab.active { border-color: var(--green); color: var(--light); background: rgba(var(--green-rgb), 0.08); }
body.listing-preview-page .pub-rail-tab-icon   { width: 18px; height: 18px; border-radius: 5px; display: flex; align-items: center; justify-content: center; font-size: 11px; background: rgba(255,255,255,0.08); flex-shrink: 0; }

/* ── Post mock — the blast rendered the way it will appear once live ────── */
body.listing-preview-page .pub-post              { border: 1px solid var(--border); border-radius: 14px; overflow: hidden; background: rgba(255,255,255,0.02); }
body.listing-preview-page .pub-post-hdr          { display: flex; align-items: center; gap: 10px; padding: 12px 14px; }
body.listing-preview-page .pub-post-hdr-body     { min-width: 0; }
body.listing-preview-page .pub-post-avatar       { width: 34px; height: 34px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 700; background: rgba(255,255,255,0.08); color: var(--light); flex-shrink: 0; }
body.listing-preview-page .pub-post-biz          { font-size: 14px; font-weight: 700; color: var(--light); line-height: 1.2; word-break: break-word; }
body.listing-preview-page .pub-post-meta         { font-size: 11px; color: var(--muted); margin-top: 2px; }
body.listing-preview-page .pub-post-photo        { display: block; width: 100%; aspect-ratio: 4 / 3; background: rgba(255,255,255,0.04); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
body.listing-preview-page .pub-post-photo img    { width: 100%; height: 100%; object-fit: cover; display: block; }
body.listing-preview-page .pub-post-nophoto      { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: 6px; padding: 26px 18px; border-top: 1px dashed var(--border); border-bottom: 1px dashed var(--border); background: rgba(255,255,255,0.02); }
body.listing-preview-page .pub-post-nophoto-icon { font-size: 24px; opacity: 0.7; }
body.listing-preview-page .pub-post-nophoto-title{ font-size: 13px; font-weight: 700; color: var(--light); }
body.listing-preview-page .pub-post-nophoto-sub  { font-size: 12px; color: var(--muted); line-height: 1.5; max-width: 240px; }
body.listing-preview-page .pub-post-text         { font-size: 13px; color: var(--text); line-height: 1.65; padding: 12px 14px; white-space: pre-wrap; word-break: break-word; }
body.listing-preview-page .pub-post-thumbs       { display: flex; gap: 6px; flex-wrap: wrap; padding: 0 14px 12px; }
body.listing-preview-page .pub-post-thumb        { width: 46px; height: 46px; border-radius: 7px; overflow: hidden; border: 1px solid var(--border); display: block; text-decoration: none; }
body.listing-preview-page .pub-post-thumb img    { width: 100%; height: 100%; object-fit: cover; display: block; }
body.listing-preview-page .pub-post-foot         { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 14px; border-top: 1px solid var(--border); flex-wrap: wrap; }
body.listing-preview-page .pub-post-foot .pub-copy-btn { margin-top: 0; }
body.listing-preview-page .pub-post-count        { font-size: 11px; color: var(--muted); }

/* Hero copy — .big-title margin-bottom: 10px comes from global .big-title rule */
body.listing-preview-page .big-title span { color: var(--green); }
body.listing-preview-page .sub            { color: var(--muted); font-size: 15px; line-height: 1.6; max-width: 700px; }

/* Stepper */
body.listing-preview-page .stepper        { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
body.listing-preview-page .step           { background: var(--soft); border: 1px solid var(--border); border-radius: 12px; padding: 12px; }
body.listing-preview-page .step-num       { width: 26px; height: 26px; border-radius: 999px; background: var(--border); display: flex; align-items: center; justify-content: center; font-weight: 900; font-size: 12px; color: var(--silver); }
body.listing-preview-page .step.active    { border-color: var(--green); }
body.listing-preview-page .step.active .step-num { background: var(--green); color: var(--dark); }
body.listing-preview-page .step-title     { font-size: 12px; font-weight: 900; color: var(--light); }
body.listing-preview-page .step-sub       { font-size: 11px; color: var(--muted); }

/* Business summary */
body.listing-preview-page .summary-row    { background: var(--soft); border: 1px solid var(--border); border-radius: 12px; padding: 13px; }
body.listing-preview-page .label          { font-size: 12px; text-transform: uppercase; letter-spacing: 1px; color: var(--muted); font-weight: 900; }
body.listing-preview-page .value          { font-size: 14px; font-weight: 800; color: var(--light); line-height: 1.45; }

/* Platform tabs */
body.listing-preview-page .platform-tabs  { display: flex; gap: 8px; flex-wrap: wrap; }
body.listing-preview-page .tab            { border: 1px solid var(--border); background: var(--soft); color: var(--silver); border-radius: 999px; padding: 9px 12px; font-weight: 900; font-size: 12px; cursor: pointer; }
body.listing-preview-page .tab.active     { background: var(--green); border-color: var(--green); color: var(--dark); }

/* Queue rows */
body.listing-preview-page .queue-row      { background: var(--soft); border: 1px solid var(--border); border-radius: 12px; padding: 12px; display: flex; align-items: center; gap: 12px; }
body.listing-preview-page .queue-loading  { color: var(--muted); font-size: 13px; }

/* Platform icon/name override (36px on this page; global is 48px) */
body.listing-preview-page .platform-icon  { width: 36px; height: 36px; border-radius: 10px; background: var(--dark); display: flex; align-items: center; justify-content: center; font-size: 18px; color: var(--green); border: 1px solid var(--border); flex-shrink: 0; }
body.listing-preview-page .platform-name  { display: flex; align-items: center; gap: 10px; font-weight: 900; }

/* Badge */
body.listing-preview-page .badge          { font-size: 10px; text-transform: uppercase; letter-spacing: .7px; font-weight: 900; border-radius: 999px; padding: 5px 8px; white-space: nowrap; }
body.listing-preview-page .badge.auto     { background: #0A2A0A; color: var(--green); border: 1px solid var(--green); }
body.listing-preview-page .badge.manual   { background: #151f15; color: var(--muted); border: 1px solid var(--border); }
body.listing-preview-page .badge.needs    { background: #2A1A00; color: var(--warn); border: 1px solid var(--warn); }

/* Draft card */
body.listing-preview-page .draft-card     { background: var(--soft); border: 1px solid var(--border); border-radius: 14px; overflow: hidden; }
body.listing-preview-page .draft-head     { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 14px; border-bottom: 1px solid var(--border); }
body.listing-preview-page .draft-body     { padding: 14px; }
body.listing-preview-page .field label    { display: block; font-size: 11px; text-transform: uppercase; letter-spacing: 1px; color: var(--silver); font-weight: 900; }
body.listing-preview-page .field input,
body.listing-preview-page .field textarea { width: 100%; background: var(--dark); border: 1px solid var(--border); border-radius: 10px; color: var(--light); padding: 12px; font-family: 'DM Sans', sans-serif; font-size: 14px; line-height: 1.45; }
body.listing-preview-page .field textarea { min-height: 150px; resize: vertical; }
body.listing-preview-page .hint           { font-size: 12px; color: var(--muted); line-height: 1.5; }
body.listing-preview-page .checks         { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
body.listing-preview-page .check          { background: var(--dark); border: 1px solid var(--border); border-radius: 12px; padding: 12px; }
body.listing-preview-page .check strong   { font-size: 13px; display: block; margin-bottom: 4px; }
body.listing-preview-page .check span     { font-size: 12px; color: var(--muted); }
body.listing-preview-page .ok             { color: var(--green); }
body.listing-preview-page .warn           { color: var(--warn); }

/* Page-specific buttons (flat style, different from global .btn__primary BEM) */
/* font-weight: 900 — intentional design choice for listing-preview; migrate to .btn--bold in full modifier system */
body.listing-preview-page .btn            { border-radius: 10px; padding: 13px 16px; text-decoration: none; font-weight: 900; font-size: 14px; border: 1px solid var(--border); display: inline-flex; align-items: center; justify-content: center; gap: 8px; color: var(--light); background: transparent; cursor: pointer; font-family: 'DM Sans', sans-serif; }
body.listing-preview-page .btn:hover      { border-color: var(--green); color: var(--green); }
body.listing-preview-page .btn-primary    { background: var(--green); color: var(--dark); border-color: var(--green); }
body.listing-preview-page .btn-primary:hover { color: var(--dark); background: #00b84c; }
body.listing-preview-page .btn-warn       { background: #2A1A00; color: var(--warn); border-color: var(--warn); }

/* Auto-send toggle — state driven by .toggle-on class (JS adds/removes) */
body.listing-preview-page .toggle-track              { width: 52px; height: 28px; border-radius: 999px; background: var(--border); cursor: pointer; position: relative; transition: background 0.2s; flex-shrink: 0; }
body.listing-preview-page .toggle-knob               { position: absolute; top: 4px; left: 4px; width: 20px; height: 20px; border-radius: 50%; background: #fff; transition: left 0.2s; }
body.listing-preview-page .toggle-track.toggle-on    { background: var(--green); }
body.listing-preview-page .toggle-track.toggle-on .toggle-knob { left: 28px; }
body.listing-preview-page .toggle-label              { font-weight: 700; font-size: 14px; }
body.listing-preview-page .toggle-sub                { font-size: 12px; color: var(--muted); }
.autosend-note                                        { margin-top: 14px; padding: 10px 14px; border-radius: 10px; background: rgba(0,200,83,0.06); border: 1px solid var(--border); font-size: 13px; color: var(--muted); }

/* Schedule section */
body.listing-preview-page .sched-desc    { font-size: 13px; color: var(--muted); line-height: 1.5; }
body.listing-preview-page .field-label   { font-size: 11px; letter-spacing: 1px; text-transform: uppercase; color: var(--silver); display: block; }
body.listing-preview-page .sched-input   { width: 100%; background: #081008; border: 1px solid var(--border); border-radius: 8px; color: var(--light); padding: 10px 12px; font-size: 14px; font-family: inherit; }
body.listing-preview-page .btn-sched     { min-width: 160px; }
body.listing-preview-page .sched-status-text { font-size: 13px; color: var(--muted); }
body.listing-preview-page .sched-saved   { padding: 12px 14px; border-radius: 10px; background: rgba(0,200,83,0.06); border: 1px solid var(--green); font-size: 13px; }
body.listing-preview-page .clear-btn     { background: none; border: none; color: var(--muted); cursor: pointer; font-size: 12px; margin-left: 8px; text-decoration: underline; }

/* Copy-paste panel — overrides global .manual-card background; global rule provides margin-bottom: 10px */
body.listing-preview-page .manual-card         { background: #081008; border: 1px solid var(--border); border-radius: 12px; padding: 16px; }
body.listing-preview-page .manual-icon         { width: 36px; height: 36px; border-radius: 9px; background: var(--card); border: 1px solid var(--border); display: flex; align-items: center; justify-content: center; font-size: 16px; font-weight: 900; flex-shrink: 0; }
body.listing-preview-page .manual-name         { font-weight: 700; font-size: 14px; }
body.listing-preview-page .manual-mode         { font-size: 11px; color: var(--muted); }
body.listing-preview-page .copy-platform-btn   { background: var(--green); color: #070D07; border: none; border-radius: 8px; padding: 8px 16px; font-weight: 700; font-size: 13px; cursor: pointer; }
body.listing-preview-page .manual-textarea     { width: 100%; background: var(--dark); border: 1px solid var(--border); border-radius: 8px; color: var(--light); padding: 10px 12px; font-size: 13px; font-family: inherit; resize: vertical; min-height: 100px; line-height: 1.6; }
body.listing-preview-page .manual-note         { font-size: 12px; color: var(--muted); }

/* Approval bar — fixed bottom strip */
.approval-bar   { position: fixed; bottom: 0; left: 0; right: 0; background: rgba(7,13,7,.98); border-top: 1px solid var(--border); z-index: 200; padding: 10px 14px; }
.approval-inner { width: min(1180px, 100%); margin: 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.approval-text  { font-size: 13px; color: var(--muted); }
.approval-text strong { color: var(--light); }

/* autosend-toggle-row and manual-card-header spacing is handled
   by component rules in this stylesheet — no per-element overrides needed */


/* ══════════════════════════════════════════════════════════════
   CREATE PAGE — UTILITIES & COMPONENT CLASSES
   All classes used by BlastyBiz.html (migrated from per-page <style>)
   ══════════════════════════════════════════════════════════════ */

/* ── Utility layout ── */
body.create-page .main-inner { padding-top: 0; } /* tabs sit flush under the header — no extra gap */



/* ── Size utilities ── */
.min-w-0   { min-width: 0; }
.min-h-0   { min-height: 0; }
.min-h-90  { min-height: 90px; }
.max-w-260 { max-width: 260px; }
.w-72      { width: 72px; }
.w-84      { width: 84px; }

/* ── Form input margin (create page has bare inputs, no .field wrapper) ──
   :not([class*="mb-"]) lets utility classes (.mb-0, .mb-4 …) win naturally;
   no per-value override rules needed. */
body.create-page input:not([class*="mb-"]),
body.create-page textarea:not([class*="mb-"]),
body.create-page select:not([class*="mb-"]) { margin-bottom: 16px; }
body.create-page .input-date,
body.create-page .input-campaign { margin-bottom: 0; }

/* ── Helper text ── */
.helper     { font-size: 14px; color: var(--muted); margin-bottom: 14px; line-height: 1.65; }
.helper-sm  { font-size: 13px; color: var(--muted); margin-bottom: 14px; line-height: 1.55; }
.optional   { color: var(--muted); font-weight: 400; font-size: 13px; }
.optional-tag { font-size: 12px; color: var(--muted); font-weight: 600; letter-spacing: 1px; text-transform: uppercase; }
.note-muted { font-size: 13px; color: var(--muted); }

/* ── Char counter (positioned in textarea wrapper) ── */
.char-wrap  { position: relative; }
body.create-page .char-count { position: absolute; bottom: 22px; right: 12px; font-size: 10px; color: var(--muted); text-align: initial; margin-top: 0; }
body.create-page .char-count.warn { color: var(--warn); }
body.create-page .char-count.over { color: #ff6b35; }

/* ── Count badge (e.g. pending posts) ── */
.count-badge { background: rgba(255,180,0,.15); color: #ffb400; font-size: 11px; font-weight: 700; padding: 2px 7px; border-radius: 20px; border: 1px solid rgba(255,180,0,.3); }

/* ── Campaign chips ── */
.chip-row      { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.chip-loading  { font-size: 12px; color: var(--muted); }
.chip-green    { padding: 7px 16px; border-radius: 20px; border: 1px solid rgba(0,200,83,.4); background: rgba(0,200,83,.08); color: var(--green); font-size: 12px; font-weight: 600; cursor: pointer; font-family: inherit; transition: border-color .15s, background-color .15s, opacity .15s; }
.chip-new      { padding: 8px 16px; border-radius: 20px; border: 1px dashed var(--border); background: transparent; color: var(--muted); font-size: 13px; cursor: pointer; font-family: inherit; transition: border-color .15s, background-color .15s, color .15s; }
.chip-new:hover { border-color: var(--green); color: var(--green); }
.chip-campaign { display: inline-flex; align-items: center; gap: 5px; padding: 8px 10px 8px 14px; border-radius: 20px; border: 1px solid var(--border); background: transparent; color: var(--silver); font-size: 13px; font-weight: 500; font-family: inherit; transition: border-color .15s, background-color .15s, color .15s; }
.chip-campaign.active { border-color: var(--green); background: rgba(0,200,83,.12); color: var(--green); font-weight: 700; }
.chip-label { cursor: pointer; }
.chip-del { cursor: pointer; font-size: 10px; line-height: 1; padding: 2px 4px; border-radius: 50%; opacity: 0.4; transition: opacity .15s, background .15s, color .15s; }
.chip-del:hover { opacity: 1; background: rgba(255,80,80,.15); color: #ff5050; }

/* ── Empty state ── */
.empty      { text-align: center; padding: 40px 20px; color: var(--muted); }
.empty-icon { font-size: 40px; margin-bottom: 12px; }
.empty-text { font-size: 14px; line-height: 1.6; }

/* ── Image upload ── */
.image-upload-area { border: 2px dashed var(--border); border-radius: 12px; padding: 20px; text-align: center; cursor: pointer; transition: border-color .2s; margin-bottom: 16px; position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; }
.image-upload-area:hover { border-color: var(--green); }
.image-upload-area input[type=file] { position: absolute; inset: 0; opacity: 0; cursor: pointer; margin: 0; padding: 0; width: 100%; height: 100%; }
.upload-icon { font-size: 28px; margin-bottom: 6px; }
.upload-text { font-size: 13px; color: var(--muted); }
.upload-text span { color: var(--green); font-weight: 600; }
.thumb-grid { margin-bottom: 0; }
.thumb-wrap { position: relative; aspect-ratio: 1; border-radius: 8px; overflow: hidden; background: #0d160d; border: 1px solid var(--border); }
.thumb-wrap img { width: 100%; height: 100%; object-fit: cover; }
.thumb-remove { position: absolute; top: 4px; right: 4px; background: rgba(0,0,0,.7); border: none; border-radius: 50%; width: 22px; height: 22px; color: white; font-size: 12px; cursor: pointer; display: flex; align-items: center; justify-content: center; }
.thumb-progress-overlay { position: absolute; inset: 0; background: rgba(0,0,0,.5); display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; padding: 8px; }
.thumb-progress-pct { font-size: 13px; font-weight: 700; color: #fff; }
.thumb-progress-bar { width: 80%; height: 4px; background: rgba(255,255,255,.2); border-radius: 2px; overflow: hidden; }
.thumb-saved-badge { position: absolute; bottom: 4px; left: 4px; background: rgba(0,200,83,.85); color: #000; font-size: 9px; font-weight: 700; border-radius: 4px; padding: 2px 5px; pointer-events: none; }
.thumb-wrap.selected { border: 2.5px solid var(--green); box-shadow: 0 0 0 2px rgba(0,200,83,.25); }
.thumb-wrap.selectable { cursor: pointer; }
.thumb-selected-badge { position: absolute; top: 4px; left: 4px; background: var(--green); color: #000; font-size: 11px; font-weight: 900; border-radius: 50%; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; pointer-events: none; }
.thumb-hint { font-size: 11px; color: var(--muted); margin-top: -8px; margin-bottom: 10px; text-align: center; }
.thumb-cover { width: 100%; height: 100%; object-fit: cover; }
.thumb-selected-overlay { position: absolute; inset: 0; background: rgba(0,200,83,.25); display: flex; align-items: center; justify-content: center; font-size: 18px; }
.thumb-error-overlay { width: 100%; height: 100%; background: #1a0a0a; display: flex; align-items: center; justify-content: center; font-size: 20px; }

/* ── AI loading ── */
.ai-loading            { display: none; text-align: center; padding: 24px; }
.ai-loading.visible    { display: block; }
.ai-spinner            { width: 40px; height: 40px; border: 3px solid var(--border); border-top-color: var(--green); border-radius: 50%; animation: spin .8s linear infinite; margin: 0 auto 12px; }
.ai-loading-text       { font-size: 13px; color: var(--silver); }
.ai-loading-sub        { font-size: 11px; color: var(--muted); margin-top: 4px; min-height: 16px; }
.ai-gen-track          { margin: 14px auto 0; width: 100%; max-width: 240px; height: 5px; background: var(--border); border-radius: 999px; overflow: hidden; }
.ai-gen-fill           { height: 100%; width: 0%; background: linear-gradient(90deg, var(--green), #00FF88); border-radius: 999px; transition: width 0.4s ease; }
.ai-gen-pct            { font-size: 11px; font-weight: 700; color: var(--green); margin-top: 6px; letter-spacing: 0.5px; }


/* ── Platform grid (create-page vertical accordion layout) ── */
.platform-grid { display: flex; flex-direction: column; gap: 12px; }
.platform-type { font-size: 10px; letter-spacing: 1px; text-transform: uppercase; margin-top: 2px; }
.platform-type.api    { color: var(--green); }
.platform-type.manual { color: var(--warn); }

/* ── Custom toggle (checkbox slider) ── */
.toggle        { position: relative; width: 46px; height: 26px; flex-shrink: 0; }
.toggle input  { opacity: 0; width: 0; height: 0; }
.toggle-slider { position: absolute; inset: 0; background: var(--muted); border-radius: 26px; cursor: pointer; transition: background .2s; }
.toggle-slider:before { content: ''; position: absolute; width: 20px; height: 20px; left: 3px; top: 3px; background: var(--light); border-radius: 50%; transition: transform .2s; }
.toggle input:checked + .toggle-slider { background: var(--green); }
.toggle input:checked + .toggle-slider:before { transform: translateX(20px); }

/* ── Schedule toggle (larger, separate from .toggle) ── */
.sched-toggle-wrap   { position: relative; display: inline-flex; cursor: pointer; }
.sched-toggle-wrap input { opacity: 0; width: 0; height: 0; position: absolute; }
.sched-toggle-track  { display: block; width: 44px; height: 26px; border-radius: 13px; background: var(--border); transition: background .2s; flex-shrink: 0; }
.sched-toggle-track::after { content: ''; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 50%; background: #fff; transition: transform .2s; }
.sched-toggle-wrap input:checked + .sched-toggle-track { background: var(--green); }
.sched-toggle-wrap input:checked + .sched-toggle-track::after { transform: translateX(18px); }
.sched-toggle-ml { margin-left: 14px; flex-shrink: 0; }

/* ── Location type toggle (create page variant — no per-button border) ── */
.loc-type-toggle { display: flex; border-radius: 10px; overflow: hidden; border: 1.5px solid var(--border); margin-bottom: 12px; }
body.create-page .loc-type-toggle .loc-type-btn { border: none; border-radius: 0; padding: 11px 8px; color: var(--muted); text-align: center; background: var(--card); font-size: 13px; font-weight: 600; cursor: pointer; font-family: inherit; transition: background .15s, color .15s; flex: 1; }
body.create-page .loc-type-toggle .loc-type-btn.active { background: var(--green); color: #000; }
body.create-page .loc-type-toggle .loc-type-btn:first-child { border-right: 1.5px solid var(--border); }
.loc-fields { transition: none; }

/* ── Copy output box ── */
.copy-box        { background: rgba(0,200,83,.04); border: 1px solid rgba(0,200,83,.2); border-radius: 8px; padding: 12px 12px 10px; font-size: 13px; color: var(--silver); line-height: 1.6; margin-top: 12px; display: none; position: relative; }
.copy-box.visible { display: block; }
.copy-box-label  { font-size: 12px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--green); margin-bottom: 8px; display: block; }
.copy-btn-float  { position: absolute; top: 8px; right: 8px; background: var(--card); border: 1px solid var(--border); border-radius: 6px; padding: 4px 10px; font-size: 12px; color: var(--silver); cursor: pointer; transition: border-color .2s, color .2s, background-color .2s; }
.copy-btn-float:hover { border-color: var(--green); color: var(--green); }

/* ── Stats bar (3-col grid — create/history tabs) ── */
.stats-bar { display: grid; grid-template-columns: repeat(3,1fr); gap: 10px; margin-bottom: 20px; }

/* ── Per-campaign schedule cards (Schedule tab) ── */
.csched-card { margin-bottom: 14px; }
.csched-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 4px; }
.csched-name { font-weight: 700; font-size: 15px; color: var(--light); }
.csched-fields { padding-top: 12px; }
.csched-lbl { display: block; font-size: 12px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: .5px; margin: 12px 0 6px; }
.csched-lbl:first-child { margin-top: 0; }
.csched-custom-row { display: flex; align-items: center; gap: 8px; margin: 8px 0; }
.csched-custom-input { width: 72px; padding: 6px 10px; border-radius: 8px; border: 1px solid var(--border); background: var(--input-bg,rgba(255,255,255,.06)); color: var(--light); font-size: 14px; text-align: center; }
.csched-custom-unit { font-size: 13px; color: var(--muted); }
.csched-next { margin-top: 12px; font-size: 13px; font-weight: 600; color: var(--green); }
.csched-upcoming-row { display: flex; align-items: center; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid var(--border); gap: 12px; }
.csched-upcoming-row:last-child { border-bottom: none; }
.csched-upcoming-name { font-weight: 600; font-size: 14px; color: var(--light); }
.csched-upcoming-next { font-size: 13px; color: var(--muted); text-align: right; flex-shrink: 0; }
.csched-campaign-group { margin-bottom: 24px; }
.csched-camp-header { font-size: 13px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .6px; margin-bottom: 8px; }
.csched-plats { font-size: 12px; color: var(--muted); margin-top: 2px; }

/* ── History items ── */
.history-item { display: flex; align-items: center; gap: 12px; padding: 14px 0; border-bottom: 1px solid var(--border); }
.history-item:last-child { border-bottom: none; }
.history-item-tap { cursor: pointer; border-radius: 8px; padding: 14px 10px; margin: 0 -10px; transition: background .15s; }
.history-item-tap:hover, .history-item-tap:active { background: rgba(255,255,255,.06); }
.history-reload { color: var(--green); font-size: 18px; flex-shrink: 0; opacity: .85; }
.history-dot   { width: 8px; height: 8px; border-radius: 50%; background: var(--green); margin-top: 6px; flex-shrink: 0; }
.history-title { font-weight: 600; font-size: 14px; color: var(--light); }
.history-meta  { font-size: 13px; color: var(--muted); margin-top: 2px; }

/* ── Profile card ── */
.profile-avatar   { width: 72px; height: 72px; border-radius: 50%; background: var(--card); border: 2px solid var(--green); display: flex; align-items: center; justify-content: center; font-size: 32px; margin: 0 auto 16px; }
.card-centered    { text-align: center; }
.profile-name     { font-family: 'Bebas Neue', sans-serif; font-size: 22px; letter-spacing: 1px; color: var(--green); }
.profile-cat-text { font-size: 13px; color: var(--muted); margin-top: 4px; }

/* ── Address row ── */
.addr-row { display: flex; gap: 8px; }

/* ── Missing business name banner ── */
.biz-missing-banner { background: #3a1a00; border: 1.5px solid var(--warn); border-radius: 12px; padding: 14px 18px; margin-bottom: 12px; color: var(--warn); font-weight: 600; font-size: 15px; text-align: center; }

/* ── Review listings button ── */
.review-btn          { display: flex; width: 100%; margin: 20px 0 0; padding: 15px 20px; background: var(--green); color: var(--dark); border-radius: 12px; font-weight: 700; font-size: 15px; border: none; cursor: pointer; font-family: inherit; align-items: center; justify-content: center; gap: 8px; box-sizing: border-box; }
.review-btn:disabled { background: rgba(255,255,255,.07); color: var(--muted,#888); cursor: default; }
.review-btn.visible  { display: flex; }

/* ── Platform categories note ── */
.platcats-note { font-size: 12px; color: var(--muted); margin-top: 8px; text-align: center; min-height: 16px; }

/* ── Bottom safe area ── */
.bottom-safe { height: 20px; }

/* ── Announce dialog ── */
.announce-dialog { background: var(--dark); border: 1px solid var(--border); border-radius: 12px; padding: 14px; margin-top: 10px; }
.dialog-label    { font-size: 13px; color: var(--silver); font-weight: 700; margin-bottom: 8px; }

/* ── Special inputs (create page) ── */
.input-campaign { flex: 1; background: #081008; border: 1px solid var(--green); border-radius: 9px; color: var(--light); font-family: inherit; font-size: 14px; padding: 10px 14px; }
.input-campaign:focus-visible { outline: none; box-shadow: 0 0 0 2px rgba(0,200,83,.35); }
.input-date     { flex: 1; background: var(--card); border: 1px solid var(--border); border-radius: 8px; color: var(--light); padding: 9px 10px; font-family: inherit; font-size: 12px; }
.date-hint      { font-size: 12px; color: var(--muted); flex-shrink: 0; }
.textarea-naked { width: 100%; background: transparent; border: 1px solid var(--border); border-radius: 8px; color: var(--light); padding: 10px; font-family: inherit; font-size: 13px; resize: none; }
.textarea-rich  { width: 100%; background: #081008; border: 1px solid var(--border); border-radius: 10px; color: var(--light); font-family: 'DM Sans', sans-serif; font-size: 14px; line-height: 1.6; padding: 14px; resize: vertical; transition: border-color .2s; }
.textarea-rich:focus-visible { outline: none; border-color: var(--green); box-shadow: 0 0 0 2px rgba(0,200,83,.2); }
/* ── Schedule chips ── */
.sched-chips     { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.sched-chip      { flex: 1; min-width: 60px; padding: 9px 8px; border-radius: 10px; border: 1px solid var(--border); background: transparent; color: var(--silver); font-size: 12px; font-weight: 700; cursor: pointer; font-family: inherit; text-align: center; line-height: 1.3; transition: border-color .15s, background-color .15s, color .15s; }
.sched-chip.active { border-color: var(--green); color: var(--green); background: rgba(0,200,83,.08); }
.sched-next-preview { font-size: 12px; color: var(--green); text-align: center; padding: 6px 0 2px; min-height: 24px; font-weight: 600; }

/* ── About You in Copy checkboxes ── */
.check-row  { display: flex; align-items: center; justify-content: space-between; cursor: pointer; gap: 12px; }
.check-text { font-size: 14px; color: var(--text); line-height: 1.4; }
.check-hint { display: block; color: var(--muted); font-size: 13px; margin-top: 1px; }
.check-input { width: 20px; height: 20px; cursor: pointer; flex-shrink: 0; accent-color: var(--green); }

/* ── Button aliases — these selectors are in the shared-base group (canonical system above)
   and inherit font-family / cursor / transition / border-radius: 10px from it.
   Only the visual properties that differ from the base are declared here. ── */
/* .btn-sm, .btn--small, .btn--xs, .btn--lg — defined in canonical system */
/* .btn--outline, .btn--ghost, .btn--danger, .btn--warn — defined in canonical system */
.btn-green-out  { padding: 9px 16px; border: 1px solid var(--green); background: transparent; color: var(--green); font-size: 13px; font-weight: 700; margin-bottom: 12px; }
.btn-save       { flex: 1; padding: 10px; border: none; background: var(--green); color: var(--dark); font-weight: 700; font-size: 13px; }
.btn-cancel     { padding: 10px 14px; border: 1px solid var(--border); background: transparent; color: var(--muted); font-size: 13px; }
.btn-camp-save  { background: var(--green); color: var(--dark); border: none; padding: 10px 18px; font-weight: 700; font-size: 13px; white-space: nowrap; }
.btn-camp-cancel { background: transparent; border: 1px solid var(--border); padding: 10px 14px; color: var(--muted); font-size: 13px; }
.btn-icon-close  { background: transparent; border: none; color: var(--muted); font-size: 22px; cursor: pointer; line-height: 1; padding: 0 4px; border-radius: 0; }
.btn-rewrite    { background: rgba(0,200,83,.12); border: 1.5px solid var(--green); color: var(--green); font-weight: 700; margin-bottom: 10px; }
.btn-clear      { background: transparent; border: 1.5px solid var(--border); color: var(--muted); }
.btn-more-qs    { display: none; margin-top: 14px; width: 100%; background: rgba(0,200,83,.08); border: 1px solid rgba(0,200,83,.25); padding: 11px 16px; color: var(--green); font-size: 13px; font-weight: 600; }

/* ── Badge variants ── */
.badge-idle     { background: var(--muted); color: var(--light); }
.badge-ready    { background: #0A2A0A; color: var(--green); border: 1px solid var(--green); }
.badge-posting  { background: #2A1A00; color: var(--warn); border: 1px solid var(--warn); }
.badge-done     { background: #0A2A0A; color: var(--green); }
.badge-xs,
.badge--small   { font-size: 9px; }

/* ── Quick Platform accordion (JS-rendered) ── */
.qp-row         { border-bottom: 1px solid var(--border); }
.qp-header      { display: flex; align-items: center; justify-content: space-between; padding: 12px 0; gap: 8px; cursor: pointer; }
.qp-body        { padding-bottom: 14px; }            /* display toggled by JS */
.qp-copy        { display: none; }                    /* shown by JS after adaptation */
.qp-copy.qp-copy-cats { margin-top: 14px; }
.qp-copy-img-note  { display: none; }
.qp-photos-section { display: none; }
.qp-cat-preview { font-size: 12px; color: var(--muted); margin-top: 2px; }
.qp-header-left { flex: 1; display: flex; align-items: flex-start; gap: 10px; min-width: 0; }
.qp-icon        { font-size: 18px; flex-shrink: 0; padding-top: 2px; }
.qp-name-wrap   { min-width: 0; flex: 1; }
.qp-name-row    { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.qp-name        { font-size: 14px; font-weight: 600; color: var(--light); }
.qp-header-right { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.qp-chevron     { font-size: 20px; color: var(--muted); transition: transform .2s; line-height: 1; user-select: none; }
.qp-cat-label   { font-size: 12px; font-weight: 700; color: var(--muted); letter-spacing: .6px; text-transform: uppercase; display: block; margin-bottom: 6px; }
.qp-cat-select  { width: 100%; background: var(--dark); border: 1px solid var(--border); border-radius: 8px; padding: 9px 12px; color: var(--light); font-size: 13px; font-family: inherit; -webkit-appearance: none; margin-bottom: 10px; }
.qp-custom-row  { display: flex; gap: 8px; margin-bottom: 4px; }
.qp-custom-input { flex: 1; background: var(--dark); border: 1px solid var(--border); border-radius: 8px; padding: 8px 12px; color: var(--light); font-size: 12px; font-family: inherit; }
.qp-custom-btn  { padding: 8px 14px; border-radius: 8px; border: 1px solid var(--border); background: transparent; color: var(--muted); font-size: 12px; cursor: pointer; font-family: inherit; flex-shrink: 0; }
.qp-copy-label  { font-size: 12px; font-weight: 700; letter-spacing: .8px; text-transform: uppercase; color: var(--green); flex: 1; min-width: 80px; }
.qp-copy-actions { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; gap: 6px; flex-wrap: wrap; }
.qp-action-btn  { background: var(--card); border: 1px solid var(--border); border-radius: 6px; padding: 4px 10px; color: var(--muted); font-size: 12px; cursor: pointer; font-family: inherit; flex-shrink: 0; }
.qp-accept-btn  { background: var(--green); border: none; border-radius: 6px; padding: 4px 12px; color: #000; font-size: 12px; font-weight: 700; cursor: pointer; font-family: inherit; flex-shrink: 0; }
.qp-copy-text-box { font-size: 13px; color: var(--silver); background: rgba(0,200,83,.04); border: 1px solid rgba(0,200,83,.2); border-radius: 8px; padding: 12px; white-space: pre-wrap; line-height: 1.6; }
.qp-photos-label { font-size: 12px; font-weight: 700; letter-spacing: .8px; text-transform: uppercase; color: var(--muted); margin-bottom: 8px; }
.qp-photo-strip { display: flex; gap: 8px; flex-wrap: wrap; }
.platform-note-text { font-size: 12px; color: var(--muted); }

/* ── Platform card connection row (Platforms tab merged with Connect) ── */
.pcard-conn-row {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
}

/* ── Google explainer (collapsible, lives inside the card) ── */
.pcard-explainer {
  display: none;
  margin-top: 12px;
  padding: 14px 16px;
  background: rgba(66,133,244,0.06);
  border: 1px solid rgba(66,133,244,0.2);
  border-radius: 10px;
  font-size: 13px;
  line-height: 1.5;
}
.pcard-explainer.open { display: block; }
.pcard-explainer-title { font-weight: 700; color: var(--light); margin-bottom: 10px; }
.pcard-explainer-steps { display: flex; flex-direction: column; gap: 8px; margin-bottom: 12px; }
.pcard-explainer-step  { display: flex; align-items: flex-start; gap: 10px; color: var(--silver); }
.pcard-step-num        { background: rgba(66,133,244,0.2); color: #54a8ff; border-radius: 50%; width: 20px; height: 20px; display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; flex-shrink: 0; }
.pcard-explainer-note  { font-size: 12px; color: var(--muted); margin-bottom: 12px; }

/* ── Google import progress banner (inside the Google card) ── */
.pcard-import-banner {
  margin-top: 10px;
  padding: 10px 14px;
  border-radius: 8px;
  font-size: 13px;
  color: var(--light);
  line-height: 1.5;
}
.btn-upgrade-inline { border-color: #00C853; color: #00C853; font-size: 11px; }
.qp-thumb       { position: relative; width: 64px; height: 64px; border-radius: 8px; overflow: hidden; cursor: pointer; flex-shrink: 0; border: 2px solid transparent; }
.qp-thumb-sel   { border-color: var(--green); }
.thumb-order-badge { position: absolute; top: 3px; left: 3px; background: var(--green); color: #000; font-size: 10px; font-weight: 800; width: 18px; height: 18px; border-radius: 50%; display: flex; align-items: center; justify-content: center; line-height: 1; }
.qp-share-section { margin-top: 14px; }
.qp-share-btn   { width: 100%; padding: 10px 16px; background: var(--accent); border: none; border-radius: 10px; color: #fff; font-size: 13px; font-weight: 700; font-family: inherit; cursor: pointer; margin-bottom: 8px; }
.qp-share-note  { font-size: 11px; color: var(--muted); line-height: 1.5; }
/* ── Platform "Get Started" card (shown when not yet enabled) ── */
.qp-getstarted        { background: rgba(0,200,83,.04); border: 1px solid rgba(0,200,83,.18); border-radius: 10px; padding: 14px 14px 12px; margin-top: 10px; }
.qp-getstarted-tip    { font-size: 13px; color: var(--text); line-height: 1.55; margin-bottom: 12px; }
.qp-getstarted-btns   { display: flex; gap: 8px; margin-bottom: 14px; }
.qp-getstarted-signup { flex: 1; padding: 9px 10px; background: var(--green); border: none; border-radius: 8px; color: #000; font-size: 13px; font-weight: 800; font-family: inherit; text-align: center; text-decoration: none; display: block; cursor: pointer; }
.qp-getstarted-signup:active { opacity: .8; }
.qp-getstarted-signin { flex: 1; padding: 9px 10px; background: var(--card); border: 1px solid var(--border); border-radius: 8px; color: var(--text); font-size: 13px; font-weight: 700; font-family: inherit; text-align: center; text-decoration: none; display: block; cursor: pointer; }
.qp-getstarted-signin:active { opacity: .7; }
.qp-getstarted-divider{ font-size: 11px; font-weight: 700; color: var(--muted); text-transform: uppercase; letter-spacing: .6px; margin-bottom: 8px; }
.qp-getstarted-url-row{ display: flex; gap: 8px; margin-bottom: 10px; }
.qp-getstarted-url    { flex: 1; background: var(--input-bg,rgba(255,255,255,.06)); border: 1px solid var(--border); border-radius: 8px; padding: 7px 10px; color: var(--text); font-size: 12px; font-family: inherit; min-width: 0; }
.qp-getstarted-url::placeholder { color: var(--muted); opacity: .7; }
.qp-getstarted-save   { flex-shrink: 0; padding: 7px 12px; background: var(--card); border: 1px solid var(--border); border-radius: 8px; color: var(--text); font-size: 12px; font-weight: 700; font-family: inherit; cursor: pointer; }
.qp-getstarted-save:active { opacity: .7; }
.qp-getstarted-hint   { font-size: 11px; color: var(--muted); line-height: 1.5; }
/* ── Platform URL row (always visible in accordion) ── */
.qp-url-section { border-top: 1px solid var(--border); margin-top: 14px; padding-top: 12px; }
.qp-url-row     { display: flex; align-items: center; gap: 8px; }
.qp-url-label   { font-size: 11px; font-weight: 700; color: var(--muted); white-space: nowrap; flex-shrink: 0; }
.qp-url-input   { flex: 1; background: var(--input-bg,rgba(255,255,255,.06)); border: 1px solid var(--border); border-radius: 8px; padding: 7px 10px; color: var(--text); font-size: 12px; font-family: inherit; min-width: 0; }
.qp-url-input::placeholder { color: var(--muted); opacity: .7; }
.qp-open-btn    { flex-shrink: 0; padding: 7px 12px; background: var(--card); border: 1px solid var(--border); border-radius: 8px; color: var(--text); font-size: 12px; font-weight: 700; font-family: inherit; cursor: pointer; white-space: nowrap; }
.qp-open-btn:active { opacity: .7; }
/* ── Copy & Open CTA ── */
.qp-copy-open-btn { width: 100%; padding: 11px 16px; background: var(--green); border: none; border-radius: 10px; color: #000; font-size: 13px; font-weight: 800; font-family: inherit; cursor: pointer; margin-bottom: 8px; letter-spacing: .2px; }
.qp-copy-open-btn:active { opacity: .85; }

/* ── Copy library modal ── */
.lib-loading    { color: var(--muted); font-size: 14px; padding: 24px 0; text-align: center; }
.lib-error      { color: #ff6b35; padding: 16px; }
.lib-empty      { text-align: center; padding: 32px 16px; }
.lib-empty-icon { font-size: 36px; margin-bottom: 12px; }
.lib-empty-title { color: var(--silver); font-size: 15px; margin-bottom: 6px; }
.lib-empty-sub  { color: var(--muted); font-size: 13px; }
.lib-group      { margin-bottom: 20px; }
.lib-group-name { font-size: 12px; font-weight: 700; letter-spacing: .8px; text-transform: uppercase; color: var(--green); margin-bottom: 10px; }
.lib-item       { background: rgba(0,200,83,.04); border: 1px solid rgba(0,200,83,.15); border-radius: 10px; padding: 14px; margin-bottom: 10px; }
.lib-item-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; gap: 8px; }
.lib-item-meta  { font-size: 12px; color: var(--muted); }
.lib-item-actions { display: flex; gap: 6px; flex-shrink: 0; }
.lib-action-btn { background: var(--card); border: 1px solid var(--border); border-radius: 6px; padding: 3px 9px; color: var(--muted); font-size: 12px; cursor: pointer; font-family: inherit; }
.lib-delete-btn { background: var(--card); border: 1px solid var(--border); border-radius: 6px; padding: 3px 9px; color: #ff6b35; font-size: 12px; cursor: pointer; font-family: inherit; }
.lib-copy-text  { font-size: 13px; color: var(--silver); white-space: pre-wrap; line-height: 1.6; max-height: 120px; overflow-y: auto; }

/* ── Pending posts ── */
.pending-platform-item { margin-bottom: 10px; }
.pending-platform-name { font-size: 12px; font-weight: 700; color: var(--silver); letter-spacing: .5px; text-transform: uppercase; margin-bottom: 5px; }
.pending-platform-text { font-size: 13px; color: var(--light); background: var(--dark); border-radius: 8px; padding: 10px 12px; line-height: 1.6; white-space: pre-wrap; }
.pending-post-card     { border: 1px solid rgba(255,180,0,.25); border-radius: 12px; padding: 14px; margin-bottom: 12px; }
.pending-post-date     { font-size: 12px; color: var(--muted); margin-bottom: 12px; }
.pending-post-actions  { display: flex; gap: 8px; margin-top: 10px; }
.pending-approve-btn   { flex: 1; padding: 11px; border: none; background: var(--green); color: var(--dark); font-weight: 700; font-size: 13px; }
.pending-skip-btn      { padding: 11px 14px; border: 1px solid var(--border); background: transparent; color: var(--muted); font-size: 13px; }

/* ── Profile insight rows (PIR) ── */
.pir-empty    { font-size: 13px; color: var(--muted); padding: 8px 0; }
.pir-row      { border-bottom: 1px solid var(--border); }
.pir-btn      { width: 100%; background: none; border: none; padding: 12px 0; cursor: pointer; font-family: inherit; display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; text-align: left; }
.pir-content  { flex: 1; }
.pir-question { font-size: 14px; font-weight: 600; color: var(--light); line-height: 1.4; }
.pir-chevron  { font-size: 18px; color: var(--muted); flex-shrink: 0; padding-top: 2px; transition: transform .2s; }
.pir-textarea { width: 100%; background: var(--dark); border: 1px solid var(--border); border-radius: 8px; color: var(--light); padding: 10px; font-family: inherit; font-size: 13px; resize: none; box-sizing: border-box; }
.pir-save-btn { margin-top: 8px; padding: 9px 22px; border: none; background: var(--green); color: var(--dark); font-weight: 700; font-size: 13px; }
.pir-body-wrap { padding-bottom: 12px; }

/* ── Insight (answered) ── */
.insight-answered { font-size: 13px; color: var(--muted); padding: 8px 0; border-bottom: 1px solid var(--border); line-height: 1.45; }
.insight-answered:last-child { border-bottom: none; }
.insight-answered strong { color: var(--silver); }

/* ── Announcements ── */
.announce-chip          { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border-radius: 20px; border: 1px solid var(--border); background: var(--dark); font-size: 12px; color: var(--silver); margin: 4px 4px 0 0; cursor: pointer; }
.announce-chip.upcoming { border-color: rgba(255,180,0,.5); color: #ffb400; }
.announce-chip .remove-x { opacity: .5; font-size: 13px; line-height: 1; }

/* ── Teach AI accordion ── */
.teach-btn   { width: 100%; background: none; border: none; padding: 16px; display: flex; align-items: center; justify-content: space-between; cursor: pointer; font-family: inherit; text-align: left; }
.teach-icon  { font-size: 20px; }
.teach-title { font-size: 14px; font-weight: 700; color: var(--light); line-height: 1.3; }
.teach-sub   { font-size: 13px; color: var(--muted); margin-top: 2px; }
.chevron     { font-size: 20px; color: var(--muted); flex-shrink: 0; margin-left: 10px; transition: transform .2s; }
.teach-inner { padding: 0 16px 16px; }
.card-flush  { padding: 0; overflow: visible; }
.tier-badge            { display: inline-block; font-size: 10px; font-weight: 700; padding: 2px 8px; border-radius: 20px; letter-spacing: 0.4px; vertical-align: middle; margin-left: 8px; text-transform: uppercase; line-height: 1.6; }
.tier-badge--global    { background: rgba(0,200,83,0.12); color: var(--green); }
.tier-badge--campaign  { background: rgba(126,179,255,0.15); color: #7eb3ff; }
.campaign-ctx-body     { padding: 0 16px 16px; }
.activity-row.clickable       { cursor: pointer; }
.activity-row.clickable:hover { border-color: var(--green); background: rgba(0,200,83,0.03); }
.cs-insight-row               { display: flex; flex-direction: column; gap: 2px; padding: 10px 0; border-bottom: 1px solid var(--border); }
.cs-insight-row:last-child    { border-bottom: none; }
.cs-insight-q                 { font-size: 13px; color: var(--muted); }
.cs-insight-a                 { font-size: 14px; color: var(--light); font-weight: 500; }
.cs-empty                     { font-size: 13px; color: var(--muted); font-style: italic; }


/* ── Muted note with vertical padding (AI loading state text) ── */
.note-muted-pad { font-size: 13px; color: var(--muted); padding: 12px 0; line-height: 1.55; }

/* ── Profile insight accordion rows ── */
.insight-row    { margin-bottom: 12px; }
.insight-q      { font-size: 14px; font-weight: 600; color: var(--light); margin-bottom: 6px; line-height: 1.4; }
.insight-input  { width: 100%; background: var(--dark); border: 1px solid var(--border); border-radius: 8px; color: var(--light); padding: 10px; font-family: 'DM Sans', sans-serif; font-size: 13px; resize: none; box-sizing: border-box; line-height: 1.5; }
.insight-input:focus-visible { outline: none; border-color: var(--green); box-shadow: 0 0 0 2px rgba(0,200,83,.25); }

/* ── Uploading image (in thumb-wrap, slightly faded) ── */
.thumb-uploading-img { width: 100%; height: 100%; object-fit: cover; opacity: 0.55; }


/* ═══ PROFILE TAB — 2-COLUMN SPLIT (desktop/tablet only) ═══ */
.profile-page-split      { display: grid; grid-template-columns: 2fr 1fr; gap: 20px; align-items: start; }
.profile-page-left       { min-width: 0; }
.profile-page-right      { position: sticky; top: var(--main-offset, 60px); display: flex; flex-direction: column; gap: 16px; }
.profile-right-img       { width: 100%; height: auto; object-fit: cover; border-radius: 14px; display: block; }
@media (max-width: 768px) {
  .profile-page-split    { display: block; }
  .profile-page-right    { position: static; }
  .profile-right-img     { display: none; }
}

/* ═══ CREATE PAGE — SCOPED OVERRIDES (conflict prevention) ═══ */

/* ── Blast › Tab breadcrumb ── */
body.create-page .app-breadcrumb {
  display: flex;
  align-items: center;
  gap: 7px;
  padding: 7px 18px;
  background: var(--dark, #111);
  border-bottom: 1px solid var(--border, #2a2a2a);
  font-size: 12px;
  letter-spacing: .5px;
}
body.create-page .app-breadcrumb__root {
  color: var(--muted, #888);
  font-weight: 600;
  text-transform: uppercase;
}
body.create-page .app-breadcrumb__sep {
  color: var(--muted, #888);
  font-size: 11px;
}
body.create-page .app-breadcrumb__current {
  color: var(--green, #39ff14);
  font-weight: 700;
  text-transform: uppercase;
}

/* Tabs (conflict: listing-preview page also uses .tab/.tabs) */
body.create-page .tabs-row {
  width: 100%; display: flex; align-items: stretch; position: relative;
  background: var(--dark); border-radius: 10px 10px 0 0;
  border-bottom: 1px solid var(--border);
}
@media (max-width: 767px) {
  body.create-page .tabs-row { border-radius: 0; }
}
/* Scroll arrows — hidden by default, JS shows them when overflow exists */
body.create-page .tabs-arrow {
  display: none; flex-shrink: 0; align-items: center; justify-content: center;
  width: 32px; background: var(--dark);
  border: none; border-bottom: 2px solid transparent;
  color: var(--muted); font-size: 22px; line-height: 1;
  cursor: pointer; padding: 0; transition: color .15s;
  z-index: 2;
}
body.create-page .tabs-arrow:hover { color: var(--light); }
body.create-page .tabs-arrow.visible { display: flex; }
body.create-page .tabs-arrow--left  { border-right: 1px solid var(--border); }
body.create-page .tabs-arrow--right { border-left: 1px solid var(--border); }
/* Fade-gradient edge hints — overlay on the .tabs-row */
body.create-page .tabs-row::before,
body.create-page .tabs-row::after {
  content: ''; position: absolute; top: 0; bottom: 2px; width: 28px;
  pointer-events: none; z-index: 1; transition: opacity .2s; opacity: 0;
}
body.create-page .tabs-row::before { left: 0;  background: linear-gradient(to right,  var(--dark), transparent); }
body.create-page .tabs-row::after  { right: 0; background: linear-gradient(to left, var(--dark), transparent); }
body.create-page .tabs-row.fade-left::before  { opacity: 1; }
body.create-page .tabs-row.fade-right::after  { opacity: 1; }
/* The scrollable strip */
body.create-page .tabs { display: flex; flex: 1; min-width: 0; overflow-x: auto; overflow-y: hidden; -webkit-overflow-scrolling: touch; scrollbar-width: none; border-radius: 0; border-bottom: none; background: transparent; }
body.create-page .tabs::-webkit-scrollbar { display: none; }
body.create-page .tab  { flex: 0 0 auto; padding: 14px 14px; text-align: center; font-size: 12px; font-weight: 600; letter-spacing: 1px; text-transform: uppercase; color: var(--muted); cursor: pointer; border-bottom: 2px solid transparent; transition: color .2s, border-color .2s; white-space: nowrap; background: none; border-top: none; border-left: none; border-right: none; font-family: inherit; }
body.create-page .tab.active { color: var(--green); border-bottom-color: var(--green); }
@media (max-width: 767px) {
  body.create-page .tab      { padding: 13px 12px; letter-spacing: 0.3px; font-size: 11px; }
}

/* Sections (show/hide tab panels via active class) */
body.create-page .section        { display: none; padding: 20px 0; }
body.create-page .section.active { display: block; }

/* Section label (muted on create page, green globally).
   margin-bottom: 12px + margin-top: 4px override the global 6px; body-scope needed — utility class loses to .section-label at equal specificity */
body.create-page .section-label { color: var(--muted); margin-bottom: 12px; margin-top: 4px; }

/* Badge (smaller padding than global) */
body.create-page .badge { padding: 3px 8px; display: inline-flex; align-items: center; gap: 4px; }

/* Stat card (small/centered vs publishing page's large/flex-row) */
body.create-page .stat-card  { background: var(--card); border: 1px solid var(--border); border-radius: 10px; padding: 14px; text-align: center; display: block; flex: none; }
body.create-page .stat-num   { font-family: 'Bebas Neue', sans-serif; font-size: 32px; color: var(--green); line-height: 1; }
body.create-page .stat-label { font-size: 12px; letter-spacing: 1px; text-transform: uppercase; color: var(--muted); margin-top: 4px; }

/* Progress bar (4px vs 6px global) */
body.create-page .progress-wrap { height: 4px; border-radius: 4px; margin-top: 8px; }
body.create-page .progress-bar  { border-radius: 4px; transition: width .4s ease; }

/* Platform card (vertical layout vs connect page's horizontal) */
body.create-page .platform-card { display: block; }
body.create-page .platform-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 8px; }
body.create-page .platform-info { display: flex; align-items: center; gap: 10px; }
body.create-page .platform-icon { width: 38px; height: 38px; border-radius: 10px; font-size: 20px; flex-shrink: 0; }
body.create-page .platform-actions { flex-direction: row; gap: 8px; margin-top: 12px; align-items: center; }
body.create-page .platform-card.enabled { border-color: var(--green); }

/* Library modal (display:none/flex toggle vs global opacity/pointer-events) */
body.create-page .modal-overlay      { display: none; align-items: flex-end; justify-content: center; opacity: 1; pointer-events: auto; transition: none; background: rgba(0,0,0,.7); }
body.create-page .modal-overlay.open { display: flex; }
.modal-panel { background: var(--card); border: 1px solid var(--border); border-radius: 18px 18px 0 0; width: 100%; max-width: 600px; max-height: 90vh; display: flex; flex-direction: column; overflow: hidden; overscroll-behavior: contain; }
.modal-head  { display: flex; align-items: center; justify-content: space-between; padding: 16px 20px 14px; border-bottom: 1px solid var(--border); flex-shrink: 0; }
body.create-page .modal-title { font-family: inherit; font-size: 15px; font-weight: 700; color: var(--light); margin-bottom: 0; letter-spacing: 0; }
.modal-body  { flex: 1; overflow-y: auto; padding: 16px 20px 24px; }

/* HR divider (global has-site-header rule hides it; restore for create page) */
body.create-page hr.divider { display: block; border: none; border-top: 1px solid var(--border); margin: 20px 0; height: 0; }


/* ══════════════════════════════════════════════════════════════
   ADMIN PAGES — migrated from blastybiz-admin.css
   All admin pages: body.admin-page (hardcoded <header>, no inject)
   Operate page:    body.operate-page (narrower max-width)
   ══════════════════════════════════════════════════════════════ */

/* ── Admin body ── */
body.admin-page { padding-bottom: 74px; }

/* ── Admin header (hardcoded <header> element, not injected) ── */
body.admin-page header         { background: rgba(7,13,7,.96); border-bottom: 1px solid var(--border); padding: 16px 20px; position: sticky; top: 0; z-index: 100; display: flex; align-items: center; justify-content: space-between; backdrop-filter: blur(10px); }
body.admin-page .logo          { font-family: 'Bebas Neue', sans-serif; font-size: 28px; letter-spacing: 2px; color: var(--green); line-height: 1; text-decoration: none; }
body.admin-page .logo span     { color: var(--silver); font-size: 11px; display: block; letter-spacing: 3px; font-family: 'DM Sans'; font-weight: 300; margin-top: 2px; }
.top-actions                   { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.icon-btn                      { background: var(--card); border: 1px solid var(--border); border-radius: 999px; color: var(--silver); min-height: 40px; padding: 0 13px; display: flex; align-items: center; justify-content: center; text-decoration: none; font-size: 13px; font-weight: 800; }
.icon-btn:hover, .icon-btn.active { border-color: var(--green); color: var(--green); text-decoration: none; }

/* ── Admin main layout ── */
body.admin-page main,
body.admin-page .main          { width: 100%; }
body.admin-page .main-inner    { width: min(1220px, 100%); margin: 0 auto; padding: 20px; box-sizing: border-box; }
body.operate-page .main-inner  { max-width: 860px; }

/* ── Admin layout primitives ── */
/* .split/.split-3/.split-4 mirror .layout__split/.layout__split-3/.layout__split-4 (gaps tokenized to match).
   .split-wide intentionally keeps 1.2fr .8fr ratio — narrower than .layout__split-wide's 1.5fr 1fr.
   Migrate markup to canonical .layout__split* names when pages are updated. */
.split      { display: grid; grid-template-columns: 1fr 1fr;            gap: var(--gap-lg); margin-bottom: var(--gap-lg); }
.split-3    { display: grid; grid-template-columns: 1fr 1fr 1fr;        gap: var(--gap-lg); margin-bottom: var(--gap-lg); }
.split-4    { display: grid; grid-template-columns: repeat(4, 1fr);     gap: var(--gap-md); margin-bottom: var(--gap-lg); }
.split-wide { display: grid; grid-template-columns: 1.2fr .8fr;         gap: var(--gap-lg); margin-bottom: var(--gap-lg); }
.stack      { display: flex; flex-direction: column; gap: var(--gap-md); }
.cluster    { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.form-group { display: flex; flex-direction: column; gap: 4px; margin-bottom: var(--gap-lg); }
.form-row   { display: grid; grid-template-columns: 1fr 1fr;            gap: var(--gap-md); margin-bottom: var(--gap-lg); }

/* .three-col aliases .split-3 / .layout__split-3; kept for BlastyBiz-Admin.html until migrated */
.three-col  { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: var(--gap-lg); margin-bottom: var(--gap-lg); }
body.admin-page .row { margin-bottom: var(--gap-lg); }

/* ── Admin card ── */
body.admin-page .card       { background: var(--card); border: 1px solid var(--border); border-radius: 14px; padding: 20px; }

/* Failed Jobs — responsive table ↔ cards */
.jobs-table-wrap            { display: block; overflow-x: auto; }
.jobs-cards                 { display: none; flex-direction: column; gap: 10px; margin-top: 12px; }
.job-card                   { background: var(--soft); border: 1px solid var(--border); border-radius: 12px; padding: 14px 16px; }
.job-card-top               { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.job-card-biz               { font-weight: 700; font-size: 15px; color: var(--light); flex: 1; }
.job-card-meta              { font-size: 12px; color: var(--muted); margin-bottom: 6px; }
.job-card-reason            { font-size: 13px; color: var(--silver); margin-bottom: 10px; line-height: 1.4; }
.job-card-actions           { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.job-card-cb                { width: 18px; height: 18px; flex-shrink: 0; }
@media (max-width: 767px) {
  .jobs-table-wrap          { display: none; }
  .jobs-cards               { display: flex; }
}
body.admin-page .card-title { font-family: 'Bebas Neue', sans-serif; font-size: 22px; letter-spacing: 1.5px; color: var(--green); margin-bottom: 14px; display: flex; align-items: center; gap: 8px; }

/* ── Admin hero / display text ── */
.big-title      { font-family: 'Bebas Neue', sans-serif; font-size: 44px; line-height: .95; letter-spacing: 2px; color: var(--light); margin-bottom: 10px; }
.big-title span { color: var(--green); }
body.admin-page .sub { color: var(--muted); font-size: 15px; line-height: 1.6; max-width: 820px; }
.eyebrow        { font-size: 11px; letter-spacing: 2px; text-transform: uppercase; color: var(--silver); font-weight: 800; margin-bottom: 8px; }

/* ── Admin stat blocks ── */
body.admin-page .stat-num      { font-family: 'Bebas Neue', sans-serif; font-size: 34px; color: var(--green); line-height: 1; }
body.admin-page .stat-label    { font-size: 11px; letter-spacing: 1.2px; text-transform: uppercase; color: var(--muted); margin-top: 4px; }
.stat-note      { font-size: 12px; color: var(--silver); margin-top: 10px; }
.stat-note.money { color: var(--green); }
.stat-note.warn  { color: var(--warn); }
.stat-note.bad   { color: var(--danger); }
.stat-note.blue  { color: #54A8FF; }

/* ── Admin list rows — .list and .list-item consolidated into platform-row rule above ── */
body.admin-page .icon { width: 40px; height: 40px; border-radius: 10px; background: var(--dark); display: flex; align-items: center; justify-content: center; font-size: 18px; flex-shrink: 0; }
body.admin-page .row-title { font-weight: 800; }
body.admin-page .row-sub   { line-height: 1.4; }

/* ── Admin badge variants ── */
body.admin-page .badge { font-size: 11px; text-transform: uppercase; letter-spacing: .7px; font-weight: 900; border-radius: 999px; padding: 5px 8px; white-space: nowrap; }
.live              { background: #0A2A0A; color: var(--green);  border: 1px solid var(--green); }
.needs             { background: #2A1A00; color: var(--warn);   border: 1px solid var(--warn); }
.badge.error,
.error             { background: #2A0A0A; color: var(--danger); border: 1px solid var(--danger); }
.off               { background: #151f15; color: var(--muted);  border: 1px solid var(--border); }
.badge.info        { background: #07192a; color: #60a5fa;       border: 1px solid #2563eb; }
.badge.success     { background: #0A2A0A; color: #00C853;       border: 1px solid #00C853; }
.badge.warn        { background: #2A1A00; color: #e6b84a;       border: 1px solid #7a5500; }
.badge.pending     { background: #07192a; color: #60a5fa;       border: 1px solid #2563eb; }
.badge.posting     { background: #1a0a2a; color: #c084fc;       border: 1px solid #7c3aed; }
.badge.failed      { background: #2A0A0A; color: #f87171;       border: 1px solid #dc2626; }
.badge.manual      { background: #2A1A00; color: #e6b84a;       border: 1px solid #7a5500; }

/* ── Admin buttons ── */
body.admin-page .btn            { border-radius: 12px; padding: 11px 14px; text-decoration: none; font-weight: 800; font-size: 13px; border: 1px solid var(--border); display: inline-flex; align-items: center; justify-content: center; gap: 8px; color: var(--light); background: transparent; cursor: pointer; font-family: 'DM Sans', sans-serif; }
body.admin-page .btn:hover      { border-color: var(--green); color: var(--green); }
body.admin-page .btn-primary    { background: var(--green); color: var(--dark); border-color: var(--green); }
body.admin-page .btn-primary:hover { color: var(--dark); background: #00b84c; }

/* ── Admin table ── */
body.admin-page table  { width: 100%; border-collapse: collapse; background: var(--panel); border: 1px solid var(--border); border-radius: 12px; overflow: hidden; }
body.admin-page th     { text-align: left; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 1px; color: var(--muted); padding: 12px; border-bottom: 1px solid var(--border); }
body.admin-page td     { font-size: 14px; color: var(--light); padding: 12px; border-bottom: 1px solid var(--border); vertical-align: top; }
body.admin-page tr:last-child td { border-bottom: none; }


/* ── Admin misc helpers ── */
.job-field  { font-size: 14px; color: var(--light); }
.actions-mt { margin-top: 14px; }
.impl-note  { font-size: 12px; color: var(--muted); font-style: italic; }
.caps       { text-transform: uppercase; letter-spacing: 1.5px; }

/* ── Admin mobile nav ── */
body.admin-page .mobile-nav a { padding: 9px 2px; font-size: 10px; }

/* ── Admin responsive ── */
@media (max-width: 900px) {
  body.admin-page .main-inner              { padding: 14px; }
  body.admin-page .top-actions .hide-mobile { display: none; }
  body.admin-page                          { padding-bottom: 124px; }
  .split-wide, .two-col,
  .three-col, .split-3                     { grid-template-columns: 1fr; }
  .grid, .split-4                          { grid-template-columns: repeat(2, 1fr); }
  .big-title                               { font-size: 36px; }
  .mobile-nav                              { display: grid; }
  body.admin-page table                    { display: block; overflow-x: auto; white-space: nowrap; }
}


/* ── Per-page admin styles (from Admin-Subscriptions) ── */
body.admin-page .demo-notice         { display: flex; align-items: flex-start; gap: 10px; background: rgba(255,167,38,0.07); border: 1px solid rgba(255,167,38,0.25); border-radius: 10px; padding: 12px 14px; font-size: 13px; color: var(--silver); line-height: 1.5; }
body.admin-page .desc-text           { font-size: 14px; color: var(--muted); line-height: 1.6; margin-bottom: 14px; }
body.admin-page .pricing-grid        { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 14px 0; }
body.admin-page .pricing-field-label { font-size: 11px; letter-spacing: 1px; text-transform: uppercase; color: var(--silver); font-weight: 700; display: block; margin-bottom: 6px; }
body.admin-page .admin-num-input     { width: 100%; background: var(--card); border: 1.5px solid var(--border); border-radius: 8px; color: var(--light); padding: 10px 12px; font-size: 16px; font-family: 'DM Sans', sans-serif; transition: border-color .15s; }
body.admin-page .admin-num-input:focus-visible { outline: none; border-color: var(--green); box-shadow: 0 0 0 2px rgba(0,200,83,.2); }
body.admin-page .admin-num-input:focus { border-color: var(--green); }
.btn-min-140                         { min-width: 140px; }
body.admin-page .pricing-status      { display: inline-block; margin-left: 12px; font-size: 13px; font-weight: 500; min-height: 18px; vertical-align: middle; }
body.admin-page .mono-faint          { font-family: 'Courier New', monospace; font-size: 11px; color: var(--muted); line-height: 1.8; display: block; margin-top: 6px; }

/* ── Per-page admin styles (from Admin.html) ── */
body.admin-page .del-btn             { background: none; border: none; color: var(--muted); cursor: pointer; font-size: 16px; padding: 2px 6px; border-radius: 4px; transition: color .15s; }
body.admin-page .del-btn:hover       { color: var(--danger); }
body.admin-page .ai-note-text        { font-size: 12px; color: var(--muted); line-height: 1.5; padding: 8px 0; }
body.admin-page .name-na             { color: var(--muted); font-style: italic; font-size: 13px; }

.health-box   { background: var(--panel); border: 1px solid var(--border); border-radius: 12px; padding: 16px; }
.health-main  { font-family: 'Bebas Neue', sans-serif; font-size: 42px; color: var(--green); line-height: 1; }
.health-label { font-size: 12px; color: var(--muted); margin-top: 6px; line-height: 1.5; }

/* ── Per-page admin styles (from Admin-Logs + Admin-Queue-Manager) ── */
body.admin-page .primary    { background: #2563eb; color: white; }
body.admin-page .safe       { background: #16a34a; color: white; }
body.admin-page .warn-btn   { background: #ca8a04; color: white; }
body.admin-page .btn-danger { background: #dc2626; color: white; }
body.admin-page .light      { background: var(--card); color: var(--light); border: 1px solid var(--border); }
body.admin-page .metric { font-size: 30px; font-weight: bold; margin-top: 8px; color: var(--light); }
body.admin-page .empty-row { text-align: center; padding: 20px; opacity: .6; }
pre         { white-space: pre-wrap; background: var(--dark); color: var(--light); padding: 14px; border-radius: 12px; overflow: auto; font-size: 13px; border: 1px solid var(--border); }

/* ── Per-page admin styles (from Admin-Failed-Jobs) ── */
.th-cb      { width: 36px; }
.cb-styled  { cursor: pointer; accent-color: #00C853; }
.td-empty   { text-align: center; color: var(--muted); padding: 24px; }

/* ── Per-page admin styles (from Admin-Operate) ── */
.progress-block     { background: var(--card); border: 1px solid var(--border); border-radius: 14px; padding: 20px 24px; margin-bottom: 28px; display: flex; align-items: center; gap: 20px; }
.progress-bar-wrap  { flex: 1; background: var(--panel); border-radius: 99px; height: 10px; overflow: hidden; }
body.admin-page .progress-bar { height: 10px; background: #00C853; border-radius: 99px; transition: width .4s ease; }
.progress-label     { font-size: 13px; color: var(--muted); white-space: nowrap; }
.progress-title     { font-weight: 700; font-size: 16px; color: var(--light); min-width: 120px; }
.op-section         { margin-bottom: 28px; }
.section-icon       { font-size: 20px; }
.section-title      { font-size: 18px; font-weight: 700; color: var(--light); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.section-badge      { font-size: 11px; font-weight: 600; letter-spacing: .5px; text-transform: uppercase; padding: 3px 9px; border-radius: 99px; background: #2A0A0A; color: #f87171; border: 1px solid #dc2626; }
.section-badge.ok   { background: #0A2A0A; color: var(--green); border-color: var(--green); }
.section-badge.warn    { background: #1a1200; color: #e6b84a; border: 1px solid #7a5500; }
.section-badge.pending { background: #0a1a2a; color: #60a5fa; border: 1px solid #2563eb; }
body.operate-page .card          { overflow: hidden; margin-bottom: 10px; }
.op-card-header  { display: flex; align-items: center; gap: 12px; padding: 16px 18px; cursor: pointer; user-select: none; }
.op-card-header:hover { background: var(--panel); }
.check-wrap      { width: 22px; height: 22px; flex-shrink: 0; }
.check-box       { width: 22px; height: 22px; border: 2px solid var(--border); border-radius: 6px; display: flex; align-items: center; justify-content: center; cursor: pointer; transition: border-color .15s, background-color .15s; background: var(--card); }
.check-box.done  { background: #00C853; border-color: #00C853; }
.check-box.done::after { content: '✓'; color: #fff; font-size: 13px; font-weight: 700; }
.op-card-title   { font-size: 15px; font-weight: 600; color: var(--light); flex: 1; }
.op-card-sub     { font-size: 12px; color: var(--muted); margin-top: 1px; }
.op-chevron      { font-size: 12px; color: var(--silver); transition: transform .2s; }
.op-chevron.open { transform: rotate(180deg); }
.op-card-body    { padding: 0 18px 18px; border-top: 1px solid var(--border); display: none; }
.op-card-body.open { display: block; }
body.admin-page .steps { margin-top: 14px; display: flex; flex-direction: column; gap: 10px; }
body.admin-page .step  { display: flex; gap: 12px; align-items: flex-start; }
body.admin-page .step-num { width: 22px; height: 22px; background: var(--panel); border-radius: 6px; font-size: 12px; font-weight: 700; color: var(--green); display: flex; align-items: center; justify-content: center; flex-shrink: 0; margin-top: 1px; }
body.admin-page .step-text { font-size: 14px; color: var(--light); line-height: 1.5; }
body.admin-page .step-text a { color: var(--green); text-decoration: none; font-weight: 500; }
body.admin-page .step-text a:hover { text-decoration: underline; }
.code-block      { background: var(--panel); border: 1px solid var(--border); border-radius: 8px; padding: 10px 14px; margin-top: 8px; display: flex; align-items: center; gap: 10px; }
.code-text       { font-family: 'Courier New', monospace; font-size: 12px; color: var(--light); flex: 1; word-break: break-all; }
.copy-btn        { font-size: 11px; font-weight: 600; color: var(--green); background: none; border: 1px solid var(--border); border-radius: 6px; padding: 4px 10px; cursor: pointer; white-space: nowrap; transition: border-color .15s, opacity .15s; }
.copy-btn:hover  { background: var(--panel); }
.copy-btn.copied { color: var(--dark); background: #00C853; border-color: #00C853; }
.secret-row      { display: flex; gap: 8px; margin-top: 12px; align-items: stretch; }
.secret-input    { flex: 1; padding: 10px 13px; border: 1.5px solid var(--border); border-radius: 8px; font-size: 13px; font-family: 'DM Sans', sans-serif; color: var(--light); background: var(--card); transition: border-color .15s; min-width: 0; }
.secret-input:focus-visible { outline: none; border-color: var(--green); box-shadow: 0 0 0 2px rgba(0,200,83,.2); }
.secret-input:focus { border-color: #00C853; }
.show-btn        { padding: 10px 13px; background: var(--panel); border: 1.5px solid var(--border); border-radius: 8px; font-size: 12px; font-weight: 600; color: var(--silver); cursor: pointer; white-space: nowrap; transition: border-color .15s, color .15s, background-color .15s; flex-shrink: 0; }
.show-btn:hover  { background: var(--card); }
.op-save-btn     { padding: 10px 18px; background: #00C853; color: #fff; border: none; border-radius: 8px; font-size: 13px; font-weight: 700; cursor: pointer; white-space: nowrap; transition: background .15s; flex-shrink: 0; }
.op-save-btn:hover { background: #00b04a; }
.op-save-btn:disabled { background: var(--border); cursor: not-allowed; }
body.admin-page .save-status { font-size: 12px; margin-top: 6px; min-height: 18px; font-weight: 500; }
body.admin-page .save-status.ok  { color: var(--green); }
body.admin-page .save-status.err { color: #f87171; }
body.admin-page .note { background: #1a1200; border: 1px solid #7a5500; border-radius: 8px; padding: 10px 14px; font-size: 13px; color: #e6b84a; margin-top: 10px; line-height: 1.5; }
body.admin-page .note strong { color: #e6b84a; }
body.admin-page .note-info { background: #07192a; border-color: #2563eb; color: #60a5fa; }
body.admin-page .note-info strong { color: #60a5fa; }
body.admin-page .note-success { background: #0A2A0A; border-color: var(--green); color: var(--green); }
.link-btn        { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; color: var(--light); background: var(--panel); border: 1px solid var(--border); border-radius: 8px; padding: 7px 14px; text-decoration: none; margin-top: 10px; transition: border-color .15s, background-color .15s, color .15s; }
.link-btn:hover  { background: var(--card); border-color: var(--green); }
.link-btn-primary { background: #00C853; color: var(--dark); border-color: #00C853; }
.link-btn-primary:hover { background: #00b04a; border-color: #00b04a; }
.cf-url          { font-family: 'Courier New', monospace; font-size: 12px; color: var(--light); background: var(--panel); border: 1px solid var(--border); border-radius: 6px; padding: 6px 10px; display: inline-block; margin-top: 4px; word-break: break-all; }
#redeploy-banner { display: none; background: #1a1200; border: 2px solid #7a5500; border-radius: 14px; padding: 20px 24px; margin-bottom: 28px; }
#redeploy-banner.visible { display: block; }
.redeploy-title  { font-size: 15px; font-weight: 700; color: #e6b84a; margin-bottom: 8px; }
.redeploy-sub    { font-size: 13px; color: #e6b84a; margin-bottom: 12px; line-height: 1.5; }
.op-page-header  { margin-bottom: 24px; }
.op-page-title   { font-family: 'Bebas Neue', sans-serif; font-size: 36px; letter-spacing: 1px; color: var(--light); }
.op-page-sub     { font-size: 14px; color: var(--muted); margin-top: 4px; }
.op-field-label  { font-size: 13px; color: var(--silver); margin-top: 14px; margin-bottom: 2px; font-weight: 600; }
.op-sub-text     { font-size: 13px; color: var(--muted); margin-top: 4px; margin-bottom: 10px; }
.op-cmd-label    { font-size: 12px; font-weight: 600; color: var(--light); margin-bottom: 4px; margin-top: 10px; }
.op-cmd-label-12 { font-size: 12px; font-weight: 600; color: var(--light); margin-bottom: 4px; margin-top: 12px; }
.op-cmd-label-hd { font-size: 12px; font-weight: 600; color: var(--light); margin-bottom: 4px; }
.op-fn-group     { font-size: 12px; font-weight: 600; color: var(--silver); margin-top: 8px; margin-bottom: 2px; }
.op-fn-list      { font-size: 13px; color: var(--muted); line-height: 1.8; }
.check-hidden    { visibility: hidden; }
.plan-sub-note   { font-size: 11px; color: var(--muted); }

/* ── Pro overlay ────────────────────────────────────────────────────── */
.pro-locked          { position:relative;overflow:hidden; }
.pro-overlay         { position:absolute;inset:0;background:rgba(14,14,14,0.87);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px);border-radius:inherit;display:none;align-items:center;justify-content:center;z-index:20;padding:24px;box-sizing:border-box; }
.pro-overlay.visible { display:flex; }
.pro-overlay-content { text-align:center;max-width:300px; }
.pro-overlay-badge   { display:inline-block;background:var(--green);color:#000;font-weight:800;font-size:11px;border-radius:6px;padding:3px 10px;margin-bottom:10px;letter-spacing:.7px;text-transform:uppercase; }
.pro-overlay-title   { font-size:17px;font-weight:700;color:var(--light);margin:0 0 8px;line-height:1.3; }
.pro-overlay-msg     { font-size:13px;color:var(--silver);line-height:1.6;margin:0 0 18px; }
.pro-overlay-btn     { display:inline-block;background:var(--green);color:#000;font-weight:700;font-size:13px;border-radius:9px;padding:11px 24px;text-decoration:none;transition:opacity .2s; }
.pro-overlay-btn:hover { opacity:.85; }


/* ── SKIP NAVIGATION LINK ───────────────────────────────────── */
.skip-link {
  position: absolute;
  top: -100%;
  left: 0;
  background: var(--green);
  color: var(--dark);
  padding: 8px 16px;
  font-size: 14px;
  font-weight: 700;
  text-decoration: none;
  border-radius: 0 0 8px 0;
  z-index: 9999;
  transition: top 0s;
}
.skip-link:focus { top: 0; }

/* ── TOUCH TARGET & INTERACTION ─────────────────────────────── */
button, a, [role="button"], input[type="submit"], input[type="reset"], input[type="button"] {
  touch-action: manipulation;
}

/* ── REDUCED MOTION GLOBAL GUARD ────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

/* ── Blasty Guide — shared field-blur + tab-prompt utilities ─────────────── */
/* Applied by the login (and any future) Blasty guide to fields not yet reached */
/* Field is ahead of the current step — locked, blurred */
.bb-field-blur {
  pointer-events: none;
}
.bb-field-blur input,
.bb-field-blur .pw-wrap,
.bb-field-blur select,
.bb-field-blur textarea,
.bb-field-blur .plan-pick-btn,
.bb-field-blur .billing-toggle-btn,
.bb-field-blur .obf-label,
.bb-field-blur .obf-slot {
  filter: blur(2px);
  opacity: 0.4;
  transition: filter .35s ease, opacity .35s ease;
}

/* Field is behind the current step — dimmed but fully interactive */
.bb-field-done {
  opacity: 0.5;
  transition: opacity .35s ease;
}
.bb-field-done:hover {
  opacity: 0.75;
  transition: opacity .15s ease;
}

/* Tab buttons pulse to demand a pick before the form unlocks */
.bb-tab-prompt {
  animation: bb-tab-pulse 1.5s ease-in-out infinite;
}
@keyframes bb-tab-pulse {
  0%   { box-shadow: 0 0 0 0   rgba(57,255,20,.65); }
  60%  { box-shadow: 0 0 0 11px rgba(57,255,20,.0);  }
  100% { box-shadow: 0 0 0 0   rgba(57,255,20,.0);   }
}

/* ── Login page ─────────────────────────────────────────────────────────────── */

/* Screen-reader only — globally reusable */
.sr-only {
  position: absolute; width: 1px; height: 1px;
  overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap;
}

/* Billing period toggle */
.billing-toggle-row { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.billing-toggle-btn {
  flex: 1; padding: 7px 0; border-radius: 8px;
  border: 1px solid var(--border, #2a3a2a);
  background: transparent; color: #aaa;
  font-weight: 700; font-size: 13px; cursor: pointer; font-family: inherit;
  transition: background .2s, color .2s;
}
.billing-toggle-btn.active { background: #00C853; color: #0d1a0d; }
.billing-save-badge { font-size: 11px; font-weight: 600; color: #00C853; }
.billing-toggle-btn.active .billing-save-badge { color: #0d1a0d; }

/* Verify emoji header */
.verify-emoji { font-size: 2.5rem; text-align: center; margin-bottom: 12px; }

/* Login Blasty mascot size */
#pb-mascot { width: 70px; }

/* Email verification error state — hidden until JS shows it */
#ecv-error { display: none; }

/* Verify view */
.verify-view { display: none; padding: 8px 0; }
.verify-view h2 { margin: 0 0 10px; font-size: 1.25rem; }
.verify-view p { color: #555; font-size: .95rem; margin: 0 0 20px; line-height: 1.5; }
.verify-view .btn-submit { width: 100%; margin-bottom: 10px; }
#auth-card-wrap.verify-mode .auth-tabs,
#auth-card-wrap.verify-mode .auth-form,
#auth-card-wrap.verify-mode .back-home { display: none !important; }
#auth-card-wrap.verify-mode .verify-view { display: block; }

/* Email-confirmed landing view */
.email-confirmed-view { display: none; padding: 8px 0; text-align: center; }
.email-confirmed-view .confirmed-logo { font-family: 'Bebas Neue',sans-serif; font-size: 2rem; letter-spacing: .04em; color: #0d1a0d; margin-bottom: 16px; display: block; }
.email-confirmed-view .confirmed-logo span { color: #00C853; }
.email-confirmed-view .confirmed-icon { font-size: 3rem; margin-bottom: 12px; display: block; }
.email-confirmed-view h2 { margin: 0 0 10px; font-size: 1.25rem; color: #0d1a0d; }
.email-confirmed-view p { color: #555; font-size: .95rem; margin: 0 0 22px; line-height: 1.5; }
.email-confirmed-view .btn-submit { width: 100%; margin-bottom: 10px; }
.email-confirmed-view .reset-back { display: inline-block; margin-top: 4px; }
#auth-card-wrap.email-confirm-mode .auth-tabs,
#auth-card-wrap.email-confirm-mode .auth-form,
#auth-card-wrap.email-confirm-mode .back-home { display: none !important; }
#auth-card-wrap.email-confirm-mode .email-confirmed-view { display: block; }

/* Login Blasty floating guide */
#login-blasty-float {
  position: fixed; z-index: 900; pointer-events: none;
  display: flex; flex-direction: row-reverse; align-items: center;
  opacity: 0;
  transition: top .35s cubic-bezier(.34,1.56,.64,1),
              left .35s cubic-bezier(.34,1.56,.64,1),
              opacity .2s ease;
}
#login-blasty-float.visible { opacity: 1; }
#login-bubble {
  background: #fff; border: 1.5px solid rgba(180,205,240,.5);
  border-radius: 12px 4px 12px 12px;
  padding: 7px 9px; font-size: 11px; line-height: 1.45;
  color: #0d1f3c; box-shadow: 0 4px 18px rgba(0,0,0,.38);
  max-width: 130px; min-width: 80px; text-align: center;
  margin-right: 5px; font-family: 'DM Sans',sans-serif;
  transition: opacity .15s ease; word-break: break-word; position: relative;
}
#login-bubble::before {
  content: ''; position: absolute; right: -13px; top: 9px;
  border: 12px solid transparent; border-left-color: rgba(180,205,240,.6); border-right: none;
}
#login-bubble::after {
  content: ''; position: absolute; right: -10px; top: 11px;
  border: 10px solid transparent; border-left-color: #fff; border-right: none;
}

/* ── Mobile: Blasty fixed-floats at right edge, column layout to stay compact ── */
@media (max-width: 539px) {
  #login-blasty-float {
    flex-direction: column;
    align-items: center;
    width: 100px;
  }
  #login-blasty-float .pb-mascot        { width: 44px; }
  #login-blasty-float .mascot-svg       { width: 44px !important; height: auto !important; }
  #login-blasty-float #login-bubble     {
    margin-right: 0; margin-top: 4px;
    max-width: 100px; min-width: 70px;
    font-size: 10px; border-radius: 10px;
  }
  #login-blasty-float #login-bubble::before,
  #login-blasty-float #login-bubble::after { display: none; }
}

/* ── Legacy: Blasty inside card (kept for safety, no longer applied) ── */
#login-blasty-float.login-blasty-inline {
  position: relative !important;
  top: auto !important; left: auto !important;
  opacity: 1 !important;
  display: flex !important;
  flex-direction: column;
  align-items: center;
  width: 100%;
  padding: 6px 0 4px;
  transition: none;
}
#login-blasty-float.login-blasty-inline .pb-mascot {
  width: 60px;
}
#login-blasty-float.login-blasty-inline .mascot-svg {
  width: 60px !important;
  height: auto !important;
}
#login-blasty-float.login-blasty-inline #login-bubble {
  margin-right: 0;
  margin-top: 8px;
  max-width: 260px;
  min-width: 120px;
  font-size: 12px;
  border-radius: 12px;
  text-align: center;
}
#login-blasty-float.login-blasty-inline #login-bubble::before,
#login-blasty-float.login-blasty-inline #login-bubble::after {
  display: none;
}

/* Gate: before user picks a tab */
#auth-card-wrap.bb-unpicked .auth-tab {
  background: transparent !important; color: #aaa !important; border-color: #444 !important;
}
/* Only blur the <form> — social buttons and OR divider stay sharp and tappable */
#auth-card-wrap.bb-unpicked .auth-form > form {
  opacity: 0.15; filter: blur(4px); pointer-events: none; user-select: none;
}

/* Onboard editor accordion */
.ose-accordion { border:1.5px solid #e4e9f0; border-radius:10px; background:#fff; overflow:hidden; margin-bottom:14px; }
.ose-accordion-head { display:flex; align-items:center; justify-content:space-between; padding:11px 16px; cursor:pointer; list-style:none; user-select:none; }
.ose-accordion-head::-webkit-details-marker { display:none; }
.ose-accordion-title { font:600 13px 'DM Sans',sans-serif; color:#1e293b; }
.ose-acc-chev { font-size:13px; color:#94a3b8; transition:transform .2s; }
.ose-accordion[open] .ose-acc-chev { transform:rotate(180deg); }
.ose-accordion > div { padding:0 14px 14px; }

/* Onboard editor pane description line */
.ose-pane-desc { font-size:12px; color:#64748b; margin:-6px 0 14px; line-height:1.6; }

/* OB2 / Start Page field description */
.ob2-field-desc { font-size:12px; color:#64748b; margin:0 0 8px; line-height:1.6; }
.ob2-autosts    { display:block; font-size:11px; min-height:16px; margin-top:5px; }
/* Gray styling when the field is showing the default value (not yet customized) */
.mta.ob2-showing-default { color:#94a3b8 !important; }

/* Terms & Privacy checkbox row */
.terms-check-row { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 14px; font-size: 13px; color: #94a3b8; line-height: 1.5; }
.terms-check-row input[type="checkbox"] {
  appearance: none;
  -webkit-appearance: none;
  margin-top: 3px;
  flex-shrink: 0;
  width: 17px;
  height: 17px;
  cursor: pointer;
  border: 2px solid #555e6e;
  border-radius: 4px;
  background: #1a1f2e;
  position: relative;
  transition: background .15s, border-color .15s;
}
.terms-check-row input[type="checkbox"]:checked {
  background: #00C853;
  border-color: #00C853;
}
.terms-check-row input[type="checkbox"]:checked::after {
  content: '';
  position: absolute;
  left: 3px;
  top: 0px;
  width: 5px;
  height: 9px;
  border: 2px solid #fff;
  border-top: none;
  border-left: none;
  transform: rotate(45deg);
}
.terms-check-row input[type="checkbox"]:focus-visible { outline: 2px solid #00C853; outline-offset: 2px; }
.terms-check-row a { color: #00C853; text-decoration: none; }
.terms-check-row a:hover { text-decoration: underline; }

/* ═══════════════════════════════════════════════════════════════
   BlastyBiz-Onboard2 — moved from inline <style> block
═══════════════════════════════════════════════════════════════ */
    /* ─── OB2 NEW LAYOUT ─────────────────────────────────────── */
    .ob-page {
      display: flex;
      flex-direction: row;
      min-height: calc(100vh - var(--main-offset, 55px));
    }
    /* Blasty: fixed float tracking the active row — same approach as Login page */
    .ob-blasty-col {
      position: fixed; z-index: 900; pointer-events: none;
      display: flex; flex-direction: row-reverse; align-items: center; gap: 8px;
      opacity: 0;
      transition: top .35s cubic-bezier(.34,1.56,.64,1),
                  left .35s cubic-bezier(.34,1.56,.64,1),
                  opacity .2s ease;
    }
    .ob-blasty-col.visible { opacity: 1; }
    .pb-mascot { width: 70px; flex-shrink: 0; }
    .mascot-svg { width: 100%; height: auto; overflow: visible; }
    .pb-mascot-caption { display: none; }
    /* Speech bubble — tail points right toward mascot */
    .ob-q-bubble {
      position: relative;
      background: #fff; border: 1.5px solid rgba(180,205,240,.5);
      border-radius: 12px 4px 12px 12px;
      padding: 8px 10px; font-size: 12px; line-height: 1.45;
      color: #0d1f3c; box-shadow: 0 4px 18px rgba(0,0,0,.38);
      max-width: 200px; min-width: 100px;
      transition: opacity .15s ease; word-break: break-word;
    }
    .ob-q-bubble::before {
      content: ''; position: absolute; right: -13px; top: 9px;
      border: 12px solid transparent;
      border-left-color: rgba(180,205,240,.6); border-right: none;
    }
    .ob-q-bubble::after {
      content: ''; position: absolute; right: -10px; top: 11px;
      border: 10px solid transparent;
      border-left-color: #fff; border-right: none;
    }
    @media (max-width: 539px) {
      .ob-blasty-col { flex-direction: column; align-items: center; width: 100px; }
      .pb-mascot { width: 44px; }
      .ob-q-bubble { margin-top: 4px; max-width: 100px; min-width: 70px; font-size: 10px; border-radius: 10px; }
      .ob-q-bubble::before, .ob-q-bubble::after { display: none; }
    }
    @keyframes bb-in {
      from { opacity: 0; transform: translateY(9px); }
      to   { opacity: 1; transform: translateY(0); }
    }
    /* Left: Form column */
    .ob-form-col {
      flex: 1;
      min-width: 0;
      overflow-y: auto;
      padding: 28px 36px 80px;
      box-sizing: border-box;
      background: var(--bg, #000);
      order: 1;
    }
    /* Progress bar */
    .ob-progress-wrap {
      height: 4px;
      background: rgba(255,255,255,.07);
      border-radius: 2px;
      margin-bottom: 28px;
      overflow: hidden;
    }
    .ob-progress-bar {
      height: 100%;
      background: var(--green, #39ff14);
      border-radius: 2px;
      transition: width .5s ease;
    }
    /* Form sections */
    .obf-section { margin-bottom: 14px; }
    .obf-sec-title {
      font-size: 10px;
      font-weight: 700;
      letter-spacing: .14em;
      text-transform: uppercase;
      color: var(--muted, #666);
      margin-bottom: 6px;
      padding-bottom: 5px;
      border-bottom: 1px solid rgba(255,255,255,.06);
    }
    /* Field rows */
    .obf-row {
      display: flex;
      align-items: flex-start;
      gap: 12px;
      padding: 8px 10px;
      border-radius: 8px;
      border: 1px solid transparent;
      transition: opacity .35s ease, background .35s ease;
    }
    /* Blur/dim states driven by global .bb-field-blur / .bb-field-done classes */
    .obf-row.active {
      opacity: 1;
      background: rgba(57,255,20,.032);
      border-color: rgba(57,255,20,.11);
      margin: 2px -10px;
      padding: 14px 10px;
    }
    .obf-label {
      font-size: 10.5px;
      font-weight: 700;
      color: var(--muted, #888);
      text-transform: uppercase;
      letter-spacing: .07em;
      min-width: 96px;
      flex-shrink: 0;
      padding-top: 10px;
      line-height: 1.4;
    }
    .obf-slot { flex: 1; min-width: 0; }
    .obf-dash { color: var(--muted, #444); font-size: 14px; line-height: 2.8; }
    .obf-answered-val {
      font-size: 14px;
      color: var(--text, #c8dbf5);
      word-break: break-word;
      line-height: 1.5;
      padding: 7px 0;
      display: block;
    }
    .obf-row.answered { cursor: pointer; }
    .obf-row.answered:hover,
    .obf-row.answered:active { background: rgba(255,255,255,.04); border-color: rgba(255,255,255,.1); }
    .obf-edit-hint {
      font-size: 11px; color: var(--muted,#666);
      margin-left: 6px; opacity: 0;
      transition: opacity .2s;
      white-space: nowrap;
    }
    .obf-row.answered:hover .obf-edit-hint,
    .obf-row.answered:active .obf-edit-hint { opacity: 1; }
    /* User speech bubble (in active slot) — tail points RIGHT (away from Blasty on the left) */
    .obf-bubble {
      position: relative;
      background: #0c1828;
      border: 1.5px solid rgba(57,255,20,.2);
      border-radius: 4px 16px 16px 16px;
      padding: 12px 14px 10px;
      box-shadow: 0 4px 18px rgba(0,0,0,.3);
    }
    .obf-bubble::after {
      content: '';
      position: absolute;
      top: 14px;
      right: -9px;
      border: 9px solid transparent;
      border-left-color: #0c1828;
      border-right: none;
    }
    /* Fork step prompt */
    .ob-fork-prompt {
      background: rgba(57,255,20,.038);
      border: 1px solid rgba(57,255,20,.14);
      border-radius: 12px;
      padding: 16px;
      margin-bottom: 18px;
    }
    .ob-fork-prompt .ob2-choices { flex-direction: row; flex-wrap: wrap; }
    .ob-fork-prompt .ob2-choice-btn { width: auto; flex: 1; min-width: 150px; }
    /* Status (finish messages) */
    .ob-status {
      padding: 24px;
      text-align: center;
      color: var(--text, #e0ecff);
      font-size: 15px;
      line-height: 1.7;
    }
    .ob-status p { margin: 8px 0; }
    /* Flash on commit (mobile) */
    @keyframes ob-flash {
      0%   { background: rgba(57,255,20,.26); }
      100% { background: transparent; }
    }
    .obf-row.just-answered { animation: ob-flash .65s ease; }
    @media (max-width: 860px) {
      .ob-form-col { padding: 16px 14px 80px; overflow: visible; }
      .obf-row { flex-direction: column; gap: 4px; }
      .obf-label { min-width: unset; padding-top: 0; font-size: 10px; }
      .obf-bubble::after { display: none; }
    }
    .bubble-input {
      display: block;
      width: 100%;
      box-sizing: border-box;
      background: var(--panel, #111);
      border: 1.5px solid var(--border, #222);
      border-radius: 8px;
      padding: 11px 14px;
      font-size: 15px;
      color: var(--light, #fff);
      font-family: 'DM Sans', sans-serif;
      transition: border-color .18s;
    }
    .bubble-input:focus-visible { outline: none; border-color: var(--green); box-shadow: 0 0 0 3px rgba(0,200,83,.12); }
    .bubble-input::placeholder { color: var(--muted, #555); }

    .bubble-hint {
      font-size: 12px;
      color: var(--muted, #555);
      margin-top: 7px;
    }
    .bubble-action-btn {
      display: block;
      width: 100%;
      margin-top: 10px;
      padding: 12px;
      background: var(--green);
      color: #000;
      font-weight: 700;
      font-size: 14px;
      border: none;
      border-radius: 9px;
      cursor: pointer;
      font-family: 'DM Sans', sans-serif;
      transition: opacity .18s, transform .1s;
    }
    .bubble-action-btn:hover  { opacity: .88; }
    .bubble-action-btn:active { transform: scale(.98); }
    .bubble-action-btn:disabled { opacity: .42; cursor: not-allowed; }

    .pb-err {
      font-size: 13px;
      color: #e57373;
      margin-top: 7px;
      display: none;
    }

    /* ── Toggle switch ──────────────────────────────────────────── */
    .toggle-row {
      display: flex;
      align-items: center;
      gap: 12px;
      margin-top: 11px;
      padding: 9px 12px;
      background: rgba(255,255,255,.04);
      border-radius: 8px;
    }
    .toggle-label {
      font-size: 13px;
      color: var(--muted, #888);
      flex: 1;
      line-height: 1.4;
    }
    .toggle-switch {
      position: relative;
      width: 42px;
      height: 24px;
      flex-shrink: 0;
    }
    .toggle-switch input {
      opacity: 0;
      width: 0;
      height: 0;
      position: absolute;
    }
    .toggle-slider {
      position: absolute;
      inset: 0;
      background: #333;
      border-radius: 24px;
      cursor: pointer;
      transition: background .2s;
    }
    .toggle-slider::before {
      content: '';
      position: absolute;
      width: 18px;
      height: 18px;
      left: 3px;
      top: 3px;
      background: white;
      border-radius: 50%;
      transition: transform .2s;
    }
    .toggle-switch input:checked + .toggle-slider { background: var(--green); }
    .toggle-switch input:checked + .toggle-slider::before { transform: translateX(18px); }

    /* Mascot animations live in mascot.js — one source of truth. */

    /* ── Per-message mini Blasty avatar ─────────────────────────── */
    .mascot-msg-row {
      display: flex;
      align-items: flex-end;
      align-self: flex-start;   /* LEFT-align — Blasty messages are "incoming" */
      gap: 10px;
      margin-bottom: 4px;
      max-width: 88%;
    }
    .mascot-msg-row .bubble-blasty {
      flex: 1;
      min-width: 0;
      max-width: 100%;
      align-self: auto;
    }
    /* Speech bubble tail — shadow layer (slightly larger, behind) */
    .mascot-msg-row .bubble-blasty::before {
      content: '';
      position: absolute;
      left: -15px;
      bottom: 12px;
      width: 0;
      height: 0;
      border-top: 11px solid transparent;
      border-bottom: 11px solid transparent;
      border-right: 16px solid rgba(0,0,0,0.22);
    }
    /* Speech bubble tail — bright white layer (on top) */
    .mascot-msg-row .bubble-blasty::after {
      content: '';
      position: absolute;
      left: -11px;
      bottom: 14px;
      width: 0;
      height: 0;
      border-top: 9px solid transparent;
      border-bottom: 9px solid transparent;
      border-right: 13px solid #f0f5ff;
    }
    .mascot-msg-avatar {
      width: 48px;
      flex-shrink: 0;
    }
    .mascot-msg-avatar svg { width: 48px; height: auto; display: block; overflow: visible; }

    /* ── Choice buttons ─────────────────────────────────────────── */
    .ob2-choices {
      display: flex;
      flex-direction: column;
      gap: 10px;
      margin-bottom: 4px;
    }
    .ob2-choice-btn {
      width: 100%;
      padding: 13px 16px;
      background: var(--panel, #111);
      border: 1.5px solid var(--border, #333);
      border-radius: 10px;
      color: var(--light, #fff);
      font-size: 15px;
      font-family: 'DM Sans', sans-serif;
      font-weight: 500;
      text-align: left;
      cursor: pointer;
      transition: border-color .18s, background .18s, transform .1s;
    }
    .ob2-choice-btn:hover   { border-color: var(--green); background: rgba(0,200,83,.06); }
    .ob2-choice-btn:active  { transform: scale(.98); }
    /* ── Textarea input ─────────────────────────────────────────── */
    .bubble-textarea {
      width: 100%; min-height: 80px; resize: vertical;
      font-family: inherit; font-size: 15px; line-height: 1.55;
      background: var(--bg-input, #1a1a1a); color: var(--light, #fff);
      border: 1px solid var(--border, #333); border-radius: 10px;
      padding: 10px 12px; box-sizing: border-box; margin-bottom: 2px;
    }
    .bubble-textarea:focus-visible { outline: none; border-color: var(--green); box-shadow: 0 0 0 3px rgba(0,200,83,.12); }
    .bubble-textarea::placeholder { color: var(--muted, #555); }

    /* ── Multiselect (platforms) ─────────────────────────────────── */
    .ob2-multiselect { display: flex; flex-direction: column; gap: 10px; margin: 4px 0 8px; }
    .ob2-ms-label {
      display: flex; align-items: center; gap: 10px;
      font-size: 15px; cursor: pointer; padding: 10px 12px;
      background: var(--bg-input, #1a1a1a); border: 1px solid var(--border, #333);
      border-radius: 10px; transition: border-color .2s;
    }
    .ob2-ms-label:hover { border-color: var(--green); }
    .ob2-ms-label input[type=checkbox] {
      -webkit-appearance: none; appearance: none;
      width: 20px; height: 20px; min-width: 20px;
      border: 2px solid var(--border, #444);
      border-radius: 5px;
      background: transparent;
      cursor: pointer;
      position: relative;
      transition: background .15s, border-color .15s;
    }
    .ob2-ms-label input[type=checkbox]:checked {
      background: var(--green, #00c853);
      border-color: var(--green, #00c853);
    }
    .ob2-ms-label input[type=checkbox]:checked::after {
      content: '';
      position: absolute;
      left: 50%; top: 50%;
      width: 5px; height: 10px;
      border: 2.5px solid #000;
      border-top: none; border-left: none;
      transform: translate(-50%, -62%) rotate(45deg);
    }
    .ob2-ms-locked { opacity: 0.42; cursor: default; }
    .ob2-ms-locked:hover { border-color: var(--border, #333); }
    .ob2-pro-badge {
      font-size: 10px; font-weight: 700; background: var(--green, #39ff14);
      color: #000; border-radius: 4px; padding: 1px 6px; margin-left: auto;
    }

    .ob2-choice-btn.selected {
      border-color: var(--green);
      background: rgba(0,200,83,.14);
      color: var(--green);
      font-weight: 700;
    }


/* ══════════════════════════════════════════════════════════════
   CHOOSE PLAN PAGE  (body.choose-plan-page)
   The in-app plan step shown at the end of setup, once the business
   and campaign are already saved. Reuses the .pricing__* card system
   from the marketing pages so pricing looks the same everywhere.
══════════════════════════════════════════════════════════════ */

body.choose-plan-page .cp-eyebrow       { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .8px; color: var(--muted); margin-bottom: 8px; }
body.choose-plan-page .cp-hero          { text-align: center; }
body.choose-plan-page .cp-hero .sub     { max-width: 640px; margin-left: auto; margin-right: auto; }

/* ── Personalised platform breakdown ───────────────────────── */
.cp-plat-row      { display: grid; grid-template-columns: 28px minmax(0,1fr) 130px 130px; align-items: center; gap: 10px; padding: 10px 0; border-bottom: 1px solid var(--border); }
.cp-plat-row:last-child { border-bottom: none; }
.cp-plat-head     { font-size: 11px; font-weight: 700; letter-spacing: 1px; text-transform: uppercase; color: var(--muted); padding-bottom: 6px; }
.cp-plat-icon     { font-size: 18px; text-align: center; }
.cp-plat-name     { font-size: 15px; color: var(--light); font-weight: 600; min-width: 0; overflow-wrap: anywhere; }
.cp-plat-col      { font-size: 13px; color: var(--muted); }
.cp-plat-free     { color: var(--muted); }
.cp-plat-win      { color: var(--green); font-weight: 700; }
.cp-plat-note     { font-size: 13px; color: var(--muted); line-height: 1.6; margin: 14px 0 0; }

/* ── Billing period switch ─────────────────────────────────── */
.cp-billing       { display: flex; justify-content: center; gap: 8px; margin: 24px 0 18px; }
.cp-billing-opt   { background: var(--card); border: 1px solid var(--border); color: var(--silver); border-radius: 10px; padding: 10px 18px; font-family: inherit; font-size: 14px; font-weight: 600; cursor: pointer; display: flex; align-items: center; gap: 8px; transition: border-color .2s, color .2s, background-color .2s; }
.cp-billing-opt:hover  { border-color: var(--green); }
.cp-billing-opt.active { border-color: var(--green); color: var(--green); background: rgba(var(--green-rgb),.10); }
.cp-billing-save  { font-size: 11px; font-weight: 700; letter-spacing: .5px; text-transform: uppercase; background: var(--green); color: var(--dark); border-radius: 20px; padding: 2px 8px; }

/* ── Plan cards ────────────────────────────────────────────── */
.cp-plans         { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; align-items: stretch; }
.cp-card-line     { font-size: 14px; color: var(--silver); line-height: 1.6; margin: 0 0 18px; }
.cp-loading       { grid-column: 1 / -1; text-align: center; color: var(--muted); font-size: 14px; padding: 32px 0; }
.cp-inline-btn    { display: inline-block; width: auto; margin-top: 14px; padding: 12px 22px; }
.pricing__btn:disabled          { opacity: .5; cursor: not-allowed; }
.pricing__btn:disabled:hover    { transform: none; box-shadow: none; filter: none; }
.cp-foot          { text-align: center; font-size: 13px; color: var(--muted); line-height: 1.7; margin: 22px auto 0; max-width: 620px; }

@media (max-width: 899px) {
  .cp-plans      { grid-template-columns: 1fr; }
  .cp-plat-row   { grid-template-columns: 24px minmax(0,1fr) 96px 96px; gap: 8px; }
  .cp-plat-col   { font-size: 12px; }
  .cp-billing    { flex-wrap: wrap; }
}

/* ══════════════════════════════════════════════════════════════
   PAYMENT CONFIRMING OVERLAY  (Create screen, post-Square return)
   Square confirms payment server-to-server, so the owner can land back
   here before the webhook has flipped their plan. Showing free-plan
   limits to someone who just paid is worse than making them wait.
══════════════════════════════════════════════════════════════ */
.pay-confirm            { position: fixed; inset: 0; z-index: 9500; background: rgba(4,10,4,.94); display: flex; align-items: center; justify-content: center; padding: 24px; text-align: center; }
.pay-confirm[hidden]    { display: none; }
.pay-confirm-inner      { max-width: 380px; }
.pay-confirm-spinner    { width: 44px; height: 44px; margin: 0 auto 20px; border: 3px solid rgba(var(--green-rgb),.25); border-top-color: var(--green); border-radius: 50%; animation: pay-confirm-spin .9s linear infinite; }
@keyframes pay-confirm-spin { to { transform: rotate(360deg); } }
.pay-confirm-title      { font-family: 'Bebas Neue', sans-serif; font-size: 26px; letter-spacing: 1.5px; color: var(--light); margin: 0 0 10px; }
.pay-confirm-sub        { font-size: 14px; color: var(--muted); line-height: 1.7; margin: 0; }
@media (prefers-reduced-motion: reduce) {
  .pay-confirm-spinner  { animation-duration: 3s; }
}

/* ══════════════════════════════════════════════════════════════
   UPGRADE PROMPT — publish page (body.listing-preview-page)
   Second, softer ask: shown only when the owner is on the free plan
   AND at least one platform in this blast could have posted itself.
══════════════════════════════════════════════════════════════ */
body.listing-preview-page .pub-upsell             { border-color: var(--green); }
body.listing-preview-page .pub-upsell-body        { font-size: 14px; color: var(--silver); line-height: 1.7; margin: 0 0 14px; }
body.listing-preview-page .pub-upsell-body strong { color: var(--green); }
body.listing-preview-page .pub-upsell-btn         { display: inline-block; width: auto; padding: 13px 26px; }
body.listing-preview-page .pub-upsell-note        { font-size: 12px; color: var(--muted); margin: 12px 0 0; }
body.listing-preview-page .pub-plat-row.is-locked .pub-plat-icon { opacity: .5; }
body.listing-preview-page .badge.locked           { background: #151f15; color: var(--muted); border: 1px dashed var(--border); }

/* ── ACCOUNT PAGE: DATA RETENTION NOTICE ──────────────────────────────────── */
.acct-retention-note {
  margin: 10px 0 0;
  font-size: 12.5px;
  line-height: 1.6;
  color: var(--muted, #8a8a8a);
  border-left: 2px solid var(--border, #2a2a2a);
  padding-left: 10px;
}

/* ── Meet Blasty — homepage hero ────────────────────────────────────────── */
.meet-blasty {
  box-sizing: border-box;
  width: 100%;
  background: linear-gradient(160deg,#0a1a0a 0%,#0e1a10 60%,#111 100%);
  border: 1px solid rgba(57,255,20,.22);
  border-radius: 16px;
  padding: 14px 16px;
  box-shadow: 0 0 24px rgba(57,255,20,.07);
  cursor: pointer;
}
.meet-blasty:hover { border-color: rgba(57,255,20,.45); }
.meet-blasty__content {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
}
.meet-blasty__left {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.meet-blasty__bubble {
  background: #39ff14;
  color: #000;
  font-size: 13px;
  font-weight: 700;
  padding: 8px 14px;
  border-radius: 14px;
  line-height: 1.4;
  position: relative;
}
.meet-blasty__bubble::after {
  content: '';
  position: absolute;
  right: -9px;
  top: 50%;
  transform: translateY(-50%);
  border: 6px solid transparent;
  border-left-color: #39ff14;
  border-right: none;
}
@keyframes blastyGreet {
  0%,55%,100% { transform: translateY(0); }
  15%         { transform: translateY(-8px); }
  30%         { transform: translateY(-5px); }
  45%         { transform: translateY(-2px); }
}
.meet-blasty__right {
  flex-shrink: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  width: 80px;
}
.meet-blasty__mascot {
  height: 130px !important;
  width: auto !important;
  display: block;
  mix-blend-mode: lighten;
  animation: blastyGreet 3.5s ease-in-out infinite;
}
.meet-blasty__flame {
  width: 18px;
  height: 36px;
  margin-top: -6px;
  background: linear-gradient(to bottom,
    rgba(240,255,60,0.9) 0%,
    rgba(100,255,10,0.75) 40%,
    rgba(57,255,20,0.45) 70%,
    transparent 100%
  );
  border-radius: 50% 50% 40% 40% / 20% 20% 80% 80%;
  filter: blur(2.5px);
  box-shadow: 0 0 10px rgba(57,255,20,0.55), 0 4px 20px rgba(57,255,20,0.25);
  pointer-events: none;
}
.meet-blasty__hint {
  font-size: 12px;
  color: rgba(255,255,255,.4);
  margin: 0;
  letter-spacing: .3px;
}
/* Blasty popup */
.blasty-popup {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.84);
  z-index: 9999;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 20px;
  box-sizing: border-box;
  animation: bpFadeIn .2s ease;
}
.blasty-popup[hidden] { display: none; }
@keyframes bpFadeIn  { from { opacity:0; } to { opacity:1; } }
@keyframes bpSlideUp { from { opacity:0; transform:translateY(18px); } to { opacity:1; transform:translateY(0); } }
.blasty-popup__panel {
  background: linear-gradient(160deg,#0a1a0a,#0e1a10);
  border: 1px solid rgba(57,255,20,.3);
  border-radius: 20px;
  padding: 26px 24px 22px;
  max-width: 400px;
  width: 100%;
  text-align: center;
  position: relative;
  box-shadow: 0 0 48px rgba(57,255,20,.12);
  animation: bpSlideUp .25s ease;
}
.blasty-popup__close {
  position: absolute;
  top: 12px;
  right: 14px;
  background: none;
  border: none;
  color: rgba(255,255,255,.45);
  font-size: 20px;
  cursor: pointer;
  line-height: 1;
  padding: 4px;
}
.blasty-popup__close:hover { color: #fff; }
.blasty-popup__img {
  width: 90px;
  display: block;
  margin: 0 auto 14px;
  filter: drop-shadow(0 4px 14px rgba(57,255,20,.4));
}
.blasty-popup__title {
  font-size: 22px;
  font-weight: 800;
  color: #fff;
  margin: 0 0 14px;
}
.blasty-popup__title span { color: #39ff14; }
.blasty-popup__panel p {
  font-size: 14px;
  line-height: 1.65;
  color: rgba(255,255,255,.78);
  margin: 0 0 10px;
  text-align: left;
}
.blasty-popup__cta {
  text-align: center !important;
  font-size: 15px;
  color: rgba(255,255,255,.65) !important;
  margin-top: 16px !important;
}
.blasty-popup__cta strong {
  color: #39ff14;
  font-size: 17px;
  display: block;
  margin-top: 5px;
  letter-spacing: .5px;
}
.blasty-popup__actions {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 20px;
}
.blasty-popup__btn-primary {
  display: block;
  background: #39ff14;
  color: #000;
  font-size: 15px;
  font-weight: 800;
  text-align: center;
  padding: 13px 20px;
  border-radius: 10px;
  text-decoration: none;
  letter-spacing: .3px;
  transition: background .15s, transform .1s;
}
.blasty-popup__btn-primary:hover { background: #5fff38; transform: translateY(-1px); }
.blasty-popup__btn-ghost {
  display: block;
  background: none;
  border: 1px solid rgba(255,255,255,.18);
  color: rgba(255,255,255,.55);
  font-size: 13px;
  padding: 10px 20px;
  border-radius: 10px;
  cursor: pointer;
  width: 100%;
  transition: border-color .15s, color .15s;
}
.blasty-popup__btn-ghost:hover { border-color: rgba(255,255,255,.4); color: rgba(255,255,255,.85); }
/* Hero column layout for Meet Blasty */
@media (max-width: 767px) {
  .hero-img-col   { display: block !important; }
  .hero-blast-img { display: none; }
  .meet-blasty    { margin: 20px 0 14px; }
}
