/* ─────────────────────────────────────────────────────────────────────────────
   Unity Cup — Data Capture & Register

   Tokens, hairline grid and type are carried over from the PitchTrack portal
   and the Unity Cup proposal so this reads as the same product: monochrome
   ink, one green accent used sparingly, 1px hairlines instead of shadows,
   tabular figures wherever a column is scanned.

   Two themes, and the reason is not decoration. The public register is dark,
   like the rest of the estate. The capture console — `<body class="field">` —
   is light, because it is used on a phone held at arm's length in Nigerian
   daylight, where a dark screen is unreadable. That is the proposal's own
   argument about the agent app, applied to the web console that stands in for
   it. Both themes read the same tokens; only the values change.
   ──────────────────────────────────────────────────────────────────────────── */

* { margin: 0; padding: 0; box-sizing: border-box; }

:root {
  --bg:       #111;
  --bg-alt:   #0c0c0c;
  --surface:  #141414;
  --surface2: #181818;
  --fg:       #fff;
  --fg-dim:   #b0b0b0;
  --fg-mute:  #777;
  --fg-faint: #555;
  --hair:     #242424;

  --accent:      #35d07f;
  --accent-soft: rgba(53,208,127,0.55);
  --accent-hair: rgba(53,208,127,0.16);
  --warn:     #e0b341;
  --bad:      #e06d5c;

  --maxw: 1180px;
  --r: 2px;
}

body.field {
  --bg:       #f6f6f4;
  --bg-alt:   #eeeeeb;
  --surface:  #fff;
  --surface2: #fafaf8;
  --fg:       #111;
  --fg-dim:   #3d3d3d;
  --fg-mute:  #6a6a6a;
  --fg-faint: #949494;
  --hair:     #ddddd8;
  --accent:      #1b9c5b;
  --accent-soft: rgba(27,156,91,0.6);
  --accent-hair: rgba(27,156,91,0.12);
  --warn:     #9a6f00;
  --bad:      #b3341f;
}

html { scroll-behavior: smooth; }

body {
  font-family: 'Inter', 'Helvetica Neue', Arial, sans-serif;
  background: var(--bg);
  color: var(--fg);
  font-weight: 300;
  -webkit-font-smoothing: antialiased;
  min-height: 100vh;
}

