/* UREKA design system - shared by admin & user consoles.
   Token-first console skin aligned with the landing "Deterministic Instrument" brand. */

:root{
  color-scheme:light;
  --paper:#ffffff; --canvas:#f4f4f2; --ink:#0c0e0d; --muted:#6a716c; --faint:#a4aaa4;
  --hair:#e9eae6; --hair-strong:#d6d8d2;
  --bg:var(--canvas); --surface:var(--paper); --surface-2:var(--canvas);
  --text:var(--ink); --border:var(--hair); --border-strong:var(--hair-strong);
  --teal:#1a5f9e; --teal-bg:#e2edf5;      /* curated / deterministic */
  --blue:#1f5fa8; --blue-bg:#e4eefb;      /* benchmark */
  --amber:#b36b1e; --amber-bg:#faeedb;    /* llm / literature-mined */
  --purple:#6254c5; --purple-bg:#eeedfe;  /* human checkpoint */
  --gray:#6a716c; --gray-bg:#eeefec;      /* null / neutral */
  --accent:#1a5f9e;
  --danger:#a3341f; --danger-bg:#fbe6e0;
  --code-bg:#f7f7f4; --code-text:#262927;
  --display:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,system-ui,"Segoe UI",sans-serif;
  --body:"Pretendard Variable",Pretendard,-apple-system,BlinkMacSystemFont,system-ui,"Segoe UI",Roboto,sans-serif;
  --sans:var(--body);
  --mono:"IBM Plex Mono",ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --ease:cubic-bezier(.16,.84,.24,1);
  --r:8px; --r-sm:6px; --shadow:0 1px 0 rgba(12,14,13,.03),0 14px 36px rgba(12,14,13,.05);
}
:root[data-theme=dark]{
  color-scheme:dark;
  --paper:#0a0c0b; --canvas:#101312; --ink:#f3f5f2; --muted:#99a09a; --faint:#5a615b;
  --hair:#1c201b; --hair-strong:#2b302a;
  --bg:var(--canvas); --surface:var(--paper); --surface-2:var(--canvas);
  --text:var(--ink); --border:var(--hair); --border-strong:var(--hair-strong);
  --teal:#8cc3ea; --teal-bg:#0d2230;
  --blue:#7db4f0; --blue-bg:#12294a;
  --amber:#e2ac5e; --amber-bg:#332412;
  --purple:#afa9ec; --purple-bg:#241f4a;
  --gray:#99a09a; --gray-bg:#20241f;
  --accent:#8cc3ea;
  --danger:#e8896f; --danger-bg:#351b14;
  --code-bg:#070908; --code-text:#e6e9e5;
  --shadow:0 1px 0 rgba(0,0,0,.36),0 14px 36px rgba(0,0,0,.32);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme=light]){
    color-scheme:dark;
    --paper:#0a0c0b; --canvas:#101312; --ink:#f3f5f2; --muted:#99a09a; --faint:#5a615b;
    --hair:#1c201b; --hair-strong:#2b302a;
    --bg:var(--canvas); --surface:var(--paper); --surface-2:var(--canvas);
    --text:var(--ink); --border:var(--hair); --border-strong:var(--hair-strong);
    --teal:#8cc3ea; --teal-bg:#0d2230;
    --blue:#7db4f0; --blue-bg:#12294a;
    --amber:#e2ac5e; --amber-bg:#332412;
    --purple:#afa9ec; --purple-bg:#241f4a;
    --gray:#99a09a; --gray-bg:#20241f;
    --accent:#8cc3ea;
    --danger:#e8896f; --danger-bg:#351b14;
    --code-bg:#070908; --code-text:#e6e9e5;
    --shadow:0 1px 0 rgba(0,0,0,.36),0 14px 36px rgba(0,0,0,.32);
  }
}
:root[data-theme=light]{ color-scheme:light; }

