:root {
  font-family: system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  font-size: 16px; line-height: 1.45;
  --space-1: 4px; --space-2: 8px; --space-3: 12px; --space-4: 16px; --space-5: 24px;
  --text-xs: 12px; --text-sm: 13px; --text-body: 14px; --text-heading: 16px; --text-title: 22px;
  --radius-sm: 4px; --radius: 6px; --radius-pill: 999px;
  --control-height: 32px; --control-small: 28px;
  --ink: #192c39; --muted: #4e6472; --line: #ccd9e0; --control-line: #8196a3;
  --surface: #f5f8fa; --surface-raised: #fff; --surface-selected: #eaf5f9;
  --accent: #145d79; --accent-hover: #0e445c; --focus: #12678b; --header: #173a50;
  --status-ready: #14532d; --status-ready-bg: #dcfce7;
  --status-error: #9b2828; --status-error-bg: #fff0ed;
  --status-pending: #6b4d00; --status-pending-bg: #fdf0c9;
  --status-neutral: #374456; --status-neutral-bg: #e5e8eb;
  --status-assigned: #163f76; --status-assigned-bg: #d9eaff;
  color: var(--ink); background: var(--surface);
}
.error:empty, .notice:empty, [aria-label="Study creation requirements"]:empty { display: none; }
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:#135b82}button:disabled{cursor:not-allowed;opacity:.6}
.site-header{background:#173a50;color:white}.header-inner{width:100%;margin:auto;padding:16px;display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap}.brand{font-weight:700;color:white;text-decoration:none;font-size:20px}.site-header nav{display:flex;gap:20px;flex-wrap:wrap}.site-header nav a{color:#e9f5fc;text-decoration:none}.site-header nav a[aria-current]{border-bottom:2px solid #76cce4}
.layout{width:100%;margin:24px auto;padding:0 16px 50px}h1{font-size:1.65rem;margin:0}h2{font-size:1.24rem;margin:0 0 12px}h3{font-size:1.06rem;margin:16px 0 8px}p{margin:8px 0}.topline,.section-head,.toolbar,.row-head{display:flex;gap:12px;justify-content:space-between;align-items:center;flex-wrap:wrap}.topline{margin-bottom:18px}.toolbar{justify-content:flex-start;margin:12px 0}.muted{color:#4e6472}.small{font-size:.9rem}.mono{font-family:ui-monospace,SFMono-Regular,monospace;font-size:.93rem;overflow-wrap:anywhere}.error{color:#9b2828;background:#fff0ed;border:1px solid #d99586;padding:10px 14px;border-radius:6px;margin:12px 0}.notice{color:#154f62;background:#e7f5f7;border:1px solid #9ecfd7;padding:10px 14px;border-radius:6px;margin:12px 0}.empty{color:#526c77;padding:22px 0}
.panel,.study-card,details{background:white;border:1px solid #ccd9e0;border-radius:8px;padding:18px;margin-bottom:16px}.study-card{display:block;color:inherit;text-decoration:none}.study-card:hover,.study-card:focus-visible{border-color:#13789d;box-shadow:0 0 0 2px #b8dce8}.study-card .row-head{margin-bottom:6px}.study-card strong{font-size:1.1rem}details{padding:0}details>summary{cursor:pointer;padding:14px 18px;font-weight:650}details>.detail-body{padding:0 18px 18px}.list{display:grid;gap:10px}.list .study-card{margin:0}
.btn{background:#145d79;border:1px solid #145d79;color:white;border-radius:5px;padding:8px 14px;min-height:40px}.btn:hover:not(:disabled){background:#0e445c}.btn.secondary{background:white;color:#145d79}.btn.danger{background:white;color:#9b2828;border-color:#bc7373}.btn.compact{padding:4px 10px;min-height:34px}.step-nav{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.step-nav button{background:white;border:1px solid #9ab1bd;border-radius:5px;padding:8px 13px;color:#19455b}.step-nav button[aria-current="step"]{color:white;background:#145d79;border-color:#145d79}.field-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:14px}.control{display:flex;flex-direction:column;gap:5px;min-width:0}.control input:not([type=checkbox]),.control select,.control textarea,.inline-input{width:100%;padding:8px 10px;border:1px solid #9aaeb8;border-radius:5px;background:white;color:#192c39;min-height:40px}.control textarea{min-height:76px}.control input:focus-visible,.control select:focus-visible,.control textarea:focus-visible,button:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #58a9c5;outline-offset:2px}.check{display:inline-flex;gap:9px;align-items:center;cursor:pointer}.check input{width:19px;height:19px;accent-color:#146584}.choices{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,280px),1fr));gap:7px}.choices label{border:1px solid #d0dde2;border-radius:5px;padding:9px;background:#fafcfd}.choices label:has(input:checked){border-color:#25809d;background:#eaf5f9}.field-row{display:grid;grid-template-columns:minmax(150px,1fr) auto;align-items:center;gap:12px;border-top:1px solid #e0e8eb;padding:9px 0}.field-row:first-child{border-top:0}.namespace{margin:12px 0}.namespace .control{max-width:650px}.graph-host{overflow:auto;margin:12px 0;min-height:80px}.stage-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,340px),1fr));gap:10px}.stage-row{border:1px solid #d4e0e5;border-radius:6px;padding:12px;background:#fcfefe}.stages{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.badge{border:1px solid #afc2cb;background:#f2f7f9;color:#285367;border-radius:30px;padding:3px 9px;font-size:.9rem}.badge.complete{border-color:#83b9a7;background:#e5f5eb;color:#15563e}.badge.alert{border-color:#d9a792;background:#fff0e9;color:#8d3d22}.badge.pending{border-color:#c7b377;background:#fbf3dc;color:#725517}.entry{border-top:1px solid #dce5e9;padding:11px 0}.entry:first-child{border-top:0}.metadata{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,210px),1fr));gap:12px}.metadata dt{color:#4e6472}.metadata dd{margin:0;overflow-wrap:anywhere}.columns{display:grid;gap:6px}.column{padding:7px 10px;border-left:3px solid #b3cbd6;background:#f3f7f9}.column.required{border-color:#218a96;background:#ecf7f6}.flow{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.divider{border:0;border-top:1px solid #dce5e9;margin:22px 0}
@media(max-width:650px){.layout{padding:0 14px}.header-inner{padding:14px}.panel,.study-card{padding:14px}.field-row{grid-template-columns:1fr auto;gap:6px}.topline{align-items:flex-start}}
.operational-report { min-width:0; }
.report-table-wrap { min-width:0; overflow:auto; }
.report-table { border-collapse:collapse; width:100%; min-width:920px; font-size:.87rem; }
.report-table th, .report-table td { padding:8px 10px; border-bottom:1px solid #dce5e9; text-align:left; vertical-align:top; }
.report-table th { position:sticky; top:0; z-index:1; background:#eaf2f5; color:#27465a; white-space:nowrap; }
.report-table tr:nth-child(even) td { background:#f7fafb; }
.report-table td:first-child { min-width:130px; }
.report-table td .badge { display:inline-block; white-space:nowrap; }
.report-context { margin:12px 0 0; }
.report-context-list { display:flex; flex-wrap:wrap; gap:7px; }
.report-sample-scroll { max-height:clamp(300px,55vh,680px); }
/* Links that look like buttons: view changes are real anchors so middle-click and copy-link work. */
a.btn, .step-nav a { display:inline-flex; align-items:center; text-decoration:none; }
a.btn:not(.secondary) { color:white; }
a.btn[aria-disabled="true"] { opacity:.6; cursor:not-allowed; }
.step-nav a { background:white; border:1px solid #9ab1bd; border-radius:5px; padding:8px 13px; color:#19455b; }
.step-nav a[aria-current="step"] { color:white; background:#145d79; border-color:#145d79; }
.sample-upload { margin: 1rem 0; }
.sample-upload summary { cursor: pointer; }
.sample-upload .report-table-wrap { max-height: 28rem; overflow: auto; }
.sample-upload td { overflow-wrap: anywhere; }
.sample-upload :focus-visible { outline: 2px solid var(--accent, #2864c6); outline-offset: 3px; }
.sample-upload [hidden] { display: none !important; }
.selected-sample-order { list-style:none; padding:0; margin:8px 0; max-height:18rem; overflow:auto; }
.selected-sample-order li { display:flex; align-items:center; gap:6px; padding:4px 8px; border-bottom:1px solid #dce5e9; cursor:grab; }
.selected-sample-order li > span { flex:1; overflow-wrap:anywhere; }
.selected-sample-order .btn { min-height:30px; padding:2px 9px; }
.selected-sample-order .drag-target { background:#eaf5f9; outline:2px solid #25809d; outline-offset:-2px; }
/* Readiness is diagnostic; neutral unknown is distinct from observed failure. */
.readiness-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: .7rem; margin: 1rem 0; }
.readiness-card { border: 1px solid #cbd5e1; border-radius: .5rem; padding: .8rem; min-width: 0; }
.readiness-card h3, .readiness-card h4 { margin: 0 0 .6rem; }
.readiness-reasons { margin: .4rem 0 0; padding-left: 1rem; overflow-wrap: anywhere; }
.readiness-reasons li + li { margin-top: .25rem; }
.readiness-badge { display: inline-block; border-radius: .3rem; padding: .2rem .45rem; font-size: .85rem; white-space: nowrap; }
.readiness-ready { color: #14532d; background: #dcfce7; }
.readiness-not_ready { color: #9f1239; background: #ffe4e6; }
.readiness-unknown { color: #334155; background: #e2e8f0; }
.readiness-not_applicable { color: #475569; background: #f1f5f9; border: 1px dashed #94a3b8; }
.report-filters { display: flex; flex-wrap: wrap; align-items: end; gap: .65rem; margin: .8rem 0; }
.report-filters .control { min-width: 120px; flex: 1; }
.publication-gate { margin: .6rem 0; }
/* Access decisions are text-first and distinct from observation/completion styling. */
.access-page .access-badge { display: inline-block; padding: .15rem .4rem; border: 1px solid currentColor; border-radius: .3rem; font-size: .85rem; }
.access-row, .access-grant { display: flex; flex-wrap: wrap; gap: .75rem; align-items: start; margin-block: .75rem; }
.access-grant .control { min-width: 12rem; max-width: 24rem; }
.access-editor input[type="text"] { min-width: 12rem; }
.access-page pre { white-space: pre-wrap; overflow-wrap: anywhere; }
.graph-access-layout { display: grid; grid-template-columns: minmax(0, 1fr) minmax(290px, 350px); gap: 20px; align-items: start; }
.graph-access-main { min-width: 0; }
.access-rules { border-left: 1px solid #d4e0e5; padding-left: 18px; }
.access-rules h3 { margin-top: 0; }
.access-rule { border: 1px solid #d4e0e5; border-radius: 5px; margin: 12px 0; padding: 12px; min-width: 0; }
.access-rule .control { margin-bottom: 8px; }
.access-rule select[multiple] { padding: 4px; }
.access-node-types { border: 0; padding: 0; margin: 0 0 8px; min-width: 0; }
.access-node-types legend { margin-bottom: 5px; }
.access-node-type-choices { display: flex; flex-wrap: wrap; gap: 5px 12px; margin-bottom: 5px; }
.access-node-types small { display: block; }
.access-rules .error:empty, .node-grant-popover .error:empty { display: none; }
.node-grant-popover { position: fixed; inset: auto; margin: 0; width: min(300px, calc(100vw - 16px)); max-height: calc(100vh - 16px); overflow: auto; padding: 16px; border: 1px solid #9aaeb8; border-radius: 6px; background: white; color: #192c39; box-shadow: 0 8px 30px #192c3933; }
.node-grant-popover h3 { margin-top: 0; }
.node-grant-popover .control { margin-bottom: 10px; }
.node-grant-marker { font-size: var(--text-xs); color: var(--accent); margin-left: 5px; }
.graph-access-main [data-node-id] { cursor: pointer; }
.graph-access-main [data-node-id]:focus-visible { outline: 3px solid #58a9c5; outline-offset: 2px; }
@media (max-width: 1000px) { .graph-access-layout { grid-template-columns: minmax(0, 1fr); } .access-rules { border-left: 0; border-top: 1px solid #d4e0e5; padding: 16px 0 0; } }
/* Study validity is independent of lifecycle/readiness. */
.validity-panel { border-left: 4px solid #536a86; }
.validity-banner { padding: 1rem; border: 1px solid #b74438; background: #fff4f0; margin: .8rem 0; }
.validity-revoked, .validity-blocked { color: #9a251d; font-weight: 700; }
.validity-valid, .validity-allowed { color: #17623f; font-weight: 700; }
.validity-draft { color: #795415; }
.validity-reasons li { margin: .5rem 0; overflow-wrap: anywhere; }
.validity-reasons span { display: block; }
.validity-event a { margin-right: 1rem; }
.validity-event pre { white-space: pre-wrap; overflow-wrap: anywhere; max-height: 40rem; overflow: auto; }
.cdm-diagnostics { border-left: 3px solid #bd8a24; padding-left: .75rem; }
/* Scoped control diagnostics preserve the four readiness cards. */
.control-editor, .control-comparison { overflow-x: auto; }
.control-editor table, .control-comparison table { width: 100%; border-collapse: collapse; }
.control-editor th, .control-editor td, .control-comparison th, .control-comparison td { padding: .5rem; text-align: left; vertical-align: top; }
.control-editor input, .control-editor select { width: 100%; min-width: 6rem; }
.access-set-scroll { overflow-x: auto; }
.access-set { width: 100%; border-collapse: collapse; margin: 1rem 0; }
.access-set th, .access-set td { padding: .65rem; border-bottom: 1px solid var(--line, #d6dde6); text-align: center; vertical-align: top; }
.access-set th[scope="row"] { text-align: left; min-width: 15rem; }
.access-set th[scope="row"] code, .access-set th[scope="row"] small { display: block; }
.access-set input[type="checkbox"] { width: 1.15rem; height: 1.15rem; accent-color: var(--accent, #2563eb); }
.access-group-help { margin: 1rem 0; }
.report-table td.nowrap { white-space:nowrap; }
.lineage-graph__controls { display: flex; flex-wrap: wrap; gap: .5rem 1rem; padding: .65rem; margin-bottom: .75rem; background: var(--surface, #f5f7fa); border-radius: .4rem; font-size: .85rem; }
.lineage-graph__control { border-left: 2px solid #9da9bb; padding-left: .6rem; }

/* Session identity shares the navigation row, including when the header wraps. */
.header-inner > nav:first-of-type:not(.session-control) { margin-left: auto; }
.site-header .session-control { margin-left: auto; display: flex; flex-wrap: nowrap; align-items: center; gap: var(--space-3); min-width: 0; }
.session-identity { display: flex; flex-direction: column; align-items: flex-end; min-width: 0; gap: 2px; }
.session-name { font-weight: 600; overflow-wrap: anywhere; text-align: right; }
.session-roles { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: var(--space-1); }
.session-role, .session-test-tag { font-size: var(--text-xs); line-height: 1.5; padding: 0 6px; border-radius: var(--radius-pill); background: #ffffff1a; border: 1px solid #ffffff40; }
.session-test-tag { color: #173a50; background: #d9eaff; border-color: #d9eaff; }
.site-header .session-control a.btn { color: var(--accent); flex-shrink: 0; white-space: nowrap; }
.site-header :is(a, button):focus-visible { outline-color: #76cce4; }
@media (max-width: 650px) {
  .header-inner > .session-control { flex-basis: 100%; justify-content: flex-end; }
}
/* Auth uses the same compact controls and surfaces as the workspace. */
.auth-layout { min-height: calc(100svh - 64px); display: grid; align-content: center; justify-items: center; padding: var(--space-5) var(--space-4); }
.auth-layout .auth-card { width: min(100%, 420px); padding: var(--space-5); box-shadow: 0 8px 28px #192c3910; }
.auth-card h1 { margin-bottom: var(--space-2); }
.auth-card .auth-primary { width: 100%; justify-content: center; margin-top: var(--space-3); }
.auth-test-login { margin-top: var(--space-4); padding-top: var(--space-4); border-top: 1px solid var(--line); }
.auth-test-login .control { margin-top: var(--space-3); }
.auth-page [hidden] { display: none !important; }

/* Compact desktop density; rem stays at 16px so existing small text remains >=12px. */
body { font-size: var(--text-body); }
.header-inner { padding: var(--space-3) var(--space-4); gap: var(--space-3); }
.brand { font-size: 18px; }
.site-header nav { gap: var(--space-4); font-size: var(--text-sm); }
.layout { margin: var(--space-4) auto; padding: 0 var(--space-4) var(--space-5); }
h1 { font-size: var(--text-title); line-height: 1.25; }
h2 { font-size: var(--text-heading); margin-bottom: var(--space-2); }
h3 { font-size: var(--text-body); margin: var(--space-3) 0 var(--space-2); }
p { margin: var(--space-1) 0 var(--space-2); }
.small, .mono { font-size: var(--text-sm); }
.muted { color: var(--muted); }
.topline { margin-bottom: var(--space-3); }
.topline, .section-head, .toolbar, .row-head, .flow { gap: var(--space-2); }
.toolbar { margin: var(--space-2) 0; }
.panel, .study-card { padding: var(--space-3); margin-bottom: var(--space-3); border-radius: var(--radius); }
details { margin-bottom: var(--space-2); border-radius: var(--radius); }
details > summary { padding: var(--space-2) var(--space-3); font-size: var(--text-sm); }
details > .detail-body { padding: 0 var(--space-3) var(--space-3); }
.empty { padding: var(--space-3) 0; }
.btn, .step-nav button, .step-nav a { min-height: var(--control-height); padding: 5px var(--space-3); border-radius: var(--radius-sm); font-size: var(--text-sm); }
.btn { background: var(--accent); border-color: var(--accent); }
.btn:hover:not(:disabled) { background: var(--accent-hover); }
.btn.secondary { background: var(--surface-raised); color: var(--accent); }
.btn.secondary:hover:not(:disabled) { background: var(--surface-selected); }
.btn.danger { background: var(--surface-raised); color: var(--status-error); }
.btn.danger:hover:not(:disabled) { background: var(--status-error-bg); }
.btn.compact, .selected-sample-order .btn { min-height: var(--control-small); padding: 3px var(--space-2); }
.step-nav { gap: var(--space-1); margin-bottom: var(--space-3); }
.field-grid { gap: var(--space-3); grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); }
.control { gap: var(--space-1); }
.control > span:first-child { font-size: var(--text-sm); font-weight: 600; }
.control input:not([type=checkbox]), .control select, .control textarea, .inline-input,
.control-editor input, .control-editor select, [aria-label="Access settings"] select {
  min-height: var(--control-height); padding: 5px var(--space-2); border: 1px solid var(--control-line);
  border-radius: var(--radius-sm); background: var(--surface-raised); color: var(--ink); font-size: var(--text-sm);
}
.control textarea { min-height: 64px; }
:root :is(input, select, textarea, button, a, summary, [tabindex]):focus-visible {
  outline: 2px solid var(--focus); outline-offset: 2px;
}
.check { gap: 6px; min-height: 24px; }
.check input { width: 16px; height: 16px; margin: 0; accent-color: var(--accent); }
.choices { gap: var(--space-1); }
.choices label { padding: 6px var(--space-2); font-size: var(--text-sm); }
.field-row { padding: 6px 0; gap: var(--space-2); }
.namespace { margin: var(--space-2) 0; }
.graph-host { margin: var(--space-2) 0; }
/* No access sidebar remains in the anticipated graph: use its full available width. */
.graph-access-layout { grid-template-columns: minmax(0, 1fr); gap: var(--space-3); }
.report-table { font-size: var(--text-sm); }
.report-table th, .report-table td { padding: 6px var(--space-2); }
.report-table th { font-weight: 600; }
.report-table tbody tr:hover td { background: var(--surface-selected); }
.report-filters { gap: var(--space-2); margin: var(--space-2) 0; }
.report-context { margin-top: var(--space-2); }
.sample-picker input[type="search"], .sample-picker select {
  min-height: var(--control-height); padding: 5px var(--space-2); border: 1px solid var(--control-line);
  border-radius: var(--radius-sm); background: var(--surface-raised); color: var(--ink); font-size: var(--text-sm);
}
.sample-picker input[type="search"] { width: min(100%, 320px); }
.sample-picker .report-table { min-width: 0; }
.sample-picker .report-table :is(th, td):first-child { width: 60px; min-width: 60px; }
.sample-picker .report-table input[type="checkbox"] { width: 16px; height: 16px; margin: 0; accent-color: var(--accent); }
.selected-sample-order li { padding: 2px var(--space-2); }
.selected-sample-order .btn { min-height: 24px; padding: 2px var(--space-2); font-size: var(--text-xs); }
.badge, .readiness-badge, .access-page .access-badge {
  display: inline-block; padding: 1px 7px; border-radius: var(--radius-pill);
  font-size: var(--text-xs); line-height: 1.6;
}
.readiness-ready, .badge.ready { color: var(--status-ready); background: var(--status-ready-bg); }
.readiness-not_ready, .badge.alert { color: var(--status-error); background: var(--status-error-bg); }
.readiness-unknown { color: var(--status-neutral); background: var(--status-neutral-bg); }
.readiness-pending, .badge.pending { color: var(--status-pending); background: var(--status-pending-bg); }
.readiness-cards { gap: var(--space-2); margin: var(--space-2) 0; }
.readiness-card { padding: var(--space-2); border-radius: var(--radius); }
.readiness-card h3, .readiness-card h4 { font-size: var(--text-sm); margin-bottom: var(--space-1); }
.error, .notice, .validity-banner { padding: var(--space-2) var(--space-3); margin: var(--space-2) 0; border-radius: var(--radius); }
.control-editor th, .control-editor td, .control-comparison th, .control-comparison td { padding: 6px var(--space-2); font-size: var(--text-sm); }
[aria-label="Access settings"] { overflow: visible; }
[aria-label="Access settings"] .access-settings__table { width: 990px; min-width: 0; max-width: 100%; table-layout: fixed; font-size: var(--text-sm); }
[aria-label="Access settings"] .access-settings__table[data-access-categories="3"] { width: 780px; }
[aria-label="Access settings"] .access-settings__table :is(th, td) { height: 33px; padding: 4px 6px; vertical-align: middle; white-space: nowrap; }
[aria-label="Access settings"] .access-settings__table th:first-child { width: 150px; }
[aria-label="Access settings"] .access-settings__table tbody th { position: static; }
.access-settings__heading, .access-settings__control { display: flex; align-items: center; gap: 4px; min-width: 0; }
.access-settings__group { min-width: 40px; }
[aria-label="Access settings"] .access-settings__control > select { width: 72px; min-height: 24px; height: 24px; padding: 1px 4px; font-size: var(--text-xs); }
[aria-label="Access settings"] .access-settings__default > select { width: 48px; }

/* Higher specificity lets the shared scale apply to the separately loaded schema/assistant styles. */
.schema-layout .subheading { margin: var(--space-3) 0 var(--space-2); }
.schema-layout .schema-table th, .schema-layout .schema-table td { padding: 5px var(--space-2); font-size: var(--text-sm); }
.schema-layout .schema-table input:not([type=checkbox]), .schema-layout .schema-table select { min-height: var(--control-height); padding: 5px 6px; border-color: var(--control-line); }
.schema-layout .schema-table input[type=checkbox] { width: 16px; height: 16px; }
.schema-layout .control input:not([type=checkbox]), .schema-layout .control select, .schema-layout .control textarea { padding: 5px var(--space-2); border-color: var(--control-line); }
.schema-layout :is(button, input, select, textarea):focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; }
.schema-layout #schema-inventory > .btn, .schema-layout #history-list > .btn { margin: var(--space-2) var(--space-2) var(--space-2) 0; }
.schema-layout #schema-inventory > span, .schema-layout #history-list > span { margin-right: var(--space-2); }
.schema-layout .schema-table td:last-child > details { display: inline-block; vertical-align: middle; margin: 0 0 0 var(--space-1); }
.schema-layout .schema-table td:last-child > details > summary { padding: var(--space-1) 6px; }
.schema-layout .schema-table td:last-child > details[open] { display: block; margin: var(--space-1) 0 0; }
.schema-layout .assertion { padding: var(--space-3); margin: var(--space-2) 0; }
.schema-layout .inventory-row, .schema-layout .history-row { padding: 6px 0; gap: var(--space-2); }
.schema-layout .chip { font-size: var(--text-xs); border-radius: var(--radius-pill); }
.app-shell:has(.assistant-sidebar) { grid-template-columns: minmax(0, 1fr) 20rem; }
.app-shell .assistant-sidebar { font-size: var(--text-sm); }
.assistant-sidebar .assistant-title { font-size: var(--text-body); }
.assistant-sidebar .assistant-head { min-height: 50px; padding: var(--space-2) var(--space-3); }
.assistant-sidebar .assistant-chats { flex-basis: 8rem; padding: var(--space-1); }
.assistant-sidebar .assistant-message { padding: 6px var(--space-2); border-radius: var(--radius); }
.assistant-sidebar .assistant-messages { padding: var(--space-2); gap: var(--space-1); }
.assistant-sidebar .assistant-form { padding: var(--space-2); }
.assistant-sidebar .assistant-form textarea { padding: 6px var(--space-2); border-color: var(--control-line); font-size: var(--text-sm); }
.assistant-sidebar :is(.assistant-chat-meta, .assistant-chat-delete, .assistant-note, .assistant-context, .assistant-compaction-label) { font-size: var(--text-xs); }
.assistant-sidebar .assistant-chat-delete { min-width: 24px; min-height: 24px; }
.layout .full-graph { padding: var(--space-3); border-radius: var(--radius); margin: var(--space-2) 0; }
.layout .full-graph__search { min-height: var(--control-height); padding: 5px var(--space-2); font-size: var(--text-sm); }
.layout .full-graph__card { min-height: 56px; padding: 5px 6px; border-radius: var(--radius-sm); }
.layout .full-graph__details { gap: var(--space-2) var(--space-3); min-height: var(--control-height); padding: 6px var(--space-2); font-size: var(--text-sm); }
@media (max-width: 899px) {
  .app-shell:has(.assistant-sidebar) { display: block; }
  .assistant-sidebar .assistant-chats { flex-basis: 5.5rem; }
}
@media (max-width: 650px) {
  .layout { padding-inline: var(--space-2); }
  .header-inner { padding: var(--space-2) var(--space-3); }
  .panel, .study-card { padding: var(--space-3); }
  .btn, .step-nav a, .step-nav button { min-height: 36px; }
}

.access-settings__template { max-width: 18rem; margin-bottom: var(--space-2); }
.row-access__rules { font-size: var(--text-xs); }

.clinical-control { justify-content: flex-end; }
.schema-fields { width: 100%; border-collapse: collapse; }
.schema-fields .field-row { display: table-row; padding: 0; border: 0; }
.schema-fields :is(th, td) { padding: 6px var(--space-2); text-align: left; border-bottom: 1px solid var(--line); }
#auth-message:empty { display: none; }

.study-save { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: var(--space-2); max-width: 100%; }
.study-save [data-save-blockers] { overflow-wrap: anywhere; font-size: var(--text-sm); }
.study-save [data-save-blockers]:empty { display: none; }
.study-save__error { grid-column: 1 / -1; margin: 0; }
.topline > .flow:has(.study-save) { align-items: flex-start; }
[aria-label="Anticipated graph"] .graph-host { margin-top: 0; }
[aria-label="Anticipated graph"] .lineage-graph { padding-top: 0; }
[aria-label="Anticipated graph"] .lineage-graph__sample:first-child { padding-top: 0; }
@media (max-width: 650px) { .study-save { grid-template-columns: 1fr; } .study-save > button { justify-self: start; } }

.replicate-table { border-collapse: collapse; width: 100%; font-size: var(--text-sm, .87rem); }
.replicate-table :is(th, td) { padding: 6px var(--space-2, 8px); border-bottom: 1px solid #dce5e9; text-align: left; vertical-align: top; }
.replicate-table thead th { position: static; background: var(--surface, #f6faff); white-space: nowrap; }
.replicate-table th[scope="row"] { font-weight: 500; overflow-wrap: anywhere; }
.replicate-table [data-validity="invalid"], .replicate-disposition [data-validity="invalid"] { color: var(--status-error, #9f1239); }
.replicate-table [data-validity="valid"], .replicate-disposition [data-validity="valid"] { color: var(--status-ready, #14532d); }

.control-comparison tr[data-control-result=matched] { color: var(--status-ready); background: var(--status-ready-bg); }
.control-comparison tr[data-control-result=error] { color: var(--status-error); background: var(--status-error-bg); }

.control-grid { margin-top: 1rem; border: 1px solid var(--line, #d0d7de); border-radius: var(--radius-md, 6px); background: white; }
.control-grid__title { margin: 0; padding: .5rem .75rem; font-size: var(--text-md, 15px); background: var(--surface-muted, #f3f5f7); border-bottom: 1px solid var(--line, #d0d7de); border-radius: var(--radius-md, 6px) var(--radius-md, 6px) 0 0; }
.control-grid__table { overflow-x: auto; }
.control-grid table { width: auto; border-collapse: collapse; }
.control-grid th { white-space: nowrap; font-weight: 600; color: var(--muted, #526273); border-bottom: 1px solid var(--line, #d0d7de); }
.control-grid tbody tr + tr td { border-top: 1px solid var(--line-soft, #eaeef2); }
.control-grid td { vertical-align: top; }
.control-grid__count { text-align: center; width: 6.5rem; }
.control-grid td.control-grid__count input { width: 5rem; min-width: 0; text-align: center; }
.control-grid__batch { width: 22rem; }
.control-grid__batch-line { display: flex; align-items: center; gap: .4rem; }
.control-grid__batch-line input { flex: 1 1 12rem; min-width: 7rem; max-width: 14rem; font-weight: 600; }
.control-grid__batch-line .btn { flex: none; padding: 2px 8px; font-size: var(--text-xs, 12px); }
.control-grid__remove { color: #9b2828; }
.control-grid input::placeholder { color: var(--muted, #526273); opacity: 1; }
.control-grid input[aria-invalid="true"] { border-color: #b42318; }
.control-grid__footer { padding: .5rem .75rem; border-top: 1px solid var(--line-soft, #eaeef2); }
.control-grid__table:has(tbody:empty) { display: none; }
.control-grid__table:has(tbody:empty) + .control-grid__footer { border-top: 0; }

.category-publication { display: inline-flex; flex-wrap: wrap; gap: 4px; vertical-align: middle; }
.publication-token { display: inline-block; padding: 1px 5px; border: 1px solid #cbd5df; border-radius: 4px; font-size: var(--text-xs, .75rem); white-space: nowrap; }
.publication-unpublished, .publication-unknown { color: var(--muted, #62788b); background: transparent; }
.publication-published { color: #fff; background: var(--status-ready, #14532d); border-color: var(--status-ready, #14532d); }
.publication-held { color: var(--status-error, #9f1239); background: #fff1f2; border-color: #fda4af; }

.annotation-publishing { display: inline-flex; flex-wrap: wrap; gap: var(--space-2, 8px); align-items: center; }
.publication-paused { font-size: var(--text-xs, .75rem); padding: 2px 6px; border-radius: 4px; color: #854d0e; background: #fef9c3; border: 1px solid #fde047; }
.annotation-publishing [role="alert"] { color: var(--status-error, #9f1239); }