a { color: inherit; }
button, input, select, textarea { font-family: inherit; font-size: inherit; color: inherit; }
img { max-width: 100%; display: block; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
.num { font-variant-numeric: tabular-nums; }

/* ── Shell ──────────────────────────────────────────────────────────────── */

.topbar {
  position: sticky; top: 0; z-index: 40;
  display: flex; align-items: center; justify-content: space-between; gap: 18px;
  height: 58px; padding: 0 22px;
  background: color-mix(in srgb, var(--bg) 94%, transparent);
  backdrop-filter: blur(9px);
  border-bottom: 1px solid var(--hair);
}
.brand {
  font-size: 11px; font-weight: 700; letter-spacing: 2.6px; text-transform: uppercase;
  text-decoration: none; white-space: nowrap;
}
.brand em { font-style: normal; color: var(--fg-faint); margin: 0 8px; }
.brand span { font-weight: 400; color: var(--fg-mute); letter-spacing: 1.6px; }
.topnav { display: flex; align-items: center; gap: 18px; }
.topnav a {
  font-size: 9.5px; font-weight: 600; letter-spacing: 1.5px; text-transform: uppercase;
  color: var(--fg-mute); text-decoration: none;
}
.topnav a:hover, .topnav a.on { color: var(--fg); }

.wrap { max-width: var(--maxw); margin: 0 auto; padding: 0 22px; }
.wrap-narrow { max-width: 760px; margin: 0 auto; padding: 0 22px; }

.foot {
  margin-top: 60px; padding: 26px 22px 40px;
  border-top: 1px solid var(--hair);
  color: var(--fg-faint); font-size: 11.5px; line-height: 1.7;
}

/* ── Type ───────────────────────────────────────────────────────────────── */

h1 { font-size: 30px; font-weight: 300; letter-spacing: -0.5px; }
h2 { font-size: 19px; font-weight: 400; letter-spacing: -0.2px; }
h3 { font-size: 14px; font-weight: 600; }

.eyebrow {
  font-size: 9px; font-weight: 700; letter-spacing: 2.2px; text-transform: uppercase;
  color: var(--fg-faint);
}
.lede { color: var(--fg-dim); font-size: 14.5px; line-height: 1.65; }
.muted { color: var(--fg-mute); }
.small { font-size: 12px; }

/* ── Hero / search ──────────────────────────────────────────────────────── */

.hero { padding: 52px 0 30px; border-bottom: 1px solid var(--hair); }
.hero h1 { margin: 12px 0 10px; max-width: 22ch; }
.hero .lede { max-width: 62ch; }

.statstrip {
  display: flex; flex-wrap: wrap; gap: 0;
  margin-top: 30px; border: 1px solid var(--hair); border-right: 0;
}
.statstrip div {
  flex: 1 1 140px; padding: 14px 18px; border-right: 1px solid var(--hair);
}
.statstrip b {
  display: block; font-size: 26px; font-weight: 200; letter-spacing: -1px;
  font-variant-numeric: tabular-nums;
}
.statstrip span {
  font-size: 8.5px; font-weight: 700; letter-spacing: 1.8px; text-transform: uppercase;
  color: var(--fg-faint);
}

.searchbar { display: flex; gap: 0; margin: 26px 0 0; }
.searchbar input[type="search"] {
  flex: 1; background: var(--surface); border: 1px solid var(--hair); border-right: 0;
  padding: 14px 16px; font-size: 15px; font-weight: 300; outline: none;
}
.searchbar input[type="search"]:focus { border-color: var(--accent-soft); }
.searchbar button {
  background: var(--accent); border: 1px solid var(--accent); color: #06120a;
  font-size: 10px; font-weight: 700; letter-spacing: 1.6px; text-transform: uppercase;
  padding: 0 26px; cursor: pointer;
}
.searchbar button:hover { filter: brightness(1.08); }

.filters { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 14px; align-items: center; }
.filters select, .filters input[type="number"] {
  background: var(--surface); border: 1px solid var(--hair); padding: 8px 10px;
  font-size: 12px; outline: none;
}
.chk { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; color: var(--fg-dim); }

/* ── Result grid ────────────────────────────────────────────────────────── */

.results {
  display: grid; gap: 1px; margin: 26px 0 0;
  grid-template-columns: repeat(auto-fill, minmax(228px, 1fr));
  background: var(--hair); border: 1px solid var(--hair);
}
.card {
  background: var(--bg); padding: 0; text-decoration: none; display: block;
  transition: background .12s ease;
}
.card:hover { background: var(--surface2); }
.card .shot {
  aspect-ratio: 4 / 3; background: var(--surface); overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  border-bottom: 1px solid var(--hair);
}
.card .shot img { width: 100%; height: 100%; object-fit: cover; }
.card .shot .initials {
  font-size: 30px; font-weight: 200; color: var(--fg-faint); letter-spacing: 1px;
}
.card .meta { padding: 13px 15px 16px; }
.card .nm { font-size: 14.5px; font-weight: 500; letter-spacing: -0.1px; }
.card .sub {
  margin-top: 5px; font-size: 11px; color: var(--fg-mute);
  display: flex; flex-wrap: wrap; gap: 6px; align-items: center;
}
.card .sub i { font-style: normal; color: var(--fg-faint); }

.badge {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 8px; font-weight: 700; letter-spacing: 1.3px; text-transform: uppercase;
  padding: 3px 6px; border: 1px solid var(--hair); color: var(--fg-mute);
}
.badge.ok { color: var(--accent); border-color: var(--accent-hair); background: var(--accent-hair); }
.badge.warn { color: var(--warn); border-color: color-mix(in srgb, var(--warn) 30%, transparent); }
.badge.bad { color: var(--bad); border-color: color-mix(in srgb, var(--bad) 30%, transparent); }

.empty { padding: 60px 20px; text-align: center; color: var(--fg-mute); }
.empty b { display: block; font-weight: 400; color: var(--fg-dim); margin-bottom: 6px; font-size: 16px; }

.pager { display: flex; align-items: center; justify-content: center; gap: 14px; margin: 30px 0; }
.pager button {
  background: none; border: 1px solid var(--hair); color: var(--fg-dim);
  padding: 8px 16px; font-size: 10px; font-weight: 600; letter-spacing: 1.3px;
  text-transform: uppercase; cursor: pointer;
}
.pager button:disabled { opacity: .35; cursor: default; }
.pager span { font-size: 11px; color: var(--fg-mute); font-variant-numeric: tabular-nums; }

/* ── Profile ────────────────────────────────────────────────────────────── */

.profile-head {
  display: grid; grid-template-columns: 240px 1fr; gap: 28px;
  padding: 38px 0 30px; border-bottom: 1px solid var(--hair);
}
.profile-head .portrait {
  aspect-ratio: 3 / 4; background: var(--surface); border: 1px solid var(--hair);
  display: flex; align-items: center; justify-content: center; overflow: hidden;
}
.profile-head .portrait img { width: 100%; height: 100%; object-fit: cover; }
.profile-head .portrait .initials { font-size: 54px; font-weight: 200; color: var(--fg-faint); }
.profile-head h1 { font-size: 34px; margin-bottom: 8px; }

.factgrid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
  gap: 1px; background: var(--hair); border: 1px solid var(--hair); margin-top: 22px;
}
.factgrid div { background: var(--bg); padding: 12px 14px; }
.factgrid dt {
  font-size: 8.5px; font-weight: 700; letter-spacing: 1.6px; text-transform: uppercase;
  color: var(--fg-faint); margin-bottom: 5px;
}
.factgrid dd { font-size: 15px; font-weight: 400; font-variant-numeric: tabular-nums; }

