/* ─────────────────────────────────────────────────────────
   Jedah app — warm dark, editorial typography
   Shared stylesheet for all app/*.html pages.
   Design tokens live in design-tokens.css (imported below).
   ───────────────────────────────────────────────────────── */

@import './design-tokens.css';

/* (Marketing design overrides appended at end of file so cascade wins.) */

* { box-sizing: border-box; margin: 0; padding: 0; }
html, body { height: 100%; }
body {
  font-family: var(--font-body);
  background: var(--bg);
  color: var(--text);
  font-size: var(--fs-body);
  line-height: var(--lh-normal);
}
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; }

/* ───── Shell ───── */
.shell {
  display: grid;
  grid-template-columns: var(--sidebar-w) 1fr;
  min-height: 100vh;
  transition: grid-template-columns var(--dur) var(--ease);
}

/* ───── Sidebar ───── */
.sidebar {
  background:
    linear-gradient(180deg,
      var(--bg-deep) 0%,
      var(--bg) 100%);
  border-right: 1px solid var(--hair);
  padding: var(--sp-6) 0 var(--sp-5);
  display: flex;
  flex-direction: column;
  gap: 2px;
  position: sticky;
  top: 0;
  height: 100vh;
  overflow: hidden;
  overflow-y: auto;
  scrollbar-width: thin;
  scrollbar-color: var(--hair-strong) transparent;
}
.sidebar::-webkit-scrollbar { width: 4px; }
.sidebar::-webkit-scrollbar-track { background: transparent; }
.sidebar::-webkit-scrollbar-thumb {
  background: var(--hair-strong);
  border-radius: 2px;
}
.sidebar::-webkit-scrollbar-thumb:hover { background: var(--text-4); }

/* Brand block */
.brand {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: 0 var(--sp-5) var(--sp-6);
  margin-bottom: var(--sp-2);
  border-bottom: 1px solid var(--hair);
}
.brand-logo {
  width: 40px; height: 40px;
  background: transparent center/contain no-repeat url('/app/assets/jedah-logo-small.svg');
  position: relative;
  flex-shrink: 0;
}
.brand-logo::before { display: none; }
.brand-logo::after  { display: none; }
.brand-name {
  font-family: var(--font-display);
  font-size: var(--fs-h2);
  font-weight: 500;
  letter-spacing: var(--ls-tight);
  color: var(--text);
  line-height: 1.1;
}

/* Nav items */
.nav-section-label {
  font-family: var(--font-mono);
  font-size: var(--fs-tiny);
  letter-spacing: var(--ls-widest);
  color: var(--text-4);
  text-transform: uppercase;
  padding: var(--sp-4) var(--sp-5) var(--sp-2);
}
.nav-section-label:first-of-type { padding-top: var(--sp-3); }
.nav-item {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-2) var(--sp-5);
  margin: 1px var(--sp-3);
  border-radius: var(--r);
  font-size: var(--fs-body-sm);
  color: var(--text-3);
  text-decoration: none;
  transition:
    color var(--dur) var(--ease),
    background var(--dur) var(--ease);
  position: relative;
}
.nav-item:hover { color: var(--text); background: var(--bg-tint); }
.nav-item.active {
  color: var(--text);
  background: var(--gold-fill);
  font-weight: 500;
}
.nav-item.active::before {
  content: '';
  position: absolute;
  left: calc(-1 * var(--sp-3));
  top: 7px;
  bottom: 7px;
  width: 3px;
  background: var(--gold);
  border-radius: 0 2px 2px 0;
  box-shadow: 0 0 8px var(--gold-glow);
}
.nav-item .nav-icon {
  width: 15px; height: 15px;
  flex-shrink: 0;
  color: var(--text-3);
  transition: color var(--dur) var(--ease);
}
.nav-item:hover .nav-icon,
.nav-item.active .nav-icon { color: var(--gold); }

/* Bottom nav: toggle + user block */
.nav-bottom {
  margin-top: auto;
  padding-top: var(--sp-3);
  border-top: 1px solid var(--hair);
}
.sidebar-toggle-btn {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  width: 100%;
  padding: var(--sp-2) var(--sp-5);
  margin: 1px var(--sp-3);
  border-radius: var(--r);
  font-size: var(--fs-body-sm);
  color: var(--text-4);
  background: none;
  border: none;
  cursor: pointer;
  margin-bottom: var(--sp-2);
  transition: color var(--dur) var(--ease), background var(--dur) var(--ease);
  white-space: nowrap;
  width: calc(100% - 2 * var(--sp-3));
}
.sidebar-toggle-btn:hover { color: var(--text-2); background: var(--bg-tint); }
.sidebar-chevron { width: 14px; height: 14px; transition: transform 0.22s ease; flex-shrink: 0; }

/* Collapsed sidebar */
.shell.sidebar-collapsed { --sidebar-w: 52px; }
.shell.sidebar-collapsed .sidebar { padding: var(--sp-4) 0; overflow-x: hidden; overflow-y: auto; }
.shell.sidebar-collapsed .nav-label,
.shell.sidebar-collapsed .brand-name,
.shell.sidebar-collapsed .nav-section-label,
.shell.sidebar-collapsed .user-info,
.shell.sidebar-collapsed .signout-link { display: none; }
.shell.sidebar-collapsed .brand { justify-content: center; padding: 0 0 var(--sp-4); }
.shell.sidebar-collapsed .nav-item {
  justify-content: center;
  padding: 7px 0;
  gap: 0;
  font-size: 0;
  margin: 1px 4px;
}
.shell.sidebar-collapsed .nav-item.active::before { display: none; }
.shell.sidebar-collapsed .sidebar-toggle-btn { justify-content: center; padding: 7px 0; margin-bottom: 4px; width: 100%; }
.shell.sidebar-collapsed .sidebar-chevron { transform: rotate(180deg); }
.shell.sidebar-collapsed .user-chip { justify-content: center; padding: 6px 0; }
.shell.sidebar-collapsed .nav-bottom { display: flex; flex-direction: column; align-items: center; }

/* User block */
.user-chip {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  padding: var(--sp-3) var(--sp-5);
  font-size: var(--fs-body-sm);
}
.user-avatar {
  width: 28px; height: 28px;
  border-radius: 50%;
  background: var(--bg-elev);
  border: 1px solid var(--hair-strong);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-mono);
  font-size: var(--fs-mono);
  font-weight: 600;
  color: var(--text-2);
  flex-shrink: 0;
}
.user-info { line-height: 1.3; min-width: 0; }
.user-info .nm { font-weight: 500; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; font-size: var(--fs-body-sm); }
.user-info .em { font-size: var(--fs-tiny); color: var(--text-4); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; letter-spacing: var(--ls-wide); }
.signout-link { color: var(--text-4); font-size: var(--fs-tiny); margin-left: auto; }
.signout-link:hover { color: var(--text-2); }

/* ───── Content / Shell layout ───── */
.content {
  padding: var(--sp-8) var(--sp-10) 60px;
  max-width: var(--content-max);
}
.content-wide { max-width: 1280px; }

/* Page header (legacy — kept for compatibility) */
.page-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--sp-6);
  margin-bottom: var(--sp-8);
  padding-bottom: var(--sp-5);
  border-bottom: 1px solid var(--hair);
}
.page-title {
  font-family: var(--font-display);
  font-size: var(--fs-display-lg);
  font-weight: 500;
  letter-spacing: var(--ls-display);
  color: var(--text);
  line-height: var(--lh-tight);
}
.page-sub { font-size: var(--fs-body-sm); color: var(--text-3); margin-top: var(--sp-1); }

/* ─── Section labels (legacy lbl class) ─── */
.lbl {
  font-family: var(--font-mono);
  font-size: var(--fs-tiny);
  letter-spacing: var(--ls-widest);
  color: var(--text-4);
  text-transform: uppercase;
  font-weight: 500;
}

/* ───── Section labels ───── */
.lbl {
  font-size: 9px;
  letter-spacing: 1.8px;
  color: var(--text-4);
  text-transform: uppercase;
  font-weight: 500;
}

/* ───── Cards / lists ───── */
.card {
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
}

/* ───── Dashboard ───── */
.dash-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
  margin-bottom: 28px;
}
.stat-card {
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
  padding: 18px 20px;
}
.stat-card .stat-num {
  font-size: 30px;
  font-weight: 600;
  letter-spacing: -0.8px;
  line-height: 1;
  margin: 8px 0 4px;
}
.stat-card .stat-delta { font-size: 11px; color: var(--text-3); }
.section-h {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin: 32px 0 14px;
}
.section-h h2 { font: var(--type-card); }
.section-h a { font-size: 11px; color: var(--text-3); }
.section-h a:hover { color: var(--text); }

.list { display: flex; flex-direction: column; }
.list-row {
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 18px;
  align-items: center;
  padding: 14px 18px;
  border-top: 1px solid var(--hairline);
  transition: background 0.1s;
}
.list-row:first-child { border-top: none; }
.list-row:hover { background: var(--bg-2); }
.list-row .pri { font-size: var(--fs-body-sm); font-weight: 500; }
.list-row .sec { font-size: 11px; color: var(--text-3); margin-top: 2px; }
.list-row .time { font-size: 11px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.list-row .arrow { color: var(--text-4); font-size: 14px; }

.badge {
  display: inline-block;
  padding: 2px 8px;
  border-radius: 10px;
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.3px;
}
.badge.live { background: var(--text); color: var(--bg); }
.badge.upcoming { background: var(--bg-3); color: var(--text-2); border: 1px solid var(--hairline-strong); }
.badge.done { background: transparent; color: var(--text-3); border: 1px solid var(--hairline-strong); }

/* ───── Candidate page ───── */
.cand-header {
  display: flex;
  gap: 18px;
  align-items: center;
  margin-bottom: 28px;
}
.cand-avatar {
  width: 56px; height: 56px;
  border-radius: 50%;
  background: var(--bg-3);
  display: flex; align-items: center; justify-content: center;
  font-size: 16px; font-weight: 500;
}
.cand-name { font-size: 22px; font-weight: 600; letter-spacing: -0.4px; }
.cand-sub { font-size: var(--fs-caption); color: var(--text-3); margin-top: 4px; }
.cand-sub b { color: var(--text); font-weight: 500; }

/* Career chart */
.chart-wrap {
  padding: 22px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
  margin: 14px 0 28px;
}
.chart-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 18px;
}
.chart-grid {
  position: relative;
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  height: 360px;
}
.stage-col {
  position: relative;
  padding-top: 8px;
  text-align: center;
}
.stage-col.target {
  background: linear-gradient(180deg, rgba(250,250,250,0.08), rgba(250,250,250,0.02) 80%);
  border-left: 0.5px dashed var(--hairline-strong);
  border-right: 0.5px dashed var(--hairline-strong);
}
.stage-col.target .stage-label {
  font-weight: 700;
}
.stage-col:not(.target) { border-left: 0.5px solid var(--surface-3); }
.stage-col:first-child { border-left: none; }
.stage-col .stage-label {
  font-size: 9px;
  letter-spacing: 1.8px;
  text-transform: uppercase;
  color: var(--text-4);
}
.stage-col.target .stage-label { color: var(--text); }
.stage-col .stage-range {
  font-size: 9px;
  color: var(--text-5);
  margin-top: 3px;
}
.stage-col.target .stage-range { color: var(--text-3); }

.dots-layer { position: absolute; inset: 40px 0 36px; }
.dot {
  position: absolute;
  transform: translate(-50%, -50%);
  cursor: pointer;
  transition: transform 0.18s;
}
.dot:hover { transform: translate(-50%, -50%) scale(1.15); }
.dot.highlight svg circle:first-child { stroke: var(--text); stroke-width: 2; }
/* Old multi-line label — kept for back-compat, but we now prefer .dot-pill */
.dot-label {
  position: absolute;
  left: 50%;
  top: 100%;
  transform: translateX(-50%);
  font-size: 9px;
  color: var(--text-3);
  margin-top: 4px;
  white-space: nowrap;
  text-align: center;
}
.dot-label .rel { display: block; color: var(--text-5); }

/* New cleaner label — single short pill below each dot */
.dot-pill {
  position: absolute;
  left: 50%;
  top: 100%;
  transform: translateX(-50%);
  margin-top: 10px;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.3px;
  color: var(--text-2);
  padding: 4px 10px;
  background: var(--bg);
  border: 1px solid var(--hairline);
  border-radius: 11px;
  white-space: nowrap;
  pointer-events: none;
  line-height: 1.1;
}
.dot-pill.current {
  color: var(--bg);
  background: var(--text);
  border-color: var(--text);
  font-weight: 600;
}
.dot:hover .dot-pill {
  color: var(--text);
  border-color: var(--hairline-strong);
}
.target-mark {
  position: absolute;
  bottom: 6px;
  left: 50%;
  transform: translateX(-50%);
  font-size: 10px;
  letter-spacing: 1.8px;
  font-weight: 600;
  color: var(--text);
  background: var(--bg-2);
  padding: 3px 10px;
  border: 1px solid var(--hairline-strong);
  border-radius: 11px;
  white-space: nowrap;
}

/* Trajectory line connecting dots in time order */
.dots-line {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  z-index: 0;
}
.dot { z-index: 1; }

/* Year rail — small year labels on the left edge of the chart, aligned
   to the same top% as each dot. */
.year-rail {
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 38px;
  pointer-events: none;
  z-index: 2;
}
.year-tick {
  position: absolute;
  left: 0;
  transform: translateY(-50%);
  font-family: 'IBM Plex Mono', monospace;
  font-size: 9px;
  color: var(--text-4);
  letter-spacing: 0.4px;
  padding: 0 4px;
  background: var(--bg-2);
  border-radius: 3px;
}

/* Role list */
.roles { margin-bottom: 32px; }
.role {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 16px 8px;
  border-top: 1px solid var(--hairline);
  cursor: pointer;
  border-radius: 4px;
  margin: 0 -8px;
  transition: background 0.12s;
}
.role:hover { background: var(--bg-2); }
.role.highlight { background: var(--bg-3); }
.role:last-child { border-bottom: 1px solid var(--hairline); }
.role.faded .role-title { color: var(--text-3); }
.role-title { font-size: 14px; font-weight: 500; }
.role-meta { font-size: 11px; color: var(--text-3); margin-top: 4px; }
.chips { display: flex; gap: 8px; flex-shrink: 0; }
.chip {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.3px;
  padding: 4px 10px;
  border-radius: 11px;
}
.chip.bright { background: var(--text); color: var(--bg); }
.chip.mute { background: var(--bg-3); color: var(--text-3); font-weight: 500; }
.chip.outline { background: transparent; border: 0.5px solid var(--hairline-strong); color: var(--text-3); font-weight: 500; }

/* Pattern read */
.pattern-read {
  display: grid;
  grid-template-columns: 160px 1fr;
  gap: 28px;
  padding: 24px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
}
.pattern-num { font-size: 44px; font-weight: 600; letter-spacing: -1.2px; line-height: 1; }
.pattern-num-sub { font-size: 11px; color: var(--text-4); margin-top: 8px; }
.pattern-read h3 { font-size: 14px; font-weight: 500; margin-bottom: 10px; }
.pattern-read p { font-size: var(--fs-caption); color: var(--text-3); margin-bottom: 6px; line-height: 1.55; }
.pattern-read .ask { color: var(--text); font-weight: 500; margin-top: 14px; }

/* ───── Career Trajectory Visualization (candidate.html) ───── */
#cand-trajectory-host {
  width: 100%;
  min-height: 440px;
  margin-top: 4px;
}
/* No chart mounted -> no reserved height. Without this, candidates with no
   work history showed a 440px dead zone above the empty-state text. */
#cand-trajectory-host:empty { min-height: 0; margin: 0; }
#cand-trajectory-empty {
  padding: 32px 16px;
  color: rgba(255,255,255,0.35);
  text-align: center;
  font-size: var(--fs-body-sm);
}

/* ───── Deep LinkedIn analysis (Claude narrative) ───── */
.deep-analysis-section { margin-bottom: 28px; }
.deep-cta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 22px 24px;
  background: var(--bg-2);
  border: 1px dashed var(--hairline-strong);
  border-radius: 6px;
}
.deep-cta-text { font-size: var(--fs-caption); color: var(--text-3); line-height: 1.55; max-width: 540px; }
.deep-empty {
  padding: 18px 22px;
  font-size: var(--fs-caption);
  color: var(--text-4);
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
}
.deep-loading {
  padding: 22px 24px;
  font-size: var(--fs-body-sm);
  color: var(--text-2);
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
  display: flex;
  align-items: center;
  gap: 10px;
}
.loading-dots { display: inline-flex; gap: 4px; }
.loading-dots span {
  width: 4px; height: 4px; border-radius: 50%;
  background: var(--text-3);
  animation: loadingPulse 1.2s infinite;
}
.loading-dots span:nth-child(2) { animation-delay: 0.2s; }
.loading-dots span:nth-child(3) { animation-delay: 0.4s; }
@keyframes loadingPulse {
  0%, 80%, 100% { opacity: 0.2; }
  40% { opacity: 1; }
}

.deep-analysis {
  padding: 24px 28px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
}
.pattern-read-prose {
  padding: 24px 28px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
}
.pattern-read-prose p {
  font-size: var(--fs-body-sm);
  line-height: 1.65;
  color: var(--text-2);
  margin: 0 0 14px;
}
.pattern-read-prose p:last-child { margin-bottom: 0; }
.deep-top {
  display: grid;
  grid-template-columns: 140px 1fr;
  gap: 28px;
  padding-bottom: 22px;
  margin-bottom: 22px;
  border-bottom: 1px solid var(--hairline);
}
.deep-score-num {
  font-size: var(--fs-display-2xl);
  font-weight: 600;
  letter-spacing: -1.6px;
  line-height: 1;
  color: var(--text);
}
.deep-score-lbl {
  font-size: 10px;
  color: var(--text-4);
  letter-spacing: 1.4px;
  text-transform: uppercase;
  margin-top: 10px;
}
.deep-meta-row {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-bottom: 14px;
  flex-wrap: wrap;
}
.deep-tag {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  padding: 4px 11px;
  border-radius: 11px;
  background: var(--text);
  color: var(--bg);
}
.deep-tag.deep-traj-plateaued,
.deep-tag.deep-traj-lateral,
.deep-tag.deep-traj-mixed {
  background: var(--bg-3);
  color: var(--text);
  border: 1px solid var(--hairline-strong);
}
.deep-tag.deep-traj-declining {
  background: transparent;
  color: var(--text-2);
  border: 1px solid var(--hairline-strong);
}
.deep-conf {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 10px;
  letter-spacing: 1.2px;
  color: var(--text-4);
}
.deep-summary {
  font-size: 14px;
  color: var(--text);
  line-height: 1.55;
}
.deep-block { margin-bottom: 22px; }
.deep-block:last-of-type { margin-bottom: 0; }
.deep-block-lbl {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  color: var(--text-3);
  margin-bottom: 12px;
}
.deep-item {
  display: flex;
  gap: 12px;
  padding: 10px 0;
  border-bottom: 1px solid var(--hairline);
  align-items: flex-start;
}
.deep-item:last-child { border-bottom: none; }
.deep-mark {
  flex-shrink: 0;
  width: 18px;
  text-align: center;
  font-size: var(--fs-body-sm);
  color: var(--text);
  line-height: 1.55;
}
.deep-item-warn .deep-mark { color: var(--text-2); }
.deep-point {
  font-size: var(--fs-body-sm);
  color: var(--text);
  line-height: 1.55;
  margin-bottom: 3px;
}
.deep-ev {
  font-size: 11px;
  color: var(--text-3);
  font-family: 'IBM Plex Mono', monospace;
  letter-spacing: 0.2px;
}
.deep-probes {
  list-style: decimal;
  padding-left: 22px;
  margin: 0;
}
.deep-probes li {
  font-size: var(--fs-body-sm);
  color: var(--text);
  line-height: 1.55;
  padding: 6px 0;
}
.deep-foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px solid var(--hairline);
  font-size: 10px;
  color: var(--text-4);
  letter-spacing: 0.6px;
}
.ai-conf {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.08em;
  color: rgba(212,168,100,0.70);
}
.deep-regen {
  background: transparent;
  border: 1px solid var(--hairline-strong);
  color: var(--text-3);
  font-size: 10px;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  padding: 5px 11px;
  border-radius: 11px;
  cursor: pointer;
  font-family: inherit;
}
.deep-regen:hover { color: var(--text); border-color: var(--text-3); }
@media (max-width: 720px) {
  .deep-top { grid-template-columns: 1fr; gap: 16px; }
}

/* ───── Enrichment (public-source research) ───── */
.enrichment-section { margin-bottom: 28px; }
.enrich-cta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 22px 24px;
  background: var(--bg-2);
  border: 1px dashed var(--hairline-strong);
  border-radius: 6px;
}
.enrich-cta-text { font-size: var(--fs-caption); color: var(--text-3); line-height: 1.55; max-width: 540px; }
.enrich-loading {
  padding: 22px 24px;
  font-size: var(--fs-body-sm);
  color: var(--text-2);
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
  display: flex;
  align-items: center;
  gap: 10px;
}
.enrich-error {
  padding: 18px 22px;
  font-size: var(--fs-caption);
  color: var(--text-2);
  background: var(--bg-2);
  border: 1px solid var(--hairline-strong);
  border-radius: 6px;
}
.enrich-panel {
  padding: 24px 28px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
}
.enrich-signals {
  padding: 16px 20px;
  background: var(--bg);
  border: 1px solid var(--hairline-strong);
  border-radius: 6px;
  margin-bottom: 22px;
}
.enrich-signals-lbl {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  color: var(--text-3);
  margin-bottom: 10px;
}
.enrich-signals ul {
  margin: 0;
  padding-left: 18px;
  list-style: square;
}
.enrich-signals li {
  font-size: var(--fs-body-sm);
  color: var(--text);
  line-height: 1.55;
  padding: 3px 0;
}
.enrich-summary {
  font-size: 14px;
  color: var(--text);
  line-height: 1.55;
  margin-bottom: 22px;
  padding-bottom: 22px;
  border-bottom: 1px solid var(--hairline);
}
.enrich-block { margin-bottom: 22px; }
.enrich-block:last-of-type { margin-bottom: 0; }
.enrich-block-lbl {
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  color: var(--text-3);
  margin-bottom: 10px;
}
.enrich-block p { font-size: var(--fs-body-sm); color: var(--text); line-height: 1.55; margin: 0; }
.enrich-list {
  list-style: none;
  margin: 0;
  padding: 0;
}
.enrich-list li {
  padding: 10px 0;
  border-bottom: 1px solid var(--hairline);
  display: flex;
  align-items: flex-start;
  gap: 12px;
}
.enrich-list li:last-child { border-bottom: none; }
.enrich-list .enrich-title {
  font-size: var(--fs-body-sm);
  color: var(--text);
  line-height: 1.45;
  margin-bottom: 3px;
}
.enrich-list .enrich-title a { color: var(--text); text-decoration: none; border-bottom: 1px solid var(--hairline-strong); }
.enrich-list .enrich-title a:hover { border-bottom-color: var(--text); }
.enrich-list .enrich-sub {
  font-size: 11px;
  color: var(--text-3);
  font-family: 'IBM Plex Mono', monospace;
  letter-spacing: 0.2px;
}
.enrich-gh {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
}
.enrich-gh-head {
  font-size: var(--fs-caption);
  color: var(--text-2);
  font-family: 'IBM Plex Mono', monospace;
}
.enrich-gh-head a { color: var(--text); text-decoration: none; border-bottom: 1px solid var(--hairline-strong); }
.enrich-gh-repo {
  padding: 10px 0;
  border-top: 1px solid var(--hairline);
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 10px;
  align-items: baseline;
}
.enrich-gh-repo:last-child { padding-bottom: 0; }
.enrich-gh-repo .nm { font-size: var(--fs-body-sm); color: var(--text); }
.enrich-gh-repo .lang {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 10px;
  letter-spacing: 1.2px;
  color: var(--text-3);
  text-transform: uppercase;
}
.enrich-gh-repo .stars {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 11px;
  color: var(--text-2);
}
.enrich-gh-repo .desc {
  grid-column: 1 / -1;
  font-size: var(--fs-caption);
  color: var(--text-3);
  line-height: 1.5;
  margin-top: 2px;
}
.enrich-foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px solid var(--hairline);
  font-size: 10px;
  color: var(--text-4);
  letter-spacing: 0.6px;
  gap: 12px;
  flex-wrap: wrap;
}
.enrich-regen {
  background: transparent;
  border: 1px solid var(--hairline-strong);
  color: var(--text-3);
  font-size: 10px;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  padding: 5px 11px;
  border-radius: 11px;
  cursor: pointer;
  font-family: inherit;
}
.enrich-regen:hover { color: var(--text); border-color: var(--text-3); }
.enrich-sources {
  margin-top: 18px;
  font-size: 11px;
}
.enrich-sources summary {
  cursor: pointer;
  color: var(--text-3);
  letter-spacing: 1.2px;
  text-transform: uppercase;
  font-size: 10px;
  padding: 6px 0;
}
.enrich-sources summary:hover { color: var(--text); }
.enrich-sources ul {
  list-style: none;
  margin: 8px 0 0;
  padding: 0;
}
.enrich-sources li {
  padding: 4px 0;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 11px;
  word-break: break-all;
}
.enrich-sources a { color: var(--text-2); text-decoration: none; }
.enrich-sources a:hover { color: var(--text); }
.enrich-tier-lock {
  padding: 22px 24px;
  background: var(--bg-2);
  border: 1px solid var(--hairline-strong);
  border-radius: 6px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
}
.enrich-tier-lock-text { font-size: var(--fs-caption); color: var(--text-3); line-height: 1.55; max-width: 540px; }
.enrich-tier-lock-text b { color: var(--text); }

/* ───── Interview live panel ───── */
.live-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 11px;
  color: var(--text-3);
}
.live-dot {
  width: 6px; height: 6px;
  background: var(--c-danger);
  border-radius: 50%;
  animation: live-pulse 1.4s infinite;
}
@keyframes live-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }

.tabs {
  display: flex;
  gap: 4px;
  margin-bottom: 28px;
  border-bottom: 1px solid var(--hairline);
}
.tab {
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  padding: 10px 16px 14px;
  color: var(--text-4);
  background: transparent;
  border: none;
  border-bottom: 1.5px solid transparent;
  transition: color 0.12s, border-color 0.12s;
}
.tab:hover { color: var(--text-2); }
.tab.active { color: var(--text); border-bottom-color: var(--text); }
/* Tab panels — visible by default, hidden when the page JS sets the
   native `hidden` attribute. Was originally `.tab-panel { display:none; }`
   + `.tab-panel.active { display:block; }` but the JS in job-descriptions.html
   toggles `p.hidden = X` (sets the HTML `hidden` attribute), NOT a class.
   That mismatch made the JD library panel collapse to 0 height forever
   even though its children rendered — the 18 JDs were invisible because
   their parent was `display:none`. Switching to the [hidden] attribute
   selector aligns CSS with what the JS is actually doing. */
.tab-panel { display: block; }
.tab-panel[hidden] { display: none !important; }
.tab-panel.active { display: block; }   /* kept for any callers that still use the class */

/* Rubric */
.rubric { display: flex; flex-direction: column; }
.rubric-row {
  display: grid;
  grid-template-columns: 220px 1fr 70px;
  gap: 18px;
  align-items: center;
  padding: 12px 0;
  border-bottom: 1px solid var(--hairline);
}
.rubric-row:last-child { border-bottom: none; }
.rubric-name { font-size: var(--fs-body-sm); font-weight: 500; }
.rubric-name small { display: block; font-size: 10px; color: var(--text-4); margin-top: 2px; font-weight: 400; }
.rubric-bar {
  height: 4px;
  background: var(--bg-3);
  border-radius: 2px;
  overflow: hidden;
}
.rubric-fill { height: 100%; background: var(--text); transition: width 0.4s; }
.rubric-fill.weak { background: var(--text-3); }
.rubric-fill.tbd { background: repeating-linear-gradient(90deg, var(--hairline-strong) 0 6px, transparent 6px 12px); }
.rubric-score { font-size: 14px; font-weight: 600; text-align: right; font-variant-numeric: tabular-nums; }
.rubric-score.weak { color: var(--text-3); }
.rubric-score.tbd { color: var(--text-5); }

.suggested {
  margin-top: 28px;
  padding: 20px;
  background: var(--bg-2);
  border-left: 2px solid var(--text);
  border-radius: 6px;
}
.suggested-lbl {
  font-size: 9px;
  letter-spacing: 1.8px;
  text-transform: uppercase;
  color: var(--text);
  margin-bottom: 10px;
}
.suggested-q { font-size: 14px; line-height: 1.5; }
.suggested-why { font-size: 11px; color: var(--text-4); margin-top: 10px; font-style: italic; }