*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
}
body{margin:0;background:var(--bg);color:var(--text);font-family:var(--body);font-size:15.5px;line-height:1.55;-webkit-font-smoothing:antialiased;word-break:keep-all}
a{color:var(--accent);text-decoration:none;text-underline-offset:3px}
a:hover{text-decoration:underline}
h1,h2,h3,h4{font-family:var(--display);line-height:1.04;font-weight:800;letter-spacing:-.03em;margin:0;text-wrap:balance}
h3,h4{font-weight:700}
code,.mono{font-family:var(--mono);font-size:.86em}
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:5px}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ---- tier system (color = trust + review effort) ---- */
.t-curated{--tc:var(--teal);--tcb:var(--teal-bg)}
.t-benchmark{--tc:var(--blue);--tcb:var(--blue-bg)}
.t-literature,.t-literature-mined{--tc:var(--amber);--tcb:var(--amber-bg)}
.t-human{--tc:var(--purple);--tcb:var(--purple-bg)}
.t-null,.t-neutral{--tc:var(--gray);--tcb:var(--gray-bg)}

/* ---- badges / pills ---- */
.badge{display:inline-flex;align-items:center;width:max-content;max-width:100%;font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;padding:3px 9px;border-radius:100px;border:0.5px solid transparent;
  background:var(--tcb,var(--surface-2));color:var(--tc,var(--muted));white-space:nowrap;line-height:1.45}
.pill{display:inline-flex;align-items:center;gap:5px;font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.03em;padding:3px 9px;border-radius:100px;border:0.5px solid var(--border);
  background:var(--surface);color:var(--muted);line-height:1.45}
.pill.is-signal{background:var(--teal-bg);border-color:transparent;color:var(--teal)}
.pill.is-signal::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}
.pill.is-null,.pill.is-retained{background:var(--gray-bg);border-color:transparent;color:var(--gray)}
.pill.is-pending,.pill.is-candidate{background:var(--amber-bg);border-color:transparent;color:var(--amber)}
.pill.is-approved{background:var(--teal-bg);border-color:transparent;color:var(--teal)}

/* ---- confidence bar ---- */
.confbar{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}
.confbar>.track{width:58px;height:5px;border-radius:100px;background:var(--surface-2);overflow:hidden;border:0.5px solid var(--border)}
.confbar>.track>span{display:block;height:100%;background:var(--tc,var(--teal))}

/* ---- provenance chip / evidence ---- */
.provchip{display:inline-flex;align-items:center;gap:4px;font-family:var(--mono);font-size:10.5px;padding:3px 9px;border-radius:100px;
  border:0.5px solid var(--border);color:var(--muted);cursor:pointer;background:var(--surface);transition:border-color .2s,color .2s,background .2s,transform .45s var(--ease)}
.provchip:hover{border-color:var(--tc,var(--border-strong));color:var(--text);background:var(--surface-2);text-decoration:none;transform:translateY(-1px)}
.evidence{font-family:var(--mono);font-size:11px;color:var(--accent)}
.llmtag{display:inline-flex;align-items:center;gap:4px;font-family:var(--mono);font-size:10.5px;font-weight:500;padding:3px 8px;border-radius:100px;
  background:var(--amber-bg);color:var(--amber);border:0.5px solid transparent}
.llmtag::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}

/* ---- buttons (verb = outcome) ---- */
.btn{font:inherit;font-family:var(--body);font-size:13.5px;font-weight:700;padding:9px 16px;min-height:36px;border-radius:100px;border:1px solid var(--hair-strong);
  background:var(--surface);color:var(--text);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:7px;line-height:1.1;
  transition:transform .45s var(--ease),border-color .2s,background .2s,color .2s,opacity .2s}
.btn:hover{border-color:var(--text);background:var(--surface);text-decoration:none;transform:translateY(-1px)}
.btn-primary,.btn.solid{background:var(--text);color:var(--surface);border-color:var(--text)}
.btn-primary:hover,.btn.solid:hover{opacity:.88;background:var(--text);color:var(--surface)}
.btn-danger{color:var(--danger);border-color:transparent;background:transparent}
.btn-danger:hover{background:var(--danger-bg);border-color:var(--danger);color:var(--danger)}
.btn-ghost{border-color:transparent;background:transparent;color:var(--muted)}
.btn-ghost:hover{background:var(--surface);border-color:var(--border-strong);color:var(--text)}
.btn:disabled{opacity:.42;cursor:not-allowed;transform:none}
.btn-sm{font-size:12px;padding:7px 12px;min-height:30px}

/* ---- cards ---- */
.card{border:0.5px solid var(--border);border-radius:var(--r);background:var(--surface);padding:17px 18px;box-shadow:none}
.card-2{background:var(--surface-2)}
.card.is-signal{border:1px solid var(--teal);box-shadow:inset 0 0 0 1px var(--teal-bg)}
.card-cap{font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--faint);margin-bottom:8px}

