/* Prepared media workflow */
.batch-status-modal .modal-content { overflow: hidden; border: 0; border-radius: 8px; box-shadow: 0 28px 75px rgba(14, 29, 48, .2); }
.batch-status-modal .modal-header { align-items: flex-start; padding: 20px 22px; border-bottom-color: #e7eaee; }
.batch-status-modal .modal-header p { margin: 4px 0 0; color: #667287; font-size: .76rem; }
.batch-status-form-body { display: grid; gap: 15px; }
.batch-status-form-body > label { display: grid; gap: 6px; color: #354156; font-size: .75rem; font-weight: 650; }
.batch-status-form-body textarea.settings-input { min-height: 82px; resize: vertical; }
.batch-status-policy-note,
.batch-status-pending { display: flex; align-items: flex-start; gap: 11px; padding: 13px; border: 1px solid #d9e5e2; border-radius: 5px; background: #f4f9f8; color: #345f59; }
.batch-status-policy-note > i { margin-top: 1px; }
.batch-status-policy-note p,
.batch-status-pending p { margin: 0; color: #5f6d7a; font-size: .74rem; line-height: 1.5; }
.batch-status-pending > span { width: 34px; height: 34px; display: grid; flex: 0 0 34px; place-items: center; border-radius: 4px; background: #fff0cc; color: #865d14; }
.batch-status-pending strong { display: block; margin-bottom: 3px; color: #654812; font-size: .83rem; }

/* Prepared media workflow */
.media-prep-page { width: 100%; margin: 0 auto; display: grid; gap: 18px; }
.media-prep-hero { align-items: flex-end; }
.media-prep-summary { display: flex; align-items: stretch; gap: 8px; }
.media-prep-summary > span {
  min-width: 118px;
  padding: 10px 12px;
  border: 1px solid #e1e5eb;
  border-radius: 5px;
  background: #fff;
}
.media-prep-summary small,
.media-prep-summary strong { display: block; }
.media-prep-summary small { color: #657084; font-size: .7rem; }
.media-prep-summary strong { margin-top: 2px; color: #17283d; font: 750 1.15rem "JetBrains Mono", monospace; }
.media-prep-summary > .is-available { border-color: #cbe4dc; background: #f3faf7; }
.media-prep-summary > .is-available strong { color: #16745f; }
.media-prep-summary > .is-warning { border-color: #efd8ad; background: #fffaf0; }
.media-prep-summary > .is-warning strong { color: #96631c; }

/* Shared people, batch identity, legal and accessibility presentation */
.batch-symbol {
  width: 27px;
  height: 27px;
  flex: 0 0 auto;
  display: inline-grid;
  place-items: center;
  color: #3f4f79;
  border: 1px solid #dce3ee;
  border-radius: 5px;
  background: #f1f4f8;
}
.batch-symbol svg,
.batch-icon-preview svg,
.batch-icon-option svg,
.batch-record-symbol svg {
  width: 68%;
  height: 68%;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.batch-symbol.is-compact { width: 20px; height: 20px; border-radius: 4px; }
.protocol-card-identity,
.culture-identity-heading,
.feed-batch-identity {
  display: flex !important;
  align-items: center;
  gap: 8px;
}
.protocol-card-identity > span,
.feed-batch-identity > span { min-width: 0; display: block; }
.feed-batch-identity em {
  display: block;
  margin-top: 3px;
  color: #6d7787;
  font-style: normal;
}
.culture-identity-heading { align-items: center; margin-bottom: 3px; }
.culture-identity-heading .culture-batch-id-link { flex: 1; }
.schedule-gantt-identity { flex-direction: row !important; align-items: center; }
.schedule-gantt-identity > span { min-width: 0; }
.team-gantt-batch-name .batch-symbol { color: var(--member-gantt-color, #5263c7); }
.batch-record-heading { display: flex; align-items: center; gap: 12px; }
.batch-record-symbol {
  width: 46px;
  height: 46px;
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  color: #343580;
  border: 1px solid #dce1ec;
  border-radius: 7px;
  background: #f0f2f8;
}

.batch-icon-picker-trigger {
  width: 100%;
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) auto;
  gap: 10px;
  align-items: center;
  min-height: 52px;
  padding: 7px 10px;
  color: var(--ch-ink);
  border: 1px solid #dce2e9;
  border-radius: 5px;
  background: #fff;
  text-align: left;
}
.batch-icon-picker-trigger:hover { border-color: #b9c2d1; background: #fafbfe; }
.batch-icon-preview {
  width: 40px;
  height: 40px;
  display: grid;
  place-items: center;
  color: #343580;
  border-radius: 5px;
  background: #eef1f8;
}
.batch-icon-picker-trigger strong,
.batch-icon-picker-trigger small { display: block; }
.batch-icon-picker-trigger small { margin-top: 2px; color: var(--ch-muted); }
.batch-icon-picker-trigger > i { color: #858d9a; }
.batch-icon-modal .modal-content { overflow: hidden; border: 0; border-radius: 8px; box-shadow: 0 24px 70px rgba(20, 27, 43, .22); }
.batch-icon-modal .modal-header { align-items: flex-start; padding: 19px 21px; border-bottom: 1px solid #e6e9ee; }
.batch-icon-modal .modal-title { margin: 2px 0; font: 700 1.2rem "Hanken Grotesk", sans-serif; }
.batch-icon-modal .modal-header p { margin: 3px 0 0; color: var(--ch-muted); }
.batch-icon-modal .modal-body { padding: 18px 21px; background: #fafbfc; }
.batch-icon-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.batch-icon-option {
  position: relative;
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) 18px;
  gap: 9px;
  align-items: center;
  min-height: 58px;
  padding: 8px 11px;
  color: #354155;
  border: 1px solid #e0e5eb;
  border-radius: 5px;
  background: #fff;
  text-align: left;
}
.batch-icon-option svg { width: 32px; height: 32px; color: #4d5c84; }
.batch-icon-option > i { color: transparent; }
.batch-icon-option.is-selected { color: #26236d; border-color: #aaa9d4; background: #f2f2fb; }
.batch-icon-option.is-selected > i { color: #2f866f; }

.custom-feeding-plan-modal .modal-content { overflow: hidden; border: 0; border-radius: 8px; box-shadow: 0 24px 70px rgba(20, 27, 43, .22); }
.custom-feeding-plan-modal .modal-header { align-items: flex-start; padding: 20px 22px; border-bottom: 1px solid #e5e9ef; }
.custom-feeding-plan-modal .modal-title { margin: 2px 0; font: 700 1.25rem "Hanken Grotesk", sans-serif; }
.custom-feeding-plan-modal .modal-header p { margin: 3px 0 0; color: var(--ch-muted); }
.custom-feeding-plan-modal .modal-body { padding: 20px 22px; background: #fafbfc; }
.custom-feed-plan-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 13px; }
.custom-feed-plan-grid label { display: grid; gap: 6px; color: #303949; font-weight: 700; }
.custom-feed-plan-grid label > span em { color: #777f8c; font-style: normal; font-weight: 500; }
.custom-feed-plan-grid label.is-wide { grid-column: 1 / -1; }
.custom-feed-plan-grid small { color: var(--ch-muted); font-weight: 400; }
.custom-feed-plan-note { display: flex; align-items: center; gap: 10px; margin-top: 16px; padding: 11px 12px; color: #506173; border: 1px solid #d9e7e2; border-radius: 5px; background: #f1f8f6; }
.custom-feed-plan-note > i { color: #2c796c; font-size: 1rem; }
.custom-feed-plan-note strong,
.custom-feed-plan-note small { display: block; }

.calendar-export-modal .modal-dialog { max-width: 680px; }
.dashboard-calendar-export-modal .modal-dialog { max-width: 760px; }
.calendar-export-modal .modal-content {
  overflow: hidden;
  border: 1px solid #dfe5ec;
  border-radius: 8px;
  box-shadow: 0 22px 60px rgba(15, 21, 39, .16);
}
.calendar-export-modal .modal-header,
.calendar-export-modal .modal-body,
.calendar-export-modal .modal-footer { padding-inline: 22px; }
.calendar-export-modal .modal-header { align-items: flex-start; padding-block: 20px; }
.calendar-export-modal .modal-header p { margin: 4px 0 0; color: var(--ch-muted); }
.calendar-export-modal .modal-body { padding-block: 22px; }
.calendar-export-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px;
}
.calendar-export-grid label { display: grid; gap: 6px; color: #303949; font-weight: 700; }
.calendar-export-grid label.is-wide { grid-column: 1 / -1; }
.calendar-export-grid small { color: var(--ch-muted); font-weight: 400; }
.calendar-export-provider,
.calendar-export-batch-scope {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 0 0 18px;
  padding: 0;
  border: 0;
}
.calendar-export-provider legend,
.calendar-export-batch-scope legend {
  grid-column: 1 / -1;
  margin-bottom: 1px;
  color: #303949;
  font-size: .875rem;
  font-weight: 700;
}
.calendar-export-provider label,
.calendar-export-scope-option { position: relative; min-width: 0; }
.calendar-export-provider input,
.calendar-export-scope-option > input { position: absolute; opacity: 0; pointer-events: none; }
.calendar-export-provider label > span,
.calendar-export-scope-option > span {
  display: grid;
  grid-template-columns: 30px minmax(0, 1fr);
  gap: 2px 10px;
  min-height: 74px;
  padding: 13px 14px;
  border: 1px solid #dce2ea;
  border-radius: 6px;
  background: #fff;
  cursor: pointer;
}
.calendar-export-scope-option > span { grid-template-columns: minmax(0, 1fr); min-height: 68px; }
.calendar-export-provider label > span > i { grid-row: 1 / 3; color: #56627a; font-size: 1.2rem; }
.calendar-export-provider strong,
.calendar-export-provider small,
.calendar-export-scope-option strong,
.calendar-export-scope-option small { display: block; }
.calendar-export-provider small,
.calendar-export-scope-option small { margin-top: 2px; color: var(--ch-muted); font-size: .875rem; font-weight: 400; line-height: 1.35; }
.calendar-export-provider input:checked + span,
.calendar-export-scope-option > input:checked + span {
  border-color: #8dbdb5;
  background: #f0f8f6;
  box-shadow: inset 0 0 0 1px #8dbdb5;
}
.calendar-export-provider input:focus-visible + span,
.calendar-export-scope-option > input:focus-visible + span { outline: 3px solid rgba(54, 99, 210, .22); outline-offset: 2px; }
.calendar-export-batch-scope { margin-top: 18px; }
.calendar-export-batch-list {
  max-height: 244px;
  margin-top: -8px;
  overflow: auto;
  border: 1px solid #dce2ea;
  border-radius: 6px;
  background: #fff;
}
.calendar-export-batch-list[hidden] { display: none; }
.calendar-export-batch-toolbar {
  position: sticky;
  z-index: 1;
  top: 0;
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 13px;
  border-bottom: 1px solid #e5e9ef;
  background: #f7f9fb;
}
.calendar-export-batch-toolbar button { padding: 0; color: #292781; border: 0; background: transparent; font-weight: 700; }
.calendar-export-batch-list > label {
  display: grid;
  grid-template-columns: 20px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
  padding: 11px 13px;
  border-bottom: 1px solid #edf0f4;
  cursor: pointer;
}
.calendar-export-batch-list > label[hidden] { display: none; }
.calendar-export-batch-list > label:last-of-type { border-bottom: 0; }
.calendar-export-batch-list > label input { margin-top: 3px; }
.calendar-export-batch-list > label strong,
.calendar-export-batch-list > label small { display: block; }
.calendar-export-batch-list > label small { margin-top: 2px; color: var(--ch-muted); font-size: .875rem; }
.calendar-export-no-batches { margin: 0; padding: 18px; color: var(--ch-muted); text-align: center; }
.calendar-export-note {
  display: flex;
  align-items: flex-start;
  gap: 11px;
  margin-top: 18px;
  padding: 13px 14px;
  color: #3f566c;
  border: 1px solid #cde2dd;
  border-radius: 5px;
  background: #f1f8f6;
}
.calendar-export-note > i { color: #167b71; font-size: 1.05rem; }
.calendar-export-note strong,
.calendar-export-note small { display: block; }
.calendar-export-note small { margin-top: 2px; line-height: 1.45; }
.calendar-export-actions { flex-wrap: wrap; gap: 9px; background: #fafbfc; }
@media (max-width: 680px) {
  .dashboard-calendar-export-modal .modal-dialog { margin: 8px; }
  .dashboard-calendar-export-modal .modal-body { max-height: calc(100vh - 190px); overflow-y: auto; }
  .calendar-export-provider,
  .calendar-export-batch-scope { grid-template-columns: 1fr; }
}
.custom-feeding-plan-modal .modal-footer { padding: 13px 22px; border-top: 1px solid #e5e9ef; }

.app-footer {
  width: 100%;
  display: flex;
  justify-content: space-between;
  gap: 18px;
  margin-top: 34px;
  padding: 18px 2px 0;
  color: #737c8a;
  border-top: 1px solid #e0e5ec;
}
.app-footer nav { display: flex; flex-wrap: wrap; gap: 16px; }
.app-footer a { color: #4e5a6d; text-decoration: none; }
.app-footer a:hover { color: var(--ch-primary); text-decoration: underline; }
.legal-page { width: min(100%, 1060px); margin: 0 auto; }
.legal-hero { margin-bottom: 20px; }
.legal-hero h1 { margin: 5px 0; font: 700 2.75rem "Hanken Grotesk", sans-serif; letter-spacing: -.035em; }
.legal-hero p { margin: 0 0 5px; color: var(--ch-muted); }
.legal-hero > small { color: #7c8491; }
.legal-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin-bottom: 18px; }
.legal-summary > span { display: grid; grid-template-columns: 30px 1fr; gap: 2px 9px; padding: 14px; border: 1px solid #e0e5eb; border-radius: 6px; background: #fff; }
.legal-summary i { grid-row: 1 / 3; color: #2e756c; font-size: 1rem; }
.legal-summary strong,
.legal-summary small { display: block; }
.legal-summary small { color: var(--ch-muted); }
.legal-panel { padding: 26px 30px; border: 1px solid #e2e6ec; border-radius: 7px; background: #fff; box-shadow: var(--ch-shadow); }
.legal-panel h2 { margin: 24px 0 7px; color: #17283d; font: 700 1.05rem "Hanken Grotesk", sans-serif; }
.legal-panel h2:first-child { margin-top: 0; }
.legal-panel p { margin: 0 0 10px; color: #4f5d70; line-height: 1.65; }
.legal-panel ul { margin: 0 0 14px; padding-left: 22px; color: #4f5d70; }
.legal-panel li { margin: 0 0 8px; line-height: 1.55; }
.legal-panel li::marker { color: #2e756c; }
.legal-panel a { color: #292781; font-weight: 700; }

/* Public acquisition and support */
.contact-page { width: min(100%, 1180px); }
.contact-hero { max-width: 820px; margin-bottom: 30px; }
.contact-hero h1 { max-width: 800px; font-size: clamp(2.35rem, 5vw, 4.25rem); line-height: .98; }
.contact-hero p { max-width: 680px; margin: 16px 0 0; color: #5d6879; font-size: 1rem; line-height: 1.6; }
.contact-acquisition-layout { display: grid; grid-template-columns: minmax(205px, .36fr) minmax(0, 1.64fr); overflow: hidden; border: 1px solid #dfe4ec; border-radius: 10px; background: #fff; box-shadow: 0 18px 55px rgba(18, 28, 69, .07); }
.contact-intro-panel { min-width: 0; padding: 42px 20px; color: #fff; background: linear-gradient(145deg, #15105f 0%, #25217d 54%, #175f67 130%); }
.contact-benefit-list { display: grid; gap: 20px; margin: 0 0 34px; padding: 0; list-style: none; }
.contact-benefit-list li { display: grid; grid-template-columns: 34px minmax(0, 1fr); gap: 12px; color: #d8d8eb; line-height: 1.5; }
.contact-benefit-list i { display: grid; width: 34px; height: 34px; place-items: center; color: #a9eee4; border: 1px solid rgba(169, 238, 228, .3); border-radius: 6px; background: rgba(255, 255, 255, .06); }
.contact-benefit-list strong { min-width: 0; display: block; margin-bottom: 2px; color: #fff; overflow-wrap: anywhere; }
.contact-direct-email { display: flex; gap: 10px; align-items: center; padding-top: 22px; border-top: 1px solid rgba(255, 255, 255, .16); }
.contact-direct-email i { color: #9fe3d8; }
.contact-direct-email span,
.contact-direct-email a { display: block; }
.contact-direct-email span { min-width: 0; color: #c9cada; }
.contact-direct-email a { margin-top: 2px; color: #fff; font-weight: 700; overflow-wrap: anywhere; }
.contact-form-panel { padding: 42px; }
.contact-form-header { margin-bottom: 24px; }
.contact-form-header h2 { margin: 6px 0 4px; color: #13253b; font: 700 1.7rem "Hanken Grotesk", sans-serif; }
.contact-form-header p { margin: 0; color: #6b7484; }
.contact-form-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 16px; }
.contact-field { display: grid; align-content: start; gap: 7px; color: #303a4d; font-weight: 650; }
.contact-field.is-wide,
.contact-consent.is-wide { grid-column: 1 / -1; }
.contact-field > span { font-size: .8rem; }
.contact-field em { color: #b34852; font-style: normal; }
.contact-field input,
.contact-field select,
.contact-field textarea { width: 100%; min-height: 46px; padding: 10px 12px; color: #122338; border: 1px solid #d4dae4; border-radius: 5px; background: #fbfcfe; font: 400 .88rem "Inter", sans-serif; }
.contact-field textarea { min-height: 126px; resize: vertical; line-height: 1.55; }
.contact-field input:focus,
.contact-field select:focus,
.contact-field textarea:focus { outline: none; border-color: #5e59b8; background: #fff; box-shadow: 0 0 0 3px rgba(75, 65, 225, .1); }
.contact-field [aria-invalid="true"] { border-color: #c26169; }
.contact-field-error { color: #a33e48; font-size: .72rem; font-weight: 600; }
.contact-consent { display: grid; grid-template-columns: 18px minmax(0, 1fr); gap: 3px 9px; align-items: start; color: #4d5869; font-size: .78rem; line-height: 1.5; }
.contact-consent input { width: 16px; height: 16px; margin-top: 2px; accent-color: #292781; }
.contact-consent .contact-field-error { grid-column: 2; }
.contact-honeypot { position: absolute; left: -10000px; width: 1px; height: 1px; overflow: hidden; }
.contact-form-actions { display: flex; gap: 20px; align-items: center; justify-content: space-between; margin-top: 24px; padding-top: 20px; border-top: 1px solid #e7eaf0; }
.contact-form-actions p { max-width: 330px; margin: 0; color: #70798a; font-size: .72rem; line-height: 1.55; }
.contact-form-actions a { color: #292781; font-weight: 700; }
.contact-submit { min-height: 46px; padding: 11px 19px; color: #fff; border: 1px solid #25216e; border-radius: 5px; background: #292781; font-size: .8rem; font-weight: 750; }
.contact-submit:hover { background: #1d195d; }
.contact-success { min-height: 440px; display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 16px; align-content: center; }
.contact-success > i { display: grid; width: 44px; height: 44px; place-items: center; color: #1c7568; border-radius: 50%; background: #e9f6f3; font-size: 1.35rem; }
.contact-success h2 { margin: 7px 0; color: #13253b; font: 700 1.75rem "Hanken Grotesk", sans-serif; }
.contact-success p { max-width: 460px; margin: 0; color: #5f6a7b; line-height: 1.6; }
.contact-existing { margin-top: 58px; }
.contact-existing.is-member { margin: 0 0 30px; }
.contact-existing > header { max-width: 700px; margin-bottom: 20px; }
.contact-existing > header h2 { margin: 5px 0; color: #14263b; font: 700 1.75rem "Hanken Grotesk", sans-serif; }
.contact-existing > header p { margin: 0; color: #5d6879; font-size: .95rem; }
.contact-support-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 11px; }
.contact-support-grid article { min-height: 210px; padding: 20px; border: 1px solid #e1e5eb; border-radius: 7px; background: #fff; }
.contact-support-grid article > i { color: #28776b; font-size: 1.1rem; }
.contact-support-grid h3 { margin: 12px 0 6px; color: #17283d; font: 700 .95rem "Hanken Grotesk", sans-serif; }
.contact-support-grid p { margin: 0; color: #596679; font-size: .8rem; line-height: 1.65; }
.contact-support-grid a { color: #292781; font-weight: 700; overflow-wrap: anywhere; }
.contact-safety-note { display: flex; gap: 8px; margin: 14px 0 0; color: #737c8a; font-size: .75rem; }

/* Minimum readable type throughout operational pages. */
.app-content :is(p, label, button, input, select, textarea, td, th, time) {
  font-size: max(.75rem, 12px);
}
.app-content small { font-size: 14px !important; line-height: 1.4; }
.app-content :is(.settings-eyebrow, .page-kicker, .rail-title, .team-role, .culture-status, .calendar-chip-status, .calendar-assignment-badge, .team-calendar-status, .team-calendar-assignment) {
  font-size: max(.7rem, 11.2px);
}
.media-recipe-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
  padding: 18px;
}
.media-protocol-card {
  display: grid;
  gap: 13px;
  padding: 15px;
  border: 1px solid #e2e6ec;
  border-radius: 6px;
  background: #fff;
}
.media-protocol-card > header { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; gap: 10px; align-items: center; }
.media-protocol-card > header strong,
.media-protocol-card > header small { display: block; }
.media-protocol-card > header strong { color: #17283d; font-size: .86rem; }
.media-protocol-card > header small { margin-top: 2px; color: #687488; font-size: .75rem; }
.media-protocol-card dl { display: grid; gap: 6px; margin: 0; }
.media-protocol-card dl > div { display: flex; justify-content: space-between; gap: 10px; padding-top: 6px; border-top: 1px solid #edf0f4; font-size: .7rem; }
.media-protocol-card dt { color: #536174; font-weight: 600; }
.media-protocol-card dd { margin: 0; color: #687488; font-family: "JetBrains Mono", monospace; }
.media-formulation-use {
  margin: 0;
  padding: 8px 10px;
  color: #58677a;
  border-left: 2px solid #9eb9b2;
  background: #f5f8f7;
  font-size: .7rem;
}
.media-protocol-card.is-public .media-formulation-use { border-left-color: #8f9bd0; background: #f5f6fb; }
.media-protocol-card > footer { display: flex; flex-wrap: wrap; align-items: center; gap: 7px 12px; color: #717b8a; font-size: .7rem; }
.media-protocol-card > footer button { margin-left: auto; padding: 3px 7px; color: #536174; border: 1px solid #dce1e7; border-radius: 3px; background: #fff; font-weight: 700; }
.media-batch-table-wrap { overflow-x: auto; }
.media-batch-table { width: 100%; min-width: 980px; border-collapse: collapse; }
.media-batch-table th { padding: 10px 12px; color: #697487; border-bottom: 1px solid #e3e7ed; background: #fafbfc; font: 650 .7rem "JetBrains Mono", monospace; text-transform: uppercase; }
.media-batch-table td { padding: 12px; color: #39475a; border-bottom: 1px solid #edf0f3; font-size: .75rem; vertical-align: top; }
.media-batch-table td strong,
.media-batch-table td small { display: block; }
.media-batch-table td strong { color: #17283d; font-size: .75rem; }
.media-batch-table td small { margin-top: 3px; color: #758094; font-size: .7rem; }
.media-batch-status { display: inline-flex; padding: 4px 7px; border-radius: 3px; background: #eef1f4; color: #5d6674; font-weight: 700; }
.media-batch-status.is-available { color: #176f5c; background: #e9f6f1; }
.media-batch-status.is-expired,
.media-batch-status.is-discarded { color: #9a4650; background: #faecee; }
.media-batch-status.is-exhausted { color: #6c6270; background: #f0edf1; }
.media-row-menu { width: 28px; height: 28px; display: grid; place-items: center; color: #667185; border: 1px solid #dfe3e9; border-radius: 4px; background: #fff; }
.media-row-menu::after { display: none; }
.media-reference-panel { overflow: hidden; }
.media-reference-panel > summary { display: flex; justify-content: space-between; align-items: center; padding: 15px 18px; cursor: pointer; list-style: none; }
.media-reference-panel > summary::-webkit-details-marker { display: none; }
.media-reference-panel > summary strong,
.media-reference-panel > summary span { display: block; }
.media-reference-panel > summary > span:last-child { color: #697487; font-size: .7rem; }
.media-reference-panel[open] > summary > span:last-child i { transform: rotate(180deg); }
.media-reference-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; padding: 0 18px 18px; }
.media-reference-grid article { display: grid; grid-template-columns: 32px minmax(0, 1fr); gap: 9px; padding: 11px; border: 1px solid #e6e9ee; border-radius: 5px; }
.media-reference-grid strong,
.media-reference-grid small,
.media-reference-grid em { display: block; }
.media-reference-grid strong { color: #27374c; font-size: .75rem; }
.media-reference-grid small { margin-top: 2px; color: #687488; font-size: .7rem; }
.media-reference-grid em { margin-top: 4px; color: #8290a2; font-size: .7rem; font-style: normal; }
.media-unit-input { position: relative; }
.media-unit-input .settings-input { padding-right: 42px; }
.media-unit-input em { position: absolute; top: 50%; right: 12px; color: #697487; font-size: .7rem; font-style: normal; transform: translateY(-50%); }
.media-batch-supplement-lots label { display: grid; grid-template-columns: minmax(130px, .65fr) 1fr; gap: 12px; align-items: center; margin-top: 8px; color: #354156; font-size: .75rem; font-weight: 650; }
.media-supplement-identity strong,
.media-supplement-identity small { display: block; }
.media-supplement-identity small { margin-top: 3px; color: #758094; font-size: .68rem; font-weight: 500; }
.media-supplement-identity output { color: #237568; font-weight: 700; }
.media-batch-supplement-lots > div > p { color: #718094; font-size: .7rem; }
.media-notes-field { display: grid; gap: 5px; margin-top: 16px; color: #354156; font-size: .75rem; font-weight: 650; }
.protocol-library-grid.is-protocol-only { grid-template-columns: minmax(0, 1fr); }
.protocol-summary-link { min-width: 118px; padding: 10px 12px; color: #314c61; border: 1px solid #d3e5e0; border-radius: 5px; background: #f2f9f7; text-decoration: none; }
.protocol-summary-link i { float: right; color: #277765; }
.protocol-summary-link small,
.protocol-summary-link strong { display: block; }
.protocol-summary-link small { color: #657b76; font-size: .7rem; }
.protocol-summary-link strong { margin-top: 2px; font-size: .75rem; }

/* Batch-record camera */
.batch-camera-open { display: inline-flex; align-items: center; gap: 6px; padding: 5px 9px; color: #2b655a; border: 1px solid #cce0db; border-radius: 4px; background: #f1f8f6; font-size: .75rem; font-weight: 700; }
.batch-record-actions > .batch-camera-hero-action {
  color: #fff;
  border-color: #147b73;
  background: linear-gradient(135deg, #126f69 0%, #15988d 100%);
  box-shadow: 0 7px 18px rgba(18, 111, 105, .2);
}
.batch-record-actions > .batch-camera-hero-action:hover,
.batch-record-actions > .batch-camera-hero-action:focus-visible {
  color: #fff;
  border-color: #0d665f;
  background: linear-gradient(135deg, #0e625d 0%, #12877e 100%);
}
.batch-camera-modal .modal-content { overflow: hidden; border: 0; border-radius: 8px; box-shadow: 0 28px 75px rgba(14, 29, 48, .2); }
.batch-camera-modal .modal-header { align-items: flex-start; padding: 20px 22px; border-bottom-color: #e7eaee; }
.batch-camera-modal .modal-header p { margin: 4px 0 0; color: #667287; font-size: .76rem; }
.batch-camera-layout { display: grid; grid-template-columns: minmax(0, 1.45fr) minmax(220px, .75fr); gap: 18px; }
.batch-camera-stage { position: relative; min-height: 360px; overflow: hidden; border-radius: 6px; background: #111c29; }
.batch-camera-stage video,
.batch-camera-stage > img { width: 100%; height: 100%; min-height: 360px; object-fit: contain; }
.batch-camera-placeholder { position: absolute; inset: 0; display: grid; place-content: center; justify-items: center; gap: 5px; color: #d9e1ea; text-align: center; }
.batch-camera-placeholder[hidden],
.batch-camera-status[hidden] { display: none; }
.batch-camera-placeholder i { font-size: 2rem; }
.batch-camera-placeholder span { color: #9ca9b7; font-size: .75rem; }
.batch-camera-status { position: absolute; right: 12px; bottom: 12px; left: 12px; padding: 9px 11px; border: 1px solid #b9ccd7; border-radius: 4px; background: rgba(242, 248, 251, .94); color: #31495a; font-size: .75rem; }
.batch-camera-status[data-kind="error"] { color: #8d3f48; border-color: #e5bfc4; background: rgba(255, 242, 244, .96); }
.batch-camera-status[data-kind="success"] { color: #27695b; border-color: #badccf; background: rgba(239, 250, 246, .96); }
.batch-camera-controls { display: grid; align-content: start; gap: 14px; }
.batch-camera-context { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.batch-camera-context span { padding: 9px; border: 1px solid #e3e7ec; border-radius: 4px; background: #fafbfc; }
.batch-camera-context small,
.batch-camera-context strong { display: block; }
.batch-camera-context small { color: #788396; font: 600 .7rem "JetBrains Mono", monospace; text-transform: uppercase; }
.batch-camera-context strong { margin-top: 3px; color: #27384c; font-size: .75rem; }
.batch-camera-controls > label { display: grid; gap: 5px; color: #354156; font-size: .75rem; font-weight: 650; }
.batch-camera-source small { color: #718094; font-size: .66rem; font-weight: 400; line-height: 1.35; }
.batch-camera-actions { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.batch-camera-upload { position: relative; padding: 11px; color: #526174 !important; border: 1px dashed #cbd2dc; border-radius: 5px; background: #fafbfc; text-align: center; cursor: pointer; }
.batch-camera-upload input { position: absolute; width: 1px; height: 1px; opacity: 0; }
.batch-camera-controls > p { display: flex; gap: 7px; margin: 0; color: #718094; font-size: .7rem; }

.trace-prepared-batch-field > small { color: #6b7687; font-size: .7rem; }
.trace-prepared-batch-field[hidden],
[data-trace-manual][hidden] { display: none; }
.trace-prepared-batch-field > small a { color: #277665; font-weight: 700; }
.trace-manual-divider { display: flex; align-items: center; gap: 10px; margin: 14px 0 8px; color: #8a93a1; font-size: .7rem; text-transform: uppercase; }
.trace-manual-divider::before,
.trace-manual-divider::after { content: ""; flex: 1; height: 1px; background: #e4e7eb; }

/* Workspace activity history */
.activity-page { width: 100%; display: grid; gap: 18px; }
.activity-page-hero { align-items: center; }
.activity-page-hero h1 { margin-top: 5px; font-size: clamp(2rem, 4vw, 2.8rem); }
.activity-page-hero p { max-width: 720px; margin: 8px 0 0; color: #667185; font-size: .86rem; }
.activity-total { min-width: 96px; display: grid; justify-items: end; padding: 10px 13px; border-left: 2px solid #d8dced; }
.activity-total strong { color: #211c72; font: 750 1.5rem "Hanken Grotesk", sans-serif; }
.activity-total small { color: #727c8b; font: 600 .7rem "JetBrains Mono", monospace; text-transform: uppercase; }
.activity-history-panel { overflow: visible; }
.activity-history-header { min-height: 86px; display: flex; align-items: center; justify-content: space-between; gap: 22px; padding: 18px 24px; border-bottom: 1px solid #e9ecf1; }
.activity-history-header h2 { margin: 0; color: #14263b; font: 700 1.25rem "Hanken Grotesk", sans-serif; }
.activity-history-header p { margin: 3px 0 0; color: #737d8c; font-size: .74rem; }
.activity-filter { display: flex; align-items: center; gap: 7px; }
.activity-filter label { color: #566174; font-size: .72rem; font-weight: 650; }
.activity-filter select { min-width: 190px; min-height: 38px; padding: 7px 30px 7px 10px; color: #223247; border: 1px solid #d7dde6; border-radius: 4px; background: #fff; font-size: .75rem; }
.activity-filter button,
.activity-filter a { min-height: 38px; display: inline-flex; align-items: center; padding: 7px 12px; border-radius: 4px; font-size: .72rem; font-weight: 700; text-decoration: none; }
.activity-filter button { color: #fff; border: 1px solid #292477; background: #292477; }
.activity-filter a { color: #596578; border: 1px solid #d7dde6; background: #fff; }
.activity-history-list { padding: 0 24px; }
.activity-history-item { min-height: 76px; display: grid; grid-template-columns: 42px minmax(0, 1fr) auto; gap: 13px; align-items: center; padding: 14px 0; border-bottom: 1px solid #e9ecf1; }
.activity-history-item:last-child { border-bottom: 0; }
.activity-history-avatar { width: 42px; height: 42px; font-size: .7rem; }
.activity-history-content { min-width: 0; }
.activity-history-content > p { margin: 0; color: #253549; font-size: .8rem; line-height: 1.45; }
.activity-history-content > p > strong { color: #102238; }
.activity-history-content > p > a { color: #292781; font-family: "JetBrains Mono", monospace; font-size: .72rem; font-weight: 700; }
.activity-history-content > div { display: flex; flex-wrap: wrap; gap: 7px 14px; align-items: center; margin-top: 5px; }
.activity-history-content time { color: #747f8e; font-size: .7rem; }
.activity-history-content > div > span { display: inline-flex; align-items: center; gap: 5px; color: #337269; font-size: .68rem; font-weight: 650; }
.activity-history-item > code { max-width: 190px; padding: 4px 7px; overflow: hidden; color: #687487; border-radius: 3px; background: #f2f4f7; font-size: .64rem; text-overflow: ellipsis; white-space: nowrap; }
.activity-history-empty { min-height: 300px; display: grid; place-content: center; justify-items: center; padding: 30px; text-align: center; }
.activity-history-empty i { color: #7d87a0; font-size: 1.5rem; }
.activity-history-empty h2 { margin: 9px 0 3px; color: #24354a; font-size: 1rem; }
.activity-history-empty p { margin: 0; color: #737e8e; }
.activity-pagination { display: flex; gap: 4px; padding: 16px 24px; border-top: 1px solid #e9ecf1; }
.activity-pagination a,
.activity-pagination span { min-width: 30px; padding: 6px; color: #596477; border: 1px solid #dfe3e9; border-radius: 3px; font-size: .7rem; text-align: center; text-decoration: none; }
.activity-pagination a.is-active { color: #fff; border-color: #4b4a73; background: #4b4a73; }
.activity-audit-note { display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 15px 18px; border: 1px solid #dce5e3; border-radius: 6px; background: #f7faf9; }
.activity-audit-note > i { display: grid; width: 34px; height: 34px; place-items: center; color: #2e7469; border-radius: 5px; background: #e4f1ee; }
.activity-audit-note strong { color: #24384a; font-size: .78rem; }
.activity-audit-note p { margin: 2px 0 0; color: #687688; font-size: .72rem; }
.activity-audit-note > a { padding: 7px 10px; color: #286c62; border: 1px solid #cbded9; border-radius: 4px; background: #fff; font-size: .72rem; font-weight: 700; text-decoration: none; }
/* Cell bank -------------------------------------------------------------- */
.cell-bank-page { max-width: 1320px; margin: 0 auto; display: grid; gap: 24px; }
.cell-bank-hero { display: flex; align-items: end; justify-content: space-between; gap: 24px; }
.cell-bank-hero h1 { margin: 5px 0 4px; font-size: clamp(2.25rem, 4vw, 3.25rem); color: var(--ink, #0b1b32); }
.cell-bank-hero p { margin: 0; color: #617086; max-width: 700px; }
.cell-bank-hero-actions { display: flex; gap: 10px; }
.cell-bank-stats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; }
.cell-bank-stat-card { min-width: 0; min-height: 92px; padding: 18px; display: flex; align-items: center; gap: 14px; color: inherit; background: #fff; border: 1px solid #dfe5ef; border-radius: 10px; font: inherit; text-align: left; }
.cell-bank-stat-card > span { flex: 0 0 auto; width: 44px; height: 44px; display: grid; place-items: center; border-radius: 8px; color: #087d72; background: #e8f7f4; font-size: 1.25rem; }
.cell-bank-stat-card > div { min-width: 0; }
.cell-bank-stat-card.is-action { cursor: pointer; transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
.cell-bank-stat-card.is-action:hover { border-color: #9fc9c2; box-shadow: 0 8px 22px rgba(24, 91, 82, .09); transform: translateY(-1px); }
.cell-bank-stat-card.is-action:focus-visible { outline: 3px solid rgba(25, 118, 106, .2); outline-offset: 2px; border-color: #438d83; }
.cell-bank-stat-action { margin-left: auto; color: #758398; font-size: .9rem; }
.cell-bank-stats small { display: block; color: #69768a; }
.cell-bank-stats strong { display: block; color: #0b1b32; font: 700 1.65rem/1.1 var(--font-mono, monospace); }
.cell-bank-panel { background: #fff; border: 1px solid #dfe5ef; border-radius: 10px; overflow: hidden; box-shadow: 0 10px 28px rgba(24, 42, 75, .045); }
.cell-bank-panel > header { padding: 24px 28px; border-bottom: 1px solid #e5e9f1; display: flex; justify-content: space-between; gap: 20px; align-items: center; }
.cell-bank-panel > header h2 { margin: 3px 0; font-size: 1.45rem; color: #102139; }
.cell-bank-panel > header p { margin: 0; color: #667489; }
.cell-bank-legend { display: flex; gap: 16px; color: #59677d; font-size: .86rem; }
.cell-bank-legend span { display: flex; align-items: center; gap: 7px; }
.cell-bank-legend i { width: 14px; height: 14px; border: 1px solid #ccd5e3; border-radius: 3px; }
.cell-bank-legend i.is-occupied { background: #dff3ef; border-color: #3b9b8d; }
.cell-bank-picker-controls { padding: 20px 28px; display: grid; grid-template-columns: minmax(180px, .8fr) minmax(220px, 1fr) minmax(240px, 1.3fr); gap: 16px; background: #f8fafc; border-bottom: 1px solid #e4e9f1; align-items: end; }
.cell-bank-picker-controls label > span { display: block; margin-bottom: 7px; font-weight: 700; color: #2d3b50; }
.cell-bank-box-meta { min-height: 46px; padding: 7px 0; display: flex; flex-direction: column; justify-content: center; }
.cell-bank-box-meta strong { color: #14243b; }
.cell-bank-box-meta span { color: #718096; font-size: .84rem; }
.cell-bank-grid-shell { padding: 28px; overflow-x: auto; }
.cell-bank-grid { --bank-columns: 10; min-width: 620px; display: grid; grid-template-columns: repeat(var(--bank-columns), minmax(52px, 1fr)); gap: 8px; }
.cell-bank-position { min-height: 58px; padding: 7px 4px; border: 1px solid #d8dfe9; border-radius: 7px; background: #f8fafc; color: #708096; display: flex; flex-direction: column; justify-content: center; align-items: center; transition: .15s ease; }
.cell-bank-position strong { font: 700 .78rem/1 var(--font-mono, monospace); }
.cell-bank-position span { margin-top: 5px; max-width: 100%; overflow: hidden; text-overflow: ellipsis; font: 600 .67rem/1 var(--font-mono, monospace); }
.cell-bank-position.is-occupied { background: #e8f5f2; border-color: #8bc5bb; color: #126d63; }
.cell-bank-position:not(:disabled):hover { border-color: #2639b8; box-shadow: 0 0 0 3px rgba(54, 72, 205, .11); transform: translateY(-1px); }
.cell-bank-position.is-selected { color: #fff; background: #252080; border-color: #252080; box-shadow: 0 0 0 3px rgba(37, 32, 128, .14); }
.cell-bank-position:disabled { opacity: .42; cursor: not-allowed; }
.cell-bank-grid-empty, .cell-bank-empty { min-height: 240px; display: grid; place-content: center; justify-items: center; text-align: center; color: #718096; }
.cell-bank-grid-empty i, .cell-bank-empty i { font-size: 2rem; margin-bottom: 10px; color: #8794a8; }
.cell-bank-grid-loading, .cell-bank-grid-error { grid-column: 1 / -1; padding: 48px; text-align: center; color: #6b778a; }
.cell-bank-position-detail { margin: 0 28px 28px; padding: 14px 18px; display: flex; gap: 32px; background: #f5f8fb; border: 1px solid #e1e7ef; border-radius: 8px; }
.cell-bank-position-detail span { display: flex; flex-direction: column; }
.cell-bank-position-detail small { color: #738095; text-transform: uppercase; font: 600 .68rem var(--font-mono, monospace); letter-spacing: .08em; }
.cell-bank-position-detail strong { color: #14243b; }
.cell-bank-status { display: inline-flex; padding: 4px 8px; border-radius: 5px; font-weight: 700; font-size: .78rem; }
.cell-bank-status.is-available { color: #0b7569; background: #e4f5f1; }
.cell-bank-status.is-taken { color: #36527c; background: #eaf0f8; }
.cell-bank-history a { color: #24249a; font-weight: 650; }
.cell-bank-modal-fields { display: grid; gap: 18px; }
.cell-bank-modal-fields > label > span, .cell-bank-modal-fields legend { display: block; margin-bottom: 7px; font-weight: 700; color: #27364b; }
.cell-bank-modal-fields em { color: #758195; font-style: normal; font-weight: 500; }
.cell-bank-modal-fields fieldset { border: 0; padding: 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.cell-bank-modal-fields fieldset legend { grid-column: 1 / -1; }
.cell-bank-modal-fields fieldset label { padding: 14px; display: flex; gap: 10px; border: 1px solid #d9e0ea; border-radius: 8px; }
.cell-bank-modal-fields fieldset small { display: block; color: #748095; }
.cell-bank-location-dialog { max-width: 760px; }
.cell-bank-location-manager { padding: 18px 22px; background: #f7f9fc; }
.cell-bank-location-list { display: grid; gap: 10px; }
.cell-bank-location-item { overflow: hidden; border: 1px solid #dce3ed; border-radius: 8px; background: #fff; }
.cell-bank-location-item > summary { min-height: 76px; padding: 14px 16px; display: grid; grid-template-columns: 40px minmax(0, 1fr) auto 18px; gap: 12px; align-items: center; cursor: pointer; list-style: none; }
.cell-bank-location-item > summary::-webkit-details-marker { display: none; }
.cell-bank-location-item > summary:hover { background: #fafcfd; }
.cell-bank-location-item > summary:focus-visible { outline: 3px solid rgba(25, 118, 106, .16); outline-offset: -3px; }
.cell-bank-location-item > summary > .bi-chevron-down { color: #7a8799; transition: transform .16s ease; }
.cell-bank-location-item[open] > summary > .bi-chevron-down { transform: rotate(180deg); }
.cell-bank-location-icon { width: 38px; height: 38px; display: grid; place-items: center; color: #08786e; border-radius: 7px; background: #e6f5f2; font-size: 1rem; }
.cell-bank-location-summary { min-width: 0; display: flex; flex-direction: column; }
.cell-bank-location-summary strong { overflow: hidden; color: #17283f; font-size: .9rem; text-overflow: ellipsis; white-space: nowrap; }
.cell-bank-location-summary small { margin-top: 3px; overflow: hidden; color: #6c788b; font-size: .78rem; text-overflow: ellipsis; white-space: nowrap; }
.cell-bank-location-meta { display: flex; flex-direction: column; align-items: flex-end; gap: 5px; }
.cell-bank-location-meta > small { color: #738095; font-size: .72rem; white-space: nowrap; }
.cell-bank-location-status { padding: 4px 7px; border-radius: 4px; font: 700 .68rem/1 var(--font-mono, monospace); letter-spacing: .04em; text-transform: uppercase; }
.cell-bank-location-status.is-active { color: #087266; background: #e4f4f1; }
.cell-bank-location-status.is-inactive { color: #6f7887; background: #edf0f4; }
.cell-bank-location-form { padding: 17px 18px 18px 70px; display: grid; grid-template-columns: 1fr 1fr; gap: 14px; border-top: 1px solid #e6eaf1; background: #fbfcfe; }
.cell-bank-location-form label > span { display: block; margin-bottom: 6px; color: #2b3a50; font-size: .78rem; font-weight: 700; }
.cell-bank-location-form label em { color: #778397; font-style: normal; font-weight: 500; }
.cell-bank-location-toggle { grid-column: 1 / -1; min-height: 54px; padding: 10px 12px; display: flex; align-items: center; gap: 10px; border: 1px solid #dfe5ed; border-radius: 6px; background: #fff; }
.cell-bank-location-toggle > input { width: 18px; height: 18px; accent-color: #16796d; }
.cell-bank-location-toggle > span { margin: 0 !important; display: flex !important; flex-direction: column; }
.cell-bank-location-toggle small { margin-top: 2px; color: #748095; font-weight: 400; }
.cell-bank-location-note { grid-column: 1 / -1; margin: 0; display: flex; gap: 7px; color: #6f5b31; font-size: .75rem; }
.cell-bank-location-form > div { grid-column: 1 / -1; display: flex; justify-content: flex-end; }
.cell-bank-location-item.is-read-only { min-height: 76px; padding: 14px 16px; display: grid; grid-template-columns: 40px minmax(0, 1fr) auto; gap: 12px; align-items: center; }
.cell-bank-location-empty { min-height: 210px; display: grid; place-content: center; justify-items: center; text-align: center; color: #708096; }
.cell-bank-location-empty > i { margin-bottom: 8px; font-size: 1.7rem; }
.cell-bank-location-empty > strong { color: #293a50; }
.cell-bank-location-empty > p { margin: 4px 0 0; }
.cell-bank-selection-summary { display: flex; justify-content: space-between; align-items: center; gap: 16px; color: #647188; }
.cell-bank-selection-summary strong { color: #15136f; }
.bank-vial-name-fields { margin: 0 28px 20px; padding: 16px; border: 1px solid #dce5ed; border-radius: 8px; background: #f8fbfb; }
.bank-vial-name-fields > div:first-child { margin-bottom: 12px; display: flex; flex-direction: column; color: #28394f; }
.bank-vial-name-fields > div:first-child em { color: #778397; font-style: normal; font-weight: 500; }
.bank-vial-name-fields > div:first-child small { margin-top: 3px; color: #6c798d; }
.bank-vial-name-fields > div:last-child { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.bank-vial-name-fields label > span { margin-bottom: 6px; display: block; color: #526177; font: 700 .72rem var(--font-mono, monospace); text-transform: uppercase; }
.cell-bank-vial-identity { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
.cell-bank-vial-identity small { color: #6c788b; font: 600 .72rem var(--font-mono, monospace); }
.cell-bank-vial-identity button { margin-top: 3px; padding: 0; border: 0; color: #2d3197; background: transparent; font-size: .72rem; font-weight: 700; }
.cell-bank-vial-identity button i { margin-right: 4px; }
.cell-bank-controlled-id { margin: 2px 0 0; display: flex; align-items: center; gap: 7px; color: #657287; font-size: .78rem; }
.cell-bank-position-detail em { display: block; color: #6c788b; font: 600 .7rem var(--font-mono, monospace); font-style: normal; }
.batch-cell-bank-panel > header > a { margin-left: auto; color: #24208f; font-weight: 700; text-decoration: none; }
.batch-cell-bank-columns { padding: 22px; display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.batch-cell-bank-columns > div { min-width: 0; }
.batch-cell-bank-columns h3 { margin: 0 0 12px; color: #1b2c43; font-size: 1rem; display: flex; justify-content: space-between; }
.batch-cell-bank-columns h3 span { color: #6d7890; font: 700 .8rem var(--font-mono, monospace); }
.batch-vial-list { border: 1px solid #e0e6ee; border-radius: 8px; overflow: hidden; }
.batch-vial-list article { padding: 12px; display: grid; grid-template-columns: 34px minmax(0, 1fr) auto; gap: 10px; align-items: center; border-bottom: 1px solid #e8ecf2; }
.batch-vial-list article:last-child { border-bottom: 0; }
.batch-vial-list article > span { width: 32px; height: 32px; display: grid; place-items: center; color: #08766c; background: #e7f6f3; border-radius: 6px; }
.batch-vial-list article div { min-width: 0; display: flex; flex-direction: column; }
.batch-vial-list article strong { color: #17283f; font: 700 .8rem var(--font-mono, monospace); }
.batch-vial-list article small { color: #66748a; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.batch-vial-list article em { font-style: normal; }
.batch-vial-list .record-empty { min-height: 126px; }
.bank-cells-notes { padding: 0 28px 24px; display: grid; grid-template-columns: 1fr 1fr; gap: 22px; align-items: end; }
.bank-cells-notes label > span { display: block; margin-bottom: 7px; font-weight: 700; color: #2d3b50; }
.bank-cells-notes em { color: #778397; font-style: normal; font-weight: 500; }
.batch-bank-source .cell-bank-selection-summary { padding: 0 28px 24px; }

/* Batch assay readouts --------------------------------------------------- */
.batch-assay-panel > header > button { margin-left: auto; }
.batch-assay-columns { padding: 22px; display: grid; grid-template-columns: 1fr 1fr; gap: 20px; background: #fafbfd; }
.batch-assay-columns > section { min-width: 0; background: #fff; border: 1px solid #e0e6ee; border-radius: 9px; overflow: hidden; }
.batch-assay-heading { padding: 16px 18px; display: grid; grid-template-columns: 40px minmax(0, 1fr) auto; align-items: center; gap: 11px; border-bottom: 1px solid #e7ebf1; }
.batch-assay-heading > span { width: 38px; height: 38px; display: grid; place-items: center; color: #08756b; background: #e4f5f1; border-radius: 7px; }
.batch-assay-heading > span.is-violet { color: #3930ad; background: #eeedff; }
.batch-assay-heading h3 { margin: 0; color: #15263e; font-size: 1rem; }
.batch-assay-heading p { margin: 2px 0 0; color: #6a778b; font-size: .8rem; }
.batch-assay-heading > strong { padding: 4px 8px; color: #4e5d74; background: #f1f4f8; border-radius: 5px; font: 700 .75rem var(--font-mono, monospace); }
.batch-assay-list { max-height: 520px; overflow-y: auto; }
.batch-assay-list > article { padding: 17px 18px; border-bottom: 1px solid #e8ecf2; }
.batch-assay-list > article:last-child { border-bottom: 0; }
.batch-assay-result { display: flex; justify-content: space-between; gap: 18px; align-items: start; }
.batch-assay-result > span { min-width: 0; display: flex; flex-direction: column; }
.batch-assay-result small { color: #778398; font: 600 .68rem var(--font-mono, monospace); text-transform: uppercase; letter-spacing: .05em; }
.batch-assay-result strong { color: #14253d; font-size: .96rem; }
.batch-assay-result > b { color: #171074; font-size: 1.05rem; text-align: right; }
.batch-assay-result > b em { color: #66758b; font-size: .72rem; font-style: normal; font-weight: 600; }
.batch-assay-list dl { margin: 10px 0; display: grid; gap: 5px; }
.batch-assay-list dl div { display: grid; grid-template-columns: 115px minmax(0, 1fr); gap: 10px; font-size: .78rem; }
.batch-assay-list dt { color: #788498; font-weight: 600; }
.batch-assay-list dd { margin: 0; color: #3d4d64; }
.batch-assay-list article > footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.batch-assay-list article > footer small { color: #7a8698; }
.batch-assay-list article > p { margin: 10px 0 0; padding: 9px 11px; color: #4d5c71; background: #f7f9fb; border-radius: 5px; font-size: .8rem; }
.assay-assessment { padding: 4px 8px; border-radius: 5px; color: #59677b; background: #eef1f5; font-size: .7rem; font-weight: 800; text-transform: uppercase; letter-spacing: .04em; }
.assay-assessment.is-pass { color: #087064; background: #def3ee; }
.assay-assessment.is-fail { color: #b22238; background: #fde8eb; }
.assay-assessment.is-inconclusive { color: #9a6210; background: #fff1d8; }
.batch-assay-list .record-empty { min-height: 170px; }
.assay-readout-fields { display: grid; grid-template-columns: 1fr 1fr; gap: 17px; }
.assay-readout-fields label > span { display: block; margin-bottom: 7px; color: #2a3950; font-weight: 700; }
.assay-readout-fields .is-wide { grid-column: 1 / -1; }
.assay-result-pair { display: grid; grid-template-columns: minmax(0, 1fr) 120px; gap: 10px; }
.assay-record-notice { padding: 13px 15px; display: flex; gap: 11px; align-items: center; color: #376960; background: #f0f8f6; border: 1px solid #cfe6e1; border-radius: 7px; }
.assay-record-notice > span { display: flex; flex-direction: column; }
.assay-record-notice small { color: #65766f; }
.history-event.is-assay { color: #332b9e; background: #eeedff; border-left-color: #6258d4; }

/* Batch subdivision and downstream-culture lineage ----------------------- */
.batch-offspring-panel > header > button { margin-left: auto; }
.batch-offspring-list { padding: 18px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; background: #fafbfd; }
.batch-offspring-list > a { min-width: 0; padding: 14px; display: grid; grid-template-columns: 38px minmax(0, 1.4fr) minmax(120px, .8fr) auto 18px; align-items: center; gap: 12px; color: #17283f; border: 1px solid #dde5ed; border-radius: 8px; background: #fff; text-decoration: none; transition: border-color .16s ease, box-shadow .16s ease, transform .16s ease; }
.batch-offspring-list > a:hover { border-color: #9ccdc6; box-shadow: 0 8px 18px rgba(20, 53, 75, .08); transform: translateY(-1px); }
.batch-offspring-icon { width: 36px; height: 36px; display: grid; place-items: center; color: #13736a; }
.batch-offspring-icon svg { width: 27px; height: 27px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.batch-offspring-list > a > span:not(.record-status) { min-width: 0; display: flex; flex-direction: column; }
.batch-offspring-list small { color: #758196; font: 650 .68rem var(--font-mono, monospace); text-transform: uppercase; }
.batch-offspring-list strong { overflow: hidden; color: #182940; font-size: .88rem; text-overflow: ellipsis; white-space: nowrap; }
.batch-offspring-list em { overflow: hidden; color: #66748a; font-size: .75rem; font-style: normal; text-overflow: ellipsis; white-space: nowrap; }
.batch-offspring-list > a > i { color: #8995a7; }
.batch-offspring-list > .record-empty { grid-column: 1 / -1; min-height: 145px; }
.history-event.is-lineage { color: #126c63; background: #e5f5f2; border-left-color: #23a99a; }

/* Batch experiments and plate allocation ------------------------------- */
.batch-experiments-panel > header > button { margin-left: auto; }
.batch-experiment-list { padding: 18px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; background: #fafbfd; }
.batch-experiment-list > article { min-width: 0; overflow: hidden; border: 1px solid #dce4ec; border-radius: 8px; background: #fff; }
.batch-experiment-list > article > header { padding: 14px 15px; display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; border-bottom: 1px solid #e7ecf1; background: #f8fafc; }
.batch-experiment-list > article > header > div { min-width: 0; display: flex; flex-direction: column; }
.batch-experiment-list > article > header > div:first-child span { color: #276b64; font: 750 .72rem var(--font-mono, monospace); letter-spacing: .04em; }
.batch-experiment-list > article > header strong { overflow: hidden; color: #172940; font-size: .94rem; text-overflow: ellipsis; white-space: nowrap; }
.batch-experiment-list > article > header > div:last-child { align-items: flex-end; }
.batch-experiment-list > article > header small { margin-top: 4px; color: #6b788c; font-size: .69rem; text-align: right; }
.batch-experiment-list > article > p { margin: 0; padding: 12px 15px 0; color: #59677b; font-size: .78rem; }
.batch-experiment-list > .record-empty { grid-column: 1 / -1; min-height: 145px; }
.experiment-treatment-list { padding: 12px 15px 15px; display: grid; gap: 7px; }
.experiment-treatment-list > section { min-width: 0; padding: 9px 10px; display: grid; grid-template-columns: 8px minmax(0, 1fr) minmax(100px, auto); align-items: center; gap: 9px; border: 1px solid #e3e8ee; border-radius: 6px; background: #fafbfd; }
.experiment-treatment-list > section > span, .experiment-plate-legend button > span { width: 8px; height: 24px; border-radius: 10px; background: var(--group-color); }
.experiment-treatment-list > section > div { min-width: 0; display: flex; flex-direction: column; }
.experiment-treatment-list strong { color: #223349; font-size: .78rem; }
.experiment-treatment-list small { overflow: hidden; color: #66758a; font-size: .68rem; text-overflow: ellipsis; white-space: nowrap; }
.experiment-treatment-list em { color: #526176; font: 650 .68rem var(--font-mono, monospace); font-style: normal; text-align: right; }
.treatment-color-teal { --group-color: #137d73; --group-bg: #e4f3f0; }
.treatment-color-indigo { --group-color: #5147c8; --group-bg: #eceaff; }
.treatment-color-coral { --group-color: #c44459; --group-bg: #fdebed; }
.treatment-color-amber { --group-color: #bd7922; --group-bg: #fff1dd; }
.treatment-color-blue { --group-color: #2874a6; --group-bg: #e5f2fa; }
.treatment-color-violet { --group-color: #8b4cad; --group-bg: #f4eafa; }
.treatment-color-olive { --group-color: #55753b; --group-bg: #edf4e8; }
.treatment-color-orange { --group-color: #a7592d; --group-bg: #f9eee7; }
.treatment-color-cyan { --group-color: #00879a; --group-bg: #e1f5f7; }
.treatment-color-slate { --group-color: #5d6b7e; --group-bg: #edf0f4; }
.experiment-saved-plate-shell { margin: 12px 15px 2px; padding: 13px; overflow: auto; border: 1px solid #dfe6ed; border-radius: 12px; background: linear-gradient(145deg, #f9fbfc, #eef2f5); box-shadow: inset 0 1px 2px rgba(25, 43, 62, .08); }
.experiment-saved-plate { min-width: max-content; padding: 8px; display: grid; gap: 6px; justify-content: center; border: 1px solid #d5dee7; border-radius: 10px; background: #fff; }
.experiment-saved-plate.is-plate-6 { grid-template-columns: repeat(3, 38px); }
.experiment-saved-plate.is-plate-12 { grid-template-columns: repeat(4, 34px); }
.experiment-saved-plate.is-plate-24 { grid-template-columns: repeat(6, 30px); }
.experiment-saved-plate.is-plate-48 { grid-template-columns: repeat(8, 26px); }
.experiment-saved-plate.is-plate-96 { grid-template-columns: repeat(12, 22px); }
.experiment-saved-plate.is-plate-384 { grid-template-columns: repeat(24, 18px); }
.experiment-saved-plate > span { aspect-ratio: 1; display: grid; place-items: center; color: #96a0ad; border: 1px solid #d3dbe3; border-radius: 50%; background: #f8fafb; }
.experiment-saved-plate > span.is-assigned { color: var(--group-color); border-color: var(--group-color); background: var(--group-bg); box-shadow: inset 0 0 0 2px #fff; }
.experiment-saved-plate > span b { font: 700 .48rem var(--font-mono, monospace); }
.experiment-saved-plate.is-plate-384 > span b { font-size: .38rem; }
.history-event.is-experiment { color: #3750a1; background: #e9effc; border-left-color: #5376cc; }

.batch-experiment-modal .modal-body { max-height: 74vh; overflow-y: auto; padding: 22px 26px 28px; background: #fafbfd; }
.experiment-context { display: grid; grid-template-columns: .72fr 1.25fr 1fr; border: 1px solid #dce4ec; border-radius: 8px; background: #fff; overflow: hidden; }
.experiment-context > span { min-width: 0; padding: 12px 14px; display: flex; flex-direction: column; border-right: 1px solid #e3e9ef; }
.experiment-context > span:last-child { border-right: 0; }
.experiment-context small { color: #788498; font: 650 .66rem var(--font-mono, monospace); text-transform: uppercase; }
.experiment-context strong { overflow: hidden; color: #1b2c42; font-size: .85rem; text-overflow: ellipsis; white-space: nowrap; }
.experiment-context em { color: #748095; font-size: .68rem; font-style: normal; }
.experiment-fields { margin-top: 15px; display: grid; grid-template-columns: 1.5fr .65fr .8fr .8fr; gap: 11px; align-items: start; }
.experiment-fields .is-objective { grid-column: 1 / -1; }
.experiment-fields label > span, .experiment-group label > span { display: block; margin-bottom: 6px; color: #2b3a50; font-size: .77rem; font-weight: 700; }
.experiment-fields label > span em, .experiment-group label > span em { color: #7b8799; font-size: .65rem; font-style: normal; font-weight: 600; text-transform: uppercase; }
.experiment-builder { margin-top: 18px; display: grid; grid-template-columns: minmax(420px, .92fr) minmax(390px, 1.08fr); gap: 14px; align-items: start; }
.experiment-group-editor, .experiment-plate-panel { overflow: hidden; border: 1px solid #dce4ec; border-radius: 8px; background: #fff; }
.experiment-group-editor > header, .experiment-plate-panel > header { min-height: 60px; padding: 12px 14px; display: flex; align-items: center; justify-content: space-between; gap: 12px; border-bottom: 1px solid #e5eaf0; }
.experiment-group-editor h3, .experiment-plate-panel h3 { margin: 0; color: #172940; font-size: .92rem; }
.experiment-group-editor header p, .experiment-plate-panel header p { margin: 2px 0 0; color: #6c788c; font-size: .71rem; }
.experiment-plate-panel header p.is-error { color: #ad3046; font-weight: 650; }
.experiment-group-editor > div { max-height: 400px; padding: 10px; display: grid; gap: 8px; overflow-y: auto; }
.experiment-group { border: 1px solid #dfe5eb; border-radius: 7px; background: #fff; }
.experiment-group.is-active { border-color: var(--group-color); box-shadow: 0 0 0 2px color-mix(in srgb, var(--group-color) 18%, transparent); }
.experiment-group > header { min-height: 38px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid #e8ecf1; background: var(--group-bg, #f8fafc); }
.experiment-group > header > button:first-child { align-self: stretch; padding: 0 11px; display: flex; align-items: center; gap: 8px; color: #26374c; border: 0; background: transparent; }
.experiment-group > header > button:first-child > span { width: 9px; height: 9px; border-radius: 50%; background: var(--group-color); }
.experiment-group > header > button:first-child strong { font-size: .75rem; }
.experiment-group > header > button:last-child { width: 34px; align-self: stretch; color: #798599; border: 0; background: transparent; }
.experiment-group > header > button:last-child:hover:not(:disabled) { color: #aa3045; background: #fdebed; }
.experiment-group > header > button:last-child:disabled { opacity: .25; }
.experiment-group > div { padding: 10px; display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.experiment-group .experiment-dose { display: grid; grid-template-columns: 1fr 90px; gap: 7px; }
.experiment-group .is-notes, .experiment-color-picker, .experiment-group [data-well-summary] { grid-column: 1 / -1; }
.experiment-group [data-well-summary] { margin: 0; color: var(--group-color); font: 650 .67rem var(--font-mono, monospace); }
.experiment-color-picker { margin: 0; padding: 0; display: flex; align-items: center; gap: 6px; border: 0; }
.experiment-color-picker legend { width: auto; margin: 0 4px 0 0; float: left; color: #66758a; font-size: .68rem; font-weight: 700; }
.experiment-color-picker button { width: 23px; height: 23px; padding: 3px; display: grid; place-items: center; border: 1px solid transparent; border-radius: 50%; background: transparent; }
.experiment-color-picker button > span { width: 13px; height: 13px; border-radius: 50%; background: var(--group-color); }
.experiment-color-picker button:hover { border-color: var(--group-color); }
.experiment-color-picker button.is-selected { border-color: var(--group-color); background: var(--group-bg); box-shadow: 0 0 0 1px #fff inset; }
.experiment-plate-panel > header > strong { flex: none; color: #3b5574; font: 700 .69rem var(--font-mono, monospace); }
.experiment-plate-scroll { padding: 18px; overflow: auto; }
.experiment-plate-grid { min-width: max-content; display: grid; grid-template-columns: repeat(var(--plate-cols), 34px); gap: 7px; justify-content: center; }
.experiment-plate-grid > button { width: 34px; height: 34px; padding: 0; display: grid; place-items: center; color: #748196; border: 1px solid #ccd5df; border-radius: 50%; background: #fff; font: 700 .62rem var(--font-mono, monospace); transition: transform .12s ease, background .12s ease, border-color .12s ease; }
.experiment-plate-grid > button:hover { color: #202f44; border-color: #8c9aae; transform: scale(1.08); }
.experiment-plate-grid > button[class*="treatment-color-"] { color: var(--group-color); border-color: var(--group-color); background: var(--group-bg); }
.experiment-plate-empty { min-height: 180px; display: flex; flex-direction: column; align-items: center; justify-content: center; color: #748196; }
.experiment-plate-empty[hidden] { display: none; }
.experiment-plate-empty i { font-size: 1.5rem; }
.experiment-plate-empty strong { margin-top: 7px; color: #26374c; }
.experiment-plate-empty span { font-size: .73rem; }
.experiment-plate-legend { padding: 11px 14px; display: flex; flex-wrap: wrap; gap: 6px; border-top: 1px solid #e5eaf0; background: #f8fafc; }
.experiment-plate-legend button { padding: 5px 8px; display: flex; align-items: center; gap: 6px; color: #58667a; border: 1px solid transparent; border-radius: 5px; background: transparent; }
.experiment-plate-legend button > span { width: 7px; height: 15px; }
.experiment-plate-legend button strong { font-size: .68rem; }
.experiment-plate-legend button.is-active { color: var(--group-color); border-color: var(--group-color); background: var(--group-bg); }
.experiment-plate-note { margin: 0; padding: 10px 14px; display: flex; gap: 7px; color: #66758a; border-top: 1px solid #e5eaf0; font-size: .7rem; }
.batch-experiment-modal .modal-footer > span { margin-right: auto; color: #657287; font-size: .78rem; }

.batch-offspring-modal .modal-body { max-height: 72vh; overflow-y: auto; padding: 22px 26px 28px; background: #fafbfd; }
.offspring-context { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border: 1px solid #dce4ec; border-radius: 8px; background: #fff; overflow: hidden; }
.offspring-context > span { min-width: 0; padding: 13px 15px; display: flex; flex-direction: column; border-right: 1px solid #e4e9ef; }
.offspring-context > span:last-child { border-right: 0; }
.offspring-context small { color: #778398; font: 650 .68rem var(--font-mono, monospace); text-transform: uppercase; }
.offspring-context strong { overflow: hidden; color: #1b2d44; font-size: .86rem; text-overflow: ellipsis; white-space: nowrap; }
.offspring-controls { margin-top: 16px; display: grid; grid-template-columns: 1fr 1fr 1.35fr; align-items: end; gap: 12px; }
.offspring-controls label > span, .offspring-group label > span { display: block; margin-bottom: 6px; color: #2d3b50; font-size: .78rem; font-weight: 700; }
.offspring-controls > div { min-height: 44px; padding: 9px 12px; display: flex; flex-direction: column; justify-content: center; color: #1f655d; border: 1px solid #cce3de; border-radius: 6px; background: #eef8f6; }
.offspring-controls > div strong { font-size: .78rem; }
.offspring-controls > div small { color: #687971; font-size: .69rem; }
.offspring-groups-heading { margin: 22px 0 10px; display: flex; align-items: center; justify-content: space-between; gap: 15px; }
.offspring-groups-heading h3 { margin: 0; color: #16283f; font-size: 1rem; }
.offspring-groups-heading p { margin: 2px 0 0; color: #69768a; font-size: .78rem; }
.offspring-groups { display: grid; gap: 10px; }
.offspring-group { overflow: hidden; border: 1px solid #dce4ec; border-radius: 8px; background: #fff; }
.offspring-group > header { min-height: 42px; padding: 8px 12px; display: grid; grid-template-columns: 30px 1fr auto; align-items: center; gap: 8px; border-bottom: 1px solid #e6ebf1; background: #f7f9fb; }
.offspring-group > header > span { width: 28px; height: 26px; display: grid; place-items: center; color: #177168; border-radius: 5px; background: #e4f3f0; font: 700 .7rem var(--font-mono, monospace); }
.offspring-group > header > strong { color: #24354a; font-size: .82rem; }
.offspring-group > header > button { width: 30px; height: 30px; display: grid; place-items: center; color: #7a8698; border: 0; border-radius: 5px; background: transparent; }
.offspring-group > header > button:hover:not(:disabled) { color: #a72f43; background: #fdecef; }
.offspring-group > header > button:disabled { opacity: .3; }
.offspring-group > div { padding: 13px; display: grid; grid-template-columns: minmax(180px, 1.4fr) minmax(170px, 1fr) minmax(130px, .8fr) 90px 105px; gap: 10px; align-items: end; }
.batch-offspring-modal .modal-footer > span { margin-right: auto; color: #657287; font-size: .78rem; }

.history-event.is-inherited { box-shadow: inset 0 0 0 1px rgba(59, 83, 116, .12); }
.history-event small { display: block; margin-top: 1px; overflow: hidden; color: currentColor; font: 650 .58rem var(--font-mono, monospace); opacity: .72; text-overflow: ellipsis; }
.feed-history-list article.is-inherited { border-left: 3px solid #7390ae; background: #f8fafc; }
.feed-lineage-source { display: block; margin-top: 5px; color: #315c86; font: 650 .66rem var(--font-mono, monospace); text-decoration: none; }
.feed-lineage-source:hover { text-decoration: underline; }

.batch-lineage-history { margin-top: 18px; }
.batch-lineage-list { display: grid; background: #fbfcfd; }
.batch-lineage-list > article { min-width: 0; min-height: 76px; display: grid; grid-template-columns: 24px 38px minmax(210px, 1.2fr) minmax(300px, 1fr) auto 32px; align-items: center; gap: 11px; padding: 11px 17px 11px calc(17px + (var(--lineage-depth) * 22px)); border-bottom: 1px solid #e6ebf0; background: #fff; }
.batch-lineage-list > article:last-child { border-bottom: 0; }
.batch-lineage-list > article.is-current { background: #edf8f6; box-shadow: inset 3px 0 #1a8a7f; }
.lineage-rail { position: relative; width: 24px; align-self: stretch; }
.lineage-rail::before { position: absolute; top: -12px; bottom: -12px; left: 11px; width: 1px; content: ""; background: #b8c7d3; }
.lineage-rail i { position: absolute; top: 50%; left: 7px; width: 9px; height: 9px; border: 2px solid #fff; border-radius: 50%; background: #6684a1; box-shadow: 0 0 0 1px #6684a1; transform: translateY(-50%); }
.batch-lineage-list > article.is-current .lineage-rail i { background: #16877c; box-shadow: 0 0 0 1px #16877c; }
.batch-lineage-icon { width: 36px; height: 36px; color: #315e80; }
.batch-lineage-identity { min-width: 0; display: flex; flex-direction: column; }
.batch-lineage-identity small { color: #6d7c8e; font: 700 .63rem var(--font-mono, monospace); text-transform: uppercase; }
.batch-lineage-identity a { overflow: hidden; color: #172a41; font-size: .86rem; font-weight: 750; text-decoration: none; text-overflow: ellipsis; white-space: nowrap; }
.batch-lineage-identity a:hover { color: #1d3cab; text-decoration: underline; }
.batch-lineage-identity span { color: #6b788a; font-size: .7rem; }
.batch-lineage-list dl { margin: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; }
.batch-lineage-list dl div { min-width: 0; }
.batch-lineage-list dt { color: #788598; font: 650 .6rem var(--font-mono, monospace); text-transform: uppercase; }
.batch-lineage-list dd { margin: 2px 0 0; overflow: hidden; color: #2b3a4e; font-size: .72rem; font-weight: 650; text-overflow: ellipsis; white-space: nowrap; }
.batch-lineage-open { width: 30px; height: 30px; display: grid; place-items: center; color: #617187; border-radius: 5px; }
.batch-lineage-open:hover { color: #1d3cab; background: #eef1ff; }

@media (max-width: 900px) {
  .cell-bank-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cell-bank-picker-controls { grid-template-columns: 1fr 1fr; }
  .cell-bank-box-meta { grid-column: 1 / -1; }
  .batch-cell-bank-columns { grid-template-columns: 1fr; }
  .batch-assay-columns { grid-template-columns: 1fr; }
  .batch-offspring-list { grid-template-columns: 1fr; }
  .batch-experiment-list, .experiment-builder { grid-template-columns: 1fr; }
  .experiment-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .experiment-fields .is-name, .experiment-fields .is-objective { grid-column: 1 / -1; }
  .offspring-group > div { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .offspring-group .is-name { grid-column: 1 / -1; }
  .batch-lineage-list > article { grid-template-columns: 24px 38px minmax(180px, 1fr) auto 32px; padding-left: 14px; }
  .batch-lineage-list dl { display: none; }
}
@media (max-width: 640px) {
  .cell-bank-hero { align-items: stretch; flex-direction: column; }
  .cell-bank-hero-actions { display: grid; grid-template-columns: 1fr 1fr; }
  .cell-bank-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cell-bank-picker-controls { grid-template-columns: 1fr; }
  .cell-bank-stat-card { min-height: 88px; padding: 14px; gap: 10px; }
  .cell-bank-stat-card > span { width: 40px; height: 40px; }
  .cell-bank-box-meta { grid-column: auto; }
  .cell-bank-panel > header { align-items: flex-start; flex-direction: column; padding: 20px; }
  .cell-bank-grid-shell { padding: 20px; }
  .cell-bank-position-detail { margin: 0 20px 20px; flex-direction: column; gap: 9px; }
  .cell-bank-location-manager { padding: 14px; }
  .cell-bank-location-item > summary { grid-template-columns: 38px minmax(0, 1fr) 18px; }
  .cell-bank-location-meta { grid-column: 2; align-items: flex-start; flex-direction: row; flex-wrap: wrap; }
  .cell-bank-location-item > summary > .bi-chevron-down { grid-column: 3; grid-row: 1 / span 2; }
  .cell-bank-location-form { padding: 16px; grid-template-columns: 1fr; }
  .cell-bank-location-form > *, .cell-bank-location-toggle, .cell-bank-location-note, .cell-bank-location-form > div { grid-column: 1; }
  .cell-bank-location-item.is-read-only { grid-template-columns: 38px minmax(0, 1fr); }
  .cell-bank-location-item.is-read-only .cell-bank-location-meta { grid-column: 2; }
  .bank-cells-notes { padding: 0 20px 20px; grid-template-columns: 1fr; }
  .bank-vial-name-fields { margin: 0 20px 18px; }
  .bank-vial-name-fields > div:last-child { grid-template-columns: 1fr; }
  .assay-readout-fields { grid-template-columns: 1fr; }
  .assay-readout-fields .is-wide { grid-column: auto; }
  .offspring-context, .offspring-controls, .offspring-group > div { grid-template-columns: 1fr; }
  .offspring-context > span { border-right: 0; border-bottom: 1px solid #e4e9ef; }
  .offspring-context > span:last-child { border-bottom: 0; }
  .offspring-group .is-name { grid-column: auto; }
  .batch-offspring-list > a { grid-template-columns: 34px minmax(0, 1fr) auto; }
  .batch-offspring-list > a > span:nth-of-type(2) { grid-column: 2; }
  .batch-offspring-list > a > .record-status { grid-column: 3; grid-row: 1; }
  .batch-offspring-list > a > i { grid-column: 3; grid-row: 2; }
  .experiment-context, .experiment-fields, .experiment-group > div { grid-template-columns: 1fr; }
  .experiment-context > span { border-right: 0; border-bottom: 1px solid #e3e9ef; }
  .experiment-context > span:last-child { border-bottom: 0; }
  .experiment-fields .is-name, .experiment-fields .is-objective, .experiment-group .is-notes, .experiment-color-picker, .experiment-group [data-well-summary] { grid-column: auto; }
  .batch-lineage-list > article { grid-template-columns: 20px 34px minmax(0, 1fr) 28px; gap: 8px; }
  .batch-lineage-list > article > .record-status { grid-column: 3; justify-self: start; }
  .batch-lineage-open { grid-column: 4; grid-row: 1 / span 2; }
}
