/* ============================================================================
   Glidebook — Sugar-glider Pedigree Registry
   Shared stylesheet (framework-free handoff build)
   ----------------------------------------------------------------------------
   - All design tokens live on :root (light) and [data-theme="dark"].
   - Palette: white / light surfaces with a BLUE primary (#0d6efd).
   - Sex tokens: male = blue, female = pink. COI severity: green / amber / red.
   - Components are namespaced .gb-*  — no inline styles in the HTML.
   ========================================================================== */

/* ---- Design tokens : LIGHT (default) ------------------------------------- */
:root{
  --gb-bg:#f6f8fc;
  --gb-surface:#ffffff;
  --gb-surface-2:#f1f4fa;
  --gb-ink:#1a1f2b;
  --gb-ink-soft:#3d4555;
  --gb-muted:#6b7280;
  --gb-line:#e3e7ef;
  --gb-line-soft:#eef1f7;
  --gb-chip-bg:#eef2fb;

  --gb-primary:#0d6efd;
  --gb-primary-ink:#ffffff;
  --gb-primary-bg:#e7f0ff;

  /* sex : color + glyph encoding (glyph lives in the markup) */
  --gb-male:#0d6efd;       --gb-male-bg:#e7f0ff;
  --gb-female:#d63384;     --gb-female-bg:#fce8f1;
  --gb-unknown:#6b7280;    --gb-unknown-bg:#eef1f7;

  /* COI severity : <6.25 low | 6.25–12.5 moderate | >12.5 high */
  --gb-coi-low:#198754;    --gb-coi-low-bg:#e4f3ea;
  --gb-coi-mid:#b9810a;    --gb-coi-mid-bg:#fbf0d6;
  --gb-coi-high:#dc3545;   --gb-coi-high-bg:#fbe3e6;
  --gb-coi-unknown:#6b7280;--gb-coi-unknown-bg:#eef1f7;

  --gb-shadow:0 1px 2px rgba(16,30,54,.06);
  --gb-shadow-lg:0 10px 30px rgba(16,30,54,.10);
  --gb-radius:12px;

  --gb-font-sans:'Public Sans',ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  --gb-font-serif:'Newsreader',Georgia,'Times New Roman',serif;
  --gb-font-mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
}

/* ---- Design tokens : DARK ------------------------------------------------ */
[data-theme="dark"]{
  --gb-bg:#0f1419;
  --gb-surface:#161b22;
  --gb-surface-2:#1c232c;
  --gb-ink:#e6edf3;
  --gb-ink-soft:#c2ccd6;
  --gb-muted:#8b949e;
  --gb-line:#2a313a;
  --gb-line-soft:#222931;
  --gb-chip-bg:#1c2530;

  --gb-primary:#4d94ff;
  --gb-primary-ink:#0f1419;
  --gb-primary-bg:#13233d;

  --gb-male:#4d94ff;       --gb-male-bg:#13233d;
  --gb-female:#f06bac;     --gb-female-bg:#3a1f2e;
  --gb-unknown:#8b949e;    --gb-unknown-bg:#1c232c;

  --gb-coi-low:#3fb978;    --gb-coi-low-bg:#11271c;
  --gb-coi-mid:#e0b13a;    --gb-coi-mid-bg:#2e2510;
  --gb-coi-high:#f06a78;   --gb-coi-high-bg:#33191d;
  --gb-coi-unknown:#8b949e;--gb-coi-unknown-bg:#1c232c;

  --gb-shadow:0 1px 2px rgba(0,0,0,.4);
  --gb-shadow-lg:0 12px 34px rgba(0,0,0,.5);
}

/* ---- Base ---------------------------------------------------------------- */
*{ box-sizing:border-box; }
html,body{ margin:0; padding:0; }
body{
  background:var(--gb-bg);
  color:var(--gb-ink);
  font-family:var(--gb-font-sans);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
a{ color:inherit; text-decoration:none; }
img{ display:block; max-width:100%; }
button{ font-family:inherit; }
.gb-tnum{ font-variant-numeric:tabular-nums; }
.gb-sr-only{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); border:0; }

/* ---- Layout shell -------------------------------------------------------- */
.gb-app{ min-height:100vh; display:flex; flex-direction:column; }
.gb-container{ width:100%; max-width:1180px; margin:0 auto; padding:26px 22px 64px; }
.gb-main{ flex:1; }

