:root{
    color-scheme:dark;            /* native date/number controls follow the page */
    --bg:#1F2430;                 /* Ayu Mirage ground */
    --surface:#242936;            /* lifted panels, fields, chips */
    --ink:#CBCCC6;                /* Ayu Mirage foreground */
    --ink-soft:#AEB0AA;
    --muted:#707A8C;              /* dim UI text */
    --faint:#5C6773;
    --line:#343B4C;
    --line-soft:#2A3040;
    --rule:#4A5262;               /* section underlines */
    --accent:#FFCC66;             /* Ayu amber — actions and links */
    --accent-ink:#1F2430;
    --s-stale:#F28779;            /* neglected */
    --s-soon:#FFCC66;
    --s-ok:#3D4556;
    --good:#BAE67E;               /* confirmed */
    --info:#73D0FF;               /* refuted — a result, not a failure */
    --f-body:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
    --f-data:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace;
  }
  /* Deliberately single-theme: Ayu Mirage, as requested. */

  *{box-sizing:border-box}
  /* The UA rule for [hidden] is display:none, which any author display
     declaration silently beats — so a flex container with the hidden
     attribute stays on screen. Everything here toggles visibility through
     .hidden, so this has to win. */
  [hidden]{display:none !important}
  body{
    background:var(--bg);
    color:var(--ink);
    font-family:var(--f-body);
    font-size:15px;
    line-height:1.5;
  }
  .wrap{max-width:min(1860px,96vw);margin:0 auto;padding-inline:16px;padding-block:0 56px}

  /* ---- status strip / tabs ---- */
  .strip{
    position:sticky;top:env(safe-area-inset-top,0px);z-index:20;
    display:flex;flex-wrap:wrap;align-items:center;gap:6px 20px;
    padding:10px 0;margin-bottom:20px;
    background:var(--bg);border-bottom:1px solid var(--line);
    font-family:var(--f-data);font-size:11px;letter-spacing:.04em;
    text-transform:uppercase;color:var(--muted);
  }
  .strip b{color:var(--ink);font-weight:500}
  .tabs{display:flex;gap:2px;margin-right:auto;flex-wrap:wrap}
  .tab{
    font-family:var(--f-data);font-size:11px;letter-spacing:.08em;text-transform:uppercase;
    background:none;border:1px solid transparent;color:var(--muted);
    padding:4px 10px;cursor:pointer;border-radius:0;
  }
  .tab[aria-selected="true"]{color:var(--accent);font-weight:700;border-color:var(--accent)}
  .tab:hover{color:var(--ink)}

  /* ---- masthead ---- */
  .mast{margin-bottom:26px}
  h1{
    font-weight:700;font-size:clamp(24px,4vw,32px);
    letter-spacing:-.01em;line-height:1.1;margin:0 0 6px;text-wrap:balance;
  }
  .sub{margin:0;color:var(--ink-soft);font-size:15px;max-width:70ch}

  .panel-head{
    display:flex;align-items:baseline;justify-content:space-between;gap:12px;
    padding-bottom:7px;margin:30px 0 0;border-bottom:1px solid var(--rule);
  }
  .panel-head:first-of-type{margin-top:0}
  .panel-head h2{
    font-weight:700;font-size:13px;letter-spacing:.08em;text-transform:uppercase;margin:0;
  }
  .tally{font-family:var(--f-data);font-size:11px;color:var(--muted);
         font-variant-numeric:tabular-nums;white-space:nowrap}

  /* ---- objective age cells ---- */
  .ages{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0}
  @media (max-width:720px){.ages{grid-template-columns:repeat(2,minmax(0,1fr))}}
  .age{
    display:grid;grid-template-columns:3px minmax(0,1fr);gap:0 12px;
    border-bottom:1px solid var(--line-soft);border-right:1px solid var(--line-soft);
  }
  .age:last-child{border-right:0}
  .age .stripe{background:var(--s-ok)}
  .age.s-stale .stripe{background:var(--s-stale)}
  .age.s-soon  .stripe{background:var(--s-soon)}
  .age-body{padding:13px 12px 14px 0;min-width:0}
  .age .n{font-family:var(--f-data);font-size:26px;line-height:1;
          font-variant-numeric:tabular-nums;display:block}
  .age.s-stale .n{font-weight:700}
  .age .u{font-family:var(--f-data);font-size:9.5px;letter-spacing:.05em;
          text-transform:uppercase;color:var(--muted);display:block;margin-top:5px}
  .age .lbl{font-size:13px;font-weight:600;margin-top:9px;line-height:1.3}
  .age .num{font-family:var(--f-data);font-size:10px;color:var(--muted);
            letter-spacing:.06em;display:block}

  .verdict-line{
    margin-top:14px;font-size:13.5px;color:var(--ink-soft);
    padding:10px 12px;background:var(--surface);border-left:3px solid var(--s-soon);
  }
  .verdict-line b{color:var(--ink)}

  /* ---- counters ---- */
  .counts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0}
  @media (max-width:720px){.counts{grid-template-columns:repeat(2,minmax(0,1fr))}}
  .cnt{padding:13px 12px 14px 0;border-bottom:1px solid var(--line-soft);
       border-right:1px solid var(--line-soft)}
  .cnt:last-child{border-right:0}
  .cnt .n{font-family:var(--f-data);font-size:22px;line-height:1;
          font-variant-numeric:tabular-nums;display:block}
  .cnt .u{font-family:var(--f-data);font-size:9.5px;letter-spacing:.05em;
          text-transform:uppercase;color:var(--muted);display:block;margin-top:6px}

  /* ---- log rows ---- */
  .row{
    display:grid;grid-template-columns:3px 76px minmax(0,1fr);gap:0 14px;
    border-bottom:1px solid var(--line-soft);
  }
  .row .stripe{background:var(--s-ok)}
  .row.v-confirmed    .stripe{background:var(--good)}
  .row.v-refuted      .stripe{background:var(--info)}
  .row.v-inconclusive .stripe{background:var(--faint)}
  .row-when{font-family:var(--f-data);font-size:10.5px;color:var(--muted);
            padding:13px 0 13px;font-variant-numeric:tabular-nums;line-height:1.45}
  .row-when b{display:block;color:var(--ink);font-weight:700;font-size:11.5px}
  .row-body{padding:12px 0 13px;min-width:0}
  .row-body .what{font-size:14px;line-height:1.4;margin:0 0 5px}
  .row-meta{display:flex;flex-wrap:wrap;gap:3px 12px;
            font-family:var(--f-data);font-size:10.5px;color:var(--muted);
            font-variant-numeric:tabular-nums}
  .row-meta .k{font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;
               font-weight:700;color:var(--ink-soft)}
  .row-note{font-size:13px;color:var(--ink-soft);margin:5px 0 0}
  .row-note em{font-style:normal;font-weight:700;font-size:9.5px;letter-spacing:.06em;
               text-transform:uppercase;color:var(--muted);margin-right:6px}

  /* ---- forms ---- */
  form{margin:0}
  .field{margin-top:16px}
  .field > label,.legend{
    display:block;font-family:var(--f-data);font-size:10px;letter-spacing:.07em;
    text-transform:uppercase;color:var(--ink-soft);font-weight:700;margin-bottom:6px;
  }
  .hint{font-family:var(--f-body);font-size:12px;color:var(--muted);
        text-transform:none;letter-spacing:0;font-weight:400;margin-left:8px}
  input[type=text],input[type=date],input[type=number],textarea,select{
    width:100%;font-family:var(--f-body);font-size:14.5px;color:var(--ink);
    background:var(--surface);border:1px solid var(--line);border-radius:0;
    padding:9px 10px;
  }
  ::placeholder{color:var(--faint);opacity:1}
  input:focus,textarea:focus{border-color:var(--accent)}
  input[type=date],input[type=number]{font-family:var(--f-data);font-size:13.5px}
  textarea{resize:vertical;min-height:62px;line-height:1.45}
  input:focus-visible,textarea:focus-visible,select:focus-visible,
  button:focus-visible,.tab:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
  .two{display:grid;grid-template-columns:150px minmax(0,1fr);gap:16px}
  @media (max-width:560px){.two{grid-template-columns:1fr}}

  .chips{display:flex;flex-wrap:wrap;gap:6px}
  .chip{
    font-family:var(--f-data);font-size:11px;letter-spacing:.04em;
    padding:7px 11px;border:1px solid var(--line);background:var(--surface);
    color:var(--ink-soft);cursor:pointer;
  }
  .chip[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink);
                             border-color:var(--accent);font-weight:700}
  .chip:hover{border-color:var(--accent)}

  .actions{display:flex;align-items:center;gap:14px;margin-top:20px;flex-wrap:wrap}
  .btn{
    font-family:var(--f-data);font-size:12px;letter-spacing:.06em;text-transform:uppercase;
    font-weight:700;padding:10px 20px;border:1px solid var(--accent);
    background:var(--accent);color:var(--accent-ink);cursor:pointer;
  }
  .btn[disabled]{opacity:.4;cursor:default}
  .btn.ghost{background:transparent;color:var(--ink);border-color:var(--line)}
  .kbd{font-family:var(--f-data);font-size:10.5px;color:var(--muted)}
  .said{font-family:var(--f-data);font-size:11px;color:var(--accent);letter-spacing:.03em}

  details.exp{margin-top:34px;border-top:1px solid var(--rule);padding-top:0}
  details.exp > summary{
    list-style:none;cursor:pointer;padding:9px 0 8px;
    font-family:var(--f-data);font-size:13px;letter-spacing:.08em;text-transform:uppercase;
    font-weight:700;display:flex;justify-content:space-between;align-items:baseline;gap:12px;
  }
  details.exp > summary::-webkit-details-marker{display:none}
  details.exp > summary::after{content:"+";font-size:15px;color:var(--muted)}
  details.exp[open] > summary::after{content:"\2212"}
  details.exp > summary:hover{color:var(--ink)}
  .sum-note{font-family:var(--f-body);font-size:12.5px;font-weight:400;letter-spacing:0;
            text-transform:none;color:var(--muted);margin-left:auto;margin-right:10px}

  /* ---- field ---- */
  .cols{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px;align-items:start}
  @media (max-width:860px){.cols{grid-template-columns:1fr;gap:34px}}

  .dl{display:grid;grid-template-columns:3px 58px minmax(0,1fr);gap:0 14px;
      border-bottom:1px solid var(--line-soft)}
  .dl .stripe{background:var(--s-ok)}
  .dl.d-urgent .stripe{background:var(--s-stale)}
  .dl.d-soon   .stripe{background:var(--s-soon)}
  .dl.d-open   .stripe{background:var(--accent)}
  .dl.d-closed .stripe{background:var(--line-soft)}
  .dl.i-submitting{background:rgba(255,204,102,.05)}
  .dl-n{display:flex;flex-direction:column;justify-content:center;padding:12px 0}
  .dl-n .n{font-family:var(--f-data);font-size:19px;line-height:1;
           font-variant-numeric:tabular-nums}
  .dl.d-urgent .dl-n .n{font-weight:700;color:var(--s-stale)}
  .dl.d-open .dl-n .n{font-size:12px;font-weight:700;color:var(--accent)}
  .dl.d-closed .dl-n .n{color:var(--muted);font-size:14px}
  .dl-n .u{font-family:var(--f-data);font-size:9.5px;letter-spacing:.05em;
           text-transform:uppercase;color:var(--muted);margin-top:4px}
  .dl-b{padding:12px 0;min-width:0}
  .dl-b h3{font-weight:600;font-size:14px;line-height:1.32;margin:0 0 4px}
  .dl.d-closed .dl-b h3 a{color:var(--muted)}

  .pp{display:grid;grid-template-columns:3px 62px minmax(0,1fr);gap:0 12px;
      border-bottom:1px solid var(--line-soft)}
  .pp .stripe{background:transparent}
  .pp.t-reading .stripe{background:var(--s-soon)}
  .pp.t-read    .stripe{background:var(--good)}
  .pp.t-cited   .stripe{background:var(--accent)}
  .pp.t-irrelevant{opacity:.42}
  .pp-w{font-family:var(--f-data);font-size:10.5px;color:var(--muted);
        padding:12px 0;font-variant-numeric:tabular-nums;line-height:1.45}
  .pp-w b{display:block;color:var(--ink);font-weight:700;font-size:11.5px}
  .pp-b{padding:12px 0;min-width:0}
  .pp-b h3{font-weight:400;font-size:13.5px;line-height:1.38;margin:0 0 6px}
  a{color:var(--ink);text-decoration:underline;text-underline-offset:2px;
    text-decoration-color:var(--line)}
  a:hover{text-decoration-color:var(--accent);color:var(--accent)}
  .tags{display:flex;flex-wrap:wrap;gap:3px 10px;margin-bottom:7px}
  .tag{font-family:var(--f-data);font-size:9.5px;letter-spacing:.05em;
       text-transform:uppercase;color:var(--muted)}
  .mini{display:flex;flex-wrap:wrap;gap:4px}
  .mini button{font-family:var(--f-data);font-size:9.5px;letter-spacing:.05em;
    text-transform:uppercase;padding:3px 7px;border:1px solid var(--line-soft);
    background:none;color:var(--muted);cursor:pointer}
  .mini button:hover{border-color:var(--accent);color:var(--accent)}
  .mini button[aria-pressed="true"]{border-color:var(--accent);color:var(--accent-ink);
    background:var(--accent);font-weight:700}

  /* ---- questions ---- */
  .prog{display:flex;align-items:center;gap:14px;padding:15px 0 4px;flex-wrap:wrap}
  .prog .big{font-family:var(--f-data);font-size:26px;line-height:1;
             font-variant-numeric:tabular-nums}
  .prog .of{font-family:var(--f-data);font-size:11px;letter-spacing:.05em;
            text-transform:uppercase;color:var(--muted)}
  .bar{flex:1;min-width:180px;height:6px;background:var(--s-ok);overflow:hidden}
  .bar i{display:block;height:100%;background:var(--accent)}
  .bycluster{display:flex;flex-wrap:wrap;gap:4px 18px;padding:6px 0 2px;
             font-family:var(--f-data);font-size:10.5px;color:var(--muted);
             font-variant-numeric:tabular-nums}
  .bycluster b{color:var(--ink-soft);font-weight:400}

  .filters{display:flex;gap:14px;align-items:center;flex-wrap:wrap;padding:16px 0 4px}
  .filters select{width:auto;min-width:200px;font-size:13px;padding:7px 9px}

  .q{border-bottom:1px solid var(--line-soft)}
  .q-head{display:grid;grid-template-columns:3px 34px minmax(0,1fr) auto;gap:0 12px;
          align-items:start;width:100%;text-align:left;background:none;border:0;
          color:inherit;font:inherit;cursor:pointer;padding:0}
  .q .stripe{background:var(--s-soon);align-self:stretch}
  .q.st-answered .stripe{background:var(--good)}
  .q.st-dropped  .stripe{background:var(--s-ok)}
  .q-n{font-family:var(--f-data);font-size:11px;color:var(--muted);padding:13px 0;
       font-variant-numeric:tabular-nums}
  .q-t{padding:12px 0;font-size:14px;line-height:1.4}
  .q.st-answered .q-t,.q.st-dropped .q-t{color:var(--muted)}
  .q-c{font-family:var(--f-data);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;
       color:var(--muted);padding:14px 0;white-space:nowrap}
  @media (max-width:640px){.q-c{display:none}}
  .q-open{padding:2px 0 18px 46px}
  @media (max-width:640px){.q-open{padding-left:0}}
  .q-ans{font-size:13.5px;color:var(--ink-soft);line-height:1.55;margin:0 0 8px;
         white-space:pre-wrap}
  .q-when{font-family:var(--f-data);font-size:10px;color:var(--muted);
          letter-spacing:.05em;text-transform:uppercase}

  /* ---- facts ---- */
  .fc-topic{font-family:var(--f-data);font-size:10.5px;letter-spacing:.07em;text-transform:uppercase;
            color:var(--muted);font-weight:400;margin:26px 0 4px;padding-bottom:6px;
            border-bottom:1px solid var(--rule)}
  .fc{border-bottom:1px solid var(--line-soft);padding-bottom:10px}
  .fc-head{display:grid;grid-template-columns:3px auto minmax(0,1fr);gap:0 12px;align-items:start;
           width:100%;text-align:left;background:none;border:0;color:inherit;font:inherit;
           cursor:pointer;padding:0}
  .fc .stripe{background:var(--s-soon);align-self:stretch}
  .fc.st-verified .stripe{background:var(--good)}
  .fc.st-read     .stripe{background:var(--info)}
  .fc.st-reported .stripe{background:var(--s-soon)}
  .fc.st-open     .stripe{background:var(--faint)}
  .fc.st-wrong    .stripe{background:var(--s-stale)}
  .fc-badge{font-family:var(--f-data);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;
            color:var(--muted);padding:15px 0;white-space:nowrap;min-width:92px}
  .fc.st-verified .fc-badge{color:var(--good)}
  .fc.st-read .fc-badge{color:var(--info)}
  .fc.st-reported .fc-badge{color:var(--s-soon)}
  .fc.st-wrong .fc-badge{color:var(--s-stale)}
  .fc-t{padding:12px 0;font-size:14.5px;line-height:1.45}
  .fc.st-wrong .fc-t{color:var(--muted);text-decoration:line-through}
  .fc-src,.fc-quote,.fc-links,.fc-open{margin-left:15px;padding-left:107px}
  .fc-src{font-family:var(--f-data);font-size:11px;color:var(--muted);margin-top:-4px}
  .fc-quote{font-size:13px;color:var(--ink-soft);font-style:italic;margin-top:6px;margin-bottom:0}
  .fc-links{margin-top:6px;display:flex;gap:6px;flex-wrap:wrap}
  .fc-link{font-family:var(--f-data);font-size:10.5px;color:var(--accent);border:1px solid var(--line);
           border-radius:3px;padding:1px 6px}
  .fc-note{font-size:13px;color:var(--ink-soft);line-height:1.55;margin:8px 0 0;white-space:pre-wrap}
  .fc-open{padding-bottom:6px}
  @media (max-width:640px){
    .fc-head{grid-template-columns:3px minmax(0,1fr)}
    .fc-badge{grid-column:2;padding:10px 0 0}
    .fc-t{grid-column:2;padding-top:2px}
    .fc-src,.fc-quote,.fc-links,.fc-open{padding-left:0}
  }
  .fc-add{margin:14px 0 6px;border:1px solid var(--line);border-radius:4px;background:var(--surface)}
  .fc-add > summary{cursor:pointer;padding:9px 12px;font-size:13px;color:var(--accent);list-style:none}
  .fc-add > summary::-webkit-details-marker{display:none}
  .fc-add[open] > summary{border-bottom:1px solid var(--line)}
  .fc-add form{padding:4px 14px 14px}
  .fc-row{display:grid;grid-template-columns:1fr 1.4fr 90px;gap:12px}
  #fc-tally{white-space:normal;text-align:right}
  @media (max-width:640px){.fc-row{grid-template-columns:1fr}}

  /* ---- computers and provenance ---- */
  .via{color:var(--faint);font-family:var(--f-data)}
  .tk-m .via,.row-meta .via{font-size:10.5px}
  .newpc{margin:0 0 22px;padding:12px 14px;border:1px solid var(--accent);border-radius:4px;background:var(--surface)}
  .newpc p{margin:0 0 8px;font-size:13.5px}
  .newpc-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
  .newpc-row input{max-width:280px}
  .dv{display:flex;flex-wrap:wrap;gap:4px 14px;align-items:baseline;padding:10px 0;
      border-bottom:1px solid var(--line-soft);font-family:var(--f-data);font-size:11px;color:var(--muted)}
  .dv b{font-family:var(--f-body);font-size:14px;color:var(--ink);font-weight:500}
  .dv.me b{color:var(--accent)}
  .dv-me{color:var(--accent);text-transform:uppercase;letter-spacing:.05em}
  .dv code{color:var(--faint)}
  .chk{display:flex;gap:8px;align-items:flex-start;margin-top:12px;font-size:13px;color:var(--ink-soft)}
  .chk input{width:auto;margin-top:3px}
  /* ---- inventory ---- */
  .iv.st-have    .stripe{background:var(--good)}
  .iv.st-need    .stripe{background:var(--s-stale)}
  .iv.st-ordered .stripe{background:var(--info)}
  .iv.st-unknown .stripe{background:var(--s-soon)}
  .iv.st-retired .stripe{background:var(--line-soft)}
  .iv.st-have .fc-badge{color:var(--good)}
  .iv.st-need .fc-badge{color:var(--s-stale)}
  .iv.st-ordered .fc-badge{color:var(--info)}
  .iv.st-unknown .fc-badge{color:var(--s-soon)}
  .iv.st-retired .fc-t{color:var(--muted)}
  .iv-note{margin-left:15px;padding-left:107px;color:var(--muted)}
  @media (max-width:640px){.iv-note{padding-left:0}}
  #iv-tally{white-space:normal;text-align:right}
  .fc-row.iv-row{grid-template-columns:1fr 1fr 1fr}
  @media (max-width:640px){.fc-row.iv-row{grid-template-columns:1fr}}

  /* ---- history (Log tab) ---- */
  #hx-search{width:auto;min-width:220px;font-size:13px;padding:7px 9px}
  .cal-head{display:flex;align-items:center;gap:10px;margin:10px 0 8px;flex-wrap:wrap}
  .cal-head b{font-size:15px;min-width:150px;text-align:center}
  .cal-nav{padding:5px 12px}
  .cal-wrap{position:relative}
  .cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
  .cal-w{font-family:var(--f-data);font-size:10px;letter-spacing:.06em;text-transform:uppercase;
         color:var(--muted);text-align:center;padding:4px 0}
  .cal-d{min-height:64px;display:flex;flex-direction:column;align-items:flex-start;justify-content:space-between;
         padding:6px 7px;background:var(--surface);border:1px solid var(--line-soft);border-radius:4px;
         color:var(--ink);font:inherit;cursor:pointer;text-align:left}
  .cal-d.out{opacity:.35}
  .cal-d.today{border-color:var(--accent)}
  .cal-d.pinned{outline:2px solid var(--accent);outline-offset:1px}
  .cal-n{font-family:var(--f-data);font-size:12px;color:var(--ink-soft)}
  .cal-mk{font-family:var(--f-data);font-size:10px;color:var(--bg);background:var(--good);
          padding:1px 5px;border-radius:3px;white-space:nowrap}
  .cal-d.l1 .cal-mk{opacity:.55}
  .cal-d.l2 .cal-mk{opacity:.7}
  .cal-d.l3 .cal-mk{opacity:.85}
  .cal-d.has{border-color:var(--line)}
  .cal-d.dim{opacity:.3}
  .cal-help{font-size:12px;color:var(--muted);margin:8px 0 0}
  .cal-pop{position:absolute;z-index:15;max-height:420px;overflow:auto;padding:12px 14px;
           background:var(--bg);border:1px solid var(--accent);border-radius:6px;
           box-shadow:0 10px 30px rgba(0,0,0,.45)}
  .cal-close{margin-top:8px;padding:4px 10px}
  .hx-day{border-bottom:1px solid var(--line-soft);padding:12px 0}
  .hx-day-h{display:flex;justify-content:space-between;gap:12px;align-items:baseline;margin-bottom:6px}
  .hx-day-h b{font-size:14px}
  .hx-day-h span{font-family:var(--f-data);font-size:11px;color:var(--good)}
  .hx-it{display:grid;grid-template-columns:62px minmax(0,1fr);gap:8px;padding:5px 0}
  .hx-k{font-family:var(--f-data);font-size:9.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);padding-top:3px}
  .hx-it p{margin:0;font-size:13.5px;line-height:1.5;white-space:pre-wrap}
  .hx-it p.hx-sub{color:var(--ink-soft);font-size:12.5px;margin-top:3px}
  .hx-sub em{font-style:normal;font-family:var(--f-data);font-size:10px;text-transform:uppercase;color:var(--muted);margin-right:4px}
  .hx-meta{font-family:var(--f-data);font-size:10.5px;color:var(--faint);margin-top:4px}
  .hx-none{color:var(--muted);font-size:13px;margin:0}
  .cmp-body{padding:4px 14px 14px}
  .cmp-dates{max-width:420px}
  #cmp-out{font-family:var(--f-data);font-size:12.5px;line-height:1.55}
  @media (max-width:640px){
    .cal-d{min-height:46px;padding:4px}
    .cal-mk{font-size:8.5px;padding:0 3px}
    #hx-search{min-width:0;width:100%}
  }

  .msg{padding:15px 0;color:var(--muted);font-size:14px}
  .msg b{color:var(--ink)}
  .note{
    margin-top:34px;padding-top:14px;border-top:1px solid var(--line);
    font-size:12.5px;color:var(--ink-soft);line-height:1.6;
  }
  .note h3{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;
           margin:0 0 6px;color:var(--ink);font-weight:700}
  .note p{margin:0 0 6px;max-width:78ch}
  .note p:last-child{margin-bottom:0}
  @media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}

