/*
  Greybear's Rest — shared character vcard chassis.
  Loaded after tokens.css/components.css/hub-<world>.css (hall-of-heroes
  pages skip the hub file, having no hub)/world-header.css on every
  character vcard page. Was previously a ~72-98-line inline <style> block
  copy-pasted into every vcard; extracted here once most pages had
  reproduced it byte-for-byte.

  Uses tokens.css's variables directly (--ink, --text-dim, --space-*) —
  no local aliasing needed, unlike chronicle-article.css.

  Two pages don't have a "Gear & Stats" section (no .gear-grid/.gear-slot
  elements) — the unused rules below are harmless no-ops there.

  Hall-of-heroes pages (no hub-nav bar above the vcard split) override
  --vcard-content-offset in a small trailing <style> block to reclaim the
  extra ~56px .vcard-split__content's min-height would otherwise reserve
  for a hub-nav row that isn't there.
*/

html, body {
  margin: 0;
}

/* ---------- Full-page background portrait, text card on the right half ---------- */

.vcard-bg {
  position: fixed;
  inset: 0;
  z-index: -1;
}

.vcard-bg img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: left center;
  display: block;
}

/* Restore the normal solid top bar — without this it inherits the
   fixed background image showing through behind it, since .site-nav
   has no background of its own on any page (it normally just relies
   on body's solid background sitting behind it in the stacking order). */
.site-nav {
  background: var(--ink);
}

.hub-nav {
  width: 50%;
  margin-left: auto;
  background: rgba(10, 13, 15, 1);
}

.vcard-split {
  display: flex;
}

.vcard-split__content {
  flex: 0 0 50%;
  margin-left: auto;
  min-height: calc(100vh - var(--vcard-content-offset, 130px));
  background: rgba(10, 13, 15, 1);
  backdrop-filter: blur(3px);
  -webkit-backdrop-filter: blur(3px);
  padding: clamp(var(--space-6), 5vw, var(--space-8));
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
  text-shadow: 0 1px 4px rgba(0, 0, 0, 0.85);
}

@media (max-width: 700px) {
  .vcard-split__content {
    flex-basis: 100%;
  }
}

.vcard-split__eyebrow {
  margin: 0;
  color: var(--text-dim);
}

.vcard-split__content h1 {
  font-size: clamp(1.9rem, 4vw, 2.6rem);
  margin: var(--space-2) 0 0;
}

.vcard-split__epithet {
  color: var(--text-dim);
  font-size: 1.05rem;
  margin: 0 0 var(--space-2);
}

.vcard-split__cross-links {
  min-height: 1.5em;
}

.vcard-split__bio-link {
  margin: var(--space-3) 0 0;
}

.vcard-gear h2 {
  font-size: 1.1rem;
  margin: 0 0 var(--space-3);
}

.gear-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: var(--space-3);
}

.gear-slot {
  padding: var(--space-2);
}

.vcard-split__back {
  margin-top: auto;
  padding-top: var(--space-4);
}