/* ---- Header / nav -------------------------------------------------------- */
.gb-header{
  position:sticky; top:0; z-index:40;
  display:flex; align-items:center; gap:18px;
  height:62px; padding:0 22px;
  background:color-mix(in srgb, var(--gb-surface) 90%, transparent);
  backdrop-filter:blur(10px);
  border-bottom:1px solid var(--gb-line);
}
.gb-brand{ display:flex; align-items:center; gap:10px; }
.gb-brand__mark{
  display:grid; place-items:center; width:34px; height:34px;
  border-radius:10px; background:var(--gb-primary); color:var(--gb-primary-ink);
  font-size:18px; line-height:1;
}
.gb-brand__name{ font:600 18px/1.05 var(--gb-font-serif); }
.gb-brand__sub{ font:500 9.5px/1 var(--gb-font-sans); letter-spacing:.16em; text-transform:uppercase; color:var(--gb-muted); }
.gb-nav{ display:flex; align-items:center; gap:2px; }
.gb-nav-link{
  all:unset; cursor:pointer; padding:7px 13px; border-radius:8px;
  font:500 13.5px var(--gb-font-sans); color:var(--gb-ink-soft); white-space:nowrap;
}
.gb-nav-link:hover{ background:var(--gb-surface-2); }
.gb-nav-link.is-active{ background:var(--gb-primary-bg); color:var(--gb-primary); font-weight:600; }
.gb-search{ flex:1; display:flex; justify-content:center; max-width:420px; margin:0 auto; position:relative; }
.gb-search__icon{ position:absolute; left:11px; top:50%; transform:translateY(-50%); color:var(--gb-muted); font-size:14px; }
.gb-search__input{
  width:100%; height:38px; padding:0 12px 0 32px;
  border:1px solid var(--gb-line); border-radius:9px;
  background:var(--gb-surface-2); color:var(--gb-ink);
  font:500 13px var(--gb-font-sans); outline:none;
}
.gb-search__input:focus{ border-color:var(--gb-primary); }
.gb-icon-btn{
  all:unset; cursor:pointer; display:grid; place-items:center;
  width:38px; height:38px; border-radius:9px;
  border:1px solid var(--gb-line); color:var(--gb-ink-soft); font-size:15px;
}
.gb-icon-btn:hover{ background:var(--gb-surface-2); }

/* ---- Buttons / chips / badges -------------------------------------------- */
.gb-btn{
  all:unset; cursor:pointer; display:inline-flex; align-items:center; gap:6px;
  padding:10px 18px; border-radius:10px; border:1px solid var(--gb-line);
  font:600 13.5px var(--gb-font-sans); color:var(--gb-ink); background:var(--gb-surface);
  box-shadow:var(--gb-shadow);
}
.gb-btn:hover{ background:var(--gb-surface-2); }
.gb-btn--primary{ background:var(--gb-primary); color:var(--gb-primary-ink); border-color:transparent; }
.gb-btn--primary:hover{ filter:brightness(1.05); background:var(--gb-primary); }
.gb-btn--ghost{ box-shadow:none; }
.gb-link{ cursor:pointer; color:var(--gb-primary); font:600 13px var(--gb-font-sans); }

.gb-chip{
  display:inline-block; font:600 11px var(--gb-font-sans);
  color:var(--gb-ink); background:var(--gb-chip-bg);
  border-radius:5px; padding:3px 8px; white-space:nowrap;
}
.gb-chip--gene{ color:var(--gb-muted); }
.gb-title-tag{
  font:600 9.5px var(--gb-font-mono); letter-spacing:.04em; text-transform:uppercase;
  color:var(--gb-primary); background:var(--gb-primary-bg); border-radius:4px; padding:2px 6px;
}

.gb-coi-badge{
  display:inline-flex; align-items:center; gap:5px;
  font:600 11px var(--gb-font-mono);
  border-radius:20px; padding:3px 8px; white-space:nowrap; flex-shrink:0;
  color:var(--gb-coi-unknown); background:var(--gb-coi-unknown-bg);
}
.gb-coi-badge__dot{ width:6px; height:6px; border-radius:50%; background:currentColor; flex-shrink:0; }
.gb-coi-badge--low{ color:var(--gb-coi-low); background:var(--gb-coi-low-bg); }
.gb-coi-badge--mid{ color:var(--gb-coi-mid); background:var(--gb-coi-mid-bg); }
.gb-coi-badge--high{ color:var(--gb-coi-high); background:var(--gb-coi-high-bg); }

/* sex chip (on card media) */
.gb-sex-chip{
  position:absolute; top:8px; left:8px; z-index:2;
  display:inline-flex; align-items:center; gap:3px;
  font:600 10px var(--gb-font-sans); letter-spacing:.03em;
  background:var(--gb-surface); border-radius:20px; padding:3px 8px 3px 6px;
  box-shadow:var(--gb-shadow);
}
.gb-sex--male{ color:var(--gb-male); }
.gb-sex--female{ color:var(--gb-female); }
.gb-sex--unknown{ color:var(--gb-unknown); }