/* ---- setup ---- */
.lede{font-size:14.5px;color:var(--ink-soft);max-width:70ch;margin:16px 0 0;line-height:1.55}
.steps{margin:16px 0 22px;padding-left:20px;max-width:74ch;font-size:14px;line-height:1.6;color:var(--ink-soft)}
.steps li{margin-bottom:7px}
.steps b{color:var(--ink)}
code{font-family:var(--f-data);font-size:12.5px;background:var(--surface);
     padding:1px 5px;border:1px solid var(--line-soft)}
.said.bad{color:var(--s-stale)}
#f-token .field{max-width:520px}

/* ---- plan ---- */
.tk{display:grid;grid-template-columns:3px 92px minmax(0,1fr);gap:0 12px;
    border-bottom:1px solid var(--line-soft)}
.tk .stripe{background:var(--s-ok)}
.tk.st-next  .stripe{background:var(--accent)}
.tk.st-doing .stripe{background:var(--good)}
.tk.st-done  .stripe{background:var(--line-soft)}
.tk.st-blocked .stripe{background:var(--s-stale)}
.tk.waiting{opacity:.5}
.tk.st-done{opacity:.45}
.tk-s{padding:12px 0}
.tk-s button{font-family:var(--f-data);font-size:9.5px;letter-spacing:.06em;
  text-transform:uppercase;font-weight:700;padding:4px 8px;width:100%;
  border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);cursor:pointer}
