/* =============================================================================
   goalies.css — the goalie start board.

   House rules, no exceptions:
     * Newsreader UPRIGHT. No slanted type anywhere; the scope reset below
       holds <em>/<i>/<cite> upright.
     * Ink + blue is the whole accent grammar. Gold survives on exactly one
       thing, the U+25F7 receipt glyph, which hi-receipt.css owns. This sheet
       declares no gold value at all.
     * Semantics: mint = a win, coral = a loss. Nothing else takes them.
       An overtime loss is hollow, because it is neither.
     * Every colour is a token alias. No literal hex outside the navy
       furniture block, which is identical in both themes by design.

   Everything is scoped to .gk-scope so nothing leaks into the shell.
   ============================================================================= */

.gk-scope {
  --gk-field: var(--hi-surface-0);
  --gk-card: var(--hi-surface-1);
  --gk-card2: var(--hi-surface-2);
  --gk-track: var(--hi-surface-3);
  --gk-line: var(--hi-line);
  --gk-hair: var(--hi-hair);

  --gk-ink: var(--hi-ink);
  --gk-ink-2: var(--hi-ink-2);
  --gk-muted: var(--hi-muted);

  --gk-blue: var(--hi-blue);
  --gk-blue-2: var(--hi-blue-2);
  --gk-blue-soft: var(--hi-blue-soft);
  --gk-blue-line: var(--hi-blue-line);
  --gk-on-blue: #ffffff;

  --gk-win: var(--hi-mint);
  --gk-win-soft: var(--hi-mint-soft);
  --gk-loss: var(--hi-coral);
  --gk-loss-soft: var(--hi-coral-soft);

  --gk-fill: var(--hi-data-fill);
  --gk-dtrack: var(--hi-data-track);

  /* navy furniture, the same in both themes */
  --gk-navy-a: #061529;
  --gk-navy-b: #0f4a8f;
  --gk-navy-ink: var(--hi-on-navy);
  --gk-navy-dim: var(--hi-on-navy-dim);
  --gk-navy-hi: var(--hi-on-navy-hi);
  --gk-navy-rule: var(--hi-navy-line);
  --gk-navy-fill: var(--hi-navy-fill);

  --gk-serif: var(--hi-serif);
  --gk-sans: var(--hi-sans);
  --gk-mono: var(--hi-mono);

  --gk-t-micro: 0.68rem;
  --gk-t-small: 0.82rem;
  --gk-shadow: var(--hi-shadow);
  --gk-lift: var(--hi-lift);
}

.gk-scope i, .gk-scope em, .gk-scope cite, .gk-scope b, .gk-scope strong { font-style: normal; }

.gk-main {
  max-width: var(--hi-maxw, 1180px);
  margin: 0 auto;
  padding: 0 1.1rem 4rem;
  color: var(--gk-ink);
  font-family: var(--gk-sans);
}

/* --- research desk cross-nav (canonical .rdesk structure so
       scripts/sync-desk-strip.py maintains the link set) --------------------- */
nav.rdesk .in { display: flex; gap: 8px; overflow-x: auto; padding: 0.7rem 0 0.3rem; scrollbar-width: none; align-items: center; }
nav.rdesk .in::-webkit-scrollbar { display: none; }
nav.rdesk .rlbl {
  font-family: var(--gk-mono); font-size: var(--gk-t-micro); font-weight: 700;
  letter-spacing: 0.14em; text-transform: uppercase; color: var(--gk-muted);
  white-space: nowrap; padding-right: 4px;
}
nav.rdesk a {
  font-family: var(--gk-mono); font-size: var(--gk-t-micro); font-weight: 700;
  letter-spacing: 0.1em; text-transform: uppercase; padding: 6px 12px;
  border-radius: 999px; white-space: nowrap; border: 1px solid var(--gk-line);
  color: var(--gk-muted); text-decoration: none;
  transition: color var(--mo-fast), border-color var(--mo-fast);
}
nav.rdesk a:hover { color: var(--gk-ink); border-color: var(--gk-blue-line); }
nav.rdesk a.here { background: var(--gk-blue); border-color: var(--gk-blue); color: var(--gk-on-blue); }

/* =============================================================================
   1. HERO
   ============================================================================= */