/* ---- Hero ---------------------------------------------------------------- */
.gb-hero{
  position:relative; overflow:hidden; border-radius:18px;
  background:linear-gradient(120deg, var(--gb-primary-bg), var(--gb-surface-2));
  border:1px solid var(--gb-line); padding:30px 32px; margin-bottom:26px;
}
.gb-hero__eyebrow{ font:600 11px var(--gb-font-sans); letter-spacing:.16em; text-transform:uppercase; color:var(--gb-primary); }
.gb-hero__title{ margin:8px 0; font:500 34px/1.1 var(--gb-font-serif); color:var(--gb-ink); }
.gb-hero__lead{ margin:0; font:400 15px/1.5 var(--gb-font-sans); color:var(--gb-ink-soft); max-width:480px; }
.gb-strong{ font-weight:600; color:var(--gb-ink); }

/* ---- Section heading ----------------------------------------------------- */
.gb-section-head{ display:flex; align-items:center; justify-content:space-between; gap:16px; margin:0 0 14px; flex-wrap:wrap; }
.gb-section-title{ margin:0; font:500 15px var(--gb-font-sans); letter-spacing:.02em; text-transform:uppercase; color:var(--gb-ink-soft); }
.gb-eyebrow{ font:600 13px var(--gb-font-sans); letter-spacing:.06em; text-transform:uppercase; color:var(--gb-muted); }

/* ---- Card grid ----------------------------------------------------------- */
.gb-grid{ display:grid; gap:14px; grid-template-columns:repeat(4,1fr); }
.gb-grid--mates{ grid-template-columns:repeat(2,minmax(0,320px)); }

