/* Company directory (static pages generated by companies/build_companies.py). Extends /assets/style.css. */
.cd-main { overflow-wrap: anywhere; }
.cd-mobile-nav { display: none; gap: 4px; padding: 6px 12px; overflow-x: auto; white-space: nowrap; border-top: 1px solid var(--line-2); }
.cd-mobile-nav a { font-size: 0.85rem; padding: 4px 8px; color: var(--ink-2); }
@media (max-width: 1000px) { .cd-mobile-nav { display: flex; } }
/* #nav-cta-collapse wraps the All-Companies/Resources/Sign-in nav-cta buttons (companies/build_companies.py,
   resources/build_resources.py header()); "display: contents" keeps them as direct flex children of .nav-cta
   (so the existing gap/align-items rules in assets/style.css apply unchanged) until they collapse behind the
   burger + mobile panel at the same width the SPA header (assets/public.js) already hides its own nav-cta extras. */
#nav-cta-collapse { display: contents; }
@media (max-width: 900px) { #nav-cta-collapse { display: none; } }
.pub-nav .logo img { flex: none; max-width: none; }
.cd-lead { font-size: 1.05rem; max-width: 76ch; margin: 6px 0 14px; }
.cd-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 14px; }
.cd-head-main { min-width: 0; flex: 1 1 320px; }
.cd-head-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 6px; }
.cd-head-meta a.pill { text-decoration: none; }
.cd-ext { font-size: 0.9rem; }
.cd-charter { display: inline-flex; flex-direction: column; align-items: flex-start; gap: 4px; }
.cd-charter .cd-blur { filter: blur(3px); pointer-events: none; user-select: none; opacity: 0.85; }
.cd-charter .cd-caption { font-size: 0.8rem; color: var(--ink-2); }
/* Tab nav: dropdown groups (hover or click on desktop, keyboard via company.js); accordion at <=768px. */
.cd-tabs { display: flex; align-items: center; gap: 4px; flex-wrap: wrap; border-bottom: 1px solid var(--line); margin: 8px 0 18px; padding-bottom: 8px; position: relative; }
.cd-hidden-toggle { border: 1px dashed var(--line); background: none; border-radius: var(--ui-radius-lg); padding: 6px 10px; font: inherit; font-size: 0.85rem; color: var(--ink-3); cursor: pointer; }
.cd-hidden-toggle:hover, .cd-hidden-toggle[aria-expanded="true"] { color: var(--ink); border-color: var(--ink-3); }
.cd-hidden-toggle:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
.cd-group { position: relative; }
.cd-group-btn { display: inline-flex; align-items: center; gap: 6px; border: 1px solid var(--line); background: #fff; border-radius: var(--ui-radius-lg); padding: 6px 10px; font: inherit; font-size: 0.9rem; color: var(--ink); cursor: pointer; }
.cd-group-btn:focus-visible { outline: 2px solid var(--blue); outline-offset: 2px; }
.cd-group-btn svg { flex: none; color: var(--ink-3); transition: transform .15s; }
.cd-group.open .cd-group-btn svg { transform: rotate(180deg); }
.cd-group-cur { color: var(--ink-3); font-size: 0.85rem; }
.cd-group-cur:empty { display: none; }
.cd-group-cur::before { content: "\00b7"; margin-right: 6px; }
.cd-group:hover .cd-group-btn, .cd-group.open .cd-group-btn { background: var(--line-2); }
.cd-group.active .cd-group-btn { border-color: var(--navy); color: var(--navy); }
.cd-menu { display: none; position: absolute; left: 0; top: calc(100% + 4px); z-index: 20; min-width: 200px; background: #fff; border: 1px solid var(--line); border-radius: var(--ui-radius-lg); box-shadow: 0 8px 24px rgba(6,42,76,0.12); padding: 6px; }
.cd-group.open .cd-menu { display: block; }
@media (hover: hover) and (min-width: 769px) { .cd-group:hover .cd-menu { display: block; } }
.cd-menu a { display: block; padding: 7px 10px; border-radius: var(--ui-radius-md); color: var(--ink); font-size: 0.92rem; white-space: normal; overflow-wrap: anywhere; }   /* tab labels wrap, never truncate */
.cd-menu a[hidden] { display: none; }
.cd-menu a:hover { background: var(--line-2); text-decoration: none; }
.cd-menu a:focus-visible { outline: 2px solid var(--blue); outline-offset: -2px; }
.cd-menu a.active, .cd-menu a[aria-current="page"] { background: var(--navy); color: #fff; }
.cd-current { margin-left: auto; font-size: 0.85rem; color: var(--ink-3); }
@media (max-width: 768px) {
  /* Accordion: every group is expanded by default (company.js), so all 19 tab links stay visible, readable and
     keyboard reachable on a phone. Nothing here may clip or truncate a label. */
  .cd-tabs { flex-direction: column; align-items: stretch; gap: 6px; max-width: 100%; }
  .cd-group { position: static; min-width: 0; }
  .cd-group-btn { width: 100%; justify-content: space-between; align-items: flex-start; gap: 4px 8px; flex-wrap: wrap; padding: 9px 12px; text-align: left; white-space: normal; overflow-wrap: anywhere; }
  .cd-group-btn .cd-group-cur { margin-left: auto; text-align: right; white-space: normal; overflow-wrap: anywhere; }
  .cd-menu { position: static; box-shadow: none; margin: 4px 0 2px; min-width: 0; max-width: 100%; }
  .cd-menu a { padding: 9px 12px; font-size: 0.95rem; }
  .cd-current { margin-left: 0; padding-top: 4px; }
}
.cd-tab h2 { margin: 0 0 12px; }
.cd-tab h2:focus-visible { outline: 3px solid var(--blue); outline-offset: 3px; border-radius: 2px; }
.cd-tab ul { padding-left: 20px; }
.cd-tab li { margin: 4px 0; }
.cd-unknown { background: var(--line-2); border-radius: 8px; padding: 10px 12px; color: var(--ink-2); }
.cd-dl { display: grid; grid-template-columns: max-content 1fr; gap: 6px 18px; margin: 0 0 12px; }
.cd-dl dt { color: var(--ink-3); font-size: 0.85rem; }
.cd-dl dd { margin: 0; }
@media (max-width: 560px) { .cd-dl { grid-template-columns: 1fr; gap: 2px 0; } .cd-dl dd { margin-bottom: 8px; } }
.cd-faq details { border-bottom: 1px solid var(--line-2); padding: 8px 0; }
.cd-faq summary { cursor: pointer; font-weight: 500; }
.cd-h2 { margin: 36px 0 12px; }
.cd-links { list-style: none; padding: 0; margin: 8px 0 0; }
.cd-links li { padding: 3px 0; }
@media (max-width: 760px) { .cards.c2, .cards.c3 { grid-template-columns: 1fr; } }
.cd-footer { border-top: 1px solid var(--line); background: #fff; }
.cd-footer-in { max-width: 1200px; margin: 0 auto; padding: 18px 24px; display: flex; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
/* ---------- Directory: search + searchable multi-select facets ---------- */
.cd-filters { margin-bottom: 14px; }
.cd-filters .field { margin-bottom: 0; }
.cd-filters .field input { width: 100%; }
.cd-facets { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 12px 14px; margin-top: 14px; }
@media (max-width: 560px) { .cd-facets { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } }
.cd-ms { position: relative; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
/* Visually hidden: the button already says "All segments"; the selected state says "Segment: 2 selected". */
.cd-ms-name { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.cd-ms-btn { display: flex; align-items: center; justify-content: space-between; gap: 8px; width: 100%; text-align: left; min-height: 42px; padding: 9px 12px; font-size: 0.95rem; }
.cd-ms-btn svg { flex: none; transition: transform .15s; }
.cd-ms.open .cd-ms-btn svg { transform: rotate(180deg); }
.cd-ms-panel { position: absolute; z-index: 40; left: 0; top: 100%; margin-top: 4px; min-width: 100%; width: max-content; max-width: min(360px, calc(100vw - 32px)); }
.cd-ms.flip .cd-ms-panel { left: auto; right: 0; }
.cd-ms-q { width: 100%; margin-bottom: 6px; }
.cd-ms-opts { max-height: 260px; overflow-y: auto; overscroll-behavior: contain; }
.cd-ms-opt { display: flex; align-items: flex-start; gap: 8px; margin: 0; padding: 5px 8px; border-radius: var(--ui-radius-md); font-size: 0.88rem; color: var(--ink); cursor: pointer; }
.cd-ms-opt:hover { background: var(--line-2); }
.cd-ms-opt:focus-within { background: var(--blue-bg); }
.cd-ms-opt input { margin: 3px 0 0; flex: none; }
.cd-ms-opt .t { flex: 1 1 auto; min-width: 0; white-space: normal; overflow-wrap: anywhere; }   /* option labels are never truncated */
.cd-ms-opt .n { flex: none; color: var(--ink-3); font-size: 0.8rem; padding-top: 1px; }
.cd-ms-empty { padding: 6px 8px; color: var(--ink-3); font-size: 0.85rem; }
.cd-ms-foot { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 6px; padding-top: 6px; border-top: 1px solid var(--line-2); font-size: 0.8rem; color: var(--ink-3); }
.cd-active { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.cd-active:empty { display: none; }
.cd-active button { white-space: normal; overflow-wrap: anywhere; text-align: left; }
.cd-toolbar { display: flex; align-items: center; gap: 8px 14px; flex-wrap: wrap; margin-top: 12px; }
.cd-sort { display: inline-flex; align-items: center; gap: 4px; flex-wrap: wrap; font-size: 0.85rem; color: var(--ink-2); }
.cd-sort > span { margin-right: 4px; }
.cd-toolbar #cd-reset { margin-left: auto; }
.cd-empty-control { display: flex; align-items: center; gap: 8px 12px; flex-wrap: wrap; margin-top: 10px; font-size: 0.86rem; color: var(--ink-3); }
.cd-empty-control #cd-empty-toggle { flex: none; }
/* ---------- Directory: analytics (stat strip + two lists) ---------- */
.cd-analytics { margin-bottom: 14px; padding: 0; }
.cd-analytics > summary { cursor: pointer; padding: 12px 18px; font-weight: 500; list-style: none; display: flex; align-items: center; gap: 8px; }
.cd-analytics > summary::-webkit-details-marker { display: none; }
.cd-analytics > summary h2 { font: inherit; margin: 0; display: inline; }
.cd-analytics > summary::before { content: "\25B8"; color: var(--ink-3); }
.cd-analytics[open] > summary::before { content: "\25BE"; }
.cd-analytics > div { padding: 0 18px 16px; }
.cd-analytics .csa-chart-card { padding: 8px 10px; }
.cd-analytics .cd-stat .value { font-size: 1.15rem; }
.cd-stats { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px 14px; }
/* This element also carries .csa-analytics-grid (sites/shared/charts/charts.css), which supplies the actual
   columns/gap here (later stylesheet, same specificity, so it wins over the rule above - that rule is only
   the pre-chart-cards fallback). The shared rule's `align-items: start` left short stat tiles top-aligned
   next to the much taller Charter coverage donut card, so each row read as jagged with dead whitespace under
   the short cards instead of matching heights. Override with higher specificity, scoped to this page only. */
.cd-stats.csa-analytics-grid { align-items: stretch; }
@media (max-width: 560px) { .cd-analytics { padding: 14px; } .cd-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } }
.cd-stat { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.cd-stat .label { font-size: 0.76rem; color: var(--ink-3); }
.cd-stat .value { font-size: 1.35rem; color: var(--ink); font-weight: 500; letter-spacing: -0.01em; line-height: 1.25; }
.cd-stat .sub { font-size: 0.76rem; color: var(--ink-3); }
.cd-stat.wide { grid-column: 1 / -1; }
.cd-stat.wide .value { font-size: 0.95rem; font-weight: 400; }
.cd-stat.wide .value b { font-weight: 600; }
.cd-stat.wide .dot { color: var(--ink-3); margin: 0 6px; }
.cd-lists { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px 28px; margin-top: 12px; padding-top: 12px; border-top: 1px solid var(--line-2); }
.cd-list { min-width: 0; }
.cd-list h3 { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.03em; color: var(--ink-3); margin: 0 0 4px; }
.cd-list ol { list-style: none; margin: 0; padding: 0; }
.cd-list li { display: flex; align-items: baseline; justify-content: space-between; gap: 10px; font-size: 0.9rem; padding: 2px 0; }
.cd-list p { margin: 0; font-size: 0.85rem; }
.cd-list-btn { background: none; border: 0; padding: 0; font: inherit; color: var(--blue); cursor: pointer; text-align: left; min-width: 0; overflow-wrap: anywhere; }
.cd-list-btn:hover { text-decoration: underline; }
.cd-list-btn[aria-pressed="true"] { color: var(--navy); font-weight: 600; }
.cd-list-btn[aria-pressed="true"]::after { content: " \2713"; }
.cd-list .n { color: var(--ink-3); font-size: 0.82rem; flex: none; }
/* ---------- Directory: results ---------- */
.cd-results { display: grid; gap: 8px; }
.cd-row { display: flex; align-items: baseline; justify-content: space-between; gap: 8px 16px; flex-wrap: wrap; background: var(--card); border: 1px solid rgba(6,42,76,0.1); border-radius: var(--ui-radius-lg); padding: 12px 14px; color: var(--ink); }
.cd-row:hover { text-decoration: none; border-color: var(--navy); }
.cd-row .nm { font-weight: 500; min-width: 0; overflow-wrap: anywhere; }
.cd-row .meta { font-size: 0.85rem; color: var(--ink-3); white-space: nowrap; }
.cd-sentinel { height: 1px; }
.cd-more { padding: 14px 0; }
.cd-method { margin-top: 20px; color: var(--ink-2); font-size: 0.9rem; }
.cd-method summary { cursor: pointer; }
.cd-method ul { padding-left: 20px; margin: 8px 0; }
.cd-method li { margin: 3px 0; }
/* ---------- Cross-asset joins, counts, job listings and talent summary on company pages ---------- */
.cd-joins { list-style: none; display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 10px 0 0; padding: 0; font-size: 0.9rem; }
.cd-joins li { display: inline-flex; align-items: baseline; gap: 6px; min-width: 0; }
.cd-joins small { font-size: 0.8rem; }
.cd-counts { display: flex; flex-wrap: wrap; gap: 8px 18px; margin: 0 0 12px; font-weight: 500; }
.cd-tab ul.cd-jobs { list-style: none; padding: 0; margin: 0 0 16px; }
.cd-job { display: grid; gap: 4px; padding: 10px 0; border-bottom: 1px solid var(--line-2); margin: 0; min-width: 0; }
.cd-job-title { font-weight: 500; overflow-wrap: anywhere; }
.cd-job-meta { color: var(--ink-2); font-size: 0.88rem; overflow-wrap: anywhere; }
.cd-job-links { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 0.88rem; }
.cd-jobs.closed .cd-job-title { color: var(--ink-2); }
.cd-history { margin: 0 0 12px; }
.cd-ctas { gap: 8px; flex-wrap: wrap; margin-top: 12px; }
.cd-tab .cd-dl dd b { font-weight: 600; }
