/* ==========================================================================
   Outbound Partners - internal (private) dashboard styling
   --------------------------------------------------------------------------
   The recruiter side (dashboard, candidate, upload, login) on the SAME light
   Outbound Partners brand as the public /apply page. Loaded AFTER brand.css.

   Every value here comes from a :root token in brand.css - no hard-coded
   colours. Rules are scoped under `.app` (set on <body> in base.html) so they
   sit above brand.css defaults without touching the public pages.
   ========================================================================== */

/* ---- Shell ------------------------------------------------------------- */
.app-top{display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:16px 28px;background:var(--panel);border-bottom:1px solid var(--line)}
.app-brand{display:inline-flex;align-items:center;gap:12px}
.app-sub{color:var(--muted);font-size:13px}
.app-nav{display:flex;align-items:center;gap:8px;flex-wrap:wrap}

.app .wrap{max-width:1120px;margin:0 auto;padding:28px 28px 72px}

/* Login page: no nav, just the logo centred on the cream background */
.login-brand{display:flex;justify-content:center;padding:52px 24px 4px}

.app h1,.app h2,.app h3,.app h4{font-family:var(--font-head);color:var(--ink);
  font-weight:700;line-height:1.15;letter-spacing:-.01em}

/* ---- Buttons ----------------------------------------------------------- */
/* default = secondary: white, dark-green border + text.
   width/margin/box-shadow are reset here to override the public .btn in
   brand.css (which is a full-width lime CTA with a glow). */
.app .btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;
  width:auto;margin:0;box-shadow:none;
  font-family:var(--font-head);font-weight:600;font-size:14px;line-height:1;
  padding:9px 15px;border-radius:var(--btn-radius);cursor:pointer;
  border:1.5px solid var(--accent);background:var(--panel);color:var(--accent);
  transition:background .15s,color .15s,border-color .15s,transform .15s}
.app .btn:hover{background:var(--panel-soft);transform:translateY(-1px)}
/* primary = dark-green filled */
.app .btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.app .btn.primary:hover{background:var(--accent-ink);border-color:var(--accent-ink)}
/* good = the ONE high-emphasis lime action (shortlist), like the landing CTA */
.app .btn.good{background:var(--lime);border-color:var(--lime);color:var(--accent)}
.app .btn.good:hover{background:var(--lime-dark);border-color:var(--lime-dark)}
/* bad = destructive: white with muted-red border + text */
.app .btn.bad{background:var(--panel);border-color:var(--chip-bad-ink);color:var(--chip-bad-ink)}
.app .btn.bad:hover{background:var(--chip-bad-bg)}
/* ghost = text-only link button */
.app .btn.ghost{background:transparent;border-color:transparent;color:var(--accent)}
.app .btn.ghost:hover{background:var(--panel-soft)}

/* ---- Tabs -------------------------------------------------------------- */
.tabs{display:flex;align-items:center;gap:8px;margin:24px 0 18px;flex-wrap:wrap}
.tab{display:inline-flex;align-items:center;padding:9px 16px;border-radius:999px;
  border:1px solid var(--line);background:var(--panel);color:var(--muted);
  font-weight:600;font-size:14px;transition:border-color .15s,color .15s}
.tab:hover{border-color:var(--accent);color:var(--accent)}
.tab .n{margin-left:8px;padding:1px 8px;border-radius:999px;
  background:var(--panel-soft);color:var(--muted);font-size:12px}
.tab.active{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
.tab.active:hover{color:var(--on-accent)}
.tab.active .n{background:var(--on-accent-soft);color:var(--on-accent)}

/* ---- Search input ------------------------------------------------------ */
.search{padding:10px 13px;border-radius:var(--btn-radius);border:1px solid var(--line);
  background:var(--panel);color:var(--ink);font-family:inherit;font-size:14px;width:280px}
.search:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(13,61,48,.12)}
.search::placeholder{color:var(--faint)}

/* ---- Table ------------------------------------------------------------- */
.table-wrap{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);overflow:hidden;margin-top:6px}
.app table{width:100%;border-collapse:collapse}
.app th{text-align:left;color:var(--muted);font-size:12px;text-transform:uppercase;
  letter-spacing:.5px;font-weight:600;padding:13px 16px;background:var(--panel-soft);
  border-bottom:1px solid var(--line)}