.section { padding: 34px 0; border-bottom: 1px solid var(--hair); }
.section > .eyebrow { margin-bottom: 14px; }

.medialist { display: grid; gap: 16px; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
.medialist figure { border: 1px solid var(--hair); background: var(--surface); }
.medialist video, .medialist img { width: 100%; display: block; background: #000; }
.medialist figcaption { padding: 9px 12px; font-size: 11.5px; color: var(--fg-mute); }

.linklist { display: flex; flex-direction: column; gap: 0; border: 1px solid var(--hair); }
.linklist a {
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  padding: 13px 16px; text-decoration: none; border-bottom: 1px solid var(--hair);
  font-size: 13.5px;
}
.linklist a:last-child { border-bottom: 0; }
.linklist a:hover { background: var(--surface2); }
.linklist .k {
  font-size: 8.5px; font-weight: 700; letter-spacing: 1.4px; text-transform: uppercase;
  color: var(--fg-faint);
}

.sharebar {
  display: flex; align-items: center; gap: 10px; margin-top: 20px;
  border: 1px solid var(--hair); padding: 10px 12px; background: var(--surface);
}
.sharebar code {
  flex: 1; font-size: 12px; color: var(--fg-dim); overflow: hidden;
  text-overflow: ellipsis; white-space: nowrap; font-family: ui-monospace, monospace;
}

/* ── Buttons / forms ────────────────────────────────────────────────────── */

.btn {
  display: inline-flex; align-items: center; gap: 8px; cursor: pointer;
  background: none; border: 1px solid var(--hair); color: var(--fg-dim);
  padding: 10px 18px;
  font-size: 10px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase;
  text-decoration: none; transition: border-color .12s ease, color .12s ease;
}
.btn:hover { color: var(--fg); border-color: var(--fg-faint); }
.btn.primary { background: var(--accent); border-color: var(--accent); color: #06120a; }
.btn.primary:hover { filter: brightness(1.08); color: #06120a; }
.btn.danger { color: var(--bad); border-color: color-mix(in srgb, var(--bad) 35%, transparent); }
.btn:disabled { opacity: .4; cursor: default; }

.field-row { margin-bottom: 18px; }
.field-row label {
  display: block; margin-bottom: 6px;
  font-size: 9px; font-weight: 700; letter-spacing: 1.7px; text-transform: uppercase;
  color: var(--fg-mute);
}
.field-row input, .field-row select, .field-row textarea {
  width: 100%; background: var(--surface); border: 1px solid var(--hair);
  padding: 12px 13px; font-size: 15px; font-weight: 300; outline: none;
}
.field-row input:focus, .field-row select:focus, .field-row textarea:focus {
  border-color: var(--accent-soft);
}
.field-row .hint { margin-top: 5px; font-size: 11.5px; color: var(--fg-faint); }
.field-row .hint.bad { color: var(--bad); }
.field-row .hint.ok { color: var(--accent); }
.grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 0 18px; }
.grid3 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0 18px; }

fieldset { border: 1px solid var(--hair); padding: 20px; margin-bottom: 22px; background: var(--surface2); }
legend {
  padding: 0 8px; font-size: 9px; font-weight: 700; letter-spacing: 1.8px;
  text-transform: uppercase; color: var(--fg-mute);
}

.note {
  border-left: 2px solid var(--accent); background: var(--accent-hair);
  padding: 12px 15px; font-size: 12.5px; line-height: 1.6; color: var(--fg-dim);
  margin-bottom: 20px;
}
.note.warn { border-left-color: var(--warn); background: color-mix(in srgb, var(--warn) 8%, transparent); }
.note.bad { border-left-color: var(--bad); background: color-mix(in srgb, var(--bad) 8%, transparent); }

.toast {
  position: fixed; left: 50%; bottom: 26px; transform: translateX(-50%);
  background: var(--fg); color: var(--bg); padding: 12px 20px;
  font-size: 12.5px; font-weight: 500; z-index: 90; max-width: 90vw;
}
.toast.bad { background: var(--bad); color: #fff; }

/* ── Console ────────────────────────────────────────────────────────────── */

.console-grid { display: grid; grid-template-columns: 300px 1fr; gap: 0; min-height: calc(100vh - 58px); }
.console-side { border-right: 1px solid var(--hair); background: var(--surface2); }
.console-main { padding: 26px 28px 60px; }

.tabs { display: flex; border-bottom: 1px solid var(--hair); }
.tabs button {
  background: none; border: 0; border-bottom: 2px solid transparent; cursor: pointer;
  padding: 13px 16px; color: var(--fg-mute);
  font-size: 10px; font-weight: 700; letter-spacing: 1.5px; text-transform: uppercase;
}
.tabs button.on { color: var(--fg); border-bottom-color: var(--accent); }

.rowlist { border: 1px solid var(--hair); }
.rowlist .row {
  display: grid; grid-template-columns: 1fr auto; gap: 12px; align-items: center;
  padding: 12px 15px; border-bottom: 1px solid var(--hair); cursor: pointer;
}
.rowlist .row:last-child { border-bottom: 0; }
.rowlist .row:hover { background: var(--surface2); }
.rowlist .row.on { background: var(--accent-hair); }
.rowlist .nm { font-size: 14px; }
.rowlist .sub { font-size: 11px; color: var(--fg-mute); margin-top: 3px; }

.kv { display: grid; grid-template-columns: 150px 1fr; gap: 10px 16px; font-size: 13.5px; }
.kv dt { color: var(--fg-mute); font-size: 11px; text-transform: uppercase; letter-spacing: 1.2px; padding-top: 2px; }
.kv dd { font-variant-numeric: tabular-nums; }

.uploadzone {
  border: 1px dashed var(--hair); padding: 26px; text-align: center;
  color: var(--fg-mute); font-size: 12.5px; cursor: pointer;
}
.uploadzone.hot { border-color: var(--accent); color: var(--accent); background: var(--accent-hair); }

.thumbs { display: grid; grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); gap: 10px; margin-top: 14px; }
.thumbs figure { border: 1px solid var(--hair); position: relative; background: var(--surface); }
.thumbs img, .thumbs video { width: 100%; aspect-ratio: 1; object-fit: cover; display: block; }
.thumbs figcaption {
  padding: 5px 7px; font-size: 9px; letter-spacing: .6px; text-transform: uppercase;
  color: var(--fg-faint); display: flex; justify-content: space-between; gap: 6px;
}
.thumbs .mark { color: var(--accent); }

.blockers { list-style: none; }
.blockers li {
  padding: 8px 0 8px 18px; position: relative; font-size: 13px; color: var(--fg-dim);
  border-bottom: 1px solid var(--hair);
}
.blockers li::before { content: "—"; position: absolute; left: 0; color: var(--bad); }

/* ── Responsive ─────────────────────────────────────────────────────────── */

@media (max-width: 860px) {
  .profile-head { grid-template-columns: 1fr; }
  .profile-head .portrait { max-width: 220px; aspect-ratio: 1; }
  .console-grid { grid-template-columns: 1fr; }
  .console-side { border-right: 0; border-bottom: 1px solid var(--hair); }
  .grid2, .grid3 { grid-template-columns: 1fr; }
  .topnav { gap: 12px; }
  h1 { font-size: 25px; }
}

@media (max-width: 520px) {
  .wrap, .wrap-narrow { padding: 0 15px; }
  .console-main { padding: 18px 15px 50px; }
  .searchbar { flex-wrap: wrap; }
  .searchbar input[type="search"] { border-right: 1px solid var(--hair); flex-basis: 100%; }
  .searchbar button { flex: 1; padding: 13px 0; margin-top: -1px; }
  /* Field capture on a phone: bigger targets, nothing to hunt for. */
  body.field .field-row input, body.field .field-row select { padding: 15px 13px; font-size: 16px; }
  body.field .btn { padding: 14px 20px; }
}
