
/* ===================== UI-D: DESIGN SYSTEM NORMALIZATION ===================== */
/* One source of truth for buttons, toggles, inputs, checkboxes + their states.   */
/* Loaded last so it harmonises legacy one-off classes without touching call sites.*/

/* Keyboard focus ring - consistent everywhere */
a:focus-visible,button:focus-visible,[role=button]:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.nav-item:focus-visible{outline:2px solid var(--brand-cyan,#2BD0C5);outline-offset:2px;border-radius:var(--r-sm,8px);}

/* Every button shares the platform typeface + pointer */
button,.btn,.btn-primary,.btn-secondary,.btn-sm,.btn-save,.btn-billing,.btn-approve-all,.account-btn,.social-btn,.login-btn,[role=button]{font-family:var(--font,inherit);}
button:not(:disabled),.btn:not(:disabled){cursor:pointer;}

/* UNIFORM disabled state for all interactive controls */
button:disabled,.btn:disabled,.btn-primary:disabled,.btn-secondary:disabled,.btn-sm:disabled,.btn-save:disabled,.btn-billing:disabled,.btn-approve-all:disabled,.login-btn:disabled,input:disabled,select:disabled,textarea:disabled{opacity:.5!important;cursor:not-allowed!important;box-shadow:none!important;transform:none!important;filter:none!important;}

/* PRIMARY intent (brand gradient) - unify legacy primaries to match .btn-primary */
.btn-primary,.btn-save,.btn-billing.primary{background:var(--gradient-action,linear-gradient(135deg,#2E7CF6,#2BD0C5))!important;color:#06111c!important;border:none!important;font-weight:800!important;}
.btn-primary:hover:not(:disabled),.btn-save:hover:not(:disabled),.btn-billing.primary:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px);opacity:1!important;box-shadow:0 6px 22px rgba(43,208,197,.24);}
.btn-primary:active:not(:disabled),.btn-save:active:not(:disabled),.btn-billing.primary:active:not(:disabled){transform:translateY(0);}

/* SECONDARY / outline intent - unify legacy outline/manage buttons */
.btn-secondary,.btn-billing.outline,.btn-billing.manage{background:var(--surface-2)!important;color:var(--text-1,#fff)!important;border:1px solid var(--border-strong)!important;font-weight:700!important;}
.btn-secondary:hover:not(:disabled),.btn-billing.outline:hover:not(:disabled),.btn-billing.manage:hover:not(:disabled){background:var(--surface-3)!important;border-color:var(--border-strong)!important;color:var(--text-1,#fff)!important;}

/* Native checkboxes -> clean on-brand box (settings that aren't toggles, form preview, studio options) */
input[type="checkbox"]{appearance:none;-webkit-appearance:none;width:16px;height:16px;min-height:0;border:1.5px solid var(--border-strong,#3a3a48);border-radius:5px;background:var(--surface-1,#14161f);cursor:pointer;position:relative;vertical-align:-3px;flex:none;transition:border-color .12s,background .12s;}
input[type="checkbox"]:hover:not(:disabled){border-color:var(--brand-cyan,#2BD0C5);}
input[type="checkbox"]:checked{background:var(--brand-cyan,#2BD0C5);border-color:var(--brand-cyan,#2BD0C5);}
input[type="checkbox"]:checked::after{content:"";position:absolute;left:4.5px;top:1px;width:4px;height:8px;border:solid #0b1020;border-width:0 2px 2px 0;transform:rotate(45deg);}

/* CRITICAL: re-hide the checkbox INSIDE toggle switches (they render as the slider, not a box) */
.toggle input,.toggle input[type="checkbox"]{appearance:none!important;-webkit-appearance:none!important;opacity:0!important;width:0!important;height:0!important;min-height:0!important;border:none!important;background:none!important;position:absolute!important;}
.toggle input::after,.toggle input[type="checkbox"]::after{display:none!important;content:none!important;}

/* ============ UI-D2: P4-UI2 normalization pass (one system, every screen) ============ */
/* Canonical type scale: 11 micro / 12 label / 12.5 hint / 13 body / 14 emphasis / 16 h2 /
   22-30 page titles. Canonical radii: 8 sm / 10 control / 12 card-inner / 16 card / 999 pill. */

/* BUTTONS: primary + secondary render as flex controls with ONE height per size so buttons
   sitting in the same row always align. Padding-based one-offs keep working, but the shared
   min-height + inline-flex kills the 1-3px baseline wobble between neighbours. */
.btn-primary,.btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:38px;border-radius:10px;line-height:1.2;}
.vh-actions .btn-primary,.vh-actions .btn-secondary{min-height:40px;padding:9px 18px;font-size:13px;}
.modal-footer .btn-primary,.modal-footer .btn-secondary{min-height:38px;padding:8px 16px;font-size:13px;}
/* DANGER intent: one class for every destructive action (delete, discard, remove). */
.btn-danger{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:38px;padding:8px 16px;border-radius:10px;background:rgba(242,84,91,.12)!important;border:1px solid rgba(242,84,91,.4)!important;color:var(--danger,#F2545B)!important;font-weight:700;font-size:13px;cursor:pointer;font-family:var(--font,inherit);transition:background .14s,border-color .14s;}
.btn-danger:hover:not(:disabled){background:rgba(242,84,91,.2)!important;border-color:var(--danger,#F2545B)!important;}
.btn-danger.solid{background:var(--danger,#F2545B)!important;color:#fff!important;border-color:transparent!important;}
.btn-danger.solid:hover:not(:disabled){background:var(--danger,#F2545B)!important;filter:brightness(1.1);}

/* OAUTH: the four Google/Microsoft buttons (sign-in + sign-up) share one class instead of
   four copies of the same inline style. */
.oauth-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:10px;background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:11px 18px;min-height:44px;font-size:14px;font-weight:600;color:var(--text);cursor:pointer;font-family:var(--font,inherit);transition:background .2s,border-color .2s;}
.oauth-btn:hover{background:var(--surface3);border-color:var(--border-strong);}
.oauth-btn + .oauth-btn{margin-top:8px;}

/* MODALS: one close affordance (32px hit target, hover surface) and one header rhythm. */
.modal-close{width:32px;height:32px;display:grid;place-items:center;border-radius:8px;font-size:18px;flex:none;transition:background .14s,color .14s;}
.modal-close:hover{background:var(--surface3);color:var(--text);}
.modal-header h3,.modal-header .modal-title{font-family:var(--font-head,inherit);font-size:16px;font-weight:700;letter-spacing:-.2px;margin:0;}

/* TOASTS: info was unstyled (fell back to plain); all three intents now read as one family. */
#toast{border-radius:12px;box-shadow:0 8px 40px rgba(0,0,0,.55);}
#toast.info{border-color:rgba(43,208,197,.4);color:var(--info,#2BD0C5);}

/* EMPTY / LOADING: one quiet pane placeholder instead of per-pane inline styles. */
.pane-loading{color:var(--text-dim);font-size:13px;padding:24px;}
.fc-empty{text-align:center;color:var(--text-dim);font-size:13px;padding:36px 20px;line-height:1.55;}

/* SEARCH ROWS: a query input always dominates its row (Boost mandate: search bars maximised). */
.search-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;}
.search-row .form-input,.search-row input[type=text],.search-row input[type=search]{flex:1 1 260px;min-width:0;}
.boost-search{flex:1 1 auto;min-width:0;width:100%;}

/* TRUNCATION: shared ellipsis helper for long names in tight rows. */
.trunc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;}

/* ============ P8: BOOST LEAD CARDS - ONE design system for all five Boost sources ============ */
/* Web Search, Community Finder, Email, LinkedIn and Partners all render results through this one
   component family: same surface/radius/padding, ONE score treatment (number + tiny label on a
   3-stop scale: >=80 green / 50-79 amber / <50 dim), one qualifier-chip style, one WHY-IT-FITS
   callout, one tag chip, one contact row, one action-row grammar (primary gradient first, ghost
   buttons after, inline-SVG icon buttons for thumbs/dismiss) and one editable-draft style. */
.boost-lead{background:var(--surface-1,var(--surface2,#13131b));border:1px solid var(--border);border-radius:16px;padding:16px 18px;margin-bottom:12px;display:flex;flex-direction:column;gap:10px;}
.boost-lead-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;}
.boost-lead-id{min-width:0;flex:1;}
.boost-lead-title{font-weight:700;font-size:14.5px;color:var(--text);line-height:1.3;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.boost-lead-sub{font-size:12px;color:var(--text-muted);margin-top:2px;}
.boost-lead-meta{font-size:11px;color:var(--text-dim);margin-top:2px;}
.boost-lead-tools{display:flex;gap:5px;flex:none;align-items:center;}
.boost-score{display:inline-flex;align-items:baseline;gap:4px;font-weight:800;font-size:12px;line-height:1.4;border-radius:100px;padding:2px 10px;border:1px solid transparent;white-space:nowrap;}
.boost-score .bs-label{font-size:9.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;opacity:.85;}
.boost-score.hi{color:#4ade80;background:rgba(74,222,128,.12);border-color:rgba(74,222,128,.35);}
.boost-score.mid{color:#f59e0b;background:rgba(245,158,11,.12);border-color:rgba(245,158,11,.35);}
.boost-score.low{color:var(--text-dim,#8a8aa0);background:rgba(138,138,160,.1);border-color:rgba(138,138,160,.3);}
.boost-qual{font-size:10px;font-weight:700;color:#4ade80;background:rgba(74,222,128,.12);border-radius:100px;padding:2px 8px;white-space:nowrap;}
.boost-qual.dim{color:var(--text-dim);background:var(--surface3,rgba(255,255,255,.06));}
.boost-qual.warn{color:var(--amber,#f59e0b);background:rgba(245,158,11,.12);}
.boost-why{background:var(--surface2);border-left:2px solid var(--cyan);border-radius:8px;padding:9px 12px;font-size:12.5px;color:var(--text);line-height:1.5;}
.boost-why .bw-t{display:block;font-size:10px;font-weight:700;color:var(--cyan);text-transform:uppercase;letter-spacing:.08em;margin-bottom:2px;}
.boost-tagrow{display:flex;flex-wrap:wrap;gap:6px;align-items:center;}
.boost-tag{font-size:11px;color:var(--text-muted);background:var(--surface2);border:1px solid var(--border);border-radius:100px;padding:2px 9px;}
.boost-contact{font-size:11px;color:var(--text-muted);display:inline-flex;align-items:center;gap:4px;}
.boost-contact svg{width:12px;height:12px;flex:none;color:var(--text-dim);}
.boost-contact a{color:var(--cyan);}
.boost-cta{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.boost-cta .btn-primary,.boost-cta .btn-secondary{min-height:34px;padding:6px 13px;font-size:12.5px;text-decoration:none;}
.boost-cta-hint{font-size:10.5px;color:var(--text-dim);line-height:1.35;}
.boost-iconbtn{width:34px;height:34px;min-height:34px;display:inline-flex;align-items:center;justify-content:center;border-radius:10px;background:var(--surface2);border:1px solid var(--border);color:var(--text-dim);cursor:pointer;padding:0;font-family:inherit;transition:color .14s,border-color .14s,background .14s;}
.boost-iconbtn svg{width:15px;height:15px;}
.boost-iconbtn:hover{color:var(--text);border-color:var(--border-strong,var(--border));background:var(--surface3,var(--surface2));}
.boost-iconbtn.danger:hover{color:#ff6a82;border-color:rgba(255,106,130,.4);}
.boost-draft{width:100%;font-size:12.5px;line-height:1.5;background:var(--surface2);border:1px solid var(--border);border-radius:10px;padding:10px 12px;min-height:150px;resize:vertical;font-family:inherit;color:var(--text);}
.boost-draft.short{min-height:74px;}
.boost-draft-head{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:4px;}
.boost-draft-label{font-size:11px;font-weight:700;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;}
.boost-edit-hint{font-size:10.5px;color:var(--text-dim);}
.boost-charcount{font-size:10.5px;color:var(--text-dim);margin-top:4px;}
.boost-charcount.over{color:#ff6a82;}
/* Autopilot header row: the toggle is ANCHORED into a full-width header line under the tab row
   (never a floating orphan on the right). Wraps cleanly at narrow widths. */
.boost-headrow{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:0 0 16px;padding:0 0 12px;border-bottom:1px solid var(--border);}
.boost-headrow .bh-note{font-size:12px;color:var(--text-dim);line-height:1.45;flex:1 1 260px;min-width:0;}
.boost-headrow .bh-ctl{display:flex;gap:8px;align-items:center;flex:none;}