.app td{padding:15px 16px;border-bottom:1px solid var(--line);vertical-align:middle;color:var(--body)}
.app tbody tr:last-child td{border-bottom:0}
.app tbody tr:hover td{background:var(--hover)}

/* ---- Score badge ------------------------------------------------------- */
.score{display:inline-flex;align-items:center;justify-content:center;
  min-width:46px;height:34px;border-radius:var(--btn-radius);font-weight:700;font-size:15px}
.s-good{background:var(--chip-good-bg);color:var(--chip-good-ink)}
.s-warn{background:var(--chip-warn-bg);color:var(--chip-warn-ink)}
.s-bad{background:var(--chip-bad-bg);color:var(--chip-bad-ink)}
.s-none{background:var(--panel-soft);color:var(--faint)}

/* ---- Status chips / pills ---------------------------------------------- */
.pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:12px;font-weight:600}
.pill.src{background:var(--panel-soft);color:var(--muted)}
.pill.dec{background:var(--chip-good-bg);color:var(--chip-good-ink)}   /* shortlisted */
.pill.dec.neg{background:var(--chip-bad-bg);color:var(--chip-bad-ink)} /* rejected by you */
/* standalone status chips (hits / review / reject) */
.chip{display:inline-block;padding:3px 11px;border-radius:999px;font-size:12.5px;font-weight:600}
.chip.hits{background:var(--chip-good-bg);color:var(--chip-good-ink)}
.chip.review{background:var(--chip-warn-bg);color:var(--chip-warn-ink)}
.chip.reject{background:var(--chip-bad-bg);color:var(--chip-bad-ink)}

/* ---- Text helpers ------------------------------------------------------ */
.name{font-weight:600;color:var(--ink)}
.oneliner{color:var(--muted);font-size:13.5px}
.muted{color:var(--muted)}
.faint{color:var(--faint)}
.app a.link{color:var(--accent);font-weight:600}
.app a.link:hover{text-decoration:underline}
.backlink{display:inline-block;color:var(--muted);font-size:14px;margin-bottom:4px}
.backlink:hover{color:var(--accent)}
.empty{padding:64px 20px;text-align:center;color:var(--faint)}

/* ---- Cards / layout ---------------------------------------------------- */
.app .card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:24px;margin-bottom:18px;box-shadow:var(--shadow)}
.app .card.alert{background:var(--chip-bad-bg);border-color:var(--chip-bad-ink)}
.app .card.alert b{color:var(--chip-bad-ink)}
.grid{display:grid;grid-template-columns:1fr 320px;gap:18px}
@media(max-width:820px){.grid{grid-template-columns:1fr}}

/* ---- Score breakdown --------------------------------------------------- */
.dim{display:flex;align-items:center;gap:12px;margin:12px 0;flex-wrap:wrap}
.dim .lbl{width:180px;font-size:13.5px;color:var(--muted)}
.bar{flex:1;height:8px;border-radius:6px;background:var(--track);overflow:hidden}
.bar > i{display:block;height:100%;border-radius:6px}
.dim .v{width:34px;text-align:right;font-weight:700;font-size:13px;color:var(--ink)}
.dim .note{font-size:12.5px;color:var(--faint);flex-basis:100%;margin-left:192px;margin-top:-4px}
.h-good{color:var(--good)}
.h-warn{color:var(--warn)}
.h-bad{color:var(--chip-bad-ink)}
ul.tight{margin:6px 0;padding-left:18px}
ul.tight li{margin:3px 0}
.flag li{color:var(--chip-bad-ink)}

/* ---- Candidate CV + at-a-glance ---------------------------------------- */
.cvbox{white-space:pre-wrap;font:13px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;
  background:var(--panel-soft);border:1px solid var(--line);border-radius:10px;padding:16px;
  max-height:520px;overflow:auto;color:var(--body)}
.kv{display:flex;justify-content:space-between;gap:16px;padding:8px 0;
  border-bottom:1px solid var(--line);font-size:14px;color:var(--ink)}
.kv:last-child{border:0}

form.inline{display:inline}