/* Transcript */
.transcript { display: flex; flex-direction: column; }
.utt {
  display: grid;
  grid-template-columns: 56px 96px 1fr;
  gap: 14px;
  padding: 12px 0;
  align-items: start;
  border-bottom: 1px solid var(--hairline);
}
.utt-time { font-family: 'IBM Plex Mono', monospace; font-size: 10px; color: var(--text-4); padding-top: 2px; }
.utt-spk { font-size: 10px; font-weight: 600; letter-spacing: 1px; text-transform: uppercase; padding-top: 2px; }
.utt-spk.intvw { color: var(--text-3); }
.utt-spk.cand { color: var(--text); }
.utt-text { font-size: var(--fs-body-sm); line-height: 1.55; color: var(--text-2); }
.utt.flag { background: var(--bg-2); margin: 0 -20px; padding: 12px 20px; }
.utt-evidence {
  font-size: 11px;
  color: var(--text);
  margin-top: 8px;
  padding-left: 10px;
  border-left: 2px solid var(--text);
}

/* Settings */
.setup-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
  margin-bottom: 28px;
}
.setup-card {
  padding: 18px;
  border: 1px solid var(--hairline);
  border-radius: 6px;
}
.setup-card .lbl { display: block; margin-bottom: 8px; }
.setup-card-val { font-size: 14px; font-weight: 500; }
.setup-card-sub { font-size: 11px; color: var(--text-3); margin-top: 4px; }
.setup-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 14px 0;
  border-top: 1px solid var(--hairline);
  font-size: var(--fs-body-sm);
}
.setup-row span:first-child { color: var(--text-3); }
.toggle {
  display: inline-block;
  width: 32px; height: 16px;
  background: var(--bg-3);
  border-radius: 8px;
  position: relative;
  cursor: pointer;
  transition: background 0.15s;
}
.toggle.on { background: var(--text); }
.toggle::after {
  content: '';
  position: absolute;
  top: 2px; left: 2px;
  width: 12px; height: 12px;
  background: var(--text-4);
  border-radius: 50%;
  transition: left 0.18s, background 0.18s;
}
.toggle.on::after { left: 18px; background: var(--bg); }

/* Integration rows — non-clickable status, never a lying toggle */
.integration-row { align-items: flex-start; }
.integration-row > span:first-child {
  display: flex; flex-direction: column; gap: 3px;
  color: var(--text-3);
}
.integration-name { font-size: var(--fs-body-sm); color: var(--text-2, var(--text-3)); font-weight: 500; }
.integration-sub { font-size: 11px; color: var(--text-4); }
.integration-badge {
  display: inline-block;
  font-size: 10px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  padding: 4px 8px;
  border-radius: 4px;
  white-space: nowrap;
  cursor: default;
  user-select: none;
  font-weight: 500;
  align-self: center;
}
.integration-badge-private {
  border: 1px solid var(--hairline-strong);
  color: var(--text-3);
  background: transparent;
}
.integration-badge-soon {
  border: 1px dashed var(--hairline-strong);
  color: var(--text-5);
  background: transparent;
  opacity: 0.75;
}

/* Inline "How do I connect this?" expandable help under each integration row */
.integration-help {
  font-size: 11px;
  color: var(--text-3);
  border-top: 1px solid var(--hairline);
  padding: 6px 0 10px;
}
.integration-help > summary {
  list-style: none;
  cursor: pointer;
  color: var(--text-3);
  font-size: 11px;
  padding: 2px 0;
  display: inline-block;
  text-decoration: underline;
  text-decoration-style: dotted;
  text-underline-offset: 3px;
  user-select: none;
}
.integration-help > summary::-webkit-details-marker { display: none; }
.integration-help > summary::marker { content: ""; }
.integration-help .ih-close { display: none; }
.integration-help[open] > summary .ih-open { display: none; }
.integration-help[open] > summary .ih-close { display: inline; }
.integration-help ol {
  margin: 8px 0 0;
  padding: 8px 12px 8px 28px;
  border: 1px solid var(--hairline);
  border-radius: 4px;
  background: transparent;
  line-height: 1.6;
}
.integration-help ol li { margin: 2px 0; }
.integration-help a { color: var(--text-2, var(--text-3)); text-decoration: underline; }
.integration-help .ih-link { margin: 6px 0 0; padding: 0 4px; font-size: 11px; color: var(--text-4); }

/* Greenhouse note-author config row (only visible when GH is connected) */
.gh-author-row {
  padding: 10px 0 14px;
  border-top: 1px solid var(--hairline);
  display: flex; flex-direction: column; gap: 6px;
}
.gh-author-row .gh-author-lbl { font-size: 11px; color: var(--text-3); letter-spacing: 0.08em; text-transform: uppercase; }
.gh-author-row .gh-author-sub { font-size: 11px; color: var(--text-4); line-height: 1.5; }
.gh-author-row .gh-author-form { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.gh-author-row .gh-author-form input {
  padding: 6px 10px; background: var(--bg); border: 1px solid var(--hairline-strong);
  color: var(--text); font-family: inherit; font-size: var(--fs-body-sm); border-radius: 4px; width: 160px;
}
.gh-author-row .gh-author-status { font-size: var(--fs-caption); color: var(--text-3); }
.gh-author-row .gh-author-warn { font-size: var(--fs-caption); color: var(--c-danger-text); }

/* Empty states / hints */
.hint { font-size: 11px; color: var(--text-5); text-align: center; padding-top: 24px; }

/* ── "What is this?" tooltip ────────────────────────────────────────── */
.jedah-tip { position: relative; display: inline-flex; align-items: center; }
.jedah-tip-btn {
  width: 16px; height: 16px; border-radius: 50%;
  border: 1px solid var(--hairline-strong); background: transparent;
  color: var(--text-4); font-size: 10px; font-family: 'IBM Plex Mono', monospace;
  cursor: pointer; display: inline-flex; align-items: center; justify-content: center;
  line-height: 1; padding: 0; margin-left: 6px; flex-shrink: 0;
  transition: border-color .15s, color .15s;
}
.jedah-tip-btn:hover { border-color: var(--text-3); color: var(--text-2); }
.jedah-tip-popup {
  display: none; position: absolute; bottom: calc(100% + 8px); left: 0;
  min-width: 240px; max-width: 280px; z-index: 200;
  /* TODO: #1a1a1c has no exact token — sits between surface-2 and surface-3;
     deliberately a step lighter than the page to visually lift the popup. */
  background: #1a1a1c; border: 1px solid var(--hairline-strong);
  border-radius: var(--radius-sm); padding: 14px 16px; font-size: var(--fs-body-sm);
  color: var(--text-2); line-height: 1.5; box-shadow: 0 8px 24px rgba(0,0,0,.4);
  font-family: 'IBM Plex Sans', sans-serif; font-weight: 400;
  letter-spacing: 0; text-transform: none;
}
.jedah-tip-popup strong { color: var(--text); font-weight: 600; }
.jedah-tip.open .jedah-tip-popup { display: block; }

/* ===== People dashboard ===== */
.content-wide { max-width: 1200px; }

/* Stats row */
.stats-row {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 14px;
  margin-bottom: 36px;
}
.stats-row .stat-card { padding: 16px 18px; }
.stat-card .stat-num { display: flex; align-items: baseline; gap: 10px; }
.stat-trend { font-size: 11px; font-weight: 500; letter-spacing: 0.5px; color: var(--text-3); }
.stat-trend.up { color: var(--text); }
.stat-trend.down { color: var(--text-3); }
.stat-card.stat-warn { border-color: var(--text); }
.stat-card.stat-warn .stat-num { color: var(--text); }

/* People grid */
.people-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  margin-bottom: 12px;
}
@media (max-width: 1080px) { .people-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 720px)  { .people-grid { grid-template-columns: 1fr; } }

.person-card {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 18px 20px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
  color: var(--text);
  transition: border-color 0.15s, transform 0.15s, background 0.15s;
}
.person-card:hover {
  border-color: var(--hairline-strong);
  background: var(--bg-3);
  transform: translateY(-1px);
}
.person-card-warn {
  border-color: var(--text);
}
.person-card-warn:hover { background: var(--surface-3); }

.person-head { display: flex; align-items: center; gap: 12px; }
.person-avatar {
  width: 36px; height: 36px;
  border-radius: 50%;
  background: var(--bg-3);
  display: flex; align-items: center; justify-content: center;
  font-size: var(--fs-caption); font-weight: 500;
  flex-shrink: 0;
}
.person-meta { min-width: 0; }
.person-name { font-size: 14px; font-weight: 600; letter-spacing: -0.2px; display: flex; align-items: center; gap: 6px; }
.person-role { font-size: 11px; color: var(--text-3); margin-top: 2px; }
.warn-dot {
  display: inline-block;
  width: 6px; height: 6px;
  background: var(--text);
  border-radius: 50%;
}

.person-foot {
  display: grid;
  grid-template-columns: 1fr auto auto;
  gap: 10px;
  align-items: center;
  padding-top: 14px;
  border-top: 1px solid var(--hairline);
}
.align-block { display: flex; flex-direction: column; }
.align-num { font-size: 22px; font-weight: 600; letter-spacing: -0.4px; line-height: 1; }
.align-lbl { font-size: 9px; letter-spacing: 1.4px; color: var(--text-4); text-transform: uppercase; margin-top: 6px; }
.sparkline { width: 80px; height: 28px; display: block; }
.trend {
  font-size: 16px;
  font-weight: 500;
  line-height: 1;
  width: 24px; height: 24px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 50%;
}
.trend.up { background: var(--text); color: var(--bg); }
.trend.down { background: transparent; color: var(--text); border: 1px solid var(--text); }
.trend.flat { background: var(--bg-3); color: var(--text-3); }

.person-tail {
  font-size: 11px;
  color: var(--text-3);
  letter-spacing: 0.1px;
}
.person-tail b { color: var(--text); font-weight: 500; }

/* ===== Employee detail page ===== */
.emp-hero {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 22px;
  align-items: center;
  padding: 22px 24px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
  margin-bottom: 18px;
}
.emp-avatar { width: 56px; height: 56px; border-radius: 50%; background: var(--bg-3); display: flex; align-items: center; justify-content: center; font-size: 16px; font-weight: 500; }
.emp-avatar-large { width: 64px; height: 64px; font-size: 18px; }
.emp-name { font-size: 22px; font-weight: 600; letter-spacing: -0.4px; }
.emp-role { font-size: var(--fs-body-sm); color: var(--text-2); margin-top: 4px; }
.emp-meta { font-size: 11px; color: var(--text-3); margin-top: 8px; }
.emp-hero-stats { text-align: right; }
.emp-stat-num { font-size: 36px; font-weight: 600; letter-spacing: -1px; line-height: 1; }
.emp-stat-num.warn { color: var(--text); }
.emp-stat-lbl { font-size: 11px; color: var(--text-3); margin-top: 6px; }

.banner-warn {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 14px;
  align-items: center;
  padding: 14px 18px;
  background: var(--bg-2);
  border: 1px solid var(--text);
  border-radius: 6px;
  margin-bottom: 28px;
  font-size: var(--fs-caption);
  line-height: 1.55;
  color: var(--text-2);
}
.banner-warn b { color: var(--text); font-weight: 600; }
.banner-warn-icon {
  font-size: 18px;
  color: var(--text);
  line-height: 1;
  width: 28px; height: 28px;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid var(--text);
  border-radius: 50%;
}

/* Themes grid */
.theme-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
}
@media (max-width: 980px) { .theme-grid { grid-template-columns: 1fr; } }
.theme-card {
  padding: 20px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
  position: relative;
}
.theme-num {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 10px;
  letter-spacing: 2px;
  color: var(--text-4);
  margin-bottom: 10px;
}
.theme-title { font-size: 14px; font-weight: 600; margin-bottom: 10px; line-height: 1.35; }
.theme-body { font-size: var(--fs-caption); color: var(--text-3); line-height: 1.55; margin-bottom: 14px; }
.theme-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.theme-tags span {
  font-size: 10px;
  letter-spacing: 0.3px;
  padding: 3px 8px;
  border: 1px solid var(--hairline-strong);
  border-radius: 10px;
  color: var(--text-3);
}

/* Drift comparison */
.drift-row {
  display: grid;
  grid-template-columns: 1fr 36px 1fr;
  gap: 18px;
  align-items: center;
  padding: 20px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
  margin-top: 12px;
}
.drift-col { padding: 4px 0; }
.drift-when { font-size: 9px; letter-spacing: 1.8px; color: var(--text-4); text-transform: uppercase; margin-bottom: 10px; }
.drift-quote { font-size: 14px; line-height: 1.5; }
.drift-quote b { font-weight: 600; }
.drift-note { font-size: 10px; color: var(--text-5); margin-top: 8px; font-style: italic; }
.drift-arrow { font-size: 22px; color: var(--text-4); text-align: center; }

/* Check-in list */
.checkin-list { display: flex; flex-direction: column; }
.checkin-row {
  display: grid;
  grid-template-columns: 70px 1fr 50px 140px;
  gap: 16px;
  align-items: center;
  padding: 14px 8px;
  border-top: 1px solid var(--hairline);
  font-size: var(--fs-caption);
}
.checkin-row:last-child { border-bottom: 1px solid var(--hairline); }
.checkin-date { font-family: 'IBM Plex Mono', monospace; font-size: 11px; color: var(--text-3); }
.checkin-q { color: var(--text-2); font-style: italic; }
.checkin-score { font-size: 18px; font-weight: 600; text-align: center; font-variant-numeric: tabular-nums; }
.checkin-theme { font-size: 10px; letter-spacing: 0.3px; color: var(--text-3); padding: 4px 8px; background: var(--bg-2); border: 1px solid var(--hairline); border-radius: 10px; text-align: center; }

/* Review packet */
.packet {
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
  padding: 28px 32px;
}
.packet-section { padding: 18px 0; border-bottom: 1px solid var(--hairline); }
.packet-section:first-child { padding-top: 0; }
.packet-section:last-of-type { border-bottom: none; }
.packet-section-lbl {
  font-size: 9px;
  letter-spacing: 1.8px;
  color: var(--text-4);
  text-transform: uppercase;
  margin-bottom: 10px;
  font-weight: 500;
}
.packet-section p {
  font-size: var(--fs-body-sm);
  line-height: 1.6;
  color: var(--text-2);
  max-width: 720px;
}
.packet-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 18px;
  margin-top: 6px;
  border-top: 1px solid var(--hairline-strong);
}

/* Tighter rubric layout when used on employee tabs */
.tabs[data-tabs="emp"] { margin-bottom: 24px; }

/* Mobile tweaks for new pieces */
@media (max-width: 760px) {
  .stats-row { grid-template-columns: 1fr 1fr; }
  .emp-hero { grid-template-columns: 1fr; text-align: center; }
  .emp-hero-stats { text-align: center; }
  .drift-row { grid-template-columns: 1fr; }
  .drift-arrow { transform: rotate(90deg); }
  .checkin-row { grid-template-columns: 60px 1fr 40px; }
  .checkin-row .checkin-theme { display: none; }
}


/* Mobile */
@media (max-width: 760px) {
  .shell { grid-template-columns: 1fr; }
  .sidebar { position: static; height: auto; flex-direction: row; flex-wrap: wrap; padding: 14px 18px; }
  .nav-section-label { display: none; }
  .nav-item { padding: 6px 10px; font-size: var(--fs-caption); }
  .brand { padding: 0 10px 0 0; margin: 0; border: none; border-right: 1px solid var(--hairline); padding-right: 14px; }
  .nav-bottom { display: none; }
  .content { padding: 22px 18px 40px; }
  .dash-grid { grid-template-columns: 1fr; }
  .rubric-row { grid-template-columns: 1fr 1fr 60px; }
  .pattern-read { grid-template-columns: 1fr; gap: 16px; }
  .setup-grid { grid-template-columns: 1fr; }
}

/* ===== Simple people grid (dashboard) ===== */
.people-grid-simple {
  display: grid;
  /* Was 3-col — bumped to 4-col on wide screens so two rows of 4 (8 tiles)
     fit above the fold instead of needing 3 rows. */
  grid-template-columns: repeat(4, 1fr);
  gap: 8px;
  margin-bottom: 0;
}
@media (max-width: 1280px) { .people-grid-simple { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 1080px) { .people-grid-simple { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 720px)  { .people-grid-simple { grid-template-columns: 1fr; } }

.person-tile {
  display: grid;
  grid-template-columns: auto 1fr auto auto;
  gap: 10px;
  align-items: center;
  /* Tighter padding so each tile is shorter — combined with 4-col grid,
     drops the team page from ~10 rows of scrolling to ~3. */
  padding: 10px 12px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 7px;
  color: var(--text);
  transition: background 0.12s, border-color 0.12s, transform 0.12s;
}
.emp-edit-btn {
  background: transparent;
  border: none;
  color: var(--text-4);
  font-size: var(--fs-body-sm);
  cursor: pointer;
  padding: 2px 4px;
  border-radius: 4px;
  line-height: 1;
  opacity: 0;
  transition: opacity 0.12s, color 0.12s;
}
.person-tile:hover .emp-edit-btn { opacity: 1; }
.emp-edit-btn:hover { color: var(--text); }
.person-tile:hover {
  border-color: var(--hairline-strong);
  background: var(--bg-3);
  transform: translateY(-1px);
}
.person-tile-warn { border-color: var(--text); }
.person-tile-warn:hover { background: var(--surface-3); }
.person-tile .person-avatar { width: 28px; height: 28px; border-radius: 50%; background: var(--bg-3); display: flex; align-items: center; justify-content: center; font-size: 10px; font-weight: 500; flex-shrink: 0; }
.person-tile .person-info { min-width: 0; }
.person-tile .person-name { font-size: var(--fs-body-sm); font-weight: 500; line-height: 1.2; }
.person-tile .person-role { font-size: var(--fs-mono); color: var(--text-3); margin-top: 1px; line-height: 1.2; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.person-status { width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0; }
.person-status.status-good { background: var(--text); }
.person-status.status-flat { background: var(--text-4); }
.person-status.status-warn {
  background: var(--text);
  box-shadow: 0 0 0 2px rgba(250,250,250,0.2);
  animation: tile-pulse 1.6s infinite;
}
@keyframes tile-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.5; } }

/* ===== Check-in compose ===== */
.checkin-compose {
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 10px;
  overflow: hidden;
  margin-bottom: 24px;
}
.compose-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: 22px 26px 20px;
  border-bottom: 1px solid var(--hairline);
  gap: 18px;
}
.compose-title { font-size: var(--fs-h3); font-weight: 600; letter-spacing: -0.2px; }
.compose-sub { font-size: 11px; color: var(--text-3); margin-top: 6px; max-width: 580px; line-height: 1.55; }
.compose-list { display: flex; flex-direction: column; }
.compose-row {
  display: grid;
  grid-template-columns: 220px 1fr auto;
  gap: 18px;
  align-items: center;
  padding: 14px 26px;
  border-top: 1px solid var(--hairline);
}
.compose-row-warn { background: rgba(250,250,250,0.025); }
.compose-person { display: flex; gap: 10px; align-items: center; min-width: 0; }
.person-avatar.small { width: 28px; height: 28px; font-size: 10px; }
.compose-name { font-size: var(--fs-body-sm); font-weight: 600; }
.compose-context { font-size: 10px; color: var(--text-3); margin-top: 3px; line-height: 1.4; }
.compose-context.warn { color: var(--text); font-weight: 500; }
.compose-question { font-size: var(--fs-caption); line-height: 1.55; color: var(--text-2); font-style: italic; padding: 0 6px; }
@media (max-width: 880px) {
  .compose-row { grid-template-columns: 1fr; gap: 10px; }
  .compose-row button { align-self: flex-start; }
  .compose-head { flex-direction: column; }
}
.auto-cadence { color: var(--text-3); }
.auto-cadence b { color: var(--text); font-weight: 500; }

/* ===== This week's responses (manager view) ===== */
.checkin-responses {
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 10px;
  overflow: hidden;
  margin-bottom: 24px;
}
.responses-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  padding: 22px 26px 20px;
  border-bottom: 1px solid var(--hairline);
  gap: 18px;
}
.responses-title { font-size: var(--fs-h3); font-weight: 600; letter-spacing: -0.2px; }
.responses-sub   { font-size: 11px; color: var(--text-3); margin-top: 6px; }
.responses-meta  { font-size: 11px; color: var(--text-3); font-family: 'IBM Plex Mono', monospace; letter-spacing: 0.04em; padding-top: 4px; }
.responses-list  { display: flex; flex-direction: column; }
.resp-row {
  display: block;
  text-decoration: none;
  color: inherit;
  padding: 14px 26px 16px;
  border-top: 1px solid var(--hairline);
  transition: background 0.1s;
}
.resp-row:hover { background: rgba(250,250,250,0.025); }
.resp-row-head { display: flex; justify-content: space-between; align-items: center; gap: 14px; }
.resp-name     { font-size: var(--fs-body-sm); font-weight: 600; }
.resp-role     { color: var(--text-3); font-weight: 400; }
.resp-meta     { display: flex; gap: 12px; align-items: center; flex-shrink: 0; }
.resp-score    { font-family: 'IBM Plex Mono', monospace; font-size: var(--fs-caption); color: var(--text); font-weight: 500; }
.resp-status   { font-family: 'IBM Plex Mono', monospace; font-size: 10px; letter-spacing: 0.06em; text-transform: uppercase; padding: 3px 7px; border-radius: 3px; }
.status-responded { background: rgba(120, 200, 145, 0.12); color: #78c891; }
.status-pending   { background: rgba(200, 200, 200, 0.08); color: var(--text-3); }
.resp-time     { font-family: 'IBM Plex Mono', monospace; font-size: 10px; color: var(--text-4); }
.resp-theme    { font-size: var(--fs-caption); color: var(--text-2); margin-top: 8px; line-height: 1.5; padding-left: 2px; }
.resp-theme-muted { color: var(--text-4); font-style: italic; }
@media (max-width: 880px) {
  .resp-row-head { flex-direction: column; align-items: flex-start; gap: 8px; }
  .resp-meta { flex-wrap: wrap; }
  .responses-head { flex-direction: column; }
}

/* ===== Modals + dropdowns ===== */
.modal-backdrop {
  position: fixed; inset: 0;
  background: rgba(0,0,0,0.65);
  display: none;
  align-items: center;
  justify-content: center;
  z-index: 100;
  padding: 24px;
}
.modal-backdrop.open { display: flex; }
.modal {
  background: var(--bg-2);
  border: 1px solid var(--hairline-strong);
  border-radius: 10px;
  padding: 28px 32px;
  max-width: 520px;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
}
.modal-head { display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 24px; }
.modal-title { font: var(--type-section); letter-spacing: -0.3px; }
.modal-sub { font-size: var(--fs-caption); color: var(--text-3); margin-top: 4px; }
.modal-close {
  background: transparent;
  border: none;
  color: var(--text-3);
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  padding: 4px 8px;
}
.modal-close:hover { color: var(--text); }
.field { display: flex; flex-direction: column; gap: 6px; margin-bottom: 16px; }
.field label { font-size: 11px; letter-spacing: 1.6px; color: var(--text-4); text-transform: uppercase; font-weight: 500; }
.field input, .field select, .field textarea {
  background: var(--bg);
  border: 1px solid var(--hairline-strong);
  color: var(--text);
  font-family: inherit;
  font-size: var(--fs-body-sm);
  padding: 9px 12px;
  border-radius: 6px;
  outline: none;
  transition: border-color 0.12s;
}
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--text); }
.modal-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 18px; }

.dropdown { position: relative; display: inline-block; }
.dropdown-menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  background: var(--bg-2);
  border: 1px solid var(--hairline-strong);
  border-radius: 8px;
  padding: 8px;
  min-width: 220px;
  display: none;
  z-index: 50;
  box-shadow: 0 8px 32px rgba(0,0,0,0.6);
}
.dropdown-menu.open { display: block; }
.dropdown-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 8px 12px;
  border-radius: 4px;
  font-size: var(--fs-caption);
  cursor: pointer;
  color: var(--text-2);
}
.dropdown-item:hover { background: var(--bg-3); color: var(--text); }
.dropdown-item.checked { color: var(--text); }
.dropdown-item.checked::after { content: '✓'; }

/* ===== Candidate page — chart legend / how-to-read ===== */
.how-to-read {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 18px;
  padding: 16px 22px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 8px;
  margin: 0 0 8px;
}
.how-to-read-item { font-size: 11px; color: var(--text-3); line-height: 1.5; }
.how-to-read-item b { color: var(--text); font-weight: 500; display: block; margin-bottom: 4px; font-size: 10px; letter-spacing: 1.4px; text-transform: uppercase; }
@media (max-width: 880px) { .how-to-read { grid-template-columns: repeat(2, 1fr); } }

.chip-legend {
  font-size: 11px;
  color: var(--text-3);
  margin: 8px 0 14px;
  padding: 12px 18px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
  display: flex;
  gap: 22px;
  flex-wrap: wrap;
  line-height: 1.5;
}
.chip-legend b { color: var(--text); font-weight: 500; }
.chip-legend .chip { margin-right: 6px; vertical-align: middle; }

/* ===== Interview stage tracker ===== */
.stage-tracker {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 0;
  padding: 18px 22px 14px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 10px;
  margin-bottom: 10px;
  position: relative;
}
.stage-tracker::before {
  content: '';
  position: absolute;
  left: calc(8.333% + 4px);
  right: calc(8.333% + 4px);
  top: 26px;
  height: 1px;
  background: var(--hairline);
  z-index: 0;
}
.stage-step {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  position: relative;
  z-index: 1;
}
.stage-dot {
  width: 12px;
  height: 12px;
  border-radius: 50%;
  background: var(--bg-3);
  border: 1px solid var(--hairline-strong);
  transition: background 0.2s, border-color 0.2s, transform 0.2s, box-shadow 0.2s;
}
.stage-name {
  font-size: 9px;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  color: var(--text-4);
  font-weight: 500;
  text-align: center;
  white-space: nowrap;
}
.stage-step.done .stage-dot {
  background: var(--text);
  border-color: var(--text);
}
.stage-step.done .stage-name { color: var(--text-3); }
.stage-step.active .stage-dot {
  background: var(--bg);
  border: 2px solid var(--text);
  transform: scale(1.25);
}
.stage-step.active .stage-name {
  color: var(--text);
  font-weight: 600;
}
.stage-step.active.ready-to-advance .stage-dot {
  animation: stage-pulse 1.6s infinite;
}
@keyframes stage-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(250,250,250,0.5); }
  50% { box-shadow: 0 0 0 6px rgba(250,250,250,0); }
}

.stage-hint {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  padding: 12px 18px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-left: 2px solid var(--text-4);
  border-radius: 6px;
  margin-bottom: 28px;
  font-size: var(--fs-caption);
  line-height: 1.55;
  color: var(--text-3);
  transition: border-left-color 0.2s, color 0.2s;
}
.stage-hint.ready-to-advance {
  border-left-color: var(--text);
  color: var(--text-2);
}
.stage-hint-icon {
  font-size: 14px;
  color: var(--text-3);
  line-height: 1.4;
}
.stage-hint.ready-to-advance .stage-hint-icon { color: var(--text); }
.stage-hint-text { flex: 1; }
.stage-hint-text b { color: var(--text); font-weight: 600; }

@media (max-width: 720px) {
  .stage-tracker { grid-template-columns: repeat(3, 1fr); row-gap: 14px; }
  .stage-tracker::before { display: none; }
}

/* ===== Polished employee profile ===== */
.breadcrumb {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 10px;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  color: var(--text-3);
  margin-bottom: 22px;
}
.breadcrumb a { color: var(--text-3); }
.breadcrumb a:hover { color: var(--text); }
.breadcrumb .sep { color: var(--text-5); margin: 0 6px; }

.profile-hero {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 20px;
  align-items: center;
  padding: 22px 26px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 8px;
  margin-bottom: 14px;
}
.profile-hero-info { min-width: 0; }
.profile-hero-meta { font-size: var(--fs-caption); color: var(--text-3); margin-top: 6px; }
.profile-hero-meta .dotsep { margin: 0 8px; color: var(--text-5); }
.profile-hero-score { text-align: right; }
.profile-score-num { font-size: 38px; font-weight: 600; letter-spacing: -1px; line-height: 1; }
.profile-score-lbl { font-size: 11px; color: var(--text-3); margin-top: 6px; display: flex; align-items: center; gap: 6px; justify-content: flex-end; }
.trend.inline { width: auto; height: auto; padding: 1px 6px; border-radius: 8px; font-size: 11px; }

.banner-warn.compact {
  padding: 12px 18px;
  font-size: var(--fs-caption);
  margin-bottom: 28px;
  grid-template-columns: 24px 1fr;
  gap: 12px;
}
.banner-warn.compact .banner-warn-icon { width: 22px; height: 22px; font-size: var(--fs-body-sm); }

.profile-section { margin-bottom: 32px; }
.profile-section-h {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  margin-bottom: 12px;
}
.lbl-mute { font-size: 9px; letter-spacing: 1.8px; color: var(--text-5); text-transform: uppercase; font-weight: 500; }
.lbl-link { font-size: 11px; color: var(--text-3); text-decoration: none; letter-spacing: 0.2px; }
.lbl-link:hover { color: var(--text); }

.align-chart-mini {
  padding: 18px 14px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 8px;
}

