:root {
  --ink: #213c34;
  --muted: #6c7872;
  --line: #dfe5df;
  --paper: #f6f7f2;
  --green: #1c614b;
  --amber: #976619;
}
* {
  box-sizing: border-box;
}
body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font:
    14px/1.6 -apple-system,
    BlinkMacSystemFont,
    "PingFang SC",
    sans-serif;
}
aside {
  position: fixed;
  inset: 0 auto 0 0;
  width: 220px;
  background: #173f34;
  color: #e6efe7;
  padding: 34px 24px;
  display: flex;
  flex-direction: column;
}
.brand {
  font-size: 28px;
  letter-spacing: 4px;
  font-weight: 600;
  color: inherit;
  text-decoration: none;
}
.brand span {
  display: block;
  letter-spacing: 1px;
  font-size: 11px;
  font-weight: 400;
  opacity: 0.7;
  margin: 5px 0 40px;
}
nav {
  display: grid;
  gap: 8px;
}
nav button {
  background: transparent;
  color: #c6d9cd;
  text-align: left;
  border: 0;
  padding: 13px;
  border-radius: 6px;
}
nav button.active {
  background: #2d5647;
  color: white;
}
.aside-note {
  margin-top: auto;
  color: #b8ccbd;
  font-size: 12px;
  line-height: 1.8;
}
.aside-note small {
  display: block;
  margin-top: 20px;
  opacity: 0.7;
}
.shell {
  margin-left: 220px;
}
header {
  height: 74px;
  border-bottom: 1px solid var(--line);
  padding: 0 36px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  background: #fbfcf8;
  color: var(--muted);
  font-size: 12px;
}
header i {
  padding: 0 10px;
  color: #adb8ad;
}
main {
  max-width: 1440px;
  margin: auto;
  padding: 36px;
}
h1 {
  font-size: 29px;
  letter-spacing: -1px;
  font-weight: 600;
  line-height: 1.3;
  margin: 0 0 12px;
}
h2 {
  font-size: 18px;
  font-weight: 600;
  margin: 0 0 18px;
}
h3 {
  font-size: 15px;
  margin: 0 0 12px;
}
p {
  margin: 8px 0 20px;
}
.muted,
small {
  color: var(--muted);
}
.eyebrow {
  font-size: 11px;
  color: var(--green);
  letter-spacing: 2px;
  text-transform: uppercase;
  margin-bottom: 12px;
}
.page-head {
  display: flex;
  justify-content: space-between;
  align-items: start;
  gap: 20px;
  margin-bottom: 28px;
}
.panel {
  background: white;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 25px;
  margin-bottom: 22px;
}
.grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 22px;
}
.stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
  margin: 25px 0;
}
.stat {
  background: white;
  border: 1px solid var(--line);
  padding: 22px;
  border-radius: 8px;
}
.stat b {
  display: block;
  font-size: 32px;
  font-weight: 500;
  margin-top: 7px;
}
.stat span {
  font-size: 12px;
  color: var(--muted);
}
label {
  display: block;
  font-size: 12px;
  color: var(--muted);
  margin-bottom: 7px;
}
input,
select,
textarea {
  width: 100%;
  border: 1px solid #ced8cf;
  border-radius: 5px;
  background: #fff;
  color: var(--ink);
  padding: 10px 12px;
  font: inherit;
  min-height: 42px;
}
textarea {
  min-height: 72px;
  resize: vertical;
}
input[type="checkbox"] {
  width: auto;
  min-height: initial;
  margin: 0 8px 0 0;
}
input[type="file"] {
  padding: 10px;
  background: #f7faf6;
}
.fields {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
  margin-bottom: 18px;
}
.field {
  min-width: 0;
}
.field.wide {
  grid-column: 1/-1;
}
button,
.button {
  border: 1px solid var(--green);
  color: white;
  background: var(--green);
  border-radius: 5px;
  font: inherit;
  padding: 9px 17px;
  cursor: pointer;
  text-decoration: none;
  display: inline-block;
}
button:disabled {
  opacity: 0.4;
  cursor: not-allowed;
}
.secondary {
  background: white;
  color: var(--green);
}
.quiet {
  background: transparent;
  color: var(--green);
  border: 0;
  padding: 4px 7px;
}
.actions {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  align-items: center;
  margin-top: 18px;
}
.empty {
  padding: 45px 20px;
  text-align: center;
  color: var(--muted);
  border: 1px dashed #cbd6ca;
  border-radius: 8px;
}
.empty strong {
  display: block;
  color: var(--ink);
  font-size: 17px;
  margin-bottom: 8px;
}
#message:not(:empty) {
  position: sticky;
  top: 12px;
  z-index: 8;
  background: #fff3dc;
  border: 1px solid #e5c79b;
  color: #7c501b;
  border-radius: 6px;
  padding: 12px 16px;
  margin-bottom: 20px;
}
.badge {
  font-size: 11px;
  border-radius: 4px;
  background: #edf4ed;
  color: var(--green);
  padding: 3px 8px;
  white-space: nowrap;
}
.badge.warn {
  background: #fff1db;
  color: var(--amber);
}
.table-wrap {
  overflow: auto;
}
table {
  border-collapse: collapse;
  width: 100%;
  text-align: left;
  font-size: 12px;
}
th {
  background: #f3f6f1;
  color: var(--muted);
  font-weight: 500;
  white-space: nowrap;
}
td,
th {
  padding: 12px 14px;
  border-bottom: 1px solid var(--line);
  vertical-align: top;
}
tr[data-version],
tr[data-record] {
  cursor: pointer;
}
tr[data-version]:hover,
tr[data-record]:hover {
  background: #f4f8f1;
}
td.number {
  text-align: right;
  font-variant-numeric: tabular-nums;
}
.unit {
  border: 1px solid var(--line);
  padding: 20px;
  border-radius: 7px;
  margin: 18px 0;
  background: #fafcf8;
}
.notice {
  border-left: 3px solid #9aac84;
  padding: 9px 14px;
  background: #f3f6ec;
  font-size: 12px;
  color: #5b6b53;
  margin: 15px 0;
}
.auth-box {
  max-width: 480px;
  margin: 50px auto;
}
#auth input {
  margin-bottom: 16px;
}
.split {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 20px;
}
.bars {
  display: grid;
  gap: 10px;
  margin-top: 15px;
}
.bar {
  display: grid;
  grid-template-columns: 130px 1fr 45px;
  gap: 10px;
  align-items: center;
  font-size: 12px;
}
.bar-track {
  height: 10px;
  background: #eff3ea;
  border-radius: 3px;
  overflow: hidden;
}
.bar-track span {
  display: block;
  height: 100%;
  background: #83a984;
}
.source {
  font: 11px/1.7 monospace;
  word-break: break-all;
  background: #f4f6f0;
  padding: 12px;
}
dialog {
  width: min(920px, 94vw);
  max-height: 90vh;
  overflow: auto;
  border: 1px solid var(--line);
  border-radius: 12px;
  padding: 28px;
  color: var(--ink);
}
dialog::backdrop {
  background: #0c231788;
}
#close-detail {
  float: right;
}
pre {
  white-space: pre-wrap;
  word-break: break-all;
  max-height: 260px;
  overflow: auto;
  background: #f3f6ef;
  padding: 16px;
  font-size: 11px;
}
details {
  margin: 12px 0;
}
summary {
  cursor: pointer;
  color: var(--green);
}
.versions {
  display: flex;
  gap: 9px;
  flex-wrap: wrap;
  margin-bottom: 20px;
}
.versions button {
  font-size: 12px;
}
footer {
  font-size: 11px;
  color: var(--muted);
  margin-top: 28px;
}
@media (max-width: 1000px) {
  aside {
    width: 175px;
    padding: 25px 16px;
  }
  .shell {
    margin-left: 175px;
  }
  main {
    padding: 25px;
  }
  .fields {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .grid {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 650px) {
  aside {
    position: static;
    width: auto;
    padding: 14px 18px;
  }
  .brand {
    font-size: 21px;
  }
  .brand span,
  .aside-note {
    display: none;
  }
  nav {
    display: flex;
    gap: 5px;
    margin-top: 9px;
  }
  nav button {
    font-size: 12px;
    padding: 8px;
  }
  .shell {
    margin-left: 0;
  }
  header {
    height: 50px;
    padding: 0 18px;
  }
  main {
    padding: 22px 15px;
  }
  .stats {
    gap: 8px;
  }
  .stat {
    padding: 14px;
  }
  .stat b {
    font-size: 24px;
  }
  .fields {
    grid-template-columns: 1fr;
  }
  .page-head {
    display: block;
  }
  .panel {
    padding: 18px;
  }
  .bar {
    grid-template-columns: 100px 1fr 30px;
  }
}

.phenotype-chart { display:block; width:100%; height:auto; margin:16px 0; }

.agent-layout { display:grid; grid-template-columns:minmax(260px, .7fr) minmax(0, 1.3fr); gap:22px; align-items:start; }
.agent-layout > .panel { min-width:0; }
.agent-main { min-width:0; overflow-wrap:anywhere; }
.agent-history-title { margin-top:32px; }
.agent-history-item { display:block; width:100%; text-align:left; margin:8px 0; background:white; color:var(--ink); border-color:var(--line); }
.agent-history-item.selected { background:#edf4ed; border-color:var(--green); }
.agent-history-item strong { display:block; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; font-weight:500; }
.agent-history-item small { display:block; }
.agent-message { margin:20px 0; padding:14px; background:#f5f7f1; border-radius:8px; }
.agent-message.from-user { background:#edf4ed; }
.agent-message div { white-space:pre-wrap; margin-top:6px; }
.chat-frame {display:flex;flex-direction:column;height:calc(100dvh - 285px);min-height:360px;max-height:850px;min-width:0}
.chat-heading {flex-shrink:0;padding-bottom:8px}
.chat-heading h2 {margin:0}
.chat-frame>.muted {font-size:12px;margin:0 0 8px}
.chat-log {flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:8px 12px 16px 0;scrollbar-gutter:stable;overflow-wrap:anywhere}
.chat-log .agent-message {margin:8px 0 16px;max-width:94%;padding:12px 16px}
.chat-log .agent-message.from-user {margin-left:auto;background:#e8f1eb}
.chat-composer {flex-shrink:0;border-top:1px solid var(--line);padding-top:12px;background:white}
.chat-composer .field {margin-bottom:8px}
.chat-composer textarea {min-height:72px;height:76px;max-height:150px;resize:vertical}
.chat-composer label {font-size:12px;color:var(--muted)}
.chat-composer .actions {margin:0}
.chat-toolbar {display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:12px}
.chat-toolbar .field {margin:0;max-width:520px;flex:1}
.chat-result,.chat-evidence {margin-top:12px;border-top:1px solid var(--line);padding-top:12px}
.chat-result>summary,.chat-evidence>summary,.chat-history>summary,.chat-table>summary {cursor:pointer;font-weight:600}
.chat-result[open] {max-height:65dvh;overflow:auto;overscroll-behavior:contain}
.chat-evidence pre {max-height:320px;overflow:auto}
.chat-welcome {padding:26px 12px;color:var(--muted)}
.chat-welcome h3 {color:var(--ink)}
.chat-history #project-chat-history {max-height:300px;overflow:auto}
.chat-table .table-wrap {max-height:55dvh;overflow:auto}
.project-conversation,.molecular-conversation {padding:20px}
.molecular-history {max-height:calc(100dvh - 200px);overflow-y:auto}
@media(max-width:650px) {
  .chat-frame {height:calc(100dvh - 255px);min-height:320px}
  .chat-toolbar {flex-wrap:wrap}
  .chat-log .agent-message {max-width:100%}
  .project-conversation,.molecular-conversation {padding:14px}
}
#agent-start .field, #agent-answer .field { margin-bottom:16px; }
@media(max-width:1100px) { .agent-layout { grid-template-columns:minmax(0, 1fr); } }
@media(max-width:650px) { nav { flex-wrap:wrap; } .agent-main .split { flex-wrap:wrap; } }

#live-status { margin-bottom:18px; padding:12px 16px; border:1px solid var(--line); border-radius:6px; background:white; }
#live-status[hidden] { display:none; }
#live-times { display:block; }
#live-status[data-state="offline"], #live-status[data-state="pending"] { border-color:#b98b32; }
/* Molecular discussion keeps the user's main path in one place. */
.nav-advanced {margin-top:16px;padding-top:12px;border-top:1px solid #ffffff25}
.nav-advanced>summary {cursor:pointer;padding:10px 14px;color:#c3d5ce;font-size:13px}
.molecular-project {display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:22px}
.molecular-project .field {max-width:580px;flex:1}
.molecular-layout {display:grid;grid-template-columns:minmax(0,1fr) 270px;gap:24px;align-items:start}
.molecular-main {min-width:0}
.molecular-upload>summary {font-size:17px;font-weight:600;cursor:pointer;margin-bottom:8px}
.molecular-upload form {margin-top:22px}
.molecular-file-pair {display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}
.molecular-history {position:static;width:auto;height:auto;min-height:0;padding:0;background:none;color:inherit}
.molecular-history .panel {padding:22px;margin-bottom:18px}
.molecular-history h2 {font-size:18px}
.molecular-record {padding:15px 0;border-bottom:1px solid var(--line,#e1e8e2)}
.molecular-record strong,.molecular-record small {display:block;overflow-wrap:anywhere;margin-bottom:9px}
.molecular-record .button {padding:9px 12px;font-size:12px}
.molecular-empty {padding:22px 0;color:var(--muted,#6f7d76);line-height:1.8}
.molecular-conversation .agent-message {margin:20px 0}
.molecular-draft {margin:28px 0;padding:20px;background:#f5f8f3;border:1px solid #dce6d9;border-radius:12px}
.molecular-draft table {font-size:13px}
.molecular-draft th:nth-child(2) {min-width:220px}
.molecular-label {white-space:pre-wrap;overflow-wrap:anywhere;max-width:540px}
.molecular-review {display:block;color:#896326;margin-top:6px}
.molecular-draft details {font-size:12px;margin-top:8px}
.molecular-ack {display:flex;align-items:center;gap:9px;margin:20px 0;font-size:14px}
.molecular-ack input {width:auto}
.molecular-receipt {padding:18px 0 0}
.molecular-question {border-left:3px solid #91a878;padding:2px 16px;margin:18px 0}
.molecular-working {color:#657860;padding:20px 0}
.molecular-evidence {margin-top:25px;color:var(--muted,#6f7d76);font-size:12px}
.molecular-evidence pre {max-height:280px;overflow:auto}
@media(max-width:1100px){.molecular-layout{grid-template-columns:minmax(0,1fr)}.molecular-history{display:grid;grid-template-columns:1fr 1fr;gap:18px}}
@media(max-width:650px){.molecular-file-pair,.molecular-history{grid-template-columns:1fr}.molecular-project{align-items:flex-start}.molecular-draft{padding:12px}.molecular-conversation .split{align-items:flex-start;gap:12px}}
.chat-page main {padding-top:18px;padding-bottom:18px}
.chat-page .page-head {margin-bottom:12px}
.chat-page .page-head .eyebrow {display:none}
.chat-page .page-head h1 {font-size:26px;margin-bottom:5px}
.chat-page .page-head p {margin:0;font-size:13px}
.chat-page .molecular-project {margin-bottom:10px;gap:10px}
.chat-page .panel {margin-bottom:12px}
.chat-page .molecular-upload {padding:12px 18px}
.chat-page .molecular-upload>summary {font-size:14px;margin:0}
.chat-page .chat-frame {min-height:300px}
.chat-page .chat-composer textarea {min-height:62px;height:62px}
.chat-page .molecular-evidence {margin-top:12px}
.chat-page .molecular-conversation .agent-message {margin:8px 0 14px}
#ledger-filter input[type="checkbox"] {width:auto}
#ledger-filter #ledger-query {width:min(100%,320px)}
#ledger-rows td {min-width:120px;max-width:520px;white-space:pre-wrap;overflow-wrap:anywhere}
#ledger-rows th {white-space:nowrap}
#ledger-rows td:first-child {min-width:60px}

/* Year/location collections for trait photos and analysis charts. */
.gallery-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin:18px 0}.gallery-toolbar label{display:flex;align-items:center;gap:10px}.gallery-toolbar input,.gallery-toolbar select{width:auto;max-width:280px}.gallery-season{margin:28px 0 38px}.gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:20px}.gallery-album,.gallery-image-card{overflow:hidden;border:1px solid var(--line,#dce4df);border-radius:16px;background:#fff;color:var(--ink,#1d3b34);text-align:left;padding:0;min-width:0}.gallery-album:hover{border-color:#236652;background:#f6faf7}.gallery-album>img,.gallery-empty-cover{width:100%;height:220px;object-fit:cover;display:block}.gallery-empty-cover{background:#edf2ee;display:grid;place-items:center;color:#60786c}.gallery-card-text{padding:16px}.gallery-card-text h3,.gallery-card-text p{margin:0 0 8px}.gallery-card-text p{color:#63776e;font-size:14px}.gallery-card-text strong{display:block;overflow-wrap:anywhere}.gallery-image-button{position:relative;display:block;width:100%;padding:0;background:#f0f3ef;border:0;border-radius:0}.gallery-image-button img{display:block;width:100%;height:245px;object-fit:contain}.gallery-tag{position:absolute;bottom:10px;left:10px;background:rgba(255,255,255,.94);border-radius:20px;padding:4px 10px;font-size:12px;color:#345449}.gallery-upload{display:grid;gap:14px;margin:18px 0}.gallery-upload button{justify-self:start}.gallery-image-detail{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(240px,1fr);gap:24px}.gallery-image-detail>img{width:100%;max-height:72vh;object-fit:contain;background:#f1f4f0}.gallery-image-detail h2{overflow-wrap:anywhere}.gallery-image-detail form{display:grid;gap:12px}.gallery-image-detail label{display:block}.gallery-image-detail input,.gallery-image-detail select{width:100%;margin-top:5px}@media(max-width:700px){.gallery-image-detail{grid-template-columns:1fr}.gallery-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr))}.gallery-toolbar label{width:100%}.gallery-toolbar input,.gallery-toolbar select{max-width:100%}}

/* Leadership overview: restrained blue/teal accents, explicit schedule uncertainty. */
.mb-toolbar{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin:20px 0}.mb-toolbar label{display:flex;gap:8px;align-items:center}.mb-toolbar input,.mb-toolbar select{width:auto}.mb-boundary{background:#edf3f7;border-left:3px solid #75a8c8;padding:12px 18px;color:#465d6c}.mb-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.mb-stats>div{background:white;border:1px solid #dce5e8;border-radius:12px;padding:22px}.mb-stats strong{display:block;font-size:30px;color:#31576e}.mb-stats span{color:#68797b}.mb-projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.mb-project{background:white;border:1px solid #dce5e8;border-radius:14px;padding:24px;min-width:0}.mb-project-head,.mb-footer{display:flex;align-items:center;justify-content:space-between;gap:12px}.mb-project h2{margin:4px 0;font-size:20px}.mb-project small{color:#6a7e87}.mb-stage{color:#31576e}.mb-stage span{display:block;color:#728185;font-size:12px}.mb-latest{background:#f3f7f8;border-radius:8px;padding:12px 16px;margin:16px 0}.mb-latest p{margin:6px 0;white-space:pre-wrap}.mb-milestone{display:flex;align-items:flex-start;gap:10px;padding:14px 0;border-bottom:1px solid #edf0f1}.mb-milestone>div{flex:1;min-width:0}.mb-milestone small{display:block;margin:5px 0}.mb-milestone p{font-size:12px;color:#718087;margin:4px 0;white-space:pre-wrap}.mb-badge{font-size:11px;white-space:nowrap;border-radius:5px;padding:3px 7px;background:#ecf0f4;color:#5d7182;display:inline-block}.mb-badge.done{background:#e5f1ea;color:#276349}.mb-badge.active{background:#e1edf8;color:#30688d}.mb-badge.blocked{background:#fae7e5;color:#a44940}.mb-badge.cancelled{background:#eee;color:#777}.mb-footer{margin:16px 0}.mb-project pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px}.mb-project details{font-size:12px;color:#738184}.mb-gantt-scroll{overflow:auto;background:white;border:1px solid #dce5e8;border-radius:12px}.mb-gantt-grid{min-width:950px}.mb-gantt-header,.mb-gantt-row{display:grid;grid-template-columns:330px 1fr}.mb-gantt-header{padding:12px 0;background:#eef3f6}.mb-gantt-header>b{padding-left:16px}.mb-months{display:grid;grid-template-columns:repeat(12,1fr);text-align:center}.mb-gantt-project{background:#e9f0f3;padding:12px 16px;font-weight:600}.mb-gantt-row{border-top:1px solid #edf0f1;min-height:78px}.mb-gantt-row>div:first-child{padding:12px 16px;font-size:12px}.mb-gantt-row small{display:block;color:#7b888e}.mb-gantt-row button{font-size:11px;padding:2px 8px;margin-top:5px}.mb-track{position:relative;background:repeating-linear-gradient(to right,transparent 0,transparent calc(100% / 12 - 1px),#edf0f1 calc(100% / 12 - 1px),#edf0f1 calc(100% / 12));min-height:78px}.mb-bar{position:absolute;top:35%;height:22px;background:#aec7d8;border-radius:4px}.mb-bar.done{background:#8bbca5}.mb-bar.blocked{background:#d9a09c}.mb-marker{position:absolute;top:35%;color:#345f7b;font-size:13px;white-space:nowrap}.mb-marker.done{color:#267651}.mb-unscheduled{position:absolute;top:35%;left:16px;color:#8c969b;font-size:12px}.mb-dialog{max-width:620px;width:90vw;border:1px solid #dce5e8;border-radius:16px;padding:28px;color:var(--ink);max-height:90vh}.mb-dialog::backdrop{background:#142d3b66}.mb-dialog label{display:block;margin:12px 0}.mb-dialog input,.mb-dialog textarea,.mb-dialog select{display:block;width:100%;margin-top:6px}.mb-error{color:#a44940}.mb-switch{display:flex;gap:4px}@media(max-width:1000px){.mb-projects{grid-template-columns:1fr}.mb-stats{grid-template-columns:repeat(2,1fr)}}@media print{aside,.shell>header,.mb-toolbar,.mb-project button,.mb-gantt-row button,#message{display:none!important}.shell{margin:0!important}.mb-projects{display:block}.mb-project{break-inside:avoid;margin-bottom:16px}.mb-gantt-scroll{overflow:visible}.mb-gantt-grid{min-width:0}.mb-gantt-header,.mb-gantt-row{grid-template-columns:250px 1fr}}
.mb-next{border-left:3px solid #72b7a1;padding:0 12px;margin:16px 0}.mb-next p{margin:5px 0}.mb-project .mb-milestone-details{font-size:14px;color:var(--ink)}.mb-milestone-details>summary{color:#315f77;cursor:pointer;padding:8px 0}