.gk-hero { margin: 0.5rem 0 3rem; }

.gk-hero-band {
  position: relative; overflow: hidden; border-radius: 20px;
  padding: 1.6rem 1.5rem 1.4rem;
  background:
    radial-gradient(120% 160% at 8% 0%, rgba(255,255,255,.09), transparent 58%),
    linear-gradient(135deg, var(--gk-navy-a) 0%, var(--gk-navy-b) 118%);
  color: var(--gk-navy-ink);
  border: 1px solid var(--gk-navy-rule);
  box-shadow: var(--gk-shadow);
}
/* the crease arc, geometry only */
.gk-hero-band::after {
  content: ""; position: absolute; right: -60px; top: -40px;
  width: 320px; height: 320px; border-radius: 50%;
  border: 1px solid rgba(157,184,221,.14);
  box-shadow: inset 0 0 0 40px rgba(157,184,221,.04);
  pointer-events: none;
}
.gk-hero-row { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.gk-hero-issue {
  font-family: var(--gk-mono); font-size: var(--gk-t-micro); font-weight: 700;
  letter-spacing: 0.18em; text-transform: uppercase; color: var(--gk-navy-dim);
}
.gk-hero-stamp, .gk-stamp {
  font-family: var(--gk-mono); font-size: var(--gk-t-micro); font-weight: 600;
  letter-spacing: 0.04em; color: var(--gk-navy-dim);
}
.gk-stamp { color: var(--gk-muted); }
.gk-hero-title {
  font-family: var(--gk-serif); font-weight: 600; line-height: 1.04;
  font-size: clamp(2.1rem, 5.4vw, 3.4rem); margin: 0.7rem 0 0.5rem;
  color: #fff; letter-spacing: -0.015em;
}
.gk-hero-thesis {
  max-width: 62ch; margin: 0 0 1rem; font-size: 1.02rem; line-height: 1.55;
  color: var(--gk-navy-ink);
}
.gk-state {
  display: inline-flex; align-items: center; gap: 0.6rem; flex-wrap: wrap;
  padding: 0.55rem 0.9rem; border-radius: 12px;
  background: var(--gk-navy-fill); border: 1px solid var(--gk-navy-rule);
  font-size: var(--gk-t-small); color: var(--gk-navy-ink); max-width: 74ch;
}
.gk-state .gk-statelbl {
  font-family: var(--gk-mono); font-size: var(--gk-t-micro); font-weight: 700;
  letter-spacing: 0.16em; text-transform: uppercase; color: var(--gk-navy-hi);
}

.gk-hero-rail {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0.9rem; margin-top: 1.2rem; padding-top: 1rem;
  border-top: 1px solid var(--gk-navy-rule);
}
.gk-hero-rail div { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.gk-hero-rail b {
  font-family: var(--gk-serif); font-weight: 600; font-size: clamp(1.3rem, 3vw, 1.9rem);
  color: #fff; line-height: 1;
}
.gk-hero-rail span {
  font-family: var(--gk-mono); font-size: var(--gk-t-micro); font-weight: 600;
  letter-spacing: 0.1em; text-transform: uppercase; color: var(--gk-navy-dim);
}

/* --- the crease wall ------------------------------------------------------ */
.gk-hero-stage {
  display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
  gap: 1rem; margin-top: 1rem; align-items: start;
}
/* Four columns of club marks. The crest is the identifier, not the tri-code:
   32 three-letter monospace strings read as a spreadsheet, and the two-column
   stack this replaced left the card beside it half empty. */
.gk-wall {
  display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px;
}
.gk-club {
  display: grid; grid-template-rows: auto minmax(0, 1fr); gap: 0.45rem;
  align-items: start; text-align: left; justify-items: stretch;
  padding: 0.6rem 0.65rem; border-radius: 12px;
  background: var(--gk-card); border: 1px solid var(--gk-line);
  color: var(--gk-ink); font: inherit; cursor: pointer;
  transition: border-color var(--mo-fast), box-shadow var(--mo-fast), transform var(--mo-fast);
  opacity: 0; transform: translateY(8px);
  animation: gk-rise var(--mo-base, 320ms) var(--mo-ease, cubic-bezier(.2,.7,.3,1)) forwards;
  animation-delay: var(--gk-d, 0ms);
}
@keyframes gk-rise { to { opacity: 1; transform: none; } }
.gk-club:hover, .gk-club:focus-visible { border-color: var(--gk-blue-line); box-shadow: var(--gk-lift); transform: translateY(-1px); outline: none; }
.gk-club[aria-pressed="true"] { border-color: var(--gk-blue); box-shadow: inset 0 0 0 1px var(--gk-blue); }
/* The crest ships as a light/dark PAIR. This page did not previously carry a
   .logo-l/.logo-d swap, so the sheet declares its own rather than assuming a
   host rule exists; without it both marks stack and push the name off the tile. */
.gk-crest { display: block; height: 34px; overflow: hidden; }
.gk-crest img { display: none; height: 34px; width: auto; max-width: 100%; object-fit: contain; }
.gk-crest .logo-l { display: block; }
[data-theme="dark"] .gk-crest .logo-l { display: none; }
[data-theme="dark"] .gk-crest .logo-d { display: block; }
.gk-club-body { min-width: 0; align-self: end; }
.gk-club-name {
  font-size: var(--gk-t-small); font-weight: 600; color: var(--gk-ink);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.gk-share {
  display: flex; height: 8px; border-radius: 999px; overflow: hidden;
  background: var(--gk-dtrack); margin-top: 6px;
}
.gk-share i {
  display: block; height: 100%; background: var(--gk-fill);
  width: 0; transition: width var(--mo-slow, 520ms) var(--mo-ease, cubic-bezier(.2,.7,.3,1));
}
.gk-share i + i { background: var(--gk-blue-2); box-shadow: inset 1px 0 0 var(--gk-card); }
.gk-share i + i + i { background: var(--gk-blue-line); }
.gk-club-meta {
  font-family: var(--gk-mono); font-size: var(--gk-t-micro); color: var(--gk-muted);
  margin-top: 4px; letter-spacing: 0.04em;
}

.gk-feature {
  border-radius: 14px; padding: 0.95rem 1rem;
  background: var(--gk-card); border: 1px solid var(--gk-line);
  box-shadow: var(--gk-ambient, none); position: sticky; top: 1rem;
}
/* The card beside the wall: the club mark and the two goaltenders it actually
   starts. A mug that the league has no photograph for falls back to the
   monogram behind it rather than to a broken frame. */
.gk-faces { display: flex; align-items: center; gap: 0.5rem; margin: 0.5rem 0 0.15rem; }
.gk-faces .gk-crest { height: 30px; width: 34px; flex: 0 0 auto; }
.gk-faces .gk-crest img { height: 30px; }
.gk-mug {
  position: relative; flex: 0 0 auto;
  width: 46px; height: 46px; border-radius: 50%; overflow: hidden;
  background: var(--gk-card2); border: 1px solid var(--gk-line);
  display: grid; place-items: center;
}
.gk-mug i {
  font-family: var(--gk-mono); font-size: 0.78rem; font-weight: 700;
  letter-spacing: 0.04em; color: var(--gk-muted);
}
.gk-mug img {
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; object-position: top center;
}
/* The portrait is a transparent PNG: once one has painted (goalies.js adds
   .has-photo on load), the monogram behind it is hidden so its letters do not
   show through. A failed load or the NHL silhouette never gets the class. */
.gk-mug.has-photo i { visibility: hidden; }
.gk-feature h3 {
  font-family: var(--gk-serif); font-weight: 600; font-size: 1.35rem;
  margin: 0.25rem 0 0.1rem; color: var(--gk-ink);
}
.gk-feature .gk-featlbl {
  font-family: var(--gk-mono); font-size: var(--gk-t-micro); font-weight: 700;
  letter-spacing: 0.16em; text-transform: uppercase; color: var(--gk-muted);
}
.gk-feature .gk-basis {
  font-family: var(--gk-mono); font-size: var(--gk-t-micro); color: var(--gk-muted);
  margin: 0.35rem 0 0.7rem;
}
.gk-featrow {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 0.5rem;
  align-items: baseline; padding: 0.4rem 0; border-top: 1px solid var(--gk-hair);
}
.gk-featrow:first-of-type { border-top: 0; }
.gk-featrow b { font-weight: 600; font-size: 0.92rem; color: var(--gk-ink); }
.gk-featrow span { font-family: var(--gk-mono); font-size: var(--gk-t-small); color: var(--gk-muted); }
.gk-featbar { grid-column: 1 / -1; height: 6px; border-radius: 999px; background: var(--gk-dtrack); overflow: hidden; }
.gk-featbar i { display: block; height: 100%; background: var(--gk-fill); }

/* =============================================================================
   2. SECTIONS
   ============================================================================= */
.gk-sec { margin: 0 0 3rem; }
.gk-sec-head { display: flex; align-items: baseline; gap: 0.8rem; flex-wrap: wrap; }
.gk-kicker {
  font-family: var(--gk-mono); font-size: var(--gk-t-micro); font-weight: 700;
  letter-spacing: 0.18em; text-transform: uppercase; color: var(--gk-blue);
  margin: 0;
}
.gk-sec h2 {
  font-family: var(--gk-serif); font-weight: 600; font-size: clamp(1.4rem, 3.2vw, 2rem);
  margin: 0; color: var(--gk-ink); letter-spacing: -0.01em;
}
.gk-sec-rule { flex: 1 1 40px; height: 1px; background: var(--gk-line); min-width: 24px; }
.gk-lede { max-width: 70ch; color: var(--gk-ink-2); font-size: 0.95rem; line-height: 1.55; margin: 0.6rem 0 1rem; }
.gk-code { font-family: var(--gk-mono); font-size: 0.86em; background: var(--gk-blue-soft); padding: 1px 5px; border-radius: 5px; }

/* --- sort bar ------------------------------------------------------------- */
.gk-sortbar { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; margin-bottom: 0.8rem; }
.gk-sortlbl {
  font-family: var(--gk-mono); font-size: var(--gk-t-micro); font-weight: 700;
  letter-spacing: 0.16em; text-transform: uppercase; color: var(--gk-muted); padding-right: 3px;
}
.gk-sortbar button {
  font-family: var(--gk-mono); font-size: var(--gk-t-micro); font-weight: 700;
  letter-spacing: 0.08em; text-transform: uppercase;
  padding: 6px 12px; border-radius: 999px; cursor: pointer;
  border: 1px solid var(--gk-line); background: var(--gk-card); color: var(--gk-muted);
  transition: color var(--mo-fast), border-color var(--mo-fast), background var(--mo-fast);
}
.gk-sortbar button:hover { color: var(--gk-ink); border-color: var(--gk-blue-line); }
.gk-sortbar button.is-on { background: var(--gk-blue); border-color: var(--gk-blue); color: var(--gk-on-blue); }
.gk-sortsep { width: 1px; height: 18px; background: var(--gk-line); margin: 0 4px; }

/* --- tables --------------------------------------------------------------- */
.gk-tablewrap { overflow-x: auto; border-radius: 14px; border: 1px solid var(--gk-line); background: var(--gk-card); }
.gk-table { width: 100%; border-collapse: collapse; font-size: 0.88rem; min-width: 880px; }
.gk-table thead th {
  position: sticky; top: 0; z-index: 2;
  background: var(--gk-card2); color: var(--gk-muted);
  font-family: var(--gk-mono); font-size: var(--gk-t-micro); font-weight: 700;
  letter-spacing: 0.12em; text-transform: uppercase; text-align: right;
  padding: 0.6rem 0.7rem; border-bottom: 1px solid var(--gk-line); white-space: nowrap;
}
.gk-table thead th:first-child, .gk-table thead th.gk-l { text-align: left; }
.gk-table tbody td { padding: 0.55rem 0.7rem; border-top: 1px solid var(--gk-hair); text-align: right; white-space: nowrap; }
.gk-table tbody td.gk-l { text-align: left; }
.gk-table tbody tr { transition: background var(--mo-fast); }
.gk-table tbody tr:hover { background: var(--gk-blue-soft); }
.gk-table tbody tr.is-lit { background: var(--gk-blue-soft); }
.gk-num { font-family: var(--gk-mono); font-variant-numeric: tabular-nums; }
.gk-strong { font-weight: 700; color: var(--gk-ink); }
.gk-who { display: flex; align-items: center; gap: 0.55rem; min-width: 0; }
.gk-who a { color: var(--gk-ink); text-decoration: none; font-weight: 600; }
.gk-who a:hover { color: var(--gk-blue); text-decoration: underline; }
.gk-mug {
  width: 30px; height: 30px; border-radius: 50%; flex: 0 0 30px;
  background: var(--gk-blue-soft); color: var(--gk-blue);
  display: grid; place-items: center; overflow: hidden;
  font-family: var(--gk-mono); font-size: 0.62rem; font-weight: 700;
}
.gk-mug img { width: 100%; height: 100%; object-fit: cover; }
.gk-role {
  font-family: var(--gk-mono); font-size: var(--gk-t-micro); font-weight: 700;
  letter-spacing: 0.1em; text-transform: uppercase;
  padding: 2px 8px; border-radius: 999px; border: 1px solid var(--gk-line); color: var(--gk-muted);
}
.gk-role.is-starter { border-color: var(--gk-blue-line); color: var(--gk-blue); background: var(--gk-blue-soft); }

/* --- the ten dots --------------------------------------------------------- */
.gk-dots { display: inline-flex; gap: 4px; align-items: center; }
.gk-dot { width: 9px; height: 9px; border-radius: 50%; display: block; }
.gk-dot.is-w { background: var(--gk-win); }
.gk-dot.is-l { background: var(--gk-loss); }
.gk-dot.is-o { background: transparent; box-shadow: inset 0 0 0 1.5px var(--gk-muted); }
.gk-dot.is-n { background: var(--gk-dtrack); }
.gk-spark { display: block; }
.gk-spark path { fill: none; stroke: var(--gk-fill); stroke-width: 1.6; stroke-linejoin: round; stroke-linecap: round; }
.gk-spark .gk-avg { stroke: var(--gk-line); stroke-width: 1; stroke-dasharray: 3 3; }

/* --- small multiples ------------------------------------------------------ */
.gk-smallmult { display: grid; grid-template-columns: repeat(auto-fill, minmax(215px, 1fr)); gap: 10px; }
.gk-sm {
  border-radius: 12px; border: 1px solid var(--gk-line); background: var(--gk-card);
  padding: 0.7rem 0.8rem 0.6rem;
  opacity: 0; transform: translateY(8px);
  animation: gk-rise var(--mo-base, 320ms) var(--mo-ease, cubic-bezier(.2,.7,.3,1)) forwards;
  animation-delay: var(--gk-d, 0ms);
  transition: border-color var(--mo-fast), box-shadow var(--mo-fast);
}
.gk-sm:hover { border-color: var(--gk-blue-line); box-shadow: var(--gk-lift); }
.gk-sm-head { display: flex; align-items: baseline; justify-content: space-between; gap: 0.5rem; }
.gk-sm-head b { font-size: 0.88rem; font-weight: 600; color: var(--gk-ink); }
.gk-sm-head span { font-family: var(--gk-mono); font-size: var(--gk-t-micro); color: var(--gk-muted); }
.gk-sm svg { display: block; width: 100%; height: 74px; margin-top: 0.4rem; }
.gk-sm .gk-base { stroke: var(--gk-muted); stroke-width: 1; stroke-dasharray: 3 3; }
.gk-sm .gk-bar { fill: var(--gk-fill); }
.gk-sm .gk-bar.is-under { fill: var(--gk-blue-line); }
.gk-sm .gk-axis { font-family: var(--gk-mono); font-size: 7px; fill: var(--gk-muted); letter-spacing: 0.06em; }
.gk-sm-foot { font-family: var(--gk-mono); font-size: var(--gk-t-micro); color: var(--gk-muted); margin-top: 0.3rem; }

/* --- edge chips ----------------------------------------------------------- */
.gk-pct {
  font-family: var(--gk-mono); font-size: var(--gk-t-micro); font-weight: 700;
  padding: 1px 6px; border-radius: 999px; margin-left: 6px;
  background: var(--gk-blue-soft); color: var(--gk-blue);
}
.gk-empty-cell { color: var(--gk-muted); }

/* --- boundary list -------------------------------------------------------- */
.gk-boundary { list-style: none; margin: 0.8rem 0 0; padding: 0; display: grid; gap: 0.5rem; max-width: 78ch; }
.gk-boundary li {
  padding: 0.6rem 0.85rem; border-radius: 10px;
  background: var(--gk-card); border: 1px solid var(--gk-line);
  font-size: 0.92rem; color: var(--gk-ink-2); line-height: 1.5;
}

/* --- 04 shooter versus goaltender ----------------------------------------- */
.gk-hunt { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.gk-huntcard {
  border-radius: 14px; padding: 0.95rem 1rem;
  background: var(--gk-card); border: 1px solid var(--gk-line);
  box-shadow: var(--gk-ambient, none);
}
.gk-huntcard .gk-basis { margin: 0.3rem 0 0.7rem; }
.gk-huntrow {
  display: grid; grid-template-columns: 1.6rem minmax(0, 1fr) auto; gap: 0.6rem;
  align-items: center; padding: 0.42rem 0; border-top: 1px solid var(--gk-hair);
}
.gk-huntrow:first-of-type { border-top: 0; }
.gk-huntrank {
  font-family: var(--gk-mono); font-size: var(--gk-t-micro); font-weight: 700;
  color: var(--gk-muted); text-align: right;
}
.gk-huntbody { min-width: 0; }
.gk-huntbody b {
  display: block; font-weight: 600; font-size: 0.92rem; color: var(--gk-ink);
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.gk-huntsub {
  display: block; font-family: var(--gk-mono); font-size: var(--gk-t-micro);
  color: var(--gk-muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.gk-huntbar {
  display: block; height: 5px; margin-top: 5px; border-radius: 999px;
  background: var(--gk-dtrack); overflow: hidden;
}
.gk-huntbar i {
  display: block; height: 100%; width: 0; background: var(--gk-fill);
  transition: width var(--mo-slow, 520ms) var(--mo-ease, cubic-bezier(.2,.7,.3,1));
}
.gk-huntval { text-align: right; display: grid; gap: 1px; }
.gk-huntval b { font-family: var(--gk-mono); font-size: 1.05rem; font-weight: 700; color: var(--gk-ink); }
.gk-huntval span {
  font-family: var(--gk-mono); font-size: var(--gk-t-micro); letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--gk-muted);
}
.gk-huntnote {
  grid-column: 1 / -1; margin: 0; padding: 0.7rem 0.9rem;
  border-radius: 12px; border: 1px dashed var(--gk-line); background: var(--gk-card2);
  font-size: var(--gk-t-small); color: var(--gk-ink-2);
}
.gk-huntnote b { color: var(--gk-ink); font-weight: 600; }

/* =============================================================================
   MOBILE — the table becomes cards
   ============================================================================= */
.gk-cards { display: none; }

@media (max-width: 880px) {
  .gk-hero-stage { grid-template-columns: minmax(0, 1fr); }
  .gk-feature { position: static; order: -1; }
  .gk-wall { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .gk-hero-rail { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .gk-hunt { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 720px) {
  .gk-main { padding: 0 0.8rem 3rem; }
  .gk-tablewrap { display: none; }
  .gk-cards { display: grid; gap: 10px; }
  .gk-card {
    border-radius: 12px; border: 1px solid var(--gk-line); background: var(--gk-card);
    padding: 0.75rem 0.85rem;
  }
  .gk-card-top { display: flex; align-items: center; gap: 0.6rem; justify-content: space-between; }
  .gk-card-line {
    display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0.4rem;
    margin-top: 0.6rem; padding-top: 0.55rem; border-top: 1px solid var(--gk-hair);
  }
  .gk-card-line div { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
  .gk-card-line b { font-family: var(--gk-mono); font-size: 0.92rem; font-weight: 700; color: var(--gk-ink); }
  .gk-card-line span {
    font-family: var(--gk-mono); font-size: var(--gk-t-micro); letter-spacing: 0.08em;
    text-transform: uppercase; color: var(--gk-muted);
  }
  .gk-card-dots { margin-top: 0.6rem; display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; }
  .gk-smallmult { grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); }
  .gk-wall { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .gk-crest, .gk-crest img { height: 28px; }
}

@media (prefers-reduced-motion: reduce) {
  .gk-club, .gk-sm { animation: none; opacity: 1; transform: none; }
  .gk-share i, .gk-huntbar i { transition: none; }
}