.theme-card-tight {
  padding: 18px 18px 16px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 8px;
}
.theme-rank {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 10px;
  letter-spacing: 2px;
  color: var(--text-4);
  margin-bottom: 8px;
}
.theme-card-tight .theme-title { font-size: var(--fs-body-sm); font-weight: 600; line-height: 1.4; margin-bottom: 8px; }
.theme-card-tight .theme-body { font-size: var(--fs-caption); color: var(--text-3); line-height: 1.55; }

.checkin-tight-list {
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 8px;
  overflow: hidden;
}
.checkin-tight {
  display: grid;
  grid-template-columns: 60px 1fr 40px 140px;
  gap: 16px;
  align-items: center;
  padding: 12px 18px;
  border-top: 1px solid var(--hairline);
  font-size: var(--fs-caption);
}
.checkin-tight:first-child { border-top: none; }
.ct-date { font-family: 'IBM Plex Mono', monospace; font-size: 10px; color: var(--text-4); letter-spacing: 0.4px; }
.ct-q { color: var(--text-2); font-style: italic; font-size: var(--fs-caption); }
.ct-score { font-size: 16px; font-weight: 600; text-align: center; font-variant-numeric: tabular-nums; }
.ct-tag { font-size: 9px; letter-spacing: 0.4px; color: var(--text-3); padding: 3px 8px; background: transparent; border: 1px solid var(--hairline-strong); border-radius: 9px; text-align: center; text-transform: uppercase; }

.snapshot {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  padding: 18px 22px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 8px;
  margin-bottom: 10px;
}
.snapshot-stat { text-align: left; }
.snapshot-num { font-size: 26px; font-weight: 600; letter-spacing: -0.6px; line-height: 1; }
.snapshot-lbl { font-size: 10px; color: var(--text-4); margin-top: 8px; letter-spacing: 0.2px; }
.snapshot-read { font-size: var(--fs-body-sm); color: var(--text-2); line-height: 1.6; padding: 0 6px; }

.suggested.compact {
  padding: 14px 18px;
  margin-top: 0;
}
.suggested.compact .suggested-q { font-size: var(--fs-body-sm); }

/* ===== Rubrics page ===== */
.rubric-active {
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 8px;
  overflow: hidden;
}
.rubric-active-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 14px 18px;
  border-bottom: 1px solid var(--hairline);
}
/* The title block — let it shrink so the right-side actions never overlap. */
.rubric-active-head > div:first-child { flex: 1; min-width: 0; }
.rubric-active-name { font-size: 14px; font-weight: 500; }
.rubric-active-sub { font-size: 11px; color: var(--text-3); margin-top: 3px; }
.rubric-active-badge {
  font-size: 9px;
  letter-spacing: 1.8px;
  font-weight: 600;
  padding: 4px 10px;
  background: var(--text);
  color: var(--bg);
  border-radius: 10px;
  white-space: nowrap;
  flex-shrink: 0;
}
/* "View dimensions" button — keep it on a single line. Without this it
   wrapped to two lines on cards whose title was long enough to push the
   button into a narrow column. */
.rubric-active-head .rubric-dims-toggle,
.rubric-active-head .btn {
  white-space: nowrap;
  flex-shrink: 0;
}

.dim-list { display: flex; flex-direction: column; }
.dim-row {
  display: grid;
  grid-template-columns: 1fr 200px 40px;
  gap: 18px;
  align-items: center;
  padding: 12px 18px;
  border-top: 1px solid var(--hairline);
}
.dim-row:first-child { border-top: none; }
.dim-meta { min-width: 0; }
.dim-name { font-size: var(--fs-body-sm); font-weight: 500; }
.dim-source { font-size: 11px; color: var(--text-3); margin-top: 3px; }
.dim-weight { display: flex; align-items: center; gap: 10px; }
.weight-bar { flex: 1; height: 3px; background: var(--bg-3); border-radius: 2px; overflow: hidden; }
.weight-fill { height: 100%; background: var(--text); }
.weight-val { font-family: 'IBM Plex Mono', monospace; font-size: 11px; color: var(--text-2); width: 30px; text-align: right; }

.template-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}
.template-card {
  padding: 18px 20px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 8px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.template-name { font-size: 14px; font-weight: 600; }
.template-sub { font-size: 11px; color: var(--text-3); }
.template-meta { font-size: 10px; color: var(--text-5); margin-bottom: 8px; }
.btn-small { padding: 5px 12px; font-size: 11px; align-self: flex-start; }

@media (max-width: 760px) {
  .profile-hero { grid-template-columns: auto 1fr; }
  .profile-hero-score { grid-column: 1 / -1; text-align: left; padding-top: 8px; border-top: 1px solid var(--hairline); margin-top: 8px; }
  .profile-score-lbl { justify-content: flex-start; }
  .snapshot { grid-template-columns: 1fr; }
  .template-grid { grid-template-columns: 1fr; }
  .checkin-tight { grid-template-columns: 50px 1fr 40px; }
  .checkin-tight .ct-tag { display: none; }
  .dim-row { grid-template-columns: 1fr 100px 32px; }
}

/* ===== Interviews list page ===== */
.filter-row {
  display: flex;
  gap: 8px;
  margin-bottom: 28px;
  border-bottom: 1px solid var(--hairline);
  padding-bottom: 18px;
}
.filter-chip {
  padding: 6px 14px;
  border-radius: 18px;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.3px;
  background: transparent;
  color: var(--text-3);
  border: 1px solid var(--hairline-strong);
  cursor: pointer;
  transition: color 0.12s, background 0.12s, border-color 0.12s;
  font-family: inherit;
}
.filter-chip:hover { color: var(--text); border-color: var(--text-3); }
.filter-chip.active { background: var(--text); color: var(--bg); border-color: var(--text); }

/* Interview row layout — status | detail | meta | action.
   The action track has a fixed minimum so a row's Start button and a bare
   detail arrow occupy the same width — that keeps every row's meta (date +
   consent) column right-aligned to the same edge, whether or not the row
   carries a button. minmax()'s max-content lets Jedah Desktop's two-button
   variant still grow past the minimum. */
.interview-row {
  display: grid !important;
  grid-template-columns: 84px minmax(0, 1fr) auto minmax(116px, max-content);
  gap: 20px;
  align-items: center;
  padding: 15px 18px;
}
.iv-status { display: flex; align-items: center; }
.iv-meta { text-align: right; white-space: nowrap; }
.iv-meta-num { font-size: 18px; font-weight: 600; letter-spacing: -0.3px; font-variant-numeric: tabular-nums; }
.iv-meta-lbl { font-size: 11px; color: var(--text-3); letter-spacing: 0.2px; margin-top: 2px; font-variant-numeric: tabular-nums; }

/* The trailing cell (Start button or bare arrow) hugs the right edge so the
   action column reads as a single aligned rail down the whole list. */
.interview-row > *:last-child { justify-self: end; }
.interview-row .btn-sm { min-width: 96px; justify-content: center; }
.interview-row .arrow { font-size: 15px; }

@media (max-width: 760px) {
  .interview-row { grid-template-columns: 60px 1fr auto; gap: 14px; }
  .interview-row .iv-meta { display: none; }
  .filter-row { flex-wrap: wrap; }
}

/* ===== Hire outcome buttons ===== */
.outcome-row {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.outcome-btn {
  padding: 8px 14px;
  font-size: var(--fs-caption);
  font-weight: 500;
  background: var(--bg-2);
  color: var(--text-2);
  border: 1px solid var(--hairline-strong);
  border-radius: 6px;
  cursor: pointer;
  font-family: inherit;
  transition: color 0.12s, background 0.12s, border-color 0.12s;
}
.outcome-btn:hover { color: var(--text); border-color: var(--text-3); }
.outcome-btn.outcome-good { border-color: rgba(250,250,250,0.3); }
.outcome-btn.outcome-bad { border-color: rgba(250,250,250,0.3); }
.outcome-btn.active {
  background: var(--text);
  color: var(--bg);
  border-color: var(--text);
  font-weight: 600;
}

/* ===== Polish: subtle nice-to-haves ===== */

/* Smooth fade-in on page load */
body { animation: fadein 0.18s ease-out; }
@keyframes fadein { from { opacity: 0; } to { opacity: 1; } }

/* Card hover lift consistency */
.card:hover { border-color: var(--hairline-strong); transition: border-color 0.12s; }

/* Active state for buttons */
.btn:active { transform: translateY(0.5px); }
.btn:focus-visible { outline: 2px solid var(--text); outline-offset: 2px; }

/* Input focus consistency */
.field input:focus, .field select:focus, .field textarea:focus {
  border-color: var(--text);
  background: var(--bg-3);
}

/* Toggle hover */
.toggle:hover { box-shadow: 0 0 0 3px rgba(250,250,250,0.06); }

/* Empty-state copy across the app */
.empty-state {
  padding: 48px 24px;
  text-align: center;
  color: var(--text-3);
  font-size: var(--fs-body-sm);
  background: var(--bg-2);
  border: 1px dashed var(--hairline-strong);
  border-radius: 8px;
}
.empty-state b { color: var(--text); font-weight: 500; display: block; margin-bottom: 6px; }
.empty-state p { font-size: 11px; line-height: 1.6; max-width: 420px; margin: 0 auto; }

/* Three canonical states — use one of these, never mix. */
.loading-state {
  padding: 32px 24px;
  text-align: center;
  color: var(--text-4);
  font: var(--type-body);
}
.loading-state::before {
  content: "";
  display: block;
  width: 20px; height: 20px;
  border: 2px solid var(--hairline-strong);
  border-top-color: var(--text-3);
  border-radius: 50%;
  animation: spin-state 0.9s linear infinite;
  margin: 0 auto 12px;
}
@keyframes spin-state { to { transform: rotate(360deg); } }

.error-state {
  padding: 32px 24px;
  text-align: center;
  color: var(--text-3);
  font: var(--type-body);
  background: var(--bg-2);
  border: 1px solid rgba(239,68,68,0.25);
  border-radius: 8px;
}
.error-state b { color: var(--c-danger-text); font-weight: 600; display: block; margin-bottom: 6px; }
.error-state .retry-btn { margin-top: 12px; font: var(--type-caption); color: var(--text-3); background: none; border: 1px solid var(--hairline-strong); padding: 5px 14px; border-radius: 4px; cursor: pointer; }
.error-state .retry-btn:hover { color: var(--text); border-color: var(--text-3); }

/* Tighter auth pages */
.auth-card { box-shadow: 0 24px 64px -32px rgba(0,0,0,0.7); }
.auth-card .field input { background: var(--bg); }
.auth-card .field input:focus { background: var(--bg-3); }

/* Sign-out link styling */
#signout-link {
  border-top: 1px solid var(--hairline);
  margin-top: 4px;
  padding-top: 10px !important;
  transition: color 0.12s;
}
#signout-link:hover { color: var(--text) !important; }

/* Filter chips: clearer disabled state */
.filter-chip { user-select: none; }

/* Modal animation */
.modal-backdrop.open .modal {
  animation: modalpop 0.18s ease-out;
}
@keyframes modalpop {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Reduce motion respect */
@media (prefers-reduced-motion: reduce) {
  body, .modal-backdrop.open .modal { animation: none; }
  .stage-step.active.ready-to-advance .stage-dot { animation: none; }
}

/* Inline error/info banner inside modals + pages */
.inline-error {
  margin-top: 12px;
  padding: 10px 14px;
  font-size: var(--fs-caption);
  background: rgba(239, 68, 68, 0.08);
  border: 1px solid rgba(239, 68, 68, 0.25);
  color: var(--c-danger-text);
  border-radius: 6px;
  line-height: 1.55;
  display: none;
}
.inline-error.show { display: block; }
.inline-error b { color: var(--text); font-weight: 500; }

/* ─── References (reference-check workflow) ──────────────────────── */
.references-list { display: flex; flex-direction: column; gap: 8px; }
.references-empty {
  padding: 24px;
  text-align: center;
  border: 1px dashed var(--hairline-strong);
  border-radius: 8px;
  font-size: var(--fs-caption);
  color: var(--text-3);
}
.ref-row {
  display: grid;
  grid-template-columns: 40px 1fr auto;
  gap: 14px;
  align-items: center;
  padding: 14px 16px;
  border: 1px solid var(--hairline-strong);
  border-radius: 8px;
  background: var(--bg-2);
  text-decoration: none;
  color: var(--text);
  transition: border-color 120ms ease;
}
.ref-row:hover { border-color: var(--text-3); }
.ref-row-avatar {
  width: 40px; height: 40px; border-radius: 50%;
  background: var(--bg-3);
  border: 1px solid var(--hairline-strong);
  display: flex; align-items: center; justify-content: center;
  font-family: "IBM Plex Mono", monospace;
  font-size: var(--fs-caption);
  letter-spacing: 0.05em;
  color: var(--text-3);
}
.ref-row-body { min-width: 0; }
.ref-row-name { font-size: 14px; font-weight: 500; margin-bottom: 4px; }
.ref-row-sub { font-size: 11px; color: var(--text-3); display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.ref-row-right { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; }
.ref-row-meta { font-size: 11px; color: var(--text-4); font-family: "IBM Plex Mono", monospace; }
.ref-row-link { font-size: 11px; color: var(--text-3); letter-spacing: 0.04em; }
.ref-rel-chip {
  display: inline-block;
  padding: 2px 8px;
  border: 1px solid var(--hairline-strong);
  border-radius: 100px;
  font-size: 10px;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--text-3);
}
.ref-signal-chip {
  display: inline-block;
  padding: 3px 10px;
  border-radius: 100px;
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-weight: 500;
}
.ref-signal-pending {
  border: 1px dashed var(--hairline-strong);
  color: var(--text-4);
}
.ref-signal-strong_positive {
  background: var(--text);
  color: var(--bg);
  border: 1px solid var(--text);
}
.ref-signal-positive {
  background: var(--bg-3);
  color: var(--text);
  border: 1px solid var(--text-3);
}
.ref-signal-mixed {
  background: var(--bg-2);
  color: var(--text-3);
  border: 1px dashed var(--text-3);
}
.ref-signal-negative {
  background: var(--bg-2);
  color: var(--text);
  border: 1px solid var(--text);
  text-decoration: line-through;
  text-decoration-thickness: 1px;
}

/* Reference detail page */
.ref-intro {
  font-size: var(--fs-body-sm);
  color: var(--text);
  background: var(--bg-2);
  border: 1px solid var(--hairline-strong);
  border-left: 2px solid var(--text);
  padding: 14px 16px;
  border-radius: 6px;
  line-height: 1.6;
  font-style: italic;
}
.ref-questions { display: flex; flex-direction: column; gap: 14px; }
.ref-q {
  display: grid;
  grid-template-columns: 32px 1fr;
  gap: 14px;
  padding: 16px;
  border: 1px solid var(--hairline-strong);
  border-radius: 8px;
  background: var(--bg-2);
}
.ref-q-num {
  width: 24px; height: 24px;
  border-radius: 50%;
  background: var(--bg-3);
  border: 1px solid var(--hairline-strong);
  font-family: "IBM Plex Mono", monospace;
  font-size: 11px;
  display: flex; align-items: center; justify-content: center;
  color: var(--text-3);
}
.ref-q-question { font-size: 14px; font-weight: 500; line-height: 1.5; margin-bottom: 8px; }
.ref-q-why, .ref-q-hint {
  font-size: 11px;
  color: var(--text-3);
  line-height: 1.55;
  margin-bottom: 4px;
}
.ref-q-why b, .ref-q-hint b { color: var(--text); font-weight: 500; }
.shell textarea.ref-q-answer,
.modal textarea.ref-q-answer,
.ref-q-answer {
  width: 100%;
  margin-top: 10px;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--hairline-strong);
  border-radius: 6px;
  padding: 8px 10px;
  font-family: inherit;
  font-size: var(--fs-caption);
  resize: vertical;
  line-height: 1.55;
  min-height: 64px;
  max-height: 160px;
  overflow-y: auto;
}
.ref-q-answer:focus { outline: none; border-color: var(--text); }
.ref-q-sentiment { display: flex; gap: 6px; margin-top: 8px; flex-wrap: wrap; }
.ref-q-sent-btn {
  background: transparent;
  color: var(--text-3);
  border: 1px solid var(--hairline-strong);
  border-radius: 100px;
  padding: 4px 12px;
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  font-family: inherit;
  cursor: pointer;
  transition: all 120ms ease;
}
.ref-q-sent-btn:hover { color: var(--text); border-color: var(--text-3); }
.ref-q-sent-btn.active {
  background: var(--text);
  color: var(--bg);
  border-color: var(--text);
}

/* Overall signal radio row */
.ref-signal-row { display: flex; gap: 8px; flex-wrap: wrap; }
.ref-signal-opt {
  display: flex; align-items: center; gap: 8px;
  padding: 10px 14px;
  border: 1px solid var(--hairline-strong);
  border-radius: 8px;
  background: var(--bg-2);
  font-size: var(--fs-caption);
  color: var(--text);
  cursor: pointer;
  transition: border-color 120ms ease;
}
.ref-signal-opt:hover { border-color: var(--text-3); }
.ref-signal-opt input[type=radio] { accent-color: #fafafa; }
.ref-signal-opt:has(input:checked) { border-color: var(--text); background: var(--bg-3); }

/* ─── Blind review chip (live tab + candidate page banner) ──────── */
.blind-review-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border: 1px solid var(--text);
  background: var(--bg-2);
  color: var(--text);
  border-radius: 100px;
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  font-weight: 500;
  font-family: "IBM Plex Mono", monospace;
}
.blind-review-chip::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--text);
}
.blind-review-banner {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px;
  border: 1px dashed var(--hairline-strong);
  border-radius: 8px;
  background: var(--bg-2);
  margin-bottom: 16px;
  font-size: 11px;
  color: var(--text-3);
  letter-spacing: 0.02em;
}

/* ───── Tier-aware sidebar / chrome ─────────────────────────────────────
   The body class is set by sidebar-tier.js on every authed page. CSS rules
   below hide nav items that aren't included in the workspace's tier.

   Hierarchy:
     starter      → minimal nav (no pipeline/compare/questions/training/perf/scheduling)
     professional → full workflow (no exec-only items)
     executive    → everything

   We also expose --brand-accent as a CSS variable so executive workspaces
   can theme premium widgets without touching every page's inline styles.
─────────────────────────────────────────────────────────────────────── */

:root {
  --brand-accent: var(--text);
}

/* Starter tier: hide pro+ nav items. Note: training.html no longer has a
   nav link — the training corpus lives inside Performance now, which is
   already gated here. */
body.tier-starter .sidebar a.nav-item[href="candidates.html"],
body.tier-starter .sidebar a.nav-item[href="compare.html"],
body.tier-starter .sidebar a.nav-item[href="questions.html"],
body.tier-starter .sidebar a.nav-item[href="performance.html"],
body.tier-starter .sidebar a.nav-item[href="scheduling.html"] {
  display: none;
}
/* Starter tier: hide the section labels that would otherwise hang above
   sections we've emptied out. (People + Library headers still show because
   they contain visible items.) Hiring header still shows because Interviews
   and Candidates are starter-tier features. */

/* Pro tier: hide executive-only nav items + sections. */
body.tier-professional .sidebar a.nav-item[data-exec-nav-org-insights],
body.tier-starter      .sidebar a.nav-item[data-exec-nav-org-insights] {
  display: none;
}

/* Executive tier: only show items flagged executive-only when on exec tier.
   This is defense-in-depth — sidebar-tier.js only inserts the org-insights
   nav item when the tier is exec, but if someone hand-edits the sidebar,
   the CSS guard still applies. */
body:not(.tier-executive) [data-exec-only] {
  display: none !important;
}

/* Hidden by tier — set by sidebar-tier.js on [data-min-tier=...] elements
   whose min tier is above the workspace's effective tier. Inline display:none
   is set in JS; this rule is mostly here for any future SSR rendering. */
[data-tier-hidden="1"] { display: none !important; }

/* Executive-only premium badge style. Subtle cream/gold, not gaudy. */
.exec-badge {
  display: inline-block;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 9px;
  letter-spacing: 1.5px;
  color: var(--c-warn);
  background: var(--surface-gold-deep);
  border: 1px solid var(--border-gold-deep);
  padding: 2px 7px;
  border-radius: 3px;
  text-transform: uppercase;
  vertical-align: middle;
}
/* Custom brand logo (replaces the JEDAH eye logo on exec-tier workspaces). */
.brand-logo.brand-logo-custom::before,
.brand-logo.brand-logo-custom::after { display: none; }

/* Org-Insights heatmap cells. */
.org-heatmap-cell {
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 11px;
  height: 36px;
  border: 1px solid var(--hairline);
}
.org-heatmap-grid {
  display: grid;
  gap: 2px;
  background: var(--hairline);
  border: 1px solid var(--hairline);
}

/* ─────────────────────────────────────────────────────────
   Human Potential Framework (HPF) profile — 7 cards + overall read
   Subtle colored left-border per dimension cluster; rest of the
   card stays b&w to match the IBM Plex shell.
   ───────────────────────────────────────────────────────── */
.hpf-section { margin-bottom: 28px; }

.hpf-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 18px;
}
@media (max-width: 720px) {
  .hpf-grid { grid-template-columns: 1fr; }
}

.hpf-card {
  position: relative;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-left-width: 3px;
  border-radius: 6px;
  padding: 16px 18px 14px;
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-rows: auto auto auto;
  column-gap: 14px;
  row-gap: 8px;
  cursor: help;
}