/* ---- health metric ---- */
.metric{border:0.5px solid var(--border);border-radius:var(--r);background:var(--surface);padding:14px 15px;min-width:120px}
.metric .label{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}
.metric .num{font-family:var(--display);font-size:1.85rem;font-weight:800;letter-spacing:-.04em;line-height:1;margin-top:8px;font-variant-numeric:tabular-nums}
.metric.is-warn .num{color:var(--amber)}

/* ---- horizontal meter (coverage / distribution) ---- */
.meter{display:grid;grid-template-columns:auto 1fr auto;gap:9px;align-items:center;font-family:var(--mono);font-size:11px;color:var(--muted);margin:6px 0}
.meter .bar{height:6px;border-radius:100px;background:var(--surface-2);overflow:hidden;border:0.5px solid var(--border)}
.meter .bar>span{display:block;height:100%;background:var(--tc,var(--teal))}
.meter.is-warn{color:var(--amber)}

/* ---- lens card (results) ---- */
.lenscard{border:0.5px solid var(--border);border-radius:var(--r);background:var(--surface);padding:14px 15px;cursor:pointer;transition:border-color .2s,background .2s,transform .45s var(--ease)}
.lenscard:hover{border-color:var(--border-strong);background:var(--surface-2);transform:translateY(-1px)}
.lenscard.is-signal{border:1px solid var(--teal);box-shadow:inset 0 0 0 1px var(--teal-bg)}
.lenscard .top{display:flex;justify-content:space-between;align-items:center;gap:10px}
.lenscard .name{font-family:var(--display);font-weight:700;font-size:14px;letter-spacing:-.02em}
.lenscard .sub{font-size:12.5px;color:var(--muted);margin-top:6px}
.lenscard.is-signal .sub{color:var(--teal)}

/* ---- stepper (user pipeline) ---- */
.stepper{display:flex;gap:5px;list-style:none;margin:0;padding:0;flex-wrap:wrap}
.stepper .step{display:flex;align-items:center;gap:8px;font-family:var(--body);font-size:12.5px;color:var(--faint);padding:7px 12px;border-radius:100px;background:transparent;border:1px solid transparent;cursor:default;transition:border-color .2s,background .2s,color .2s}
.stepper .step .dot{width:19px;height:19px;border-radius:50%;display:grid;place-items:center;font-family:var(--mono);font-size:10px;background:var(--surface);color:var(--faint);border:0.5px solid var(--border)}
.stepper .step.done{color:var(--muted);cursor:pointer}
.stepper .step.done .dot{background:var(--accent);color:var(--paper);border-color:var(--accent)}
.stepper .step.active{color:var(--text);font-weight:700;background:var(--surface);border-color:var(--border-strong)}
.stepper .step.active .dot{background:var(--text);color:var(--surface);border-color:var(--text)}

/* ---- admin shell ---- */
.shell{display:grid;grid-template-columns:230px minmax(0,1fr);min-height:100vh}
.sidebar{border-right:0.5px solid var(--border);padding:22px 12px;position:sticky;top:0;height:100vh;overflow-y:auto;background:var(--surface)}
.sidebar .brand{display:block;font-family:var(--display);font-weight:800;font-size:21px;letter-spacing:-.055em;color:var(--text);padding:0 8px 18px}
.sidebar .brand:hover{text-decoration:none;color:var(--accent)}
.sidebar nav a{display:flex;align-items:center;gap:9px;font-size:13px;font-weight:600;color:var(--muted);padding:9px 11px;border-radius:100px;border:1px solid transparent;transition:border-color .2s,background .2s,color .2s}
.sidebar nav a:hover{background:var(--surface-2);color:var(--text);text-decoration:none;border-color:var(--border)}
.sidebar nav a.active{background:var(--surface-2);color:var(--text);border-color:var(--border-strong);font-weight:700}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 28px;border-bottom:0.5px solid var(--border);position:sticky;top:0;background:var(--bg);background:color-mix(in srgb,var(--bg) 84%,transparent);backdrop-filter:blur(14px);z-index:5}
.topbar .title{font-family:var(--display);font-size:1.2rem;font-weight:800;letter-spacing:-.045em;color:var(--text)}
.topbar a.title:hover{text-decoration:none;color:var(--accent)}
.kgbadge{font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;padding:4px 9px;border-radius:100px;background:var(--surface);border:0.5px solid var(--border);color:var(--muted)}
.content{padding:28px 28px 72px;max-width:1000px}

