*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
--bg:#f7f4ef;--surface:#ffffff;--surface2:#f0ece4;--border:#ddd8ce;--border-strong:#b8b0a0;
--text:#1a1610;--text2:#5a5248;--text3:#8a847c;
--accent:#c0392b;--accent2:#e8d5c4;--accent3:#7b2d26;
--tag-bg:#f5ede8;
}
body{font-family:'IBM Plex Sans',sans-serif;background:var(--bg);color:var(--text);font-size:14px;line-height:1.6;min-height:100vh}

/* COMPANY SWITCHER */
.company-bar{display:flex;background:#111;gap:0;border-bottom:2px solid #222}
.company-btn{flex:1;padding:.7rem 1rem;border:none;background:transparent;color:#666;font-family:'IBM Plex Mono',monospace;font-size:11px;letter-spacing:.12em;text-transform:uppercase;cursor:pointer;transition:background .15s,color .15s;border-right:1px solid #222;position:relative}
.company-btn:last-child{border-right:none}
.company-btn:hover{background:#1a1a1a;color:#aaa}
.company-btn.active{color:#f7f4ef}
.company-btn.active::after{content:'';position:absolute;bottom:0;left:0;right:0;height:2px;background:var(--accent)}
.company-btn[data-co="PMI"].active::after{background:#c0392b}
.company-btn[data-co="BAT"].active::after{background:#2e7d32}
.company-btn[data-co="JTI"].active::after{background:#7b1fa2}
.company-btn[data-co="IMP"].active::after{background:#be185d}
.company-btn[data-co="ALT"].active::after{background:#1565c0}
.company-btn[data-co="UNATTR"].active::after{background:#78716c}
.company-btn[data-co="ALL"].active::after{background:#b45309}

/* HEADER */
.header{padding:1.5rem 2.5rem;display:flex;align-items:center;justify-content:space-between;gap:2rem;position:relative}
.header[data-co="PMI"]{background:#1a0a08}
.header[data-co="BAT"]{background:#081a0a}
.header[data-co="JTI"]{background:#140820}
.header[data-co="IMP"]{background:#180610}
.header[data-co="ALT"]{background:#060f1e}
.header[data-co="UNATTR"]{background:#141414}
.header[data-co="ALL"]{background:#1a0e04}

/* Coloured edge accent — left vertical bar that picks up the company colour */
.header::before{content:'';position:absolute;left:0;top:0;bottom:0;width:4px}
.header[data-co="PMI"]::before{background:#c0392b}
.header[data-co="BAT"]::before{background:#2e7d32}
.header[data-co="JTI"]::before{background:#7b1fa2}
.header[data-co="IMP"]::before{background:#be185d}
.header[data-co="ALT"]::before{background:#1565c0}
.header[data-co="UNATTR"]::before{background:#78716c}
.header[data-co="ALL"]::before{background:#b45309}

.header-text{flex:1;min-width:0}
.header-title{font-family:'Playfair Display',serif;font-size:1.85rem;font-weight:600;line-height:1.15;color:#f7f4ef;margin-bottom:.35rem}
.header-sub{font-size:12.5px;color:#a39b91;font-weight:300;margin-bottom:.9rem;max-width:60ch}
.header-stats{display:flex;align-items:baseline;gap:.5rem}
.header-stat-n{font-family:'Playfair Display',serif;font-size:1.5rem;color:#f7f4ef;line-height:1;font-weight:600}
.header-stat-l{font-family:'IBM Plex Mono',monospace;font-size:10px;color:#7a7470;text-transform:uppercase;letter-spacing:.12em}

/* Publisher logo (VapingPost), right side of header */
.header-brand{flex-shrink:0;display:block;line-height:0;transition:opacity .15s}
.header-brand:hover{opacity:.75}
.header-brand img{height:30px;display:block;opacity:.95}

/* SOURCES strip (just below the header) */
.sources-strip{padding:.55rem 2.5rem;background:var(--surface2);border-bottom:1px solid var(--border);font-family:'IBM Plex Mono',monospace;font-size:10.5px;color:var(--text3);letter-spacing:.04em;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}
.sources-label{text-transform:uppercase;letter-spacing:.15em;font-weight:500;color:var(--text2)}
.sources-strip a{color:var(--text2);text-decoration:none;border-bottom:1px solid var(--border-strong);transition:color .15s,border-color .15s}
.sources-strip a:hover{color:var(--accent3);border-color:var(--accent)}
.sources-meta{color:var(--text3);font-size:10px}
.sources-sep{color:var(--text3);opacity:.6}

/* DISCLAIMER STRIP */
.disclaimer-strip{padding:.7rem 2.5rem;background:var(--surface);border-bottom:1px solid var(--border);font-family:'IBM Plex Sans',sans-serif;font-size:11.5px;color:var(--text2);line-height:1.5;display:flex;align-items:center;justify-content:space-between;gap:1.5rem;flex-wrap:wrap}
.disclaimer-text{flex:1;min-width:280px}
.disclaimer-text strong{color:var(--text);font-weight:500}
.disclaimer-toggle{padding:.4rem .9rem;border:1px solid var(--border-strong);background:transparent;color:var(--text2);font-family:'IBM Plex Mono',monospace;font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;border-radius:3px;white-space:nowrap;transition:all .15s}
.disclaimer-toggle:hover{background:var(--surface2);color:var(--text);border-color:var(--text2)}

/* ABOUT MODAL (overlay + centered dialog) */
.about-modal[hidden]{display:none}
.about-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:2rem 1rem}
.about-overlay{position:absolute;inset:0;background:rgba(20,18,14,.55);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);animation:about-fade .15s ease-out}
.about-dialog{position:relative;width:100%;max-width:620px;max-height:85vh;background:var(--surface);border:1px solid var(--border-strong);border-radius:8px;box-shadow:0 20px 60px rgba(0,0,0,.25);overflow-y:auto;animation:about-pop .18s ease-out}
@keyframes about-fade{from{opacity:0}to{opacity:1}}
@keyframes about-pop{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}
.about-close-x{position:absolute;top:.6rem;right:.7rem;width:30px;height:30px;border:none;background:transparent;color:var(--text3);font-size:24px;line-height:1;cursor:pointer;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:background .12s,color .12s;font-family:inherit}
.about-close-x:hover{background:var(--surface2);color:var(--text)}
.about-inner{padding:1.6rem 1.8rem;font-family:'IBM Plex Sans',sans-serif;font-size:13px;line-height:1.6;color:var(--text2)}
.about-inner h2{font-family:'Playfair Display',serif;font-size:1.35rem;font-weight:600;margin:0 0 .8rem;color:var(--text);letter-spacing:.01em;padding-right:1.5rem}
.about-inner h3{font-family:'IBM Plex Mono',monospace;font-size:14px;font-weight:500;margin:1.2rem 0 1.2rem;color:var(--text);text-transform:uppercase;letter-spacing:.18em}
.about-inner p{margin:0 0 .65rem}
.about-inner ul{padding-left:0;margin:0 0 .65rem;list-style-type:none}
.about-inner li{margin-bottom:.45rem;position:relative;padding-left:.85rem}
.about-inner li::before{content:'—';position:absolute;left:0;color:var(--text3)}
.about-inner a{color:var(--accent3);text-decoration:none;border-bottom:1px solid var(--border-strong);transition:border-color .15s}
.about-inner a:hover{border-color:var(--accent)}
.about-inner strong{font-weight:500;color:var(--text)}
.about-inner em{font-style:italic;color:var(--text2)}

/* LAYOUT */
.layout{display:grid;grid-template-columns:220px 1fr;min-height:calc(100vh - 180px)}

/* SIDEBAR */
.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:1.2rem 0;position:sticky;top:0;height:calc(100vh - 180px);overflow-y:auto}
.sidebar-title{font-family:'IBM Plex Mono',monospace;font-size:11px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--text2);padding:0 .75rem .5rem;border-bottom:1px solid var(--border);margin-bottom:.5rem}
.nav-item{display:flex;align-items:center;justify-content:space-between;padding:.42rem .75rem;border-radius:6px;cursor:pointer;transition:background .15s;font-size:12.5px;color:var(--text2);border:none;background:none;width:100%;text-align:left}
.nav-item:hover{background:var(--surface2);color:var(--text)}
.nav-item.active{background:var(--tag-bg);color:var(--accent3);font-weight:500}
.nav-badge{font-size:10px;font-family:'IBM Plex Mono',monospace;background:var(--surface2);color:var(--text3);padding:1px 5px;border-radius:3px;min-width:22px;text-align:center}
.nav-item.active .nav-badge{background:var(--accent2);color:var(--accent3)}
[data-co="BAT"] .nav-item.active{background:#e8f5e9;color:#1b5e20}
[data-co="BAT"] .nav-item.active .nav-badge{background:#c8e6c9;color:#1b5e20}
[data-co="JTI"] .nav-item.active{background:#f3e5f5;color:#4a148c}
[data-co="JTI"] .nav-item.active .nav-badge{background:#e1bee7;color:#4a148c}
[data-co="IMP"] .nav-item.active{background:#fce7f3;color:#831843}
[data-co="IMP"] .nav-item.active .nav-badge{background:#fbcfe8;color:#831843}
[data-co="ALT"] .nav-item.active{background:#e3f2fd;color:#0d47a1}
[data-co="ALT"] .nav-item.active .nav-badge{background:#bbdefb;color:#0d47a1}
[data-co="UNATTR"] .nav-item.active{background:#f5f5f4;color:#292524}
[data-co="UNATTR"] .nav-item.active .nav-badge{background:#e7e5e4;color:#292524}
[data-co="ALL"] .nav-item.active{background:#fff7ed;color:#7c2d12}
[data-co="ALL"] .nav-item.active .nav-badge{background:#fed7aa;color:#7c2d12}

/* SEARCH */
.search-wrap{padding:.9rem 1rem .5rem;border-bottom:none;margin-bottom:0}
.search-input{width:100%;padding:.4rem .6rem;border:1px solid var(--border);border-radius:5px;font-family:'IBM Plex Sans',sans-serif;font-size:12px;background:var(--bg);color:var(--text);outline:none}
.search-input:focus{border-color:var(--accent)}

/* TAG FILTER (chip grid in sidebar, below search) */
.filter-wrap{padding:0 1rem .9rem;border-bottom:1px solid var(--border);margin-bottom:.5rem}
.filter-label{font-family:'IBM Plex Mono',monospace;font-size:11px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--text2);margin-bottom:.6rem}
.tag-filter-grid{display:flex;flex-direction:column;gap:.55rem}
.tag-group{display:flex;flex-direction:column;gap:3px}
.tag-group-label{font-family:'IBM Plex Mono',monospace;font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--text3);opacity:.85;padding-bottom:1px;border-bottom:1px dashed var(--border)}
.tag-group-chips{display:flex;flex-wrap:wrap;gap:3px}
.tag-filter-chip{font-size:10px;font-family:'IBM Plex Mono',monospace;padding:3px 7px;border-radius:3px;cursor:pointer;letter-spacing:.02em;font-weight:500;border:1px solid transparent;background:var(--surface2);color:var(--text3);transition:opacity .12s,transform .05s;user-select:none;white-space:nowrap}
.tag-filter-chip:hover{opacity:.85}
.tag-filter-chip:active{transform:translateY(1px)}
.tag-filter-chip.active{box-shadow:0 0 0 1px currentColor inset;font-weight:600}

/* MAIN */
.main{padding:1.8rem 2.5rem;overflow-y:auto}
.section-header{display:flex;align-items:baseline;gap:1rem;margin-bottom:1.4rem;padding-bottom:.6rem;border-bottom:2px solid var(--text)}
.section-title{font-family:'IBM Plex Sans',sans-serif;font-size:1.25rem;font-weight:600}
.section-count{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--text3)}
.filter-active-note{font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--accent3);background:var(--tag-bg);padding:2px 7px;border-radius:3px;letter-spacing:.05em;text-transform:uppercase;font-weight:500;margin-left:auto}
.global-view-header{display:flex;align-items:baseline;gap:1rem;margin-bottom:1.6rem;padding:.6rem .9rem;background:var(--surface);border:1px solid var(--border);border-radius:6px}
.global-view-title{font-family:'IBM Plex Mono',monospace;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--text2);font-weight:500}
.main .section-header + .entity-grid{margin-bottom:1.6rem}
.main > .section-header:not(:first-child){margin-top:.4rem}

/* CARDS */
.entity-grid{display:grid;gap:9px}
.entity-card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:.85rem 1rem;display:grid;grid-template-columns:1fr auto;gap:.75rem;align-items:start;transition:border-color .15s}
.entity-card:hover{border-color:var(--border-strong)}
.entity-name{font-weight:500;font-size:13.5px;color:var(--text);line-height:1.3;margin-bottom:3px}
.entity-country{font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--text3);margin-bottom:4px}
.entity-desc{font-size:12.5px;color:var(--text2);line-height:1.5}
.entity-note{font-size:12px;color:var(--text2);line-height:1.5;font-style:italic;margin-top:6px;padding:4px 0 4px 8px;border-left:2px solid var(--border-strong)}
.entity-source{font-family:'IBM Plex Mono',monospace;font-size:10px;color:var(--text3);margin-top:6px;letter-spacing:.02em}

/* MENTIONS row (connected entities, clickable chips below desc) */
.mentions-row{display:flex;flex-wrap:wrap;align-items:center;gap:4px;margin-top:6px}
.mentions-label{font-family:'IBM Plex Mono',monospace;font-size:9px;letter-spacing:.15em;text-transform:uppercase;color:var(--text3);margin-right:2px}
.mention-chip{font-size:10.5px;font-family:'IBM Plex Sans',sans-serif;padding:2px 7px;border-radius:3px;border:1px solid var(--border-strong);background:var(--surface2);color:var(--text2);cursor:pointer;transition:background .12s,border-color .12s,color .12s;line-height:1.4}
.mention-chip:hover{background:var(--accent2);border-color:var(--accent3);color:var(--accent3)}
.mention-chip:active{transform:translateY(1px)}

/* Highlight effect when navigating to a mentioned card */
.entity-card.mention-target{animation:mention-flash 2.2s ease-out}
@keyframes mention-flash{
  0%{box-shadow:0 0 0 0 var(--accent),0 0 0 4px var(--accent2)}
  20%{box-shadow:0 0 0 2px var(--accent),0 0 0 6px var(--accent2)}
  100%{box-shadow:0 0 0 0 transparent,0 0 0 0 transparent}
}

/* TAG CHIPS (vertical stack on right side of card) */
.tag-row{display:flex;flex-direction:column;gap:3px;align-self:start;margin-top:2px}
.entity-tag{font-size:10px;font-family:'IBM Plex Mono',monospace;padding:2px 7px;border-radius:3px;white-space:nowrap;letter-spacing:.02em;font-weight:500;text-align:center}

/* Per-tag colors (must match TAGS object in data.js) */
.tag-cigarettes         {background:#fee2e2;color:#991b1b}  /* rouge */
.tag-smoke-free-product {background:#ffedd5;color:#c2410c}  /* orange brûlé */
.tag-company            {background:#e5e7eb;color:#111827}  /* gris */
.tag-services        {background:#ccfbf1;color:#0f766e}  /* turquoise */
.tag-organization       {background:#dcfce7;color:#166534}  /* vert */
.tag-campaign           {background:#fce7f3;color:#be185d}  /* rose */
.tag-employee-former    {background:#dbeafe;color:#1d4ed8}  /* bleu */
.tag-unaffiliated        {background:#ede9fe;color:#6d28d9}  /* violet */
.tag-revolving-door     {background:#fef3c7;color:#92400e}  /* jaune/marron */
.tag-discontinued       {background:#374151;color:#ffffff}  /* gris foncé */
.tag-politics           {background:#fed7aa;color:#7c2d12}  /* orange politique */
.tag-scientist          {background:#ecfccb;color:#4d7c0f}  /* vert-lime */
.tag-advocacy           {background:#ffe4e6;color:#be123c}  /* rouge-rose */
.tag-industry           {background:#cbd5e1;color:#334155}  /* gris-bleu industriel */
.tag-event              {background:#7e22ce4d;color:#000000}  /* violet plein */
.tag-csr                {background:#d9f99d;color:#3f6212}  /* lime */

.shared-row{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}
.shared-badge{font-size:10px;font-family:'IBM Plex Mono',monospace;padding:2px 6px;border-radius:3px;white-space:nowrap}
.shared-badge.PMI{background:#f9ddd9;color:#7b2d26}
.shared-badge.BAT{background:#d8edd9;color:#1b5e20}
.shared-badge.JTI{background:#ede7f6;color:#4a148c}
.shared-badge.IMP{background:#fce7f3;color:#831843}
.shared-badge.ALT{background:#dbeafe;color:#0d47a1}
.shared-badge.UNATTR{background:#f5f5f4;color:#44403c}

.search-results-header{font-family:'IBM Plex Mono',monospace;font-size:11px;color:var(--text3);margin-bottom:1rem;padding:.5rem 0;border-bottom:1px solid var(--border)}
.match-highlight{background:#fff3a8;border-radius:2px}
.no-results{text-align:center;padding:3rem;color:var(--text3);font-size:13px}

::-webkit-scrollbar{width:4px}
::-webkit-scrollbar-track{background:transparent}
::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
/* Pagination */
.list-pagination{display:flex;align-items:center;justify-content:center;gap:.9rem;padding:1.4rem 0;font-family:'IBM Plex Mono',monospace;font-size:11px}
.page-btn{padding:.35rem .8rem;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:4px;cursor:pointer;font-family:inherit;font-size:11px;transition:border-color .15s,background .15s}
.page-btn:hover:not([disabled]){border-color:var(--accent);background:var(--surface2)}
.page-btn[disabled]{opacity:.4;cursor:not-allowed}
.page-info{color:var(--text3)}

/* SECTION BADGE + LEFT BORDER */
.entity-card{border-left-width:3px}
.entity-card[data-section="corporate-structure"]  {border-left-color:#1e293b}
.entity-card[data-section="people-internal"]      {border-left-color:#1d4ed8}
.entity-card[data-section="hired-services"]       {border-left-color:#0f766e}
.entity-card[data-section="allied-organizations"] {border-left-color:#7c3aed}
.entity-card[data-section="campaigns"]            {border-left-color:#be185d}
.entity-card[data-section="conferences-events"]   {border-left-color:#b45309}
.entity-card[data-section="events"]               {border-left-color:#b45309}
.entity-card[data-section="people-external"]      {border-left-color:#c2410c}
.entity-card[data-section="indirect-link"]         {border-left-color:#94a3b8}
.entity-card[data-section="people"]               {border-left-color:#6b7280}
.entity-card[data-section="entities"]             {border-left-color:#6b7280}

.section-badge{display:inline-block;font-family:'IBM Plex Mono',monospace;font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:1px 6px;border-radius:3px;margin-bottom:6px}
.sb-corporate-structure  {background:#e2e8f0;color:#1e293b}
.sb-people-internal      {background:#dbeafe;color:#1d4ed8}
.sb-hired-services       {background:#ccfbf1;color:#0f766e}
.sb-allied-organizations {background:#ede9fe;color:#7c3aed}
.sb-campaigns            {background:#fce7f3;color:#be185d}
.sb-conferences-events   {background:#fef3c7;color:#b45309}
.sb-events               {background:#fef3c7;color:#b45309}
.sb-people-external      {background:#ffedd5;color:#c2410c}
.sb-indirect-link        {background:#f1f5f9;color:#64748b}
.sb-people               {background:#f3f4f6;color:#6b7280}
.sb-entities             {background:#f3f4f6;color:#6b7280}