.hpf-card .hpf-trait {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  color: var(--text);
  line-height: 1.2;
  grid-column: 1;
  grid-row: 1;
}
.hpf-card .hpf-company-dim {
  font-size: 9px;
  letter-spacing: 1.8px;
  text-transform: uppercase;
  color: var(--text-4);
  font-family: 'IBM Plex Mono', monospace;
  margin-top: 2px;
  grid-column: 1;
  grid-row: 2;
}
.hpf-card .hpf-score {
  font-size: var(--fs-display-lg);
  font-weight: 600;
  letter-spacing: -1.2px;
  line-height: 1;
  color: var(--text);
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.hpf-card .hpf-score-sub {
  display: block;
  font-size: 9px;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  font-weight: 400;
  color: var(--text-4);
  margin-top: 4px;
}
.hpf-card .hpf-summary {
  grid-column: 1 / -1;
  grid-row: 3;
  font-size: var(--fs-body-sm);
  color: var(--text-2);
  line-height: 1.5;
}
.hpf-card .hpf-evidence {
  grid-column: 1 / -1;
  grid-row: 4;
  font-family: 'IBM Plex Mono', monospace;
  font-size: var(--fs-mono);
  color: var(--text-3);
  line-height: 1.55;
  padding-left: 12px;
  border-left: 1px solid var(--hairline);
  margin-top: 4px;
}
.hpf-card .hpf-evidence::before {
  content: "› ";
  color: var(--text-4);
}

/* Tooltip popover — shown on .hpf-card:hover (and tap on mobile). */
.hpf-card .hpf-tooltip {
  position: absolute;
  bottom: calc(100% + 6px);
  left: 0;
  right: 0;
  z-index: 50;
  background: var(--surface-3);
  border: 1px solid var(--hairline-strong);
  border-radius: 6px;
  padding: 12px 14px;
  font-size: 11.5px;
  line-height: 1.55;
  color: var(--text-2);
  opacity: 0;
  visibility: hidden;
  transform: translateY(4px);
  transition: opacity 0.16s ease, transform 0.16s ease, visibility 0s linear 0.16s;
  pointer-events: none;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
}
.hpf-card.is-open .hpf-tooltip {
  opacity: 1;
  visibility: visible;
  transform: translateY(0);
  transition-delay: 0s;
}
.hpf-tooltip .hpf-tt-h {
  font-size: 10px;
  letter-spacing: 1.4px;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 6px;
}
.hpf-tooltip .hpf-tt-meaning {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 10px;
  color: var(--text-3);
  margin-bottom: 8px;
  letter-spacing: 0.4px;
}

/* ── Accent colors (subtle — only the left border + the score sub). ── */
/* Cluster 1 (Light / Seeing): green */
.hpf-intel    { border-left-color: #4f9d6e; }
.hpf-intel    .hpf-score-sub { color: #4f9d6e; }
.hpf-intent   { border-left-color: #4f9d6e; }
.hpf-intent   .hpf-score-sub { color: #4f9d6e; }
/* Cluster 2 (Embodiment): light blue */
.hpf-persona  { border-left-color: #6aa9d6; }
.hpf-persona  .hpf-score-sub { color: #6aa9d6; }
/* Cluster 3 (Foundational): blue */
.hpf-values   { border-left-color: #4a78c5; }
.hpf-values   .hpf-score-sub { color: #4a78c5; }
/* Cluster 4 (Contextualized): yellow/amber */
.hpf-context  { border-left-color: #d4a437; }
.hpf-context  .hpf-score-sub { color: #d4a437; }
/* Cluster 5 (Deliberate Control): orange */
.hpf-discipline { border-left-color: #d97e3c; }
.hpf-discipline .hpf-score-sub { color: #d97e3c; }
/* Cluster 6 (Action): pink/red */
.hpf-skill    { border-left-color: #d05b6b; }
.hpf-skill    .hpf-score-sub { color: #d05b6b; }

/* Overall read callout */
.hpf-overall-read {
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
  padding: 16px 20px;
  font-size: var(--fs-body-sm);
  color: var(--text);
  line-height: 1.6;
  margin-bottom: 14px;
}
.hpf-overall-read .hpf-or-lbl {
  display: block;
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  color: var(--text-3);
  margin-bottom: 8px;
}

/* Footer (regenerate + timestamp) */
.hpf-foot {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 10px;
  color: var(--text-4);
  letter-spacing: 0.6px;
  padding-top: 4px;
}
.hpf-regen {
  background: transparent;
  border: 1px solid var(--hairline-strong);
  color: var(--text-3);
  font-size: 10px;
  letter-spacing: 1.2px;
  text-transform: uppercase;
  padding: 5px 11px;
  border-radius: 11px;
  cursor: pointer;
  font-family: inherit;
}
.hpf-regen:hover { color: var(--text); border-color: var(--text-3); }

/* Empty-state + loading */
.hpf-cta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 22px 24px;
  background: var(--bg-2);
  border: 1px dashed var(--hairline-strong);
  border-radius: 6px;
}
.hpf-cta-text {
  font-size: var(--fs-caption);
  color: var(--text-3);
  line-height: 1.55;
  max-width: 540px;
}
.hpf-loading {
  padding: 22px 24px;
  font-size: var(--fs-body-sm);
  color: var(--text-2);
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
  display: flex;
  align-items: center;
  gap: 10px;
}

/* ─── Adler 10-Factor section ────────────────────────────────────────────── */
.adler-section { margin-bottom: 28px; }

.adler-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 10px;
  margin: 12px 0;
}
@media (max-width: 600px) { .adler-grid { grid-template-columns: 1fr; } }

.adler-card {
  position: relative;
  padding: 14px 16px;
  border: 1px solid var(--hairline);
  border-left: 3px solid var(--text-4);
  border-radius: 6px;
  background: var(--bg-2);
  cursor: pointer;
  transition: border-color 0.12s;
}
.adler-card .adler-factor { font-size: 10px; letter-spacing: 1.1px; color: var(--text-4); text-transform: uppercase; font-weight: 600; margin-bottom: 6px; }
.adler-card .adler-score { font-size: 26px; font-weight: 600; color: var(--text); line-height: 1; }
.adler-card .adler-score-sub { font-size: var(--fs-caption); color: var(--text-4); font-weight: 400; }
.adler-card .adler-summary { font-size: var(--fs-caption); color: var(--text-2); line-height: 1.55; margin-top: 8px; }
.adler-card .adler-evidence { font-size: 11px; color: var(--text-4); line-height: 1.5; margin-top: 6px; font-style: italic; display: block; }
.adler-card .adler-evidence::before { content: open-quote; }

.adler-energy         { border-left-color: #d97e3c; } .adler-energy         .adler-score-sub { color: #d97e3c; }
.adler-growth         { border-left-color: #4f9d6e; } .adler-growth         .adler-score-sub { color: #4f9d6e; }
.adler-comparability  { border-left-color: #6aa9d6; } .adler-comparability  .adler-score-sub { color: #6aa9d6; }
.adler-experience     { border-left-color: #9b7ab8; } .adler-experience     .adler-score-sub { color: #9b7ab8; }
.adler-problem_solving { border-left-color: #d4a437; } .adler-problem_solving .adler-score-sub { color: #d4a437; }
.adler-talent         { border-left-color: #4a78c5; } .adler-talent         .adler-score-sub { color: #4a78c5; }
.adler-management     { border-left-color: #7a9e6e; } .adler-management     .adler-score-sub { color: #7a9e6e; }
.adler-leadership     { border-left-color: #d05b6b; } .adler-leadership     .adler-score-sub { color: #d05b6b; }
.adler-character      { border-left-color: #c5944a; } .adler-character      .adler-score-sub { color: #c5944a; }
.adler-fit            { border-left-color: #888;    } .adler-fit            .adler-score-sub { color: #888; }

.adler-weighted-avg {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin: 12px 0 4px;
  padding: 12px 16px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
}
.adler-weighted-avg .adler-wa-label { font-size: 10px; letter-spacing: 1.4px; color: var(--text-4); text-transform: uppercase; font-weight: 500; }
.adler-weighted-avg .adler-wa-score { font-size: 22px; font-weight: 600; color: var(--text); }
.adler-weighted-avg .adler-wa-sub { font-size: 11px; color: var(--text-4); }

.adler-overall-read {
  font-size: var(--fs-body-sm); color: var(--text-2); line-height: 1.65; margin: 10px 0 8px;
  padding: 12px 16px; background: var(--bg-2); border-radius: 6px; border: 1px solid var(--hairline);
}
.adler-overall-read .adler-or-lbl {
  display: block; font-size: 10px; letter-spacing: 1.4px; color: var(--text-4);
  text-transform: uppercase; font-weight: 500; margin-bottom: 6px;
}

.adler-foot { display: flex; align-items: center; justify-content: space-between; margin-top: 10px; font-size: 11px; color: var(--text-4); }
.adler-regen { background: none; border: 1px solid var(--hairline); border-radius: 4px; padding: 4px 10px; font-size: 11px; color: var(--text-4); cursor: pointer; transition: color 0.12s, border-color 0.12s; }
.adler-regen:hover { color: var(--text); border-color: var(--text-3); }

.adler-cta { display: flex; flex-direction: column; align-items: flex-start; gap: 12px; padding: 20px 16px; background: var(--bg-2); border: 1px solid var(--hairline); border-radius: 6px; }
.adler-cta-text { font-size: var(--fs-body-sm); color: var(--text-3); line-height: 1.6; }
.adler-loading { font-size: var(--fs-body-sm); color: var(--text-4); padding: 22px 24px; background: var(--bg-2); border: 1px solid var(--hairline); border-radius: 6px; display: flex; align-items: center; gap: 10px; }

/* ─────────────────────────────────────────────────────────
   Welcome wizard (welcome.html) — 4-step onboarding modal.
   Same b&w IBM Plex aesthetic; full-page card so a fresh
   signup gets a focused, distraction-free flow.
   ───────────────────────────────────────────────────────── */
.welcome-shell {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 32px;
}
.welcome-card {
  width: 100%;
  max-width: 620px;
  padding: 36px 40px 32px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 12px;
}
.welcome-brand {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 24px;
}
.welcome-brand .brand-logo { width: 24px; height: 24px; }
.welcome-brand .brand-name { font-size: 14px; font-weight: 600; letter-spacing: 1.6px; }
.welcome-progress {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 28px;
}
.welcome-progress-dots { display: flex; gap: 6px; }
.welcome-dot {
  width: 22px; height: 4px;
  background: var(--hairline-strong);
  border-radius: 2px;
  transition: background 0.18s;
}
.welcome-dot.active { background: var(--text); }
.welcome-dot.done { background: var(--text-3); }
.welcome-step-label {
  font-size: 10px;
  letter-spacing: 1.8px;
  text-transform: uppercase;
  color: var(--text-4);
  font-weight: 500;
}
.welcome-step { animation: welcome-fade 0.22s ease; }
@keyframes welcome-fade {
  from { opacity: 0; transform: translateY(4px); }
  to   { opacity: 1; transform: translateY(0);   }
}
.welcome-title {
  font-size: 22px;
  font-weight: 600;
  letter-spacing: -0.4px;
  margin: 0 0 6px;
}
.welcome-sub {
  font-size: var(--fs-body-sm);
  color: var(--text-3);
  line-height: 1.55;
  margin: 0 0 24px;
}
.welcome-hint {
  font-size: 11px;
  color: var(--text-4);
  margin-top: 6px;
  line-height: 1.5;
}
.welcome-error {
  font-size: var(--fs-caption);
  color: var(--c-danger);
  margin: -4px 0 12px;
  padding: 8px 12px;
  background: rgba(239,68,68,0.08);
  border: 1px solid rgba(239,68,68,0.25);
  border-radius: 6px;
  display: none;
}
.welcome-status {
  font-size: var(--fs-caption);
  color: var(--text-3);
  margin: -4px 0 12px;
}
.welcome-actions {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 18px;
}
.welcome-actions .btn { padding: 10px 18px; font-size: var(--fs-body-sm); }

/* Stage cards (Step 1) — 5-card responsive grid */
.welcome-radio-grid {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  gap: 8px;
}
@media (max-width: 720px) {
  .welcome-radio-grid { grid-template-columns: repeat(2, 1fr); }
}
.welcome-radio-card {
  display: block;
  padding: 12px 10px;
  background: var(--bg);
  border: 1px solid var(--hairline-strong);
  border-radius: 6px;
  cursor: pointer;
  transition: border-color 0.12s, background 0.12s;
}
.welcome-radio-card:hover { border-color: var(--text-3); }
.welcome-radio-card input[type=radio] {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.welcome-radio-card:has(input:checked) {
  border-color: var(--text);
  background: var(--bg-3);
}
.welcome-radio-card .rc-name {
  font-size: var(--fs-caption);
  font-weight: 600;
  letter-spacing: 0.4px;
  color: var(--text);
  margin-bottom: 4px;
}
.welcome-radio-card .rc-hint {
  font-size: 10px;
  color: var(--text-4);
  line-height: 1.4;
}

/* Dimension chips (Step 2) */
.welcome-chip-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.welcome-chip {
  background: var(--bg);
  border: 1px solid var(--hairline-strong);
  color: var(--text-2);
  font-family: inherit;
  font-size: var(--fs-caption);
  padding: 7px 12px;
  border-radius: 16px;
  cursor: pointer;
  transition: border-color 0.12s, background 0.12s, color 0.12s;
}
.welcome-chip:hover { border-color: var(--text-3); color: var(--text); }
.welcome-chip.on {
  background: var(--text);
  color: var(--bg);
  border-color: var(--text);
}

/* Recap (Step 4) */
.welcome-recap {
  background: var(--bg);
  border: 1px solid var(--hairline);
  border-radius: 6px;
  padding: 4px 0;
}
.welcome-recap-row {
  display: flex;
  justify-content: space-between;
  gap: 14px;
  padding: 11px 16px;
  border-bottom: 1px solid var(--hairline);
  font-size: var(--fs-body-sm);
}
.welcome-recap-row:last-child { border-bottom: none; }
.welcome-recap-k {
  font-size: 10px;
  letter-spacing: 1.6px;
  text-transform: uppercase;
  color: var(--text-4);
  align-self: center;
}
.welcome-recap-v {
  color: var(--text);
  text-align: right;
  word-break: break-word;
}

/* ─────────────────────────────────────────────────────────
   Guided tour (tour.js) — overlay + tooltips + stray banner
   ───────────────────────────────────────────────────────── */
.tour-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.55);
  z-index: 9000;
  pointer-events: none;  /* let the user keep clicking through if they want */
}
.tour-spotlight {
  position: fixed;
  z-index: 9001;
  border: 2px solid var(--text);
  border-radius: 6px;
  box-shadow: 0 0 0 9999px rgba(0,0,0,0.55);
  pointer-events: none;
  animation: tour-pulse 1.8s ease-in-out infinite;
}
@keyframes tour-pulse {
  0%, 100% { box-shadow: 0 0 0 9999px rgba(0,0,0,0.55), 0 0 0 0 rgba(250,250,250,0.0); }
  50%      { box-shadow: 0 0 0 9999px rgba(0,0,0,0.55), 0 0 0 6px rgba(250,250,250,0.10); }
}
.tour-tooltip {
  position: fixed;
  z-index: 9002;
  background: var(--bg-2);
  border: 1px solid var(--hairline-strong);
  border-radius: 8px;
  padding: 18px 20px 14px;
  width: 320px;
  max-width: calc(100vw - 24px);
  box-shadow: 0 12px 36px rgba(0,0,0,0.55);
  font-family: 'IBM Plex Sans', sans-serif;
}
.tour-step-indicator {
  font-size: 9px;
  letter-spacing: 1.8px;
  text-transform: uppercase;
  color: var(--text-4);
  font-weight: 600;
  margin-bottom: 8px;
}
.tour-title {
  font-size: var(--fs-h3);
  font-weight: 600;
  color: var(--text);
  margin-bottom: 6px;
  letter-spacing: -0.2px;
}
.tour-body {
  font-size: var(--fs-caption);
  color: var(--text-2);
  line-height: 1.55;
  margin-bottom: 14px;
}
.tour-actions {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
}
.tour-actions .btn { padding: 6px 12px; font-size: var(--fs-caption); }

.tour-banner {
  position: fixed;
  z-index: 9002;
  bottom: 20px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--bg-2);
  border: 1px solid var(--hairline-strong);
  border-radius: 8px;
  padding: 12px 16px;
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: var(--fs-caption);
  color: var(--text-2);
  box-shadow: 0 8px 28px rgba(0,0,0,0.55);
}
.tour-banner b { color: var(--text); }
.tour-banner .btn { padding: 6px 12px; font-size: 11px; }

/* Empty-state "Take the tour" button container — used on dashboards */
.tour-empty-cta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  padding: 18px 22px;
  background: var(--bg-2);
  border: 1px dashed var(--hairline-strong);
  border-radius: 6px;
  margin-bottom: 18px;
}
.tour-empty-cta .tec-text {
  font-size: var(--fs-caption);
  color: var(--text-3);
  line-height: 1.55;
  max-width: 540px;
}
.tour-empty-cta .tec-text b { color: var(--text); font-weight: 500; }

/* ─── Compact, scrollable textareas ────────────────────────────────
   Used everywhere a long paste is possible but we don't want the
   field to dominate the page. Default ~4 visible lines, internal
   scroll past max-height, user can drag the resize handle to expand.
─────────────────────────────────────────────────────────────────── */
.shell textarea,
.modal textarea,
.welcome-card textarea,
.compact-textarea {
  min-height: 80px;
  max-height: 200px;
  overflow-y: auto;
  resize: vertical;
  font-family: inherit;
  font-size: var(--fs-body-sm);
  padding: 10px;
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--hairline);
  border-radius: 6px;
  line-height: 1.5;
}

.shell textarea:focus,
.modal textarea:focus,
.welcome-card textarea:focus,
.compact-textarea:focus {
  border-color: var(--text);
  outline: none;
}

/* Opt-out for fields where a long paste is the focal point (JD parser,
   LinkedIn experience paste, etc.) — allow the user to drag much taller. */
.shell textarea.textarea-tall,
.modal textarea.textarea-tall,
.welcome-card textarea.textarea-tall,
.compact-textarea.textarea-tall {
  max-height: 600px;
  min-height: 200px;
}


/* ═══════════════════════════════════════════════════════════════
   MARKETING DESIGN UPLIFT v2 — dialed up.  Bigger heroes, more
   whitespace, refined buttons, gradient accents.  Restore the
   legacy look by replacing this whole file with styles.legacy.css.
   ═══════════════════════════════════════════════════════════════ */

/* Body — subtle background gradient like marketing site instead of flat. */
body {
  background:
    radial-gradient(ellipse at top, rgba(255,255,255,0.025), transparent 50%),
    var(--bg) !important;
}

/* Hero-style page header — bigger, lighter, much more whitespace. */
.page-header {
  margin-bottom: 48px !important;
  padding-bottom: 32px !important;
  border-bottom: 1px solid var(--hairline) !important;
}
.page-title {
  font-size: 44px !important;
  font-weight: 400 !important;
  letter-spacing: -0.035em !important;
  line-height: 1.05 !important;
  color: var(--text);
}
.page-sub {
  font-size: 14px !important;
  color: var(--text-2) !important;
  margin-top: 14px !important;
  max-width: 720px;
  line-height: 1.65 !important;
  font-weight: 300;
}

/* Mobile titles still substantial but not crushing. */
@media (max-width: 720px) {
  .page-title { font-size: var(--fs-display-lg) !important; }
  .page-sub { font-size: var(--fs-body-sm) !important; }
}

/* Section labels in Plex Mono with wide tracking — the eyebrow
   style on the marketing site. */
.lbl, .lbl-mute {
  font-family: 'IBM Plex Mono', ui-monospace, monospace !important;
  font-size: 10px !important;
  letter-spacing: 0.22em !important;
  text-transform: uppercase !important;
  color: var(--text-4) !important;
  font-weight: 500 !important;
}

/* Card border tightening — single soft hairline. */
.card {
  border: 1px solid var(--hairline) !important;
  border-radius: 6px;
}
.card:hover { border-color: var(--hairline-strong) !important; }

/* Slightly more vertical rhythm between major sections. */
.content > .lbl,
.content > section,
main.content > .lbl,
main.content > section { margin-top: 36px; }
main.content > .lbl:first-of-type,
main.content > section:first-of-type { margin-top: 0; }

/* Sidebar refinement — slightly tighter, softer hairlines. */
.sidebar { border-right: 2px solid var(--hairline-strong) !important; }
.nav-section-label {
  font-family: 'IBM Plex Mono', ui-monospace, monospace !important;
  font-size: 10px !important;
  letter-spacing: 0.22em !important;
  color: var(--text-4) !important;
}

/* Gradient-text accent utility. Use on a span inside a headline:
   <h2>Built on rigor <span class="grad-text">recruiters trust.</span></h2>  */
.grad-text {
  background: linear-gradient(120deg, #ffffff 0%, #c0c0c4 50%, #5e6066 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}

/* Monospace numerics — apply with class="mono-num" to stat cells. */
.mono-num {
  font-family: 'IBM Plex Mono', ui-monospace, monospace;
  font-feature-settings: "tnum" 1;
  letter-spacing: -0.01em;
}

/* Subtle horizontal rule for separating sections inside a page. */
.section-divider {
  border: 0;
  border-top: 1px solid var(--hairline);
  margin: 40px 0 24px;
}

/* ─── Collapsible-section primitive ──────────────────────────────
   Mark any block as <div class="collapsible" data-collapsed="false">
   with a <div class="collapsible-head">Title</div> + the rest as
   children. Click the head to toggle. Pages can opt in section by
   section to drop scroll length. */
.collapsible {
  /* Defensive: never let inner content leak past the content column. The
     screenshot Peter sent showed section labels appearing to bleed left
     under the sidebar — this guarantees they stay inside .content. */
  overflow: hidden;
  width: 100%;
  box-sizing: border-box;
}
.collapsible-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  cursor: pointer;
  user-select: none;
  padding: 14px 0;
  border-top: 1px solid var(--hairline);
}
.collapsible-head::after {
  content: "›";
  font-size: 16px;
  color: var(--text-3);
  transition: transform 0.15s ease;
}
.collapsible[data-collapsed="false"] > .collapsible-head::after {
  transform: rotate(90deg);
}
.collapsible[data-collapsed="true"] > :not(.collapsible-head) {
  display: none !important;
}

/* ─── Refined buttons ────────────────────────────────────────────
   Smaller, lighter, more typographic. Matches marketing CTA. */
.btn {
  font-size: var(--fs-caption) !important;
  font-weight: 500 !important;
  letter-spacing: 0.01em !important;
  padding: 9px 16px !important;
  border-radius: 4px !important;
  transition: background 0.12s, border-color 0.12s, color 0.12s, transform 0.06s !important;
}
.btn-primary {
  background: var(--text) !important;
  color: var(--bg) !important;
  border: 1px solid var(--text) !important;
}
.btn-primary:hover {
  background: var(--text) !important;
  border-color: var(--text) !important;
  transform: translateY(-0.5px);
}
.btn-ghost {
  background: transparent !important;
  color: var(--text-2) !important;
  border: 1px solid var(--hairline-strong) !important;
}
.btn-ghost:hover {
  color: var(--text) !important;
  border-color: var(--text-3) !important;
  background: rgba(255,255,255,0.02) !important;
}
.btn-small { padding: 6px 12px !important; font-size: 11px !important; }

/* ─── Refined cards ──────────────────────────────────────────── */
.card {
  background: var(--bg-2) !important;
  border: 1px solid var(--hairline) !important;
  border-radius: 8px !important;
  transition: border-color 0.12s !important;
}
.card:hover {
  border-color: var(--hairline-strong) !important;
}

/* ─── Stat cards — large mono numbers, mono labels ───────────── */
.stat-card, .setup-card {
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 8px;
  padding: 20px 22px;
}
.stat-num, .setup-card-val {
  font-family: 'IBM Plex Mono', ui-monospace, monospace !important;
  font-size: 28px !important;
  font-weight: 400 !important;
  letter-spacing: -0.02em !important;
  color: var(--text) !important;
  line-height: 1.1 !important;
  margin-top: 6px;
}
.stat-delta, .setup-card-sub {
  font-size: 11px !important;
  color: var(--text-3) !important;
  margin-top: 8px !important;
  line-height: 1.55 !important;
}

/* Big-num treatment (Performance "How am I interviewing?" hero). */
.big-num {
  font-family: 'IBM Plex Mono', ui-monospace, monospace !important;
  font-size: 64px !important;
  font-weight: 300 !important;
  letter-spacing: -0.03em !important;
  line-height: 1 !important;
}
.big-num .small {
  font-size: 22px;
  color: var(--text-3);
  margin-left: 6px;
}

/* ─── Sidebar refinement ──────────────────────────────────────── */
.sidebar {
  background: var(--bg) !important;
  padding: 28px 16px !important;
}
.brand-name {
  font-family: 'IBM Plex Mono', ui-monospace, monospace !important;
  font-size: 11px !important;
  letter-spacing: 0.22em !important;     /* tightened from 0.32 to give long workspace names more room */
  font-weight: 500 !important;
  color: var(--text) !important;
  /* Allow up to 2 lines, ellipsis if even that overflows. Lets
     "Twenty Holdings (Demo)" render as "TWENTY HOLDINGS / (DEMO)"
     instead of getting truncated mid-word to "(D". */
  display: -webkit-box !important;
  -webkit-line-clamp: 2 !important;
  -webkit-box-orient: vertical !important;
  line-clamp: 2 !important;
  overflow: hidden !important;
  text-overflow: ellipsis !important;
  word-break: break-word !important;
  line-height: 1.3 !important;
}
.nav-section-label {
  margin: 18px 0 6px !important;
  padding: 0 8px !important;
}
.nav-item {
  font-size: var(--fs-body-sm) !important;
  padding: 7px 10px !important;
  border-radius: 5px !important;
  color: var(--text-2) !important;
  transition: background 0.1s, color 0.1s !important;
  gap: 10px !important;
}
.nav-item:hover {
  background: rgba(255,255,255,0.03) !important;
  color: var(--text) !important;
}
.nav-item.active {
  background: rgba(255,255,255,0.05) !important;
  color: var(--text) !important;
}
.nav-icon { opacity: 0.7; }
.nav-item.active .nav-icon { opacity: 1; }

/* User chip at bottom */
.user-chip {
  padding: 10px 6px !important;
  border-top: 1px solid var(--hairline);
}

/* ─── People grid tiles — softer hairline, more breathing room ── */
.person-tile {
  border-radius: 10px !important;
  padding: 16px 18px !important;
  transition: all 0.12s !important;
}
.person-tile:hover {
  border-color: var(--hairline-strong) !important;
  background: rgba(255,255,255,0.025) !important;
}
.person-name { font-size: 14px !important; font-weight: 500 !important; }
.person-role { font-size: 11px !important; color: var(--text-3) !important; margin-top: 3px !important; }

/* ─── Inputs / textareas / selects ────────────────────────────── */
input[type="text"], input[type="email"], input[type="password"], input[type="number"],
input[type="search"], input[type="date"], textarea, select {
  background: var(--bg) !important;
  border: 1px solid var(--hairline-strong) !important;
  color: var(--text) !important;
  border-radius: 6px !important;
  font-family: inherit !important;
  transition: border-color 0.12s !important;
}
input:focus, textarea:focus, select:focus {
  border-color: var(--text-3) !important;
  outline: none !important;
}

/* ─── Collapsible heads — refined hover, mono labels ─────────── */
.collapsible-head {
  padding: 16px 0 !important;
  margin-top: 4px;
  transition: color 0.12s;
}
/* Normalize the inline margin-top on settings.html collapsibles. The page
   has a mix of 32px and 36px inline values; this clamps them all to one
   consistent rhythm so the sections feel like a single ladder. */
main.content > .collapsible[style*="margin-top"] {
  margin-top: 24px !important;
}

/* ===== Settings page redesign — compress + brighten ============
   Peter flagged the settings page as "ugly, complicated, hard to read"
   on Jun 15. This block tightens vertical rhythm, brightens muted
   greys, and increases label/sub legibility. Scoped to .settings-content
   so it doesn't touch other pages that share .collapsible / .setup-row. */
.settings-content {
  max-width: 880px !important;
}

/* Page header sits closer to first section. */
.settings-content .page-header {
  margin-bottom: 12px;
}

/* Tighten collapsible spacing dramatically (was 24px, now 8px) so the
   page is browseable as a list, not a series of "rooms". */
.settings-content > .collapsible[style*="margin-top"] {
  margin-top: 4px !important;
}
.settings-content > .lbl {
  margin-top: 14px !important;
}

/* Collapsible heads — bigger, brighter, more clickable-looking. */
.settings-content .collapsible-head {
  padding: 12px 0 !important;
  border-top-color: rgba(255, 255, 255, 0.10) !important;
}
.settings-content .collapsible-head .lbl {
  font-size: var(--fs-caption) !important;
  color: var(--text-2) !important;        /* was --text-4 — lifted two steps */
  letter-spacing: 0.18em !important;
  font-weight: 500 !important;
}
.settings-content .collapsible-head:hover .lbl {
  color: var(--text) !important;
}
.settings-content .collapsible-head::after {
  color: var(--text-3) !important;
  font-size: 18px !important;
}

/* Brighten the muted body text + helper subs throughout settings. */
.settings-content .integration-sub,
.settings-content .setup-card-sub,
.settings-content .hint {
  color: var(--text-2) !important;        /* was --text-3/4 */
}

/* Compress + brighten setup-cards (BILLING + WORKSPACE summary tiles). */
.settings-content .setup-grid {
  gap: 10px !important;
  margin-top: 8px !important;
}
.settings-content .setup-card {
  padding: 12px 14px !important;
  background: rgba(255, 255, 255, 0.025) !important;
  border-color: rgba(255, 255, 255, 0.10) !important;
}
.settings-content .setup-card .lbl {
  font-size: var(--fs-tiny) !important;
  color: var(--text-3) !important;
  margin-bottom: 6px !important;
}
.settings-content .setup-card-val {
  font-size: 16px !important;
  color: var(--text) !important;
  font-weight: 500 !important;
}
.settings-content .setup-card-sub {
  font-size: 11.5px !important;
  margin-top: 3px !important;
}

/* Tighter setup-rows (toggle rows). */
.settings-content .setup-row {
  padding: 10px 0 !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.05) !important;
  font-size: var(--fs-body-sm) !important;
}
.settings-content .setup-row:last-child {
  border-bottom: none !important;
}
.settings-content .setup-row > span:first-child {
  color: var(--text) !important;
  font-weight: 400;
}
.settings-content .integration-name {
  font-size: var(--fs-body-sm) !important;
  color: var(--text) !important;
  font-weight: 500;
  display: block;
}
.settings-content .integration-sub {
  font-size: 11.5px !important;
  line-height: 1.55 !important;
  margin-top: 2px;
  display: block;
}

/* Brighter integration-help collapsibles (those "How do I connect this?" rows). */
.settings-content .integration-help summary {
  color: var(--text-3) !important;
  padding: 8px 0 !important;
  font-size: var(--fs-caption) !important;
}
.settings-content .integration-help summary:hover {
  color: var(--text) !important;
}
.settings-content .integration-help ol {
  font-size: var(--fs-caption) !important;
  color: var(--text-2) !important;
  line-height: 1.65 !important;
}

/* Toggle pills — brighten the "off" state so it doesn't look dead. */
.settings-content .toggle {
  background: rgba(255, 255, 255, 0.10) !important;
}
.settings-content .toggle.on {
  background: var(--text) !important;
}

/* ===== Employee add-modal drop zone ===== */
.employee-drop-zone {
  border: 1px dashed rgba(255, 255, 255, 0.18);
  border-radius: 7px;
  padding: 14px 16px;
  text-align: center;
  cursor: pointer;
  transition: border-color 0.12s, background 0.12s;
  font-size: 12.5px;
  color: var(--text-2);
  user-select: none;
}
.employee-drop-zone:hover,
.employee-drop-zone.drag-over {
  border-color: var(--text-3);
  background: rgba(255, 255, 255, 0.03);
}

/* "Add to Jedah" tip banner on Candidates + Team pages. Subtle hairline
   panel that points users at the Chrome extension without taking real
   estate from the main list. */
.add-to-jedah-hint {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 11px 14px;
  margin: 0 0 18px;
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 6px;
  font-size: var(--fs-caption);
  color: var(--text-2);
  line-height: 1.6;
}
.add-to-jedah-hint-icon {
  font-size: 14px;
  line-height: 1.4;
  flex-shrink: 0;
}
.add-to-jedah-hint b {
  color: var(--text);
  font-weight: 500;
}
.collapsible-head:hover {
  color: var(--text);
}
.collapsible-head:hover .lbl {
  color: var(--text-2) !important;
}
.collapsible-head .lbl {
  transition: color 0.12s;
}

/* ─── Content layout — wider, more whitespace ────────────────── */
.content {
  padding: 40px 48px !important;
  width: 100%;
  max-width: 1100px;
  margin-left: auto;
  margin-right: auto;
}
.content-wide { max-width: 1280px !important; }
@media (max-width: 720px) {
  .content { padding: 24px 20px !important; }
}

/* ─── Hint footers — softer, mono ──────────────────────────── */
.hint {
  font-family: 'IBM Plex Mono', ui-monospace, monospace !important;
  font-size: 10px !important;
  letter-spacing: 0.12em !important;
  color: var(--text-4) !important;
  text-transform: uppercase;
  margin-top: 40px !important;
  padding-top: 20px;
  border-top: 1px solid var(--hairline);
}

/* ─── Profile hero names — match the page-title hero treatment ── */
.cand-name, .emp-name {
  font-size: 36px !important;
  font-weight: 400 !important;
  letter-spacing: -0.03em !important;
  line-height: 1.1 !important;
  color: var(--text);
}
.cand-sub, .profile-hero-meta {
  font-size: var(--fs-body-sm) !important;
  color: var(--text-2) !important;
  margin-top: 6px !important;
}
@media (max-width: 720px) {
  .cand-name, .emp-name { font-size: 28px !important; }
}

/* Big alignment score in employee profile — mono numeric. */
.profile-score-num {
  font-family: 'IBM Plex Mono', ui-monospace, monospace !important;
  font-size: var(--fs-display-xl) !important;
  font-weight: 300 !important;
  letter-spacing: -0.02em !important;
}
.profile-score-lbl {
  font-family: 'IBM Plex Mono', ui-monospace, monospace !important;
  font-size: 10px !important;
  letter-spacing: 0.22em !important;
  color: var(--text-4) !important;
  text-transform: uppercase;
}

/* Section header (h2) inside pages — slightly bigger than legacy. */
.section-h h2, h2 {
  font-size: 18px !important;
  font-weight: 500 !important;
  letter-spacing: -0.015em !important;
  color: var(--text);
}

/* ─── Granular hovers — kill block-wide background fills ──────────
   Previous pass had .card:hover, .person-tile:hover, .list-row:hover
   setting backgrounds, which lit up the whole container under your
   cursor. Override all of those to a subtle border-only change so
   only the *specific* clickable child gets highlighted. */
.card:hover,
.person-tile:hover,
.list-row:hover,
.template-card:hover,
.rubric-active:hover,
.interview-row:hover,
.compare-pick-row:hover,
.compose-row:hover {
  background: transparent !important;
}
.card:hover,
.person-tile:hover,
.template-card:hover,
.rubric-active:hover {
  border-color: var(--hairline-strong) !important;
  transform: none !important;
}

/* Names and titles inside blocks brighten on direct hover. */
.person-tile .person-name,
.list-row .pri,
.list-row .name,
.compose-row .compose-name,
.template-name,
.rubric-active-name {
  transition: color 0.12s !important;
}
.person-tile .person-name:hover,
.list-row .pri:hover,
.list-row .name:hover,
.compose-row .compose-name:hover,
.template-name:hover,
.rubric-active-name:hover {
  color: var(--text) !important;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
  text-decoration-color: var(--text-3) !important;
}

/* Ghost buttons inside cards — only the button itself flickers, not the card. */
.card .btn,
.person-tile .btn,
.list-row .btn {
  transition: border-color 0.12s, color 0.12s, background 0.12s !important;
}

/* Arrows (→) inside list rows brighten on hover. */
.list-row .arrow,
.interview-row .arrow {
  color: var(--text-4);
  transition: color 0.12s, transform 0.12s;
}
.list-row:hover .arrow,
.interview-row:hover .arrow {
  /* Only the arrow shifts — block stays still. */
  color: var(--text) !important;
  transform: translateX(2px);
}

/* Nav items keep their subtle background hover — they're not blocks
   containing other interactive children, so block hover is fine here. */

/* ═══════════════════════════════════════════════════════════════
   MOBILE PASS — narrow-viewport layout
   Sidebar collapses behind a hamburger; content takes full width;
   tiles stack; padding tightens. Activates under 1024px.
   ═══════════════════════════════════════════════════════════════ */

/* Hamburger button — only appears on mobile. JS in sidebar-tier.js
   appends one to the page header on narrow viewports. */
.jedah-hamburger {
  display: none;
  position: fixed;
  top: 14px;
  left: 14px;
  z-index: 9999;
  width: 40px;
  height: 40px;
  background: var(--bg-2);
  border: 1px solid var(--hairline-strong);
  border-radius: 8px;
  cursor: pointer;
  padding: 0;
  align-items: center;
  justify-content: center;
}
.jedah-hamburger span {
  display: block;
  width: 18px;
  height: 1.5px;
  background: var(--text);
  position: relative;
}
.jedah-hamburger span::before,
.jedah-hamburger span::after {
  content: "";
  position: absolute;
  left: 0;
  width: 18px;
  height: 1.5px;
  background: var(--text);
}
.jedah-hamburger span::before { top: -6px; }
.jedah-hamburger span::after  { top:  6px; }

/* Backdrop that dims the page when the sidebar drawer is open. */
.jedah-sidebar-backdrop {
  display: none;
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.55);
  z-index: 9997;
}

/* Sidebar drawer activates at tablet/laptop breakpoint. */
@media (max-width: 1024px) {
  /* Hamburger visible. */
  .jedah-hamburger { display: flex; }

  /* Shell becomes a single column; sidebar slides in over content. */
  .shell {
    grid-template-columns: 1fr !important;
  }

  /* Sidebar becomes a fixed off-canvas drawer. */
  .sidebar {
    position: fixed !important;
    top: 0;
    left: 0;
    bottom: 0;
    width: 80vw;
    max-width: 280px;
    transform: translateX(-100%);
    transition: transform 0.18s ease;
    z-index: 9998;
    border-right: 1px solid var(--hairline-strong) !important;
    overflow-y: auto;
  }
  body.sidebar-open .sidebar { transform: translateX(0); }
  body.sidebar-open .jedah-sidebar-backdrop { display: block; }

  /* Push the content out from under the (hidden) sidebar. */
  .content,
  .content-wide {
    padding: 64px 18px 32px !important;
    max-width: 100% !important;
  }
}

/* Phone-specific layout adjustments (narrower than tablet). */
@media (max-width: 720px) {
  /* Page header — stack title, button, and meta. */
  .page-header {
    flex-direction: column;
    align-items: flex-start !important;
    gap: 12px;
    margin-bottom: 28px !important;
    padding-bottom: 18px !important;
  }
  .page-title { font-size: 28px !important; }
  .page-sub   { font-size: var(--fs-caption) !important; }
  .cand-name, .emp-name { font-size: var(--fs-display) !important; }

  /* Tiles + grids stack. */
  .people-grid-simple,
  .stats-row,
  .setup-grid,
  .perf-grid-2,
  .dim-grid,
  .compose-list {
    grid-template-columns: 1fr !important;
    gap: 10px !important;
  }
  .stat-card, .setup-card { padding: 14px 16px; }

  /* Person tiles — slightly tighter on phone. */
  .person-tile { padding: 12px 14px !important; }

  /* Cards trim horizontal padding. */
  .card { padding: 14px !important; }

  /* Tables overflow horizontally instead of breaking the layout. */
  .perf-table,
  table {
    display: block;
    overflow-x: auto;
    white-space: nowrap;
    max-width: 100%;
  }

  /* Modals: full-screen on mobile so users can actually use the form. */
  .modal {
    max-width: 100% !important;
    margin: 0 !important;
    min-height: 100vh;
    border-radius: 0 !important;
  }

  /* Page tabs scroll horizontally if they overflow. */
  .page-tabs,
  .perf-tabs {
    overflow-x: auto;
    white-space: nowrap;
    flex-wrap: nowrap !important;
  }

  /* Filter chips wrap to a second line gracefully. */
  .filter-row { flex-wrap: wrap; gap: 6px !important; }

  /* Buttons shrink a touch. */
  .btn { padding: 8px 14px !important; font-size: var(--fs-caption) !important; }

  /* Hide the chevron in collapsible heads' :after if it overflows. */
  .collapsible-head { padding: 14px 4px !important; }
}

/* Even smaller screens — 380px iPhone SE etc — extra tightening. */
@media (max-width: 400px) {
  .content, .content-wide { padding: 60px 14px 24px !important; }
  .page-title { font-size: var(--fs-display) !important; }
  .stat-num, .setup-card-val { font-size: 22px !important; }
  .big-num { font-size: 44px !important; }
}

/* ===== Devil's Advocate panel ===========================================
   Counterweight UI on candidate.html. Visually distinct from the deep-analysis
   block (which is "the case for") — slightly warmer tone, smarter typography,
   so audience reads it as a different *kind* of analysis, not a duplicate.
*/
.devils-advocate-section { margin-bottom: 28px; }

.da-cta {
  background: rgba(40, 28, 28, 0.35);
  border: 1px solid rgba(200, 130, 130, 0.22);
  border-radius: 10px;
  padding: 18px 20px;
  display: flex;
  gap: 16px;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
}
.da-cta-text { font-size: var(--fs-body-sm); color: var(--text-2); line-height: 1.6; max-width: 560px; }
.da-cta-text em { color: var(--text); font-style: italic; font-weight: 500; }
.da-cta button { white-space: nowrap; }
.da-empty {
  font-size: var(--fs-caption); color: var(--text-3); padding: 18px 20px;
  background: var(--bg-2); border-radius: 8px; line-height: 1.55;
}
.da-loading {
  font-size: var(--fs-body-sm); color: var(--text-2); padding: 22px 20px;
  background: var(--bg-2); border-radius: 8px;
}

.da-analysis {
  background: rgba(30, 22, 22, 0.55);
  border: 1px solid rgba(200, 130, 130, 0.18);
  border-radius: 12px;
  padding: 24px 26px 18px;
}
.da-headline {
  display: flex; justify-content: space-between; align-items: flex-start;
  gap: 16px; margin-bottom: 22px; padding-bottom: 18px;
  border-bottom: 1px solid var(--hairline);
}
.da-headline-text {
  font-size: 18px; font-weight: 500; line-height: 1.4; color: var(--text);
  letter-spacing: -0.2px; flex: 1;
}
.da-verdict {
  font-family: "IBM Plex Mono", monospace; font-size: 11px;
  letter-spacing: 0.14em; font-weight: 500; padding: 6px 10px;
  border-radius: 4px; white-space: nowrap; flex-shrink: 0;
}
.da-verdict-weakno { background: rgba(220, 130, 130, 0.16); color: #dc8282; }
.da-verdict-leanno { background: rgba(220, 170, 130, 0.16); color: #dcb482; }
.da-verdict-qualyes { background: rgba(130, 200, 145, 0.14); color: #78c891; }
.da-verdict-even { background: rgba(180, 180, 180, 0.12); color: var(--text-2); }

.da-block { margin-top: 22px; }
.da-block:first-child { margin-top: 0; }
.da-block-lbl {
  font-family: "IBM Plex Mono", monospace; font-size: 10px;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--text-3); margin-bottom: 10px; font-weight: 500;
}
.da-item {
  background: rgba(40, 28, 28, 0.30);
  border-left: 3px solid rgba(200, 130, 130, 0.4);
  border-radius: 4px;
  padding: 12px 14px;
  margin-bottom: 8px;
}
.da-item.da-sev-high   { border-left-color: #dc8282; background: rgba(220, 130, 130, 0.10); }
.da-item.da-sev-med    { border-left-color: rgba(220, 170, 130, 0.6); }
.da-item.da-sev-low    { border-left-color: rgba(180, 180, 180, 0.4); }
.da-item-head { display: flex; gap: 10px; align-items: center; margin-bottom: 6px; }
.da-sev-pill {
  font-family: "IBM Plex Mono", monospace; font-size: 9px;
  letter-spacing: 0.14em; padding: 2px 6px; border-radius: 3px;
  background: rgba(255,255,255,0.06); color: var(--text-3); flex-shrink: 0;
}
.da-sev-high .da-sev-pill { background: rgba(220, 130, 130, 0.18); color: #dc8282; }
.da-sev-med  .da-sev-pill { background: rgba(220, 170, 130, 0.16); color: #dcb482; }
.da-item-point { font-size: 14px; font-weight: 500; color: var(--text); line-height: 1.4; }
.da-item-ev { font-size: var(--fs-caption); color: var(--text-2); line-height: 1.55; padding-left: 0; }
.da-item-ev b { color: var(--text-3); font-weight: 500; font-family: "IBM Plex Mono", monospace; font-size: 10px; letter-spacing: 0.06em; }

.da-prose { font-size: var(--fs-body-sm); color: var(--text-2); line-height: 1.65; }
.da-list {
  list-style: disc; padding-left: 22px; margin: 0;
  font-size: var(--fs-body-sm); color: var(--text-2); line-height: 1.6;
}
.da-list li { margin-bottom: 6px; }
.da-list-ol { list-style: decimal; }
.da-counter {
  margin-top: 22px; padding: 16px 18px;
  background: rgba(120, 200, 145, 0.06);
  border: 1px solid rgba(120, 200, 145, 0.18);
  border-radius: 8px;
}
.da-counter .da-block-lbl { color: rgba(120, 200, 145, 0.8); }

.da-foot {
  display: flex; justify-content: space-between; align-items: center;
  margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--hairline);
  font-family: "IBM Plex Mono", monospace; font-size: 10px;
  color: var(--text-3); letter-spacing: 0.04em;
}
.da-regen {
  background: transparent; border: 1px solid var(--hairline);
  color: var(--text-3); font-family: inherit; font-size: 10px;
  padding: 4px 10px; border-radius: 3px; cursor: pointer;
  transition: all 0.12s;
}
.da-regen:hover { border-color: var(--text-3); color: var(--text); }

/* ===== Person Dimensions — 8-factor framework panel ==================
   The deepest, most philosophical read Jedah produces. Visually distinct
   from deep-analysis (green) and devil's advocate (warm red) — uses a
   neutral high-contrast card style with a subtle accent so it reads as
   "the foundational analysis" rather than competing with the others.
*/
.pd-section { margin-bottom: 28px; }

.pd-cta {
  background: rgba(28, 32, 38, 0.45);
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 10px;
  padding: 20px 22px;
  display: flex;
  gap: 18px;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
}
.pd-cta-text { font-size: 14px; color: var(--text-2); line-height: 1.65; max-width: 620px; }
.pd-cta-text b { color: var(--text); }
.pd-cta button { white-space: nowrap; }

.pd-loading {
  background: var(--bg-2); padding: 24px 22px; border-radius: 8px;
  font-size: 14px; color: var(--text-2);
}
.pd-loading-sub { font-size: var(--fs-caption); color: var(--text-3); margin-top: 8px; }

.pd-analysis {
  background: rgba(28, 32, 38, 0.55);
  border: 1px solid rgba(255, 255, 255, 0.10);
  border-radius: 12px;
  padding: 26px 28px 20px;
}

.pd-headline {
  font-size: 18px;
  font-weight: 500;
  line-height: 1.45;
  color: var(--text);
  letter-spacing: -0.2px;
  margin-bottom: 18px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--hairline);
}

.pd-compat {
  background: rgba(255, 255, 255, 0.04);
  border-left: 3px solid var(--accent, #b0b0b0);
  padding: 14px 18px;
  margin-bottom: 22px;
  border-radius: 4px;
  font-size: 14px;
  line-height: 1.65;
  color: var(--text-2);
}
.pd-compat-lbl {
  font-family: "IBM Plex Mono", monospace; font-size: 10px;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--text-3); margin-bottom: 6px; font-weight: 500;
}

.pd-top { display: flex; gap: 22px; flex-wrap: wrap; margin-bottom: 24px; }
.pd-top-block { flex: 1; min-width: 240px; }
.pd-top-lbl {
  font-family: "IBM Plex Mono", monospace; font-size: 10px;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--text-3); margin-bottom: 8px; font-weight: 500;
}
.pd-chip {
  display: inline-block; padding: 6px 12px;
  border-radius: 4px; font-size: var(--fs-caption); font-weight: 500;
  margin: 0 6px 6px 0;
}
.pd-chip-good { background: rgba(120, 200, 145, 0.14); color: #78c891; }
.pd-chip-warn { background: rgba(220, 130, 130, 0.14); color: #dc8282; }

.pd-dims-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 14px;
  margin-bottom: 22px;
}
@media (min-width: 900px) {
  .pd-dims-grid { grid-template-columns: 1fr 1fr; }
}

.pd-dim {
  background: rgba(0, 0, 0, 0.25);
  border: 1px solid rgba(255, 255, 255, 0.06);
  border-radius: 8px;
  padding: 16px 18px;
}
.pd-dim-head {
  display: flex; justify-content: space-between; align-items: center;
  gap: 12px; margin-bottom: 10px;
}
.pd-dim-name {
  font-size: var(--fs-h3); font-weight: 600; color: var(--text);
  letter-spacing: -0.1px;
}
.pd-dim-meta { display: flex; gap: 8px; align-items: center; flex-shrink: 0; }
.pd-dim-score {
  font-family: "IBM Plex Mono", monospace; font-size: var(--fs-caption);
  padding: 3px 8px; border-radius: 3px; font-weight: 500;
}
.pd-score-exceptional { background: rgba(120, 200, 145, 0.20); color: #78c891; }
.pd-score-strong      { background: rgba(120, 200, 145, 0.12); color: #a0d4b3; }
.pd-score-solid       { background: rgba(180, 180, 180, 0.12); color: var(--text); }
.pd-score-concern     { background: rgba(220, 170, 130, 0.16); color: #dcb482; }
.pd-score-gap         { background: rgba(220, 130, 130, 0.16); color: #dc8282; }
.pd-score-na          { background: rgba(180, 180, 180, 0.06); color: var(--text-3); }
.pd-dim-conf {
  font-family: "IBM Plex Mono", monospace; font-size: 9px;
  letter-spacing: 0.14em; padding: 3px 7px; border-radius: 3px;
}
.pd-conf-high { background: rgba(255, 255, 255, 0.10); color: var(--text); }
.pd-conf-med  { background: rgba(255, 255, 255, 0.06); color: var(--text-2); }
.pd-conf-low  { background: rgba(255, 255, 255, 0.04); color: var(--text-3); }

.pd-dim-read {
  font-size: 14px; color: var(--text); line-height: 1.6;
  margin-bottom: 10px;
}
.pd-dim-ev-lbl {
  font-family: "IBM Plex Mono", monospace; font-size: 9px;
  letter-spacing: 0.14em; color: var(--text-3); margin-bottom: 4px;
  font-weight: 500;
}
.pd-dim-ev ul {
  margin: 0; padding-left: 18px; font-size: var(--fs-body-sm);
  color: var(--text-2); line-height: 1.55;
}
.pd-dim-ev li { margin-bottom: 4px; }
.pd-dim-probe {
  margin-top: 10px; font-size: var(--fs-caption); color: var(--text-3);
  line-height: 1.55; padding-top: 8px;
  border-top: 1px dashed var(--hairline);
}
.pd-dim-probe b {
  font-family: "IBM Plex Mono", monospace; font-size: 9px;
  letter-spacing: 0.14em; color: var(--text-3); font-weight: 500;
}

.pd-next {
  background: rgba(255, 255, 255, 0.04);
  border-radius: 8px;
  padding: 16px 20px;
  margin-bottom: 20px;
}
.pd-next-lbl {
  font-family: "IBM Plex Mono", monospace; font-size: 10px;
  letter-spacing: 0.18em; color: var(--text-3);
  margin-bottom: 8px; font-weight: 500; text-transform: uppercase;
}
.pd-next ol {
  margin: 0; padding-left: 22px;
  font-size: var(--fs-body-sm); color: var(--text); line-height: 1.65;
}
.pd-next li { margin-bottom: 6px; }

.pd-foot {
  display: flex; justify-content: space-between; align-items: center;
  margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--hairline);
  font-family: "IBM Plex Mono", monospace; font-size: 10px;
  color: var(--text-3); letter-spacing: 0.04em;
}
.pd-regen {
  background: transparent; border: 1px solid var(--hairline);
  color: var(--text-3); font-family: inherit; font-size: 10px;
  padding: 4px 10px; border-radius: 3px; cursor: pointer;
  transition: all 0.12s;
}
.pd-regen:hover { border-color: var(--text-3); color: var(--text); }

/* ===== Zoom-screen-share legibility floor ========================
   Bumps small fonts globally so the app reads cleanly on a shared
   screen. Targets the specific contexts where 11–12px text appears
   without breaking layouts that depend on tight typography.
   Toggle off by removing this block — nothing else depends on it.
*/

/* Empty-state hints + helper-text under section labels */
.lbl + p, p.hint {
  font-size: 13.5px !important;
  line-height: 1.65 !important;
}

/* Section headers (the .lbl monospace category labels) */
.lbl, .compose-title, .responses-title {
  font-size: 12.5px !important;
}

/* Inputs + textareas + selects across the app */
input[type="text"], input[type="email"], input[type="password"], input[type="number"],
input[type="search"], input[type="tel"], input[type="url"], textarea, select {
  font-size: 14.5px !important;
}

/* Buttons everywhere */
.btn, button.btn, .btn-ghost, .btn-primary, .btn-small {
  font-size: 13.5px !important;
}

/* The mono "EVIDENCE / WHAT TO PROBE" sub-labels stay small (they
   benefit from being secondary), but the body text under them bumps. */
.pd-dim-read, .deep-summary, .deep-point, .da-item-point,
.compose-question, .compose-context.warn,
.resp-name, .resp-theme,
.checkin-tight .ck-q, .checkin-tight .ck-theme {
  font-size: 14px !important;
  line-height: 1.6 !important;
}

/* Tight number columns on people-grid / dashboard tiles */
.person-row .role, .person-row .meta,
.emp-card .meta, .candidate-row .meta {
  font-size: var(--fs-body-sm) !important;
}

/* ===== Person Dimensions — alignment pills (when company side on file) ===== */
.pd-align {
  margin-top: 10px;
  padding: 10px 14px;
  border-radius: 6px;
  font-size: 12.5px;
  line-height: 1.55;
}
.pd-align-aligned { background: rgba(120, 200, 145, 0.10); border-left: 3px solid rgba(120, 200, 145, 0.7); }
.pd-align-person  { background: rgba(220, 170, 130, 0.10); border-left: 3px solid rgba(220, 170, 130, 0.7); }
.pd-align-company { background: rgba(130, 170, 220, 0.10); border-left: 3px solid rgba(130, 170, 220, 0.7); }
.pd-align-unknown { background: rgba(180, 180, 180, 0.06); border-left: 3px solid rgba(180, 180, 180, 0.4); }
.pd-align-head { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; }
.pd-align-pill {
  font-family: "IBM Plex Mono", monospace; font-size: 10px;
  letter-spacing: 0.14em; font-weight: 500;
  padding: 3px 8px; border-radius: 3px;
  background: rgba(255,255,255,0.08); color: var(--text);
}
.pd-align-aligned .pd-align-pill { background: rgba(120, 200, 145, 0.18); color: #78c891; }
.pd-align-person  .pd-align-pill { background: rgba(220, 170, 130, 0.18); color: #dcb482; }
.pd-align-company .pd-align-pill { background: rgba(130, 170, 220, 0.18); color: #8aaadc; }
.pd-align-meta { font-family: "IBM Plex Mono", monospace; font-size: 11px; color: var(--text-2); }
.pd-align-meta b { color: var(--text); font-weight: 500; }
.pd-align-friction { margin-top: 6px; color: var(--text-2); }

/* Same panel style for company-dimensions (.cd-section) — reuses .pd-* classes. */
.cd-section { margin-bottom: 28px; }

/* ===== Signout link in the sidebar nav-bottom ===== */
.signout-link {
  display: block;
  font-size: var(--fs-caption);
  color: var(--text-3);
  padding: 6px 8px 2px;
  text-decoration: none;
  border-top: 1px solid var(--hairline);
  margin-top: 4px;
  transition: color 0.12s;
}
.signout-link:hover { color: var(--text); }
.signout-link:focus { outline: 1px dashed var(--hairline-strong); outline-offset: 2px; }

/* ===== UI polish — empty states + hover + loading ============================
   Final-pass demo polish:
   - Empty-state messages get a proper card wrapper (graceful "no data yet")
   - Card-like list rows get a subtle lift on hover (feels responsive on shared screens)
   - Loading text uses higher-contrast color so it reads on Zoom screen-share
   - Modal action buttons standardized: ghost-left, primary-right
*/

/* Empty-state — generic. Apply class="empty-state" to any "no data" message. */
.empty-state {
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 10px;
  padding: 40px 28px;
  text-align: center;
  color: var(--text-2);
  font-size: 14px;
  line-height: 1.6;
  max-width: 540px;
  margin: 24px auto;
}
.empty-state b { color: var(--text); font-weight: 600; }
.empty-state .empty-cta { margin-top: 18px; }

/* Promote bare "no rubrics yet" / "no JDs yet" style blurbs to look like cards
   without requiring per-page HTML edits. Targets the common pattern. */
.rubric-list-empty, .jd-list-empty, .question-list-empty {
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 10px;
  padding: 40px 28px;
  text-align: center;
  color: var(--text-2);
  font-size: 14px;
  line-height: 1.6;
}

/* Loading-text contrast — was var(--text-4), now reads on Zoom share. */
.page-sub:has(span:empty), .page-sub {
  /* Don't force-override page-sub everywhere — just the ones with "Loading…" */
}
[data-loading-text], .loading-line {
  color: var(--text-2) !important;
  font-size: 14px !important;
}

/* Subtle hover lift on clickable rows / cards — makes the app feel responsive
   on a shared screen. Only applies to surfaces that ARE clickable (have href
   or data-clickable). Static cards (like .pricing-card on marketing site) keep
   their static state. */
.person-row[href], .candidate-row[href], .emp-card[href],
.rubric-row[href], .jd-row[href], .question-row[href],
a.compose-row, a.resp-row, a.cand-row {
  transition: background 0.14s ease, border-color 0.14s ease, transform 0.14s ease;
}
.person-row[href]:hover, .candidate-row[href]:hover, .emp-card[href]:hover,
.rubric-row[href]:hover, .jd-row[href]:hover, .question-row[href]:hover,
a.compose-row:hover, a.resp-row:hover, a.cand-row:hover {
  background: rgba(255, 255, 255, 0.025);
  border-color: var(--hairline-strong, rgba(255,255,255,0.18));
}

/* Modal action button order — primary right, ghost left. The .modal-actions
   container should always justify-end with gap. */
.modal-actions, .modal-foot, .modal .btn-row {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 24px;
}
.modal-actions .btn-primary, .modal-foot .btn-primary, .modal .btn-row .btn-primary {
  order: 2;
}
.modal-actions .btn-ghost, .modal-foot .btn-ghost, .modal .btn-row .btn-ghost {
  order: 1;
}

/* Reused .integration-card style for "Coming next" on integrations page —
   matches the rest of the page. */
.integration-card .integration-role {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.12em;
  color: var(--text-3);
  text-transform: uppercase;
  margin: 4px 0 10px;
}

/* ===== UI polish round 2 — inputs, tabs, focus, breadcrumbs ============= */

/* Form inputs — unified focus state across the entire app.
   Was inconsistent: some inputs had focus rings, others didn't, several
   used different border colors on focus. Now: subtle white-tint ring,
   subtle border-color change, no color shift. */
input[type="text"]:focus,
input[type="email"]:focus,
input[type="password"]:focus,
input[type="number"]:focus,
input[type="search"]:focus,
input[type="tel"]:focus,
input[type="url"]:focus,
input[type="date"]:focus,
input[type="time"]:focus,
input[type="datetime-local"]:focus,
textarea:focus,
select:focus {
  outline: none;
  border-color: var(--text-2) !important;
  box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.06);
}

/* Calendar / time / date inputs — scheduling page polish.
   Native date/time pickers have inconsistent dark-theme rendering; force them
   to match the rest of the form-field aesthetic. */
input[type="date"],
input[type="time"],
input[type="datetime-local"],
.sch-time,
.sch-date {
  background: var(--bg-2) !important;
  border: 1px solid var(--hairline-strong, var(--hairline)) !important;
  color: var(--text) !important;
  padding: 10px 12px !important;
  border-radius: 6px !important;
  font-family: inherit !important;
  font-size: 14px !important;
  color-scheme: dark; /* tells the browser to render the picker calendar dark */
}
input[type="date"]:hover,
input[type="time"]:hover,
input[type="datetime-local"]:hover,
.sch-time:hover,
.sch-date:hover {
  border-color: var(--text-3) !important;
}

/* Button focus rings — keyboard nav a11y + clean visual.
   We deliberately keep these subtle so they don't show on mouse-click. */
.btn:focus-visible,
button.btn:focus-visible,
.btn-primary:focus-visible,
.btn-ghost:focus-visible {
  outline: 2px solid var(--text);
  outline-offset: 2px;
}
.nav-item:focus-visible {
  outline: 1px dashed var(--text-3);
  outline-offset: -2px;
}

/* Tabs — unified style across interview / rubric / settings / interviewer
   pages. Was three slightly-different tab implementations. */
.tabs {
  display: flex;
  gap: 4px;
  border-bottom: 1px solid var(--hairline);
  margin: 18px 0 22px;
  padding: 0;
  overflow-x: auto;
}
.tabs .tab,
.tab {
  background: transparent;
  border: 0;
  border-bottom: 2px solid transparent;
  color: var(--text-3);
  font-family: inherit;
  font-size: 13.5px;
  font-weight: 500;
  letter-spacing: -0.05px;
  padding: 12px 18px;
  cursor: pointer;
  white-space: nowrap;
  transition: color 0.12s, border-color 0.12s;
  margin-bottom: -1px;
}
.tabs .tab:hover,
.tab:hover {
  color: var(--text-2);
}
.tabs .tab.active,
.tab.active {
  color: var(--text);
  border-bottom-color: var(--text);
}
.tabs .tab:focus-visible,
.tab:focus-visible {
  outline: none;
  color: var(--text);
}

/* Page header — consistent spacing across every page.
   Was: each page had a slightly different bottom margin / padding. */
.page-header {
  padding-bottom: 22px;
  margin-bottom: 24px;
  border-bottom: 1px solid var(--hairline);
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  gap: 16px;
  flex-wrap: wrap;
}
.page-title {
  font-size: 22px;
  font-weight: 500;
  letter-spacing: -0.3px;
  color: var(--text);
  margin: 0 0 4px;
}
.page-sub {
  font-size: var(--fs-body-sm);
  color: var(--text-3);
  line-height: 1.55;
  margin: 0;
  max-width: 720px;
}

/* Breadcrumb — pulled from the bunch of inline-styled breadcrumbs on
   candidate.html, employee.html, etc. Now a real class. */
.breadcrumb {
  font-size: var(--fs-caption);
  color: var(--text-3);
  font-family: 'IBM Plex Mono', monospace;
  letter-spacing: 0.04em;
  margin-bottom: 18px;
}
.breadcrumb a {
  color: var(--text-3);
  text-decoration: none;
  transition: color 0.12s;
}
.breadcrumb a:hover { color: var(--text); text-decoration: underline; }
.breadcrumb .sep {
  margin: 0 8px;
  color: var(--hairline-strong, var(--hairline));
}

/* Framework blockquote softening — was border-left 2px solid var(--text)
   which was too stark. */
blockquote {
  border-left: 2px solid var(--text-3);
  background: rgba(255, 255, 255, 0.03);
  padding: 14px 18px;
  margin: 16px 0;
  font-size: 14px;
  line-height: 1.65;
  color: var(--text-2);
  border-radius: 0 6px 6px 0;
}
blockquote cite {
  display: block;
  margin-top: 8px;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 11px;
  letter-spacing: 0.08em;
  color: var(--text-3);
  font-style: normal;
}

/* Labels — uppercase mono "section labels" used everywhere */
.lbl {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 11px;
  font-weight: 500;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-3);
}
.lbl-mute { color: var(--text-4); }

/* ===== Dashboard compression — "Show all" pattern ============== */
.person-tile-extra { display: none; }
.people-grid-expanded .person-tile-extra { display: flex; }

.see-all-link {
  display: block;                         /* was inline-block — full row now */
  margin: 4px 0 32px;
  font-family: 'IBM Plex Mono', monospace;
  font-size: var(--fs-body-sm);                        /* bumped from 11 */
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text);                     /* was --text-3 (faint) — now full white */
  text-decoration: none;
  padding: 14px 18px;                     /* taller hit-area */
  background: rgba(255, 255, 255, 0.04);
  border: 1px solid var(--hairline-strong);
  border-radius: 8px;
  text-align: center;
  font-weight: 500;
  cursor: pointer;
  transition: color 0.12s, border-color 0.12s, background 0.12s, transform 0.12s;
}
.see-all-link:hover {
  color: var(--text);
  border-color: var(--text-2);
  background: rgba(255, 255, 255, 0.08);
  transform: translateY(-1px);
}
.see-all-link:active {
  transform: translateY(0);
}

/* ═════════════════════════════════════════════════════════════════
   DEEP COSMETIC CLEAN — Jun 15 2026
   Peter flagged the whole app as "annoying to read". This block
   polishes shared primitives across every page:
     · Inputs / textareas / selects — bigger focus rings, brighter
     · Cards — subtle inner glow, lifted borders
     · Modals — bigger, brighter dividers, tighter rhythm
     · Toggles — visible "off" state
     · Empty states — bigger headline, less dead space
     · Setup-cards — subtle gradient background
     · Status pills — color-coded badges with proper contrast
   ═════════════════════════════════════════════════════════════════ */

/* ─── Inputs ─────────────────────────────────────────────── */
input[type="text"],
input[type="email"],
input[type="password"],
input[type="number"],
input[type="search"],
input[type="tel"],
input[type="url"],
input[type="date"],
textarea,
select {
  background: rgba(255, 255, 255, 0.025);
  border: 1px solid var(--hairline-strong);
  color: var(--text);
  border-radius: 6px;
  transition: border-color 0.12s, background 0.12s, box-shadow 0.12s;
}
input:hover:not(:focus):not(:disabled),
textarea:hover:not(:focus):not(:disabled),
select:hover:not(:focus):not(:disabled) {
  border-color: var(--text-3);
}
input:focus,
textarea:focus,
select:focus {
  border-color: var(--text-2) !important;
  background: rgba(255, 255, 255, 0.04) !important;
  box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.06);
  outline: none;
}
input::placeholder,
textarea::placeholder {
  color: var(--text-4);
}

/* ─── Cards — subtle inner highlight ──────────────────────────── */
.card {
  background: var(--bg-2);
  border: 1px solid var(--hairline);
  border-radius: 8px;
  transition: border-color 0.12s, background 0.12s;
}
.card:hover {
  border-color: rgba(255, 255, 255, 0.12);
}

/* ─── Setup-cards — slight gradient so they're not flat ──────── */
.setup-card {
  background: linear-gradient(180deg, rgba(255, 255, 255, 0.025) 0%, rgba(255, 255, 255, 0.015) 100%);
  border: 1px solid var(--hairline);
  border-radius: 8px;
  padding: 16px 18px;
  transition: border-color 0.12s, background 0.12s;
}
.setup-card:hover {
  border-color: rgba(255, 255, 255, 0.13);
}

/* ─── Modals — bigger, more breathing room ───────────────────── */
.modal {
  background: var(--bg-2);
  border: 1px solid var(--hairline-strong);
  border-radius: 10px;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.55), 0 0 0 1px rgba(255, 255, 255, 0.03);
}
.modal-head {
  border-bottom: 1px solid var(--hairline-strong);
  padding: 20px 24px 18px;
}
.modal-title {
  font-size: 16px;
  font-weight: 600;
  letter-spacing: -0.2px;
}
.modal-sub {
  font-size: var(--fs-caption);
  color: var(--text-2);
  margin-top: 4px;
  line-height: 1.55;
}
.modal-close {
  color: var(--text-3);
  background: transparent;
  border: 0;
  font-size: 22px;
  line-height: 1;
  padding: 4px 10px;
  border-radius: 4px;
  transition: color 0.12s, background 0.12s;
}
.modal-close:hover {
  color: var(--text);
  background: rgba(255, 255, 255, 0.06);
}
.modal-actions {
  padding-top: 18px;
  margin-top: 18px;
  border-top: 1px solid var(--hairline);
}
.modal .field {
  margin-bottom: 14px;
}
.modal .field label {
  display: block;
  font-size: 11px;
  color: var(--text-2);
  margin-bottom: 6px;
  letter-spacing: 0.02em;
}
.modal .field input,
.modal .field textarea,
.modal .field select {
  width: 100%;
  padding: 10px 12px;
  font-size: var(--fs-body-sm);
  font-family: inherit;
}

/* ─── Toggles — make "off" visible ───────────────────────────── */
.toggle {
  background: rgba(255, 255, 255, 0.10);
  border: 1px solid var(--hairline-strong);
  transition: background 0.15s, border-color 0.15s;
}
.toggle:hover {
  background: rgba(255, 255, 255, 0.14);
}
.toggle.on {
  background: var(--text);
  border-color: var(--text);
}

/* ─── Empty states — louder + less awkward ───────────────────── */
.empty-state,
[id$="-empty"].card {
  padding: 56px 28px;
  text-align: center;
}
.empty-state h2,
.empty-state-title {
  font-size: var(--fs-h2);
  font-weight: 600;
  color: var(--text);
  margin-bottom: 8px;
}
.empty-state p,
.empty-state-sub {
  font-size: var(--fs-body-sm);
  color: var(--text-2);
  line-height: 1.6;
  max-width: 420px;
  margin: 0 auto 18px;
}

/* ─── Page headers — better hierarchy ────────────────────────── */
.page-title {
  font-size: 28px;
  font-weight: 600;
  letter-spacing: -0.5px;
  line-height: 1.15;
  color: var(--text);
}
.page-sub {
  font-size: var(--fs-body-sm);
  color: var(--text-2);
  margin-top: 6px;
  line-height: 1.55;
  max-width: 720px;
}

/* ─── Section labels (.lbl) — uniformly bigger + brighter ────── */
.lbl {
  font-family: 'IBM Plex Mono', monospace;
  font-size: var(--fs-mono);
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--text-3);
  font-weight: 500;
}

/* ─── List rows — better hover affordance ────────────────────── */
.list-row,
.candidate-row {
  border-bottom: 1px solid var(--hairline);
  transition: background 0.12s;
}
.list-row:hover,
.candidate-row:hover {
  background: rgba(255, 255, 255, 0.025);
}

/* ─── Status pills — color-coded ──────────────────────────────── */
.status-pill {
  display: inline-block;
  padding: 3px 10px;
  font-size: 10px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  font-weight: 500;
  border-radius: 11px;
  border: 1px solid;
}
.status-pill-good {
  color: var(--score-good);
  border-color: rgba(163, 217, 155, 0.30);
  background: rgba(163, 217, 155, 0.08);
}
.status-pill-warn {
  color: var(--score-warn);
  border-color: rgba(245, 201, 122, 0.30);
  background: rgba(245, 201, 122, 0.08);
}
.status-pill-flag {
  color: var(--score-flag);
  border-color: rgba(240, 138, 138, 0.30);
  background: rgba(240, 138, 138, 0.08);
}
.status-pill-mute {
  color: var(--text-3);
  border-color: var(--hairline-strong);
}

/* ─── Settings page — jump-to chip row at top ────────────────── */
/* Tightened so all 9 chips fit on one row on typical desktop widths,
   sits flush against the page header instead of floating in a void. */
.settings-jumpnav {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px;
  margin: 0 0 18px;
  padding: 8px 10px;
  background: rgba(255, 255, 255, 0.02);
  border: 1px solid var(--hairline);
  border-radius: 8px;
}
.settings-jumpnav-label {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 9px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--text-4);
  margin-right: 4px;
}
.settings-jumpnav-chip {
  display: inline-block;
  padding: 3px 9px;
  font-size: 11px;
  color: var(--text-2);
  background: transparent;
  border: 1px solid var(--hairline-strong);
  border-radius: 14px;
  cursor: pointer;
  text-decoration: none;
  white-space: nowrap;
  transition: all 0.12s;
}
.settings-jumpnav-chip:hover {
  color: var(--text);
  border-color: var(--text-3);
  background: rgba(255, 255, 255, 0.04);
}

/* Kill the awkward gap between the page header and the jump-nav. The
   header had a default margin-bottom that left ~80-120px of empty space
   above the chips. */
.settings-content .page-header {
  margin-bottom: 16px !important;
  padding-bottom: 14px !important;
  border-bottom: 1px solid var(--hairline);
}

/* ─── Workspace branding (Executive tier) — cleaner file + color input ── */
#brand-logo-input {
  /* Custom-styled file picker. The browser-default "Choose File" button
     is white-on-grey and clashes with the dark theme — this gives it the
     same look as our btn-ghost. */
  font-size: 0;                                       /* hides "no file selected" text */
  color: transparent;
  padding: 0;
  border: none;
  background: transparent;
  width: auto;
}
#brand-logo-input::-webkit-file-upload-button,
#brand-logo-input::file-selector-button {
  background: rgba(255, 255, 255, 0.04);
  color: var(--text);
  border: 1px solid var(--hairline-strong);
  border-radius: 6px;
  padding: 8px 14px;
  font-family: inherit;
  font-size: var(--fs-caption);
  font-weight: 500;
  letter-spacing: 0.02em;
  cursor: pointer;
  margin-right: 12px;
  transition: background 0.12s, border-color 0.12s;
}
#brand-logo-input::-webkit-file-upload-button:hover,
#brand-logo-input::file-selector-button:hover {
  background: rgba(255, 255, 255, 0.08);
  border-color: var(--text-3);
}
/* Filename label rendered alongside via a span (added next via JS). */
#brand-logo-input + .brand-file-name {
  font-size: var(--fs-caption);
  color: var(--text-3);
  margin-left: 4px;
  font-family: 'IBM Plex Mono', monospace;
}

#brand-color-input {
  width: 56px !important;
  height: 36px !important;
  padding: 2px !important;
  border: 1px solid var(--hairline-strong) !important;
  border-radius: 6px !important;
  background: transparent !important;
  cursor: pointer;
}
#brand-color-input::-webkit-color-swatch-wrapper { padding: 0; }
#brand-color-input::-webkit-color-swatch { border: none; border-radius: 4px; }
#brand-color-hex {
  font-family: 'IBM Plex Mono', monospace;
  font-size: var(--fs-caption) !important;
  color: var(--text-2) !important;
  margin-left: 14px !important;
  letter-spacing: 0.04em;
  vertical-align: middle;
}

/* Logo preview gets a brighter dashed border. */
#brand-logo-preview {
  height: 64px !important;
  width: 64px !important;
  border-radius: 8px !important;
  font-size: var(--fs-tiny) !important;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-4) !important;
  border-color: var(--hairline-strong) !important;
}

/* ─── Refined collapsibles inside settings ──────────────────── */
.settings-content .collapsible {
  border-bottom: none;
}
.settings-content .collapsible-head {
  border-radius: 6px;
  padding: 12px 14px !important;
  margin-left: -14px;
  margin-right: -14px;
  transition: background 0.12s;
}
.settings-content .collapsible-head:hover {
  background: rgba(255, 255, 255, 0.025);
}
.settings-content .collapsible[data-collapsed="false"] > .collapsible-head {
  background: rgba(255, 255, 255, 0.03);
}
.settings-content .collapsible[data-collapsed="false"] > .collapsible-head .lbl {
  color: var(--text) !important;
}

.settings-cols {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 20px;
  align-items: start;
}
.settings-cols > * { min-width: 0; }

/* ─── Settings tabbed sub-sidebar layout ─────────────────────────────────── */
.settings-layout {
  display: grid;
  grid-template-columns: 188px 1fr;
  gap: 0 28px;
  align-items: start;
  margin-top: 8px;
}

.settings-subnav {
  position: sticky;
  top: 24px;
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding: 4px 0;
}

.settings-tab {
  display: block;
  width: 100%;
  padding: 12px 16px;
  text-align: left;
  background: transparent;
  border: none;
  border-radius: 6px;
  color: var(--text-3);
  font-family: inherit;
  font-size: 14px;
  font-weight: 400;
  letter-spacing: 0;
  text-transform: none;
  cursor: pointer;
  transition: background 0.1s, color 0.1s;
}
.settings-tab:hover {
  background: rgba(255, 255, 255, 0.04);
  color: var(--text);
}
.settings-tab.active {
  background: rgba(201, 166, 75, 0.08);
  color: var(--text);
  font-weight: 500;
  box-shadow: inset 3px 0 0 var(--accent);
}

.settings-panes {
  min-width: 0;
}

.settings-pane { display: none; }
.status-pill {
  display: inline-block;
  font-size: 10px;
  font-family: 'IBM Plex Mono', monospace;
  letter-spacing: 1px;
  padding: 2px 8px;
  border-radius: 10px;
  margin-left: 12px;
  vertical-align: middle;
}
.status-pill-empty {
  background: rgba(255,255,255,0.04);
  color: var(--text-3);
}
.status-pill-active {
  background: rgba(155,226,155,0.1);
  color: #9be29b;
}

@media (max-width: 680px) {
  .settings-layout {
    grid-template-columns: 1fr;
  }
  .settings-subnav {
    position: static;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 4px;
    margin-bottom: 16px;
    padding: 0;
  }
  .settings-tab {
    width: auto;
    padding: 6px 12px;
    font-size: var(--fs-caption);
    border: 1px solid var(--hairline);
    border-radius: 20px;
  }
  .settings-tab.active {
    background: var(--accent);
    color: #000;
    border-color: var(--accent);
  }
}

.hiring-tabs {
  display: flex;
  gap: 0;
  border-bottom: 1px solid var(--hairline);
  margin-bottom: 20px;
}
.hiring-tab {
  color: var(--text-3);
  font-size: 11px;
  letter-spacing: 1.5px;
  text-transform: uppercase;
  padding: 12px 20px;
  text-decoration: none;
  font-weight: 500;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  transition: color 0.1s;
}
.hiring-tab:hover { color: var(--text-2); }
.hiring-tab.is-active { color: var(--text); border-bottom-color: var(--text); }

/* ─── Scrollbar polish (webkit) ──────────────────────────────── */
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: rgba(255, 255, 255, 0.08);
  border-radius: 5px;
  border: 2px solid var(--bg);
}
::-webkit-scrollbar-thumb:hover {
  background: rgba(255, 255, 255, 0.16);
}

/* ═══════════════════════════════════════════════════════════════
   COSMETIC UPGRADE — June 2026
   Targeting: deliberate, polished, demo-ready.
   Rules: CSS-only, no JS, no HTML restructure.
   ═══════════════════════════════════════════════════════════════ */

/* ── Body / global ──────────────────────────────────────────── */
body { line-height: 1.55; }

/* ── Standardize transition timing across all interactive elements ── */
.btn, .nav-item, .card, .collapsible-head, .list-row,
.hiring-tab, .tab, .role, .person-tile, .template-card,
.zp-tab, .interview-row {
  transition-timing-function: var(--ease) !important;
}

/* ── Focus rings — visible on all interactive elements ─────── */
*:focus-visible {
  outline: 2px solid rgba(255, 255, 255, 0.55);
  outline-offset: 2px;
}
.btn:focus-visible {
  outline: 2px solid var(--text);
  outline-offset: 2px;
}
input:focus-visible, select:focus-visible, textarea:focus-visible {
  outline: none;
  border-color: var(--text-3) !important;
  box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.06);
}

/* ── Candidate detail — header breathing room ───────────────── */
.cand-header {
  margin-bottom: 36px;
  padding-bottom: 28px;
  border-bottom: 1px solid var(--hairline);
}
.cand-avatar {
  width: 52px; height: 52px;
  font-size: 18px;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid var(--hairline-strong);
}

/* ── Collapsible section heads — consistent label scale ─────── */
.collapsible-head .lbl {
  font-size: 10px !important;
  letter-spacing: 0.20em !important;
  color: var(--text-3) !important;
}
.collapsible-head:hover .lbl {
  color: var(--text-2) !important;
}
/* Arrow: smooth rotation, slightly bolder */
.collapsible-head::after {
  font-size: 14px !important;
  color: var(--text-4) !important;
  transition: transform 0.18s var(--ease), color 0.12s var(--ease) !important;
}
.collapsible-head:hover::after {
  color: var(--text-2) !important;
}

/* ── Pattern Read prose card ─────────────────────────────────── */
.pattern-read-prose {
  max-width: 72ch;
}
.pattern-read-prose p {
  font-size: 14px !important;
  line-height: 1.70 !important;
  color: var(--text-2) !important;
  margin: 0 0 18px !important;
}
.pattern-read-prose p:last-child { margin-bottom: 0 !important; }

/* ── Person Dimensions — visually deprioritize live-only dims ── */
/* Low-confidence dims (score=null, only capturable live): faded + dashed border */
.pd-dim:has(.pd-conf-low) {
  opacity: 0.45;
  border-style: dashed !important;
}
.pd-dim:has(.pd-conf-low) .pd-dim-name {
  font-style: italic;
}

/* ── Candidate action buttons — consistent 36px height ─────── */
.page-header .btn, .cand-actions .btn {
  height: 36px !important;
  padding: 0 16px !important;
  display: inline-flex !important;
  align-items: center !important;
}
/* Danger ghost — subtle red tint on hover, not alarming at rest */
.btn-danger-ghost:hover {
  color: var(--c-danger-text) !important;
  border-color: rgba(239, 68, 68, 0.3) !important;
}

/* ── Candidates list — filter row polish ────────────────────── */
.filter-row {
  display: flex !important;
  gap: 10px !important;
  align-items: center !important;
  flex-wrap: wrap !important;
  margin-bottom: 20px !important;
}
#pipeline-stage, #pipeline-search {
  height: 38px !important;
  padding: 0 12px !important;
  font-size: var(--fs-body-sm) !important;
  border-radius: var(--radius-sm) !important;
}
#pipeline-stage-count {
  font-size: 11px !important;
  color: var(--text-3) !important;
  letter-spacing: 0.1em !important;
  white-space: nowrap !important;
}

/* Stage select in list rows — consistent height + remove default arrow glyph */
.pipeline-row-stage {
  height: 32px !important;
  padding: 0 8px !important;
  font-size: var(--fs-caption) !important;
  border-radius: var(--radius-sm) !important;
  cursor: pointer;
}

/* ── Hiring tabs ─────────────────────────────────────────────── */
.hiring-tab {
  font-size: var(--fs-caption) !important;
  letter-spacing: 0.12em !important;
  padding: 12px 16px !important;
  transition: color 0.12s var(--ease), border-color 0.12s var(--ease) !important;
}
.hiring-tab.is-active {
  font-weight: 600 !important;
}

/* ── Stat cards — uniform height on dashboard ───────────────── */
.stat-card {
  min-height: 96px !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: space-between !important;
}

/* ── Section h2 headings — consistent scale ─────────────────── */
.section-h h2, h2.section-title {
  font-size: var(--fs-h3) !important;
  font-weight: 500 !important;
  letter-spacing: -0.01em !important;
}

/* ── Deep analysis section — consistent with other cards ───── */
.deep-analysis, .pattern-read-prose, .deep-cta, .deep-empty, .deep-loading {
  border-radius: var(--radius-sm) !important;
}

/* ── Devil's Advocate card — consistent corners ─────────────── */
.da-card, .da-section-head {
  border-radius: var(--radius-sm) !important;
}

/* ── Interview list rows — breathing room ───────────────────── */
.interview-row {
  padding: 14px 18px !important;
  border-radius: var(--radius-sm) !important;
}

/* ── Chips — consistent pill shape ─────────────────────────── */
.chip {
  border-radius: 20px !important;
  font-size: 10px !important;
  padding: 4px 11px !important;
  letter-spacing: 0.04em !important;
}

/* ── Career chart — subtle grid, clean axis ─────────────────── */
.chart-wrap {
  border-radius: var(--radius-md) !important;
}
.year-tick {
  background: var(--surface-2) !important;
  border-radius: 3px !important;
}

/* ── Status colors — map to tokens ─────────────────────────── */
.status-good, [data-status="good"]  { color: var(--c-good-text) !important; }
.status-warn, [data-status="warn"]  { color: var(--c-warn) !important; }
.status-bad,  [data-status="bad"]   { color: var(--c-bad-text) !important; }

/* ── Scrollbar thinner & softer ─────────────────────────────── */
::-webkit-scrollbar { width: 6px !important; height: 6px !important; }

/* ── Marketing site token parity (applies when marketing styles are
      loaded in the same context) ─────────────────────────────── */
.grad-text {
  background: var(--grad, linear-gradient(120deg, var(--text) 0%, var(--text-3) 100%));
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* ══════════════════════════════════════════════════════════════════
   POLISH SPRINT — Jun 22, 2026
   CSS only — zero logic changes. Surfaces: Settings Setup, Welcome
   Wizard, Dashboard Checklist, Empty States, Tooltips.
   Token audit: 5 hardcoded hexes replaced, 8 flagged (TODO).
   TODO flagged: #1a1a1c (tooltip bg), #1a1408/#3a2a10 (exec-badge
   dark gold surface/border), HPF dim colors 6×, DA verdict colors.
   ══════════════════════════════════════════════════════════════════ */

/* ─── PART 2: Settings → Setup section ───────────────────────────── */

/* Equal-height cards — all cards in the auto-fill grid align to tallest */
#setup-section > div { align-items: stretch; }
#setup-section .setup-card {
  display: flex;
  flex-direction: column;
  padding: 18px 20px;
  gap: 0;
  min-height: 96px;
}
/* Bigger, brighter sub-label inside each card */
#setup-section .setup-card > div:last-child {
  font-size: var(--fs-caption);
  color: var(--text-3);
  line-height: 1.55;
  margin-top: 6px;
  flex: 1;
}
/* Crisper hover: border lifts to hairline-strong, faint bg brightens */
#setup-section .setup-card:hover {
  border-color: var(--border-firm);
  background: linear-gradient(180deg,
    rgba(255,255,255,0.05) 0%,
    rgba(255,255,255,0.03) 100%);
}
/* "SETUP" section header matches `.lbl` mono scale from the overhaul block */
#setup-section > .lbl {
  font-family: 'IBM Plex Mono', monospace;
  font-size: var(--fs-mono);
  letter-spacing: 0.18em;
  color: var(--text-3);
  margin-bottom: 16px !important;
}

/* ─── PART 3: Welcome wizard ─────────────────────────────────────── */

/* Progress bar: fill bar per step, connected segments */
.welcome-progress-dots { gap: 4px; }
.welcome-dot {
  width: 28px;
  height: 3px;
  border-radius: 2px;
  transition: background 0.28s cubic-bezier(0.4, 0, 0.2, 1);
}
.welcome-dot.done { background: var(--text-2); }
.welcome-dot.active { background: var(--text); }

/* Step transitions: slightly more pronounced slide */
.welcome-step { animation: welcome-in 0.24s cubic-bezier(0.4, 0, 0.2, 1); }
@keyframes welcome-in {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0);   }
}

/* Styled textarea — replaces per-element inline styles */
.welcome-textarea {
  width: 100%;
  padding: 10px 12px;
  background: var(--surface-1);
  border: 1px solid var(--border-firm);
  color: var(--text-primary);
  font-family: inherit;
  font-size: var(--fs-body-sm);
  border-radius: var(--radius-sm);
  line-height: 1.55;
  resize: vertical;
  transition: border-color 0.15s, background 0.15s;
}
.welcome-textarea:focus {
  outline: none;
  border-color: var(--text);
  background: var(--surface-3);
}

/* Styled datetime input */
.welcome-date-input {
  width: 100%;
  padding: 10px 12px;
  background: var(--surface-1);
  border: 1px solid var(--border-firm);
  color: var(--text-primary);
  font-family: inherit;
  font-size: var(--fs-body-sm);
  border-radius: var(--radius-sm);
  transition: border-color 0.15s, background 0.15s;
}
.welcome-date-input:focus {
  outline: none;
  border-color: var(--text);
  background: var(--surface-3);
}

/* Step 3 Zoom install block */
.welcome-zoom-block {
  background: var(--surface-2);
  border: 1px solid var(--border-soft);
  border-radius: var(--radius-md);
  padding: 28px 24px;
  margin: 22px 0;
  text-align: center;
}
.welcome-zoom-block p {
  font-size: var(--fs-body-sm);
  color: var(--text-secondary);
  line-height: 1.7;
  margin-bottom: 20px;
}
.welcome-zoom-sub {
  margin-top: 14px;
  font-size: 11px;
  color: var(--text-tertiary);
}
.welcome-zoom-block .btn-primary {
  padding: 12px 28px;
  font-size: 14px;
}

/* Skip button: clearly tertiary — not competing with primary CTA */
.btn-skip {
  background: transparent !important;
  border: none !important;
  color: var(--text-tertiary) !important;
  font-size: var(--fs-caption) !important;
  padding: 6px 4px !important;
  font-family: inherit;
  letter-spacing: 0.02em;
  transition: color 0.12s;
}
.btn-skip:hover { color: var(--text-secondary) !important; }

/* Welcome card: slightly more generous radius + shadow */
.welcome-card {
  border-radius: var(--radius-lg) !important;
  box-shadow: 0 24px 64px -16px rgba(0,0,0,0.6), 0 0 0 1px rgba(255,255,255,0.04);
}

/* ─── PART 4: Dashboard first-run checklist ──────────────────────── */

/* Card container — target by ID to win over inline styles */
#first-run-checklist {
  border-radius: var(--radius-md) !important;
  border-color: var(--border-soft) !important;
  padding: 22px 24px !important;
}

/* Title row inside the card */
#first-run-checklist > div:first-of-type {
  font-size: 10px;
  letter-spacing: 0.18em;
  color: var(--text-tertiary);
  text-transform: uppercase;
  margin-bottom: 16px;
  font-family: 'IBM Plex Mono', monospace;
}