.gb-card{
  display:flex; flex-direction:column; width:100%; cursor:pointer;
  background:var(--gb-surface); border:1px solid var(--gb-line);
  border-radius:var(--gb-radius); overflow:hidden; box-shadow:var(--gb-shadow);
  transition:transform .14s ease, box-shadow .14s ease, border-color .14s ease;
}
.gb-card:hover{ transform:translateY(-2px); box-shadow:var(--gb-shadow-lg); border-color:var(--gb-primary); }
.gb-card__media{ position:relative; height:96px; display:flex; align-items:center; justify-content:center; overflow:hidden; background:var(--gb-surface-2); }
.gb-card__photo{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.gb-card__glyph{ font:300 46px var(--gb-font-sans); line-height:1; }
.gb-card__body{ padding:12px 13px 13px; display:flex; flex-direction:column; gap:8px; text-align:left; }
.gb-card__row{ display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.gb-card__name{ font:600 17px/1.15 var(--gb-font-serif); color:var(--gb-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.gb-card__cattery{ display:block; max-width:100%; font:500 10.5px var(--gb-font-sans); letter-spacing:.04em; text-transform:uppercase; color:var(--gb-muted); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.gb-card__meta{ display:flex; align-items:center; gap:6px; font:500 11.5px var(--gb-font-mono); color:var(--gb-muted); }
.gb-card__tags{ display:flex; flex-wrap:wrap; gap:5px; }

/* media tint by sex */
.gb-media--male{ background:var(--gb-male-bg); }
.gb-media--female{ background:var(--gb-female-bg); }
.gb-media--unknown{ background:var(--gb-unknown-bg); }

/* ---- Row card (compact list item) --------------------------------------- */
.gb-rowcard{
  display:flex; align-items:center; gap:11px; width:100%; cursor:pointer;
  padding:9px 11px; background:var(--gb-surface);
  border:1px solid var(--gb-line); border-radius:10px;
  transition:background .14s ease, border-color .14s ease;
}
.gb-rowcard:hover{ background:var(--gb-surface-2); border-color:var(--gb-primary); }
.gb-rowcard__media{ position:relative; width:40px; height:40px; border-radius:50%; flex-shrink:0; overflow:hidden; display:flex; align-items:center; justify-content:center; }
.gb-rowcard__photo{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.gb-rowcard__glyph{ font:300 22px var(--gb-font-sans); line-height:1; }
.gb-rowcard__body{ display:flex; flex-direction:column; gap:2px; min-width:0; flex:1; }
.gb-rowcard__name{ font:600 15px/1.1 var(--gb-font-serif); color:var(--gb-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.gb-rowcard__sub{ font:500 11px var(--gb-font-mono); color:var(--gb-muted); }

/* ---- Filter bar ---------------------------------------------------------- */
.gb-filterbar{
  position:sticky; top:62px; z-index:20;
  display:flex; align-items:center; gap:10px; flex-wrap:wrap;
  padding:13px 0; margin-bottom:8px;
  background:var(--gb-bg); border-bottom:1px solid var(--gb-line);
}
.gb-filter-group{ display:flex; align-items:center; gap:6px; }
.gb-divider{ width:1px; height:22px; background:var(--gb-line); }
.gb-spacer{ flex:1; }
.gb-seg{ display:inline-flex; gap:3px; padding:3px; background:var(--gb-surface-2); border-radius:9px; }
.gb-seg-btn{
  all:unset; cursor:pointer; padding:5px 11px; border-radius:7px;
  font:600 12.5px var(--gb-font-sans); color:var(--gb-ink-soft);
}
.gb-seg-btn.is-active{ background:var(--gb-primary); color:var(--gb-primary-ink); }
.gb-select{
  height:32px; padding:0 8px; border:1px solid var(--gb-line); border-radius:8px;
  background:var(--gb-surface); color:var(--gb-ink); font:500 12.5px var(--gb-font-sans);
}
.gb-toggle-btn{
  all:unset; cursor:pointer; padding:5px 11px; border-radius:7px;
  font:600 12.5px var(--gb-font-sans); color:var(--gb-ink-soft);
  background:var(--gb-surface); border:1px solid var(--gb-line);
}
.gb-toggle-btn.is-active{ background:var(--gb-primary); color:var(--gb-primary-ink); border-color:transparent; }
.gb-result-count{ font:500 12.5px var(--gb-font-sans); color:var(--gb-muted); margin:6px 0 16px; }
.gb-center{ display:flex; justify-content:center; margin-top:28px; }

/* ---- Breadcrumb ---------------------------------------------------------- */
.gb-crumbs{ display:flex; align-items:center; gap:8px; margin-bottom:16px; font:500 13px var(--gb-font-sans); color:var(--gb-muted); }
.gb-crumbs__sep{ color:var(--gb-line); }
.gb-crumbs__current{ color:var(--gb-ink-soft); font-weight:600; }

/* ---- Profile header ------------------------------------------------------ */
.gb-profile-head{
  display:grid; grid-template-columns:210px 1fr; gap:26px;
  background:var(--gb-surface); border:1px solid var(--gb-line);
  border-radius:16px; padding:22px; box-shadow:var(--gb-shadow); margin-bottom:22px;
}
.gb-profile-media{ position:relative; border-radius:13px; overflow:hidden; display:grid; place-items:center; min-height:206px; }
.gb-profile-photo{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.gb-profile-glyph{ font:200 92px var(--gb-font-sans); line-height:1; }
.gb-profile-body{ display:flex; flex-direction:column; gap:15px; min-width:0; }
.gb-profile-topline{ display:flex; align-items:flex-start; justify-content:space-between; gap:18px; flex-wrap:wrap; }
.gb-profile-title{ margin:0; font:500 32px/1.05 var(--gb-font-serif); color:var(--gb-ink); }
.gb-profile-tagline{ display:flex; align-items:center; gap:8px; margin-top:6px; flex-wrap:wrap; }
.gb-profile-line{ font:500 11px var(--gb-font-sans); letter-spacing:.06em; text-transform:uppercase; color:var(--gb-muted); }

.gb-coi-badge--lg{ flex-direction:column; align-items:center; gap:2px; padding:9px 18px; border-radius:13px; }
.gb-coi-badge__value{ font:600 24px/1 var(--gb-font-sans); }
.gb-coi-badge__label{ font:600 10px var(--gb-font-sans); letter-spacing:.1em; text-transform:uppercase; }

.gb-coi-meterwrap{ display:flex; align-items:center; gap:10px; }
.gb-coi-meter{ flex:1; height:7px; border-radius:5px; background:var(--gb-surface-2); overflow:hidden; }
.gb-coi-meter__fill{ height:100%; border-radius:5px; }
.gb-coi-meter__fill--low{ background:var(--gb-coi-low); }
.gb-coi-meter__fill--mid{ background:var(--gb-coi-mid); }
.gb-coi-meter__fill--high{ background:var(--gb-coi-high); }
.gb-coi-blurb{ font:500 12.5px var(--gb-font-sans); color:var(--gb-ink-soft); }

.gb-vitals{ display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:1px; background:var(--gb-line); border:1px solid var(--gb-line); border-radius:11px; overflow:hidden; }
.gb-vital{ background:var(--gb-surface); padding:11px 13px; }
.gb-vital__k{ font:600 9.5px var(--gb-font-sans); letter-spacing:.1em; text-transform:uppercase; color:var(--gb-muted); }
.gb-vital__v{ font:600 14px var(--gb-font-sans); color:var(--gb-ink); margin-top:3px; }
.gb-vital__v--mono{ font-family:var(--gb-font-mono); }
.gb-byline{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; font:500 12px var(--gb-font-sans); color:var(--gb-muted); }

/* ---- Tabs ---------------------------------------------------------------- */
.gb-tabs{ display:flex; gap:2px; border-bottom:1px solid var(--gb-line); margin-bottom:22px; overflow-x:auto; }
.gb-tab{
  all:unset; cursor:pointer; padding:11px 15px;
  border-bottom:2px solid transparent; margin-bottom:-1px; white-space:nowrap;
  font:500 13.5px var(--gb-font-sans); color:var(--gb-muted);
}
.gb-tab:hover{ color:var(--gb-ink-soft); }
.gb-tab.is-active{ font-weight:600; color:var(--gb-primary); border-bottom-color:var(--gb-primary); }
.gb-tabpanel{ display:none; }
.gb-tabpanel.is-active{ display:block; }
.gb-tab__count{ opacity:.6; }

.gb-note{
  background:var(--gb-primary-bg); border:1px solid var(--gb-line); border-radius:12px;
  padding:15px 18px; font:400 14.5px/1.5 var(--gb-font-serif); font-style:italic; color:var(--gb-ink-soft);
}
.gb-stack{ display:flex; flex-direction:column; gap:22px; }
.gb-subhead{ margin:0 0 12px; font:600 13px var(--gb-font-sans); letter-spacing:.08em; text-transform:uppercase; color:var(--gb-muted); }
.gb-empty{
  border:1.5px dashed var(--gb-line); border-radius:12px; padding:40px;
  text-align:center; color:var(--gb-muted); font:500 13.5px var(--gb-font-sans);
}

/* ---- Pedigree : toolbar -------------------------------------------------- */
.gb-ped-toolbar{
  position:sticky; top:62px; z-index:30;
  display:flex; align-items:center; gap:14px; flex-wrap:wrap;
  padding:13px 22px;
  background:color-mix(in srgb, var(--gb-surface) 92%, transparent);
  backdrop-filter:blur(8px); border-bottom:1px solid var(--gb-line);
}
.gb-ped-subject{ display:flex; align-items:center; gap:8px; min-width:0; }
.gb-ped-subject__name{ font:500 18px var(--gb-font-serif); color:var(--gb-ink); }
.gb-ped-stage{ padding:26px 22px 50px; }
.gb-field-inline{ display:flex; align-items:center; gap:7px; }
.gb-field-inline__label{ font:600 10.5px var(--gb-font-sans); letter-spacing:.08em; text-transform:uppercase; color:var(--gb-muted); }

/* ---- Pedigree : TREE ----------------------------------------------------- */
.gb-tree-scroll{ overflow-x:auto; padding:8px 4px 16px; }
.gb-tree{
  position:relative; display:grid; gap:0;
  grid-template-columns:repeat(4,1fr); /* 4 generations; see --gens modifiers */
  min-width:820px; margin:0 auto;
}
.gb-tree--gens-3{ grid-template-columns:repeat(3,1fr); min-width:620px; }
.gb-tree--gens-3.gb-tree--mini{ min-width:520px; }
.gb-tree__connectors{ position:absolute; inset:0; width:100%; height:100%; z-index:0; pointer-events:none; }
.gb-tree__connectors line{ stroke:var(--gb-line); stroke-width:1.5; vector-effect:non-scaling-stroke; }
.gb-tree-col{ display:grid; align-items:center; justify-items:stretch; padding:0 9px; }
.gb-tree-col--1{ grid-template-rows:repeat(1,1fr); }
.gb-tree-col--2{ grid-template-rows:repeat(2,1fr); }
.gb-tree-col--4{ grid-template-rows:repeat(4,1fr); }
.gb-tree-col--8{ grid-template-rows:repeat(8,1fr); }

.gb-tree-node{
  position:relative; z-index:1; cursor:pointer;
  display:block; background:var(--gb-surface); border:1px solid var(--gb-line);
  border-radius:11px; padding:8px 10px; box-shadow:var(--gb-shadow); text-align:left;
}
.gb-tree-node--lg{ padding:9px 11px; }
.gb-tree-node__head{ display:flex; align-items:center; gap:8px; }
.gb-tree-node__media{ position:relative; border-radius:50%; flex-shrink:0; overflow:hidden; display:grid; place-items:center; }
.gb-tree-node__media--lg{ width:42px; height:42px; }
.gb-tree-node__media--sm{ width:26px; height:26px; }
.gb-tree-node__photo{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; }
.gb-tree-node__glyph{ line-height:1; }
.gb-tree-node__glyph--lg{ font:300 24px var(--gb-font-sans); }
.gb-tree-node__glyph--sm{ font:300 15px var(--gb-font-sans); }
.gb-tree-node__name{ font:600 12px var(--gb-font-serif); color:var(--gb-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.gb-tree-node__name--lg{ font-size:13.5px; }
.gb-tree-node__sex{ font:600 11px var(--gb-font-sans); flex-shrink:0; }
.gb-tree-node__coi{ font:600 9px var(--gb-font-mono); letter-spacing:.02em; margin-top:1px; }
.gb-tree-node__info{ margin-top:7px; display:flex; flex-direction:column; gap:2px; font:500 9.5px var(--gb-font-mono); color:var(--gb-muted); }
.gb-tree-node__color{ color:var(--gb-ink-soft); font-weight:600; }
/* sex framing for node media */
.gb-tree-node--male   .gb-tree-node__media{ background:var(--gb-male-bg);   box-shadow:0 0 0 1.5px var(--gb-male); }
.gb-tree-node--female .gb-tree-node__media{ background:var(--gb-female-bg); box-shadow:0 0 0 1.5px var(--gb-female); }
.gb-tree-node--unknown .gb-tree-node__media{ background:var(--gb-unknown-bg); box-shadow:0 0 0 1.5px var(--gb-unknown); }
.gb-tree-node--male   .gb-tree-node__glyph,.gb-tree-node--male   .gb-tree-node__sex{ color:var(--gb-male); }
.gb-tree-node--female .gb-tree-node__glyph,.gb-tree-node--female .gb-tree-node__sex{ color:var(--gb-female); }
.gb-tree-node--unknown .gb-tree-node__glyph,.gb-tree-node--unknown .gb-tree-node__sex{ color:var(--gb-unknown); }
.gb-coi-text--low{ color:var(--gb-coi-low); }
.gb-coi-text--mid{ color:var(--gb-coi-mid); }
.gb-coi-text--high{ color:var(--gb-coi-high); }
.gb-coi-text--unknown{ color:var(--gb-coi-unknown); }
/* unknown / empty ancestor slot */
.gb-tree-node--empty{ background:transparent; border:1.5px dashed var(--gb-line); box-shadow:none; text-align:center; padding:11px 8px; }
.gb-tree-node--empty .gb-tree-node__glyph{ font:300 19px var(--gb-font-sans); opacity:.55; }
.gb-tree-node__empty-label{ font:500 10.5px var(--gb-font-sans); color:var(--gb-muted); margin-top:3px; }
/* +expand chip */
.gb-expand-chip{
  position:absolute; right:-9px; top:50%; transform:translateY(-50%); z-index:3;
  width:20px; height:20px; border-radius:50%; border:none; cursor:pointer;
  background:var(--gb-primary); color:var(--gb-primary-ink);
  font:600 14px var(--gb-font-sans); line-height:1; box-shadow:var(--gb-shadow);
}

/* ---- Pedigree : FAN ------------------------------------------------------ */
.gb-fan-wrap{ display:flex; justify-content:center; padding:8px; }
.gb-fan{ width:100%; max-width:560px; height:auto; }
.gb-fan__wedge{ stroke:var(--gb-surface); stroke-width:2; cursor:pointer; }
.gb-fan__wedge--male{ fill:var(--gb-male-bg); }
.gb-fan__wedge--female{ fill:var(--gb-female-bg); }
.gb-fan__wedge--unknown{ fill:var(--gb-surface-2); }
.gb-fan__center{ fill:var(--gb-primary-bg); stroke:var(--gb-primary); stroke-width:2.5; }
.gb-fan__label{ font:600 11px var(--gb-font-sans); fill:var(--gb-ink); pointer-events:none; }
.gb-fan__label--lg{ font-size:13px; }
.gb-fan__center-name{ font:600 16px var(--gb-font-serif); fill:var(--gb-ink); }
.gb-fan__center-glyph{ font:600 14px var(--gb-font-sans); fill:var(--gb-primary); }

/* ---- Pedigree : TABLE ---------------------------------------------------- */
.gb-ped-table-wrap{ max-width:860px; margin:0 auto; border:1px solid var(--gb-line); border-radius:13px; overflow:hidden; box-shadow:var(--gb-shadow); background:var(--gb-surface); }
.gb-ped-table{ width:100%; border-collapse:collapse; font:500 13px var(--gb-font-sans); }
.gb-ped-table thead tr{ background:var(--gb-surface-2); text-align:left; }
.gb-ped-table th{ padding:11px 14px; font:600 10.5px var(--gb-font-sans); letter-spacing:.06em; text-transform:uppercase; color:var(--gb-muted); white-space:nowrap; }
.gb-ped-table th.gb-sortable{ cursor:pointer; }
.gb-ped-table th.gb-num,.gb-ped-table td.gb-num{ text-align:right; }
.gb-ped-table td{ padding:10px 14px; border-top:1px solid var(--gb-line-soft); color:var(--gb-ink-soft); }
.gb-ped-table td.gb-cell-name{ font:600 14px var(--gb-font-serif); color:var(--gb-ink); }
.gb-ped-table td.gb-cell-gen{ color:var(--gb-muted); font-variant-numeric:tabular-nums; }
.gb-ped-table tr.is-unknown{ opacity:.55; }
.gb-cell-sex--male{ color:var(--gb-male); font-weight:600; }
.gb-cell-sex--female{ color:var(--gb-female); font-weight:600; }
.gb-cell-sex--unknown{ color:var(--gb-unknown); font-weight:600; }

/* ---- Legend -------------------------------------------------------------- */
.gb-legend{ display:flex; align-items:center; gap:18px; flex-wrap:wrap; margin-top:26px; padding-top:18px; border-top:1px solid var(--gb-line); font:500 12px var(--gb-font-sans); color:var(--gb-muted); }
.gb-legend__title{ font-weight:600; text-transform:uppercase; letter-spacing:.08em; font-size:10.5px; }
.gb-legend__item{ display:inline-flex; align-items:center; gap:5px; }
.gb-legend__swatch{ width:13px; height:13px; border-radius:4px; }
.gb-legend__swatch--female{ background:var(--gb-female-bg); box-shadow:inset 0 0 0 1.5px var(--gb-female); }
.gb-legend__swatch--male{ background:var(--gb-male-bg); box-shadow:inset 0 0 0 1.5px var(--gb-male); }
.gb-legend__dot{ width:9px; height:9px; border-radius:50%; }
.gb-legend__dot--low{ background:var(--gb-coi-low); }
.gb-legend__dot--mid{ background:var(--gb-coi-mid); }
.gb-legend__dot--high{ background:var(--gb-coi-high); }
.gb-legend__chip{ display:inline-grid; place-items:center; width:16px; height:16px; border-radius:50%; background:var(--gb-primary); color:var(--gb-primary-ink); font:700 11px var(--gb-font-sans); }

/* ---- Forms (advanced search) -------------------------------------------- */
.gb-form{ background:var(--gb-surface); border:1px solid var(--gb-line); border-radius:16px; padding:22px; box-shadow:var(--gb-shadow); margin-bottom:26px; }
.gb-form__grid{ display:grid; grid-template-columns:repeat(2,1fr); gap:16px 20px; }
.gb-field{ display:flex; flex-direction:column; gap:6px; }
.gb-label{ font:600 11px var(--gb-font-sans); letter-spacing:.06em; text-transform:uppercase; color:var(--gb-muted); }
.gb-input{ height:40px; padding:0 12px; border:1px solid var(--gb-line); border-radius:9px; background:var(--gb-surface-2); color:var(--gb-ink); font:500 14px var(--gb-font-sans); outline:none; }
.gb-input--mono{ font-family:var(--gb-font-mono); }
.gb-input:focus,.gb-select:focus{ border-color:var(--gb-primary); }
.gb-select--lg{ height:40px; padding:0 10px; font-size:14px; background:var(--gb-surface-2); }
.gb-range{ display:flex; gap:8px; align-items:center; }
.gb-range__sep{ color:var(--gb-muted); }
.gb-form__actions{ display:flex; align-items:center; gap:12px; margin-top:22px; }
.gb-page-title{ margin:0 0 4px; font:500 30px var(--gb-font-serif); color:var(--gb-ink); }
.gb-page-sub{ margin:0 0 22px; font:400 14.5px var(--gb-font-sans); color:var(--gb-muted); }

/* ---- Admin --------------------------------------------------------------- */
.gb-admin-head{ display:flex; align-items:baseline; gap:12px; margin-bottom:20px; }
.gb-stats{ display:grid; grid-template-columns:repeat(6,1fr); gap:12px; margin-bottom:18px; }
.gb-stat{ background:var(--gb-surface); border:1px solid var(--gb-line); border-radius:12px; padding:14px 15px; box-shadow:var(--gb-shadow); }
.gb-stat__k{ font:600 9.5px var(--gb-font-sans); letter-spacing:.08em; text-transform:uppercase; color:var(--gb-muted); }
.gb-stat__v{ font:600 22px var(--gb-font-sans); color:var(--gb-ink); margin-top:6px; font-variant-numeric:tabular-nums; }
.gb-admin-grid{ display:grid; grid-template-columns:1.55fr 1fr; gap:18px; align-items:start; }
.gb-panel{ background:var(--gb-surface); border:1px solid var(--gb-line); border-radius:14px; box-shadow:var(--gb-shadow); overflow:hidden; }
.gb-panel__head{ display:flex; align-items:center; gap:10px; padding:15px 18px; border-bottom:1px solid var(--gb-line); }
.gb-panel__title{ margin:0; font:600 15px var(--gb-font-sans); color:var(--gb-ink); }
.gb-panel__pad{ padding:18px; }
.gb-badge-count{ display:inline-grid; place-items:center; min-width:22px; height:22px; padding:0 7px; border-radius:11px; background:var(--gb-coi-high-bg); color:var(--gb-coi-high); font:700 12px var(--gb-font-sans); }
.gb-panel__meta{ font:500 12px var(--gb-font-sans); color:var(--gb-muted); }
.gb-queue-item{ display:flex; align-items:center; gap:12px; padding:12px 18px; border-bottom:1px solid var(--gb-line-soft); }
.gb-queue-item:last-child{ border-bottom:none; }
.gb-queue-item__main{ min-width:0; flex:1; }
.gb-queue-item__title{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.gb-queue-item__name{ font:600 14.5px var(--gb-font-serif); color:var(--gb-ink); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.gb-queue-item__sub{ font:500 11.5px var(--gb-font-sans); color:var(--gb-muted); margin-top:3px; }
.gb-kind{ font:600 10.5px var(--gb-font-sans); color:var(--gb-ink-soft); background:var(--gb-surface-2); border-radius:5px; padding:2px 8px; white-space:nowrap; }
.gb-flag{ background:var(--gb-coi-high-bg); color:var(--gb-coi-high); border-radius:5px; padding:2px 7px; font:600 10px var(--gb-font-sans); }
.gb-queue-item__actions{ display:flex; gap:7px; flex-shrink:0; }
.gb-approve{ all:unset; cursor:pointer; padding:7px 13px; border-radius:8px; background:var(--gb-coi-low-bg); color:var(--gb-coi-low); font:600 12.5px var(--gb-font-sans); }
.gb-reject{ all:unset; cursor:pointer; padding:7px 13px; border-radius:8px; border:1px solid var(--gb-line); color:var(--gb-ink-soft); font:600 12.5px var(--gb-font-sans); }
.gb-dist{ display:flex; flex-direction:column; gap:14px; }
.gb-dist__row__head{ display:flex; justify-content:space-between; font:500 12.5px var(--gb-font-sans); color:var(--gb-ink-soft); margin-bottom:5px; }
.gb-bar{ height:9px; border-radius:5px; background:var(--gb-surface-2); overflow:hidden; }
.gb-bar__fill{ height:100%; background:var(--gb-primary); border-radius:5px; }

/* ---- Responsive ---------------------------------------------------------- */
@media (max-width:900px){
  .gb-grid{ grid-template-columns:repeat(2,1fr); }
  .gb-form__grid{ grid-template-columns:1fr; }
  .gb-admin-grid{ grid-template-columns:1fr; }
  .gb-stats{ grid-template-columns:repeat(3,1fr); }
  .gb-profile-head{ grid-template-columns:1fr; }
  .gb-profile-media{ min-height:240px; }
}
@media (max-width:720px){
  .gb-search{ display:none; }
  .gb-vitals{ grid-template-columns:repeat(2,1fr); }
}
@media (max-width:560px){
  .gb-grid{ grid-template-columns:1fr; }
  .gb-grid--mates{ grid-template-columns:1fr; }
  .gb-stats{ grid-template-columns:repeat(2,1fr); }
  .gb-container{ padding:18px 14px 48px; }
  .gb-hero__title{ font-size:27px; }
  .gb-brand__sub{ display:none; }
}

/* ---- Print (pedigree-friendly) ------------------------------------------- */
@media print{
  [data-gb-noprint]{ display:none !important; }
  body{ background:#fff; }
  .gb-header,.gb-ped-toolbar,.gb-legend,.gb-filterbar{ display:none !important; }
  .gb-ped-stage{ padding:0; }
  .gb-tree{ min-width:0; width:100%; }
  .gb-tree-node,.gb-panel,.gb-card,.gb-profile-head{ box-shadow:none !important; }
  .gb-tabpanel{ display:block !important; } /* expand all sections on paper */
}