/* ---- tables ---- */
table.data{border-collapse:collapse;width:100%;font-size:13px}
table.data th{text-align:left;font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);font-weight:500;padding:9px 10px;border-bottom:1px solid var(--border-strong)}
table.data td{padding:9px 10px;border-bottom:0.5px solid var(--border);vertical-align:top}
table.data tr:hover td{background:var(--surface-2)}
.wrap-x{overflow-x:auto}

/* ---- states: skeleton / empty / error ---- */
.skeleton{background:linear-gradient(90deg,var(--surface-2) 25%,var(--border) 37%,var(--surface-2) 63%);
  background-size:400% 100%;animation:sk 1.4s ease infinite;border-radius:var(--r-sm)}
@keyframes sk{0%{background-position:100% 0}100%{background-position:-100% 0}}
.state{border:0.5px dashed var(--border-strong);border-radius:var(--r);padding:28px;text-align:center;color:var(--muted);font-size:13.5px;background:var(--surface)}
.state .msg{margin-bottom:12px}
.state.error{border-style:solid;border-color:var(--danger);color:var(--danger);background:var(--danger-bg)}

/* ---- HITL modal ---- */
.modal-scrim{position:fixed;inset:0;background:rgba(0,0,0,.46);display:grid;place-items:center;padding:20px;z-index:50}
.modal{background:var(--surface);border:0.5px solid var(--border-strong);border-radius:var(--r);box-shadow:var(--shadow);
  max-width:460px;width:100%;padding:22px 24px}
.modal h3{font-size:1.08rem;margin-bottom:10px}
.modal .preview{font-size:13.5px;color:var(--muted);background:var(--surface-2);border-radius:var(--r);padding:12px 14px;margin:12px 0}
.modal .reversible{font-family:var(--mono);font-size:11px;color:var(--faint);margin-top:7px}
.modal .actions{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}

/* ---- toast ---- */
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--text);color:var(--surface);
  font-size:13px;font-weight:700;padding:10px 17px;border-radius:100px;box-shadow:var(--shadow);z-index:60}

/* ---- provenance overlay (vertical pipeline) ---- */
.provstep{border:0.5px solid var(--border);border-left:3px solid var(--tc,var(--border-strong));border-radius:var(--r);
  background:var(--surface);padding:12px 14px;margin:0}
.provstep.t-literature,.provstep.t-literature-mined{border-left-width:3px}
.provflow{text-align:center;font-family:var(--mono);font-size:11px;color:var(--faint);padding:7px 0}
.provstep .params{font-family:var(--mono);font-size:12px;color:var(--muted);margin-top:6px;white-space:pre-wrap}

/* ---- dropzone ---- */
.dropzone{border:1px dashed var(--border-strong);border-radius:var(--r);background:var(--surface);padding:24px;text-align:center;color:var(--muted);font-size:13px;transition:border-color .2s,background .2s,color .2s}
.dropzone.is-ok{border-style:solid;border-color:var(--teal);color:var(--text);background:var(--teal-bg)}

.row{display:flex;gap:10px;align-items:center}
.spread{display:flex;justify-content:space-between;align-items:center;gap:10px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.muted{color:var(--muted)} .faint{color:var(--faint)}
.stack{display:flex;flex-direction:column}
.gap-6{gap:6px}.gap-8{gap:8px}.gap-12{gap:12px}
hr{border:none;border-top:0.5px solid var(--border);margin:18px 0}

/* ---- responsive floor (<900px) ---- */
@media (max-width:900px){
  .shell{grid-template-columns:1fr}
  .sidebar{position:static;height:auto;border-right:none;border-bottom:0.5px solid var(--border);display:flex;flex-wrap:wrap;align-items:center;gap:8px}
  .sidebar .brand{padding:0 8px}
  .sidebar nav{display:flex;flex-wrap:wrap;gap:4px}
  .grid-2{grid-template-columns:1fr}
  .stepper{overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}
  .topbar{position:static;align-items:flex-start}
}