/* Dismiss ×  button */
#checklist-dismiss {
  border-radius: var(--radius-sm);
  transition: color 0.12s, background 0.12s;
  font-size: 18px !important;
}
#checklist-dismiss:hover {
  color: var(--text) !important;
  background: var(--surface-3) !important;
}

/* Checklist dots — override inline styles for the pending state */
.checklist-dot {
  width: 20px !important;
  height: 20px !important;
  border-radius: 50%;
  border: 1.5px solid var(--border-firm);
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  transition: background 0.22s, border-color 0.22s, color 0.22s;
}

/* Labels and actions */
.checklist-label {
  font-size: var(--fs-body-sm);
  transition: color 0.22s;
}
.checklist-action {
  font-size: 11px;
  text-decoration: none;
  letter-spacing: 0.05em;
  white-space: nowrap;
  transition: color 0.12s;
}
.checklist-action:hover { color: var(--text-secondary) !important; }

/* ─── PART 5: Empty states — consistent visual family ────────────── */

/* Override all prior `.empty-state` rules; this block wins via cascade position */
.empty-state {
  display: flex !important;
  flex-direction: column !important;
  align-items: center !important;
  justify-content: center !important;
  min-height: 240px;
  padding: 56px 40px !important;
  text-align: center !important;
  border-radius: var(--radius-md) !important;
}
.empty-state b, .empty-state-title {
  font-size: var(--fs-h3) !important;
  font-weight: 600 !important;
  color: var(--text-primary) !important;
  display: block !important;
  margin-bottom: 8px !important;
  line-height: 1.3;
}
.empty-state p, .empty-state-sub {
  font-size: var(--fs-body-sm) !important;
  color: var(--text-secondary) !important;
  line-height: 1.6 !important;
  max-width: 400px !important;
  margin: 0 auto 22px !important;
}
/* Primary CTA inside empty state */
.empty-state .btn-primary, .empty-state .empty-cta {
  margin-top: 4px !important;
}
/* Optional "other ways" ghost link below primary CTA */
.empty-alt-link {
  display: inline-block;
  margin-top: 12px;
  font-size: 11px;
  color: var(--text-tertiary);
  text-decoration: none;
  letter-spacing: 0.02em;
  transition: color 0.12s;
}
.empty-alt-link:hover { color: var(--text-secondary); }

