/* ============================================================================
   The cross-link hub of the SEO matrix (bridge 2026-10-27-141048 item 2): under every how-to page
   (partials/howto_hub.php), the use case × channel grid on /sources/<host>, the per-source links on
   /use-cases/<slug>. Site tokens only (light + dark follow site.css); chips wrap and cards drop to
   one column on a phone, so nothing ever scrolls sideways.
   ========================================================================= */
.hub .wrap{max-width:var(--maxw)}
.hub-title{margin:0 0 18px;font-size:clamp(22px,2.6vw,30px);line-height:1.15;letter-spacing:-.02em}
.hub-group{margin:0 0 22px}
.hub-h{margin:0 0 10px;font-size:13px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}

.hub-chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.hub-chip{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:999px;
  background:var(--card);border:1px solid var(--line-2);color:var(--ink);font-weight:700;font-size:14px;
  text-decoration:none;box-shadow:var(--shadow-sm);transition:border-color .15s ease,color .15s ease}
.hub-chip:hover,.hub-chip:focus-visible{border-color:var(--purple);color:var(--purple)}
.hub-ci{width:18px;height:18px;flex:0 0 18px;display:block}

.hub-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.hub-card{display:flex;align-items:flex-start;gap:12px;min-width:0;padding:14px 16px;border-radius:16px;
  background:var(--card);border:1px solid var(--line-2);color:var(--ink);text-decoration:none;
  box-shadow:var(--shadow-sm);transition:border-color .15s ease,transform .15s ease}
.hub-card:hover,.hub-card:focus-visible{border-color:var(--purple);transform:translateY(-1px)}
.hub-card-lead{flex:0 0 32px;width:32px;height:32px;border-radius:10px;display:grid;place-items:center;
  background:var(--purple-soft);font-size:18px;line-height:1;overflow:hidden}
.hub-card-lead img{width:24px;height:24px;object-fit:contain;display:block}
.hub-mono{font-size:14px;font-weight:800;color:var(--purple)}
.hub-card-txt{display:grid;gap:3px;min-width:0}
.hub-card-txt b{font-size:14.5px;line-height:1.35;font-weight:700;overflow-wrap:anywhere}
.hub-card-txt small{font-size:12.5px;color:var(--muted)}

.hub-more{margin-top:12px}
.hub-more > summary{display:inline-flex;align-items:center;gap:6px;cursor:pointer;list-style:none;
  font-weight:700;font-size:14px;color:var(--purple);padding:6px 2px}
.hub-more > summary::-webkit-details-marker{display:none}
.hub-more > summary::after{content:"▾";font-size:11px;transition:transform .2s ease}
.hub-more[open] > summary::after{transform:rotate(180deg)}
.hub-more[open] > .hub-grid{margin-top:10px}

/* /sources/<host>: one row per use case, its channels as chips */
.hub-matrix{display:grid;gap:10px}
.hub-row{display:grid;grid-template-columns:minmax(0,260px) minmax(0,1fr);gap:8px 16px;align-items:center;
  padding:12px 14px;border-radius:14px;background:var(--card);border:1px solid var(--line-2)}
.hub-row-name{display:flex;align-items:center;gap:10px;font-weight:700;font-size:14.5px;min-width:0}
.hub-row-name .hub-card-lead{flex-basis:28px;width:28px;height:28px;font-size:16px}
.hub-row .hub-chips{gap:8px}
.hub-row .hub-chip{padding:7px 11px;font-size:13px}

/* /use-cases/<slug>: sources grouped by country */
.hub-country{margin:0 0 16px}
.hub-country > h3{margin:0 0 8px;font-size:15px;font-weight:800}

@media (max-width:640px){
  .hub-grid{grid-template-columns:1fr}
  .hub-row{grid-template-columns:1fr}
}
