.tourneyWrap { max-width: 820px; margin: 0 auto; padding: 1rem 20px 6rem; text-align: center; }
.tourneySub { color: var(--text-muted); font-size: 0.9rem; line-height: 1.7; margin: 0 auto 3rem; max-width: 560px; }
/* Column count follows how many spaces there actually are, rather than a fixed
   two that leaves a single entry stranded in the left half of the page. One
   gets a wider, centred card; two split; three or more settle into thirds. */
.orgBannerGrid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    text-align: left;
}
.orgBannerGrid[data-count="1"] {
    grid-template-columns: minmax(0, 460px);
    justify-content: center;
}
.orgBannerGrid[data-count="2"] { grid-template-columns: repeat(2, minmax(0, 1fr)); }

@media (max-width: 900px) { .orgBannerGrid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) {
    .orgBannerGrid,
    .orgBannerGrid[data-count="2"] { grid-template-columns: minmax(0, 1fr); }
}

.orgBanner {
    display: block;
    background: var(--bg-card);
    border: 1px solid var(--border);
    border-radius: 12px;
    padding: 22px 24px;
    text-decoration: none;
    box-shadow: 0 2px 8px rgba(0,0,0,0.25);
    transition: transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease, background 0.18s ease;
    position: relative;
    overflow: hidden;
}
.orgBanner::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(120deg, transparent 30%, rgba(201,168,76,0.08) 50%, transparent 70%);
    transform: translateX(-100%);
    transition: transform 0.5s ease;
}
.orgBanner:hover::before { transform: translateX(100%); }
.orgBanner:hover {
    border-color: var(--gold-dim);
    transform: translateY(-3px);
    box-shadow: 0 10px 24px rgba(0,0,0,0.4), 0 0 0 1px rgba(201,168,76,0.12);
    background: var(--bg-card-hover, var(--bg-card));
}
.orgBanner:active { transform: translateY(-1px) scale(0.98); }
.orgBannerLockup { display: flex; align-items: baseline; gap: 8px; margin-bottom: 6px; }
/* Carries .wordmark, which brings the face, the gradient and the gold "a".
   Nothing to set here but the size -- a colour would paint over the gradient.
   Held back a little, because this lockup inverts the nav's hierarchy
   otherwise: there the org name is the quiet half beside a 2.8rem wordmark,
   here the org is the point of the card and a full-strength white Lafter at
   1.5rem outshouts it. Opacity rather than a colour, so the gradient and the
   gold "a" survive. */
.orgBannerLafter { font-size: 1.5rem; opacity: 0.78; }
.orgBanner:hover .orgBannerLafter { opacity: 1; }
.orgBannerPlus { font-family: var(--font-mono); font-size: 0.9rem; color: var(--gold); }

/* No font-family here on purpose. The element also carries .orgFont and, for
   an org with a rule of its own, .orgFont--<slug>; those are single-class
   selectors too, so whichever stylesheet loads last wins. This one loads
   after style.css, so setting a face here silently overrode every per-org
   face -- Amazon rendered in Caveat like any other org, keeping only the
   text-transform that nothing here happened to override. Size and colour are
   this file's business; the typeface is the org's. */
.orgBannerName { font-size: 1.3rem; color: var(--gold); }
.orgBannerMeta { font-size: 0.75rem; color: var(--text-muted); font-family: var(--font-mono); }

/* A lone space is the page, so it gets the room to look like it. */
.orgBannerGrid[data-count="1"] .orgBanner { padding: 34px 34px 30px; text-align: center; }
.orgBannerGrid[data-count="1"] .orgBannerLockup { justify-content: center; gap: 11px; margin-bottom: 10px; }
.orgBannerGrid[data-count="1"] .orgBannerLafter { font-size: 1.85rem; }
.orgBannerGrid[data-count="1"] .orgBannerPlus { font-size: 1.15rem; }
.orgBannerGrid[data-count="1"] .orgBannerName { font-size: 1.85rem; }
.orgBannerGrid[data-count="1"] .orgBannerMeta { font-size: 0.8rem; }

.emptyOrgs { color: var(--text-muted); font-size: 0.9rem; padding: 40px 0; }