/* Subtle icon above empty-state heading — opt-in via .empty-state-icon */
.empty-state-icon {
  display: block;
  margin: 0 auto 16px;
  opacity: 0.22;
  flex-shrink: 0;
}

/* ─── PART 6: Tooltip refinements ─────────────────────────────────── */

/* Tooltip popup: overflow visible so ::after arrow renders outside box */
.jedah-tip-popup { overflow: visible; }

/* Arrow pointing down toward the trigger button */
.jedah-tip-popup::after {
  content: '';
  position: absolute;
  bottom: -5px;
  left: 16px;
  width: 8px; height: 8px;
  background: #1a1a1c;          /* match popup background */
  border-right: 1px solid var(--border-firm);
  border-bottom: 1px solid var(--border-firm);
  transform: rotate(45deg);
}

/* "?" button: filled accent tint when tooltip is open */
.jedah-tip.open .jedah-tip-btn {
  border-color: var(--text-3);
  color: var(--text);
  background: rgba(255,255,255,0.05);
}
/* Focus ring for keyboard accessibility */
.jedah-tip-btn:focus-visible {
  outline: 2px solid var(--text-3);
  outline-offset: 2px;
}

/* Narrow viewports: pin popup to right edge so it doesn't clip */
@media (max-width: 520px) {
  .jedah-tip-popup {
    left: auto !important;
    right: 0;
  }
  .jedah-tip-popup::after {
    left: auto;
    right: 16px;
  }
}

/* ─── Cross-surface responsive fixes ─────────────────────────────── */

