:root{--brand:#FF2800;--brand-dark:#C21F00;--brand-tint:#FFE7E1;--brand-tint-border:#FFC9BC;--dark:#1A1D1F;--bg:#F5F5F5;--card:#fff;--line:#E6E6E6;--text:#1A1D1F;--muted:#777777;--green:#16a34a;--red:#dc2626;--orange:#f59e0b;--purple:#7c3aed}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:'Poppins',-apple-system,BlinkMacSystemFont,'Segoe UI','PingFang SC',Arial,sans-serif}.shell{display:flex;min-height:100vh}.sidebar{width:264px;background:var(--dark);border-right:1px solid rgba(255,255,255,.08);padding:18px 14px;position:fixed;inset:0 auto 0 0;overflow:hidden;transition:width .2s ease;display:flex;flex-direction:column}
.nav{flex:1;overflow-y:auto;overflow-x:hidden;min-height:0;scrollbar-width:thin;scrollbar-color:rgba(255,255,255,.25) transparent}.nav::-webkit-scrollbar{width:6px}.nav::-webkit-scrollbar-track{background:transparent}.nav::-webkit-scrollbar-thumb{background:rgba(255,255,255,.25);border-radius:999px}.logo{display:flex;gap:10px;align-items:center;margin-bottom:20px}.logo img{max-width:100%;height:32px;width:auto;object-fit:contain}.logo small{display:block;color:var(--muted);font-size:12px}.nav-section{margin:16px 0 6px;color:rgba(255,255,255,.4);font-size:13px;font-weight:800;text-transform:uppercase}.nav button{width:100%;border:0;background:transparent;padding:12px;border-radius:10px;display:flex;gap:10px;align-items:center;color:rgba(255,255,255,.8);cursor:pointer;font-size:17px}.nav button:hover{background:rgba(255,255,255,.08)}.nav button.active{background:var(--brand);color:#fff;font-weight:800}.nav-group-label{display:flex;gap:10px;align-items:center;padding:12px 12px 6px;color:rgba(255,255,255,.85);font-size:17px;font-weight:700}.nav .nav-subitem{width:calc(100% - 34px);margin-left:34px;border:0;background:transparent;padding:7px 10px;border-radius:8px;display:block;text-align:left;color:rgba(255,255,255,.5);cursor:pointer;font-size:13px;font-weight:500;white-space:normal}.nav-subitem:hover{background:rgba(255,255,255,.08);color:rgba(255,255,255,.8)}.nav-subitem.active{background:var(--brand);color:#fff;font-weight:800}.shell.nav-collapsed .nav-subitem{display:none}.shell.nav-collapsed .nav-group-label{justify-content:center;padding:12px 0}.nav .badge{margin-left:auto;background:#fff;color:var(--brand);border-radius:999px;padding:1px 7px;font-size:11px}.nav-label{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;min-width:0;flex:1;text-align:left}.shell.nav-collapsed .sidebar{width:76px}.shell.nav-collapsed .workspace{margin-left:76px}.shell.nav-collapsed .logo,.shell.nav-collapsed .nav-section,.shell.nav-collapsed .nav-label,.shell.nav-collapsed .nav .badge,.shell.nav-collapsed .collapse-label{display:none}.shell.nav-collapsed .nav button{justify-content:center;padding:12px 0}.shell.nav-collapsed .collapse{padding:10px 0}.shell.nav-collapsed .collapse-icon{transform:rotate(180deg)}.collapse{flex-shrink:0;margin-top:16px;border:1px solid rgba(255,255,255,.15);background:var(--dark);border-radius:10px;padding:10px 12px;color:rgba(255,255,255,.65);cursor:pointer;font:inherit;font-size:13px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:8px;transition:background .15s,border-color .15s,color .15s}.collapse:hover{background:rgba(255,255,255,.1);border-color:rgba(255,255,255,.35);color:#fff}.collapse-icon{display:inline-block;font-size:15px;line-height:1;transition:transform .2s ease}.workspace{margin-left:264px;flex:1;min-width:0;transition:margin-left .2s ease}.header{height:68px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:14px;padding:0 24px;position:sticky;top:0;z-index:5}.header h1{margin:0;font-size:20px;white-space:nowrap}.freshness{display:none;align-items:center;gap:6px;color:var(--muted);font-size:12.5px;background:#f8fafc;border:1px solid var(--line);border-radius:999px;padding:5px 12px;white-space:nowrap}.freshness.show{display:inline-flex}.freshness::before{content:'🕒';font-size:12px}.header #lang{margin-left:auto}.header-left{font-size:15px}.searchbar{height:40px;min-width:360px;flex:1;display:flex;align-items:center;gap:8px;background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:0 12px;color:#94a3b8}.searchbar input{border:0;background:transparent;outline:0;width:100%;font-size:14px}.datebox{border:1px solid var(--line);border-radius:10px;padding:9px 12px;background:#fff;color:#475569;font-size:13px}.icon{position:relative;border:1px solid var(--line);background:#fff;border-radius:10px;width:38px;height:38px;display:grid;place-items:center;font-size:16px;cursor:pointer}.icon em{position:absolute;right:-5px;top:-5px;background:#ef4444;color:white;border-radius:99px;font-size:10px;padding:1px 5px;font-style:normal}.notif-item{padding:8px 6px;border-bottom:1px solid var(--line);cursor:pointer}.notif-item:last-child{border-bottom:0}.notif-item:hover{background:#f8fafc}.notif-item.unread{background:var(--brand-tint)}.ds-catalog{font-size:12.5px}.ds-catalog .panel{margin-bottom:10px;padding:12px 16px}.ds-catalog .panel summary{font-size:14px}.ds-catalog td,.ds-catalog th{vertical-align:top;white-space:normal;padding:5px 8px;line-height:1.4;overflow-wrap:break-word}.ds-catalog td:nth-child(1){width:85px;color:var(--muted)}.ds-catalog td:nth-child(2){width:210px;font-weight:600}.ds-catalog td:nth-child(3){width:250px}.ds-catalog td code{font-size:11px;background:#f8fafc;padding:1px 4px;border-radius:4px}.user{display:flex;gap:8px;align-items:center;font-size:13px}.user span{width:34px;height:34px;border-radius:999px;background:var(--brand-tint);color:var(--brand-dark);display:grid;place-items:center;font-weight:900}.user small{display:block;color:var(--muted)}.content{padding:22px 26px}.btn{border:1px solid var(--line);background:#fff;border-radius:10px;padding:8px 12px;cursor:pointer}.btn.primary{background:var(--brand);border-color:var(--brand);color:white}.btn.primary:hover{background:var(--brand-dark);border-color:var(--brand-dark)}.grid{display:grid;grid-template-columns:repeat(6,minmax(150px,1fr));gap:14px;margin-bottom:16px}.card,.panel{background:var(--card);border:1px solid var(--line);border-radius:16px;box-shadow:0 4px 16px #0f172a08}.card{padding:15px}.label{color:var(--muted);font-size:13px}.num{font-size:28px;font-weight:900;margin:6px 0}.trend{font-size:12px}.up{color:var(--green)}.down{color:var(--red)}.spark{height:34px;margin-top:6px}.panel{padding:16px;margin-bottom:16px}.panel h2{font-size:17px;margin:0 0 12px}.layout-3{display:grid;grid-template-columns:2fr 1.2fr 1.1fr;gap:16px}.layout-3-even{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:16px}.bottom-3{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:16px}.chart{height:230px;position:relative}.linechart{height:210px;background:linear-gradient(#fff,#fff),repeating-linear-gradient(to top,#eef2f7 0 1px,transparent 1px 42px);border-radius:12px;position:relative}.linechart svg{width:100%;height:100%}.tooltip{position:absolute;left:56%;top:40px;background:#111827;color:#fff;border-radius:8px;padding:8px 10px;font-size:12px;box-shadow:0 6px 20px #0003}.funnel{display:grid;gap:10px;padding-top:8px}.funnel div{height:38px;border-radius:8px;color:white;display:flex;align-items:center;justify-content:space-between;padding:0 14px;font-weight:800;margin:auto}.donut{width:170px;height:170px;border-radius:50%;margin:10px auto;display:grid;place-items:center;background:conic-gradient(var(--brand) 0 68%,#e5e7eb 68%)}.donut div{width:112px;height:112px;border-radius:50%;background:#fff;display:grid;place-items:center;text-align:center;font-weight:900;font-size:28px}.small{font-size:12px;color:var(--muted)}.tablewrap{overflow-x:auto;overflow-y:hidden;border:1px solid var(--line);border-radius:12px;scrollbar-width:thin;scrollbar-color:#cbd5e1 #f1f5f9}.tablewrap::-webkit-scrollbar{height:10px}.tablewrap::-webkit-scrollbar-track{background:#f1f5f9}.tablewrap::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:999px}.tablewrap::-webkit-scrollbar-thumb:hover{background:#94a3b8}table{width:100%;border-collapse:collapse;font-size:13px;background:white}th,td{border-bottom:1px solid var(--line);padding:10px 11px;text-align:left;white-space:normal;overflow-wrap:break-word;vertical-align:top}th{background:#f8fafc;color:#64748b;font-size:12px}.pill{display:inline-block;border-radius:999px;padding:3px 8px;font-size:12px;font-weight:800;white-space:nowrap}.high,.rejected,.needs-refresh,.loss,.high-risk,.critical{background:#fee2e2;color:#991b1b}.medium,.review,.suggested,.unknown-cost,.attention{background:#fef3c7;color:#92400e}.low,.confirmed,.completed-mock,.real,.approved,.profitable,.healthy{background:#dcfce7;color:#166534}.new,.session-csv,.new-reference{background:var(--brand-tint);color:var(--brand-dark)}.mock,.mock-refresh{background:#f3e8ff;color:#7e22ce}.done{background:#e0e7ff;color:#3730a3}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.filter{border:1px solid var(--line);border-radius:10px;padding:8px 10px;background:white}.linkbtn{border:0;background:transparent;color:var(--brand-dark);padding:0;cursor:pointer;font:inherit;text-align:left}.linkbtn:hover{text-decoration:underline}
/* A status pill that is also a link. Keeps the pill's own colour coding and
   just adds the affordance, rather than underlining it like a text link. */
.pill-link{border:0;background:transparent;padding:0;cursor:pointer;font:inherit;display:inline-block}
.pill-link .pill{transition:box-shadow .13s,transform .13s}
.pill-link:hover .pill{box-shadow:0 3px 10px #0f172a2e;transform:translateY(-1px)}
.pill-link:focus-visible{outline:0}
.pill-link:focus-visible .pill{outline:2px solid var(--brand);outline-offset:2px}.alert-list,.task-list{display:grid;gap:10px}.alert-item,.task-item{display:grid;grid-template-columns:28px 1fr auto;gap:10px;align-items:center;border-bottom:1px solid #f1f5f9;padding-bottom:9px}.alert-dot{width:24px;height:24px;border-radius:8px;display:grid;place-items:center;color:#fff}.red{background:var(--red)}.orange{background:var(--orange)}.blue{background:var(--brand)}.quick{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.quick button{border:1px solid var(--line);background:#fff;border-radius:12px;padding:14px 8px;cursor:pointer;color:#334155}.bars{display:grid;gap:10px}.barrow{display:grid;grid-template-columns:130px 1fr 45px;gap:10px;align-items:center}.barrow div{height:12px;background:#e5e7eb;border-radius:999px;overflow:hidden}.barrow i{display:block;height:100%;background:linear-gradient(90deg,var(--brand),#ff8f6b)}.overlay{position:fixed;inset:0;background:#1a1d1f66;z-index:20;display:flex;justify-content:flex-end}.drawer{width:min(880px,92vw);height:100%;overflow:auto;background:white;padding:24px;box-shadow:-12px 0 30px #0002}.close{float:right;border:0;background:#f1f5f9;border-radius:999px;width:34px;height:34px;font-size:22px}.drawer-icon-btn{float:right;border:0;background:#f1f5f9;border-radius:999px;width:34px;height:34px;font-size:17px;margin-right:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;text-decoration:none;color:#0f172a}.drawer-icon-btn:hover{background:#e2e8f0}.kv{display:grid;grid-template-columns:max-content 1fr;gap:10px 28px;background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:14px;margin:15px 0;position:relative}.kv b{white-space:nowrap;align-self:start}.kv-snapshot{padding-right:200px}.heat-ring-big{position:absolute;right:14px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:default}.heat-ring-big-inner{width:72%;height:72%;border-radius:50%;background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center}.heat-arrow{font-weight:900;line-height:1;font-size:2em}.heat-score{color:var(--muted);font-weight:700;line-height:1;margin-top:4px;font-size:.85em}.dp-popover{position:absolute;z-index:50;display:none;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 30px #0003;padding:12px;width:220px}.dp-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:13px;gap:8px}.dp-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}.dp-dow{color:var(--muted);font-size:11px;margin-bottom:4px}.dp-day{border:0;background:transparent;border-radius:8px;padding:6px 0;cursor:pointer;font-size:13px}.dp-day:hover:not(.dp-disabled){background:var(--brand-tint)}.dp-disabled{color:#cbd5e1;cursor:not-allowed}.report h3{margin-top:22px}@media(max-width:1300px){.grid{grid-template-columns:repeat(3,1fr)}.layout-3,.layout-3-even,.bottom-3{grid-template-columns:1fr}}@media(max-width:850px){.sidebar{position:static;width:100%}.workspace{margin-left:0}.shell{display:block}.header{flex-wrap:wrap;height:auto;padding:12px}.searchbar{min-width:100%}.grid{grid-template-columns:1fr}.content{padding:16px}.shell.nav-collapsed .sidebar{width:100%}.shell.nav-collapsed .workspace{margin-left:0}}
.report ul{line-height:1.9}.dash-hero{display:flex;align-items:center;justify-content:space-between;gap:16px;background:#0f172a;color:white;border-radius:18px;padding:22px;margin-bottom:18px}.dash-hero h2{margin:0;font-size:24px}.dash-hero p{margin:6px 0 0;color:#cbd5e1}.section-title{font-size:18px;font-weight:900;margin:22px 0 12px}.layout-2{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:18px 0}.grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}.trend{font-size:12px;color:var(--muted);font-weight:700}.trend.up{color:var(--green)}.trend.down{color:var(--red)}@media(max-width:1180px){.layout-2,.grid.four,.grid.two,.grid.three{grid-template-columns:1fr}.searchbar{min-width:160px}}
.login-shell{min-height:100vh;display:grid;place-items:center;background:var(--bg)}.login-card{width:min(380px,92vw);background:var(--card);border:1px solid var(--line);border-radius:16px;padding:32px;box-shadow:0 4px 16px #0f172a08}.login-card .logo{margin-bottom:20px}.login-card h1{margin:0 0 20px;font-size:20px}.login-card input{width:100%;border:1px solid var(--line);border-radius:10px;padding:10px 12px;margin-bottom:12px;font:inherit}.login-error{color:var(--red);font-size:13px;margin-bottom:10px;min-height:16px}
.perm-grid td,.perm-grid th{text-align:center}.perm-grid td:first-child,.perm-grid th:first-child{text-align:left}.perm-grid input[type=checkbox]{width:18px;height:18px;cursor:pointer;accent-color:var(--brand)}
.pager{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:10px;color:var(--muted);font-size:12px}.pager .btn:disabled{opacity:.45;cursor:not-allowed}.data-note{border-left:4px solid var(--orange);background:#fffbeb}.needs-refresh{background:#fef3c7;color:#92400e}.section-title small{color:var(--muted);font-size:13px;margin-left:8px}
.owner-badge{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:22px;margin-left:8px;padding:0 6px;border-radius:999px;background:var(--brand-tint);color:var(--brand-dark);font-size:11px;font-weight:900;vertical-align:middle;border:1px solid var(--brand-tint-border)}.company-name{vertical-align:middle}.owner-badge[title="Unassigned"]{background:#f1f5f9;color:#64748b;border-color:#e2e8f0}
.tabs{display:flex;gap:10px;margin-bottom:16px}.tabs button{border:1px solid var(--line);background:#fff;border-radius:999px;padding:10px 16px;font-weight:800;cursor:pointer}.tabs button.active{background:var(--brand);border-color:var(--brand);color:#fff}.tabs button.alert-tab{border-color:var(--red);color:var(--red)}.tabs button.alert-tab.active{background:var(--red);border-color:var(--red);color:#fff}.quote{background:#f8fafc;border-left:4px solid var(--brand);padding:12px;border-radius:10px}.insights{display:grid;gap:10px}.insights li{background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:12px}
.tabrow{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px}.tabrow .tabs{flex:1;margin-bottom:0}.searchbanner{border:2px dashed var(--brand);background:var(--brand-tint);color:var(--brand-dark);border-radius:999px;padding:10px 18px;font-weight:800;font-size:13px;cursor:pointer;display:inline-flex;align-items:center;gap:8px;white-space:nowrap}.searchbanner.active{background:var(--brand);border-style:solid;border-color:var(--brand);color:#fff}
.explorer{margin-bottom:16px;border:1px solid var(--brand-tint-border);background:var(--card);border-radius:16px;overflow:hidden;box-shadow:0 8px 24px #0f172a10}.explorer-head{background:var(--brand-tint);padding:14px 18px;border-bottom:1px solid var(--brand-tint-border)}.explorer-head h2{margin:0 0 3px;font-size:16px;color:var(--brand-dark)}.explorer-head p{margin:0;font-size:12.5px;color:var(--muted)}.explorer-body{padding:16px 18px 18px}.facets{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:10px}
.tag{display:inline-flex;align-items:center;border:1px solid var(--brand-tint-border);background:var(--brand-tint);color:var(--brand-dark);border-radius:999px;padding:4px 9px;font-size:12px;font-weight:900;white-space:nowrap}.tag.mission{background:#ecfdf5;border-color:#bbf7d0;color:#047857}.action-chip{border:1px solid #fde68a;background:#fffbeb;color:#92400e;border-radius:999px;padding:5px 10px;font-weight:900;cursor:pointer;white-space:nowrap}.status-select{border:1px solid var(--line);border-radius:999px;padding:7px 9px;background:#fff;font-weight:700;min-width:145px}.tag-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
/* The whole pill is the control: the <label> wraps its input, so clicking
   anywhere on it toggles. The input is clipped rather than display:none so it
   keeps its place in the tab order and can still be driven by keyboard. */
.tag-checkbox{position:relative;display:inline-flex;align-items:center;gap:7px;border:1.5px solid var(--line);border-radius:999px;padding:8px 15px;font-size:13px;font-weight:600;line-height:1.2;cursor:pointer;background:var(--card);color:var(--text);user-select:none;transition:border-color .13s,background .13s,color .13s,box-shadow .13s}
.tag-checkbox input{position:absolute;width:1px;height:1px;opacity:0;margin:0;pointer-events:none}
/* Rendered at all times so selecting a pill never reflows the row -- only its
   opacity changes. */
.tag-checkbox::before{content:'✓';font-weight:900;font-size:12px;opacity:0;transition:opacity .13s}
.tag-checkbox:has(input:checked)::before{opacity:1}
.tag-checkbox:hover{border-color:var(--brand-tint-border);background:var(--brand-tint)}
.tag-checkbox:has(input:focus-visible){box-shadow:0 0 0 3px var(--brand-tint);border-color:var(--brand)}
.tag-checkbox:has(input:checked){background:var(--brand-tint);border-color:var(--brand);color:var(--brand-dark);font-weight:800}
.tag-group{margin-bottom:18px}
.tag-group-label{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:2px}
.tag-group-hint{font-size:10.5px;font-weight:700;text-transform:none;letter-spacing:0;color:var(--muted);opacity:.8;border:1px solid var(--line);border-radius:999px;padding:1px 7px}
.tag-section-rule{height:1px;background:var(--line);margin:6px 0 18px}
.tag-checkbox.tag-grp-opportunity:has(input:checked){background:#dcfce7;border-color:#16a34a;color:#166534}.tag-checkbox.tag-grp-concern:has(input:checked){background:#fef3c7;border-color:#f59e0b;color:#92400e}.tag-checkbox.tag-grp-service:has(input:checked){background:#dbeafe;border-color:#3b82f6;color:#1d4ed8}.tag-checkbox.tag-grp-status:has(input:checked){background:#f1f5f9;border-color:#94a3b8;color:#475569}
:root[data-theme="dark"] .tag-checkbox.tag-grp-opportunity:has(input:checked){background:#14301e;border-color:#16a34a;color:#86efac}:root[data-theme="dark"] .tag-checkbox.tag-grp-concern:has(input:checked){background:#3a2a12;border-color:#f59e0b;color:#fbbf24}:root[data-theme="dark"] .tag-checkbox.tag-grp-service:has(input:checked){background:#1f2340;border-color:#3b82f6;color:#a5b4fc}:root[data-theme="dark"] .tag-checkbox.tag-grp-status:has(input:checked){background:#262a30;border-color:#94a3b8;color:#c4cad2}.tag-cell{display:flex;flex-wrap:wrap;gap:4px;white-space:normal;max-width:260px}.contact-history-list{display:grid;gap:8px}.contact-history-item{background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:0 12px}.contact-history-item summary{cursor:pointer;padding:10px 0;font-size:13px;list-style:revert}.contact-history-item summary::marker{color:var(--muted)}.contact-history-item summary .pill{margin-left:6px}.contact-history-item[open] summary{border-bottom:1px solid var(--line)}.contact-history-body{padding:10px 0}
.sales-drawer{width:min(760px,92vw)}.sales-drawer h3{margin-top:20px}.sales-drawer h4{margin:14px 0 6px}.tag[title],.action-chip[title]{position:relative}.tag[title]:hover,.action-chip[title]:hover{box-shadow:0 12px 26px rgba(15,23,42,.18);transform:translateY(-1px)}
.sales-tooltip{position:fixed;z-index:9999;display:none;max-width:440px;background:var(--dark);color:#fff;border-radius:16px;padding:16px 18px;font-size:14px;line-height:1.55;box-shadow:0 22px 55px rgba(26,29,31,.35);white-space:normal}.sales-tooltip br{line-height:1.7}
.metric-info{font-size:13px;vertical-align:middle;margin-left:4px;padding:0;color:var(--muted);opacity:.75}.metric-info:hover{opacity:1;color:var(--brand)}
.info-popover{position:fixed;z-index:60;max-width:440px;background:var(--dark);color:#fff;border-radius:14px;padding:14px 16px;font-size:13.5px;line-height:1.6;box-shadow:0 16px 40px #0000004a;white-space:normal;cursor:default}.info-popover br{line-height:1.8}
:root[data-theme="dark"] .info-popover{background:#000;box-shadow:0 16px 40px #00000090}
.pricing-tags{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:10px 0 18px}.rec-badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:6px 13px;font-size:13px;font-weight:800;white-space:nowrap;border:1px solid transparent}.rec-badge.up{background:#fef3c7;color:#92400e;border-color:#fde68a}.rec-badge.down{background:#fee2e2;color:#991b1b;border-color:#fecaca}.rec-badge.keep{background:#f1f5f9;color:#475569;border-color:#e2e8f0}.reason-tag{display:inline-flex;align-items:center;border-radius:999px;padding:5px 11px;font-size:12px;font-weight:700;white-space:nowrap}.reason-tag.bad{background:#fee2e2;color:#991b1b}.reason-tag.good{background:#dcfce7;color:#166534}.reason-tag.warn{background:#fef3c7;color:#92400e}.reason-tag.info{background:var(--brand-tint);color:var(--brand-dark)}.reason-tag.neutral{background:#f1f5f9;color:#64748b}
:root[data-theme="dark"] .rec-badge.up{background:#3a2a12;color:#fbbf24;border-color:#5a3d1a}:root[data-theme="dark"] .rec-badge.down{background:#3a1414;color:#fca5a5;border-color:#5a2020}:root[data-theme="dark"] .rec-badge.keep{background:#262a30;color:#9aa0a6;border-color:#33373d}:root[data-theme="dark"] .reason-tag.bad{background:#3a1414;color:#fca5a5}:root[data-theme="dark"] .reason-tag.good{background:#14301e;color:#86efac}:root[data-theme="dark"] .reason-tag.warn{background:#3a2a12;color:#fbbf24}:root[data-theme="dark"] .reason-tag.info{background:var(--brand-tint);color:var(--brand-dark)}:root[data-theme="dark"] .reason-tag.neutral{background:#262a30;color:#9aa0a6}
.tbl-search{justify-content:flex-end;margin-bottom:8px}.tbl-search input{max-width:260px}
.price-badge{display:inline-flex;align-items:center;border-radius:999px;padding:5px 11px;font-size:12px;font-weight:800;white-space:nowrap}.price-badge.below{background:#fef3c7;color:#92400e}.price-badge.above{background:#fee2e2;color:#991b1b}.price-badge.inline{background:#dcfce7;color:#166534}.price-badge.nomatch{background:#f1f5f9;color:#64748b}
:root[data-theme="dark"] .price-badge.below{background:#3a2a12;color:#fbbf24}:root[data-theme="dark"] .price-badge.above{background:#3a1414;color:#fca5a5}:root[data-theme="dark"] .price-badge.inline{background:#14301e;color:#86efac}:root[data-theme="dark"] .price-badge.nomatch{background:#262a30;color:#9aa0a6}
/* Product dossier -- the single-product view shared by the Pricing Intelligence
   drawer and its full-page ("open in new window") twin. Grids are auto-fit so
   the same markup fits both the 760px drawer and the full content width. */
.dsr{--dsr-good:#166534;--dsr-good-bg:#dcfce7;--dsr-warn:#92400e;--dsr-warn-bg:#fef3c7;--dsr-bad:#991b1b;--dsr-bad-bg:#fee2e2;--dsr-info:#1d4ed8;--dsr-info-bg:#dbeafe;--dsr-neutral:#475569;--dsr-neutral-bg:#f1f5f9;font-variant-numeric:tabular-nums}
:root[data-theme="dark"] .dsr{--dsr-good:#86efac;--dsr-good-bg:#14301e;--dsr-warn:#fbbf24;--dsr-warn-bg:#3a2a12;--dsr-bad:#fca5a5;--dsr-bad-bg:#3a1414;--dsr-info:#a5b4fc;--dsr-info-bg:#1f2340;--dsr-neutral:#9aa0a6;--dsr-neutral-bg:#262a30}
/* Customer Snapshot: 24-month trend chart + category mix bar. */
/* Uniform scaling (no preserveAspectRatio="none"): stretching the viewBox would
   squash the axis labels by whatever the container/viewBox ratio happens to be --
   noticeably in the 760px drawer. Height follows width instead. */
.mtrend{width:100%;height:auto;display:block}
.mtrend-bar{fill:var(--brand);opacity:.85}
.mtrend-bar.dim{opacity:.32}
.mtrend-bar:hover{opacity:1}
.mtrend-grid{stroke:var(--line);stroke-width:1}
.mtrend text{font-size:9px;fill:var(--muted)}
.mtrend text.mtrend-peak{fill:var(--brand-dark);font-weight:700}
.mtrend-legend{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:10px;font-size:12.5px;color:var(--muted)}
.mtrend-legend b{color:var(--text);font-weight:800}
.mix-bar{display:flex;height:28px;border-radius:8px;overflow:hidden;margin-bottom:14px}
.mix-seg{height:100%}
.mix-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px 20px}
.mix-item{display:flex;align-items:baseline;gap:8px;font-size:13px}
.mix-dot{width:10px;height:10px;border-radius:3px;flex:none;transform:translateY(1px)}
.mix-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mix-val{font-weight:800;font-variant-numeric:tabular-nums;white-space:nowrap;flex:none}
.mix-pct{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap;flex:none;min-width:44px;text-align:right}
.sku-cell{font-size:11.5px;color:var(--muted)}
/* Sales Assistant: two banners (Customer Snapshot / Contact & Workflow) that
   swap the body in place, in both the drawer and its full-page twin. */
.asst-banners{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:16px 0 20px}
.asst-banner{display:flex;align-items:center;gap:12px;text-align:left;cursor:pointer;font:inherit;
  background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;transition:border-color .15s,box-shadow .15s,background .15s}
.asst-banner:hover{border-color:var(--brand-tint-border);box-shadow:0 6px 18px #0f172a10}
.asst-banner.active{background:var(--brand);border-color:var(--brand);color:#fff}
.asst-banner-icon{font-size:20px;line-height:1;width:36px;height:36px;flex:none;border-radius:10px;display:grid;place-items:center;
  background:var(--brand-tint);color:var(--brand-dark)}
.asst-banner.active .asst-banner-icon{background:rgba(255,255,255,.2);color:#fff}
.asst-banner-text{display:flex;flex-direction:column;gap:2px;min-width:0}
.asst-banner-text b{font-size:14.5px;font-weight:800}
.asst-banner-text small{font-size:11.5px;color:var(--muted);line-height:1.35}
.asst-banner.active .asst-banner-text small{color:rgba(255,255,255,.85)}
.asst-banner-go{margin-left:auto;font-size:20px;font-weight:800;color:var(--muted);flex:none}
.asst-banner.active .asst-banner-go{color:#fff}
:root[data-theme="dark"] .asst-banner:hover{box-shadow:0 6px 18px #0006}
/* Warmth ring + factor rows */
.warmth-row{display:grid;grid-template-columns:150px 1fr;gap:22px;align-items:center}
.heat-ring-inline{width:150px;height:150px;border-radius:50%;display:grid;place-items:center}
.heat-ring-inline-in{width:72%;height:72%;border-radius:50%;background:var(--card);display:flex;flex-direction:column;align-items:center;justify-content:center}
.hri-arrow{font-size:30px;font-weight:900;line-height:1}
.hri-score{font-size:20px;font-weight:900;line-height:1;margin-top:3px;font-variant-numeric:tabular-nums}
.hri-band{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);margin-top:3px}
.hfs{display:grid;gap:13px}
.hf{display:grid;grid-template-columns:minmax(180px,240px) 1fr 56px;gap:13px;align-items:center;font-size:13px}
.hf-name{font-weight:700}
.hf-name small{display:block;font-weight:400;font-size:11.5px;color:var(--muted);line-height:1.4;margin-top:3px}
.hf-name small i{font-style:normal;color:var(--muted)}
.hf-track{height:9px;border-radius:999px;background:#eef2f7;overflow:hidden}
:root[data-theme="dark"] .hf-track{background:#33373d}
.hf-track i{display:block;height:100%;border-radius:999px}
.hf-val{font-size:12.5px;font-weight:800;text-align:right;font-variant-numeric:tabular-nums}
.hf-val span{color:var(--muted);font-weight:500}
/* Loyalty program cards inside the snapshot */
.prog-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 18px;display:flex;flex-direction:column;gap:11px}
.prog-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.prog-top b{font-size:14px;font-weight:800;display:block}
.prog-top small{display:block;font-size:11.5px;color:var(--muted);line-height:1.4;margin-top:3px}
.prog-fig{font-size:24px;font-weight:900;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.prog-fig small{font-size:11.5px;font-weight:700;color:var(--muted);margin-left:6px;letter-spacing:0}
.prog-figs{display:flex;flex-wrap:wrap;gap:8px 20px}
.prog-figs>div{font-size:11.5px;color:var(--muted)}
.prog-figs b{display:block;font-size:14px;color:var(--text);font-weight:800;font-variant-numeric:tabular-nums}
.ladder{display:flex;gap:4px}
.rung{flex:1;text-align:center;font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.03em;
  padding:5px 2px;border-radius:6px;background:#f1f5f9;color:#64748b;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rung.done{background:#dcfce7;color:#166534}
.rung.here{background:var(--brand);color:#fff}
:root[data-theme="dark"] .rung{background:#262a30;color:#9aa0a6}
:root[data-theme="dark"] .rung.done{background:#14301e;color:#86efac}
/* .rung.here is (0,2,0) and loses to the (0,3,0) dark override above, so restate it. */
:root[data-theme="dark"] .rung.here{background:var(--brand);color:#fff}
.asst-products{margin:0;padding-left:20px;font-size:13px;line-height:1.7}
@media(max-width:760px){.asst-banners{grid-template-columns:1fr}.warmth-row{grid-template-columns:1fr;justify-items:center}
  .hfs{width:100%}.hf{grid-template-columns:1fr 52px}.hf-name{grid-column:1/-1}}
/* Sigenergy Loyalty Program: progress-to-next-milestone bar + Elite tier pills. */
.loy-bar{position:relative;height:18px;min-width:96px;border-radius:999px;background:#eef2f7;overflow:hidden}
.loy-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--brand),#ff8f6b)}
.loy-bar.is-warm i{background:linear-gradient(90deg,#f59e0b,#fbbf24)}
.loy-bar.is-hot i{background:linear-gradient(90deg,#16a34a,#4ade80)}
.loy-bar span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;color:var(--text);mix-blend-mode:luminosity}
:root[data-theme="dark"] .loy-bar{background:#33373d}
.pill.bronze{background:#f5e6d3;color:#8a5a2b}.pill.silver{background:#e9edf2;color:#4b5563}.pill.gold{background:#fef3c7;color:#92400e}
.pill.platinum{background:#e0e7ff;color:#3730a3}.pill.platinum-plus{background:#ede9fe;color:#6d28d9}.pill.diamond{background:#cffafe;color:#0e7490}
:root[data-theme="dark"] .pill.bronze{background:#3a2a18;color:#d9a066}:root[data-theme="dark"] .pill.silver{background:#2a2d31;color:#c4cad2}
:root[data-theme="dark"] .pill.gold{background:#3a2a12;color:#fbbf24}:root[data-theme="dark"] .pill.platinum{background:#1f2340;color:#a5b4fc}
:root[data-theme="dark"] .pill.platinum-plus{background:#2a1f40;color:#c4b5fd}:root[data-theme="dark"] .pill.diamond{background:#12333a;color:#67e8f9}
/* Magento (Amasty) product labels, shown as tags anywhere a product appears --
   kept outside .dsr so the Pricing Intelligence table can use them too. */
.prod-labels{display:flex;flex-wrap:wrap;gap:5px;max-width:260px}
.prod-label{display:inline-block;max-width:100%;border-radius:7px;padding:3px 8px;font-size:11.5px;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border:1px solid transparent;cursor:default}
td .prod-labels{max-width:186px}
.prod-label.promo{background:var(--brand-tint);color:var(--brand-dark);border-color:var(--brand-tint-border)}
.prod-label.sale{background:#fef3c7;color:#92400e;border-color:#fde68a}
.prod-label.restricted{background:#fee2e2;color:#991b1b;border-color:#fecaca}
.prod-label.new{background:#dcfce7;color:#166534;border-color:#bbf7d0}
.prod-label.market{background:#dbeafe;color:#1d4ed8;border-color:#bfdbfe}
.prod-label.brand{background:#f8fafc;color:#475569;border-color:#e2e8f0}
.prod-label.expired{opacity:.5}
:root[data-theme="dark"] .prod-label.sale{background:#3a2a12;color:#fbbf24;border-color:#5a3d1a}
:root[data-theme="dark"] .prod-label.restricted{background:#3a1414;color:#fca5a5;border-color:#5a2020}
:root[data-theme="dark"] .prod-label.new{background:#14301e;color:#86efac;border-color:#1e4530}
:root[data-theme="dark"] .prod-label.market{background:#1f2340;color:#a5b4fc;border-color:#2e3560}
:root[data-theme="dark"] .prod-label.brand{background:#262a30;color:#9aa0a6;border-color:#33373d}
.dsr-labels{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:-8px 0 18px}
.dsr-labels .prod-labels{max-width:none}
.dsr-labels-cap{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
.dsr-actions{overflow:hidden;margin-bottom:6px}
.dsr-eyebrow{display:flex;flex-wrap:wrap;align-items:center;gap:7px;font-size:11.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin-bottom:8px}.dsr-eyebrow i{font-style:normal;opacity:.45}
.dsr-task-block{background:var(--dsr-neutral-bg);border-radius:16px;padding:18px 18px 4px;margin:22px 0}
.dsr-task-block .dsr-sec:last-child{margin-bottom:0}
.dsr h2.dsr-title{font-size:24px;font-weight:800;letter-spacing:-.01em;line-height:1.2;margin:0 0 6px}.dsr-sub{color:var(--muted);font-size:13.5px;margin:0 0 12px}.dsr-sub b{color:var(--text);font-weight:700}
.dsr-pills{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin-bottom:18px}
.dsr-pill{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:5px 11px;font-size:12px;font-weight:800;white-space:nowrap;background:var(--dsr-neutral-bg);color:var(--dsr-neutral)}.dsr-pill.good{background:var(--dsr-good-bg);color:var(--dsr-good)}.dsr-pill.warn{background:var(--dsr-warn-bg);color:var(--dsr-warn)}.dsr-pill.bad{background:var(--dsr-bad-bg);color:var(--dsr-bad)}.dsr-pill.info{background:var(--dsr-info-bg);color:var(--dsr-info)}
.dsr-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(158px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden;margin-bottom:22px}
.dsr-stat{background:var(--card);padding:14px 16px;min-width:0}.dsr-stat-label{font-size:11px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.dsr-stat-val{font-size:19px;font-weight:800;letter-spacing:-.01em;line-height:1.2;overflow-wrap:break-word}.dsr-stat-val small{font-size:11.5px;font-weight:700;color:var(--muted);margin-left:4px}
.dsr-stat-sub{font-size:11.5px;color:var(--muted);margin-top:5px;line-height:1.45}.dsr-stat-sub.good{color:var(--dsr-good);font-weight:700}.dsr-stat-sub.bad{color:var(--dsr-bad);font-weight:700}
.dsr-sec{margin-bottom:20px}.dsr-sec-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:9px}.dsr-sec-head h3{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0}.dsr-note{font-size:11.5px;color:var(--muted);text-align:right}
.dsr-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:16px 18px}.dsr-split{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:16px;align-items:start}
.dsr-kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:13px 20px;margin:0}.dsr-kv>div{min-width:0}.dsr-kv dt{font-size:11.5px;color:var(--muted);margin:0 0 2px}.dsr-kv dd{font-size:14px;font-weight:700;margin:0;overflow-wrap:break-word}.dsr-kv dd small{font-weight:500;color:var(--muted);font-size:12px}.dsr-kv dd.dim{font-weight:600;color:var(--muted);font-size:12.5px}
.dsr-callout{border-radius:12px;padding:14px 16px;display:flex;gap:11px;background:var(--dsr-neutral-bg);color:var(--text)}.dsr-callout .dsr-mark{font-size:15px;font-weight:900;line-height:1.4;color:var(--dsr-neutral)}.dsr-callout h4{margin:0 0 4px;font-size:13.5px;font-weight:800}.dsr-callout p{margin:0;font-size:12.5px;line-height:1.55}
.dsr-callout.good{background:var(--dsr-good-bg)}.dsr-callout.good .dsr-mark,.dsr-callout.good h4{color:var(--dsr-good)}
.dsr-callout.warn{background:var(--dsr-warn-bg)}.dsr-callout.warn .dsr-mark,.dsr-callout.warn h4{color:var(--dsr-warn)}
.dsr-callout.bad{background:var(--dsr-bad-bg)}.dsr-callout.bad .dsr-mark,.dsr-callout.bad h4{color:var(--dsr-bad)}
.dsr-callout.info{background:var(--dsr-info-bg)}.dsr-callout.info .dsr-mark,.dsr-callout.info h4{color:var(--dsr-info)}
.dsr-figs{display:flex;flex-wrap:wrap;gap:8px 20px;margin-top:10px}.dsr-figs>div{font-size:11.5px;color:var(--muted)}.dsr-figs b{display:block;font-size:14px;color:var(--text);font-weight:800}
.dsr-tl{position:relative;margin:0;padding:0;list-style:none}.dsr-tl::before{content:"";position:absolute;left:97px;top:6px;bottom:6px;width:2px;background:var(--line)}
.dsr-tli{position:relative;display:grid;grid-template-columns:86px 24px minmax(0,1fr);padding:0 0 18px}.dsr-tli:last-child{padding-bottom:0}
.dsr-tl-date{font-size:11.5px;color:var(--muted);text-align:right;padding:2px 12px 0 0;line-height:1.35}.dsr-tl-dotcol{display:flex;justify-content:center}
.dsr-tl-dot{width:11px;height:11px;border-radius:50%;background:var(--card);border:2.5px solid var(--brand);margin-top:4px;position:relative;z-index:1}
.dsr-tli.is-muted .dsr-tl-dot{border-color:var(--muted)}.dsr-tli.is-bad .dsr-tl-dot{border-color:var(--dsr-bad)}.dsr-tli.is-good .dsr-tl-dot{border-color:var(--dsr-good)}
.dsr-tl-body{padding-left:14px;min-width:0}.dsr-tl-reason{font-size:13px;font-weight:700;margin:0 0 7px}.dsr-tl-meta{font-size:11.5px;color:var(--muted);margin-top:6px}
.dsr-fin{display:flex;gap:8px 18px;flex-wrap:wrap;align-items:flex-end}.dsr-fin>div{display:flex;flex-direction:column;gap:2px;min-width:0}
.dsr-fin-l{font-size:9.5px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.dsr-fin-v{font-size:13px;font-weight:800;color:var(--text);white-space:nowrap}
.dsr-fin-v.good{color:var(--dsr-good)}.dsr-fin-v.bad{color:var(--dsr-bad)}.dsr-fin.costonly .dsr-fin-v{font-weight:700;color:var(--muted)}
.dsr-more{margin-top:10px}.dsr-empty{font-size:12.5px;color:var(--muted);margin:0}
/* Contact & Workflow banner: reason/talking-point lists in the dossier's own
   voice (small dot bullet) instead of default browser disc bullets; .is-warn
   swaps the bullet for the same red used by dsr-callout.bad. */
.dsr-reason-list{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.dsr-reason-list li{position:relative;padding-left:17px;font-size:13.5px;line-height:1.5;color:var(--text)}
.dsr-reason-list li::before{content:"";position:absolute;left:2px;top:8px;width:6px;height:6px;border-radius:50%;background:var(--brand)}
.dsr-reason-list.is-warn li::before{background:var(--dsr-bad);border-radius:1px;transform:rotate(45deg)}
.cc-list{display:grid;gap:10px}
.cc-card{background:var(--bg);border:2px solid var(--line);border-radius:14px;padding:13px 16px;display:grid;grid-template-columns:20px 40px 1fr auto;gap:13px;align-items:center;cursor:pointer;transition:border-color .12s,background .12s}
.cc-card:hover{border-color:var(--brand-tint-border)}
.cc-card:has(.cc-radio-input:checked){border-color:var(--brand);background:var(--brand-tint)}
.cc-radio-input{width:17px;height:17px;cursor:pointer;accent-color:var(--brand);margin:0}
.cc-avatar{width:40px;height:40px;border-radius:50%;background:var(--brand-tint);color:var(--brand-dark);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13.5px;flex-shrink:0}
.cc-card-system .cc-avatar{background:var(--dsr-neutral-bg);color:var(--dsr-neutral)}
.cc-name-row{display:flex;align-items:center;gap:8px;margin-bottom:3px;flex-wrap:wrap}
.cc-name{font-size:14px;font-weight:700}
.cc-role-tag{font-size:11px;font-weight:800;background:var(--dsr-info-bg);color:var(--dsr-info);border-radius:999px;padding:2px 9px}
.cc-system-badge{background:var(--dsr-neutral-bg);color:var(--dsr-neutral)}
.cc-fields a{color:var(--brand-dark);text-decoration:underline}
.cc-fields{font-size:12.5px;color:var(--muted)}
.cc-fields .cc-field+.cc-field::before{content:"·";margin:0 7px}
.cc-meta{font-size:11px;color:var(--muted);margin-top:5px}
.cc-actions{display:flex;gap:6px}
.icon-btn{border:1px solid var(--line);background:var(--card);border-radius:8px;width:30px;height:30px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:14px;color:var(--muted)}
.icon-btn:hover{background:var(--dsr-neutral-bg);color:var(--text)}
.icon-btn.danger:hover{background:var(--dsr-bad-bg);color:var(--dsr-bad);border-color:var(--dsr-bad-bg)}
.cc-form-card{background:var(--dsr-neutral-bg);border:1px solid var(--line);border-radius:14px;padding:16px 18px;margin-bottom:12px}
.cc-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px;margin-bottom:12px}
.cc-form-field{display:flex;flex-direction:column;gap:5px}
.cc-form-field label{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.cc-form-field input{border:1px solid var(--line);border-radius:9px;padding:9px 11px;font-size:13.5px;font-family:inherit;background:var(--card);color:var(--text)}
.cc-form-field input:focus{outline:2px solid var(--brand);outline-offset:-1px}
.cc-form-field textarea{border:1px solid var(--line);border-radius:9px;padding:9px 11px;font-size:13.5px;font-family:inherit;background:var(--card);color:var(--text);resize:vertical;min-height:56px}
.cc-form-field textarea:focus{outline:2px solid var(--brand);outline-offset:-1px}
@media(max-width:560px){.cc-form-grid{grid-template-columns:1fr}}
@media(max-width:620px){.dsr-tli{grid-template-columns:64px 20px minmax(0,1fr)}.dsr-tl::before{left:73px}.dsr-tl-date{font-size:11px;padding-right:8px}}
:root[data-theme="dark"]{color-scheme:dark;--bg:#14161a;--card:#1e2126;--line:#33373d;--text:#e8e8ea;--muted:#9aa0a6;--brand-tint:#3a1a12;--brand-tint-border:#5a2a1c;--brand-dark:#FF6B4A}
:root[data-theme="dark"] .header{background:var(--card)}
:root[data-theme="dark"] .freshness,:root[data-theme="dark"] .searchbar,:root[data-theme="dark"] .ds-catalog td code,:root[data-theme="dark"] .kv,:root[data-theme="dark"] .quote,:root[data-theme="dark"] .insights li,:root[data-theme="dark"] .contact-history-item,:root[data-theme="dark"] .notif-item:hover{background:#262a30}
:root[data-theme="dark"] .datebox,:root[data-theme="dark"] .icon,:root[data-theme="dark"] .btn,:root[data-theme="dark"] table,:root[data-theme="dark"] .quick button,:root[data-theme="dark"] .drawer,:root[data-theme="dark"] .dp-popover,:root[data-theme="dark"] .tag-checkbox,:root[data-theme="dark"] .status-select,:root[data-theme="dark"] .filter{background:var(--card);color:var(--text);border-color:var(--line)}
:root[data-theme="dark"] .tabs button:not(.active):not(.alert-tab){background:var(--card);border-color:var(--line)}
:root[data-theme="dark"] .tabs button.alert-tab:not(.active){background:var(--card)}
:root[data-theme="dark"] th{background:#262a30;color:#a8adb4}
:root[data-theme="dark"] .close{background:#2a2d31;color:var(--text)}
:root[data-theme="dark"] .drawer-icon-btn{background:#2a2d31;color:var(--text)}
:root[data-theme="dark"] .drawer-icon-btn:hover{background:#374151}
:root[data-theme="dark"] .heat-ring-big-inner,:root[data-theme="dark"] .donut div{background:var(--card)}
:root[data-theme="dark"] .searchbar input{color:var(--text)}
:root[data-theme="dark"] .linechart{background:linear-gradient(#1e2126,#1e2126),repeating-linear-gradient(to top,#2a2d31 0 1px,transparent 1px 42px)}
:root[data-theme="dark"] .donut{background:conic-gradient(var(--brand) 0 68%,#33373d 68%)}
:root[data-theme="dark"] .barrow div{background:#33373d}
:root[data-theme="dark"] .tablewrap::-webkit-scrollbar-track{background:#1e2126}
:root[data-theme="dark"] .tablewrap{scrollbar-color:#4a4f57 #1e2126}
:root[data-theme="dark"] .btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}
:root[data-theme="dark"] .data-note{background:#2e2510;color:var(--text)}
:root[data-theme="dark"] .action-chip{background:#2e2510;border-color:#4a3a14;color:#e8c56a}
:root[data-theme="dark"] .dash-hero{background:#0b0d10}
.group-header th{text-align:center;font-weight:900;font-size:12px;text-transform:uppercase;letter-spacing:.4px;padding:8px 11px}
.group-header th.ap-group{background:var(--brand-tint);color:var(--brand-dark)}
.group-header th.comp-group{background:#e0e7ff;color:#3730a3}
.ap-col-last{border-right:2px solid #cbd5e1}
:root[data-theme="dark"] .group-header th.ap-group{background:#3a1a12;color:#FF6B4A}
:root[data-theme="dark"] .group-header th.comp-group{background:#1f2340;color:#a5b4fc}
:root[data-theme="dark"] .ap-col-last{border-right-color:#4a4f57}
:root[data-theme="dark"] .sales-tooltip{background:#000;box-shadow:0 22px 55px rgba(0,0,0,.55)}/* --- Marketing Activity --------------------------------------------------- */
.btn.small{padding:5px 9px;font-size:12px;border-radius:8px}
.btn.danger{border-color:#fecaca;background:#fef2f2;color:#991b1b}
.btn.danger:hover{background:#fee2e2;border-color:#fca5a5}
.pill.ma-planned{background:var(--brand-tint);color:var(--brand-dark)}
.pill.ma-confirmed{background:#dcfce7;color:#166534}
.pill.ma-completed{background:#e0e7ff;color:#3730a3}
.pill.ma-cancelled{background:#f1f5f9;color:#64748b;text-decoration:line-through}
.ma-budget-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.ma-budget-head h2{margin:0}
.ma-budget-head>div{display:flex;gap:8px;align-items:center}
.ma-bar{height:16px;border-radius:999px;background:#e5e7eb;overflow:hidden}
.ma-bar-fill{height:100%;background:linear-gradient(90deg,var(--brand),#ff8f6b);border-radius:999px;transition:width .3s ease}
.ma-bar-legend{display:flex;gap:20px;flex-wrap:wrap;margin-top:8px;font-size:13px;color:var(--muted)}
.ma-bar-legend b{color:var(--text);font-variant-numeric:tabular-nums}
/* Fixed column count, not auto-fit: with auto-fit the number of columns
   changed with the panel width, so a `span 2` field landed in a different
   place on every layout and nothing lined up. */
.ma-form{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px 16px;margin:16px 0;align-items:end}
.ma-form.ma-inline{background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.ma-form label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--muted);font-weight:700;min-width:0}
.ma-form label.wide{grid-column:span 2}
.ma-form label.full{grid-column:1/-1}
.ma-form input,.ma-form select,.ma-tokenbox{border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--text);font:inherit;font-size:13px;font-weight:400}
.ma-form input,.ma-form select{padding:0 10px;height:38px}
/* Controls hug the bottom of their cell so a label that wraps to two lines
   does not push its own input out of line with the ones beside it. */
.ma-form label>input,.ma-form label>select,.ma-tokenbox{margin-top:auto}
.ma-form input:focus,.ma-form select:focus,.ma-tokenbox:focus-within{outline:2px solid var(--brand);outline-offset:-1px}
/* The chips sit inside the control rather than above it -- as a separate row
   they made this one field taller than every other field in the grid. */
.ma-tokenbox{display:flex;flex-wrap:wrap;align-items:center;gap:5px;min-height:38px;padding:4px 6px;cursor:text}
.ma-token-input{flex:1;min-width:120px;border:0!important;outline:0!important;background:transparent;padding:0 4px!important;height:28px!important;font:inherit;font-size:13px;color:var(--text)}
.ma-actions{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.ma-mini{border:1px solid var(--line);border-radius:8px;padding:5px 7px;width:72px;background:#fff;color:var(--text);font:inherit;font-size:12.5px}
.ma-mini.wide{width:150px}
.ma-auto{color:var(--muted);font-variant-numeric:tabular-nums}
.ma-score{display:inline-block;min-width:52px;padding:2px 7px;border-radius:999px;font-weight:900;font-variant-numeric:tabular-nums;background:linear-gradient(90deg,var(--brand-tint) var(--s),transparent var(--s));border:1px solid var(--brand-tint-border);color:var(--brand-dark)}
:root[data-theme="dark"] .btn.danger{border-color:#7f1d1d;background:#2a1515;color:#fca5a5}
:root[data-theme="dark"] .btn.danger:hover{background:#3a1a1a}
:root[data-theme="dark"] .pill.ma-confirmed{background:#14331f;color:#86efac}
:root[data-theme="dark"] .pill.ma-completed{background:#1e2044;color:#a5b4fc}
:root[data-theme="dark"] .pill.ma-cancelled{background:#2a2d31;color:#94a3b8}
:root[data-theme="dark"] .ma-bar{background:#2a2d31}
:root[data-theme="dark"] .ma-form.ma-inline{background:#22252a;border-color:#3a3f47}
:root[data-theme="dark"] .ma-form input,:root[data-theme="dark"] .ma-form select,:root[data-theme="dark"] .ma-mini{background:#1f2226;border-color:#3a3f47}
.ma-detail{padding:22px 24px}
.ma-detail>h2:first-child{margin-top:0}
.ma-mini.amt{width:104px;text-align:right;font-variant-numeric:tabular-nums}
.ma-typeahead{position:relative}
.ma-colist{display:none;position:absolute;z-index:30;top:100%;left:0;right:0;margin-top:2px;max-height:280px;overflow-y:auto;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 30px #0f172a24}
.ma-colist.open{display:block}
.ma-co{display:flex;justify-content:space-between;align-items:baseline;gap:12px;width:100%;border:0;background:transparent;padding:8px 12px;text-align:left;cursor:pointer;font:inherit;font-size:13px;color:var(--text)}
.ma-co small{color:var(--muted);font-size:11.5px;white-space:nowrap;font-variant-numeric:tabular-nums}
.ma-co:hover,.ma-co.active{background:var(--brand-tint);color:var(--brand-dark)}
:root[data-theme="dark"] .ma-colist{background:#1f2226;border-color:#3a3f47}
:root[data-theme="dark"] .ma-co:hover,:root[data-theme="dark"] .ma-co.active{background:#3a1a12;color:#FF6B4A}
.ma-chips{display:contents}
.ma-chip{display:inline-flex;align-items:center;gap:5px;background:var(--brand-tint);border:1px solid var(--brand-tint-border);color:var(--brand-dark);border-radius:999px;padding:3px 5px 3px 9px;font-size:12px;font-weight:900;letter-spacing:.3px}
.ma-chip button{border:0;background:transparent;color:inherit;cursor:pointer;font:inherit;font-size:14px;line-height:1;padding:0 3px;opacity:.6}
.ma-chip button:hover{opacity:1}
.ma-chip-inline{display:inline-block;min-width:26px;text-align:center;background:var(--brand-tint);color:var(--brand-dark);border-radius:999px;padding:1px 6px;font-size:11px;font-weight:900;margin-right:6px}
:root[data-theme="dark"] .ma-chip,:root[data-theme="dark"] .ma-chip-inline{background:#3a1a12;border-color:#5a2a1c;color:#FF9478}
@media(max-width:1150px){.ma-form{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:640px){.ma-form{grid-template-columns:minmax(0,1fr)}.ma-form label.wide{grid-column:span 1}}
:root[data-theme="dark"] .ma-tokenbox{background:#1f2226;border-color:#3a3f47}
/* --- Workspace chat -------------------------------------------------------- */
.ch-shell{display:grid;grid-template-columns:280px 1fr;gap:0;height:calc(100vh - 150px);min-height:520px;
  border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--card)}
.ch-rail{border-right:1px solid var(--line);background:#FAFAFA;overflow-y:auto;padding-bottom:14px}
.ch-railhead{display:flex;align-items:center;gap:8px;padding:14px 14px 8px}
.ch-railhead h2{margin:0;font-size:15px}
.ch-railhead .btn{margin-left:auto}
.ch-group{padding:12px 14px 5px;font-size:11px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;color:var(--muted)}
.ch-conv{display:grid;grid-template-columns:34px 1fr auto;gap:9px;align-items:center;width:100%;border:0;
  background:transparent;padding:8px 14px;cursor:pointer;text-align:left;font:inherit;color:var(--text);border-left:3px solid transparent}
.ch-conv:hover{background:var(--card)}
.ch-conv.active{background:var(--card);border-left-color:var(--brand)}
.ch-cbody{min-width:0;display:block}
.ch-cname{display:block;font-weight:700;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-cprev{display:block;color:var(--muted);font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ch-conv.un .ch-cprev{color:var(--text);font-weight:600}
.ch-unread{background:var(--brand);color:#fff;border-radius:999px;min-width:19px;height:19px;padding:0 6px;
  font-size:11px;font-weight:800;display:grid;place-items:center;font-style:normal}
.ch-av{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-weight:900;font-size:12px;
  background:var(--brand-tint);color:var(--brand-dark);border:1px solid var(--brand-tint-border);flex:none}
.ch-av.chan{background:#E0E7FF;color:#3730A3;border-color:#C7D2FE;border-radius:10px}
.ch-av.sys{background:#FEF3C7;color:#92400E;border-color:#FDE68A;border-radius:10px}
.ch-thread{display:flex;flex-direction:column;min-height:0}
.ch-thead{display:flex;align-items:center;gap:11px;padding:12px 18px;border-bottom:1px solid var(--line)}
.ch-ttitle{font-weight:800;font-size:15px}
.ch-msgs{flex:1;overflow-y:auto;padding:16px 18px 6px;min-height:0}
.ch-m{display:grid;grid-template-columns:34px 1fr;gap:10px;padding:3px 0;position:relative}
.ch-m.me{grid-template-columns:1fr 34px}
.ch-m.me .ch-av{order:2}.ch-m.me .ch-mb{order:1;display:flex;flex-direction:column;align-items:flex-end}
.ch-m.me .ch-who{flex-direction:row-reverse}
.ch-who{display:flex;align-items:baseline;gap:8px;margin-bottom:3px}
.ch-who b{font-size:12.5px;font-weight:800}.ch-who i{font-style:normal;color:var(--muted);font-size:11px}
.ch-bub{background:#F1F3F5;border-radius:4px 14px 14px 14px;padding:8px 12px;display:inline-block;
  max-width:min(560px,84%);line-height:1.5;word-break:break-word;font-size:13.5px}
.ch-m.me .ch-bub{background:var(--brand-tint);border:1px solid var(--brand-tint-border);border-radius:14px 4px 14px 14px}
.ch-img{display:block;max-width:320px;margin-top:5px;border-radius:12px;overflow:hidden;border:1px solid var(--line)}
.ch-img img{display:block;width:100%;height:auto}
.ch-att{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;padding:8px 12px 8px 9px;
  max-width:330px;margin-top:5px;text-decoration:none;color:var(--text)}
.ch-att:hover{border-color:var(--brand-tint-border)}
.ch-att b{display:block;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:210px}
.ch-att small{color:var(--muted);font-size:11px}
.ch-fic{width:32px;height:32px;border-radius:8px;background:var(--brand);color:#fff;display:grid;place-items:center;
  font-size:9.5px;font-weight:900;flex:none}
.ch-dl{margin-left:auto;color:var(--muted)}
.ch-rxrow{display:flex;gap:5px;margin-top:5px;flex-wrap:wrap}
.ch-rx{border:1px solid var(--line);background:var(--card);border-radius:999px;padding:1px 8px;font-size:12px;
  cursor:pointer;font-family:inherit;color:var(--text)}
.ch-rx.mine{background:var(--brand-tint);border-color:var(--brand-tint-border);color:var(--brand-dark);font-weight:800}
.ch-addrx{position:absolute;top:0;right:0;border:1px solid var(--line);background:var(--card);border-radius:999px;
  width:26px;height:26px;cursor:pointer;font-size:12px;opacity:0;transition:opacity .12s}
.ch-m:hover .ch-addrx{opacity:1}
.ch-sys{display:flex;gap:10px;align-items:flex-start;background:#FFFBEB;border:1px solid #FDE68A;border-radius:12px;
  padding:10px 12px;margin:8px 0;font-size:13px}
:root[data-theme="dark"] .ch-sys{background:#2E2712;border-color:#5A4A1C}
.ch-comp{border-top:1px solid var(--line);padding:10px 18px 14px;position:relative}
.ch-chips{display:flex;gap:7px;flex-wrap:wrap}
.ch-chips:not(:empty){margin-bottom:8px}
.ch-chip{display:flex;align-items:center;gap:6px;border:1px solid var(--brand-tint-border);background:var(--brand-tint);
  color:var(--brand-dark);border-radius:9px;padding:4px 5px 4px 9px;font-size:12px;font-weight:700}
.ch-chip button{border:0;background:transparent;color:inherit;cursor:pointer;font-size:14px;padding:0 3px;font-family:inherit}
.ch-box{border:1px solid var(--line);border-radius:14px;padding:6px 6px 6px 12px;display:flex;align-items:flex-end;gap:6px;background:var(--card)}
.ch-box:focus-within{outline:2px solid var(--brand);outline-offset:-1px}
#chTa{flex:1;border:0;outline:0;resize:none;background:transparent;font:inherit;font-size:13.5px;color:var(--text);
  max-height:140px;min-height:24px;line-height:1.5;padding:5px 0}
.ch-send{width:34px;height:34px;padding:0;border-radius:10px;flex:none}
.ch-hint{margin:7px 0 0}
.ch-pop{position:absolute;bottom:62px;right:18px;background:var(--card);border:1px solid var(--line);border-radius:14px;
  box-shadow:0 14px 38px #0f172a2e;padding:9px;width:288px;display:none;z-index:20;
  grid-template-columns:repeat(8,1fr);gap:2px}
.ch-pop.open{display:grid}
.ch-pop button{border:0;background:transparent;font-size:18px;padding:5px 0;border-radius:8px;cursor:pointer;font-family:inherit}
.ch-pop button:hover{background:var(--brand-tint)}
@media(max-width:900px){.ch-shell{grid-template-columns:1fr}.ch-rail{display:none}}
:root[data-theme="dark"] .ch-rail{background:#17191D}
:root[data-theme="dark"] .ch-bub{background:#23262B}
:root[data-theme="dark"] .ch-av.chan{background:#1E2044;color:#A5B4FC;border-color:#2E3470}
:root[data-theme="dark"] .ch-av.sys{background:#3A2E12;color:#FCD34D;border-color:#5A4A1C}
/* --- Floating chat dock ----------------------------------------------------- */
#chatDock{position:fixed;right:22px;bottom:22px;z-index:40}
.chd-bubble{position:relative;width:56px;height:56px;border-radius:50%;border:0;background:var(--brand);
  color:#fff;font-size:24px;cursor:pointer;box-shadow:0 10px 26px #FF280059;transition:transform .15s,box-shadow .15s}
.chd-bubble:hover{transform:translateY(-2px);box-shadow:0 14px 32px #FF280070}
.chd-bubble:focus-visible{outline:3px solid var(--brand-dark);outline-offset:3px}
.chd-bubble em{position:absolute;top:-3px;right:-3px;background:#fff;color:var(--brand-dark);border-radius:999px;
  min-width:22px;height:22px;padding:0 6px;font-size:11.5px;font-weight:900;font-style:normal;
  display:grid;place-items:center;border:2px solid var(--brand)}
.chd-panel{width:min(376px,calc(100vw - 44px));height:min(536px,calc(100vh - 120px));background:var(--card);
  border:1px solid var(--line);border-radius:16px;box-shadow:0 20px 54px #0f172a33;display:flex;flex-direction:column;overflow:hidden}
.chd-head{display:flex;align-items:center;gap:9px;padding:11px 12px;border-bottom:1px solid var(--line);flex:none}
.chd-head b{font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chd-back{border:0;background:transparent;font-size:21px;line-height:1;cursor:pointer;color:var(--muted);padding:0 2px;font-family:inherit}
.chd-back:hover{color:var(--text)}
.chd-acts{margin-left:auto;display:flex;gap:3px}
.chd-ic{border:0;background:transparent;width:28px;height:28px;border-radius:8px;cursor:pointer;
  font-size:15px;color:var(--muted);font-family:inherit}
.chd-ic:hover{background:var(--brand-tint);color:var(--brand-dark)}
.chd-list{overflow-y:auto;flex:1;padding:6px 0}
.chd-list .ch-conv{padding:8px 12px}
.chd-msgs{flex:1;overflow-y:auto;padding:12px 12px 4px;min-height:0}
.chd-msgs .ch-bub{max-width:100%;font-size:13px}
.chd-msgs .ch-att,.chd-msgs .ch-img{max-width:240px}
.chd-comp{border-top:1px solid var(--line);padding:8px 10px 10px;flex:none}
.chd-comp .ch-box{border-radius:12px;padding:5px 5px 5px 10px}
#chdTa{flex:1;border:0;outline:0;resize:none;background:transparent;font:inherit;font-size:13px;color:var(--text);
  max-height:88px;min-height:22px;line-height:1.45;padding:4px 0}
@media(max-width:640px){#chatDock{right:14px;bottom:14px}}
.ch-search{padding:4px 14px 8px}
.ch-search input{width:100%;border:1px solid var(--line);border-radius:9px;padding:6px 9px;background:var(--card);
  color:var(--text);font:inherit;font-size:12.5px}
.ch-search input:focus{outline:2px solid var(--brand);outline-offset:-1px}
.chd-panel .ch-search{padding:8px 10px 4px}
.mp-nocost{color:var(--orange);font-size:11.5px;font-weight:700;white-space:nowrap}
.dsr-costwin{border:1px solid var(--line);border-left:4px solid var(--muted);border-radius:0 12px 12px 0;
  padding:13px 16px;margin-top:12px;background:var(--card)}
.dsr-costwin.ok{border-left-color:var(--green)}
.dsr-costwin.bad{border-left-color:var(--red)}
.dsr-costwin.warn{border-left-color:var(--orange)}
.dsr-cw-head{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap;font-size:13px}
.dsr-cw-grid{display:grid;grid-template-columns:max-content 1fr;gap:6px 20px;font-size:12.5px}
.dsr-cw-grid span{color:var(--muted)}
.dsr-cw-grid b{font-variant-numeric:tabular-nums}
.dsr-costwin p.small{margin:10px 0 0;line-height:1.55}
.dsr-secondline{display:block;margin-top:3px;color:var(--muted);font-weight:600;font-size:12.5px;
  padding-top:3px;border-top:1px dashed var(--line)}
.dsr-stats .dsr-secondline{border-top:0;padding-top:0;margin-top:2px;font-size:11.5px}
.dsr-fin-book{margin-top:5px;padding-top:5px;border-top:1px dashed var(--line);color:var(--muted);font-size:11.5px;font-variant-numeric:tabular-nums}

/* --- Missing truncation + muted rules -------------------------------------
   .clamp2/.clamp3/.muted were used in app.js (17 call sites) but had never
   been defined, so every "clamped" cell rendered its full text. That was a
   direct cause of the wall-of-text on Market Watch. App-wide fix. */
.clamp2,.clamp3{display:-webkit-box;-webkit-box-orient:vertical;overflow:hidden}
.clamp2{-webkit-line-clamp:2}
.clamp3{-webkit-line-clamp:3}
.muted{color:var(--muted)}

/* --- Facebook Market Watch banner (condensed) ---------------------------- */
.fb-chart{width:100%;max-width:520px;height:104px;display:block;margin:6px 0 2px}
.fb-verdict{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:10px 24px;margin-bottom:4px}
.fb-verdict b{font-size:19px}
.fb-verdict .small{margin-left:8px;color:var(--muted)}
.fb-figs{display:flex;gap:20px;flex-wrap:wrap;font-size:13px;color:var(--muted)}
.fb-figs em{font-style:normal;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}
.fb-neg li.sev{border-left:4px solid var(--red)}
.fb-neg li p{margin:3px 0 0}
.fb-watch{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.fb-watch span{border:1px solid var(--line);border-radius:999px;padding:3px 10px;white-space:nowrap}
.fb-watch em{font-style:normal;color:var(--muted);font-variant-numeric:tabular-nums}
.fb-mini{display:inline-block;height:7px;border-radius:999px;background:var(--brand);vertical-align:middle;margin-left:7px}
.fb-bars{display:grid;gap:7px}
.fb-barrow{display:grid;grid-template-columns:230px 1fr 42px;gap:12px;align-items:center;border:0;background:transparent;
  padding:4px 6px;border-radius:9px;cursor:pointer;font:inherit;color:inherit;text-align:left}
.fb-barrow:hover{background:var(--brand-tint)}
.fb-barrow>span{display:flex;align-items:center;gap:8px;font-weight:700}
.fb-barrow>i{height:9px;background:#eef1f5;border-radius:999px;overflow:hidden}
.fb-barrow>i>b{display:block;height:100%;background:var(--brand);border-radius:999px}
.fb-barrow>em{font-style:normal;text-align:right;font-weight:800;font-variant-numeric:tabular-nums}
.fb-dot{width:8px;height:8px;border-radius:50%;flex:0 0 auto}
.fb-dot.ok{background:#16a34a}.fb-dot.bad{background:var(--red)}.fb-dot.mid{background:#94a3b8}
.fb-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:26px}
.fb-cols h3{margin:0 0 10px;font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.fb-list{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:13px;line-height:1.45}
.fb-list li{display:flex;gap:7px;align-items:flex-start}
.fb-pills{display:flex;flex-wrap:wrap;gap:7px}
.fb-more{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin-top:4px}
:root[data-theme="dark"] .fb-barrow>i{background:#262a30}
:root[data-theme="dark"] .fb-barrow:hover{background:#1f2328}
@media(max-width:1100px){.fb-cols{grid-template-columns:1fr}.fb-barrow{grid-template-columns:150px 1fr 40px}}
/* Topic-mix bars carry the group's sentiment, so the mix reads without the
   legend: red = complaint-heavy, grey = neutral, green = positive. */
.fb-barrow.sen-negative>i>b{background:var(--red)}
.fb-barrow.sen-positive>i>b{background:#16a34a}
.fb-barrow.sen-neutral>i>b,.fb-barrow.sen-mixed>i>b{background:#94a3b8}
.fb-mini{background:#cbd5e1}

/* --- Match Review (Competitor Monitoring) --------------------------------- */
.mr-banner.needs{border-color:var(--red);color:var(--red)}
.mr-banner.needs em{font-style:normal;font-weight:900;background:var(--red);color:#fff;
  border-radius:999px;padding:1px 8px;margin-left:5px}
.mr-banner.active.needs{background:var(--red);border-color:var(--red);color:#fff}
.mr-banner.active.needs em{background:#fff;color:var(--red)}
.mr-clear{color:#16a34a;font-weight:900;margin-left:4px}
.mr-filters{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 16px}
.mr-chip{border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:999px;
  padding:6px 13px;font-weight:700;font-size:13px;cursor:pointer}
.mr-chip b{margin-left:4px;font-variant-numeric:tabular-nums}
.mr-chip.active{background:var(--brand);border-color:var(--brand);color:#fff}
.mr-pair{border:1px solid var(--line);border-radius:13px;margin-bottom:11px;overflow:hidden;background:var(--card)}
/* A decided pair stays fully legible -- colleagues must be able to see it and
   change it, so it is marked by a coloured spine, never by dimming. */
.mr-pair.decided{opacity:1;border-left:4px solid var(--line)}
.mr-pair.decided:has(.mr-btn.on.same){border-left-color:#16a34a}
.mr-pair.decided:has(.mr-btn.on.different){border-left-color:#94a3b8}
.mr-pair.decided:has(.mr-btn.on.unsure){border-left-color:#f59e0b}
.mr-editable{margin:-8px 0 12px;font-style:italic}
.mr-clearbtn{border:1px dashed var(--line);background:transparent;color:var(--muted);border-radius:9px;
  padding:6px 11px;font-size:12.5px;cursor:pointer}
.mr-clearbtn:hover{color:var(--text);border-style:solid}
.mr-meta{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding:9px 14px;
  border-bottom:1px solid var(--line);font-size:11.5px;color:var(--muted)}
.mr-why{font-weight:700;color:var(--brand-dark)}
.mr-by{margin-left:auto}
.mr-side{display:grid;grid-template-columns:62px 1fr auto;gap:12px;align-items:baseline;padding:9px 14px}
.mr-side+.mr-side{border-top:1px dashed var(--line)}
.mr-who{font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.mr-nm{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.45;word-break:break-word}
.mr-nm mark{background:#fdeeea;color:#b4341f;font-weight:800;border-radius:3px;padding:0 3px}
.mr-pr{font-weight:800;white-space:nowrap;font-variant-numeric:tabular-nums}
.mr-gap{padding:0 14px 9px;font-size:12px;color:var(--muted)}
.mr-gap b{color:var(--text)}
.mr-acts{display:flex;gap:8px;padding:10px 14px;border-top:1px solid var(--line);flex-wrap:wrap;align-items:center}
.mr-btn{border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:9px;
  padding:7px 14px;font-weight:700;font-size:13px;cursor:pointer}
.mr-btn:disabled{opacity:.5;cursor:wait}
.mr-btn.on.same{background:#dcfce7;border-color:#16a34a;color:#166534}
.mr-btn.on.different{background:#f1f5f9;border-color:#94a3b8;color:#475569}
.mr-btn.on.unsure{background:#fef3c7;border-color:#f59e0b;color:#92400e}
.mr-note{flex:1;min-width:180px;border:1px solid var(--line);border-radius:9px;padding:7px 11px;
  background:var(--card);color:var(--text);font:inherit;font-size:13px}
:root[data-theme="dark"] .mr-nm mark{background:#3a1c15;color:#ff8a70}
:root[data-theme="dark"] .mr-btn.on.same{background:#14301e;border-color:#16a34a;color:#86efac}
:root[data-theme="dark"] .mr-btn.on.different{background:#26251f;border-color:#94a3b8;color:#c4cad2}
:root[data-theme="dark"] .mr-btn.on.unsure{background:#332512;border-color:#f59e0b;color:#fbbf24}
@media(max-width:700px){.mr-side{grid-template-columns:1fr;gap:2px}.mr-pr{justify-self:start}}

/* --- Competitor Monitoring row actions ------------------------------------
   Three channels, one meaning each -- deliberately NOT a red/amber/green wash
   over the whole row. This table already spends colour on the Aprilice vs
   Competitor column groups, and the statuses are not a severity scale ("price
   adjusted" and "keep price" are both good outcomes). So:
     spine colour = which decision was taken
     tint         = only on states that still need somebody to come back
     opacity      = only the open/closed distinction
   Severity itself is already carried by the Gap column. */
.ra-row>td:first-child{border-left:4px solid transparent}
.ra-row.ra-price_adjusted  >td:first-child{border-left-color:#16a34a}
.ra-row.ra-keep_price      >td:first-child{border-left-color:#64748b}
.ra-row.ra-renegotiate_cost>td:first-child{border-left-color:#f59e0b}
.ra-row.ra-competitor_promo>td:first-child{border-left-color:#6366f1}
.ra-row.ra-not_comparable  >td:first-child,
.ra-row.ra-not_same_product>td:first-child{border-left-color:#94a3b8}
.ra-row.ra-data_issue      >td:first-child{border-left-color:var(--red)}
.ra-row.ra-state-open>td{background:#f59e0b0f}
.ra-row.ra-data_issue>td{background:#dc26260f}
.ra-row.ra-state-closed>td{opacity:.72}
.ra-row.ra-state-closed:hover>td{opacity:1}
.ra-filters{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}
.act-col{min-width:172px}
.group-header th.act-group{background:#f1f5f9;color:#475569}
:root[data-theme="dark"] .group-header th.act-group{background:#262a30;color:#c4cad2}
.ra-select{width:100%;border:1px solid var(--line);border-radius:8px;padding:6px 8px;
  background:var(--card);color:var(--text);font:inherit;font-size:12.5px;font-weight:700}
.ra-select.ra-pending{color:var(--muted);font-weight:600}
.ra-meta{font-size:10.5px;color:var(--muted);margin-top:3px;line-height:1.35}
.ra-expired{color:#f59e0b;font-weight:800}
.nowrap{white-space:nowrap}
:root[data-theme="dark"] .ra-row.ra-state-open>td{background:#f59e0b14}
:root[data-theme="dark"] .ra-row.ra-data_issue>td{background:#dc262614}

/* Who did it. The users table holds only an email, so the name is derived from
   it and the full address stays on hover -- an audit trail has to name a person,
   not an identifier. */
.who{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.who-av{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:50%;
  background:var(--brand-tint);color:var(--brand-dark);font-size:9.5px;font-weight:900;font-style:normal;flex:0 0 auto}
:root[data-theme="dark"] .who-av{background:#3a1a12;color:#FF6B4A}
.ra-meta .who{font-size:10.5px}
.ra-meta .who-av{width:15px;height:15px;font-size:8px}

/* --- Announcement board ---------------------------------------------------
   Cards, not a feed. The point of this page is that something posted in March
   is still findable in September, so each announcement gets real estate and a
   stable identity rather than a position in a stream. */
.ann-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:16px}
.ann-head h2{margin:0 0 4px}
.ann-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}
.ann-card{text-align:left;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:18px;
  cursor:pointer;font:inherit;color:inherit;display:flex;flex-direction:column;gap:9px;
  box-shadow:0 1px 2px #0f172a0d;transition:box-shadow .14s,transform .14s;border-left-width:4px}
.ann-card:hover{box-shadow:0 8px 26px #0f172a1a;transform:translateY(-2px)}
.ann-card.lvl-normal{border-left-color:var(--line)}
.ann-card.lvl-important{border-left-color:#f59e0b}
.ann-card.lvl-must_read{border-left-color:var(--red)}
.ann-card.unread{background:var(--brand-tint)}
.ann-card h3{margin:0;font-size:16.5px;line-height:1.3;text-wrap:balance}
.ann-card-top{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.ann-newdot{width:9px;height:9px;border-radius:50%;background:var(--red);margin-left:auto;flex:0 0 auto}
.ann-excerpt{margin:0;font-size:13px;color:var(--muted);line-height:1.5;
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.ann-card-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);margin-top:auto}
.ann-when{white-space:nowrap}
.ann-stats{margin-left:auto;white-space:nowrap;font-variant-numeric:tabular-nums}
.ann-detail{max-width:820px}
.ann-detail h2{margin:8px 0 6px;text-wrap:balance}
.ann-detail-head{display:flex;gap:8px;align-items:center;margin-top:12px}
.ann-body{margin:18px 0;font-size:15px;line-height:1.65}
.ann-imgs{display:grid;gap:12px;margin:16px 0}
.ann-img{max-width:100%;border-radius:12px;border:1px solid var(--line)}
.ann-ack{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:#fef2f2;border:1px solid #fecaca;
  border-radius:12px;padding:14px 16px;margin:16px 0}
:root[data-theme="dark"] .ann-ack{background:#3a1414;border-color:#5a2020}
.ann-actions{display:flex;align-items:center;gap:14px;padding:14px 0;border-top:1px solid var(--line)}
.ann-like{border:1px solid var(--line);background:var(--card);color:var(--text);border-radius:999px;
  padding:7px 15px;font-weight:700;cursor:pointer;font-size:13.5px}
.ann-like.on{background:var(--brand-tint);border-color:var(--brand);color:var(--brand-dark)}
.ann-comments{list-style:none;margin:0;padding:0;display:grid;gap:12px}
.ann-comment{background:#f8fafc;border:1px solid var(--line);border-radius:12px;padding:12px 14px}
:root[data-theme="dark"] .ann-comment{background:#1f2328}
.ann-comment p{margin:6px 0 0;font-size:13.5px;line-height:1.55;white-space:pre-wrap}
.ann-comment-head{display:flex;justify-content:space-between;gap:10px;font-size:11.5px;color:var(--muted)}
.ann-composer{display:flex;gap:10px;align-items:flex-start;margin-top:14px}
.ann-composer textarea{flex:1;border:1px solid var(--line);border-radius:12px;padding:10px 12px;
  font:inherit;font-size:13.5px;background:var(--card);color:var(--text);resize:vertical}
.ann-receipts{margin:14px 0;border:1px solid var(--line);border-radius:12px;padding:10px 14px}
.ann-receipts summary{cursor:pointer;font-weight:700;font-size:13px}
.ann-form{display:grid;gap:12px}
.ann-form input,.ann-form textarea,.ann-form select{border:1px solid var(--line);border-radius:10px;
  padding:10px 12px;font:inherit;background:var(--card);color:var(--text)}
.ann-form textarea{resize:vertical;line-height:1.6}
.ann-form-row{display:flex;gap:16px;flex-wrap:wrap;align-items:center}
.ann-form-row label{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:700}
.ann-check,.ann-file{cursor:pointer}
.ann-file input{max-width:210px}
.ann-thumbs{display:flex;gap:10px;flex-wrap:wrap}
.ann-thumb{position:relative;display:inline-block}
.ann-thumb img{height:78px;border-radius:9px;border:1px solid var(--line);display:block}
.ann-thumb button{position:absolute;top:-7px;right:-7px;width:22px;height:22px;border-radius:50%;
  border:0;background:var(--red);color:#fff;font-weight:900;cursor:pointer;line-height:1}
.ann-form-actions{display:flex;gap:10px}
@media(max-width:640px){.ann-grid{grid-template-columns:1fr}}

/* Announcement cards on the Dashboard: the same width as an Orders Today card
   and twice its height, so a notice leads the page without displacing the live
   numbers. min-height is derived from the KPI card it sits above. */
.ann-dash{margin-bottom:18px}
.ann-dash-card{min-height:196px;overflow:hidden;text-align:left;font:inherit;color:var(--text);cursor:pointer;
  display:flex;flex-direction:column;gap:8px;border-left-width:4px;border-left-style:solid;
  border-left-color:var(--line);transition:box-shadow .14s,transform .14s}
.ann-dash-card:hover{box-shadow:0 8px 26px #0f172a1a;transform:translateY(-2px)}
.ann-dash-card.lvl-important{border-left-color:#f59e0b}
.ann-dash-card.lvl-must_read{border-left-color:var(--red)}
.ann-dash-card.unread{background:var(--brand-tint)}
.ann-dash-card{padding:20px 22px;gap:10px}
/* Deliberately oversized. This card exists to be unmissable on the page everyone
   opens first, so the title is display-scale and the body copy is well above the
   dashboard's own 13-15px norm. clamp() keeps it from overflowing the fixed
   two-KPI height on a narrow window. */
/* The title owns the card. Sizes are written per line by annFitTitle(); the rule
   here only sets what measuring depends on (family, tracking, block layout). */
.ann-dash-card h3{margin:0;flex:1 1 auto;min-height:0;display:flex;flex-direction:column;
  justify-content:center;gap:0;letter-spacing:-.03em;color:var(--text);
  font-weight:900;line-height:1.04;overflow:hidden}
.ann-dash-card h3 span{display:block;line-height:1.04;white-space:nowrap}
.ann-dash-card .ann-card-foot{font-size:13px}
.ann-dash-card .ann-when,.ann-dash-card .ann-stats{font-size:13px}
.ann-dash-card.lvl-must_read h3{color:var(--red)}
.ann-pin{font-size:12px}

/* Announcement rich-text editor */
.rte{border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--card)}
.rte-bar{display:flex;gap:2px;padding:5px 6px;border-bottom:1px solid var(--line);background:var(--bg)}
.rte-b{min-width:30px;height:28px;border:1px solid transparent;border-radius:6px;background:none;
  color:var(--text);cursor:pointer;font-size:13px;line-height:1}
.rte-b:hover{background:var(--card);border-color:var(--line)}
.rte-area{min-height:170px;padding:11px 13px;outline:none;font-size:14px;line-height:1.65;overflow-y:auto;max-height:420px}
.rte-area:focus{box-shadow:inset 0 0 0 2px var(--brand-tint)}
.rte-area:empty:before{content:attr(data-placeholder);color:var(--muted);pointer-events:none}
.rte-area p{margin:0 0 8px}
.rte-area ul,.rte-area ol{margin:0 0 8px;padding-left:22px}
.ann-body p{margin:0 0 10px}
.ann-body ul,.ann-body ol{margin:0 0 10px;padding-left:22px}
.ann-body a{color:var(--brand);text-decoration:underline}

/* Dark theme: the site paints its own surfaces per theme, so the announcement
   card and editor take their grounds from the same tokens rather than literals. */
:root[data-theme="dark"] .ann-dash-card:hover{box-shadow:0 8px 26px #00000060}
:root[data-theme="dark"] .rte-b:hover{background:#262a30;border-color:#33373d}

/* Tags that only ever arrive by paste (headings, quotes, code, rules) need to
   look deliberate in both the editor and the published announcement. */
.rte-area h3,.ann-body h3{font-size:16px;margin:14px 0 6px}
.rte-area h4,.ann-body h4{font-size:14px;margin:12px 0 6px}
.rte-area h3:first-child,.ann-body h3:first-child{margin-top:0}
.rte-area blockquote,.ann-body blockquote{margin:8px 0;padding:2px 0 2px 12px;
  border-left:3px solid var(--line);color:var(--muted)}
.rte-area code,.ann-body code{background:var(--bg);border:1px solid var(--line);
  border-radius:5px;padding:1px 5px;font-size:.92em}
.rte-area pre,.ann-body pre{background:var(--bg);border:1px solid var(--line);
  border-radius:8px;padding:10px 12px;overflow-x:auto;margin:8px 0}
.rte-area pre code,.ann-body pre code{background:none;border:0;padding:0}
.rte-area hr,.ann-body hr{border:0;border-top:1px solid var(--line);margin:14px 0}

/* Pasted tables. Scoped so they never inherit the data-table chrome used for
   the platform's own tables, and scrollable so a wide paste cannot push the
   announcement column sideways. */
.rte-area table,.ann-body table{width:auto;max-width:100%;border-collapse:collapse;
  margin:10px 0;font-size:13px;background:none;display:block;overflow-x:auto}
.rte-area td,.rte-area th,.ann-body td,.ann-body th{border:1px solid var(--line);
  padding:6px 10px;text-align:left;vertical-align:top;background:none}
.rte-area th,.ann-body th{background:var(--bg);font-weight:700;color:inherit;font-size:13px}
.rte-area caption,.ann-body caption{caption-side:top;text-align:left;padding:0 0 6px;
  color:var(--muted);font-size:12.5px}

/* Reaction bar. Every reaction in the set is always shown in a fixed order, so
   the button under the cursor never moves; an unpressed one is dimmed rather
   than hidden, because the invitation to react is half the point. */
.ann-reactions{display:flex;gap:6px;flex-wrap:wrap}
.ann-react{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line);
  background:var(--card);border-radius:999px;padding:5px 11px;cursor:pointer;font:inherit;
  font-size:14px;line-height:1;color:var(--text);transition:transform .1s,border-color .12s,background .12s}
.ann-react:hover{border-color:var(--brand);transform:translateY(-1px)}
.ann-react.on{background:var(--brand-tint);border-color:var(--brand-tint-border);font-weight:800}
.ann-react.zero{opacity:.5}
.ann-react.zero:hover{opacity:1}
.ann-react b{font-size:12.5px;font-variant-numeric:tabular-nums}
.ann-react-e{font-size:16px}
.ann-react-sum{white-space:nowrap;font-variant-numeric:tabular-nums}
:root[data-theme="dark"] .ann-react.on{background:#3a1a12;border-color:#5a2a1a}

/* Translation state. A machine translation says so, and the way back to the
   publisher's own words is one click, not a hunt. */
.ann-tnote{margin:10px 0 0;padding:7px 11px;border-radius:9px;background:var(--bg);
  border:1px solid var(--line);font-size:12.5px;color:var(--muted);
  display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ann-tnote.warn{background:#fef3c7;border-color:#fde68a;color:#92400e}
:root[data-theme="dark"] .ann-tnote.warn{background:#3a2a12;border-color:#5a3d1a;color:#fbbf24}
.ann-vtabs{display:flex;gap:6px;margin:0 0 14px;flex-wrap:wrap}
.ann-vtab{border:1px solid var(--line);background:var(--card);border-radius:10px;
  padding:8px 14px;cursor:pointer;font:inherit;color:var(--text);display:flex;gap:7px;align-items:baseline}
.ann-vtab small{color:var(--muted);font-size:11.5px}
.ann-vtab.on{background:var(--brand-tint);border-color:var(--brand-tint-border);font-weight:800}
.ann-vtab:hover{border-color:var(--brand)}

/* Changelog: a date rail on the left so the eye scans dates, entries on the
   right. The rail collapses above the entry on narrow screens rather than
   squeezing both into columns too thin to read. */
.cl-list{display:flex;flex-direction:column;gap:14px}
.cl-entry{display:grid;grid-template-columns:132px minmax(0,1fr);gap:18px;
  background:var(--card);border:1px solid var(--line);border-radius:16px;
  box-shadow:0 4px 16px #0f172a08;padding:18px 20px}
.cl-date{display:flex;flex-direction:column;gap:2px;padding-top:2px}
.cl-date b{font-size:15px;font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.cl-date small{color:var(--muted);font-size:12px}
.cl-body h3{margin:0 0 8px;font-size:16px;line-height:1.3}
.cl-body ul{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:5px}
.cl-body li{font-size:13.5px;line-height:1.55;color:var(--text)}
@media(max-width:760px){
  .cl-entry{grid-template-columns:minmax(0,1fr);gap:8px}
  .cl-date{flex-direction:row;gap:8px;align-items:baseline}
}

/* Market Watch / Facebook: root-cause split and the two member rankings. */
.fb-two{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
.fb-rcbar{display:flex;height:14px;border-radius:999px;overflow:hidden;background:var(--line);margin:6px 0 10px}
.fb-rcbar i{display:block;height:100%}
.fb-rcbar i.ok{background:var(--green)}
.fb-rcbar i.bad{background:var(--red)}
.fb-rcbar i.mid{background:var(--orange)}
.fb-rclegend{display:flex;gap:16px;flex-wrap:wrap;font-size:12.5px;color:var(--muted)}
.fb-rclegend i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:6px}
.fb-rclegend i.ok{background:var(--green)}
.fb-rclegend i.bad{background:var(--red)}
.fb-rclegend i.mid{background:var(--orange)}
.fb-rclegend b{color:var(--text);font-variant-numeric:tabular-nums}
.fb-warn{background:#fef3c7;border:1px solid #fde68a;color:#92400e;border-radius:9px;padding:7px 11px;margin-top:10px}
:root[data-theme="dark"] .fb-warn{background:#3a2a12;border-color:#5a3d1a;color:#fbbf24}
.fb-rank{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:7px}
.fb-rank li{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;font-size:13.5px}
.fb-rank-m{width:22px;flex:none}
.fb-rank-pts{margin-left:auto;color:var(--muted);font-size:12.5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.fb-rank-obs{color:var(--brand-dark);font-size:12px;white-space:nowrap}
.fb-badge{background:var(--brand-tint);color:var(--brand-dark);border-radius:999px;padding:1px 7px;font-size:11px;font-weight:700}
.fb-adv{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:13.5px}
.fb-adv li{display:flex;gap:10px;align-items:baseline}
.fb-rcbar i.mix{background:var(--purple)}
.fb-rclegend i.mix{background:var(--purple)}
.fb-themes{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:11px}
.fb-themes li{border-left:3px solid var(--line);padding-left:11px}
.fb-themes b{margin-right:7px}
.fb-months{display:flex;gap:10px;align-items:flex-end;margin:10px 0 12px;flex-wrap:wrap}
.fb-mo{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:44px}
.fb-mo i{display:block;width:26px;background:var(--brand);border-radius:5px 5px 0 0}
.fb-mo b{font-size:12.5px;font-variant-numeric:tabular-nums}
.fb-mo small{color:var(--muted);font-size:11px}

/* Facebook re-read audit: the correction has to be as visible as the numbers it corrects. */
.fb-rr-kpis{display:flex;flex-wrap:wrap;gap:18px;margin:6px 0 10px}
.fb-rr-kpis span{font-size:13px;color:var(--muted)}
.fb-rr-kpis b{font-size:20px;color:var(--text);margin-right:5px;font-variant-numeric:tabular-nums}
.fb-rr-kpis .bad b{color:var(--red)}
.fb-case{border:1px solid var(--line);border-radius:8px;padding:12px 14px;margin-top:10px;background:var(--bg)}
.fb-case-h{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.fb-case ul{margin:4px 0 8px 18px}
.fb-gi{border-left:3px solid var(--line);padding:2px 0 2px 12px;margin:10px 0}
.fb-gi p{margin:3px 0}
.card .num .fb-of{font-size:.5em;font-weight:400;color:var(--muted)}
.panel.fb-alert{border-left:3px solid var(--red)}
.fb-triage{margin:10px 0 0 18px}
.fb-triage li{margin-bottom:12px}
.fb-tri-h{display:flex;align-items:center;gap:9px;margin-bottom:3px}
.fb-gaps{margin:8px 0 0 18px}
.fb-gaps li{margin-bottom:10px}
.fb-brands{display:flex;flex-wrap:wrap;gap:14px;margin:10px 0}
.fb-brand{display:inline-flex;align-items:center;gap:6px;font-size:13px;color:var(--muted)}
.fb-brand b{color:var(--text);text-transform:capitalize}
.fb-verdict-big{font-size:26px;font-weight:600;margin:6px 0 10px}
.fb-months{display:flex;align-items:flex-end;gap:12px;margin:14px 0 6px}
.fb-mo{display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;color:var(--muted)}
.fb-mo i{display:block;width:26px;background:var(--red);border-radius:3px 3px 0 0;opacity:.75}
.fb-mo.partial i{opacity:.3}
.fb-mo b{font-size:12px;color:var(--text);font-variant-numeric:tabular-nums}

/* --- Admin banners + brand ownership ------------------------------------- */
.admin-banners{grid-template-columns:repeat(4,1fr)}
@media(max-width:900px){.admin-banners{grid-template-columns:1fr 1fr}}
.team-cols{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:8px}
@media(max-width:800px){.team-cols{grid-template-columns:1fr}}
.team-chip{display:flex;align-items:center;gap:8px;flex-wrap:wrap;border:1px solid var(--line);
  border-radius:8px;padding:8px 10px;margin-bottom:6px;background:var(--bg)}
.team-chip small{font-size:11px;color:var(--muted)}
.team-chip small.ok{color:var(--green)}
.team-chip .btn{margin-left:auto;padding:2px 8px;font-size:11px}
.own-cell{display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.own-cell small{font-size:10px;color:var(--muted);font-weight:700}
.own-tag{font-size:11.5px;padding:1px 6px;border-radius:5px;background:var(--brand-tint);color:var(--brand-dark)}
.own-tag.mine{background:var(--brand);color:#fff}
.act-days{display:flex;align-items:flex-end;gap:2px;height:44px;margin:10px 0 14px}
.act-days i{display:block;width:7px;background:var(--brand);border-radius:2px 2px 0 0;opacity:.65}
.perm-grid tr.perm-locked{background:var(--brand-tint)}
.perm-grid tr.perm-locked td{font-weight:600}
.perm-grid tr.perm-locked-note td{padding-top:0;border-top:0}
.cell-in{min-width:120px;max-width:180px}

/* Forced password change: the only thing a flagged account can reach. */
body.forced-pw #view{max-width:520px;margin:60px auto}
.pw-panel h2{margin-bottom:6px}
.pw-form{display:flex;flex-direction:column;gap:10px;margin:14px 0}
.pw-form .filter{width:100%}
.page-err{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:10px;
  font-size:12px;white-space:pre-wrap;overflow-x:auto;margin:10px 0}
.cat-tag{display:inline-block;font-size:11px;padding:1px 6px;margin:1px 3px 1px 0;border-radius:5px;
  background:var(--brand-tint);color:var(--brand-dark);white-space:nowrap}
.brand-covers{font-size:10.5px;color:var(--muted);line-height:1.35;margin-top:2px;max-width:260px}
.ann-pin small{font-size:10px;font-weight:600;opacity:.85;margin-left:2px}