.tk.st-next  .tk-s button{border-color:var(--accent);color:var(--accent)}
.tk.st-doing .tk-s button{border-color:var(--good);color:var(--good)}
.tk-s button:hover{border-color:var(--accent)}
.tk-b{padding:12px 0 13px;min-width:0}
.tk-t{font-size:14px;font-weight:600;line-height:1.35;margin:0 0 3px;cursor:pointer}
.tk.st-done .tk-t{text-decoration:line-through}
.tk-d{font-size:12.5px;color:var(--muted);line-height:1.45;margin:0 0 6px}
.tk-m{display:flex;flex-wrap:wrap;gap:3px 12px;font-family:var(--f-data);
      font-size:10px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.tk-m .need{font-weight:700;color:var(--ink-soft)}
.tk-m .wait{color:var(--s-stale);font-weight:700}
.tk-edit{padding:0 0 16px 104px}
@media (max-width:640px){.tk-edit{padding-left:0}.tk{grid-template-columns:3px 76px minmax(0,1fr)}}
.grouphead{font-family:var(--f-data);font-size:10.5px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--muted);font-weight:700;
  padding:18px 0 5px;border-bottom:1px solid var(--line-soft)}
.grouphead:first-child{padding-top:6px}
.grouphead b{color:var(--ink)}