/* Mobile: full-width primary CTAs */
@media (max-width: 520px) {
  .welcome-actions { flex-direction: column-reverse; gap: 10px; align-items: stretch; }
  .welcome-actions .btn { width: 100%; justify-content: center; }
  .welcome-actions div[style] { width: 100%; display: flex !important; flex-direction: column; gap: 8px; }
  .btn-skip { text-align: center; }

  /* Checklist card: tighter on mobile */
  #first-run-checklist { padding: 16px !important; }

  /* Empty states: don't over-pad on small screens */
  .empty-state { padding: 40px 24px !important; min-height: 200px; }

  /* Setup cards: single column on very narrow */
  #setup-section > div { grid-template-columns: 1fr !important; }
}

/* Tablet: two-column setup cards (auto-fill already handles this) */
@media (max-width: 768px) {
  .content { padding: 24px 20px 48px !important; }
  .welcome-shell { padding: 20px !important; }
  .welcome-card { padding: 28px 24px 24px !important; }
}

/* ─── Quick-filter chips ───────────────────────────────────────────── */
.quick-chip {
  display: inline-flex;
  align-items: center;
  padding: 4px 10px;
  border-radius: 20px;
  border: 1px solid var(--hairline-strong);
  background: transparent;
  color: var(--text-3);
  font-family: inherit;
  font-size: 11px;
  letter-spacing: 0.4px;
  cursor: pointer;
  transition: background 0.12s, color 0.12s, border-color 0.12s;
  white-space: nowrap;
}
.quick-chip:hover {
  background: var(--bg-2);
  color: var(--text-2);
}
.quick-chip.is-active {
  background: var(--text);
  color: var(--bg);
  border-color: var(--text);
}

/* ─── Error boundary state ─────────────────────────────────────────── */
.error-state {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 64px 24px;
  text-align: center;
  gap: 10px;
}
.error-icon {
  font-size: 28px;
  color: var(--text-4);
  margin-bottom: 4px;
}
.error-title {
  font-size: var(--fs-h3);
  font-weight: 600;
  color: var(--text-2);
}
.error-msg {
  font-size: var(--fs-caption);
  color: var(--text-3);
  max-width: 420px;
  line-height: 1.5;
}

/* ── V1 scope lock feature-flag utility classes ───────────────────────────────
   Elements with data-v1-hide are hidden when body.v1-scope-lock is present.
   Elements with data-v1-show are hidden by default and visible only under lock.
   The !important beats any inline style app.js may set after the fact. */
body.v1-scope-lock [data-v1-hide] { display: none !important; }
[data-v1-show] { display: none !important; }

/* ── Sticky candidate header (candidate.html) ─────────────────────────────
   The header stays visible as the user scrolls through Pattern Read, HPF,
   Devil's Advocate, etc. Targets only .cand-header that is a direct child
   of .content (i.e. candidate.html) — not the one nested in interview.html's
   Candidate tab-panel. */
.content > .cand-header {
  position: sticky;
  top: 0;
  z-index: 8;
  background: var(--bg);
  padding-top: 14px;
  padding-bottom: 20px;
  margin-bottom: 20px;
  border-bottom: 1px solid var(--hairline);
  box-shadow: 0 4px 16px 0 rgba(0,0,0,0.45);
}
body.v1-scope-lock [data-v1-show] { display: block !important; }


/* ═══════════════════════════════════════════════════════════════════════════
   COMPONENT LIBRARY — Part 2 of Visual Rebuild
   Reusable classes used across all pages.
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── CARDS ──────────────────────────────────────────────────────────────── */
.card {
  background:
    linear-gradient(180deg,
      var(--bg-elev) 0%,
      var(--bg) 100%);
  border: 1px solid var(--hair-2);
  border-radius: var(--r-md);
  box-shadow: var(--shadow);
  overflow: hidden;
  position: relative;
}
.card-elev {
  background:
    linear-gradient(180deg,
      var(--bg-elev-high) 0%,
      var(--bg-elev) 100%);
  box-shadow: var(--shadow-lg);
}
.card-section {
  padding: var(--sp-5) var(--sp-6);
  border-bottom: 1px solid var(--hair);
}
.card-section:last-child { border-bottom: 0; }
.card-header {
  padding: var(--sp-5) var(--sp-6) var(--sp-4);
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--sp-4);
}
.card-title {
  font-family: var(--font-display);
  font-size: var(--fs-display);
  font-weight: 500;
  letter-spacing: var(--ls-tight);
  color: var(--text);
}
.card-eyebrow {
  font-family: var(--font-mono);
  font-size: var(--fs-mono);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  font-weight: 500;
  color: var(--gold);
  text-shadow: 0 0 16px var(--gold-glow);
}

/* ─── BUTTONS ────────────────────────────────────────────────────────────── */
.btn {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-2);
  padding: var(--sp-3) var(--sp-5);
  border: 1px solid transparent;
  border-radius: var(--r);
  font-family: var(--font-body);
  font-size: var(--fs-body-sm);
  font-weight: 500;
  color: var(--text-2);
  background: transparent;
  cursor: pointer;
  transition:
    color var(--dur) var(--ease),
    background var(--dur) var(--ease),
    border-color var(--dur) var(--ease),
    transform var(--dur) var(--ease),
    box-shadow var(--dur) var(--ease);
  text-decoration: none;
  white-space: nowrap;
  line-height: 1;
}
.btn:hover { color: var(--text); }
.btn-sm { padding: var(--sp-2) var(--sp-3); font-size: var(--fs-caption); }
.btn-lg { padding: var(--sp-4) var(--sp-6); font-size: var(--fs-body); }

.btn-primary {
  background:
    linear-gradient(180deg,
      var(--gold-bright) 0%,
      var(--gold) 100%);
  color: var(--text-inverse);
  border-color: var(--gold);
  box-shadow:
    0 1px 0 0 rgba(255,255,255,0.15) inset,
    var(--shadow-sm);
  font-weight: 600;
}
.btn-primary:hover {
  color: var(--text-inverse);
  box-shadow:
    0 1px 0 0 rgba(255,255,255,0.2) inset,
    0 0 24px var(--gold-glow),
    var(--shadow);
  transform: translateY(-1px);
}
.btn-secondary {
  background: var(--bg-elev);
  border-color: var(--hair-strong);
  color: var(--text);
}
.btn-secondary:hover {
  background: var(--bg-elev-high);
  border-color: var(--text-3);
}
.btn-ghost {
  color: var(--text-3);
}
.btn-ghost:hover {
  color: var(--text);
  background: var(--bg-tint);
}
.btn-danger {
  color: var(--brick);
  border-color: var(--brick);
  background: var(--brick-fill);
}
.btn-danger-ghost { color: var(--brick); }
.btn-danger-ghost:hover { background: var(--brick-fill); color: var(--brick); }

/* ─── INPUTS ─────────────────────────────────────────────────────────────── */
.input,
input[type="text"]:not(.no-restyle),
input[type="email"]:not(.no-restyle),
input[type="search"]:not(.no-restyle),
input[type="url"]:not(.no-restyle),
input[type="date"]:not(.no-restyle),
input[type="number"]:not(.no-restyle),
select:not(.no-restyle),
textarea:not(.no-restyle) {
  background: var(--bg);
  border: 1px solid var(--hair-2);
  border-radius: var(--r);
  padding: var(--sp-3) var(--sp-4);
  color: var(--text);
  font-family: var(--font-body);
  font-size: var(--fs-body-sm);
  line-height: var(--lh-normal);
  transition:
    border-color var(--dur) var(--ease),
    box-shadow var(--dur) var(--ease);
  width: 100%;
}
.input:hover,
input:not(.no-restyle):hover,
select:not(.no-restyle):hover { border-color: var(--hair-strong); }
.input:focus,
input:not(.no-restyle):focus,
select:not(.no-restyle):focus,
textarea:not(.no-restyle):focus {
  outline: none;
  border-color: var(--gold-border);
  box-shadow: 0 0 0 3px var(--gold-fill);
}
.input::placeholder,
input::placeholder { color: var(--text-4); }

label {
  display: block;
  margin-bottom: var(--sp-2);
  font-family: var(--font-mono);
  font-size: var(--fs-tiny);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--text-3);
}

/* ─── PILLS / TAGS / BADGES ──────────────────────────────────────────────── */
.pill {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-1);
  padding: 3px var(--sp-3);
  border-radius: var(--r-pill);
  font-family: var(--font-mono);
  font-size: var(--fs-tiny);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  color: var(--text-3);
  background: var(--bg-elev);
  border: 1px solid var(--hair-2);
  white-space: nowrap;
}
.pill-gold {
  color: var(--gold);
  background: var(--gold-fill);
  border-color: var(--gold-border);
}
.pill-sage {
  color: var(--sage);
  background: var(--sage-fill);
  border-color: rgba(123, 166, 140, 0.25);
}
.pill-brick {
  color: var(--brick);
  background: var(--brick-fill);
  border-color: rgba(198, 107, 92, 0.25);
}
.pill-amber {
  color: var(--amber);
  background: var(--amber-fill);
  border-color: rgba(232, 149, 68, 0.25);
}
.dot {
  display: inline-block;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--text-3);
  flex-shrink: 0;
}
.dot-gold {
  background: var(--gold);
  box-shadow: 0 0 8px var(--gold-glow);
}
.dot-sage {
  background: var(--sage);
  box-shadow: 0 0 8px var(--sage-glow);
  animation: dot-pulse 2s ease-in-out infinite;
}
@media (prefers-reduced-motion: no-preference) {
  .dot-sage { animation: dot-pulse 2s ease-in-out infinite; }
}
@media (prefers-reduced-motion: reduce) {
  .dot-sage { animation: none; }
}

/* ─── EMPTY STATES ───────────────────────────────────────────────────────── */
.empty-state {
  padding: var(--sp-16) var(--sp-8);
  text-align: center;
}
.empty-state-illustration {
  width: 64px;
  height: 64px;
  margin: 0 auto var(--sp-5);
  border-radius: 50%;
  background:
    linear-gradient(135deg,
      var(--bg-elev) 0%,
      var(--bg) 100%);
  border: 1px solid var(--hair-2);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text-3);
}
.empty-state-title {
  font-family: var(--font-display);
  font-size: var(--fs-display);
  font-weight: 500;
  color: var(--text);
  margin-bottom: var(--sp-2);
}
.empty-state-body {
  color: var(--text-2);
  margin-bottom: var(--sp-6);
  max-width: 320px;
  margin-left: auto;
  margin-right: auto;
  font-size: var(--fs-body-sm);
  line-height: var(--lh-relaxed);
}

/* ─── SKELETON LOADING ───────────────────────────────────────────────────── */
.skeleton {
  background: linear-gradient(90deg,
    var(--bg-elev) 0%,
    var(--bg-elev-high) 50%,
    var(--bg-elev) 100%);
  background-size: 200% 100%;
  border-radius: var(--r);
}
@media (prefers-reduced-motion: no-preference) {
  .skeleton { animation: shimmer 1.4s ease-in-out infinite; }
}

/* AI-section skeleton — 2-4 shimmer lines approximating the section's shape,
   shown between request start and first render. Built on .skeleton above;
   rendered by jedahSkeleton() in app.js. Callers replace it wholesale by
   overwriting the host element's innerHTML in their render / error paths. */
.ai-skeleton { padding: 14px 2px 10px; }
/* Branded logo-rings animation centered above the shimmer lines
   (markup from window.jedahRings in components/ai-loading.js). */
.ai-skeleton-rings {
  display: flex;
  justify-content: center;
  padding: 4px 0 14px;
}
.ai-skeleton-line {
  height: 12px;
  margin-bottom: 10px;
}
.ai-skeleton-line:last-of-type { margin-bottom: 0; }
.ai-skeleton-caption {
  font-family: var(--font-mono);
  font-size: var(--fs-mono);
  letter-spacing: var(--ls-wide);
  color: var(--text-4);
  margin-top: 12px;
  font-style: normal;
}

/* ─── TOAST NOTIFICATIONS ────────────────────────────────────────────────── */
.toast {
  position: fixed;
  top: var(--sp-5);
  left: 50%;
  transform: translateX(-50%);
  background: var(--bg-elev-high);
  border: 1px solid var(--hair-strong);
  border-radius: var(--r);
  padding: var(--sp-3) var(--sp-5);
  box-shadow: var(--shadow-lg);
  font-size: var(--fs-body-sm);
  color: var(--text);
  z-index: 9999;
  white-space: nowrap;
}
@media (prefers-reduced-motion: no-preference) {
  .toast { animation: toast-in 200ms var(--ease-out); }
}
@keyframes toast-in {
  from { opacity: 0; transform: translateX(-50%) translateY(-12px); }
  to   { opacity: 1; transform: translateX(-50%) translateY(0); }
}

/* ─── BULK ACTION TOOLBAR ────────────────────────────────────────────────── */
.bulk-toolbar {
  position: fixed;
  bottom: var(--sp-6);
  left: 50%;
  transform: translateX(-50%);
  background: var(--bg-elev-high);
  border: 1px solid var(--hair-strong);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-xl);
  padding: var(--sp-3) var(--sp-5);
  display: flex;
  align-items: center;
  gap: var(--sp-4);
  z-index: 100;
}
@media (prefers-reduced-motion: no-preference) {
  .bulk-toolbar { animation: bulk-toolbar-in 200ms var(--ease-out); }
}

/* ─── PAGE ENTRY ANIMATION ───────────────────────────────────────────────── */
@media (prefers-reduced-motion: no-preference) {
  .page-entry,
  .content {
    animation: page-enter var(--dur-slow) var(--ease-out);
  }
  @keyframes page-enter {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
  }
}


/* ═══════════════════════════════════════════════════════════════════════════
   LAYOUT PATTERNS — Part 3 of Visual Rebuild
   ═══════════════════════════════════════════════════════════════════════════ */

/* ─── Shell content variants ─────────────────────────────────────────────── */
.shell-content {
  padding: var(--sp-8) var(--sp-10) 80px;
  max-width: 1280px;
  width: 100%;
}
.shell-content-editorial {
  max-width: 720px;
  padding: var(--sp-10) var(--sp-8) 80px;
}

/* ─── Focused layout (login, signup, wizard) ─────────────────────────────── */
.focused {
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--sp-10) var(--sp-6);
  background:
    radial-gradient(ellipse 50% 40% at 50% 30%,
      rgba(212, 168, 100, 0.05) 0%,
      transparent 70%),
    var(--bg);
}
.focused-card {
  width: 100%;
  max-width: 480px;
  background:
    linear-gradient(180deg,
      var(--bg-elev) 0%,
      var(--bg) 100%);
  border: 1px solid var(--hair-2);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-xl);
  padding: var(--sp-10) var(--sp-8);
}

/* ─── Page head pattern ──────────────────────────────────────────────────── */
.page-head {
  margin-bottom: var(--sp-10);
  padding-bottom: var(--sp-6);
  border-bottom: 1px solid var(--hair);
  position: relative;
}
.page-head-eyebrow {
  font-family: var(--font-mono);
  font-size: var(--fs-mono);
  letter-spacing: var(--ls-widest);
  color: var(--gold);
  text-transform: uppercase;
  margin-bottom: var(--sp-3);
}
.page-head-title {
  font-family: var(--font-display);
  font-size: var(--fs-display-xl);
  font-weight: 500;
  line-height: var(--lh-display);
  letter-spacing: var(--ls-display);
  color: var(--text);
  margin: 0 0 var(--sp-2);
}
.page-head-sub {
  font-size: var(--fs-body);
  color: var(--text-2);
  margin: 0;
  line-height: var(--lh-snug);
}
.page-head-actions {
  position: absolute;
  top: 0;
  right: 0;
  display: flex;
  gap: var(--sp-3);
  align-items: center;
}

/* ─── Filter bar ─────────────────────────────────────────────────────────── */
.filter-bar {
  display: flex;
  align-items: center;
  gap: var(--sp-3);
  margin-bottom: var(--sp-5);
  padding: var(--sp-2) var(--sp-4);
  background: var(--bg-elev);
  border: 1px solid var(--hair-2);
  border-radius: var(--r);
}
.filter-search {
  flex: 1;
  background: transparent;
  border: 0;
  color: var(--text);
  font-family: var(--font-body);
  font-size: var(--fs-body-sm);
  padding: var(--sp-2) 0;
}
.filter-search::placeholder { color: var(--text-4); }
.filter-search:focus { outline: none; }
.filter-divider {
  width: 1px;
  height: 16px;
  background: var(--hair-2);
  flex-shrink: 0;
}
.filter-chips { display: flex; gap: var(--sp-2); flex-wrap: wrap; }
.filter-chip {
  display: inline-flex;
  align-items: center;
  padding: 3px var(--sp-3);
  border-radius: var(--r-pill);
  font-family: var(--font-mono);
  font-size: var(--fs-tiny);
  letter-spacing: var(--ls-wide);
  text-transform: uppercase;
  background: transparent;
  border: 1px solid var(--hair-2);
  color: var(--text-3);
  cursor: pointer;
  transition: all var(--dur) var(--ease);
  white-space: nowrap;
}
.filter-chip:hover { color: var(--text); border-color: var(--hair-strong); }
.filter-chip.active {
  color: var(--gold);
  background: var(--gold-fill);
  border-color: var(--gold-border);
}

/* ─── Tiles row (quick links) ────────────────────────────────────────────── */
.tiles-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--sp-4);
  margin-top: var(--sp-10);
}
.tile {
  background:
    linear-gradient(180deg,
      var(--bg-elev) 0%,
      var(--bg) 100%);
  border: 1px solid var(--hair-2);
  border-radius: var(--r-md);
  box-shadow: var(--shadow);
  padding: var(--sp-6);
  text-decoration: none;
  transition:
    transform var(--dur) var(--ease),
    box-shadow var(--dur) var(--ease),
    border-color var(--dur) var(--ease);
  display: block;
}
.tile:hover {
  transform: translateY(-2px);
  box-shadow: var(--shadow-lg);
  border-color: var(--hair-strong);
}
.tile-eyebrow {
  font-family: var(--font-mono);
  font-size: var(--fs-mono);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--text-3);
}
.tile-count {
  font-family: var(--font-display);
  font-size: var(--fs-display-lg);
  font-weight: 500;
  color: var(--text);
  line-height: 1;
  margin: var(--sp-2) 0;
}
.tile-meta { font-size: var(--fs-body-sm); color: var(--text-3); }


/* ═══════════════════════════════════════════════════════════════════════════
   DASHBOARD — Part 5
   ═══════════════════════════════════════════════════════════════════════════ */

/* Greeting block */
.greeting {
  margin-bottom: var(--sp-8);
}
.greeting-line {
  font-family: var(--font-display);
  font-size: var(--fs-display-lg);
  font-weight: 400;
  color: var(--text);
  letter-spacing: var(--ls-tight);
  margin: 0 0 var(--sp-2);
}
.greeting-meta {
  font-family: var(--font-mono);
  font-size: var(--fs-mono);
  letter-spacing: var(--ls-widest);
  color: var(--text-3);
  text-transform: uppercase;
}

/* Next interview card */
.next-interview-card {
  background:
    linear-gradient(180deg,
      var(--bg-elev-high) 0%,
      var(--bg-elev) 100%);
  border: 1px solid var(--hair-2);
  border-radius: var(--r-md);
  box-shadow: var(--shadow-lg);
  padding: var(--sp-8);
  display: grid;
  grid-template-columns: 64px 1fr auto;
  grid-template-rows: auto auto;
  gap: var(--sp-2) var(--sp-5);
  align-items: center;
  position: relative;
  overflow: hidden;
  margin-bottom: var(--sp-8);
}
.next-interview-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse 60% 80% at 100% 50%,
      var(--gold-fill) 0%,
      transparent 70%);
  pointer-events: none;
}
.ni-avatar {
  grid-row: 1 / 3;
  width: 56px; height: 56px;
  border-radius: 50%;
  background:
    linear-gradient(135deg,
      var(--bg-tint) 0%,
      var(--bg-elev) 100%);
  border: 1px solid var(--hair-strong);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-display);
  font-size: var(--fs-h2);
  font-weight: 500;
  color: var(--text-2);
}
.ni-eyebrow {
  grid-column: 2 / 3;
  font-family: var(--font-mono);
  font-size: var(--fs-mono);
  letter-spacing: var(--ls-widest);
  color: var(--gold);
  text-transform: uppercase;
  margin: 0;
}
.ni-name {
  grid-column: 2 / 3;
  font-family: var(--font-display);
  font-size: var(--fs-display);
  font-weight: 500;
  color: var(--text);
  line-height: 1.1;
  letter-spacing: var(--ls-tight);
  margin: 0;
}
.ni-meta {
  grid-column: 2 / 3;
  font-size: var(--fs-body-sm);
  color: var(--text-2);
}
.ni-cta {
  grid-column: 3 / 4;
  grid-row: 1 / 3;
}

/* Activity timeline */
.activity-section { margin-top: var(--sp-8); }
.activity-section-title {
  font-family: var(--font-mono);
  font-size: var(--fs-mono);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--text-3);
  margin-bottom: var(--sp-4);
}
.activity-list {
  background:
    linear-gradient(180deg,
      var(--bg-elev) 0%,
      var(--bg) 100%);
  border: 1px solid var(--hair-2);
  border-radius: var(--r-md);
  overflow: hidden;
}
.activity-item {
  display: grid;
  grid-template-columns: 32px 1fr auto;
  gap: var(--sp-3);
  padding: var(--sp-4) var(--sp-6);
  border-bottom: 1px solid var(--hair);
  transition: background var(--dur) var(--ease);
  text-decoration: none;
  color: inherit;
}
.activity-item:last-child { border-bottom: 0; }
.activity-item:hover { background: var(--bg-tint); }
.activity-dot {
  width: 6px; height: 6px;
  border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 6px var(--gold-glow);
  margin-top: 6px;
  flex-shrink: 0;
  justify-self: center;
}
.activity-body { font-size: var(--fs-body-sm); color: var(--text); line-height: 1.4; }
.activity-body strong { color: var(--text); font-weight: 600; }
.activity-time {
  font-family: var(--font-mono);
  font-size: var(--fs-tiny);
  color: var(--text-3);
  align-self: center;
  white-space: nowrap;
  letter-spacing: var(--ls-wide);
}


/* ═══════════════════════════════════════════════════════════════════════════
   CANDIDATES LIST — Part 6
   ═══════════════════════════════════════════════════════════════════════════ */

.candidate-row {
  display: grid;
  grid-template-columns: 40px 1fr auto auto;
  gap: var(--sp-4);
  align-items: center;
  padding: var(--sp-4) var(--sp-6);
  border-bottom: 1px solid var(--hair);
  transition: background var(--dur) var(--ease);
  cursor: pointer;
}
.candidate-row:hover { background: var(--bg-elev); }
.candidate-row:last-child { border-bottom: 0; }
.candidate-row-avatar {
  width: 36px; height: 36px;
  border-radius: 50%;
  background:
    linear-gradient(135deg,
      var(--bg-elev-high) 0%,
      var(--bg-elev) 100%);
  border: 1px solid var(--hair-strong);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-mono);
  font-size: var(--fs-tiny);
  font-weight: 600;
  color: var(--text-2);
  flex-shrink: 0;
  letter-spacing: var(--ls-wide);
}
.candidate-row-info { min-width: 0; }
.candidate-row-name {
  font-size: var(--fs-body);
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.candidate-row-role {
  font-size: var(--fs-body-sm);
  color: var(--text-3);
  margin-top: 2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.candidate-row-activity {
  font-family: var(--font-mono);
  font-size: var(--fs-mono);
  color: var(--text-3);
  letter-spacing: var(--ls-wide);
  white-space: nowrap;
  text-align: right;
}
.candidate-row-open {
  color: var(--text-3);
  font-size: var(--fs-caption);
  padding: var(--sp-2) var(--sp-3);
  border-radius: var(--r);
  transition: all var(--dur) var(--ease);
  text-decoration: none;
  border: 1px solid transparent;
}
.candidate-row:hover .candidate-row-open {
  color: var(--gold);
  border-color: var(--gold-border);
  background: var(--gold-fill);
}

/* ═══════════════════════════════════════════════════════════════════════════
   CANDIDATE DETAIL — Part 7
   ═══════════════════════════════════════════════════════════════════════════ */

/* Sticky candidate header */
.cand-sticky-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background:
    linear-gradient(180deg,
      var(--bg) 0%,
      rgba(20, 17, 15, 0.95) 80%,
      rgba(20, 17, 15, 0.7) 100%);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  padding: var(--sp-4) 0;
  border-bottom: 1px solid var(--hair);
  margin-bottom: var(--sp-8);
  display: flex;
  align-items: center;
  gap: var(--sp-4);
}
.csh-avatar {
  width: 44px; height: 44px;
  border-radius: 50%;
  background:
    linear-gradient(135deg,
      var(--bg-elev-high) 0%,
      var(--bg-elev) 100%);
  border: 1px solid var(--hair-strong);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-mono);
  font-size: var(--fs-caption);
  font-weight: 600;
  color: var(--text-2);
  flex-shrink: 0;
  letter-spacing: var(--ls-wide);
}
.csh-name {
  font-family: var(--font-display);
  font-size: var(--fs-h1);
  font-weight: 500;
  letter-spacing: var(--ls-tight);
  color: var(--text);
  line-height: 1.1;
}
.csh-role { font-size: var(--fs-body-sm); color: var(--text-3); margin-top: 2px; }
.csh-actions { margin-left: auto; display: flex; gap: var(--sp-3); }

/* Pattern Read — editorial hero */
.pattern-read { margin: var(--sp-12) 0; }
.pattern-read-eyebrow {
  font-family: var(--font-mono);
  font-size: var(--fs-mono);
  letter-spacing: var(--ls-widest);
  color: var(--gold);
  text-shadow: 0 0 12px var(--gold-glow);
  text-align: center;
  text-transform: uppercase;
  margin-bottom: var(--sp-4);
}
.pattern-read-title {
  font-family: var(--font-display);
  font-size: var(--fs-display-xl);
  font-weight: 400;
  line-height: var(--lh-display);
  letter-spacing: var(--ls-display);
  text-align: center;
  color: var(--text);
  margin: 0 0 var(--sp-6);
}
.pattern-read-byline {
  font-family: var(--font-mono);
  font-size: var(--fs-mono);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--text-3);
  text-align: center;
  margin-bottom: var(--sp-10);
}
.pattern-read-body {
  font-family: var(--font-editorial);
  font-size: var(--fs-h2);
  line-height: 1.75;
  color: var(--text);
  max-width: 560px;
  margin: 0 auto;
}
.pattern-read-body p { margin-bottom: 1.3em; }

/* Devil's Advocate */
.devils-advocate {
  margin: var(--sp-12) 0;
  padding: var(--sp-8);
  border-left: 3px solid var(--brick);
  background:
    linear-gradient(90deg,
      var(--brick-fill) 0%,
      transparent 100%);
  border-radius: 0 var(--r) var(--r) 0;
}
.devils-advocate-eyebrow {
  font-family: var(--font-mono);
  font-size: var(--fs-mono);
  letter-spacing: var(--ls-widest);
  text-transform: uppercase;
  color: var(--brick);
  margin-bottom: var(--sp-2);
}
.devils-advocate-title {
  font-family: var(--font-display);
  font-size: var(--fs-display);
  font-weight: 500;
  color: var(--text);
  margin: 0 0 var(--sp-6);
  letter-spacing: var(--ls-tight);
}
.devils-advocate-concerns { display: flex; flex-direction: column; gap: var(--sp-5); counter-reset: da; }
.devils-advocate-concern {
  font-family: var(--font-editorial);
  font-size: var(--fs-body);
  line-height: var(--lh-relaxed);
  color: var(--text);
  counter-increment: da;
  padding-left: var(--sp-6);
  position: relative;
}
.devils-advocate-concern::before {
  content: counter(da);
  position: absolute;
  left: 0;
  top: 3px;
  font-family: var(--font-mono);
  font-size: var(--fs-tiny);
  color: var(--brick);
  letter-spacing: var(--ls-wide);
  font-weight: 600;
}

/* HPF Profile card */
.hpf-card { margin: var(--sp-10) 0; }
.hpf-card-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  margin-bottom: var(--sp-6);
}
.hpf-dimensions-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--sp-4);
}
.hpf-dimension {
  padding: var(--sp-4);
  background: var(--bg);
  border: 1px solid var(--hair);
  border-radius: var(--r);
}
.hpf-dimension-name {
  font-family: var(--font-display);
  font-size: var(--fs-h3);
  font-weight: 600;
  color: var(--text);
  margin-bottom: var(--sp-1);
  letter-spacing: var(--ls-tight);
}
.hpf-score {
  font-family: var(--font-mono);
  font-size: var(--fs-display);
  font-weight: 500;
  color: var(--gold);
  line-height: 1;
  margin: var(--sp-2) 0;
}
.hpf-score::after {
  content: '/10';
  font-size: var(--fs-body-sm);
  color: var(--text-3);
  font-weight: 400;
  margin-left: 4px;
}
.hpf-narrative {
  font-family: var(--font-editorial);
  font-size: var(--fs-body-sm);
  line-height: 1.6;
  color: var(--text-2);
}

/* ═══════════════════════════════════════════════════════════════════════════
   INTERVIEW LIST + DETAIL — Part 8
   ═══════════════════════════════════════════════════════════════════════════ */

