/* oxray shell + sign-in — the CiboVita LIMS light kit (matches the QC app:
   Inter for UI, JetBrains Mono for dates/numbers, Fraunces for headings,
   warm paper, hairline borders, soft shadows). Fonts vendored, no CDN. */

@font-face {
  font-family: "Inter Variable";
  src: url("/static/fonts/inter-latin-wght-normal.woff2") format("woff2");
  font-weight: 100 900; font-display: swap;
}
@font-face {
  font-family: "Fraunces Variable";
  src: url("/static/fonts/fraunces-latin-wght-normal.woff2") format("woff2");
  font-weight: 100 900; font-display: swap;
}
@font-face {
  font-family: "JetBrains Mono Variable";
  src: url("/static/fonts/jetbrains-mono-latin-wght-normal.woff2") format("woff2");
  font-weight: 100 800; font-display: swap;
}

:root {
  --bg: oklch(.985 .003 85);
  --raised: #fff;
  --sunken: oklch(.975 .004 85);
  --ink: oklch(.22 .01 260);
  --ink2: oklch(.42 .01 260);
  --ink3: oklch(.58 .01 260);
  --ink4: oklch(.72 .008 260);
  --line: oklch(.92 .004 260);
  --accent: oklch(.55 .12 155);
  --accent-ink: oklch(.38 .11 155);
  --accent-soft: oklch(.95 .04 155);
  --warn-soft: oklch(.96 .05 80);
  --warn-line: oklch(.88 .06 80);
  --warn-ink: oklch(.45 .12 60);
  --info: oklch(.58 .12 245);
  --info-soft: oklch(.96 .03 245);
  --info-ink: oklch(.42 .12 245);
  --destr: oklch(.58 .18 25);
  --destr-soft: oklch(.97 .03 25);
  --sh-md: 0 2px 6px oklch(.2 .02 260/.05), 0 8px 24px oklch(.2 .02 260/.05);
  --sans: "Inter Variable", system-ui, sans-serif;
  --mono: "JetBrains Mono Variable", ui-monospace, monospace;
  --heading: "Fraunces Variable", Georgia, serif;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
body { background: var(--bg); color: var(--ink); font: 13.5px/1.5 var(--sans); }

/* ── shell ─────────────────────────────────────────────────────────── */
body.shell { height: 100vh; display: flex; flex-direction: column; }
header { background: var(--raised); border-bottom: 1px solid var(--line);
  padding: 0 20px; display: flex; align-items: center; gap: 14px; height: 54px;
  flex-shrink: 0; box-shadow: 0 1px 2px oklch(.2 .02 260/.04); }
.lm { width: 32px; height: 32px; background: var(--ink); color: #fff;
  border-radius: 8px; display: grid; place-items: center;
  font: 700 11px var(--sans); letter-spacing: .04em; }
.lt { font: 600 17px var(--heading); }
.ls { font-size: 11px; color: var(--ink3); }
.hright { margin-left: auto; display: flex; align-items: center; gap: 14px; }
.chip { background: var(--info-soft); color: var(--info-ink);
  font: 600 11px var(--mono); padding: 4px 10px; border-radius: 999px; }
.who { font-size: 12px; color: var(--ink3); }
.who b { color: var(--ink); font-weight: 600; }
.hout { color: var(--accent-ink); font-size: 12.5px; font-weight: 600; text-decoration: none; }

main { flex: 1; display: flex; min-height: 0; gap: 16px; padding: 16px 20px; }
.view { flex: 1; display: flex; flex-direction: column; min-width: 0; }
.note { background: var(--warn-soft); border: 1px solid var(--warn-line);
  border-bottom: 0; color: var(--warn-ink); font-size: 12px;
  padding: 8px 14px; border-radius: 10px 10px 0 0; }
.note b { font-weight: 600; }
.doc { flex: 1; background: var(--raised); border: 1px solid var(--line);
  border-radius: 0 0 12px 12px; overflow: hidden; box-shadow: var(--sh-md); }
iframe { border: 0; width: 100%; height: 100%; }

nav { width: 250px; background: var(--raised); border: 1px solid var(--line);
  border-radius: 12px; overflow-y: auto; box-shadow: var(--sh-md); flex-shrink: 0; }
.nav-h { padding: 12px 16px; font: 600 11px var(--sans); letter-spacing: .06em;
  text-transform: uppercase; color: var(--ink3); border-bottom: 1px solid var(--line);
  position: sticky; top: 0; background: var(--raised); z-index: 2; }
.mon { padding: 12px 16px 5px; font: 600 11px var(--mono); color: var(--ink3);
  text-transform: uppercase; letter-spacing: .07em; }
.day { display: flex; align-items: center; gap: 8px; padding: 6.5px 16px;
  text-decoration: none; color: var(--ink); border-right: 3px solid transparent;
  white-space: nowrap; }
.day:hover { background: var(--sunken); }
.day.sel { border-right-color: var(--accent); background: var(--accent-soft); }
.day.sel .dt { font-weight: 600; }
.wd { color: var(--ink4); font: 11px var(--mono); width: 28px; text-transform: uppercase; }
.dt { font: 12.5px var(--mono); white-space: nowrap; }
.b { margin-left: auto; font: 600 10px var(--sans); padding: 2px 7px;
  border-radius: 999px; white-space: nowrap; flex-shrink: 0; }
.b.act { background: var(--destr-soft); color: var(--destr); }
.b.ok { background: var(--accent-soft); color: var(--accent-ink); }
.b.quiet { background: var(--sunken); color: var(--ink4); }
.latest { font: 700 9px var(--sans); background: var(--info); color: #fff;
  padding: 2px 5px; border-radius: 4px; letter-spacing: .04em; margin-left: 4px;
  flex-shrink: 0; }

/* history panel toggle — pure CSS (hidden checkbox + header label) */
.navbtn { cursor: pointer; font-size: 12.5px; font-weight: 600;
  color: var(--accent-ink); border: 1px solid var(--line); border-radius: 999px;
  padding: 4px 12px; background: var(--raised); user-select: none; }
.navbtn:hover { background: var(--accent-soft); }
.navbtn::after { content: "Hide history"; }
#nav-t:checked ~ header .navbtn::after { content: "Show history"; }
#nav-t:checked ~ main nav { display: none; }

/* ── sign-in (dark navy card) ──────────────────────────────────────── */
body.signin { height: 100vh; display: flex; align-items: center; justify-content: center;
  background: radial-gradient(1100px 600px at 70% -10%, #233658 0%, #1a1a2e 55%);
  color: #ecf0f1; font-family: var(--sans); }
.card { width: 390px; background: #16213e; border: 1px solid #0f3460;
  border-radius: 8px; padding: 34px 34px 26px; }
.card .logo { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; }
.card .lm { width: 38px; height: 38px; background: #3498db; border-radius: 6px;
  display: grid; place-items: center; font: 700 13px var(--sans); color: #ecf0f1; }
.card .lt { font: 600 19px var(--heading); color: #ecf0f1; }
.card .ls { font-size: 10px; color: #7f8c8d; text-transform: uppercase; letter-spacing: .6px; }
.card .tag { color: #7f8c8d; font-size: 12px; margin: 14px 0 22px; line-height: 1.5; }
.card label { display: block; font-size: 10px; color: #7f8c8d; text-transform: uppercase;
  font-weight: 600; letter-spacing: .5px; margin: 14px 0 5px; }
.card input { width: 100%; padding: 10px 11px; font: 13.5px var(--sans);
  border-radius: 6px; border: 1px solid #1a4a80; background: #0f3460;
  color: #ecf0f1; outline: none; }
.card input:focus { border-color: #3498db; }
.card button { margin-top: 22px; width: 100%; padding: 11px; border: 0;
  border-radius: 6px; background: #3498db; color: #0d1b2a; font: 700 13px var(--sans);
  letter-spacing: .4px; text-transform: uppercase; cursor: pointer; }
.card button:hover { background: #5dade2; }
.card .err { margin-top: 14px; font-size: 12px; color: #ff8a73; text-align: center; }
.card .stats { display: flex; gap: 10px; margin-top: 22px; padding-top: 18px;
  border-top: 1px solid #0f3460; }
.card .s { flex: 1; background: #0f3460; border-radius: 4px; padding: 8px 10px; }
.card .s .n { font: 700 16px var(--mono); }
.card .s .n.red { color: #e74c3c; }
.card .s .n.gold { color: #f39c12; }
.card .s .l { font-size: 8.5px; color: #7f8c8d; text-transform: uppercase;
  letter-spacing: .4px; margin-top: 2px; }
.card .foot { margin-top: 16px; font-size: 10px; color: #7f8c8d;
  text-align: center; letter-spacing: .3px; }