/* ---- year heatmap ---- */
.heat-wrap{overflow-x:auto;padding:14px 0 4px}
.heat-legend{display:flex;align-items:center;gap:7px;justify-content:flex-end;
  font-family:var(--f-data);font-size:9.5px;letter-spacing:.05em;
  text-transform:uppercase;color:var(--muted);padding-top:6px}
.heat-legend i{width:11px;height:11px;display:inline-block;border-radius:2px}
#heat svg rect.cell{transition:transform .12s ease, stroke .12s ease;
  transform-origin:center;transform-box:fill-box}
#heat svg rect.cell:hover{stroke:var(--ink);stroke-width:1.2;transform:scale(1.45)}
#heat svg text{fill:var(--muted);font-family:var(--f-data);font-size:9px;
  letter-spacing:.04em;text-transform:uppercase}

/* ---- threads board ---- */
.board-wrap{position:relative;overflow:auto;border:1px solid var(--line-soft);background:
  radial-gradient(circle at 50% 0%, rgba(255,204,102,.035), transparent 60%), var(--bg);
  margin-top:16px}
.board{position:relative;min-height:520px}
.threads{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.threads path{fill:none;stroke:#B98C42;stroke-width:1.7;pointer-events:stroke;cursor:pointer;
  stroke-linecap:round;
  transition:stroke .18s ease, stroke-width .18s ease, opacity .18s ease}
/* the shadow the string casts, and the pin it hangs from */
.threads .shade{fill:none;stroke:rgba(0,0,0,.5);stroke-width:3.4;stroke-linecap:round;
  pointer-events:none;transform:translate(1px,2px)}
.threads .pins{pointer-events:none}
.threads .pin-h{fill:var(--accent);stroke:rgba(0,0,0,.55);stroke-width:1}
.threads .pin-g{fill:rgba(255,255,255,.6)}
.threads path.lit{stroke:var(--accent);stroke-width:2.6}
.threads path.dim{opacity:.12}
.threads path.live{stroke:var(--s-stale);stroke-width:1.8;stroke-dasharray:5 4;pointer-events:none}
.threads path.drawin{stroke-dasharray:var(--len);stroke-dashoffset:var(--len);
  animation:thread-draw .7s ease forwards}
@keyframes thread-draw{to{stroke-dashoffset:0}}
.nodes{position:absolute;inset:0}

.nd{position:absolute;box-sizing:border-box;cursor:pointer;
  transition:transform .14s cubic-bezier(.2,.8,.3,1), border-color .14s ease,
             box-shadow .14s ease, opacity .18s ease;
  will-change:transform}
.nd.dim{opacity:.22}
.nd:hover{border-color:var(--accent);
  box-shadow:0 6px 20px rgba(0,0,0,.45), 0 0 0 1px var(--accent)}
.nd.sel{border-color:var(--s-stale);box-shadow:0 0 0 1px var(--s-stale)}

/* question chips */
.nd.q{width:52px;height:30px;display:flex;align-items:center;justify-content:center;
  background:var(--surface);border:1px solid var(--line);
  font-family:var(--f-data);font-size:11px;font-weight:700;color:var(--ink-soft)}
.nd.q.routed{color:var(--accent);border-color:#4a4327}
.nd.q.closed{color:var(--good);border-color:#33402a}
/* objective hubs */
.nd.hub{width:150px;padding:11px 12px;background:var(--surface);
  border:1px solid var(--rule);text-align:center}
.nd.hub b{display:block;font-family:var(--f-data);font-size:12px;color:var(--accent)}
.nd.hub span{font-size:11px;color:var(--muted);line-height:1.3}
/* paper cards */
.nd.pc{width:190px;padding:10px 11px;background:var(--surface);border:1px solid var(--line)}
.nd.pc h4{margin:0 0 5px;font-size:12px;font-weight:600;line-height:1.35}
.nd.pc .mt{font-family:var(--f-data);font-size:9px;letter-spacing:.05em;
  text-transform:uppercase;color:var(--muted)}
.nd.pin{width:160px;padding:10px 11px;background:#2a2417;border:1px solid var(--accent);
  font-size:12px;line-height:1.4;color:var(--ink)}
.clab{position:absolute;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;font-family:var(--f-data);font-size:9px;letter-spacing:.07em;
  text-transform:uppercase;color:var(--muted);pointer-events:none}
@media (prefers-reduced-motion:reduce){
  .nd,.threads path{transition:none!important}
  .threads path.drawin{animation:none;stroke-dashoffset:0}
}

/* ---- board: node kinds, typed edges, layouts ---- */
.board-wrap{max-height:76vh}
.threads path.k-contradicts{stroke:#F28779}
.threads path.k-supports{stroke:#BAE67E}
.threads path.k-same{stroke:#73D0FF}
.threads path.k-assumes{stroke:#D4BFFF;stroke-dasharray:3 3}
.threads path.k-superseded{stroke:var(--muted);stroke-dasharray:6 4}
.threads path.auto{stroke-dasharray:2 5;opacity:.5}
.threads path.lit.auto{opacity:1}

.nd.cl{width:186px;padding:10px 11px;background:var(--surface);
  border:1px solid var(--line);border-left-width:3px}
.nd.cl .txt{font-size:12px;line-height:1.4}
.nd.cl.ev-assumed{border-left-color:#F28779}
.nd.cl.ev-simulated{border-left-color:#FFCC66}
.nd.cl.ev-bench{border-left-color:#73D0FF}
.nd.cl.ev-validated{border-left-color:#BAE67E}
.nd.cl.ev-contradicted{border-left-color:#F28779;background:#2a1e1c}
.nd.cn{width:150px;padding:9px 11px;background:#1b2330;border:1px dashed var(--info);
  font-size:12px;line-height:1.35;text-align:center}
.ev{display:inline-block;font-family:var(--f-data);font-size:8.5px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted);margin-top:6px}
.eq{margin-top:6px;font-size:11px;overflow-x:auto}
.eq .katex{color:var(--ink)}
.lanelab{position:absolute;font-family:var(--f-data);font-size:9px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted);pointer-events:none}
.axis{position:absolute;border-top:1px dashed var(--line-soft);pointer-events:none}
.axis span{position:absolute;top:3px;font-family:var(--f-data);font-size:9px;color:var(--muted)}
#th-rel,#th-layout{flex-shrink:0}
.legend-rel{display:flex;flex-wrap:wrap;gap:6px 16px;padding:10px 0 0;
  font-family:var(--f-data);font-size:9.5px;letter-spacing:.05em;
  text-transform:uppercase;color:var(--muted)}
.legend-rel i{display:inline-block;width:16px;height:2px;margin-right:5px;vertical-align:middle}
.nd.pc.kd-book{border-left:3px solid #D4BFFF}
.nd.pc.kd-patent{border-left:3px solid #95E6CB}
.nd.pc.kd-report{border-left:3px solid var(--muted)}
.nd.pc.kd-article{border-left:3px solid var(--muted)}
.nd.pc.kd-feed{opacity:.72;border-style:dashed}
.nd.pc .mt.own{color:var(--accent);
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;
  overflow:hidden}   /* a hint that a note exists — the note itself lives in the panel */

/* ---- paper inspector: the panel a node opens into ---- */
.insp{
  position:fixed;top:0;right:0;bottom:0;width:min(420px,92vw);z-index:40;
  display:flex;flex-direction:column;gap:9px;
  padding:16px 18px 20px;overflow-y:auto;
  background:var(--surface);border-left:1px solid var(--rule);
  box-shadow:-18px 0 44px rgba(0,0,0,.42);
  animation:insp-in .16s ease-out;
}
@keyframes insp-in{from{transform:translateX(18px);opacity:0}to{transform:none;opacity:1}}
@media (prefers-reduced-motion:reduce){.insp{animation:none}}
.insp-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.insp-kind{font-family:var(--f-data);font-size:10px;letter-spacing:.09em;
  text-transform:uppercase;color:var(--accent)}
.insp-x{background:none;border:0;color:var(--muted);font-size:22px;line-height:1;
  cursor:pointer;padding:0 2px}
.insp-x:hover{color:var(--ink)}
.insp h3{margin:0;font-size:15px;line-height:1.35;font-weight:600}
.insp-meta{font-family:var(--f-data);font-size:10px;letter-spacing:.04em;
  color:var(--muted);line-height:1.6}
.insp-links{display:flex;flex-wrap:wrap;gap:7px;margin:3px 0 4px}
.insp-links .btn{font-size:12px;padding:5px 11px;text-decoration:none}
.insp-path{font-family:var(--f-data);font-size:10px;color:var(--faint);
  align-self:center;cursor:help}
.insp-lab{font-family:var(--f-data);font-size:10px;letter-spacing:.07em;
  text-transform:uppercase;color:var(--muted);margin-top:4px}
.insp-ta{
  width:100%;resize:vertical;padding:9px 10px;
  background:var(--bg);color:var(--ink);
  border:1px solid var(--line);border-radius:3px;
  font-family:var(--f-body);font-size:13px;line-height:1.5;
}
.insp-ta:focus{outline:none;border-color:var(--accent)}
.insp-foot{display:flex;align-items:center;gap:12px;margin-top:6px}
.nd.open{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}
/* give the panel its own room rather than letting it cover live cards */
body.insp-open .board-wrap{margin-right:min(436px,92vw)}
@media (max-width:820px){body.insp-open .board-wrap{margin-right:0}}

/* curated context from the source list — read-only, so it never competes
   with the notes box for the same field */
.insp-why{padding:8px 10px;border-left:2px solid var(--rule);background:var(--bg);
  font-size:12px;line-height:1.5;color:var(--ink-soft)}
.insp-why b{font-family:var(--f-data);font-size:10px;letter-spacing:.07em;color:var(--accent)}
.insp-ch{display:flex;flex-direction:column;gap:2px;max-height:210px;overflow-y:auto;
  border:1px solid var(--line-soft);border-radius:3px;padding:6px}
.insp-ch .insp-lab{margin:0 0 4px}
.insp-chl{font-size:12px;line-height:1.45;color:var(--ink-soft);text-decoration:none;
  padding:2px 4px;border-radius:2px}
.insp-chl:hover{color:var(--accent);background:var(--surface)}

/* ---- the face of a document: its own title page, pinned ---- */
.nd.pc{transform:rotate(var(--tilt,0deg))}
.pcf{
  position:relative;width:100%;height:160px;margin:0 0 8px;overflow:hidden;
  background:var(--bg);border:1px solid var(--line-soft);
  display:flex;align-items:center;justify-content:center;
}
.pcf img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block}
.pcf.empty img{display:none}
/* no thumbnail: say which kind it is rather than showing a broken frame */
.pcf.empty::after{
  content:attr(data-fb);
  font-family:var(--f-data);font-size:10px;letter-spacing:.12em;text-transform:uppercase;
  color:var(--faint);
}
.pcf.empty{background:
  repeating-linear-gradient(135deg,transparent 0 6px,rgba(255,255,255,.022) 6px 12px),var(--bg)}
/* the page fades into the card so the text below reads as a caption */
.pcf::before{
  content:"";position:absolute;inset:auto 0 0 0;height:34px;pointer-events:none;
  background:linear-gradient(transparent,rgba(36,41,54,.92));
}
.nd.pc.kd-feed .pcf{filter:grayscale(.45)}

/* ---- zoom ----
   The board scales; a sizer box carries the scaled dimensions so the scrollbars
   still describe the real extent. */
.zsize{position:relative}
.board{transform:scale(var(--z,1));transform-origin:0 0}
.zoomer{
  position:sticky;bottom:10px;left:100%;float:right;z-index:6;
  display:inline-flex;gap:1px;margin:0 10px -34px 0;
  background:var(--surface);border:1px solid var(--rule);border-radius:4px;
  box-shadow:0 4px 16px rgba(0,0,0,.4);overflow:hidden;
}
.zoomer button{
  background:none;border:0;color:var(--ink-soft);cursor:pointer;
  font-family:var(--f-data);font-size:11px;padding:6px 10px;min-width:34px;
}
.zoomer button:hover{background:var(--bg);color:var(--accent)}
#z-pct{min-width:52px;color:var(--muted)}

/* ---- level of detail: what survives as the board shrinks ---- */
.pcid{display:none;font-family:var(--f-data);letter-spacing:.03em;
  color:var(--ink-soft);text-align:center;line-height:1.3;
  max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pcid b{color:var(--accent)}
.pcid i{font-style:normal;margin-left:5px}

.board[data-lod="mid"] .nd.pc .mt{display:none}

/* tag and dot: the card is a marker, and its content is held near a constant
   size on screen — capped, so a label can never outgrow the card it names */
.board[data-lod="tag"] .nd.pc .pcf,  .board[data-lod="dot"] .nd.pc .pcf,
.board[data-lod="tag"] .nd.pc h4,    .board[data-lod="dot"] .nd.pc h4,
.board[data-lod="tag"] .nd.pc .mt,   .board[data-lod="dot"] .nd.pc .mt{display:none}
.board[data-lod="tag"] .nd.pc, .board[data-lod="dot"] .nd.pc{
  display:flex;align-items:center;justify-content:center;
  min-height:70px;overflow:hidden;
}
.board[data-lod="tag"] .pcid{display:block;font-size:min(calc(10px / var(--z,1)),42px)}
.board[data-lod="tag"] .pcid i{font-size:.8em}
.board[data-lod="dot"] .pcid{display:block;font-size:min(calc(12px / var(--z,1)),100px)}
.board[data-lod="dot"] .pcid i{display:none}   /* the number alone at this range */

/* hover is how you read a card you cannot read: it lifts clear of its
   neighbours and shows the whole label */
.board[data-lod="tag"] .nd.pc:hover, .board[data-lod="dot"] .nd.pc:hover{
  overflow:visible;z-index:9;background:var(--surface)
}
.board[data-lod="dot"] .nd.pc:hover .pcid i{display:inline;font-size:.5em}

/* claims and concepts follow the same rule */
.board[data-lod="tag"] .nd.cl .txt, .board[data-lod="tag"] .nd.cn,
.board[data-lod="dot"] .nd.cl .txt, .board[data-lod="dot"] .nd.cn{
  font-size:min(calc(9px / var(--z,1)),40px);
  display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden
}
.board[data-lod="tag"] .nd.cl .ev, .board[data-lod="dot"] .nd.cl .ev,
.board[data-lod="tag"] .nd.cl .eq, .board[data-lod="dot"] .nd.cl .eq{display:none}

.board[data-lod="tag"] .lanelab, .board[data-lod="mid"] .lanelab,
.board[data-lod="dot"] .lanelab{font-size:min(calc(9px / var(--z,1)),75px)}
.board[data-lod="tag"] .axis span, .board[data-lod="dot"] .axis span{
  font-size:min(calc(9px / var(--z,1)),75px)}

/* strings hold their weight on screen rather than thinning to nothing */
.board[data-lod="mid"] .threads path{stroke-width:calc(1.7px / var(--z,1))}
.board[data-lod="tag"] .threads path,
.board[data-lod="dot"] .threads path{stroke-width:calc(1.9px / var(--z,1))}
.board[data-lod="tag"] .threads .shade,
.board[data-lod="dot"] .threads .shade{stroke-width:calc(3.4px / var(--z,1))}
.board[data-lod="dot"] .threads .pin-h{r:calc(4.6px / var(--z,1))}
.board[data-lod="dot"] .threads .pin-g{display:none}

/* ---- task check box and undo toast ---- */
.tk-s{display:flex;flex-direction:column;align-items:flex-start;gap:6px}
.tk-chk{width:22px;height:22px;padding:0;border:1.5px solid var(--rule);border-radius:4px;
  background:none;color:var(--accent-ink);font-size:14px;line-height:1;cursor:pointer}
.tk-chk:hover{border-color:var(--good)}
.tk-chk[aria-checked="true"]{background:var(--good);border-color:var(--good)}
.tk.st-done .tk-t{color:var(--muted);text-decoration:line-through}
.undo-toast{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:60;
  display:flex;align-items:center;gap:16px;max-width:min(560px,92vw);
  padding:10px 14px;background:var(--surface);border:1px solid var(--rule);border-radius:4px;
  box-shadow:0 8px 28px rgba(0,0,0,.5);font-size:13px}
.undo-toast span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.undo-toast button{background:none;border:0;color:var(--accent);font-family:var(--f-data);
  font-size:11px;letter-spacing:.08em;text-transform:uppercase;cursor:pointer;padding:2px 4px}