.interview-row {
  display: grid;
  grid-template-columns: 100px 1fr auto auto;
  gap: var(--sp-5);
  align-items: center;
  padding: var(--sp-4) var(--sp-6);
  border-bottom: 1px solid var(--hair);
  transition: background var(--dur) var(--ease);
  text-decoration: none;
  color: inherit;
}
.interview-row:hover { background: var(--bg-elev); }
.interview-row:last-child { border-bottom: 0; }
.interview-row-avatar {
  width: 32px; height: 32px;
  border-radius: 50%;
  background: var(--bg-elev);
  border: 1px solid var(--hair-strong);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--font-mono);
  font-size: var(--fs-tiny);
  font-weight: 600;
  color: var(--text-3);
  letter-spacing: var(--ls-wide);
}
.interview-row-name { font-size: var(--fs-body); font-weight: 600; color: var(--text); }
.interview-row-role { font-size: var(--fs-body-sm); color: var(--text-3); margin-top: 2px; }
.interview-row-time {
  font-family: var(--font-mono);
  font-size: var(--fs-mono);
  color: var(--text-3);
  letter-spacing: var(--ls-wide);
  white-space: nowrap;
}

/* ═══════════════════════════════════════════════════════════════════════════
   COMPARE PAGE — Part 9
   ═══════════════════════════════════════════════════════════════════════════ */

.compare-row {
  display: grid;
  gap: var(--sp-4);
  padding: var(--sp-5);
  border-bottom: 1px solid var(--hair);
  align-items: start;
}
.compare-row:last-child { border-bottom: 0; }
.compare-row-label {
  font-family: var(--font-display);
  font-size: var(--fs-h3);
  font-weight: 500;
  color: var(--text);
  letter-spacing: var(--ls-tight);
}
.compare-row-meta {
  font-family: var(--font-mono);
  font-size: var(--fs-mono);
  color: var(--text-3);
  letter-spacing: var(--ls-wide);
  margin-top: var(--sp-1);
}
.compare-cell {
  text-align: center;
  padding: var(--sp-3);
  border-radius: var(--r);
}
.compare-cell-score {
  font-family: var(--font-display);
  font-size: var(--fs-display);
  font-weight: 500;
  color: var(--text);
  line-height: 1;
}
.compare-cell.winner {
  background: var(--gold-fill);
  box-shadow: inset 0 0 0 1px var(--gold-border);
}
.compare-cell.winner .compare-cell-score {
  color: var(--gold);
  text-shadow: 0 0 16px var(--gold-glow);
}

/* ─── Part 10-11: Settings + Org Insights ──────────────────────────────── */
.settings-content .page-head {
  margin-bottom: 16px;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--hair);
}
.insights-section-head {
  margin-bottom: 16px;
}
.insights-section-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 4px;
}
.insights-section-sub {
  font-size: var(--fs-caption);
  color: var(--text-3);
}
.insights-headline {
  background: var(--gold-fill);
  border: 1px solid var(--gold-border);
  border-radius: var(--r);
  padding: 16px 20px;
  margin-bottom: 16px;
}
.insights-headline-label {
  font-family: var(--font-mono);
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--gold);
  margin-bottom: 6px;
}
.insights-headline-text {
  font-family: var(--font-display);
  font-size: var(--fs-h1);
  font-weight: 500;
  color: var(--text);
}

/* ─── Part 16: Skeleton + empty state helpers ───────────────────────────── */
.skeleton-list {
  padding: 4px 0;
}

/* ─── Part 15: Motion + focus + hover transitions ───────────────────────── */

/* Global focus ring — gold, not browser-default blue */
:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 2px;
  border-radius: inherit;
}
:focus:not(:focus-visible) { outline: none; }

/* Skip-to-main link — invisible until focused, appears at top-left */
.skip-link {
  position: absolute;
  top: -48px;
  left: 0;
  z-index: 10000;
  background: var(--gold);
  color: #0A0908;
  padding: 8px 18px;
  font-weight: 600;
  font-size: var(--fs-body-sm);
  text-decoration: none;
  border-radius: 0 0 6px 0;
  transition: top 0.15s ease;
}
.skip-link:focus { top: 0; }

/* Interactive rows get smooth hover transitions */
.candidate-row,
.interview-row,
.compare-row,
.activity-feed-item,
.nav-item {
  transition: background var(--dur-fast) var(--ease-out),
              box-shadow var(--dur-fast) var(--ease-out);
}

/* Card elevation on hover */
.card:not(.no-hover):hover,
.card-elev:not(.no-hover):hover {
  box-shadow: 0 4px 20px rgba(0,0,0,0.35), 0 0 0 1px var(--hair);
  transition: box-shadow var(--dur-fast) var(--ease-out);
}

/* Button press feedback */
.btn:not(:disabled):active {
  transform: translateY(1px) scale(0.99);
  transition: transform 80ms ease;
}

/* Smooth opacity on disabled states */
[disabled], .disabled {
  transition: opacity var(--dur-fast) var(--ease-out);
}

/* ═══════════════════════════════════════════════════════════════════════
   RESPONSIVE — PART 5 additions
   900px: icon-rail sidebar (labels hidden, icons remain)
   600px: typography scale + 2x2 stat grids + touch targets
   ═══════════════════════════════════════════════════════════════════════ */

/* Icon-rail: between 721px and 900px the sidebar auto-collapses to icons.
   Reuses the existing .sidebar-collapsed rules so no JS toggle needed. */
@media (min-width: 721px) and (max-width: 900px) {
  .shell { --sidebar-w: 52px; }
  .nav-label,
  .brand-name,
  .nav-section-label,
  .user-info,
  .signout-link { display: none !important; }
  .sidebar { padding: var(--sp-4) 0; overflow-x: hidden; }
  .brand { justify-content: center; padding: 0 0 var(--sp-4); }
  .nav-item {
    justify-content: center;
    padding: 8px 0;
    margin: 0;
    border-radius: 0;
  }
  .nav-item.active::before { display: none; }
  .sidebar-toggle-btn { display: none; }
  .user-chip { justify-content: center; padding: 6px 0; }
  .nav-bottom { display: flex; flex-direction: column; align-items: center; }
}

/* ─────────────────────────────────────────────────────────────────────────
   Print — candidate.html and interview.html
   Hides chrome; renders narrative content on white with dark text.
   Activate: Cmd+P / File > Print from candidate or interview detail page.
   ───────────────────────────────────────────────────────────────────────── */
@media print {
  /* Reset to paper */
  *, *::before, *::after { box-shadow: none !important; text-shadow: none !important; }
  body { background: #fff !important; color: #111 !important; font-size: 11pt; }

  /* Hide chrome */
  .sidebar,
  .skip-link,
  .sidebar-toggle-btn,
  .tutorial-tabs-strip,
  #tutorial-popup-overlay,
  #jedah-verify-banner,
  #upgrade-required-modal,
  .btn,
  .page-head-actions,
  .cand-actions,
  .refs-actions,
  .share-token-section,
  .section-actions,
  [data-close-modal],
  [id$="-modal"]:not([aria-hidden="false"]) { display: none !important; }

  /* Full-width layout — no sidebar column */
  .shell { display: block !important; }
  .content { padding: 0 !important; margin: 0 !important; max-width: 100% !important; }

  /* Section cards: clean borders, avoid mid-section page breaks */
  .section-card,
  .card { border: 1px solid #ddd !important; background: #fff !important;
          break-inside: avoid; margin-bottom: 16pt; padding: 12pt; }

  /* Typography */
  h1, h2, h3, .page-head-title, .cand-name { color: #111 !important; }
  a { color: #111 !important; text-decoration: none !important; }

  /* Candidate header */
  .cand-header { border-bottom: 1pt solid #ddd !important; padding-bottom: 8pt !important; }

  /* Don't break inside analysis narrative blocks */
  .pattern-read-text,
  .hpf-dimension,
  .adler-factor,
  .person-dimension { break-inside: avoid; }

  /* Score badges readable on paper */
  .score-badge,
  .dimension-score { background: #f5f5f5 !important; color: #111 !important;
                     border: 1px solid #ccc !important; }

  /* Interview transcript readable */
  .transcript-chunk { border-left: 2pt solid #888 !important; padding-left: 8pt; break-inside: avoid; }

  /* Page numbers via CSS (supported in Chrome) */
  @page { margin: 1.5cm; size: A4 portrait; }
  .content > *:first-child { margin-top: 0; }
}

/* Narrow: page-head title scaling and 2x2 stat grids */
@media (max-width: 600px) {
  .page-head-title { font-size: 28px !important; line-height: 1.1; }
  .hero-title { font-size: var(--fs-display-lg) !important; }

  /* Stats stay 2x2 — more scannable than a single column at 375px. */
  .stats-row {
    grid-template-columns: repeat(2, 1fr) !important;
    gap: 8px !important;
  }

  /* Candidate header compact */
  .cand-header { min-height: 56px; padding: 8px 12px; }
  .cand-header .cand-name { font-size: 16px !important; }

  /* Rubric grid horizontal scroll */
  .rubric-grid-wrap,
  .table-wrap {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
  }
}

/* ============================================================
   Score edit affordance -- editorial redesign
   ============================================================ */

/* Pencil button */
.score-edit-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: rgba(255,255,255,0.35);
  cursor: pointer;
  transition: color 0.15s ease, background 0.15s ease, border-color 0.15s ease, transform 0.12s ease;
  flex-shrink: 0;
  line-height: 1;
}
.score-edit-btn:hover {
  color: #D4A864;
  background: rgba(212,168,100,0.06);
  border-color: rgba(212,168,100,0.20);
}
.score-edit-btn:focus-visible {
  outline: none;
  color: #D4A864;
  background: rgba(212,168,100,0.10);
  border-color: rgba(212,168,100,0.50);
  box-shadow: 0 0 0 3px rgba(212,168,100,0.15);
}
.score-edit-btn:active { transform: scale(0.92); }
@media (hover: none) and (pointer: coarse) {
  .score-edit-btn { width: 44px; height: 44px; }
}

/* Score-as-trigger (replaces pencil button) */
.score-trigger {
  display: inline-flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 2px;
  padding: 6px 8px;
  margin: -6px -8px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  text-align: right;
}
button.score-trigger {
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
}
button.score-trigger:hover {
  background: rgba(212, 168, 100, 0.06);
  border-color: rgba(212, 168, 100, 0.25);
}
button.score-trigger:focus-visible {
  outline: none;
  background: rgba(212, 168, 100, 0.10);
  border-color: rgba(212, 168, 100, 0.55);
  box-shadow: 0 0 0 3px rgba(212, 168, 100, 0.15);
}
button.score-trigger[aria-expanded="true"] {
  background: rgba(212, 168, 100, 0.12);
  border-color: rgba(212, 168, 100, 0.55);
}
.score-trigger-value {
  font-family: 'Fraunces', 'Georgia', serif;
  font-size: 32px;
  font-weight: 500;
  line-height: 1;
  color: var(--text, #fafafa);
}
.score-trigger-out-of {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 10px;
  letter-spacing: 0.12em;
  color: rgba(255, 255, 255, 0.40);
  margin-left: 3px;
}
.score-trigger-dash {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 24px;
  color: rgba(255, 255, 255, 0.25);
}
/* Deep-analysis fit score trigger — larger number to match existing .deep-score-num */
.deep-score-trigger-value {
  font-family: inherit;
  font-size: var(--fs-display-2xl);
  font-weight: 600;
  letter-spacing: -1.6px;
  line-height: 1;
  color: var(--text);
}

/* Score layout stacks */
.dim-score-stack {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
}
.dim-score-row {
  display: flex;
  align-items: center;
  gap: 4px;
}
.dim-score-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  justify-content: flex-end;
}
/* HPF card grid: dim-score-stack takes the old hpf-score grid position */
.hpf-card .dim-score-stack {
  grid-column: 2;
  grid-row: 1 / span 2;
  align-self: start;
  justify-self: end;
}

/* History pill */
.score-history-pill {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 2px 7px 2px 5px;
  border: 1px solid rgba(212,168,100,0.25);
  border-radius: 20px;
  background: rgba(212,168,100,0.06);
  color: #D4A864;
  font-size: 10px;
  font-family: var(--font-mono, monospace);
  font-weight: 500;
  letter-spacing: 0.02em;
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease;
  line-height: 1;
}
.score-history-pill:hover {
  background: rgba(212,168,100,0.12);
  border-color: rgba(212,168,100,0.45);
}
.score-history-pill:focus-visible {
  outline: none;
  box-shadow: 0 0 0 3px rgba(212,168,100,0.20);
}
.score-history-count { font-variant-numeric: tabular-nums; }

/* Was caption */
.score-was-caption {
  display: inline-flex;
  align-items: baseline;
  gap: 3px;
  font-size: 10px;
  color: rgba(255,255,255,0.38);
  font-style: italic;
  font-family: "Source Serif 4", Georgia, serif;
}
.score-was-label { font-weight: 400; }
.score-was-value {
  font-style: normal;
  font-family: var(--font-mono, monospace);
  font-size: 10px;
  color: rgba(255,255,255,0.50);
}
.score-was-source { font-weight: 400; }

/* Compact popover edit dialog (score-as-trigger pattern) */
.hpf-edit-popover {
  position: absolute;
  top: 100%;
  margin-top: 8px;
  width: 300px;
  z-index: 50;
  background: rgba(15, 18, 24, 0.98);
  border: 1px solid rgba(212, 168, 100, 0.30);
  border-radius: 12px;
  box-shadow: 0 14px 36px rgba(0, 0, 0, 0.45);
  backdrop-filter: blur(16px);
  padding: 16px 18px;
  animation: hpfPopoverIn 200ms cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
.hpf-edit-popover--right { right: 0; }
.hpf-edit-popover--left  { left: 0; }
@keyframes hpfPopoverIn {
  from { opacity: 0; transform: translateY(-6px) scale(0.98); }
  to   { opacity: 1; transform: translateY(0)    scale(1); }
}
.hpf-edit-popover-header {
  display: flex;
  align-items: baseline;
  gap: 8px;
  margin-bottom: 14px;
  padding-bottom: 10px;
  border-bottom: 1px solid rgba(212, 168, 100, 0.18);
}
.hpf-edit-popover-eyebrow {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 9px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #D4A864;
}
.hpf-edit-popover-trait {
  font-family: 'Fraunces', 'Georgia', serif;
  font-size: 16px;
  font-weight: 500;
  color: #fafafa;
}
.hpf-edit-popover-field-label {
  display: block;
  font-family: 'IBM Plex Mono', monospace;
  font-size: 9px;
  letter-spacing: 0.15em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, 0.55);
  margin: 12px 0 6px;
}
.hpf-edit-popover-score {
  width: 80px;
  height: 40px;
  padding: 0 12px;
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: 8px;
  background: rgba(0, 0, 0, 0.30);
  color: #fafafa;
  font-family: 'Fraunces', 'Georgia', serif;
  font-size: 18px;
  font-weight: 500;
  text-align: center;
  -webkit-appearance: none;
  -moz-appearance: textfield;
}
.hpf-edit-popover-score::-webkit-inner-spin-button,
.hpf-edit-popover-score::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.hpf-edit-popover-score:focus {
  outline: none;
  border-color: rgba(212, 168, 100, 0.55);
  box-shadow: 0 0 0 3px rgba(212, 168, 100, 0.12);
}
.hpf-edit-popover-reason {
  width: 100%;
  min-height: 64px;
  padding: 8px 10px;
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: 8px;
  background: rgba(0, 0, 0, 0.30);
  color: #fafafa;
  font-family: 'IBM Plex Sans', sans-serif;
  font-size: 13px;
  line-height: 1.5;
  resize: vertical;
}
.hpf-edit-popover-reason::placeholder {
  color: rgba(255, 255, 255, 0.30);
  font-style: italic;
}
.hpf-edit-popover-reason:focus {
  outline: none;
  border-color: rgba(212, 168, 100, 0.55);
  box-shadow: 0 0 0 3px rgba(212, 168, 100, 0.10);
}
.hpf-edit-popover-counter {
  font-family: 'IBM Plex Mono', monospace;
  font-size: 9px;
  letter-spacing: 0.12em;
  color: rgba(255, 255, 255, 0.35);
  margin-top: 4px;
  text-align: right;
}
.hpf-edit-popover-error {
  margin-top: 8px;
  padding: 7px 10px;
  background: rgba(239, 68, 68, 0.08);
  border: 1px solid rgba(239, 68, 68, 0.25);
  border-radius: 6px;
}
.hpf-edit-popover-error[hidden] { display: none; }
.hpf-edit-popover-error-text { font-size: 11px; color: #f87171; line-height: 1.4; }
.hpf-edit-popover-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid rgba(212, 168, 100, 0.12);
}
.hpf-edit-popover-cancel,
.hpf-edit-popover-save {
  height: 32px;
  padding: 0 14px;
  border-radius: 7px;
  font-family: 'IBM Plex Sans', sans-serif;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.12s ease;
}
.hpf-edit-popover-cancel {
  background: transparent;
  color: rgba(255, 255, 255, 0.65);
  border: 1px solid rgba(255, 255, 255, 0.15);
}
.hpf-edit-popover-cancel:hover {
  background: rgba(255, 255, 255, 0.04);
  color: #fafafa;
  border-color: rgba(255, 255, 255, 0.25);
}
.hpf-edit-popover-save {
  background: #D4A864;
  color: #0A0908;
  border: 1px solid #D4A864;
}
.hpf-edit-popover-save:disabled {
  background: rgba(212, 168, 100, 0.18);
  color: rgba(10, 9, 8, 0.55);
  border-color: rgba(212, 168, 100, 0.18);
  cursor: not-allowed;
}
.hpf-edit-popover-save:hover:not(:disabled) {
  background: #E2B978;
  border-color: #E2B978;
}
@media (prefers-reduced-motion: reduce) {
  .hpf-edit-popover { animation: none; }
}

/* Score editor dialog */
.score-editor {
  margin-top: 10px;
  padding: 16px;
  background: #141210;
  border: 1px solid rgba(212,168,100,0.22);
  border-radius: 10px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.45);
  animation: scoreEditorIn 0.22s cubic-bezier(0.16,1,0.3,1) both;
}
.score-editor.score-editor-exit {
  animation: scoreEditorOut 0.18s cubic-bezier(0.16,1,0.3,1) both;
}
.score-editor-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  margin-bottom: 14px;
}
.score-editor-eyebrow {
  font-size: 9px;
  font-family: var(--font-mono, monospace);
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #D4A864;
  margin-bottom: 3px;
}
.score-editor-trait {
  font-family: "Fraunces", Georgia, serif;
  font-size: 15px;
  font-weight: 500;
  color: #fafafa;
  line-height: 1.25;
}
.score-editor-fields { display: flex; flex-direction: column; gap: 12px; margin-bottom: 14px; }
.score-editor-field { display: flex; flex-direction: column; gap: 5px; }
.score-editor-label {
  font-size: 10px;
  font-family: var(--font-mono, monospace);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: rgba(255,255,255,0.50);
}

/* Stepper */
.score-stepper { display: flex; align-items: center; gap: 0; width: fit-content; }
.score-stepper-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 34px;
  border: 1px solid rgba(212,168,100,0.30);
  background: rgba(212,168,100,0.04);
  color: #D4A864;
  font-size: 16px;
  font-weight: 300;
  cursor: pointer;
  transition: background 0.12s ease;
  user-select: none;
}
.score-stepper-btn:first-child { border-radius: 6px 0 0 6px; }
.score-stepper-btn:last-child { border-radius: 0 6px 6px 0; }
.score-stepper-btn:hover:not(:disabled) { background: rgba(212,168,100,0.12); }
.score-stepper-btn:disabled { opacity: 0.35; cursor: not-allowed; }
.score-stepper-input {
  width: 44px;
  height: 34px;
  border-top: 1px solid rgba(212,168,100,0.30);
  border-bottom: 1px solid rgba(212,168,100,0.30);
  border-left: none;
  border-right: none;
  background: rgba(212,168,100,0.04);
  color: #fafafa;
  font-family: var(--font-mono, monospace);
  font-size: 15px;
  font-weight: 600;
  text-align: center;
  -webkit-appearance: none;
  -moz-appearance: textfield;
}
.score-stepper-input::-webkit-inner-spin-button,
.score-stepper-input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }
.score-stepper-input:focus { outline: none; background: rgba(212,168,100,0.08); }
.score-editor-hint {
  font-size: 10px;
  font-family: var(--font-mono, monospace);
  color: rgba(255,255,255,0.30);
  margin-left: 8px;
  align-self: center;
}

/* Reason textarea */
.score-editor-reason {
  width: 100%;
  box-sizing: border-box;
  padding: 8px 10px;
  background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.10);
  border-radius: 6px;
  color: #fafafa;
  font-family: "IBM Plex Sans", sans-serif;
  font-size: 12px;
  line-height: 1.5;
  resize: vertical;
  transition: border-color 0.15s ease;
}
.score-editor-reason:focus {
  outline: none;
  border-color: rgba(212,168,100,0.40);
  background: rgba(255,255,255,0.06);
}
.score-editor-reason-meta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-size: 10px;
  font-family: var(--font-mono, monospace);
  color: rgba(255,255,255,0.30);
}
.score-editor-counter.near-limit { color: #D4A864; }
.score-editor-counter.over-limit { color: #ef4444; }
.score-editor-min-hint { color: rgba(255,255,255,0.28); }
.score-editor-min-hint.satisfied { color: rgba(100,200,120,0.75); }

/* Error state */
.score-editor-error {
  display: flex;
  align-items: flex-start;
  gap: 6px;
  padding: 8px 10px;
  background: rgba(239,68,68,0.08);
  border: 1px solid rgba(239,68,68,0.25);
  border-radius: 6px;
  margin-bottom: 12px;
}
.score-editor-error[hidden] { display: none; }
.score-editor-error-glyph {
  font-size: 11px;
  font-weight: 700;
  color: #f87171;
  flex-shrink: 0;
  margin-top: 1px;
}
.score-editor-error-text { font-size: 11px; color: #f87171; line-height: 1.4; }

/* Actions */
.score-editor-actions { display: flex; gap: 8px; align-items: center; margin-top: 14px; }
.score-editor-cancel {
  padding: 6px 14px;
  border: 1px solid rgba(255,255,255,0.12);
  border-radius: 6px;
  background: transparent;
  color: rgba(255,255,255,0.55);
  font-size: 12px;
  cursor: pointer;
  transition: border-color 0.15s ease, color 0.15s ease;
}
.score-editor-cancel:hover { border-color: rgba(255,255,255,0.25); color: rgba(255,255,255,0.80); }
.score-editor-save {
  padding: 6px 16px;
  border: none;
  border-radius: 6px;
  background: #D4A864;
  color: #0A0908;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  transition: opacity 0.15s ease, background 0.15s ease;
}
.score-editor-save:disabled { opacity: 0.40; cursor: not-allowed; }
.score-editor-save:not(:disabled):hover { background: #e0b870; }

/* History popover */
.score-history-popover {
  position: fixed;
  z-index: 9999;
  background: #141210;
  border: 1px solid rgba(212,168,100,0.22);
  border-radius: 10px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.55);
  padding: 14px 16px;
  min-width: 240px;
  max-width: 340px;
  animation: historyPopoverIn 0.20s cubic-bezier(0.16,1,0.3,1) both;
}
.score-hist-popover-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 12px;
}
.score-hist-popover-title {
  font-family: "Fraunces", Georgia, serif;
  font-size: 13px;
  font-weight: 500;
  color: #fafafa;
}
.score-hist-popover-close {
  width: 24px;
  height: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: none;
  background: transparent;
  color: rgba(255,255,255,0.40);
  font-size: 16px;
  cursor: pointer;
  border-radius: 4px;
  line-height: 1;
}
.score-hist-popover-close:hover { color: rgba(255,255,255,0.80); background: rgba(255,255,255,0.06); }
.score-hist-entries { display: flex; flex-direction: column; gap: 8px; }
.history-entry {
  padding: 9px 10px;
  background: rgba(255,255,255,0.03);
  border: 1px solid rgba(255,255,255,0.07);
  border-radius: 6px;
}
.history-entry-ai { border-color: rgba(212,168,100,0.15); background: rgba(212,168,100,0.04); }
.history-entry-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 4px;
}
.history-entry-time {
  font-size: 9px;
  font-family: var(--font-mono, monospace);
  color: rgba(255,255,255,0.35);
  letter-spacing: 0.02em;
}
.history-entry-badge {
  font-size: 9px;
  font-family: var(--font-mono, monospace);
  font-weight: 600;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: rgba(212,168,100,0.70);
  padding: 1px 5px;
  border: 1px solid rgba(212,168,100,0.25);
  border-radius: 3px;
}
.history-entry-delta {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-bottom: 5px;
}
.history-entry-score {
  font-family: var(--font-mono, monospace);
  font-size: 14px;
  font-weight: 600;
  color: #fafafa;
}
.history-entry-arrow { color: rgba(255,255,255,0.30); font-size: 12px; }
.history-entry-reason {
  font-size: 11px;
  color: rgba(255,255,255,0.55);
  font-style: italic;
  font-family: "Source Serif 4", Georgia, serif;
  line-height: 1.45;
}
.history-entry-reason::before { content: '"'; }
.history-entry-reason::after { content: '"'; }

/* Animations */
@keyframes scoreEditorIn {
  from { opacity: 0; transform: translateY(-8px) scale(0.985); }
  to   { opacity: 1; transform: none; }
}
@keyframes scoreEditorOut {
  from { opacity: 1; transform: none; }
  to   { opacity: 0; transform: translateY(-8px) scale(0.985); }
}
@keyframes historyPopoverIn {
  from { opacity: 0; transform: translateY(-6px) scale(0.98); }
  to   { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  .score-editor,
  .score-editor.score-editor-exit,
  .score-history-popover {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}

/* Mobile stepper touch targets */
@media (max-width: 480px) {
  .score-stepper-btn { width: 36px; height: 38px; }
  .score-stepper-input { width: 48px; height: 38px; }
}

/* ─── SCORE-BAND COLORING — consistent /10 bands app-wide ────────────────────
   Below 5 = amber (warning), 5 to 7.9 = neutral gold, 8+ = sage green.
   Classes come from jedahScoreBand() in app.js. --band-color feeds bar fills
   and inline styles so bars and numbers share one hue. Kept at the end of
   this sheet so the color wins ties against earlier single-class rules. */
.score-band-low  { --band-color: var(--amber);       color: var(--amber); }
.score-band-mid  { --band-color: var(--gold);        color: var(--gold); }
.score-band-high { --band-color: var(--sage-bright); color: var(--sage-bright); }

/* Rubric bar fills tinted by band (live rubric + interview history bars) */
.rubric-fill.score-band-low,
.rubric-fill.score-band-mid,
.rubric-fill.score-band-high { background: var(--band-color); }

/* Dimension score chips (Person / Company Dimensions) keep their pill fill */
.pd-dim-score.score-band-low  { background: var(--amber-fill); }
.pd-dim-score.score-band-mid  { background: var(--gold-fill); }
.pd-dim-score.score-band-high { background: var(--sage-fill); }

/* Beat higher-specificity color rules earlier in this sheet */
.adler-weighted-avg .adler-wa-score.score-band-low,
.adler-weighted-avg .adler-wa-score.score-band-mid,
.adler-weighted-avg .adler-wa-score.score-band-high { color: var(--band-color); }

/* ─── Recent roles sidebar (recent-roles.js) ──────────────────────
   Additive text list next to the career-viz SVG on candidate.html
   (two-column via .crl-wrap grid) and stacked below the chart in
   the Zoom panel. crl- prefix to avoid collisions. */
.crl-wrap { display: grid; grid-template-columns: 1fr; gap: 16px; align-items: start; }
@media (min-width: 900px) { .crl-wrap { grid-template-columns: minmax(0, 1fr) 260px; } }
.crl-panel { min-width: 0; }
.crl-heading { font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-3, rgba(255,255,255,0.55)); font-weight: 500; margin: 0 0 8px; }
.crl-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; }
.crl-item { padding: 8px 10px; border-radius: 6px; background: rgba(255,255,255,0.02); border: 1px solid rgba(255,255,255,0.06); }
.crl-item.crl-current { border-left: 2px solid var(--gold, #D4A864); background: rgba(212,168,100,0.04); }
.crl-title { font-size: 13px; font-weight: 600; color: var(--text-1, #f5f2eb); line-height: 1.35; }
.crl-company { font-size: 12px; color: var(--text-2, rgba(255,255,255,0.7)); line-height: 1.4; margin-top: 1px; }
.crl-dates { font-size: 11px; color: var(--text-3, rgba(255,255,255,0.5)); margin-top: 3px; font-variant-numeric: tabular-nums; }
.crl-show-all { margin-top: 10px; background: none; border: 1px dashed rgba(255,255,255,0.14); color: var(--text-3, rgba(255,255,255,0.55)); font: inherit; font-size: 11px; padding: 6px 10px; border-radius: 6px; cursor: pointer; width: 100%; }
.crl-show-all:hover { color: var(--text-1, #f5f2eb); border-color: rgba(255,255,255,0.28); }
.crl-show-all:focus-visible { outline: 2px solid var(--gold, #D4A864); outline-offset: 2px; }
