/* ── reset ────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
[hidden] { display: none !important; }


@font-face {
  font-family: "AsimovHeader";
  src: url("./fonts/ITCBenguiatStdBoldCn.OTF") format("opentype");
  font-weight: 700;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "AsimovBody";
  src: url("./fonts/ITCBenguiatStdBookCn.OTF") format("opentype");
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

@font-face {
  font-family: "AsimovBody";
  src: url("./fonts/ITCBenguiatStdBookCnIt.OTF") format("opentype");
  font-weight: 400;
  font-style: italic;
  font-display: swap;
}

/* ── tokens ───────────────────────────────────────────────── */
:root {
  --bg:         #f5f6f7;
  --surface:    #ffffff;
  --panel:      #eef1f4;
  --card:       #ffffff;
  --border:     #e2e4e8;
  --panel-strong: #d8dde4;
  --text:       #1a1d23;
  --text-muted: #6b7280;
  --muted:      var(--text-muted);
  --brand:      #ea580c;
  --instance-accent: #3e63dd;
  --brand-strong: #c2410c;
  --brand-soft: #fff0e7;
  --focus-ring: rgba(234, 88, 12, 0.28);
  --overlay:    rgba(15, 23, 42, 0.22);
  --shadow-elevated: 0 10px 22px rgba(15, 23, 42, 0.16);
  --section-shadow: none;
  --meas-section-shadow: 0 2px 8px rgba(0, 0, 0, 0.07);
  --input-bg: #ffffff;
  --input-bg-muted: #f8fafc;
  --canvas-bg: #ffffff;
  --canvas-grid: rgba(226, 228, 232, 0.72);
  --canvas-overlay: rgba(248, 250, 252, 0.76);
  --chrome-muted: #7b8492;
  --chrome-hover: #334155;
  --chrome-active: #111827;
  --danger:     #b91c1c;
  --danger-soft: #fee2e2;
  --radius:     6px;
  --header-h:   0px;
  --sidebar-w:  56px;
  --panel-w:    284px;
  --page-gutter: clamp(6px, 0.75vw, 12px);
  --page-content-gutter: var(--page-gutter);
  --detail-content-gutter: var(--page-gutter);
  --page-padding-block: clamp(10px, 1vw, 16px);
  --pane-gutter: clamp(6px, 0.6vw, 10px);
  --project-side-rail-min: 280px;
  --project-side-rail-fr: 23fr;
  --project-main-fr: 77fr;
  --app-body-font: system-ui, sans-serif;
  /* Switch to "AsimovBody", Georgia, serif; to retry the thinner body font. */
  color-scheme: light;
}

/* Native controls (select dropdowns, date pickers, scrollbars) follow the
   active theme's brightness so they don't render light-on-dark. */
:root[data-ui-theme="mocha"],
:root[data-ui-theme="dark"],
:root[data-ui-theme="dark-orange"],
:root[data-ui-theme="ubuntu"],
:root[data-ui-theme="dark-contrast"],
:root[data-ui-theme="noir"] {
  color-scheme: dark;
}

:root[data-ui-theme="light-vivid"] {
  --bg:           #f0f4f9;
  --surface:      #fafcff;
  --panel:        #e4ecf5;
  --card:         #ffffff;
  --border:       #c6d4e6;
  --panel-strong: #aabdd4;
  --text:         #141a24;
  --text-muted:   #576a80;
  --muted:        var(--text-muted);
  --brand:        #ea580c;
  --brand-strong: #c2410c;
  --brand-soft:   #fff0e7;
  --focus-ring:   rgba(234, 88, 12, 0.28);
  --overlay:      rgba(14, 24, 44, 0.22);
  --shadow-elevated: 0 10px 22px rgba(14, 28, 56, 0.18);
  --input-bg:         #ffffff;
  --input-bg-muted:   #f0f5fb;
  --canvas-bg:        #f5f9ff;
  --canvas-grid:      rgba(155, 185, 215, 0.55);
  --canvas-overlay:   rgba(240, 246, 253, 0.76);
  --chrome-muted:     #7a8ea4;
  --chrome-hover:     #2a3d55;
  --chrome-active:    #141a24;
}

/* ── slate tokens (Radix slate + indigo) ─────────────────── */
:root[data-ui-theme="slate"] {
  --bg:              #f4f5f8;
  --surface:         #ffffff;
  --panel:           #ededf1;
  --card:            #ffffff;
  --border:          #d9d9e2;
  --panel-strong:    #c8c9d4;
  --text:            #1c2024;
  --text-muted:      #60646c;
  --muted:           var(--text-muted);
  --brand:           #3e63dd;
  --brand-strong:    #3358d4;
  --brand-soft:      #edf2fe;
  --focus-ring:      rgba(62, 99, 221, 0.28);
  --overlay:         rgba(28, 32, 36, 0.20);
  --shadow-elevated: 0 10px 22px rgba(28, 32, 36, 0.16);
  --section-shadow: 0 2px 10px rgba(28, 32, 36, 0.08);
  --input-bg:        #ffffff;
  --input-bg-muted:  #f4f5f8;
  --canvas-bg:       #ffffff;
  --canvas-grid:     rgba(185, 187, 198, 0.55);
  --canvas-overlay:  rgba(244, 245, 248, 0.76);
  --chrome-muted:    #8b8d98;
  --chrome-hover:    #3a3f48;
  --chrome-active:   #1c2024;
}

/* ── slate component overrides ───────────────────────────── */
body.theme-slate #sidebar {
  background: #ffffff;
  border-right-color: #c4c6d2;
}
body.theme-slate #project-panel {
  background: #ffffff;
  border-right-color: #cccdd8;
}
body.theme-slate #project-panel-hd {
  background: #ebebf2;
  border-bottom-color: #c8cad6;
}
body.theme-slate #pv-header,
body.theme-slate .hub-head {
  background: #f0f1f5;
  border-bottom-color: #cccdd8;
}
body.theme-slate .asset-group-header {
  background: #e2e4ec;
  border-bottom-color: #bcbece;
}
body.theme-slate .meas-bucket-batch-header {
  background: #e2e4ec;
  border-bottom-color: #bcbed0;
}
body.theme-slate .meas-bucket-card {
  background: #ffffff;
  border-color: #c4c6d4;
  box-shadow:
    0 1px 3px rgba(28, 32, 60, 0.07),
    inset 0 3px 12px rgba(28, 32, 60, 0.07);
}
body.theme-slate .metric-box {
  background: #ffffff;
  border-color: #c4c6d4;
  box-shadow: 0 2px 8px rgba(28, 32, 36, 0.07);
}
body.theme-slate .meas-bucket-batch {
  border-color: #c0c2d0;
}
body.theme-slate .project-entry:hover {
  background: #eaecf3;
}
/* Measurement & experiment: list panel vs detail panel */
body.theme-slate #meas-list,
body.theme-slate #exp-list,
body.theme-slate #samples-list {
  background: #ededf1;
  border-color: #c4c6d2;
}
body.theme-slate #meas-list-hd,
body.theme-slate #samples-list-hd {
  background: #e2e4ec;
  border-bottom-color: #bcbece;
}
body.theme-slate #exp-list-hd {
  background: #ededf1;
  border-bottom-color: #bcbece;
}
body.theme-slate .meas-row.active,
body.theme-slate .exp-row.active,
body.theme-slate .sample-row.active {
  background: #e1e9ff;
}
body.theme-slate #meas-detail,
body.theme-slate #samples-detail,
body.theme-slate #exp-detail {
  background: #f7f8fc;
}
body.theme-slate #panel-measurements {
  background: #f7f8fc;
}
/* Cards inside detail: elevated white */
body.theme-slate .notes-card {
  background: #ffffff;
  border-color: #c4c6d4;
  box-shadow: 0 2px 10px rgba(28, 32, 36, 0.08);
}
body.theme-slate .meas-buckets-section {
  background: #ffffff;
  border-color: #c4c6d4;
  box-shadow: 0 2px 10px rgba(28, 32, 36, 0.08);
}
body.theme-slate .notes-card-header {
  background: #eaedf3;
  border-bottom-color: #c4c6d4;
}
body.theme-slate .meas-buckets-section-header,
body.theme-slate .meas-library-drawer-head {
  background: #eaedf3;
  border-bottom-color: #c4c6d4;
}
body.theme-slate .meas-meta-chip {
  background: #eeeef3;
  border-color: #c4c6d4;
}
body.theme-slate .meas-plot-shell {
  background: #ffffff;
  border-color: #c4c6d4;
  box-shadow: 0 2px 10px rgba(28, 32, 36, 0.08);
}
body.theme-slate .meas-plot-shell-header {
  background: #eaedf3;
  border-bottom-color: #c4c6d4;
}
body.theme-slate .meas-meta-rail {
  background: #ffffff;
  border-color: #c4c6d4;
  box-shadow: 0 2px 10px rgba(28, 32, 36, 0.08);
}
body.theme-slate .meas-meta-rail-header {
  background: #eaedf3;
  border-bottom-color: #c4c6d4;
}
/* Project view tab content area */
body.theme-slate .tab-panel,
body.theme-slate #project-list {
  background: #f4f5f8;
}
/* References & Assets: list vs detail */
body.theme-slate #assets-list,
body.theme-slate #references-list {
  background: #ededf1;
  border-right-color: #c4c6d2;
}
body.theme-slate #assets-list-hd,
body.theme-slate #references-list-hd {
  background: #e2e4ec;
  border-bottom-color: #bcbece;
}
body.theme-slate .asset-row.active,
body.theme-slate .reference-row.active {
  background: #e1e9ff;
}
body.theme-slate #assets-detail,
body.theme-slate #references-detail {
  background: #f7f8fc;
}
/* Resources view: tree/list nav vs detail */
body.theme-slate .resources-tree-pane,
body.theme-slate .resources-tree-pane .resources-pane,
body.theme-slate .resources-list-pane .resources-pane {
  background: #ededf1;
}
body.theme-slate .resources-detail-pane,
body.theme-slate .resources-detail-pane .resources-pane {
  background: #f7f8fc;
}
/* Elevated cards: white surface + shadow */
body.theme-slate .reference-detail-card {
  background: #ffffff;
  border-color: #c4c6d4;
  box-shadow: 0 2px 10px rgba(28, 32, 36, 0.08);
}
body.theme-slate .exp-focus-card {
  background: #ffffff;
  border-color: #c4c6d4;
  box-shadow: 0 2px 10px rgba(28, 32, 36, 0.08);
}
body.theme-slate .evidence-item {
  background: #ffffff;
  border-color: #c4c6d4;
  box-shadow: 0 2px 8px rgba(28, 32, 36, 0.07);
}
body.theme-slate .evidence-item-hd {
  background: #eaedf3;
  border-bottom: 1px solid #c4c6d4;
}
body.theme-slate .resources-detail-meta div {
  background: #ffffff;
  border-color: #c4c6d4;
  box-shadow: 0 1px 4px rgba(28, 32, 36, 0.06);
}
body.theme-slate .resources-preview-shell {
  background: #ffffff;
  border-color: #c4c6d4;
  box-shadow: 0 2px 10px rgba(28, 32, 36, 0.08);
}
body.theme-slate .asset-preview-card {
  background: #f0f1f5;
  border-color: #c4c6d4;
  box-shadow: 0 2px 10px rgba(28, 32, 36, 0.08);
}
body.theme-slate .asset-detail-group-value {
  background: #eeeef3;
  border-color: #c4c6d4;
}

/* ── mocha tokens (Catppuccin Mocha) ─────────────────────── */
:root[data-ui-theme="mocha"] {
  --bg:              #1e1e2e;
  --surface:         #313244;
  --panel:           #181825;
  --card:            #313244;
  --border:          #45475a;
  --panel-strong:    #585b70;
  --text:            #cdd6f4;
  --text-muted:      #a6adc8;
  --muted:           var(--text-muted);
  --brand:           #cba6f7;
  --brand-strong:    #b4befe;
  --brand-soft:      rgba(203, 166, 247, 0.14);
  --focus-ring:      rgba(203, 166, 247, 0.38);
  --overlay:         rgba(0, 0, 0, 0.58);
  --shadow-elevated: 0 12px 24px rgba(0, 0, 0, 0.52);
  --section-shadow: 0 4px 16px rgba(0, 0, 0, 0.36);
  --input-bg:        #313244;
  --input-bg-muted:  #181825;
  --canvas-bg:       #313244;
  --canvas-grid:     rgba(88, 91, 112, 0.44);
  --canvas-overlay:  rgba(24, 24, 37, 0.80);
  --chrome-muted:    #7f849c;
  --chrome-hover:    #cdd6f4;
  --chrome-active:   #ffffff;
  --danger:          #f38ba8;
  --danger-soft:     rgba(243, 139, 168, 0.16);
}

/* ── mocha component overrides ───────────────────────────── */
body.theme-mocha #sidebar {
  background: #11111b;
  border-right-color: #313244;
}
body.theme-mocha #project-panel {
  background: #11111b;
  border-right-color: #45475a;
}
body.theme-mocha #project-panel-hd {
  background: #11111b;
  border-bottom-color: #313244;
}
body.theme-mocha #pv-header,
body.theme-mocha .hub-head {
  background: #1e1e2e;
  border-bottom-color: #45475a;
}
body.theme-mocha .asset-group-header {
  background: #45475a;
  border-bottom-color: #585b70;
}
body.theme-mocha .meas-bucket-batch-header {
  background: #45475a;
  border-bottom-color: #585b70;
}
body.theme-mocha .meas-bucket-card {
  background: #222331;
  border-color: #585b70;
  box-shadow:
    0 2px 8px rgba(0, 0, 0, 0.32),
    inset 0 3px 12px rgba(0, 0, 0, 0.38);
}
body.theme-mocha .metric-box {
  background: #313244;
  border-color: #585b70;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.32);
}
body.theme-mocha .meas-bucket-batch {
  border-color: #45475a;
}
body.theme-mocha .project-entry:hover {
  background: #1e1e2e;
}
/* Measurement & experiment: list panel vs detail panel */
body.theme-mocha #meas-list,
body.theme-mocha #exp-list,
body.theme-mocha #samples-list {
  background: #181825;
  border-color: #313244;
}
body.theme-mocha #meas-list-hd,
body.theme-mocha #samples-list-hd {
  background: #11111b;
  border-bottom-color: #313244;
}
body.theme-mocha #exp-list-hd {
  background: #181825;
  border-bottom-color: #313244;
}
body.theme-mocha .meas-row.active,
body.theme-mocha .exp-row.active,
body.theme-mocha .sample-row.active {
  background: rgba(203, 166, 247, 0.12);
}
body.theme-mocha #meas-detail,
body.theme-mocha #exp-detail,
body.theme-mocha #samples-detail {
  background: #16161e;
}
body.theme-mocha #panel-measurements {
  background: #16161e;
}
/* Cards inside detail: surface0 elevated above base bg */
body.theme-mocha .notes-card {
  background: #313244;
  border-color: #585b70;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.36);
}
body.theme-mocha .meas-buckets-section {
  background: #313244;
  border-color: #585b70;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.36);
}
body.theme-mocha .notes-card-header {
  background: #45475a;
  border-bottom-color: #585b70;
}
body.theme-mocha .meas-buckets-section-header,
body.theme-mocha .meas-library-drawer-head {
  background: #45475a;
  border-bottom-color: #585b70;
}
body.theme-mocha .meas-meta-chip {
  background: #313244;
  border-color: #45475a;
}
body.theme-mocha .meas-plot-shell {
  background: #313244;
  border-color: #585b70;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.36);
}
body.theme-mocha .meas-plot-shell-header {
  background: #45475a;
  border-bottom-color: #585b70;
}
body.theme-mocha .meas-meta-rail {
  background: #313244;
  border-color: #585b70;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.36);
}
body.theme-mocha .meas-meta-rail-header {
  background: #45475a;
  border-bottom-color: #585b70;
}
/* Project view tab content area */
body.theme-mocha .tab-panel,
body.theme-mocha #project-list {
  background: #1e1e2e;
}
/* References & Assets: list vs detail */
body.theme-mocha #assets-list,
body.theme-mocha #references-list {
  background: #181825;
  border-right-color: #313244;
}
body.theme-mocha #assets-list-hd,
body.theme-mocha #references-list-hd {
  background: #11111b;
  border-bottom-color: #313244;
}
body.theme-mocha .asset-row.active,
body.theme-mocha .reference-row.active {
  background: rgba(203, 166, 247, 0.12);
}
body.theme-mocha #assets-detail,
body.theme-mocha #references-detail {
  background: #1e1e2e;
}
/* Resources view: tree/list nav vs detail */
body.theme-mocha .resources-tree-pane,
body.theme-mocha .resources-tree-pane .resources-pane,
body.theme-mocha .resources-list-pane .resources-pane {
  background: #181825;
}
body.theme-mocha .resources-detail-pane,
body.theme-mocha .resources-detail-pane .resources-pane {
  background: #1e1e2e;
}
/* Elevated cards: surface0 + shadow */
body.theme-mocha .reference-detail-card {
  background: #313244;
  border-color: #585b70;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.36);
}
body.theme-mocha .exp-focus-card {
  background: #313244;
  border-color: #585b70;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.36);
}
body.theme-mocha .evidence-item {
  background: #313244;
  border-color: #585b70;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.32);
}
body.theme-mocha .evidence-item-hd {
  background: #45475a;
  border-bottom: 1px solid #585b70;
}
body.theme-mocha .resources-detail-meta div {
  background: #313244;
  border-color: #45475a;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28);
}
body.theme-mocha .resources-preview-shell {
  background: #313244;
  border-color: #585b70;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.36);
}
body.theme-mocha .asset-preview-card {
  background: #313244;
  border-color: #585b70;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.36);
}
body.theme-mocha .asset-detail-group-value {
  background: #45475a;
  border-color: #585b70;
}

/* ── Ember (dark-orange) component overrides ──────────────── */
body.theme-dark-orange #sidebar {
  background: #0a0705;
  border-right-color: #32231b;
}
body.theme-dark-orange #project-panel {
  background: #0a0705;
  border-right-color: #32231b;
}
body.theme-dark-orange #project-panel-hd {
  background: #0a0705;
  border-bottom-color: #32231b;
}
body.theme-dark-orange #pv-header,
body.theme-dark-orange .hub-head {
  background: #120d0b;
  border-bottom-color: #32231b;
}
body.theme-dark-orange .asset-group-header {
  background: #221710;
  border-bottom-color: #32231b;
}
body.theme-dark-orange .meas-bucket-batch-header {
  background: #221710;
  border-bottom-color: #32231b;
}
body.theme-dark-orange .meas-bucket-card {
  background: #100c09;
  border-color: #32231b;
  box-shadow:
    0 2px 8px rgba(0, 0, 0, 0.38),
    inset 0 3px 12px rgba(0, 0, 0, 0.42);
}
body.theme-dark-orange .metric-box {
  background: #1a130f;
  border-color: #32231b;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.36);
}
body.theme-dark-orange .meas-bucket-batch {
  border-color: #32231b;
}
body.theme-dark-orange .project-entry:hover {
  background: #120d0b;
}
/* Measurement & experiment: list panel vs detail panel */
body.theme-dark-orange #meas-list,
body.theme-dark-orange #exp-list,
body.theme-dark-orange #samples-list {
  background: #0d0907;
  border-color: #32231b;
}
body.theme-dark-orange #meas-list-hd,
body.theme-dark-orange #samples-list-hd {
  background: #0a0705;
  border-bottom-color: #32231b;
}
body.theme-dark-orange #exp-list-hd {
  background: #0d0907;
  border-bottom-color: #32231b;
}
body.theme-light-vivid #panel-experiments {
  --exp-list-surface: color-mix(in oklab, #fffcf0 88%, #f5e3b0);
}
body.theme-light-vivid #panel-measurements {
  --meas-list-surface: color-mix(in oklab, #fffcf0 88%, #f5e3b0);
}
body.theme-dark-orange .meas-row.active,
body.theme-dark-orange .exp-row.active,
body.theme-dark-orange .sample-row.active {
  background: rgba(232, 106, 28, 0.14);
}
body.theme-dark-orange #meas-detail,
body.theme-dark-orange #exp-detail,
body.theme-dark-orange #samples-detail {
  background: #090604;
}
body.theme-dark-orange #panel-measurements {
  background: #090604;
}
/* Cards inside detail */
body.theme-dark-orange .notes-card {
  background: #1a130f;
  border-color: #32231b;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.40);
}
body.theme-dark-orange .meas-buckets-section {
  background: #1a130f;
  border-color: #32231b;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.40);
}
body.theme-dark-orange .notes-card-header {
  background: #221710;
  border-bottom-color: #32231b;
}
body.theme-dark-orange .meas-buckets-section-header,
body.theme-dark-orange .meas-library-drawer-head {
  background: #221710;
  border-bottom-color: #32231b;
}
body.theme-dark-orange .meas-meta-chip {
  background: #1a130f;
  border-color: #32231b;
}
body.theme-dark-orange .meas-plot-shell {
  background: #1a130f;
  border-color: #32231b;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.40);
}
body.theme-dark-orange .meas-plot-shell-header {
  background: #221710;
  border-bottom-color: #32231b;
}
body.theme-dark-orange .meas-meta-rail {
  background: #1a130f;
  border-color: #32231b;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.40);
}
body.theme-dark-orange .meas-meta-rail-header {
  background: #221710;
  border-bottom-color: #32231b;
}
/* Project view tab content area */
body.theme-dark-orange .tab-panel,
body.theme-dark-orange #project-list {
  background: #120d0b;
}
/* References & Assets: list vs detail */
body.theme-dark-orange #assets-list,
body.theme-dark-orange #references-list {
  background: #0d0907;
  border-right-color: #32231b;
}
body.theme-dark-orange #assets-list-hd,
body.theme-dark-orange #references-list-hd {
  background: #0a0705;
  border-bottom-color: #32231b;
}
body.theme-dark-orange .asset-row.active,
body.theme-dark-orange .reference-row.active {
  background: rgba(232, 106, 28, 0.14);
}
body.theme-dark-orange #assets-detail,
body.theme-dark-orange #references-detail {
  background: #120d0b;
}
/* Resources view: tree/list nav vs detail */
body.theme-dark-orange .resources-tree-pane,
body.theme-dark-orange .resources-tree-pane .resources-pane,
body.theme-dark-orange .resources-list-pane .resources-pane {
  background: #0d0907;
}
body.theme-dark-orange .resources-detail-pane,
body.theme-dark-orange .resources-detail-pane .resources-pane {
  background: #120d0b;
}
/* Elevated cards */
body.theme-dark-orange .reference-detail-card {
  background: #1a130f;
  border-color: #32231b;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.40);
}
body.theme-dark-orange .exp-focus-card {
  background: #1a130f;
  border-color: #32231b;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.40);
}
body.theme-dark-orange .evidence-item {
  background: #1a130f;
  border-color: #32231b;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.36);
}
body.theme-dark-orange .evidence-item-hd {
  background: #221710;
  border-bottom: 1px solid #32231b;
}
body.theme-dark-orange .resources-detail-meta div {
  background: #1a130f;
  border-color: #32231b;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.32);
}
body.theme-dark-orange .resources-preview-shell {
  background: #1a130f;
  border-color: #32231b;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.40);
}
body.theme-dark-orange .asset-preview-card {
  background: #1a130f;
  border-color: #32231b;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.40);
}
body.theme-dark-orange .asset-detail-group-value {
  background: #221710;
  border-color: #32231b;
}

/* ── light-vivid component overrides ─────────────────────── */
/* App header: warm cream — contrasts with the cool-blue body */

/* Sidebar: deeper saturated blue, distinct from panel */
body.theme-light-vivid #sidebar {
  background: color-mix(in oklab, #fffcf0 88%, #f5e3b0);
  border-right-color: #e2cfa0;
}

body.theme-light-vivid #project-panel {
  background: color-mix(in oklab, #fffcf0 88%, #f5e3b0);
  border-right-color: #e2cfa0;
}

/* Panel header strip */
body.theme-light-vivid #project-panel-hd {
  background: color-mix(in oklab, #fffcf0 88%, #f5e3b0);
  border-bottom-color: #e2cfa0;
}

/* Project view header */
body.theme-light-vivid #pv-header,
body.theme-light-vivid .hub-head {
  background: #eaf3fc;
  border-bottom-color: #bdd2e8;
}

/* Asset/resource section headers */
body.theme-light-vivid .asset-group-header {
  background: #d4e6f4;
  border-bottom-color: #a8c6de;
}


/* Measurement batch header strip */
body.theme-light-vivid .meas-bucket-batch-header {
  background: #d8e8f5;
  border-bottom-color: #aecadf;
}

body.theme-light-vivid .meas-bucket-card {
  background: #ffffff;
  border-color: #bad0e4;
  box-shadow:
    0 1px 3px rgba(14, 36, 80, 0.08),
    inset 0 3px 12px rgba(14, 36, 80, 0.07);
}
body.theme-light-vivid .meas-buckets-section {
  background: #ffffff;
  border-color: #bad0e4;
  box-shadow: 0 2px 10px rgba(14, 36, 72, 0.08);
}
body.theme-light-vivid .meas-buckets-section-header,
body.theme-light-vivid .meas-library-drawer-head {
  background: #e8f2fb;
  border-bottom-color: #bcd0e8;
}

body.theme-light-vivid .metric-box {
  background: #ffffff;
  border-color: #bad0e4;
  box-shadow: 0 2px 8px rgba(14, 36, 72, 0.07);
}

body.theme-light-vivid .meas-bucket-batch {
  border-color: #b6ccdf;
}
body.theme-light-vivid #meas-detail,
body.theme-light-vivid #exp-detail,
body.theme-light-vivid #samples-detail {
  background: #dce8f5;
}
body.theme-light-vivid #panel-measurements {
  background: #dce8f5;
}

/* Project entries: slightly more visible hover */
body.theme-light-vivid .project-entry:hover {
  background: color-mix(in oklab, #fffcf0 60%, #f0d898);
}

:root[data-ui-theme="paper"] {
  --bg: #f7efe2;
  --surface: #fbf4e8;
  --panel: #efe5d4;
  --card: #fff8ee;
  --border: #d6c4ad;
  --panel-strong: #c4b095;
  --text: #2f2418;
  --text-muted: #786552;
  --brand: #9a6736;
  --brand-strong: #7f5228;
  --brand-soft: #f3e3cb;
  --focus-ring: rgba(154, 103, 54, 0.24);
  --overlay: rgba(68, 42, 18, 0.18);
  --shadow-elevated: 0 10px 20px rgba(74, 46, 18, 0.20);
  --input-bg: #fff8ee;
  --input-bg-muted: #f5edde;
  --canvas-bg: #fff8ee;
  --canvas-grid: rgba(196, 176, 149, 0.55);
  --canvas-overlay: rgba(255, 248, 238, 0.72);
  --chrome-muted: #7c6a56;
  --chrome-hover: #4c3c2d;
  --chrome-active: #2f2418;
}

/* ── ledger tokens (project-tracker palette) ─────────────── */
:root[data-ui-theme="ledger"] {
  --bg: #f4f1e8;
  --surface: #fbf9f3;
  --panel: #ece7d9;
  --card: #fbf9f3;
  --border: #d8d3c8;
  --panel-strong: #c4bdae;
  --text: #171713;
  --text-muted: #777269;
  --muted: var(--text-muted);
  --brand: #184fd1;
  --brand-strong: #123ba3;
  --brand-soft: #dbe5ff;
  --focus-ring: rgba(24, 79, 209, 0.28);
  --overlay: rgba(23, 23, 19, 0.18);
  --shadow-elevated: 0 20px 55px rgba(34, 31, 25, 0.12);
  --input-bg: #fbf9f3;
  --input-bg-muted: #f4f1e8;
  --canvas-bg: #fbf9f3;
  --canvas-grid: rgba(216, 211, 200, 0.55);
  --canvas-overlay: rgba(251, 249, 243, 0.76);
  --chrome-muted: #777269;
  --chrome-hover: #3a352c;
  --chrome-active: #171713;
  --danger: #b53b2f;
  --danger-soft: #f6dedb;
}

:root[data-ui-theme="dark"] {
  --bg: #141210;
  --surface: #1d1916;
  --panel: #181411;
  --card: #221d19;
  --border: #3a312b;
  --panel-strong: #4d4138;
  --text: #f2ebe3;
  --text-muted: #b6a79b;
  --brand: #d97706;
  --brand-strong: #f59e0b;
  --brand-soft: #322214;
  --focus-ring: rgba(217, 119, 6, 0.32);
  --overlay: rgba(0, 0, 0, 0.5);
  --shadow-elevated: 0 12px 24px rgba(0, 0, 0, 0.48);
  --input-bg: #221d19;
  --input-bg-muted: #181411;
  --canvas-bg: #221d19;
  --canvas-grid: rgba(93, 79, 66, 0.44);
  --canvas-overlay: rgba(18, 15, 13, 0.78);
  --chrome-muted: #b3a79c;
  --chrome-hover: #f4eadf;
  --chrome-active: #fff8f2;
  --danger: #fca5a5;
  --danger-soft: #3c1818;
}

:root[data-ui-theme="dark-orange"] {
  --bg: #0d0907;
  --surface: #17110e;
  --panel: #120d0b;
  --card: #1a130f;
  --border: #32231b;
  --panel-strong: #493228;
  --text: #f7ede4;
  --text-muted: #c6a894;
  --brand: #e86a1c;
  --brand-strong: #ff8a3d;
  --brand-soft: #2f170d;
  --focus-ring: rgba(232, 106, 28, 0.35);
  --overlay: rgba(0, 0, 0, 0.58);
  --shadow-elevated: 0 12px 26px rgba(0, 0, 0, 0.56);
  --section-shadow: 0 4px 16px rgba(0, 0, 0, 0.40);
  --input-bg: #1d1511;
  --input-bg-muted: #140f0c;
  --canvas-bg: #1b130f;
  --canvas-grid: rgba(100, 61, 42, 0.46);
  --canvas-overlay: rgba(15, 10, 8, 0.8);
  --chrome-muted: #bf9479;
  --chrome-hover: #ffe0cc;
  --chrome-active: #fff7f1;
  --danger: #ffb4a6;
  --danger-soft: #421713;
}

:root[data-ui-theme="ubuntu"] {
  --bg: #160b14;
  --surface: #24111f;
  --panel: #1b0d18;
  --card: #2b1425;
  --border: #54304b;
  --panel-strong: #6d3c5f;
  --text: #f6e7de;
  --text-muted: #d0b2bf;
  --brand: #e95420;
  --brand-strong: #ff7646;
  --brand-soft: #39131f;
  --focus-ring: rgba(233, 84, 32, 0.34);
  --overlay: rgba(0, 0, 0, 0.56);
  --shadow-elevated: 0 12px 24px rgba(0, 0, 0, 0.5);
  --input-bg: #2b1425;
  --input-bg-muted: #1d0d19;
  --canvas-bg: #291421;
  --canvas-grid: rgba(109, 60, 95, 0.44);
  --canvas-overlay: rgba(22, 10, 19, 0.8);
  --chrome-muted: #d0a8b8;
  --chrome-hover: #ffe3d6;
  --chrome-active: #fff7f2;
}

:root[data-ui-theme="dark-contrast"] {
  --bg: #08111c;
  --surface: #0f1b2a;
  --panel: #0b1623;
  --card: #132233;
  --border: #2c4158;
  --panel-strong: #3e5a79;
  --text: #eef4ff;
  --text-muted: #b5c7de;
  --brand: #8ab4ff;
  --brand-strong: #b7d0ff;
  --brand-soft: #14253a;
  --focus-ring: rgba(138, 180, 255, 0.34);
  --overlay: rgba(0, 0, 0, 0.54);
  --shadow-elevated: 0 12px 24px rgba(0, 0, 0, 0.5);
  --input-bg: #162739;
  --input-bg-muted: #0d1927;
  --canvas-bg: #132233;
  --canvas-grid: rgba(62, 90, 121, 0.48);
  --canvas-overlay: rgba(11, 18, 30, 0.8);
  --chrome-muted: #b6c9e2;
  --chrome-hover: #f3f8ff;
  --chrome-active: #ffffff;
}

.project-logs-shell {
  display: grid;
  gap: 12px;
}

.project-logs-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}

.project-logs-title {
  margin: 0;
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
}

.project-logs-subtitle {
  margin: 4px 0 0;
  font-size: 11px;
  color: var(--text-muted);
}

.project-logs-list {
  display: grid;
  gap: 0;
  border-top: 1px solid var(--border);
}

.project-log-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 12px;
  align-items: start;
  padding: 8px 0;
  border-bottom: 1px solid color-mix(in oklab, var(--border) 74%, transparent);
}

.project-log-row-main {
  display: grid;
  gap: 4px;
}

.project-log-meta {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
  font-size: 11px;
  color: var(--text-muted);
  white-space: nowrap;
}

.project-log-actor {
  padding-left: 8px;
  border-left: 1px solid var(--border);
}

.project-log-summary {
  font-size: 12px;
  line-height: 1.35;
  color: var(--text);
}

.project-log-details {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 10px;
}

.project-log-detail-row {
  display: inline-flex;
  align-items: baseline;
  gap: 5px;
  min-width: 0;
}

.project-log-detail-key {
  font-size: 10px;
  font-weight: 600;
  color: var(--text-muted);
  white-space: nowrap;
}

.project-log-detail-value {
  font-size: 11px;
  color: var(--text);
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* ── base ─────────────────────────────────────────────────── */
html, body { height: 100%; }
body {
  font: 14px/1.5 var(--app-body-font);
  background: var(--bg);
  color: var(--text);
  transition: background .18s ease, color .18s ease;
}

/* subtle film-grain overlay; feTurbulence noise, desaturated, blended over UI */
body::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: 9999;
  pointer-events: none;
  opacity: .1;
  mix-blend-mode: screen; /* dark themes; slate overridden below */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='noise-bg-fx'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0.33 0.33 0.33 0 0 0.33 0.33 0.33 0 0 0.33 0.33 0.33 0 0 0 0 0 0 1'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23noise-bg-fx)'/%3E%3C/svg%3E");
}
body.theme-slate::after { mix-blend-mode: multiply; opacity: .12; }

#compose-view {
  height: 100%;
}

.compose-root {
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  height: 100%;
}

.compose-section-tabs {
  display: flex;
  gap: 6px;
  padding: 18px 18px 0;
}

.compose-section-tab {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text-muted);
  padding: 7px 12px;
  font: inherit;
  font-size: 12px;
  cursor: pointer;
}

.compose-section-tab.active {
  background: var(--bg);
  color: var(--text);
}

.compose-shell {
  display: grid;
  grid-template-columns: minmax(320px, 380px) minmax(0, 1fr);
  gap: 18px;
  height: 100%;
  padding: 12px 18px 18px;
}

.compose-shell-workspace {
  grid-template-columns: minmax(0, 1fr);
}

.compose-sidebar,
.compose-workspace,
.compose-staging-area {
  min-height: 0;
}

.compose-sidebar {
  display: grid;
  grid-template-rows: minmax(0, 1fr) auto auto;
  gap: 18px;
}

.compose-panel,
.compose-workspace {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  min-height: 0;
}

.compose-staging-area .compose-panel,
.compose-workspace-standalone {
  height: 100%;
}

.compose-panel {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.compose-panel-header,
.compose-workspace-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--border);
  background: color-mix(in oklab, var(--surface) 82%, var(--panel));
}

.compose-beta-warning {
  padding: 6px 16px;
  background: #fffbe6;
  border-bottom: 1px solid #f0d060;
  color: #7a5800;
  font-size: 12px;
  font-weight: 500;
}

.compose-panel-title {
  margin: 0;
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
}

.compose-panel-subtitle {
  margin: 4px 0 0;
  font-size: 12px;
  color: var(--text-muted);
}

.compose-panel-body {
  min-height: 0;
  overflow: auto;
  padding: 14px 16px 16px;
}

.compose-mode-tabs,
.compose-toggle-group {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.compose-mode-tab,
.compose-toggle-btn {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text-muted);
  padding: 6px 10px;
  font: inherit;
  font-size: 12px;
  cursor: pointer;
}

.compose-mode-tab.active,
.compose-toggle-btn.active {
  background: var(--bg);
  color: var(--text);
}

.compose-search-controls,
.compose-stage-list,
.compose-tree-list,
.compose-selection-summary {
  display: grid;
  gap: 12px;
}

.compose-search-row-2,
.compose-toggle-row,
.compose-search-actions,
.compose-result-title-row,
.compose-result-meta,
.compose-stage-actions,
.compose-workspace-metrics,
.compose-toolbar {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.compose-workspace-header .compose-toolbar {
  align-items: center;
  gap: 10px;
}

.compose-workspace-tabs {
  display: flex;
  align-items: center;
  gap: 2px;
  flex-wrap: wrap;
  margin-top: 10px;
  padding-bottom: 1px;
}

.compose-workspace-tab {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 34px;
  max-width: 220px;
  padding: 8px 12px 9px;
  border: none;
  border-bottom: 2px solid transparent;
  background: none;
  color: var(--text-muted);
  font: inherit;
  font-size: 13px;
  cursor: pointer;
  margin-bottom: -1px;
  transition: color .12s, border-color .12s, background .12s;
}

.compose-workspace-tab span:first-child {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.compose-workspace-tab:hover {
  color: var(--text);
}

.compose-workspace-tab.active {
  color: var(--text);
  border-bottom-color: var(--brand);
}

.compose-workspace-tab-add {
  justify-content: center;
  min-width: 34px;
  padding-left: 10px;
  padding-right: 10px;
  color: var(--text-muted);
}

.compose-workspace-tab-add:hover {
  color: var(--text);
  background: color-mix(in oklab, var(--bg) 88%, transparent);
}

.compose-workspace-tab-add-icon {
  font-size: 18px;
  line-height: 1;
}

.compose-workspace-tab-dot {
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--brand) 72%, #111);
  flex: 0 0 auto;
}

.compose-library-block,
.compose-layer-section {
  display: grid;
  gap: 10px;
}

.compose-result-meta {
  color: var(--text-muted);
  font-size: 12px;
}

.compose-field-input {
  width: 100%;
  min-width: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text);
  padding: 8px 10px;
  font: inherit;
}

.compose-filter-list {
  display: grid;
  gap: 8px;
}

.compose-filter-row,
.compose-result-card,
.compose-stage-item,
.compose-tree-project-file {
  display: grid;
  gap: 8px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  padding: 10px 12px;
}

.compose-result-card,
.compose-stage-item,
.compose-tree-project-file {
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
}

.compose-asset-browser {
  display: grid;
  gap: 8px;
}

.compose-asset-card {
  border-radius: 0;
  padding: 4px 6px;
  cursor: pointer;
}

.compose-asset-card:hover {
  border-color: color-mix(in oklab, var(--brand) 30%, var(--border));
  background: color-mix(in oklab, var(--brand) 5%, var(--surface));
}

.compose-asset-card.dragging {
  opacity: 0.45;
}

.compose-asset-card .compose-result-title {
  font-size: var(--compose-panel-body-size, 9.6px);
  font-weight: var(--compose-panel-body-weight, 500);
  line-height: 1.2;
}

.compose-asset-card .compose-result-meta {
  font-size: var(--compose-panel-meta-size, 8.8px);
  gap: 5px;
}

.compose-stage-item.active {
  border-color: color-mix(in oklab, var(--brand) 26%, var(--panel-strong));
  background: color-mix(in oklab, var(--brand) 8%, var(--surface));
}

.compose-stage-list-compact {
  gap: 0;
}

.compose-stage-item-compact {
  grid-template-columns: 18px minmax(0, 1fr) auto;
  gap: 5px;
  padding: 4px 6px;
  border-radius: 0;
  min-height: 28px;
  box-shadow: none;
}

.compose-stage-reorder {
  align-self: stretch;
  display: grid;
  place-items: center;
  color: var(--text-muted);
  cursor: grab;
  user-select: none;
  font-size: 9px;
  letter-spacing: -1px;
}

.compose-stage-item-compact .compose-stage-main {
  min-width: 0;
  display: grid;
  gap: 0;
}

.compose-stage-item-compact .compose-result-title-row {
  gap: 5px;
  flex-wrap: nowrap;
  align-items: baseline;
}

.compose-stage-item-compact .compose-result-title {
  min-width: 0;
  font-size: var(--compose-panel-body-size, 12px);
  font-weight: var(--compose-panel-body-weight, 500);
  line-height: 1.1;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.compose-stage-item-compact.is-locked {
  background: color-mix(in oklab, var(--surface) 82%, var(--panel));
}

.compose-stage-item.dragging {
  opacity: 0.45;
}

.compose-stage-item.drop-target {
  border-color: color-mix(in oklab, var(--brand) 26%, var(--panel-strong));
  background: color-mix(in oklab, var(--brand) 8%, var(--surface));
}

.compose-stage-actions-compact {
  align-items: center;
}

.compose-layer-meta {
  margin-left: auto;
  display: inline-flex;
  align-items: baseline;
  gap: 4px;
  min-width: 0;
  flex: 0 0 auto;
}

.compose-layer-lock {
  flex: 0 0 auto;
  display: inline-grid;
  place-items: center;
  width: 10px;
  height: 10px;
  color: var(--text);
}

.compose-layer-lock svg {
  width: 10px;
  height: 10px;
  display: block;
}

.compose-layer-lock path,
.compose-layer-lock rect {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.compose-layer-type,
.compose-layer-status {
  font-size: var(--compose-panel-meta-size, 11px);
  font-weight: var(--compose-panel-meta-weight, 500);
  line-height: 1;
  letter-spacing: 0.02em;
  text-transform: lowercase;
  color: var(--text-muted);
  white-space: nowrap;
}

.compose-layer-status {
  color: var(--text-muted);
}

.compose-results-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  margin: 14px 0 10px;
  font-size: 12px;
  color: var(--text-muted);
}

.compose-results-list,
.compose-tree-children {
  display: grid;
  gap: 10px;
}

.compose-asset-browser .compose-results-list {
  min-height: 0;
  max-height: min(420px, calc(100vh - 310px));
  overflow-y: auto;
  overflow-x: hidden;
  padding-right: 2px;
}

.compose-inline-hint,
.compose-inline-error {
  border: 1px dashed var(--border);
  border-radius: var(--radius);
  padding: 12px;
  font-size: 12px;
  color: var(--text-muted);
  background: color-mix(in oklab, var(--surface) 80%, var(--panel));
}

.compose-inline-error {
  color: var(--danger);
  border-style: solid;
  background: color-mix(in oklab, var(--danger) 12%, var(--surface));
}

.compose-tree-toggle {
  width: 100%;
  display: flex;
  align-items: center;
  gap: 8px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  padding: 9px 10px;
  cursor: pointer;
  text-align: left;
}

.compose-tree-toggle-run {
  margin-top: 10px;
}

.compose-tree-chevron {
  color: var(--text-muted);
  transition: transform .15s ease;
}

.compose-tree-chevron.expanded {
  transform: rotate(0deg);
}

.compose-tree-title {
  min-width: 0;
  flex: 1;
  font-size: 13px;
  font-weight: 500;
  color: var(--text);
}

.compose-tree-count,
.compose-pill {
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 2px 8px;
  font-size: 11px;
  color: var(--text-muted);
  background: var(--bg);
}

.compose-tree-children {
  margin-top: 10px;
  padding-left: 12px;
}

/* Search-result grouping (project / data group headers) */
.compose-tree-group-label {
  margin: 10px 0 4px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-muted);
}

.compose-tree-group-sublabel {
  margin: 6px 0 4px 4px;
  font-size: 12px;
  font-weight: 500;
  color: var(--text);
}

.compose-tree-project-file[draggable="true"] {
  cursor: grab;
}

.compose-tree-project-file[draggable="true"].dragging {
  opacity: 0.45;
}

.compose-result-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}

.compose-workspace {
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.compose-workspace-shell {
  flex: 1;
  position: relative;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-rows: minmax(0, 1fr);
  background: var(--surface);
}

.compose-stage-area {
  grid-column: 1;
  grid-row: 1;
  min-width: 0;
  min-height: 0;
  padding: 18px;
  height: 100%;
}

.compose-workspace-tools {
  --compose-panel-title-size: 13px;
  --compose-panel-title-weight: 600;
  --compose-panel-body-size: 12px;
  --compose-panel-body-weight: 450;
  --compose-panel-meta-size: 11px;
  --compose-panel-meta-weight: 450;
  grid-column: 2;
  grid-row: 1;
  position: relative;
  width: 54px;
  min-width: 54px;
  height: 100%;
  min-height: 0;
  display: flex;
  justify-content: flex-end;
  padding: 18px 10px 10px 4px;
  background: transparent;
}

.compose-selection-footer {
  --compose-panel-title-size: 13px;
  --compose-panel-title-weight: 600;
  --compose-panel-body-size: 12px;
  --compose-panel-body-weight: 450;
  --compose-panel-meta-size: 11px;
  --compose-panel-meta-weight: 450;
  --compose-selection-gap: 8px;
  --compose-selection-border: var(--panel-strong);
  --compose-selection-border-soft: var(--border);
  --compose-selection-surface: color-mix(in oklab, var(--surface) 84%, var(--panel));
  --compose-selection-surface-strong: var(--card);
  --compose-selection-surface-muted: color-mix(in oklab, var(--surface) 70%, var(--panel));
  position: absolute;
  left: 18px;
  right: 52px;
  bottom: 18px;
  height: 225px;
  z-index: 8;
  pointer-events: none;
}

.compose-tool-popout {
  position: absolute;
  top: 10px;
  right: calc(100% + 8px);
  width: min(248px, calc(100vw - 180px));
  max-height: calc(100% - 20px);
  z-index: 9;
  overflow: visible;
}

.compose-tool-popout.compose-tool-popout-wide {
  width: min(560px, calc(100vw - 180px));
}

.compose-tool-popout-empty {
  display: none;
}

.compose-tool-popout-card {
  display: grid;
  gap: 0;
  height: auto;
  max-height: min(520px, calc(100vh - 180px));
  border: 1px solid var(--panel-strong);
  border-radius: 0;
  background: var(--card);
  box-shadow: var(--shadow-elevated);
  overflow: hidden;
}

.compose-tool-popout-header {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 34px;
  padding: 8px 10px;
  background: color-mix(in oklab, var(--surface) 70%, var(--panel));
  box-shadow: inset 0 -1px 0 var(--panel-strong);
}

.compose-tool-popout-header .compose-control-section-title {
  flex: 1;
  min-width: 0;
}

.compose-tool-popout-header .compose-ws-sidebar-btn {
  flex: 0 0 auto;
}

.compose-tool-popout-body {
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 10px;
  display: grid;
  gap: 8px;
}

.compose-tool-rail {
  width: 32px;
  height: auto;
  padding: 0;
  display: grid;
  grid-auto-rows: min-content;
  align-content: start;
  justify-items: center;
  gap: 6px;
}

.compose-workspace-tools .compose-tool-popout {
  top: 18px;
}

.compose-workspace-tools .compose-tool-rail {
  width: 40px;
  gap: 8px;
}

.compose-canvas-tool-dock {
  position: absolute;
  z-index: 10;
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
}

.compose-tool-popout-canvas {
  top: 0;
  right: auto;
  left: calc(100% + 8px);
  width: min(300px, calc(100vw - 180px));
  max-height: none;
}

.compose-tool-rail-canvas {
  position: relative;
}

.compose-tool-rail-button {
  width: 32px;
  height: 32px;
  display: grid;
  place-items: center;
  padding: 0;
  border: 1px solid var(--panel-strong);
  border-radius: 0;
  background: var(--card);
  color: var(--text-muted);
  cursor: pointer;
}

.compose-workspace-tools .compose-tool-rail-button {
  width: 40px;
  height: 40px;
}

.compose-tool-rail-button:hover {
  background: color-mix(in oklab, var(--brand) 8%, var(--surface));
  color: var(--text);
}

.compose-tool-rail-button:disabled {
  opacity: 0.42;
  cursor: default;
}

.compose-tool-rail-button:disabled:hover {
  background: var(--card);
  color: var(--text-muted);
}

.compose-tool-rail-button.active {
  border-color: color-mix(in oklab, var(--brand) 50%, var(--panel-strong));
  background: color-mix(in oklab, var(--brand) 10%, var(--card));
  color: var(--text);
}

.compose-tool-rail-icon,
.compose-tool-rail-icon svg {
  width: 18px;
  height: 18px;
  display: block;
}

.compose-tool-rail-icon svg,
.compose-ws-row-action svg,
.compose-ws-row-shared svg,
.compose-ws-sidebar-btn svg {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.compose-workspace-tools .compose-tool-rail-icon,
.compose-workspace-tools .compose-tool-rail-icon svg {
  width: 20px;
  height: 20px;
}

.compose-stage-surface {
  position: relative;
  height: 100%;
  min-height: 560px;
  overflow: hidden;
  border-radius: var(--radius);
  cursor: grab;
  touch-action: none;
  background:
    linear-gradient(180deg, color-mix(in oklab, var(--panel) 88%, transparent), color-mix(in oklab, var(--canvas-bg) 94%, transparent)),
    repeating-linear-gradient(0deg, transparent, transparent 23px, var(--canvas-grid) 24px),
    repeating-linear-gradient(90deg, transparent, transparent 23px, var(--canvas-grid) 24px);
}

.compose-stage-surface.compose-scene-panning {
  cursor: all-scroll;
}

.compose-stage-scene {
  position: absolute;
  inset: 0;
  transform-origin: 0 0;
  transform: translate(var(--compose-scene-pan-x, 0px), var(--compose-scene-pan-y, 0px)) scale(var(--compose-scene-scale, 1));
  will-change: transform;
}

.compose-stage-marquee {
  position: absolute;
  z-index: 11;
  border: 1px solid rgba(37, 99, 235, 0.9);
  background: rgba(37, 99, 235, 0.12);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.4);
  pointer-events: none;
}

.compose-workspace-bounds {
  position: absolute;
  border: 3px dotted rgba(71, 85, 105, 0.9);
  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.35);
  background:
    linear-gradient(180deg, rgba(148, 163, 184, 0.05), rgba(148, 163, 184, 0.02)),
    radial-gradient(circle at 2px 2px, rgba(148, 163, 184, 0.34) 1.45px, transparent 1.9px);
  background-size: 100% 100%, 42px 42px;
  pointer-events: none;
}

.compose-world-indicators {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 2;
}

.compose-world-indicator {
  position: absolute;
  transform: translate(-50%, -50%);
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 24px;
  padding: 0 8px;
  border: 1px solid color-mix(in oklab, var(--panel-strong) 82%, transparent);
  background: color-mix(in oklab, var(--card) 88%, transparent);
  box-shadow: var(--shadow-elevated);
  font-size: 11px;
  color: var(--text);
  white-space: nowrap;
  pointer-events: auto;
  cursor: pointer;
  font: inherit;
  appearance: none;
  font-size: 11px;
  font-weight: 400;
  line-height: 1;
  text-align: left;
}

.compose-world-indicator-left {
  transform: translate(0, -50%);
}

.compose-world-indicator-right {
  transform: translate(-100%, -50%);
}

.compose-world-indicator-top.compose-world-indicator-middle {
  transform: translate(-50%, 0);
}

.compose-world-indicator-bottom.compose-world-indicator-middle {
  transform: translate(-50%, -100%);
}

.compose-world-indicator-left.compose-world-indicator-top,
.compose-world-indicator-left.compose-world-indicator-bottom {
  transform: translate(0, -50%);
}

.compose-world-indicator-right.compose-world-indicator-top,
.compose-world-indicator-right.compose-world-indicator-bottom {
  transform: translate(-100%, -50%);
}

.compose-world-indicator-arrow {
  font-size: 12px;
  color: var(--text);
}

.compose-world-indicator-label {
  max-width: 160px;
  overflow: hidden;
  text-overflow: ellipsis;
}

.compose-world-indicator-distance {
  color: var(--text-muted);
}

.compose-workspace-nav-lock {
  position: absolute;
  inset: 0;
  z-index: 60;
  pointer-events: none;
  background: transparent;
}

.compose-workspace-nav-lock.is-active {
  pointer-events: auto;
  cursor: progress;
}

.compose-canvas-frame {
  position: absolute;
  border: 1px solid #d4d8e0;
  background: #ffffff;
  box-shadow: 0 6px 18px rgba(15, 23, 42, 0.14);
}

.compose-canvas-frame-maximized {
  box-shadow: 0 8px 20px rgba(15, 23, 42, 0.16);
}

.compose-canvas-frame.selected {
  border-color: #6b8fdf;
}

.compose-world-object-multi-selected {
  border-color: #2563eb !important;
  box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.22), 0 6px 16px rgba(15, 23, 42, 0.12);
}

.compose-canvas-dragbar {
  height: 34px;
  border-bottom: 1px solid #dde0e8;
  background: #f2f4f8;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 0 12px;
  font-size: 12px;
  color: #60646c;
  cursor: move;
  user-select: none;
}

.compose-canvas-body {
  position: relative;
  width: 100%;
  height: calc(100% - 34px);
  overflow: hidden;
}

.compose-canvas-body.compose-canvas-body-drop-target {
  background: #f0f4ff;
  box-shadow: inset 0 0 0 1px #7da4e8;
}

.compose-canvas-loading {
  position: absolute;
  inset: 0;
  z-index: 5;
  display: grid;
  place-items: center;
  gap: 8px;
  background: rgba(255, 255, 255, 0.72);
  backdrop-filter: blur(3px);
  pointer-events: all;
}

#compose-stage-scene[data-color-mode="dark"] .compose-canvas-loading {
  background: rgba(20, 20, 20, 0.72);
}

.compose-canvas-loading-spinner {
  width: 22px;
  height: 22px;
  border: 2px solid rgba(100, 116, 139, 0.30);
  border-top-color: #3b6be0;
  border-radius: 999px;
  animation: compose-canvas-spinner 0.9s linear infinite;
}

#compose-stage-scene[data-color-mode="dark"] .compose-canvas-loading-spinner {
  border-color: rgba(200, 184, 172, 0.24);
  border-top-color: #7aa4f0;
}

.compose-canvas-loading-label {
  font-size: 11px;
  color: var(--text-muted);
}

@keyframes compose-canvas-spinner {
  to {
    transform: rotate(360deg);
  }
}

.compose-inline-text-editor {
  position: absolute;
  z-index: 4;
  border: 1px solid color-mix(in oklab, var(--brand) 40%, var(--panel-strong));
  border-radius: 4px;
  padding: 4px 8px;
  font: inherit;
  font-size: 13px;
  color: var(--text);
  background: var(--input-bg);
  box-shadow: var(--shadow-elevated);
  transform-origin: center;
}

.compose-label-menu {
  position: absolute;
  z-index: 2000;
  display: grid;
  gap: 4px;
  min-width: 132px;
  padding: 6px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: rgba(255,255,255,0.96);
  box-shadow: 0 8px 18px rgba(15, 23, 42, 0.18);
}

.compose-label-menu button {
  border: 1px solid transparent;
  border-radius: 6px;
  background: transparent;
  color: var(--text);
  font: inherit;
  font-size: 12px;
  text-align: left;
  padding: 6px 8px;
  cursor: pointer;
}

.compose-label-menu button:hover {
  background: var(--bg);
  border-color: var(--border);
}

.compose-chart-svg {
  display: block;
  width: 100%;
  height: 100%;
}

.compose-canvas-empty {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  align-content: center;
  justify-items: center;
  gap: 8px;
  padding: 28px 40px 34px;
  text-align: center;
  color: var(--text-muted);
  font-size: 12px;
  line-height: 1.5;
  pointer-events: none;
}

.compose-canvas-empty-title {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text);
}

.compose-canvas-empty-copy {
  max-width: 280px;
}

.compose-workspace-starter {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 360px;
  padding: 20px 24px;
  border: 1px solid var(--panel-strong);
  background: color-mix(in oklab, var(--card) 92%, transparent);
  box-shadow: var(--shadow-elevated);
  color: var(--text-muted);
  z-index: 1;
  pointer-events: none;
}

.compose-workspace-starter-title {
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  color: var(--text);
}

.compose-workspace-starter-copy {
  margin-top: 8px;
  font-size: 13px;
  line-height: 1.5;
}

.compose-undo-notice {
  position: absolute;
  top: 10px;
  left: 10px;
  z-index: 12;
  padding: 6px 10px;
  border: 1px solid #e8d38a;
  background: rgba(255, 248, 204, 0.96);
  color: #6b4f00;
  font-size: 12px;
  font-weight: 600;
  pointer-events: none;
}

.compose-undo-flash {
  box-shadow: 0 0 0 2px rgba(245, 208, 72, 0.95), 0 0 0 6px rgba(250, 204, 21, 0.24);
}

.compose-image-overlay {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.compose-image-layer {
  position: absolute;
  border: 1px solid transparent;
  cursor: move;
  pointer-events: auto;
}

.compose-world-asset {
  position: absolute;
  border: 1px solid #d4d8e0;
  background: #ffffff;
  box-shadow: 0 8px 32px rgba(15, 23, 42, 0.10);
  pointer-events: auto;
}

.compose-world-asset.is-locked {
  cursor: default;
}

.compose-world-asset.selected {
  border-color: #6b8fdf;
  box-shadow: 0 0 0 1px rgba(107, 143, 223, 0.36), 0 8px 32px rgba(15, 23, 42, 0.10);
}

.compose-world-asset-header {
  height: 28px;
  border-bottom: 1px solid #dde0e8;
  background: #f2f4f8;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 0 10px;
  font-size: 12px;
  color: #60646c;
  cursor: move;
  user-select: none;
}

.compose-world-asset-body {
  position: relative;
  width: 100%;
  height: calc(100% - 28px);
  overflow: hidden;
  background: #ffffff;
}

.compose-world-note {
  position: absolute;
  display: flex;
  flex-direction: column;
  min-width: 160px;
  min-height: 80px;
  border: 1px solid #d8b44e;
  border-radius: 12px;
  background: linear-gradient(180deg, #fff9d6 0%, #fef3a6 100%);
  box-shadow: 0 10px 24px rgba(120, 88, 10, 0.16);
  overflow: hidden;
}

.compose-world-note.selected {
  border-color: #b88900;
  box-shadow: 0 0 0 2px rgba(217, 154, 0, 0.18), 0 10px 24px rgba(120, 88, 10, 0.2);
}

.compose-world-note.is-editing {
  box-shadow: 0 0 0 2px rgba(217, 154, 0, 0.18), 0 12px 28px rgba(120, 88, 10, 0.22);
}

.compose-world-note-header {
  height: 28px;
  border-bottom: 1px solid rgba(166, 124, 10, 0.24);
  background: rgba(255, 247, 196, 0.92);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 0 10px;
  font-size: 12px;
  color: #7c5a10;
  cursor: move;
  user-select: none;
}

.compose-world-note-body {
  position: relative;
  flex: 1 1 auto;
  min-height: 0;
  padding: 10px 12px 14px;
  overflow: hidden;
}

.compose-world-note-textarea {
  width: 100%;
  height: 100%;
  min-height: 0;
  border: none;
  outline: none;
  resize: none;
  background: transparent;
  color: #4a3510;
  font: inherit;
  font-size: 13px;
  line-height: 1.5;
}

.compose-world-note-markdown {
  width: 100%;
  height: 100%;
  overflow: auto;
  color: #4a3510;
  font-size: 13px;
  line-height: 1.5;
  word-break: break-word;
}

.compose-world-note-markdown > :first-child {
  margin-top: 0;
}

.compose-world-note-markdown > :last-child {
  margin-bottom: 0;
}

.compose-world-note-markdown h1,
.compose-world-note-markdown h2,
.compose-world-note-markdown h3 {
  margin: 0 0 8px;
  color: #3b2a0b;
  line-height: 1.25;
}

.compose-world-note-markdown h1 {
  font-size: 18px;
}

.compose-world-note-markdown h2 {
  font-size: 16px;
}

.compose-world-note-markdown h3 {
  font-size: 14px;
}

.compose-world-note-markdown p,
.compose-world-note-markdown ul {
  margin: 0 0 8px;
}

.compose-world-note-markdown ul {
  padding-left: 18px;
}

.compose-world-note-markdown code {
  display: inline-block;
  padding: 1px 4px;
  border-radius: 4px;
  background: rgba(120, 88, 10, 0.1);
  font-size: 12px;
}

/* ── World dark color mode ──────────────────────────────────────────────────── */
/* Applied via data-color-mode="dark" on #compose-stage-scene */

#compose-stage-scene[data-color-mode="dark"] .compose-canvas-frame {
  background: #141414;
  border-color: #363636;
  box-shadow: 0 6px 18px rgba(0, 0, 0, 0.46);
}

#compose-stage-scene[data-color-mode="dark"] .compose-canvas-frame.selected {
  border-color: #5a7acc;
}

#compose-stage-scene[data-color-mode="dark"] .compose-canvas-body {
  background: #141414;
}

#compose-stage-scene[data-color-mode="dark"] .compose-canvas-body.compose-canvas-body-drop-target {
  background: #0f1e2e;
  box-shadow: inset 0 0 0 1px #3d6099;
}

#compose-stage-scene[data-color-mode="dark"] .compose-canvas-dragbar {
  background: #1e1e1e;
  border-bottom-color: #3a3a3a;
  color: #d8d0c8;
}

#compose-stage-scene[data-color-mode="dark"] .compose-world-asset {
  border-color: #3a3a3a;
}

#compose-stage-scene[data-color-mode="dark"] .compose-world-asset-header {
  background: #1e1e1e;
  border-bottom-color: #3a3a3a;
  color: #a89f98;
}

#compose-stage-scene[data-color-mode="dark"] .compose-world-asset-body {
  background: #141414;
}

#compose-stage-scene[data-color-mode="dark"] .compose-world-note {
  background: linear-gradient(180deg, #2a2015 0%, #241c12 100%);
  border-color: #5a4020;
  box-shadow: 0 7px 18px rgba(0, 0, 0, 0.46);
}

#compose-stage-scene[data-color-mode="dark"] .compose-world-note.selected {
  border-color: #c48020;
  box-shadow: 0 0 0 2px rgba(196, 128, 32, 0.24), 0 7px 18px rgba(0, 0, 0, 0.5);
}

#compose-stage-scene[data-color-mode="dark"] .compose-world-note-header {
  background: rgba(44, 30, 14, 0.92);
  border-bottom-color: rgba(100, 64, 18, 0.36);
  color: #c8a060;
}

#compose-stage-scene[data-color-mode="dark"] .compose-world-note-body {
  color: #e0d4c0;
}

#compose-stage-scene[data-color-mode="dark"] .compose-world-note-markdown {
  color: #e0d4c0;
}

#compose-stage-scene[data-color-mode="dark"] .compose-world-note-markdown code {
  background: rgba(196, 128, 32, 0.14);
  color: #e8c880;
}

#compose-stage-scene[data-color-mode="dark"] .compose-world-note-textarea {
  background: transparent;
  color: #e0d4c0;
}

#compose-stage-scene[data-color-mode="dark"] .compose-note-resize-handle {
  background: #c48020;
}

.compose-note-resize-handle {
  position: absolute;
  width: 14px;
  height: 14px;
  right: -7px;
  bottom: -7px;
  border-radius: 3px;
  background: #b88900;
  cursor: nwse-resize;
}

.compose-image-layer.is-loading,
.compose-world-asset.is-loading .compose-world-asset-body {
  background: linear-gradient(180deg, #f4f5f8, #ecedf2);
}

#compose-stage-scene[data-color-mode="dark"] .compose-image-layer.is-loading,
#compose-stage-scene[data-color-mode="dark"] .compose-world-asset.is-loading .compose-world-asset-body {
  background: linear-gradient(180deg, #1e1e1e, #2a2a2a);
}

.compose-image-layer.is-locked {
  cursor: default;
}

.compose-image-layer.selected {
  border-color: color-mix(in oklab, var(--brand) 40%, var(--panel-strong));
  box-shadow: 0 0 0 1px color-mix(in oklab, var(--brand) 22%, transparent);
}

.compose-image-layer-img {
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  pointer-events: none;
  user-select: none;
}

.compose-asset-loading {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  overflow: hidden;
  background: color-mix(in oklab, var(--surface) 72%, var(--panel));
  pointer-events: none;
}

.compose-asset-loading-label {
  position: relative;
  z-index: 1;
  font-size: 11px;
  font-weight: 600;
  color: var(--text-muted);
}

.compose-image-resize-handle,
.compose-canvas-resize-handle {
  position: absolute;
  width: 14px;
  height: 14px;
  border-radius: 3px;
  background: var(--brand);
  right: -7px;
  bottom: -7px;
  cursor: nwse-resize;
}

.compose-canvas-resize-handle {
  background: color-mix(in oklab, var(--brand) 45%, var(--text));
}

.compose-canvas-resize-handle.is-disabled {
  opacity: 0.35;
  pointer-events: none;
}

.compose-shortcut-list {
  display: grid;
  gap: 8px;
  font-size: 12px;
  color: var(--text-muted);
}

.compose-field-textarea {
  min-height: 120px;
  resize: vertical;
}

.compose-selection-summary {
  font-size: 12px;
  color: var(--text);
}

.compose-side-panel .compose-panel,
.compose-tool-popout .compose-panel {
  border: 1px solid #d8dde4;
  border-radius: 12px;
  background: rgba(255,255,255,0.94);
  box-shadow: 0 1px 0 rgba(15, 23, 42, 0.02);
  overflow: visible;
}

.compose-inspector-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}

.compose-inspector-field {
  display: grid;
  gap: 4px;
  font-size: var(--compose-panel-meta-size, 11px);
  font-weight: var(--compose-panel-meta-weight, 500);
  letter-spacing: 0;
  color: var(--text-muted);
}

.compose-inspector-field > span {
  text-transform: none;
  font-weight: var(--compose-panel-meta-weight, 500);
}

.compose-inspector-field-wide {
  grid-column: 1 / -1;
}

.compose-inspector-grid-compact {
  gap: 6px;
}

.compose-check-row {
  display: flex;
  align-items: center;
  gap: 7px;
  min-height: 32px;
  font-size: var(--compose-panel-body-size, 12px);
  font-weight: var(--compose-panel-body-weight, 500);
  color: var(--text);
}

.compose-check-row-card {
  min-height: 32px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--card);
  padding: 0 8px;
}

.compose-check-row-card:hover {
  border-color: color-mix(in oklab, var(--brand) 22%, var(--panel-strong));
  background: color-mix(in oklab, var(--brand) 6%, var(--card));
}

.compose-toggle-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}

.compose-color-input {
  min-height: 30px;
  height: 30px;
  padding: 2px;
  border-radius: 0;
  border: 1px solid var(--border);
  background: var(--input-bg);
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
  overflow: hidden;
}

.compose-color-input::-webkit-color-swatch-wrapper {
  padding: 0;
}

.compose-color-input::-webkit-color-swatch {
  border: none;
  border-radius: 0;
}

.compose-color-input::-moz-color-swatch {
  border: none;
  border-radius: 0;
}

.compose-inspector-actions {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px;
}

.compose-inspector-actions .btn {
  width: 100%;
  justify-content: center;
  min-height: 30px;
  border-radius: 6px;
}

.compose-side-panel .compose-panel-body,
.compose-tool-popout .compose-panel-body {
  min-height: auto;
  overflow: visible;
  padding: 12px;
  display: grid;
  gap: 12px;
}

.compose-selection-box {
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  gap: 0;
  height: 100%;
  width: 50%;
  margin: 0;
  padding: 10px 12px 12px;
  border: 0;
  border-radius: 0;
  outline: 1px solid var(--panel-strong);
  background: color-mix(in oklab, var(--card) 94%, transparent);
  box-shadow: var(--shadow-elevated);
  overflow: hidden;
  pointer-events: auto;
  transition: border-color .14s ease, box-shadow .14s ease;
}

.compose-selection-content {
  position: relative;
  display: grid;
  grid-template-rows: minmax(0, 1fr);
  height: 100%;
  min-height: 0;
}

.compose-selection-body {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: max-content;
  justify-content: start;
  align-items: stretch;
  gap: var(--compose-selection-gap);
  min-height: 0;
  padding-top: 2px;
  overflow-x: auto;
  overflow-y: hidden;
}

.compose-selection-group {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 8px;
  width: 220px;
  min-width: 220px;
  max-width: 220px;
  padding: 10px;
  border: 1px solid var(--compose-selection-border-soft);
  border-radius: 0;
  background: var(--compose-selection-surface-strong);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.8);
  height: 100%;
  min-height: 0;
}

.compose-selection-group-wide {
  width: 244px;
  min-width: 244px;
  max-width: 244px;
}

.compose-selection-group-title {
  font-size: var(--compose-panel-meta-size, 11px);
  font-weight: 600;
  color: var(--text-muted);
  letter-spacing: 0.02em;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.compose-selection-group-body {
  display: grid;
  grid-auto-rows: min-content;
  gap: 6px;
  min-height: 0;
  align-content: start;
  overflow: auto;
}

.compose-selection-group-body > .compose-inspector-field {
  padding: 0;
}

.compose-selection-group-body > .compose-inspector-grid,
.compose-selection-group-body > .compose-toggle-grid,
.compose-selection-group-body > .compose-inspector-actions {
  gap: 6px;
}

.compose-selection-group-body > .compose-inline-hint {
  padding: 8px;
  border: 1px solid var(--compose-selection-border-soft);
  background: var(--compose-selection-surface-muted);
}

.compose-selection-group-body .compose-check-row-card {
  min-height: 28px;
  padding: 0 6px;
  border-color: var(--compose-selection-border-soft);
  background: var(--compose-selection-surface-strong);
  white-space: nowrap;
}

.compose-selection-group-body .compose-check-row-card:hover {
  border-color: color-mix(in oklab, var(--brand) 22%, var(--panel-strong));
  background: color-mix(in oklab, var(--brand) 6%, var(--card));
}

.compose-selection-group-body .compose-inspector-actions-single {
  grid-template-columns: 1fr;
}

.compose-selection-group-body .compose-field-input {
  border-color: var(--compose-selection-border-soft);
  background: var(--compose-selection-surface-strong);
  min-height: 28px;
  padding: 4px 6px;
  border-radius: 6px;
  box-shadow: none;
}

.compose-selection-group-body .compose-inspector-field > span,
.compose-selection-group-body .compose-check-row span,
.compose-selection-group-body .btn,
.compose-selection-group-body select,
.compose-selection-group-body option {
  white-space: nowrap;
}

.compose-selection-group-body .compose-field-input[type="range"] {
  background: transparent;
  padding: 0;
}

.compose-selection-box .compose-textarea {
  min-height: 48px;
}

.compose-selection-group-body .compose-inspector-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.compose-selection-group-body .compose-toggle-grid {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.compose-selection-group-body .compose-color-field,
.compose-selection-group-body .compose-width-field {
  grid-template-columns: minmax(0, 1fr) 36px;
  gap: 5px;
  align-items: center;
}

.compose-selection-group-body .compose-width-field {
  grid-template-columns: minmax(0, 1fr) 56px;
}

.compose-selection-group-body .compose-color-field > span,
.compose-selection-group-body .compose-width-field > span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.compose-selection-group-body .compose-color-input {
  min-height: 28px;
  height: 28px;
  padding: 2px;
  border: 1px solid var(--compose-selection-border-soft);
  border-radius: 6px;
  background: var(--compose-selection-surface-strong);
}

.compose-selection-group-body .compose-inspector-field > span {
  font-weight: 400;
  color: var(--text-muted);
}

.compose-plot-style-grid {
  align-items: end;
}

.compose-color-field,
.compose-width-field {
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  gap: 6px;
}

.compose-color-field {
  grid-template-columns: auto 48px;
}

.compose-width-field {
  grid-template-columns: auto 72px;
}

.compose-color-field > span,
.compose-width-field > span {
  align-self: center;
}

.compose-width-input {
  text-align: right;
}

@media (max-width: 1200px) {
  .compose-selection-group,
  .compose-selection-group-wide {
    width: 180px;
    min-width: 180px;
    max-width: 180px;
  }

  .compose-selection-group-wide {
    width: 220px;
    min-width: 220px;
    max-width: 220px;
  }
}

@media (max-width: 860px) {
  .compose-selection-body {
    grid-auto-flow: row;
    grid-auto-columns: unset;
    grid-template-columns: repeat(auto-fit, minmax(180px, max-content));
    overflow-x: hidden;
    overflow-y: auto;
  }

  .compose-selection-group,
  .compose-selection-group-wide {
    width: auto;
    min-width: 180px;
    max-width: 220px;
  }
}

.compose-side-panel .compose-panel-header,
.compose-tool-popout .compose-panel-header {
  padding: 11px 12px;
  background: linear-gradient(180deg, color-mix(in oklab, var(--surface) 86%, var(--panel)), color-mix(in oklab, var(--card) 96%, var(--surface)));
}

.compose-side-panel .compose-panel-subtitle,
.compose-tool-popout .compose-panel-subtitle {
  margin-top: 3px;
  line-height: 1.35;
}

.compose-side-panel .compose-field-input,
.compose-tool-popout .compose-field-input,
.compose-selection-box .compose-field-input {
  min-height: 30px;
  padding: 5px 8px;
  border-color: var(--border);
  border-radius: 6px;
  background: var(--input-bg);
  font-size: var(--compose-panel-body-size, 12px);
  font-weight: var(--compose-panel-body-weight, 500);
}

.compose-textarea {
  min-height: 78px;
  resize: vertical;
}

.compose-side-panel .compose-field-input:focus,
.compose-tool-popout .compose-field-input:focus,
.compose-selection-box .compose-field-input:focus {
  outline: none;
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--focus-ring);
}

.compose-control-section {
  display: grid;
  gap: 0;
  padding: 0;
  border: 1px solid var(--panel-strong);
  border-radius: 0;
  background: var(--card);
}

.compose-control-section-head {
  display: grid;
  gap: 3px;
}

.compose-control-section-title-normal {
  font-size: var(--compose-panel-title-size, 13px);
  font-weight: var(--compose-panel-title-weight, 600);
  letter-spacing: 0;
  text-transform: none;
}

.compose-control-section-title {
  margin: 0;
  font-size: var(--compose-panel-title-size, 13px);
  font-weight: var(--compose-panel-title-weight, 600);
  letter-spacing: 0;
  text-transform: none;
  color: var(--text);
}

.compose-side-panel .compose-selection-summary,
.compose-side-panel .compose-inline-hint,
.compose-tool-popout .compose-selection-summary,
.compose-tool-popout .compose-inline-hint,
.compose-selection-box .compose-selection-summary,
.compose-selection-box .compose-inline-hint {
  padding: 8px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: color-mix(in oklab, var(--surface) 80%, var(--panel));
}

.compose-side-panel .compose-inline-hint,
.compose-tool-popout .compose-inline-hint,
.compose-selection-box .compose-inline-hint {
  font-size: var(--compose-panel-meta-size, 11px);
  font-weight: var(--compose-panel-meta-weight, 500);
  color: var(--text-muted);
}

.compose-side-panel .compose-selection-summary,
.compose-tool-popout .compose-selection-summary,
.compose-selection-box .compose-selection-summary {
  gap: 6px;
}

.compose-selection-empty {
  display: grid;
  place-items: center;
  padding: 12px 10px;
  border: 1px dashed var(--panel-strong);
  border-radius: 6px;
  background: color-mix(in oklab, var(--surface) 80%, var(--panel));
  color: var(--text-muted);
  font-size: var(--compose-panel-meta-size, 11px);
  font-weight: var(--compose-panel-meta-weight, 500);
  font-style: italic;
  text-align: center;
}

.compose-side-panel .compose-check-row input[type="checkbox"],
.compose-tool-popout .compose-check-row input[type="checkbox"],
.compose-selection-box .compose-check-row input[type="checkbox"] {
  margin: 0;
  width: 14px;
  height: 14px;
  accent-color: var(--brand);
}

.compose-side-panel .compose-check-row-card span,
.compose-tool-popout .compose-check-row-card span,
.compose-selection-box .compose-check-row-card span {
  font-weight: var(--compose-panel-body-weight, 500);
}

.compose-side-panel input[type="range"],
.compose-tool-popout input[type="range"],
.compose-selection-box input[type="range"] {
  height: 28px;
  padding: 0;
  accent-color: var(--brand);
}

.compose-side-panel .btn,
.compose-tool-popout .btn,
.compose-selection-box .btn {
  min-height: 30px;
  padding: 0 9px;
  border-radius: 6px;
  border: 1px solid var(--border);
  background: var(--input-bg);
  color: var(--text);
  box-shadow: none;
  font-size: var(--compose-panel-body-size, 12px);
  font-weight: var(--compose-panel-body-weight, 500);
}

.compose-side-panel .btn:hover:not(:disabled),
.compose-tool-popout .btn:hover:not(:disabled),
.compose-selection-box .btn:hover:not(:disabled) {
  border-color: color-mix(in oklab, var(--brand) 22%, var(--panel-strong));
  background: color-mix(in oklab, var(--brand) 6%, var(--input-bg));
}

.compose-side-panel .btn.primary,
.compose-tool-popout .btn.primary,
.compose-selection-box .btn.primary {
  border-color: var(--brand);
  background: var(--brand);
  color: #fff7f2;
}

.compose-side-panel .btn.primary:hover:not(:disabled),
.compose-tool-popout .btn.primary:hover:not(:disabled),
.compose-selection-box .btn.primary:hover:not(:disabled) {
  border-color: var(--brand-strong);
  background: var(--brand-strong);
}

.compose-workspace-placeholder {
  height: 100%;
  min-height: 420px;
  border: 1px dashed var(--border);
  border-radius: var(--radius);
  background:
    linear-gradient(180deg, color-mix(in oklab, var(--panel) 88%, transparent), color-mix(in oklab, var(--canvas-bg) 94%, transparent)),
    repeating-linear-gradient(0deg, transparent, transparent 23px, var(--canvas-grid) 24px),
    repeating-linear-gradient(90deg, transparent, transparent 23px, var(--canvas-grid) 24px);
  display: grid;
  place-content: center;
  gap: 12px;
  text-align: center;
  padding: 28px;
}

.compose-workspace-placeholder-title {
  font-size: 18px;
  font-weight: 600;
  color: var(--text);
}

.compose-workspace-placeholder-copy,
.compose-metric-label,
.compose-toggle-label {
  font-size: 12px;
  color: var(--text-muted);
}

.compose-metric {
  min-width: 140px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: rgba(255,255,255,0.9);
  padding: 12px 14px;
}

.compose-metric-value {
  display: block;
  font-size: 20px;
  font-weight: 600;
  color: var(--text);
}

@media (max-width: 960px) {
  .compose-shell {
    grid-template-columns: 1fr;
    height: auto;
  }

  .compose-sidebar {
    grid-template-rows: auto auto;
  }

  .compose-result-card,
  .compose-stage-item,
  .compose-tree-project-file,
  .compose-filter-row {
    grid-template-columns: 1fr;
  }

  .compose-stage-area {
    height: auto;
  }

  .compose-workspace-shell {
    grid-template-columns: 1fr;
    grid-template-rows: auto auto auto auto;
  }

  .compose-stage-area {
    border-right: none;
    border-bottom: 1px solid var(--border);
  }

  .compose-workspace-tools {
    grid-column: 1;
    grid-row: 3;
    width: auto;
    min-width: 0;
    justify-content: stretch;
    padding: 0;
    border-left: none;
    border-top: 1px solid var(--border);
    background: linear-gradient(180deg, #f7f8fa 0%, #f2f4f7 100%);
  }

  .compose-selection-footer {
    position: static;
    grid-column: 1;
    grid-row: 4;
    left: auto;
    right: auto;
    bottom: auto;
    height: 225px;
    z-index: auto;
    pointer-events: auto;
    padding: 0 14px 14px;
  }

  .compose-tool-popout {
    position: static;
    width: auto;
    max-height: none;
    padding: 14px;
    order: 1;
  }

  .compose-tool-popout-card,
  .compose-selection-box {
    max-height: none;
  }

  .compose-tool-rail {
    width: auto;
    padding: 10px 10px 0;
    grid-template-columns: repeat(auto-fit, minmax(28px, 28px));
    grid-auto-rows: 28px;
    justify-content: start;
    order: 2;
  }

  .compose-canvas-tool-dock {
    position: static;
    display: block;
    padding: 14px 14px 0;
    z-index: auto;
  }

  .compose-tool-popout-canvas {
    position: static;
    left: auto;
    top: auto;
  }

  .compose-tool-rail-canvas {
    width: auto;
    padding: 10px 10px 0;
    grid-template-columns: repeat(auto-fit, minmax(28px, 28px));
    grid-auto-rows: 28px;
    justify-content: start;
  }
}

/* ── sidebar brand (replaces the old top header) ──────────── */
#wordmark {
  display: flex;
  align-items: center;
  gap: 9px;
  height: 42px;
  flex: none;
  padding: 0 0 0 7px;
  margin-bottom: 6px;
  border-radius: 10px;
  text-decoration: none;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
}
#enci-logo {
  width: 24px;
  height: 24px;
  display: block;
  background: var(--text);
  -webkit-mask: url("/assets/enci_logo.png") center / contain no-repeat;
  mask: url("/assets/enci_logo.png") center / contain no-repeat;
  flex: none;
  transition: transform .2s cubic-bezier(0.16, 1, 0.3, 1);
}
#enci-logo.instance-logo-image {
  background-color: transparent;
  background-position: center;
  background-repeat: no-repeat;
  background-size: contain;
  -webkit-mask: none;
  mask: none;
}

:root[data-ui-density="compact"] {
  --page-padding-block: 8px;
  --page-gutter: 6px;
  --pane-gutter: 5px;
}

/* ── native admin console ───────────────────────────────── */
html.admin-route #sidebar { display: none; }
html.admin-route #app { width: 100vw; }
html.admin-route,
html.admin-route body {
  overflow: hidden;
  background: var(--bg);
}
#admin-view,
#admin-root {
  height: 100%;
  min-height: 0;
  overflow: hidden;
  background:
    linear-gradient(90deg, color-mix(in srgb, var(--border) 42%, transparent) 1px, transparent 1px) 0 0 / 28px 28px,
    linear-gradient(color-mix(in srgb, var(--border) 35%, transparent) 1px, transparent 1px) 0 0 / 28px 28px,
    var(--bg);
}
#admin-root {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  height: 100dvh;
  overflow: clip;
}
.admin-entry-loading { height: 100%; }
.admin-console {
  --admin-accent: var(--instance-accent, var(--brand));
  height: 100%;
  min-height: 0;
  display: flex;
  flex-direction: column;
  color: var(--text);
  font: 13px/1.4 var(--app-body-font);
}
.admin-masthead {
  min-height: 88px;
  flex: none;
  padding: 14px 20px 13px;
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 20px;
  border-bottom: 1px solid var(--panel-strong);
  background: color-mix(in srgb, var(--surface) 93%, transparent);
  box-shadow: 0 5px 20px color-mix(in srgb, var(--text) 5%, transparent);
}
.admin-kicker,
.admin-section-head > p,
.admin-section-head > div > p,
.admin-panel-index {
  display: block;
  margin-bottom: 4px;
  color: var(--admin-accent);
  font: 700 10px/1.2 ui-monospace, SFMono-Regular, Consolas, monospace;
  letter-spacing: .14em;
}
.admin-masthead h1,
.admin-section-head h2 {
  margin: 0;
  font-family: "AsimovHeader", Georgia, serif;
  font-weight: 700;
  letter-spacing: -.025em;
}
.admin-masthead h1 { font-size: 31px; line-height: 1; }
.admin-masthead-actions,
.admin-draft-controls {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.admin-status {
  max-width: 360px;
  color: var(--text-muted);
  font-size: 12px;
}
.admin-status[data-tone="success"] { color: #16834a; }
.admin-status[data-tone="error"] { color: var(--danger); }
.admin-session-mark {
  padding: 5px 8px;
  color: var(--admin-accent);
  border: 1px solid var(--admin-accent);
  font: 700 9px/1 ui-monospace, SFMono-Regular, Consolas, monospace;
  letter-spacing: .1em;
}
.admin-workbench {
  min-height: 0;
  flex: 1;
  display: grid;
  grid-template-columns: 188px minmax(0, 1fr);
}
.admin-rail {
  min-height: 0;
  padding: 13px 10px;
  display: flex;
  flex-direction: column;
  gap: 3px;
  border-right: 1px solid var(--panel-strong);
  background: color-mix(in srgb, var(--panel) 88%, var(--surface));
}
.admin-rail > button {
  width: 100%;
  min-height: 41px;
  padding: 0 10px;
  display: grid;
  grid-template-columns: 29px 1fr;
  align-items: center;
  text-align: left;
  color: var(--text-muted);
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--radius);
  cursor: pointer;
  font: 600 12px/1 var(--app-body-font);
}
.admin-rail > button span {
  color: var(--chrome-muted);
  font: 10px/1 ui-monospace, SFMono-Regular, Consolas, monospace;
}
.admin-rail > button:hover { color: var(--text); background: color-mix(in srgb, var(--surface) 60%, transparent); }
.admin-rail > button.is-active {
  color: var(--text);
  background: var(--surface);
  border-color: var(--panel-strong);
  box-shadow: inset 3px 0 0 var(--admin-accent);
}
.admin-rail > button.is-active span { color: var(--admin-accent); }
.admin-rail-foot {
  margin-top: auto;
  padding: 10px;
  display: flex;
  justify-content: flex-end;
  color: var(--chrome-muted);
  border-top: 1px solid var(--border);
  font: 9px/1 ui-monospace, SFMono-Regular, Consolas, monospace;
  letter-spacing: .1em;
}
.admin-stage {
  min-width: 0;
  min-height: 0;
  padding: clamp(16px, 2vw, 28px);
  overflow: auto;
}
.admin-section-head {
  min-height: 66px;
  margin-bottom: 18px;
  border-bottom: 1px solid var(--panel-strong);
}
.admin-section-head h2 { font-size: 27px; line-height: 1.05; }
.admin-section-head > span,
.admin-section-head > div > span {
  display: block;
  margin: 6px 0 13px;
  color: var(--text-muted);
}
.admin-section-head-actions {
  display: flex;
  align-items: start;
  justify-content: space-between;
  gap: 24px;
}
.admin-btn {
  min-height: 34px;
  padding: 0 13px;
  border: 1px solid var(--panel-strong);
  border-radius: var(--radius);
  color: var(--text);
  background: var(--surface);
  cursor: pointer;
  font: 600 12px/1 var(--app-body-font);
}
.admin-btn:hover:not(:disabled) { border-color: var(--admin-accent); }
.admin-btn:disabled { opacity: .45; cursor: default; }
.admin-btn-primary {
  color: white;
  border-color: var(--admin-accent);
  background: var(--admin-accent);
}
.admin-btn-quiet { background: color-mix(in srgb, var(--panel) 70%, var(--surface)); }
.admin-loading {
  min-height: 240px;
  display: grid;
  place-content: center;
  justify-items: center;
  gap: 12px;
  color: var(--text-muted);
}
.admin-loading span {
  width: 20px;
  height: 20px;
  border: 2px solid var(--border);
  border-top-color: var(--admin-accent);
  border-radius: 50%;
  animation: admin-spin .7s linear infinite;
}
@keyframes admin-spin { to { transform: rotate(360deg); } }
.admin-error {
  padding: 20px;
  display: grid;
  gap: 6px;
  border: 1px solid color-mix(in srgb, var(--danger) 45%, var(--border));
  border-left: 4px solid var(--danger);
  background: color-mix(in srgb, var(--danger-soft) 40%, var(--surface));
}
.admin-error span { color: var(--text-muted); }
.admin-draft-badge,
.admin-state,
.admin-role-mark {
  padding: 5px 8px;
  color: var(--text-muted);
  border: 1px solid var(--panel-strong);
  border-radius: 99px;
  font: 700 9px/1 ui-monospace, SFMono-Regular, Consolas, monospace;
  letter-spacing: .07em;
}
.admin-draft-badge.is-draft { color: var(--admin-accent); border-color: var(--admin-accent); }
.admin-config-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 280px;
  gap: 14px;
  align-items: start;
}
.admin-config-main { display: grid; gap: 12px; }
.admin-config-section,
.admin-preview-card,
.admin-portability,
.admin-revisions,
.admin-person-editor,
.admin-instruments,
.admin-system-storage,
.admin-system-logs,
.admin-database,
.admin-table-panel {
  border: 1px solid var(--panel-strong);
  background: var(--surface);
}
.admin-config-section { padding: 16px; }
.admin-config-section > header {
  margin-bottom: 16px;
  display: grid;
  grid-template-columns: 34px 1fr;
  gap: 10px;
}
.admin-config-section > header > span {
  color: var(--admin-accent);
  font: 700 18px/1 "AsimovHeader", Georgia, serif;
}
.admin-config-section h3,
.admin-config-aside h3,
.admin-instruments h3,
.admin-person-editor h3 { font: 700 18px/1.1 "AsimovHeader", Georgia, serif; }
.admin-config-section header p,
.admin-preview-card p,
.admin-person-editor p { margin-top: 3px; color: var(--text-muted); }
.admin-config-section h4 {
  margin: 15px 0 7px;
  color: var(--text-muted);
  font: 700 10px/1 ui-monospace, SFMono-Regular, Consolas, monospace;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.admin-form-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
}
.admin-form-grid label,
.admin-person-form label {
  display: grid;
  gap: 5px;
  color: var(--text-muted);
  font-size: 11px;
}
.admin-form-grid input,
.admin-form-grid select,
.admin-person-form input,
.admin-instrument-form input,
.admin-order-row input,
.admin-term-row input,
.admin-search input,
.admin-database select {
  min-width: 0;
  min-height: 34px;
  padding: 6px 9px;
  color: var(--text);
  border: 1px solid var(--panel-strong);
  border-radius: 4px;
  background: var(--input-bg);
  font: 12px/1 var(--app-body-font);
}
.admin-form-grid input[type="color"] { width: 100%; padding: 3px; }
.admin-logo-row {
  margin-top: 12px;
  display: flex;
  align-items: center;
  gap: 8px;
}
.admin-logo-row small { color: var(--text-muted); }
.admin-logo-preview {
  width: 46px;
  height: 46px;
  display: grid;
  place-items: center;
  color: white;
  overflow: hidden;
  border-radius: 10px;
  background: var(--admin-accent);
  font: 700 16px/1 "AsimovHeader", Georgia, serif;
}
.admin-logo-preview img { width: 100%; height: 100%; object-fit: contain; }
.admin-term-table { border: 1px solid var(--border); }
.admin-term-head,
.admin-term-row {
  display: grid;
  grid-template-columns: minmax(110px, .8fr) 1fr 1fr;
  gap: 8px;
  align-items: center;
}
.admin-term-head {
  padding: 8px 10px;
  color: var(--text-muted);
  background: var(--panel);
  font: 9px/1 ui-monospace, SFMono-Regular, Consolas, monospace;
  text-transform: uppercase;
}
.admin-term-row { padding: 6px 10px; border-top: 1px solid var(--border); }
.admin-order-list { border: 1px solid var(--border); }
.admin-order-row {
  min-height: 51px;
  padding: 6px 7px;
  display: grid;
  grid-template-columns: 20px 28px minmax(120px, 1fr) minmax(130px, 1fr) 90px 54px;
  gap: 7px;
  align-items: center;
  border-bottom: 1px solid var(--border);
}
.admin-order-row:last-child { border-bottom: 0; }
.admin-drag-mark,
.admin-order-position { color: var(--chrome-muted); font-family: ui-monospace, monospace; }
.admin-order-row small { display: block; color: var(--text-muted); font-size: 9px; }
.admin-switch { display: flex; align-items: center; gap: 5px; }
.admin-switch input { position: absolute; opacity: 0; pointer-events: none; }
.admin-switch > span {
  width: 28px;
  height: 16px;
  padding: 2px;
  display: block;
  border-radius: 20px;
  background: var(--panel-strong);
}
.admin-switch > span::before {
  content: "";
  width: 12px;
  height: 12px;
  display: block;
  border-radius: 50%;
  background: white;
  transition: transform .15s ease;
}
.admin-switch input:checked + span { background: var(--admin-accent); }
.admin-switch input:checked + span::before { transform: translateX(12px); }
.admin-switch b { font-size: 10px; }
.admin-order-buttons { display: flex; }
.admin-order-buttons button,
.admin-row-actions button,
.admin-revisions button,
.admin-pagination button,
.admin-table td > button {
  padding: 4px 6px;
  color: var(--text-muted);
  border: 1px solid var(--border);
  background: transparent;
  cursor: pointer;
  font-size: 10px;
}
.admin-order-buttons button:disabled,
.admin-revisions button:disabled,
.admin-pagination button:disabled { opacity: .35; cursor: default; }
.admin-config-aside { display: grid; gap: 10px; position: sticky; top: 0; }
.admin-preview-card,
.admin-portability,
.admin-revisions { padding: 14px; }
.admin-preview-card > span {
  color: var(--admin-accent);
  font: 700 9px/1 ui-monospace, monospace;
  letter-spacing: .1em;
}
.admin-mini-shell {
  height: 145px;
  margin: 13px 0 8px;
  display: grid;
  grid-template-columns: 29px 1fr;
  overflow: hidden;
  border: 1px solid var(--panel-strong);
  border-radius: 5px;
  background: var(--bg);
}
.admin-mini-rail { padding: 7px; display: flex; flex-direction: column; gap: 7px; background: var(--surface); }
.admin-mini-rail i,
.admin-mini-rail b { width: 14px; height: 14px; display: block; border-radius: 3px; background: var(--border); }
.admin-mini-rail i { margin-bottom: 5px; background: var(--admin-preview-accent); }
.admin-mini-page { padding: 14px 12px; }
.admin-mini-page strong { color: var(--admin-preview-accent); font: 700 16px/1 "AsimovHeader", serif; }
.admin-mini-page div { height: 13px; margin-top: 10px; border: 1px solid var(--border); background: var(--surface); }
.admin-portability { display: grid; gap: 7px; }
.admin-revisions h3 { margin-bottom: 8px; }
.admin-revisions > div {
  padding: 7px 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  border-top: 1px solid var(--border);
}
.admin-revisions small { display: block; color: var(--text-muted); font-size: 9px; }
.admin-people-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 285px;
  gap: 12px;
  align-items: start;
}
.admin-directory-stats {
  margin: -7px 0 14px;
  display: flex;
  flex-wrap: wrap;
  border: 1px solid var(--panel-strong);
  background: var(--surface);
}
.admin-directory-stats span {
  min-width: 120px;
  padding: 8px 12px;
  color: var(--text-muted);
  border-right: 1px solid var(--border);
  font-size: 10px;
}
.admin-directory-stats b {
  margin-right: 4px;
  color: var(--text);
  font: 700 14px/1 "AsimovHeader", Georgia, serif;
}
.admin-table-panel { min-width: 0; overflow: hidden; }
.admin-table-scroll {
  width: 100%;
  overflow: auto;
}
.admin-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 11px;
}
.admin-table th {
  padding: 8px 9px;
  color: var(--text-muted);
  background: var(--panel);
  border-bottom: 1px solid var(--panel-strong);
  text-align: left;
  font: 700 9px/1 ui-monospace, monospace;
  text-transform: uppercase;
  letter-spacing: .06em;
}
.admin-table td {
  max-width: 280px;
  padding: 8px 9px;
  border-bottom: 1px solid var(--border);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: middle;
}
.admin-table td > span { display: block; color: var(--text-muted); }
.admin-state.is-good { color: #16834a; border-color: #16834a; }
.admin-state.is-off { color: var(--danger); }
.admin-role-mark { display: inline-block !important; color: var(--admin-accent) !important; border-color: var(--admin-accent); }
.admin-row-actions { display: flex; gap: 3px; justify-content: flex-end; }
.admin-people-table {
  min-width: 980px;
  table-layout: fixed;
}
.admin-people-table col.person { width: 20%; }
.admin-people-table col.status { width: 10%; }
.admin-people-table col.teams { width: 12%; }
.admin-people-table col.seen { width: 13%; }
.admin-people-table col.authority { width: 15%; }
.admin-people-table col.actions { width: 30%; }
.admin-pagination {
  padding: 8px;
  display: flex;
  justify-content: center;
  gap: 12px;
  align-items: center;
  color: var(--text-muted);
}
.admin-person-editor { padding: 16px; position: sticky; top: 0; }
.admin-person-form { margin-top: 14px; display: grid; gap: 9px; }
.admin-person-form > div { display: flex; gap: 6px; margin-top: 6px; }
.admin-person-form .admin-check { display: flex; grid-column: 1 / -1; align-items: center; }
.admin-search {
  display: flex;
  align-items: center;
  gap: 6px;
  color: var(--text-muted);
}
.admin-search label { min-width: 250px; display: flex; align-items: center; gap: 5px; }
.admin-search input { flex: 1; }
.admin-instruments { min-width: 0; }
.admin-instruments > header {
  padding: 14px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  border-bottom: 1px solid var(--border);
}
.admin-instrument-form {
  padding: 12px;
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr .8fr .8fr auto;
  gap: 8px;
  border-bottom: 1px solid var(--border);
}
.admin-instrument-form label {
  display: grid;
  gap: 5px;
  color: var(--text-muted);
  font-size: 10px;
}
.admin-instrument-form > div { display: flex; gap: 6px; align-items: end; }
.admin-instrument-table { min-width: 760px; }
.admin-system-grid { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 12px; }
.admin-system-storage,
.admin-system-logs,
.admin-database { min-width: 0; }
.admin-system-storage > header,
.admin-system-logs > header,
.admin-database > header {
  padding: 10px 12px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  border-bottom: 1px solid var(--panel-strong);
  background: var(--panel);
}
.admin-system-storage > header span,
.admin-system-logs > header span,
.admin-database > header span { color: var(--text-muted); font: 9px/1 ui-monospace, monospace; }
.admin-system-storage > div {
  padding: 7px 10px;
  display: flex;
  justify-content: space-between;
  border-bottom: 1px solid var(--border);
  font-size: 10px;
}
.admin-system-storage > div span { color: var(--text-muted); }
.admin-log-stream { max-height: 330px; overflow: auto; }
.admin-log-stream > div {
  padding: 5px 9px;
  display: grid;
  grid-template-columns: 142px 46px minmax(120px, 1fr) 35px 55px;
  gap: 7px;
  border-bottom: 1px solid var(--border);
  align-items: center;
  font: 10px/1.2 ui-monospace, SFMono-Regular, Consolas, monospace;
}
.admin-log-stream time,
.admin-log-stream small { color: var(--text-muted); }
.admin-log-stream code { overflow: hidden; text-overflow: ellipsis; }
.admin-log-stream [data-status="error"] { color: var(--danger); }
.admin-log-stream [data-status="ok"] { color: #16834a; }
.admin-database { grid-column: 1 / -1; }
.admin-db-scroll { max-height: 390px; overflow: auto; }
.admin-db-scroll .admin-table { min-width: max-content; font-family: ui-monospace, monospace; }
.admin-db-scroll .admin-table th { position: sticky; top: 0; z-index: 1; }
.admin-audit-stream { border-top: 1px solid var(--panel-strong); }
.admin-audit-stream article {
  min-height: 58px;
  display: grid;
  grid-template-columns: 155px 18px 1fr auto;
  gap: 10px;
  align-items: center;
  border-bottom: 1px solid var(--border);
}
.admin-audit-stream time { color: var(--text-muted); font: 10px/1 ui-monospace, monospace; }
.admin-audit-dot { width: 8px; height: 8px; border-radius: 50%; background: #16834a; }
.admin-audit-stream article[data-outcome="failed"] .admin-audit-dot { background: var(--danger); }
.admin-audit-stream article div span { display: block; color: var(--text-muted); font-size: 11px; }
.admin-audit-stream article > b { font: 9px/1 ui-monospace, monospace; }
.admin-audit-filters { display: flex; gap: 6px; }
.admin-audit-filters input,
.admin-audit-filters select {
  min-height: 34px;
  padding: 6px 9px;
  color: var(--text);
  border: 1px solid var(--panel-strong);
  border-radius: 4px;
  background: var(--input-bg);
  font: 12px/1 var(--app-body-font);
}
.admin-empty { padding: 30px; color: var(--text-muted); text-align: center; }
.admin-denied {
  width: min(540px, calc(100% - 32px));
  margin: 12vh auto;
  padding: 34px;
  border: 1px solid var(--panel-strong);
  border-top: 4px solid var(--danger);
  background: var(--surface);
  box-shadow: var(--shadow-elevated);
}
.admin-denied > span {
  color: var(--danger);
  font: 700 10px/1 ui-monospace, monospace;
  letter-spacing: .12em;
}
.admin-denied h1 { margin: 12px 0 8px; font: 700 30px/1 "AsimovHeader", serif; }
.admin-denied p { margin-bottom: 22px; color: var(--text-muted); }

@media (max-width: 1100px) {
  .admin-config-grid,
  .admin-people-layout { grid-template-columns: 1fr; }
  .admin-config-aside,
  .admin-person-editor { position: static; }
  .admin-config-aside { grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 780px) {
  .admin-workbench { grid-template-columns: 1fr; }
  .admin-rail {
    padding: 6px;
    flex-direction: row;
    overflow-x: auto;
    border-right: 0;
    border-bottom: 1px solid var(--panel-strong);
  }
  .admin-rail > button { width: auto; min-width: 120px; }
  .admin-rail-foot { display: none; }
  .admin-masthead { min-height: 74px; }
  .admin-stage { padding: 12px; }
  .admin-system-grid,
  .admin-config-aside { grid-template-columns: 1fr; }
  .admin-order-row { grid-template-columns: 22px 25px 1fr 70px 48px; }
  .admin-order-row > input { grid-column: 3 / -1; grid-row: 2; }
  .admin-section-head-actions { display: block; }
  .admin-draft-controls { margin: 10px 0; justify-content: flex-start; }
  .admin-search,
  .admin-audit-filters { margin-top: 10px; }
  .admin-instrument-form { grid-template-columns: 1fr 1fr; }
}
#wordmark:hover #enci-logo { transform: scale(1.06); }

/* ── sidebar footer (chat + account) ──────────────────────── */
.sb-group {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.sb-group-mid {
  margin-top: 14px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
}
#sb-footer {
  margin-top: auto;
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding-top: 8px;
  border-top: 1px solid var(--border);
}

#chat-wrap,
#profile-menu-wrap { position: relative; }

.sb-foot-btn {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  width: 100%;
  height: 38px;
  flex: none;
  padding: 0 0 0 9px;
  gap: 11px;
  border: none;
  border-radius: 10px;
  background: none;
  color: var(--text-muted);
  cursor: pointer;
  white-space: nowrap;
  transition: background .12s, color .12s;
}
.sb-foot-btn:hover {
  background: color-mix(in oklab, var(--brand) 8%, var(--bg));
  color: var(--chrome-hover);
}
.sb-foot-btn[aria-expanded="true"] {
  background: var(--brand-soft);
  color: var(--brand-strong);
}

.sb-foot-icon {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  flex: none;
}
.sb-foot-icon svg {
  width: 20px;
  height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.sb-foot-icon .profile-avatar {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  flex: none;
  font-size: 10px;
}

#sidebar .sb-foot-label {
  position: absolute;
  left: calc(100% + 13px);
  top: 50%;
  transform: translateY(-50%) translateX(-4px);
  padding: 5px 11px;
  border-radius: 7px;
  background: #15171c;
  color: #f4f5f7;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.05em;
  line-height: 1.4;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  z-index: 400;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.28);
  transition: opacity .13s ease, transform .16s cubic-bezier(0.16, 1, 0.3, 1);
}
#sidebar .sb-foot-label::before {
  content: "";
  position: absolute;
  left: -3px;
  top: 50%;
  width: 8px;
  height: 8px;
  background: #15171c;
  border-radius: 2px;
  transform: translateY(-50%) rotate(45deg);
}
#sidebar .sb-foot-btn:hover .sb-foot-label,
#sidebar .sb-foot-btn:focus-visible .sb-foot-label {
  opacity: 1;
  transform: translateY(-50%) translateX(0);
  transition-delay: 0.18s;
}

.profile-avatar {
  display: grid;
  place-items: center;
  width: 100%;
  height: 100%;
  background: var(--brand-soft);
  color: var(--brand-strong);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
}
.profile-avatar-lg {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  flex: none;
  font-size: 12px;
}

#chat-unread-badge {
  position: absolute;
  top: -7px;
  right: -9px;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  border: 2px solid var(--surface);
  background: var(--brand);
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  line-height: 14px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

#chat-launch-btn.has-unread #chat-unread-badge {
  animation: chat-badge-pulse 1.8s ease-in-out infinite;
}

#chat-panel {
  position: absolute;
  bottom: -4px;
  left: calc(100% + 18px);
  width: min(388px, calc(100vw - var(--sidebar-w) - 46px));
  height: min(560px, calc(100vh - 88px));
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-elevated);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  z-index: 40;
}

#chat-panel.chat-panel-enter {
  animation: chat-panel-in 180ms cubic-bezier(0.16, 1, 0.3, 1);
}

.chat-panel-header {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 12px 12px 11px;
  border-bottom: 1px solid var(--border);
  background: color-mix(in oklab, var(--surface) 86%, var(--panel));
  flex-shrink: 0;
}

.chat-header-btn {
  width: 30px;
  height: 30px;
  border: 1px solid transparent;
  border-radius: 10px;
  background: transparent;
  color: var(--text-muted);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  flex-shrink: 0;
}

.chat-header-btn:hover {
  background: var(--bg);
  border-color: var(--border);
  color: var(--text);
}

.chat-header-btn svg {
  width: 16px;
  height: 16px;
  stroke: currentColor;
  fill: none;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.chat-panel-headings {
  min-width: 0;
  flex: 1;
}

.chat-panel-title {
  font-size: 13px;
  font-weight: 700;
  color: var(--text);
}

.chat-panel-subtitle {
  margin-top: 2px;
  font-size: 11px;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.chat-panel-body {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
}

.chat-view {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
}

.chat-view.chat-view-animate {
  animation: chat-view-in 180ms cubic-bezier(0.16, 1, 0.3, 1);
}

.chat-filter-wrap {
  padding: 10px 12px;
  border-bottom: 1px solid var(--border);
  flex-shrink: 0;
}

.chat-filter-input {
  width: 100%;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--bg);
  color: var(--text);
  font: inherit;
  font-size: 12px;
  padding: 8px 10px;
}

.chat-filter-input:focus {
  outline: none;
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--focus-ring);
}

.chat-people-list,
.chat-conv-messages {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
}

.chat-people-list {
  padding: 8px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.chat-person-item {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 10px;
  border: 1px solid transparent;
  border-radius: 12px;
  background: transparent;
  cursor: pointer;
  transition: background .12s, border-color .12s, transform .12s;
}

.chat-person-item:hover {
  background: color-mix(in oklab, var(--brand) 7%, var(--bg));
  border-color: color-mix(in oklab, var(--brand) 18%, var(--border));
  transform: translateY(-1px);
}

.chat-person-item.is-active {
  background: color-mix(in oklab, var(--brand) 10%, var(--bg));
  border-color: color-mix(in oklab, var(--brand) 24%, var(--border));
}

.chat-thread-avatar {
  width: 40px;
  height: 40px;
  border-radius: 14px;
  background: color-mix(in oklab, var(--brand) 12%, var(--surface));
  color: var(--brand-strong);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 700;
  position: relative;
  flex-shrink: 0;
}

.chat-thread-avatar .presence-dot {
  position: absolute;
  right: -1px;
  bottom: -1px;
  width: 12px;
  height: 12px;
  border-radius: 999px;
  border: 2px solid var(--surface);
}

.chat-thread-avatar .presence-dot.presence-online { background: #16a34a; }
.chat-thread-avatar .presence-dot.presence-recent,
.chat-thread-avatar .presence-dot.presence-away { background: #f59e0b; }
.chat-thread-avatar .presence-dot.presence-unknown { background: var(--panel-strong); }

.chat-thread-info {
  min-width: 0;
  flex: 1;
}

.chat-thread-topline,
.chat-thread-bottomline {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.chat-thread-topline {
  font-size: 12px;
}

.chat-thread-name {
  min-width: 0;
  color: var(--text);
  font-weight: 600;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.chat-thread-time {
  flex-shrink: 0;
  font-size: 10px;
  color: var(--text-muted);
}

.chat-thread-preview {
  min-width: 0;
  font-size: 11px;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.chat-thread-meta {
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 6px;
}

.chat-thread-unread {
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--brand);
  color: #fff;
  font-size: 10px;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.chat-presence-label {
  font-size: 10px;
  color: var(--text-muted);
}

.chat-empty {
  padding: 26px 18px;
  text-align: center;
  font-size: 12px;
  color: var(--text-muted);
}

.chat-empty strong {
  color: var(--text);
}

.chat-conv-view {
  background:
    linear-gradient(180deg, color-mix(in oklab, var(--surface) 78%, var(--bg)) 0%, var(--surface) 20%);
}

.chat-conv-messages {
  padding: 12px 12px 8px;
  display: flex;
  flex-direction: column;
  gap: 0;
}

.chat-msg {
  max-width: 82%;
  display: flex;
  flex-direction: column;
  gap: 3px;
}

.chat-msg + .chat-msg {
  margin-top: 8px;
}

.chat-msg.chat-msg-stack-continued {
  margin-top: 2px;
}

.chat-msg.chat-view-animate {
  animation: chat-message-in 180ms cubic-bezier(0.16, 1, 0.3, 1);
}

.chat-msg-out {
  align-self: flex-end;
  align-items: flex-end;
}

.chat-msg-in {
  align-self: flex-start;
  align-items: flex-start;
}

.chat-msg-bubble {
  padding: 8px 11px;
  border-radius: 14px;
  font-size: 12px;
  line-height: 1.45;
  white-space: pre-wrap;
  word-break: break-word;
}

.chat-msg-out .chat-msg-bubble {
  background: var(--brand);
  color: #fff;
  border-bottom-right-radius: 4px;
}

.chat-msg-out.chat-msg-stack-continued .chat-msg-bubble {
  border-top-right-radius: 8px;
}

.chat-msg-out.chat-msg-stack-has-next .chat-msg-bubble {
  border-bottom-right-radius: 8px;
}

.chat-msg-in .chat-msg-bubble {
  background: var(--bg);
  color: var(--text);
  border: 1px solid var(--border);
  border-bottom-left-radius: 4px;
}

.chat-msg-in.chat-msg-stack-continued .chat-msg-bubble {
  border-top-left-radius: 8px;
}

.chat-msg-in.chat-msg-stack-has-next .chat-msg-bubble {
  border-bottom-left-radius: 8px;
}

.chat-msg-time {
  font-size: 10px;
  color: var(--text-muted);
}

.chat-msg-pending .chat-msg-bubble {
  opacity: .8;
}

.chat-conv-compose {
  display: flex;
  align-items: flex-end;
  gap: 8px;
  padding: 10px 12px 12px;
  border-top: 1px solid var(--border);
  background: color-mix(in oklab, var(--surface) 90%, var(--panel));
  flex-shrink: 0;
}

.chat-conv-compose-main {
  flex: 1;
  min-width: 0;
}

.chat-conv-input {
  flex: 1;
  min-height: 38px;
  max-height: 108px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface);
  color: var(--text);
  font: inherit;
  font-size: 12px;
  line-height: 1.45;
  resize: none;
  padding: 9px 11px;
}

.chat-conv-input:focus {
  outline: none;
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--focus-ring);
}

.chat-compose-status {
  margin-top: 5px;
  font-size: 11px;
  color: var(--text-muted);
}

.chat-compose-status.is-error {
  color: var(--danger);
}

.chat-send-btn {
  height: 38px;
  padding: 0 14px;
  border: 1px solid var(--brand);
  border-radius: 12px;
  background: var(--brand);
  color: #fff;
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  flex-shrink: 0;
}

.chat-send-btn:hover:not(:disabled) {
  background: var(--brand-strong);
  border-color: var(--brand-strong);
}

.chat-send-btn:disabled {
  opacity: .45;
  cursor: default;
}

#chat-panel[hidden],
#chat-launch-btn[hidden],
#chat-unread-badge[hidden],
#chat-back-btn[hidden],
#chat-people-view[hidden],
#chat-conv-view[hidden] {
  display: none !important;
}

@keyframes chat-panel-in {
  from {
    opacity: 0;
    transform: translateY(8px) translateX(-6px) scale(.98);
  }
  to {
    opacity: 1;
    transform: translateY(0) scale(1);
  }
}

@keyframes chat-view-in {
  from {
    opacity: 0;
    transform: translateY(4px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes chat-message-in {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes chat-badge-pulse {
  0%, 100% {
    transform: scale(1);
    box-shadow: 0 0 0 0 color-mix(in oklab, var(--brand) 34%, transparent);
  }
  50% {
    transform: scale(1.06);
    box-shadow: 0 0 0 6px color-mix(in oklab, var(--brand) 0%, transparent);
  }
}

#profile-menu {
  position: absolute;
  bottom: -4px;
  left: calc(100% + 18px);
  min-width: 224px;
  z-index: 40;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 10px;
  box-shadow: var(--shadow-elevated);
  list-style: none;
  padding: 4px 0;
  margin: 0;
}
#profile-menu-identity {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 14px 9px;
}
#profile-menu-identity:empty { display: none; }
.profile-menu-who {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
}
#profile-menu-name {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
#profile-menu-email {
  font-size: 11.5px;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
#profile-menu-teams {
  font-size: 11px;
  color: var(--brand);
  white-space: normal;
  line-height: 1.3;
  margin-top: 3px;
}

/* ── teams management ───────────────────────────────────── */
#teams-view { height: 100%; min-height: 0; }
.teams-shell { height: 100%; display: grid; grid-template-columns: 240px minmax(0, 1fr); background: var(--bg); }
.teams-list-pane { border-right: 1px solid var(--border); background: var(--surface); padding: 28px 16px; overflow: auto; }
.teams-list-pane header { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 0 8px 20px; }
.teams-list-pane h1, .teams-main h2 { margin: 3px 0 0; color: var(--text); font-size: 22px; font-weight: 650; }
.teams-eyebrow { margin: 0; color: var(--text-muted); font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; }
.teams-list { display: grid; gap: 5px; }
.team-list-item { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px; min-height: 48px; border: 1px solid var(--border); border-radius: 8px; padding: 9px 12px; background: var(--surface); color: var(--text); cursor: pointer; text-align: left; transition: background .12s ease, border-color .12s ease; }
.team-list-item:hover, .team-list-item.active { border-color: color-mix(in oklab, var(--brand) 45%, var(--border)); background: color-mix(in oklab, var(--brand) 7%, var(--surface)); }
.team-list-item span { font-weight: 600; font-size: 13px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.team-list-item small { color: var(--text-muted); font-size: 11px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.teams-main { min-width: 0; overflow: auto; padding: 30px clamp(22px, 4vw, 56px); }
.teams-main-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 22px; }
.teams-main-actions { display: flex; align-items: center; gap: 8px; }
.teams-list-pane header button, .teams-main button, .team-card button {
	font: inherit;
	font-size: 12px;
	padding: 5px 12px;
	border: 1px solid var(--border);
	border-radius: var(--radius);
	background: var(--surface);
	color: var(--text-muted);
	cursor: pointer;
	transition: background .12s, border-color .12s, color .12s;
}
.teams-main button:hover:not(:disabled), .team-card button:hover:not(:disabled) { background: var(--bg); color: var(--text); }
.teams-list-pane header button.primary, .teams-main button.primary, .team-card button.primary { border-color: var(--brand); background: var(--brand); color: #fff7f2; }
.teams-list-pane header button.primary:hover:not(:disabled), .teams-main button.primary:hover:not(:disabled), .team-card button.primary:hover:not(:disabled) { border-color: var(--brand-strong); background: var(--brand-strong); color: #fff7f2; }
.teams-main button.danger, .team-card button.danger { border-color: color-mix(in oklab, var(--danger) 54%, var(--border)); background: var(--danger-soft); color: var(--danger); }
.teams-main button.danger:hover:not(:disabled), .team-card button.danger:hover:not(:disabled) { background: color-mix(in oklab, var(--danger) 18%, var(--danger-soft)); border-color: color-mix(in oklab, var(--danger) 64%, var(--border)); color: var(--danger); }
.teams-main button:disabled, .team-card button:disabled { opacity: .6; cursor: default; }
.teams-grid { display: grid; grid-template-columns: minmax(420px, 1.25fr) minmax(340px, .9fr); gap: 16px; align-items: start; }
.team-card { border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); overflow: hidden; box-shadow: var(--shadow-elevated); }
.team-visibility-card,
.team-approvals-card { grid-column: 1 / -1; }
.team-card > header { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; padding: 14px 16px; border-bottom: 1px solid var(--border); }
.team-card h3 { margin: 0 0 3px; color: var(--text); font-size: 13px; font-weight: 650; }
.team-card header p { margin: 0; color: var(--text-muted); font-size: 11.5px; }
.team-card header > span { min-width: 20px; height: 20px; padding: 0 7px; border-radius: 999px; background: color-mix(in oklab, var(--brand) 10%, var(--bg)); color: var(--brand); display: inline-flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; }
.team-user-search { padding: 12px 16px 8px; }
.team-user-search input { width: 100%; border: 1px solid var(--border); border-radius: var(--radius); background: var(--input-bg); color: var(--text); padding: 8px 11px; font-size: 12.5px; }
.team-user-search input:focus { outline: none; border-color: var(--brand); }
.team-user-results { padding: 0 16px; display: grid; gap: 4px; }
.team-user-results button { display: grid; grid-template-columns: 1fr auto; text-align: left; }
.team-user-results button span, .team-user-results button small { grid-column: 1; }
.team-user-results button b { grid-column: 2; grid-row: 1 / span 2; align-self: center; color: var(--brand); font-weight: 700; }
.team-member-list, .team-project-list { display: grid; }
.team-member-row, .team-project-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 11px 16px; border-top: 1px solid var(--border); transition: background .12s; }
.team-member-row:hover, .team-project-row:hover { background: color-mix(in oklab, var(--brand) 4%, var(--surface)); }
.team-member-row > div:first-child { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.team-member-row strong, .team-project-row strong { color: var(--text); font-size: 13px; font-weight: 600; }
.team-member-row span, .team-project-row small { color: var(--text-muted); font-size: 11.5px; }
.team-member-actions { display: flex; align-items: center; gap: 6px; }
.team-role-badge { display: inline-flex; align-items: center; padding: 2px 8px; border-radius: 10px; font-size: 10.5px; font-weight: 600; border: 1px solid var(--border); background: var(--bg); color: var(--text-muted); }
.team-role-badge.is-leader { color: #fff; background: var(--brand); border-color: var(--brand); text-shadow: 0 1px 2px rgba(0,0,0,.25); }
.team-project-row { justify-content: flex-start; cursor: pointer; }
.team-project-row > span { display: flex; flex-direction: column; gap: 4px; }
.team-project-row input { accent-color: var(--brand); }
.team-visibility-row { display: flex; align-items: center; gap: 18px; padding: 14px 16px; cursor: pointer; }
.team-visibility-row > span:first-child { display: flex; flex: 1 1 auto; min-width: 0; flex-direction: column; gap: 4px; }
.team-visibility-row strong { color: var(--text); font-size: 13px; font-weight: 600; }
.team-visibility-row small { max-width: 720px; color: var(--text-muted); font-size: 11.5px; line-height: 1.45; }
.team-visibility-row input { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.team-visibility-switch { position: relative; flex: 0 0 38px; width: 38px; height: 22px; border: 1px solid var(--border); border-radius: 999px; background: var(--panel); transition: background .15s, border-color .15s; }
.team-visibility-switch::after { content: ""; position: absolute; top: 3px; left: 3px; width: 14px; height: 14px; border-radius: 50%; background: var(--text-muted); transition: transform .18s cubic-bezier(.2, .8, .2, 1), background .15s; }
.team-visibility-row input:checked + .team-visibility-switch { border-color: var(--brand); background: var(--brand); }
.team-visibility-row input:checked + .team-visibility-switch::after { background: #fff; transform: translateX(16px); }
.team-visibility-row input:focus-visible + .team-visibility-switch { outline: 3px solid var(--focus-ring); outline-offset: 2px; }
.team-visibility-row input:disabled + .team-visibility-switch { opacity: .55; }
.team-empty-copy, .teams-empty { padding: 24px; color: var(--text-muted); font-size: 12.5px; }
.teams-empty h1 { margin-bottom: 8px; }
.resources-team-root + .resources-team-root {
  margin-top: 5px;
  padding-top: 5px;
  border-top: 1px solid var(--border);
}
@media (max-width: 980px) { .teams-grid { grid-template-columns: 1fr; } }
.profile-menu-sep {
  border-top: 1px solid var(--border);
  margin: 3px 0;
}
#profile-menu li button {
  display: block;
  width: 100%;
  padding: 8px 14px;
  background: none;
  border: none;
  text-align: left;
  font: inherit;
  font-size: 13px;
  color: var(--text);
  cursor: pointer;
}
#profile-menu li button:hover { background: color-mix(in oklab, var(--brand) 10%, var(--bg)); }
#profile-menu li button:disabled { color: var(--text-muted); cursor: default; }

@media (max-width: 720px) {
  #chat-panel {
    position: fixed;
    bottom: 12px;
    right: 12px;
    left: calc(var(--sidebar-w) + 12px);
    width: auto;
    height: min(68vh, 560px);
  }
}

/* ── shell ────────────────────────────────────────────────── */
#boot-loading-screen {
  position: fixed;
  inset: 0;
  z-index: 2000;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 32px;
  background: var(--bg);
}

#boot-loading-card {
  width: min(420px, 100%);
  min-height: 240px;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
  display: grid;
  place-items: center;
}

#boot-loading-content {
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 16px;
  text-align: center;
}

#boot-loading-brand {
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 12px;
}

#boot-loading-logo {
  width: 56px;
  height: 56px;
  display: block;
  margin: 0 auto;
  background: var(--text);
  -webkit-mask: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeQAAAHUCAYAAADr1FtUAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAvcpJREFUeJzsvQm0bstRHsZ7T096GtCAhIRAkQViUMAIYyYJLYTAiEliWBjsOGGFhWNYkCxA4ARjOw6ThbFYYJwEzMIBAmZYBisGBIZkRQRkIAYRGYMYhMQgkEDj0/CGe87/765O9d5d3V9V1z73DffePvec+t7777//vXv37t3dp76u6urq93iPQCAQCAQCgUAgEAgEAoFAIBAIBAKBQCAQCAQCgUAgEAgEAoHA+cU9Jyf/fc75yJ8Df4jKcfk3U+LPkvib/7uHT9zFn5MlHd98OB6+cHa5A4FAIBC4UDgS/SkT7cKftJIy5YVyWtZzfMyEzEnSFWbleyhTIeV7C4EfjsffOT09fdLs8gcCgUAgcNPj3it3P5zJ9e5cSJf/2TTkoh7Tsh1u5/iwkDVi/U2cZDkef3T2ewQCgUAgcFPj7ntPbhdTddGGK9GS+WQ4TlWbXqqZe72+pPQ65uYPmP0+gUAgEAjclLjn5MpDmE/fsRFtIiDkjZwpp0bIlPF6sgRNawb0XbPfKRAIBAKBmxKs2b52JdaUhISFaIV0syZhOaXSHURjPizHd/P3R8x+r0AgEAgEbgqcnh5vLd+HJX31RqYpdYKlDGRbyTfBcaXt9dw6v3xgYi8OYcfCyXxxWVJ6VUp02+z3DAQCgUDgpsAhLe9Hm3ZrSXg9pjZ/TPWz/VO9sEm0aupkfVq1ZSbmxHy//MPZ7xgIBAKBwE2BOo+8UF6WVRdunNy0YSrLn5rXddeg7byzOHvlasYun3xclj9faPmo2e8ZCAQCgcC5BnPmK8pSJyqku5GqAXVzNvWTVTMu/8t9TMB0Wo9P6+9CyvcsSzq9cnLyy4fTw0Nmv28gEAgEAucSzLRfSF2jXSoB02aypqr5on+XEPFKyinXRcuSACzYKfclVWt+Szrcm2h53ux3DgQCgUDg3IG58jFZljClZnq2XtbiyiXXYM0ypa44b0ug+r3Uzdm0as2V0dPrElFE+goEAoFAAMEceWcl0ANMFGOgkAzHqSvKama5BRSps8zosV0Oijf3Mdd55hLpK1H6p8vxeMvs9w8EAoFA4FyA6fEXqon6uJqaadCEUesFcm7HWivGueb+vVSqLtdPq5mcH7q8kTXmD5xdB4FAIBAITAcT4gtzc8Rqy51Qux1/UyNaq0HX7aIII3zlqlmjSbw4kh2qQp3S8fgLKaVHzK6LQCAQCASmIW3zyFfyun64EebRIeRDbuuSN1W6q8FbaOt6uBgNWg6EkA9b3jWwSHUoY0K+i+j4RbPrIxAIBAKBaViW5bUbabaoXBnIV5ZDYRCQloTU76Y/kzqTm7e1HB9rdodKyid509KZl5c/SDk9fXadBAKBQCBww8Ek+B1Algm+0WErgdbblyJvVI3qMvBwEm27pJUIX6IpF7N1ojXsZj6ppFw09bs5Ozouy4/PrpdAIBAIBG4omASfVQn4ROZ1gTiRanGuWEJsivZMXYluHtdJtGatRmewePd1zMXcnbqzduLMC0l/wez6CQQCgUDghoBJ7zb+3FMJWczLSJioPQODdo9rymmh7sSF5N3momuwEXQOa8Su8t8s4at2vbI6pVezrv242fUUCAQCgcB1x5LTHzMBnm7ez+LApT7la4E1T0Ka49IoNcusTnbNuOvMdmMLzHudV66qNz+cvml2PQUCgUAgcF2RUvqujTCpmImPoAmjxoykib87/1I1eVvCHQlYe2KTJf9Be65BRfJb+esvz66vQCAQCASuC5gPn1FJUCJq2TlkXI8sy5ZS14CNTqydsmVimEhieZnEkBCJWZ6vSHn1B6f0i0TpkbPrLRAIBAKBawqmyodkasuPjoYwkUQX0GiBQxV5EnXbdjdXb5C8t3u75qzuhwXO1iwuu0qV0UD5P/ZdDgQCgcDFArPdn1XCPORutrYfnOdta5sMfYuiu2rSRuvNY35kzeDyA5ZNtWAlaSvf+uziiHZlWdKbl7R83Oz6CwQCgUDgmoDJ7XuBBMU87G00gaSKc8j9etegMS62TWeJOju/ZQ5bNGgxp6dE6ZCI7uKLV/hzPByOv8zs/6jZ9RgIBAKBwIMCk9x/VUmvBOgom0DYdcjVQWsgTkuiuU0Z69OpK8+E3tUy32yWRFkOh3x0GZSSzp8Xz67LQCAQCAQeMJjLnpT7HO0RyG7TULXuu65EAjotJAnasswiN9u1OIkBiUswsNWuLU5iMqu85afnkrO+f/DE7t7YaXkbX33q7DoNBAKBQOB+g9nvIcxwb6ykfGLIz/IheFG3c0nOCamaG9H8TXihkbpvCm+OXZJvwiL1oCJ98LClLeE5f4SPY9/lQCAQCJx/MGndCsf/PG9OXSdAhip4B42hMO0SJ3ONgIDbDo9dE+434wAg1TRC8lebg079dCPlY/1xN389e2YdBwKBQCBwn8CEdXv5ZvL6iLwR2JXsxbNOg4e0Upm7ydlTgLejzt7J8b4mINf27IzatyFh/AbipuqcRmKCT/y41/D3o2fXdSAQCAQC9wlMWoW4TghXG9f5X2pk2CJ8iKIr2uiCxAmMq9cZbxfFgWsnfCaweCd/ew1JuRyZeWq1D3P5fcoJv2F2HQcCgUAgMIB56r2YqJ7DbPUS/n4ZbdqxhLf0ljUJ4TVyTV07bSZpSNMI3dxvzc7yOBsYxJl7JsnTXrPnJNCJaMoyMHhHouUjsR6OyzHmmgOBQCBwY8BEdEui9IRlWZ7Pxz+ciF6fNxO1ECdsLLEG3Frgmud8pUl606FrTGsSV2qZOE7DqmVt/s46T4I55EFjlkOZa8bTSOTrfsu5Dwgk8Mk6x7yk44/NbpNAIBAIXACkZbk1pXTbkpbbvOuU6HFMV8+jvHzXkehOakQl64AbiWHwDtA4lS+V8N4i5ubOwooRrSarJ5Q1aY75+79MuazpGhT1OiTIetmUd/9pPX1IafmiG912gUAgELjAYHZ5OLPSZyZafoSJ+t0L9eVJRdvlnzUEJYkX8pL1GmEx6S79NuVEZTXZRq5A9sjGfd9jkucgVysNGS+gZmyifY1Mbcq4l/+2XrlPb8vc8mF94bSUJV9Pmd2GgUAgELgJQcUEnfOHMx3+IDONxKIWJCEcauEwqc+jkvKgrmZlR9OE+WBw9FpNyllcsrRpm3rMD03o9QE42ezNOwvxeqS/R8Y5j/PdeF3M1bZM1OtmC7zNg5mX5up1HggEAoHALpgsnsifL06JfjdX7U4IM2ttss6X0pG6Vrxphmq3JqsBAzWasJRwXXJAD2lLiqixVkJ1ncTaN9rQ+/3KJG5N65361WACrOTU8u0favfWullvSymnZbtpOSGiT5zd1oFAIBA4Z2BKejrzxA+w6vnWQqzU1dnNBE1d+93YJRnyGoiyLzeyFKwJGglsvdY1WyLCO3Qefa6aVs26rWHWmrF6pjVG4xwxaY2ZMJ+1hNTot5E09ce1ONrWLC6m62O1GKxWBcluWZZX8dcd0g4ppfDEDgQCgcsGJoVnMy38G2aIO4GkikZcNn44oT4HLKSyKYPU1gyjibcSctEASeZThZWalks0aKDCbQmYDM29kgbXGSukft0J8tWo1K5Thp0pFHkqzR4SiGaMSnZ/Vo+zDcFG1BpmnDuXz7o/NG3OX/9odn8IBAKBwA0E88ZjWAt7caL0+so3sob2nmp6rk5ICYlkICrz2w+8oeeHMa0Qpyw7sqZnuI8k3JZ+Pok9O5loWm0bp7VMyeRLhPlX7TrLnLOnRLc8PQsA5bpdM6lL6gwOKKS+5bjU+715I+ZS72/nz1+d3UcCgUAgcJ1AlB67pOVrjsfDmxZG7rGkT1LVhnMPAbmaV2EuFndmaiRjiPRImpDbt5h9ySq2fftD5eGMNmO4PytzckvZ7u9nVQbtF2rlkLyZmMmkwUHBgoXVRanPJ6XJI3DOHTX0SsokbVHqvgRLKW1yTES/ziOHR87uN4FAIBC4RmCG+FQm4jdV4Y+kg8uRkKIsgQmRgjm5HZntEJU2nPrzqFPXmHawL1csdQpXq5l93W8jcaOHyihiZwnTMCgw5ygtusD9aTvbXegzypxdzdjWQIDl2+KitBelFroz1Xf5ttl9KBAIBAIPECzIn8QK2z9NaXkncAETWVkfTEeiTdslvalD6grtLsSDGdRDtdHCAoqiNWcDCal/7ccQmDWNExbS2oSbymsct9v9eMNW+J41tUAmeUguv9UIoRux5YFaCyf1IjJ4wchgGX6X9z7m5jCWmka9pPQ2fvJHXr3lA4FAIDAdLMVvY9n9WSzefz9rAjxlQX/Im7+znQ9GXjPnPGyERbI22FzMWkNETS/Dt1AxIRW2A71uedSgyRs1SAAOUXeVOTn3eWG0EAze1AK985R6Pawfu1xZab5SJueTlmoh95ZmyYDDmtePW8bpVxciN1paIBAIBG4wmC9u0b/zExOll5OenzzNfcMDWWaD85iUXWJusGSxmDTWy3jLm5qJ2rXRauJR14R4lbk2g/qNAwDCSFyi2ZIi2aR09Bb8Wo8JrJauGHpw4CJQp3Hv5dxHFH2V1NJ/r9kskCrL++n5bcJiYR1I+jWwCN9RBlgvnNX/AoFAIGDA2tLzU0pvAj1NHIPAKasdy7yrMVF3M6pmqk7WpIinE0jqpJRovL+pe0AueH0gO3VzJ8kFnop5J3PsafXw+Gbm3og1DXGxvRtVYaxKjklb8Xp8MRmUENy+boaR+v2tDUi8yHtbYPlkQCVLpLYJ/Zx/n68+fnY/DAQCgUsL1ob/VqLlLhDYxTMXiRj35lVrgbMmxsVhJV8D7BdljrMtZ5IfNYV1HDOTsK45FknI0wyh0IQOXS0ZtWcphyhT9J6UmoaPpmrCfL1339JLaBCVrSQia25fSbbXJuFGFLb6sRkqCbfEMkAqEdHEO37dfCMl+rLZfTIQCAQuFZiIv37J9K4qsddwlSzrRWPamY/s8ZMzasUjAZr7cH602WHBqNrX++pvo7ySumZZB041461hu6Z9knp6K4M8gMD8Ljyo6sEhP6MEN5Z2udi8d7slb4OM5usFAxqz3MrXsHNzpGsT3VhV7Ri1ZBxwrdeWRH/GNfXxs/toIBAIXFgstNzGAvo7aFsfXKRzmT+UueEjkMCS9VyxRNFq7OByQceSR62QII7VQshxnTOo8UibO3bz3yPkTtg0aM6G4ODHUNQlERnWhpII1yfICy+J2ryxqMpbPNHXk2p9WHsEYVpvrfMWmIRM3mbEkMeC05anCtwi+0hLO5ffxVpSBmqH4/H4c7P7bCAQCFwosMS9lT/fn3K6Z+OBtgRGmZwbx2hNFbycrYOy5ZNGpPAb51eBhzr1NK/pZoDVWVrNcyAoUyBbXnxH1Hpzfz/M3tN+XU21aazthOF5SGc8pdVzqWu1koG9bvmW1AN0eYYBjGPtcJtRBmJiAZFAIyXa2sfM7sOBQCBwUyMth4eycH9x3kIp5iyaLzWnJPHWRSLGZUWellkvrtzghcBM8I2kj9k0L23q343ggDcwP0siMohAYkfSxecPcSqhjH3ZUtcke56EpE5wb+NDM7CpUTn7emJbP/CUQUnuSakNhtr7g8q7vV9X0nUwsZ6DdeqyD/K0cPSgP+Q2WsjPmd2fA4FA4KYEy9CvpDWWtIqgZTTGjWwcr2MktgU0Q0vW8Bm0S5ynbOwCz4FlVetptRBXmC3Lamdfs1ufQ3b/415GLHMWltsh8JZH0vmdSWh58xA3F5QzWJJD/QJdgyZTBtLXk1RN8ubnV8evXY33rPfAMurf69ptOuZOymt5+MKjZvfrQCAQuCmQaLmFJecLc91piTYPWlg7TJ5wJvNBrTFtNmJC0s3Z2xaxI1HWXlxAdp1kRnK2ZGHKpkkHVFSC+4VwRxLta36NSb2prFpLFK/vcTML68SmnyLPoJYW68Ek757PvUAq2MhSq4/aFcgHomgq87au75afHZjYj9zfPbK3dy/9597tIn3/7D4eCAQC5x4sRz+IUnodkMZRC+JuJgbhC4K/yPe2KgiuqePNvNxIoAnt+sFVOFrIbyTdPazrFUu8LQCHchImW4amjasHOeSyJR3jYysShjLbgYJ9RjdEgxnbxL/c6hhGC0CACWqgPwe3bFSltVq08bTW8/Xwhu2nGeS0d8z6fK7bW0L5O6GL2byU/fWz+3kgEAicW7D8fvSSlldsqtxKrFfyGD0LI2yhnpUUb4DUBuGMQtpK+aUaeJ15Yksc/VZ45gLHjXCgDDbQyHqZcN4315EA5AOJxdxdt0McPcKgfIb8cs6kCNjmjVXh1Y3N37msCdVOVGcdeIVao433t3TI7JCXDd+J5fZ8BfD5ddphDX9yz+z+HggEAucSzBf/mLpn7AnLzrKUpZCP0o5hTnMIxAHSG8ltJ/7ypjElRYji87PdQ5qAeh591yEhAq2Jdscyov24zDaPDOct0RjtsC3dUgRkNFiqBQVNnrCuUMvcHNL67heK1HuepB9lKk2/XxLd2pI4QUq41mNrZiwDuXWAsG1s60rykjxWz+u0hIYcCAQCCgvRs5i/3r4JSiZhWgN6LCWmQ96cccQEieuJqQthom5oxeXFIqs3wkYW0PJ6IChMVAlV56vJhyo5Iu9W72T0a4ICwd2+Nmmf0u91Ck+kL1g+HwYVWVWJQ3NCjL14KZn3AOIjGbxAdvDsvn6Ksr1Wy0ZjPGt8VB+M+de9s/I4JHlxGJP0EfM6EAgEClgq3spC8XeqdOyBO7oGVzU3I883nD3vOJpVUfOS/JAgPC3XCHiVb9K8MpQPtEwkffQ2HgYB+BqWVdU3aLFW82z50+D4pjTnbI77cxWz9+gn9QRq8nmEN4iwRVfP0fmoDSrIKV87TjWRnYZA7/uyjOxYCX2N3la/8zEdf3F2/w8EAoFzAZaXz0uUroAwrdpw2wIIpbiYLu0crhL8oAmpmMh18S0lPcfoschSlcKkOUgPEHLOBLol1bJ1EugmXGSSMv9bCALX+bbBhhBsapqcKld9BmkSMubeVn5XZaxVkQjTD+yPJNhfcf2dyNxjbhfyd+q255F12+K7y/t5VgDJ1zr2yTWZ5nAsKATzxluM6yWlO2f3/0AgEJiGhdK6LSILxFuY715RBao1Q/vzjJoxdjyHW4JFk4DSiOszjKY2kn/OmliqpoikbLRKRRwbJ0KmovmX/3FJ1PieuZmJm82detltubJzjsy3XMedlJxv6kujVNmQdGnv+Vkvb/LKiRrvUFr0Vqc+fS+XsDzDYMVMX7TpDSTx6pOwrrF+O49JHj377yEQCASmgiXkC1kY3lWF5abtjF7H1lMWP8gMyC+iOQrTtnup54ny3+SfLMmD6XOdP24kSt1/yWp5loxEwQSSVtoe9SLWgCa6zGqQAOzm1Uvyo1u1YkK5hjW7WB/DPLP5gaRLusrrb3QY09QLJDnUt3mGaPtDfRpyJnsNSVvKeqiffEzLf5z9NxAIBAJTwbLwUSwf/58qTItn9OlqF5YwjmreUBGHNVE3gSxaJ1nB36hIBZBAc/ZKskDqdp5XqYUg5NsAwBD/nnbqfnQ5DIlTe7fRJL5dGQgJytryNmyszf3bRbvvs4wnkFjNdTLl8Ld6xJqrBVQRy0z5bdt6H2+QgAFOrGVFylTe8TTXwVA6HP7B7L+DQCAQmAoWiF9A21pi1FaaoKWsiEJrTZWwIS7EWWZbS3hdemtNkLJehgROS3Q0JIFCvhxBeEylBVbuIXwneYX6vDU5mFXro8d3gPeTqmklxAEKziPLrWYdNkGK9bajfk7X9g2dqoFAJz9d/8Kohrzr9ZYlErKQeNtruo4ppIlwHbdHxOAbQPC6ymy99jPq9fMGboIPnf13EAgEAjccKS/rXDFRuv3kcPqLVWAWEj4FISvOOdtOPOkMRx9LFDrKlXx0kJAxD6tBVYme4CShYEftzSuHpJUcPBNseyZpE6otg5Rf0uK9kk42hSA1AuhjDW9eFUy+Zl2z/NvXaQFptqSyXGnLq41q7LKydn9N29kf0uGgC6+vecMAxg6E1k+y5EySVjl16Txp3XTyx1Kih8z+mwgEAoFpSGn5sJPjEUniaIT1AsJVCVWQ8vVcWy/rEUEXz6sFvOaV8Fqbj8Tn47X2oXYOSaX5Q1ntUQjE0eZyu6dmnAheWZXbZOwkavnTDmGtj5AAHMMyaZV14zbS552gX+pOqYsEr18N6HVc4jt3S13CHP9QVZT7Tk943QxcmnMbXof6h7XKKd3NXx85++8gEAgEbjiWZbm1HWf61134D1qjZQv3uksJ/RC03Ua2exiuk7q/5QP5qfDTSLaGNzsx9EnUVS9ziY2G+9uRNc1asqfxvW25vfLZrMxTNbnpFxrHCvqyyhB2fabhntFRjNoNOKDolUpgJaA+KMvdG19tMMJXrqSUymYRZVrklEcmXzvzbyEQCASmg4XmI1g+3lnFriw1QYmPWsyiz6+yuIhfs9+w4q5Ni6KB6PFbPKMNyTftDZy42j1J308uATeSGE3jGSZpYfmW1Rbb+/WyK+1Tad06+56mpYNn2vJ5AxxrmpYlWECK4Hne7eLJKM62feyzpO7toESsE8eM769fU+pvUSRvy9b3NEbHrWIeeQ0leq/ZfweBQCAwFSwP/0bzCqbmOGQ2uvfVNRT2QhBN49S6pKOxGkIgeS7Z+3seem5Ta2e7pKI0UU2q/Z0g//V/nJc162x1sTT3DCRq7rP+V41YDWF7UPPQqBFL/foP0FBhMuFALNjDfaTbvA5WBvO258Ql5yXwh7yjRN1a0rZH9ufO/hsIBAKB6WC5+QoRnCm1qEiiCSUlWrXwFY5ahSzpZIogtvwa4xO5c5XeD0UblCW+dIZAFNSEfN1BCTRWWFrTi2K8sFPTjOUGiCjW3y+LN/HmdA2rmrA+2rElMRwotDRA3o2sya9ybw6ccl/ebIozAAcz8BmCduBjoExDzlLVenlVby58CbSoyPGqJfOPt5bdwWb/DQQCgcBULLQ89rgs7wBBKfN6BL8JiKURnZHc6GGb4JKQIs5DIsP2c5QxvTBhJ04iq9V62jBca+txrTbtURYykH5uNut125jCDj6wWhzywnXaMDLQzxpN6V4ZnfuE91QdkH+vB9u+um30nTJ9jJp8f6byp+sVkzsRy3Kxhcc0Xzf7byAQCASmY0nLpy0piQnxAIK5ER/1OWN/Ujirk2REt+Js6hS+xVNuJD3YR5P53m5vPK3JCx6Cg4Ptty6RXD9KjuZ9rPaIJDdq3kDYTvlRW7TapdAVEl5POU4LqOxJhZfsXAiJpFxtEGSeb+fvLbznam2XVPltRraepKxtP+xE9Fr+ftzsv4FAIBCYjpTTS6pwPGXpeQIC2mpospECyt09whi0rP6TNtdlbQZW99D4bMjAmFXpTIJRGiiopV01BZ9i1CKdlb6Sh/yvr0B5abfsPXtTXimr1ifz8Evdt5c4QXmH9Nv7pzpESBBGxbSVKqd9D7dw+sZx3FHb9Vjbv3hS/43Z/T8QCASmI1G65XA8vrwKzBMWkAttexWvmkvu3q/yG83VJswiSF3gJYeYxPvH3GfktyY/0qfac+Wa1RrxUGueWkv1nJ2cKBmNcwi+zWMUCVPTSDUn4TPBS1ozYi/3ntI6vJd3XV8bnKdx4KJf39aJOZBn92kHp93yGsFs8EeTZ5W+9Mv8edTsv4FAIBCYDhaMT2YWeJcjyEdqQC1uZKvUhXgnS01mOgJURlLXMt9qddm5bjQ4UxowfeeRMJDM9ZXxOQXoeKTKZ1nMHNtBijdfju9qzb171oZ2DifC82A2330vC29Agw0/Evt2LF73+Fz8lv2KcSncNtCjfDzmFB7UgUAgUMCC8ZnL0kIkiynTkoPRRAfTpLj/wlKodlE8mCn7S4pWxiTUJEdSFsLoy2OgBNQCTKz5iHcwvpN1HvJsr6KJLngCioAkswdbfu865aw3ZNieoOrHg9xnByqYvgXUsNnDNhXWsW54hsnTOteNRZd6BY92naSdE7+E8iLFe/9hs/t/IBAInAuwsPzkLjW9IBBnmUDJnkPzpUpgbjDzzqK99pXOtTx2FyHShGILp0gzkx48pCy+X4mwrFK0fZKl/mDzOoqeaKyvofj6PUa7cdaE3gi3JjeDJHdpmNSdeb5qijPm493vHfQBV/bfHd+p+CKssc75Ncpc8cfM7vuBQCBwbpBS+gcgQO12fXvOWmdpb/V7lcVWyzVak6v5yrHecxeEPrlk067jup7t+XoLv07MLT1ZMzSWbSBMGsnMviMQpiqbPHsvfwmagvcgkIjzGYMneYDN37N8eITuvZfVi/cIGIHL4woRr2btlJaiFcdmEIFAICBgwfgyI7iRqJAAlInUYWPZd3APlgAsGVlt087PQkARsiSFREAZ1xJDNKxKulJ+JMdUw3h4BGPLj+jhKX3i895b4O3atFcvmCbvpM9ZtcsQjKNdoq1ezEClXfbm7+Vf+3ybTkzRlPWyqwOfWpfMJUpFQ/4k6X98fMvM/h8IBALnAsuy/GkVxofiRW3YxmzkMJpFqwomGwN06UydFcE51yUsiMRlSfao7xvX8ZLWNpEU5Pr6HvBgJA98P9QoVflq/nasgc/1vMpz1oTrkbnZb7ktLpYB0VILBBwLFOs7bKn6JX1+GEyY75YYywdM7Wn79rxt3/KpYS9X7v8lPn7s7H4fCAQC5wrHdPyT3InJmjEp72tjKOhBre0ULIK8p1Nk7Hj8tvtwv1zUeGXjAzB3K2ctzDsBiwiZN60fygXXkedoMdSVoDToRb2nIcoPTVSk6heHEKiBWs245UP6Gj7fHmP8aSH5lo5qLE98KThojmSkn+Uem2Vscm1wxkvlv5ReNLvPBwKBwLkCS8lbmbGKZrw615DS5HALPbMTkqIJD1a424RWAR0gc7lV405W82qRnRxyElJFDdPR3FxTfK7K7o4mOQSRTuqkfmFPE8X3lmdSztZPTRH93hx7Ntc84EAGf6/Hnsar6rOn3murs95PfA6A2Ok3KTyoA4FAQIPl4/ssh+MW/pKSbD+4kcTepvUicMe5xkHY64Omlcr9Off4xPaerkWLoXtI2MgFL3narl9+Q3K43keVc4MokPY8XifzGx3g0JFpJahxk4y2OYe9zy0XEdn3I68edwYH9jqePYvs7f1L7pYJMUfLvPExbYO88jny+5btOT94dp8PBAKBcwcWjo+mhU5A8G+k0U2mlmxGL2JSQt7MMWshTs1Em+zkr5BvMrfgj07QvRieVrxpy6D3wdfoaKW14E6aI40n+DjPTFUjV0QveW4fauukZT3wAb7F49gOFLAyVPlF3ex14kbysnmsx0NosX541iDMXSee+wBCDTj4l7xrufC9s/t7IBAInEuwjHwcy857mySmjNpZznZrvn7czpN2nkLhLNdRc9oIldY9bAd1D9A2sdesadfZDuZVUz6ZZm3nV+s1lFlf0+UnfLzhN3M+2fNWQy6Fl6U9QsAlfyGrtgZ3uz6G91RonuaEdYCDCFs/HnnCK+DrmGfXWtu5Hwcx0ncWOHekjfjfxscfPru/BwKBwLlEXsmYroCAF5IAL2UVFco3d2oN2gptTLMtqaEeNxM+6DwmGVpNVEhSHi9pPVJFMrXla8+EAYGXh52zxby84/oONnZ2u4b7QxfSPcmdnDcNOeV3chX9Oh9fyT1i1RGegdYHLN9ApOQvAXNofpf37QWtlY/nse5lSVPxFHspn7h1dn8PBAKBcwkWlo/PW1xq2RwiGcHadrkH4S/C19O6PEepnl7vP7D9U0l62XW0krIoDmgkRFlp3y6h0qgpNpIHbZsgzwzH1kR/1kAEnZOtqRq1yKIFC9mupmlO/K6F0is4xbdwRT2Gzz0mawcozCfDs9p4glqoT1VXdr5dDRhoWC3WkmIm8v5eX7DfUuYr9ezb+d9nzu7rgUAgcG7BQvKxKadCBksNiCHEJYpr3e+3m41RWueRsPY0KcdsSpXo11ubWbgrzVv6Wo6BxCVv0vlb2HW+kpmUt85numZhPKccqeACkiS+o5yv9UZowj3JndgO/OS7+Pt/5c+n8ucO/tzK5bmtts9zap6nuZMcFvFYS9Se2QcS2wYNnv8bll07rqkBFA401HNpPMR3lsHG+vy0LD80u58HAoHAuUYuDlyZ7srdoUgErDF/NhICwjHLnTQcckZ9LVENdomRNFLSGq6aiyZdDiJD8Ek/z5pvoQDwjtp5C9/D+43f2omLVJ3hAKSb+ft8vNx3PB7Tq/j7c/hzh20bTvzQ8s2V8pL64O6p7EcLQ0KWCFuq6s179Chc43vaEYe9f6+OUurruPPheHwDfz29vAdFpK1AIBDwUUiAhWQh45ONNHCHI0JCSVrmdiFMo1BG+Q1CfAie1QR6asrpcFFrbopUCB+yQ566rHBtIBFz3h7LoUdqe3kWbMuYiOT95XPvsiz/hL8fc5X2WeM3M8H9Vs1PNE4ss//8uvQpDddUnfT3HgnbeZ0BnkVEylaWNn3tjenJgUAgcBODBeaTj2nxTI2wO1ICEgQOJn3CiG6SDI2wdoS2MhG3uJf9N/JtxmTwiMH7eYdYyGYyOHQlVYxhjtTWFXhGZ1y2VB208r18oXirl/nT8n3g37/D3x90P9vp/WrRYF5f4mzjNLcaNImW3M9gaLTWRO0U1rHUpY0zjQM0MUdDPZCY4MvJ37he/TYQCAQuFFhk3pZoNVMX6VmDUQwmaiQjMe1aTVmuD/vxkpD6JvPtOlVL5uueuE2tU/nIJvXu/C7GqLYkCvOoXeOGYuC885HMvaYu9sovRLzApxDUlfop+d7N456f4uNHPaC2ovyl+Cyt6sLggVod9Ksw2IDEbeCF1/V7tbloWTcsaTCmtgwSDrntylQCyORPu9b9NRAIBC4sEqU/MII1GVKz2iySkSWunDthI1HA9cHXyqq+SOr2A9dByev54LytZGvfwT6bnGOcb/XmgTFdc8aq58qcbgvqURO/k1nw7+cHOW/Kef0a1A9qylgX8B7DOulO2R22Qbw6sQONbirf2hr2Kl4HTrFFYiAQCNwfsCx9HQhdjKK0/aZBOFvB7Yl7e9beL3TgaWf1/GZGRU0Vjm16Qer3DPO0ch3PefOumKcJ95hsGjtoEDO1eD+Xu9/IXx/P1XhNHJj4IXfWZ59kbYnwyj/We08E6drpnfogeVfrVY/m+lKeshHEPTmWMgUCgcD9Ayt+v1ooI23zfXoedVxDe5YW6WlocoDHlhDbF+nzNj+7/y/Bfda8SrX8NTOJujXmCwXAa5IHXvM0YymX5H+aIaQlU/db+Pujr2V75W398cGUpWvLevCEbbMOUrDS5MjUQdb30tY9unOfjptN7b3X30zGP3st3zcQCAQuBVh4/h9VIpddm44oiDvJkWc2BihTMC5XGshbq9Kpk6HdQpBavnibjRltCRq3o6gkRVA+fIQi37b7E6iCHqlR0oMJnDttpun1AuU/zvfTUeu+gvP/m/W5aD6mDKr7Vtp2NJrqYa9Lp56z/m38wHrdiZl8rYdjWgcJz7ke7xwIBAIXGiyTv6YKWQwssQCnemZLT3Otx6gEq/vwykZkWsdV5Ai3NEL0teqBJORYIn4BoXazteSFxNsL7zqJ2ehXeCzEVBPS6/nrA65nu3H+v1IfJ1qyDTwi+xnv1VfSzdVHLWfUr3yhlnxsJ9Py0uv5zoFAIHBhwTL0o3PX8iBOMlXP3EEwIynLb+sEhES3ix3z6CD5gQOGcpjQj3jVKztmOmiLVt03H7lHrlmHt3phNfd//g1qu3fnUUOVstkymvdKOCVh3zlTd5SzgxzUjJtDF4977uHTH3cj3jsQCAQuHFiqPrGSppg8q9aaPCLzSMn7PhNGG0VgvrLdYs6NdMkjGu+562ACXmAsN6m9lD3tEedfpV6Q9MoysGJNWNcRU153orrmc8RngZ/1mYRLh1UVw/zwWL/4zt77S/3i+yZTJ8UcfxdtG42c8sN+5Ea9dyAQCFw4sCC947CkgyYoRXioCXWnoQQk14/P0qQxZRP6ZAlQpe/BPdZdFylrbY5sOrOMSlORkGrRYm0Qi/U4jeEhpUy4rCdLPlQDe+Qt2tS9/PnKG91+TMY/m/tAYacNCN9DvXPWbWtDdnYTfF+uJfce6vufLETvzLBFIrdChL4MBAKB+wuWvb9UJfNS/7Wex0h/Nsazvd6pesdMnPc1tPqb2taGuc/1QloSBzP0kpZ8JY3zWPUMk/7M8q1ERJqsGkEXUkpL+lfz2m8NaVqU5JWQadhQAvR/+GmOrdUBr+H8sPxeP2WEtCT6yVnvHggEAhcGKS0/VoWsOP3IPKhyTILrVoBbEvOEfc6W3PVGDcP9NJqxuybXo0FhuCnU1zG9Z4Yey9O9x8X7GtNbzbg/n/IbuTjvO6v9uAy35E1L3SwcSRFrNt+eJQLfsdcVKS95JGPxLyiJ3pzrZhCBQCAQeBBYKH0paKJVIBNqjRh5SRLi8ic0d1otNZvrkAVco6apIlFA2mHf3fU+dReRzd8rk81/j7DxXfFaOV/milctlFX4u/nks2e3Yd42/TjL23wIVbrz/tk57tMTW3CPzWS9aeLfMPvdA4FA4EKAFakPrLGfT0mbhO0csqdplS+z3ldt5OCZPZEguvCndo8ACd88l9pAgEveInpRTyYGdRhgoLVWLc9qzmCmgB5ht2VDucybJvrf+eyts9uwgMvzV2vF4PyuVIk3ddDbi4a2wfY5wj09BvWS/pi/njj7vQOBQOCmRqItRCML1FuO24YRxUtKacAAq91qoT7e0fVVJxtyAnbkZnbWREn6es4SUctQSOqEfoaW1/jYBhBBwu3ew/0qEvdKRssxvYO/nja5GRW4PH8H3sEjWNsmOwMs5Xm+vi7BtAKtA7f8Ge254bQVCAQCDx7LsvyfleWKQxLODaKGrEy/1AT1nsx3HMEaqakbfb1s0Lx1otS1WauRt4Q0Fm4wXxtW3jOlY0mpDgh+SOovUzo3ZMQvID4Ax2wHVns1PQ5krMleWQco0a/Nfs9AIBC4cGBm+Za8aaF9O0AadkeypJSN0HbM0zv37xGCf7xn5m5c2wzT+m7aeb58W+3Rmq0PkB69qAvu5jq7rlG2Hii4bA/jzx859eWY+9X7JXMs5m6pKxmkvTWH01YgEAhcezCxPLOK5tPc5wW7JzUpkmpnkb2q1rsJdJ92x/2IgUszBpUgnWA7oMXea8yt1rQq0ULOWvI0aH2qPJqgJEJZyfdfz26zs8BFfCR/3pTboGqwcMhX+QfnmMFrvLXVoX/WCv2O2e8XCAQCFxZLopVsqJNeGgW4pkpzDQhNBL3adtCkGyaaNVGb7GnMZ+/+BEm8tJX0h0tUr3kOa0JI5dq9fOIjZrfX1cDFfgqX9UreWsyxYCgyxsGMtLsQePGgvqdeexd/pi3jCgQCgQuP5bD8/iajCymnxQhlrcPWhB4ZAssljwmNNuvmYT4ezjJd1zIQaoNyD/VyqznmPc9p/NS1temPZrfVfQVR+gT97hImk/BdczZL1+pZWU8sg5BiNfm22e8UCAQCFxpMYV9MTQgPS5xsqEQU21Yz9o41cXaa7uTn0u6wBMkSKRaE9M96DznPJ7X8Sr5TFmcxGrTEbr6l/C9mt9V9AZd085an/CVj/bnwPOVl2qLgz7jWnjb5tQKBQOBig4Xtk6iH0UDBXecUiUhzoCU0DNmEWmjSyRtwHbPNdNPitD4umrd8JRruV8uVUz2l5pKhFNZOjgXUplo97/q82W11f8El//r6ghhq1Jqr8Vu04tNczf7HJf1zPr695Ec5ljIFAoHAdcOS0ttynyNFklrJiSpBeRO+DpnBOW+D+kHJps4OdsN7nZZ2zNiQsR1Q2AHBWRZ0dFSTvLZAF2ndFOG9ZrfTAwGX+x/WF6rv404ztPqlvnFI2av4Th7JPGX2OwQCgcClwLIs3wmEZGNRt5jEQlJNC/WNnwOD9rxHy7GcMM+zzlRYHqURw5ervsMvaxoH87Xynq7fnbQSpX/PXw+b3U4PFFz2p/HLvAPe0TPv24HOwi/+3bPLHggEApcGLHjfvwrgugOQYis7d7un/e4tJbLzybuamf29pwnrywORqHloE+qTst6FSL5VuMusl3mVe75odhtdC/CbfF7ua4dP6qdsB3laP+XalVofv5nDgzoQCARuLJhx3lyJZ0l6D2HUGA1jroZNaxr2dl0qgbO8NU1I7ophzflRG+4/1DKsQePb195lbTR6kMu1QlayMUT5fOzs9rmW4Pf5DFORQtA1yhr9IX8/d3Y5A4FA4NKBhe+3VsGM88bAT+KnZTiVWpCItO5nRAO56gAblPa8e21ISmcQoDThekyyftiaX9HvzNO+5XniLY08Xq4VDfFA277B7ze7fa4H+L3elz+/zqOvd3NlnfK46grX2h/wuU+ZXbZAIBC4lGAB/D6ViA7ZaqUbB6JZummvIzuPEbv6PURZOV97RDnEmjb77WYLOCN8rEzjyaTCHLSzV7fOI1kX57aH1zq60N7E8p6BQCAQmIhlSSWUIs6VIplZhyrxsEaSa1O0MN+L6YwpmyxxWiK288U7c8fD8z2vbyfteoyDD4xFfaiJf4s/t81um+uJfE62gwwEAoHAe5R5Y/p7WW8WsM2nNkrsXJYMWQNLi4aZ9Gl3Lnjnd30Y6ry0m35Na8jfS2c1YC/YxXb/9uTTWopX5QtOxoFAIBA4R2DmeXQ1I6NTVtNuNyJT87aoGLvrkA0J232TxYSdGwH7BCppYV5Yze9ajXovr/Vj7NqyjKk6L7UBxkrqKaVfmN0ugUAgELhkWCj9v7l7E4uX7Vkap6W/cb5WM62Oe52HexxiHcNg5nHdskfIziOcA63lSzzqut46/fLsNgkEAoHAJUOi/HnkbvWQgWwVj1pSBbKznIs3k71oSdoj/T0Ttf8IpXkP+Xraf/ld1t4WMr63vsP/NbtNAoFAIHABka/iFcxcfAUIMhkSa8QGJl1kQH3Y08iWfppQqc3Rehi0a3tREypJPE2C845393A9QzoJfLFqxwull92odgkEAoFAoCERfRMQF6zDtWS6nrKhJLWm3Ff74raGhk8bGSJZZiBzzN/ebDVej9g907Ql62PW2vLpmijll85uj0AgEAhcQjAH3QEkOJihrR04a+3UXddrGBZV56VS43aehvlhNDX3+8kSrDuv3IrozA8LrOYv2nEdhKQfn90egUAgELikOC7HX8vjfsa45rgRm5iLadvhCQnPzst6mi3+XD2bwWF7L0CInWuWYuwRsp25RrM1viMS8qG+0y/ObotAIBAIXFIwEX1cJTGlCTvEtcd7GOuZ4IIEnkz6dCf8NhfcljPLv6lr0t3hywKfi7svyYFnLpcBhpirC9awoMuyhoeMoBiBQCAQmIOU09uBTK3mKN9Wy7RasXAmaKBtAtpqvY1I4aGjSRvP0ZBHL1+7lmxQzL155QUurnek4/LG2e0QCAQCgUsMpqUv02RFGIuaHE5DwnbmfvE+Qrok/UHr95ABIVmaR8GN4y5RkMS/BM5cXLA6Z0xvJ0oRszkQCAQCc8BUdHvevIolfrPa73jHaaqRINJt/YI54J5ML0dKjXSdB6xkCde976thWKJVAfsZr4899N/5vWe3RSAQCAQuMZiIfgpIie7DJ6vjZMNVKuOz1qS3S9Zpq/2ut1gyXfJe4BFSJGvZ185ty2kxpR/6O9OF3EIxEAgEAjcJmAqfUIkLd3IyxNdjO+8QM8wfD+G9Vu9pMvsgK9Oz0LoPaxYnda/JzLmvYFvK1MlbylyDn9Cnzm6HQCAQCFxyLCn9+kZOJLs5IdntmYvFzJwcKhwmjM/Iz5K03RjCKrt7zlkCq3nbMJxNdadqquYX+HZbJ/mC720cCAQCgXMGJp4PBiIU8jrmEZ4mChs6dC2WOnMScHMC7y3xqJZQmhm+MVNvDniPkAeVOfcIY+p+nNhelvTq2W0QCAQCgUAxV78lbzZmcWw65pH8cKkTEl/nPvLMysCYlGR5kbeeuf5WirWFXf5kj739jHENlhyWdBIis3w/bHYbBAKBQOCSg8no4/OmMUqoSE121f0KSG2YGxai615cihATnEcNFeeihUgt+ZPm1MGMvacxD4RNmpvl3uNC9KzZbRAIBAKBQCHkO/O61ImOeSQ2ZDdKldeM+gpuz8P8Lkb6GuZwDYHjtyXWNjDYIdrdYterS+6DAMz3C2bXfyAQCAQCJQjIUwxJ7lCyS7AWXeMlTG61Z0IOJUhn54yTOd+OoQBnl3YDrqkuWM3eiZZ/O7v+A4FAIBBYwXz2W43VaFjStEd447KkbkBOrEcPm1GAY1fKZAm27VuMc8tZcoO0KbubTSg/LjF/YxqZKxZypmVJfz677gM3Htwrnnw8LP8zd/VXcT/4T9ydfpS/v4I7S0RlCwQC88CC6KlizpXNEs/QfjNYppXpmPCcMivrJM48snnYcFpiYJt83HLY2NZ4j0T7Kvkda3jNJ8yu/8CNA7f37YnSv8sq0IzqLr/Jn8fPLmcgELikYIH0h5bYgOyUU1YeyZT0fUMaT9NGvsfNJ+T30kKHjNG4xMELbdhWO8Zvq6Wjh/gXza77wI0Dd4KHJDq+BfpRGZhJVLZiTZFQscpqkmMNeiAQuBFgYfOUOtW7aqGkyUuRdPb9pqyzlj0vE8VW6xZSXYChU50qVoROXdu25GyemVAD99KdVKFbNlqO9caXDMtxeXPtDIeso7OJj0KJ0ib+BV8/u7yBQOCSgbnu1VUAqeAfjdQwPEe7tu1KmCxFanVWhb+klXxJX5eMdR4JHto1dWD1iqUr5e7z7XMo1+VcaQ1KQnfMrvvAjcOS0itqPziariJ+BaIxS3S6t/LnEbPLHQgELglY4LxvJ0Fc75stcbpzxs45L2DIeh0m7JLOu5Gq0nhJaeOUGi3rgB/GsYvkPAI3qTjdnk8vnF33gRuHZVm+rfYF2TjEBqMplhnxUyjXT+rn6bPLHggELglYJr08K4epLXqkQ7iWSPE8fBMyOarDTlqgS2Vldrd11MJT/9Y5YWHGPA78z3+YXe+BGwdu74+vHVfW1oOnfcJ+I9px6SP3lt9E6Rmzyx8IBC4BWOA8PGsT3Z72i99nhsPMOpZ1VorxljuSqpDmoB2vGnEXkjmPZZNjGz5TtB/5rO9G5ZuKiX0N13nr7LoP3BhwD/iw2jtOct9GVPfI/ksGeaWPlPRX+MyjZr9DIBC4BGCB84NVFJ2KYCItqERAmVnidrTFonaXGMk6ZmVNFk1c1JKFZIOJYT1yziAcZYtEK0y9QQQ46axkfMw9DGhR2T9pdr0Hbgy4uR9SNF3K+06Hpv8Q9JmCd/Cd4V0dCASuL1jYPKxqDacOsdXjjVT37MdIruO9ihjteYfsh6VNeL0StkqTzDdqzEL8qP2XBG+cXe+BG4Ml0a0p5ddAH1l0N2lYoOvKIE806VfOfo9AIHAJwPz2VVUKneSuFQxaKmmiXk91tZeQyC2hFzNxWy9shGANzpGE8F1zNGg13paLLZ9slkhlvWXkae4WgPCqviTgTvDS3l3drUMRMuiTPlV3OUt/Z/Z7BAKBSwAmw7dnTcbHSmzHJqP07C8QoCvQ5HsIlYkkWtlzTQPmcXQiG+ewk9p1CjVqb757gc+xCteS+Ftn13ngxoDb+wt7HyHbN8cpGN1/0GT95NnvEggELjhY6jwHCAu3WkTzdOq/CQkVpnOpm5S7jIMYHoPp2s7jdcLu/tg43weETnifLQ4GeJDz5dyV7Ue6c3adB24MuLk/2EyniIaMS98s7AL7sqzu3bPfJRAIXAKUudS8haaUuTKZYwWnK0IydczEljBVInHaavPQK9FunCsDALhzmCMe92HWGjUS9qCdUxPCJJrO+8+u88D1Bzf6o7mt39X7U1uvXk3QbVrGs6wItr8BopfNfp9AIHDBwcLm6ZW4TiphHXPW3s/tWEJF0yC4lApsCDEP10hpyzm3pVAYpXPYXcqbl07jY23ZqM5d0+qsxge/MbvOAzcGJ6dX3l77wmkm47hAKkKcDECHQV/e/A0Kwhs/EAhcX7CgeSm1JcCaNjOa7rop2o961Wl6b11yI8hq+VbnCclV28XPys+Wsd/Xy3OkLeJSGWhcmV3fgRsDbv3fdPqv6Sluv8J7pN/ckyNkZiAQuN6glE6y0oZXetZm6Sa4yGrOVqtA1y/F8kTrzjmFLNF7G6zYZWq3/aA6d2c1FtSYRyG73bOYOefmlHM8Lt80u74D1w/cxdY1wtzU39QJlbAfeg5cehkeaf+Hre/mP539boFA4IKCZY4Iro8Egt1bx7v3vQdt5q7bJtKqFm/rOmtkzJ6fr6nYuT0THpP2lkfZmNsrITNL3zO73gPXH9zWH13b/pBdC487Z4z9Dvu/DEC/Z/Z7BQKBC46U0uuMNPKco0CYCd8lOKfniskn1FXjlWu0OdegLiLnm0Kd/Uhde+ekDOIcNiyvYnz67PoOXF9wGz82b1tpoi9E6ytktWEN06eUb8Jfmf1ugUDgAoJFjGjHj1nWMM5daLUAH40Mt0AfZkMInEcWIjzLlJyy8pgmzF8JxoQzv0RenmeZG0cP67reaiF65+x6D1xfcDvfxv35bbloxnq6o3pW761TV/0Mp1Lkd5k/vm32+wUCgQsMFjL/WEjXmHiR6Iz0Irtxg7mVTFhNMmmaoEvWuqzm+PqGE8jkBRjuEAQo2TLb0J+fAO8dsYgvINKSXpvVLmXajCPnrNnH/PSsPr9f8o9+EwgErhtYwLwNBNigeRqm1QQ90rGnGWNedlkJmpeLLmyVc0PiTbhKIk+Q2gKu9yy0vGV2XQeuL3gc+NKsY07L5+gO3q7af1q/K/i76llBzIFA4FqChcpTqiQ6ZFICyXOCGSmwn7GmPjv3ZvOyFC6/l24NH0i3XTBlObt8rSDLx86u78D1AzfxV9T2Ps2qP7VgMLbPev3IG5RK//rA2e8YCAQuMFjIvLiKnCt0taVE/nnnuFmWYZkJ2Xw9bTaZRyTST8TgH4N6k7WJEnd2SktKr59d14Hrh7wFtdljXG9wuNe3pf8IOUt0usPsdwwEAhccTFR3ZtiGUAuhYmFOaUdqDd7XlSXVkiQrIWGiF83fQrAS8V/mjtt6aOrhlKj9J/PDvrZTcMh9M4Dnza7rwPVDIczcBmCEy/c8K4r8PksblvslOtcfz37HQCBwgcFC5qlV2EhAEBBKzes6j9eU0FJESz29t57Z8madTx62YLRmc3t9X5BSi1ldfm/rTyk2kLjI4KZ+Q9abRFhLzlnasEpn+q/0oYK/N/s9A4HABQZLm39bhQ3OuVmZZd2fPdOzvnFv6ljPCFvhmeE8ZtTJl7L+rcuAWrlE5VpjVnM+L5pd14Hrg9z2Nm7WkvvqV2D7jz2WaQ+xsDxj9rsGAoELDBY9d+fNLo2BE+SrGYiNmdoKLhRsmA4EW5OSstQJJ4DbomRqx9SN0knFx67n7fxgI2PRkmT+uGg39/Ln1tl1Hbj24Hb9stoHDtkF+hv4y/eyJmM/RCutfelhs983EAhcULCAeWYVOqf1Y+3GRxRKjvps1yHbSWMRgJ3oSV0dwnNiaC9Ia+ewUSMWbVgL0O2ZpzXTH55d14FrD27aD6ptLmExrabrDR6xGw/916AvxyP63dnvGwgELjBYDP1YlUYi0NR8LXVK3NUuyNxjhJ89r/IC7jXadI1zrZ9tNfcztPE27yda05Nn13Xg2oLb9OE8nruStWVn68PWxa/3C9VtINHetAn2+/9x9jsHAoELDJY278jdrIukN0qttj5Zca2eEW52ZtfhCk/pa9WCLZpvo2IIr2kf7Oe/JltN1bQ5qVFO6bdn13Pg2oPb9/W5T0vQGX3Cdj+cY95L5nlov//sdw4EAhcULGCeYIQOaBqEAo6stAIkJeh0or35ZTJJW4xp4wlmn79t2Igs3T7KYi5ajSxV+ajZdR24tuAGfolp7725395Hx96rr/cI7fJ3UM5LpK/w0A8EAtcPuTvDyG44TVARNQG34wTTqHMxZNxN3SLsBqW482tWc3RKUlbuHWJQe+uNHXM1rbv78MGbZ9dz4NqC2/VT07aXCQ4m95bkAVm7Bps9UzVE9loT/sTs9w4EAhcYLIVem/tcqwgij+TQfIz0qpi1/gSNpW1P3AQjqY2i2lphS/wpw40ZMnKEp5gX4WdbplLu+9uz6zlw7cBt+vjazrhphKcJ19+Ux3TDevdl+E1KQy73PHv2uwcCgQsKljAPS528MLwkEpuaGzZkiGStTIVwsGNeHuCZG0fNePzIF96PZsdyLpY6XSBwl3pHbd+D6Rd9UDf2sL1+h7BzxrJ/cjHUlGc9dPa7BwKBCwoWMC8A4hOPZ3SQySCcRBvuq4JF0FHTQlDgeWZuFHiJ5O4+aSwbKmsvb2rmc7nFHxgsiqjX8ImU0i/MrufAtcOyLL/oDO6wfyZ73sEwb+KkkTnk4hR44B73htnvHggELjAS0b+rwucE5JKaR67/yPwuaKwwjUsD+VqBuCcgRQPHdcqd+NWgAM2Og3tsajnl5hR2rL+fMrueA9cGidJX1Wa2pIvr2J1pFnduGfvQuE5ea8in3Ku+b/b7BwKBCwxWUd+VuzZpBdz6DbErZZ5WhJnM/Vp4WjKc63s20UjYeh4ZtOf2e9DcibIvcMs7tT2Pc5itb2pw+z2jdaRqDyF/7bt17ts6Se9FngPY2HdJRXgraT9ydh0EAoELChYwH5D7sqBj1kJNeFO04Z05X6oaqRixybkGIlQJxZVrPW1mdfACDzGiHklTdGm8x5v3lt9/f3Y9Bx48uElvrcE/Dk47e1qxGrQNkymOuRtTUHfkKn8bB2bz8n1HKQslumV2fQQCgQsGFjDfLHNxhm2tlmFNfHvzb9ZxKxnDMpmkG48PVN9OLML2+nT7cSR9Qsq8aTa0CtPbZ9dz4MEjpeUteRukSTsfoR/40yC7S/V2r1ltW7z0CzG/dnYdBAKBCwwWMn/cCWygPatBWG9nKwiNdzRq14osVf5A4NbRK4vSXQ+WPA4S2r3U85Y5v3L8ytl1HHjwoHT86dqeJ9U+svXHLWgbLpmzfdJOg/Q+N+4C1ft3z0H6Ujn19bPrIRAIXFCwjLktD2EyUX11NQ9H4KkkYkzehCCBkCS4brQT2uapRSjqh2lDd5szpv4bYxcLaQtBf8rseg48OHAj/pe17Zc1PpudoiDsF0jKeoAp/eUqkTKxH8tzxET+obPrIhAIXFCwgPnLGwmSaJP9Y+fa+m8hTqsZw/cukXsaTDnZnG7M9b4NI/XY1rlpOyR5LllrQOuex/VpYa6+icHt95fSZhk5MhVvA69kCHnoa717kj2BaaFPmxsxP4mF/u4cDoGBQOB6gQXMdzRBpNcUo6Aa5tlIm/pSZdImyPg6bs2oHa1ICUkvTc1CL2FyhGiuT0VCXurNhZBTWnKsPb7JkRLd04iRykYhbbBnLS1qIGkGd940S/0Q9r3FXC+Qdci/MrsuAoHABQYl+rNKfiKIvHWYKMeWypHNrGz40ZoIUVV2tRS0K+bqwJVHszWaq3MGczp1TbkJab52WtWoj5tdx4EHDm7c/1Q7kdc/10EYjUQ7dEvogkM/MimR5LEPl8+LSpn4O7yrA4HAtUURLCxlruS+jtMKMas5EEg0j2jxeobflOu8HWFaHUTEOoPZ/FM7HjVsMV+iSftIZccBoofNrufAAwO33g+0ztDXAmNfO2YCjbb2Ksf6Av0Sx4FD/7NqNP4sc8ix3WIgELg+YAHzQceUjrQt9UWHmB3tQp8zgk87co0CTfgYriPn4rMooWS1F/MobAuWanqUpTC0pFiicrOC2/7zaqc6yd3pUPwGEpiZ0Qhz1qDSu24HmLV/trXu2IffObtOAoHABQaLma/VQktpD434NtuwdYjGb0paqDU7YPI0bzlHXSuhLldreXTQj6SenlWkkXJ8IL1W9FC1oS+dXceB+w9uuCdQ65dkQ1iqPpDbQE/Bi9pl+p895UIsM8Uf4Vtn10sgELjAYCHzH0CANTMy+QKqa8LNOKguChljGMMm1DKYruv5YWkTpN+0ZF0QmTLua437+KGuRW1mTTFlPmp2HQfuP7jd3qUsKZpwvUA1+FHRuhwrTu+/2yUy+fX8qSUog7wPmV0vgUDgAoNlzbuzXjpiHbq8IB5eusaiOQ9OVijcrGPO6JBDEBRk3/yI5ZLQhoea/ymfPHIGfzG7fgP3HwuRDBJxGV427W2nRPbCZe71VzxvyR6/pe++a3a9BAKBCwwWM+8NZDbMqxmBhpqGkK63BlRpHlR1G6U9a21HOYCRud/JG29FLVyEt7xPUYO+fXYdB+4fuNm+DtraiwiHP3FQJtMflpi9/mnXy9tnoLYtA8jfm103gUDgAoOlzeds4ohOcydXFFgoyLwoXjg/PGgvZJxiDKHj+W5eJJ0efzr34yBBnH6OuS/HeubsOg7cd3B7fbgmShUly3MSzJiOdB/U8btqh8zdAgP9vMVSt9YgfN7/MLt+AoHABQaz6b+s0uhE85sb1tJ4qq5ySvYrtmEKjUDdzpG6v95n1OPcPaTLJdmLWWzf271dw257NdO2Nlq04xLnuFyL5U43CbitHlkDuaBWKkSLxJjhul0ChSSKVhk7qFx08n4PHFuCfursOgoEAhcYC9GfVClVCAw9WffMfCKoMB71JjQ3dXghIwCJ6CzNBp7ViZxGDYnq1owJC4TCuJB32p6/bpGXYe/jwPkHt9ebyPgXgOXkCH2tN7/uUd5+yOqYRoL30sL51ieX2fUTCAQuOJgr76qCrNAmarNWUDnkqWSXIm7SZkIUbo3Rs++0RfaE3JL6A8nI0maG3B6STmuCH5xdv4H7hpPT0x+o7SgBatD0PGjMeZzzbZ0MOyOcbkv6andMYPxBwzbuFNaJnOiNs+soEAhcYLCcec8qc/ouT3rr9q6lkgixgSjbUVvUOUZJ6t/C456ZUa8kpS48q5ylaqruaRKmzqsgb+9TDj5sdh0Hrg5up0+orbiYLnPWwHAHKqntrzaR9ZPwwrTKua+bXU+BQOACg4XMs2kNzlVMvIZse6StZgLcWDah5jIIOnDiEo9nzLF7wHanGhSQaKJc0hY5zBkctPnoNW0dLaSqGBUyvsK/+Ds9dHYdB84Gt9UjvX6U2/7Gu2S8OXkNa5OHGNV7pNytOPoJ9pninBjOgYFA4PqBee17K6lZQqYq7Ow5a2Gu2kNTiI3Tl1qH3L5pFJae5p1yc9gZTOg2qIjYLyVCV7n+ptn1G7g6uJ3eAO1p2/mox2ptuqSZpnMf3GEflf6Ipm00ZdtBpaJkyLt6dpddpii2WwwEAtcPLGRek3uoycUIJxF2rsbgCLUM6XEO+axdeBabR00rc8uiBeOdMt+H5Cye2sXkebKlTD87u34DZ4MS/WjtAwfTpww/qpCp41SHujbEnvbM3jDYU5YaXMNcB6pctkS/PbuuAoHABQdtG60X0itONLgGmcyxUY3FRNyIETVkWf+ZdD46G0dLXi9Qz1VCZoqWvN4DWzzh/agxy7KZz59dv4F9ZFo+q7aTeMRLW55BttUE4xmaVf9U/Rb78uhESCq9Gmy2vkf0bbPrKxAIXGCwoHkIbYLwtH7XyWFnn1gkzC64jtnA2LS7W2u7l+p3quS6Ah1p1DrlKlET1d2hoCDoGlZN6yQeQYdatveu7xl71p4z5G3e+Eru7eX0J3epHPQBUsujTF9dl8DBOW9KZGn9R1mzW5889jLRfz67zgKBwAUGS5mniUCkPvcqwqjroSDlQCYa8x9BWhCkox5CmTQB1/ubtkta423lkSeTlZ69oKLRHJjBy1KuIOJzCh5a3emQ3yF3pz/sYINSK10BOpisAqDal9pgUKY+8piJPZbPUvNezdop0XF2fQUCgQsOFjqfnLvJcNkEkYqwZW2CQn0i6xJY+7RwIyXg6j11b+N+XbytPQxmy/qsphmTfeaWYdG6TrhkfzK7fgM+uAV/Jfc53Jy7ybrFUm9tqwd0rS/RqPFmuNYHfGpI6e2q3e/rsyJtUCAD1N+cXWeBQOCCgyXOd+buuNLMc2JWztbZpa1Plu+k5twc8m73k0OwKGSbKGynU42mlFoUByePMt+8wHG5pxDyKWs1vzq7fgMjuG2+ou2YrS0hMHfc+p/9YP+TrupovECsuB6ebD62P5GYzcu54hh4bz3+R7PrLRAIXHCwYHxlFYR1Lo/E6CfHSKgI8WiuQs7RPLbze/spy/1tP1owOVfhvB4u1bwtc3w4QChHqZoV+31b7Oqyk9SLZ9dvQIOb6UPqQCtV37xj7tMM3mBNtGjf3NzbX/UtZeomu5SPcGBnCb32vfVcKdtpPfe42XUXCAQuOGjJf5H7khMyAimLMDSMbDWMVG9CTbltmwPCFNSXng6eh3PITXhKelcNIpVetK0r9VwEcThH4DZ5GPMnLDOSKKje+mE1bQL9kqw2Lee1BSbJ8eY4KJ2p9btuAhJSxucsGea0OfGfz667QCBwCUDLUpY8HakT8qBt5Iwmv905ODD9jRpJ1nyac9ZMm5ylVlVK6p2hSKUT7x2ipvWsyY9V43rE7PoNdLCi+heKTH3zsXcM57T3P0yt+KFUm2Vl2A0Kn2H7vGjkMhXyA7PrLhAIXHCwoHlIyulYzX7gXU0D6Wk6JQz6j9puSwBHYiL0tOcs8UJA0tpBAVVqRiFuBgn4sOoVu9C9s+s30MFt8r9tzEd2D+JGiqQJknqTDuf6dElf+YbjO0O6lKkbbAzZDwNMKde6FLCee+7s+gsEAhccLGgen9tWdSRmuqZuCOGBObgJRjE1k47sZTXhlE0QBrxovbnNdbl3oVaMLplTT2q0m/VxC/8bu/KcE3BTfYI0L7CmbT8bIS6b8wte1oM/wnQyiJRH2G0cNWjQjrFcpe+d8KlHzq7DQCBwwcEC57lVALXgCdTnYVEjMcJKcavm2CrMknasGcUgfkjl1QVi3VcZSiHPT7QFCtEF6NpzMVm/dHb9BtY+9qjaPovwJA2DKKdPuPPKbdMSuG672dY3tZbc1WlJ1AeZ7hRMOVcDy6TYSzsQCFx/sMD5b6vwOc3Ks3TULJRwNKozHBMIyL01orldJzi2z9ie4zj1rD83J7JxSEBQ7i+fXb+BdZ3723N3kkKMpmI98BoWtXv3m9Ggss7AeA18uFpqCcnqZSyOgTyyXL5/dh0GAoFLAJY8P577GmQManSGnIMLJIuSlRO20krqEVqY9XWzC0/PW2nEOYMndtOwlABXS7TK5zmz6/eyg1vkX0EDmqBZ0IKjudqYl2Gpm96nWw6tlpywK3n9yz4PulIxv5zkPoj4a7PrMRAIXAKw+PmNKnROCENTauFlBZkIS3HsWnAejrTIRAceq+RYg7M1UW4/et6NhJVCjPspp3rHdvSU2fV7mcGN8HywtByhfTG2NFo0bOcYlsLpftOg1y932paeYsnYI2jllU3dn+IKpwhP/UAgcP1xpHUNcpknOyXHbCxCUWu+ymCtvWUJ6VJdX0DLhTWifb7aquHUnp8SCNa9eW3rtVuiK90xu34vK7juH5mW1kCV3BrJ2RjmnsZMdfzWBnOk+1Me7kPq1v0iSX7SKXXf3Cw0KcPlLUIX/3mkN8+uy0AgcEnAMvOulQzTJoBAkFmToBGWwwUh8PESysEOu8QFn9vs4INObZ4HPwjOF7x7dt1eVnDd30IpvQuaCgZLsC2nT8ZWC97TbO01e4/ubHie1GnPKlO+1yWAC6UfnV2fgUDgEoDlzR3MfMVxBbWWJkBBqikhae3MIsyMu6pDpD0ItiFUq5mvz4RNI5o2DQbIPn2d25Wc+j1vml2/lxXLMf0WTCBgcA05lrZ0jCIj2cJgK+kuqPpL7RXtRuNlrcLZDH3X/Fq99Gt5nzG7PgOBwCUAC5vHViF1Wo3NlkRtWEp9vjMzKiDKGad+J1mfAnIPs3TXn1J3zOnZmZjXkpc8R8yP/M+rZ9fvZURalm+EtrTRrlAjheYb5ojX80CgfRtQ6Xm6A6EJXPhYdSXqA4TWfSCRt46+BGCPwDKBQODGgIXO+zQiS7T0sBsmStKoxRjhqiIgKU/oQZ/paIKa+vInu0wq1QJsz6L2jeZPW7T1+fzPT8+u38sGrnbpT1fySMTyLZqnp6WqcRyptlbpd5y8yHxa/Jh2705/9DTucu/rZtdpIBC4JGCB8+wqfMSMuHRLnysIPQG2ew0SbYH8m27TTdBZCWIydxlTohLYCZPhwEAuvGR2/V42pERl3vhKWpfQkSxNE8cp7EvgADi0NLa43fChNTJaY9Tpdm/tw6Od2pK/yVJFpfvJ2XUaCAQuCVjgfEmVWnUf5E7ENJr9jKwctVkj5ZQkJSMEnfxt0C33u920r7nLROM/mV2/lwncHD9fm6E4Qx1o7B9nDeJqs9lmbLMfWnseQ13K/Q5xY7/yBnt6o4osg8cNL5xdr4FA4JKABc93VuEEm0o0qThwK0Gc65yNeOsar7qnCj50GNPXtRWRzH1yjxwPkZ5IBPSmC6W6ZnlhfexLZ9fvZQHX9xfU9vC89JNpS2z7vXXGun+Q68yFic6alyboQ5jU2ret2bqsOnji7LoNBAKXBCwpf7YRHQ3Cywq2YY1y/extCJDNeUerGdYxe/dS1qZorS0NZu8WxetZs+v3MoDr+Um13o+5O3Ghtnq1/rFd6/7RlhhxsGeM3GTb3T7EI9zREmNOVLxmdt0GAoFLBCbk36gS6rAJNLJmQ9FQPFIFklTp7Tfcm6zQq5tDqIjURtuhBfK3wl4L6/6c8vups+v3MoC7xt0ZljJlf+CE7YdY7zMBORCupcY5Jkjq9T2v/3r+EXjulbPrNhAIXCKwCHxNFT7o+Wq1zj1BOR53eWiDO8hPb72xazZsErZr7mjvXLUjnfmavDDxktLqUPTw2fV70cGjqd/Oa/jU1vBiMRm9qGnoS3qd++i+1fJAOzMM6ZJOrjuVc0md2x1ydrx8dv0GAoFLBGatP8t9vqwK07aOF7G3n6zVQPaEIxK0P0+ontPtkfWnt+sUPgSvF5+cQsgPnV2/Fxlcz/8NND7uV6zjSmu11fSXdmlRw6/alpDI9W2AziCe3KofAsNLUozV7vRPksFEufaH/Ll1dj0HAoFLApY8b6ly6QgyymrIOzJssBHq61oj8jTjLAKUxrzl3EK+ibo+gRZ4Vs8wU3mfW2bX70UF1+3jsxBvUmZqQ3ywnGjUTZN7Vre16Tek7qOuMPsWm/0B4zgwJO88Pfca11sQfCAQ8MGS5x25B/0HQZn2NFn72+4OZaHWiTr70Wrb85jDuBK55ikqEfwHD00ns+v2IuPkePLOvLHtCURZlYGdGiC5rQpNtXPRmr9tNlfPn4aB3p4Je2+b5bwkejd/fdDs+g4EApcALHburgLvAKQmZOx5Va/H9cA1TcKxE3VLpfMI3tGqlbyUEtooUPK8VYBTorfMrtuLCq7o3809apptP69de9tK68m92/iMhpT1yLS7dciyj3CsOm0AqJ/vat/D51gLUaZ1voHHrJ9NlD6Kj/8Kfz6UP5/DA7/P5e8X8OfTOOUn802fzMefxFl/In9/Jj/w07dr+bP4+gv4+gvLffz5bP68kAvwufwk/k2fxWk/ja9/Ov8u93wKf76An/1f8O+/ztc/O9F6/a/x+efyuY/ne5+bUvoILuCTuVy3z+4XgUDgQYD/qB9Ba0QltbHEWfO7HsnmrJcuGY2WtPAbdZEzljw1a3bLn1RZ2q5BtPly1YHFdvmPZtfvRQRX+v9S618GY6jJeiQnbT4Mskx6OwDM5p4dJ0HVj7x0OLhs5SCd92Kv507Inid2+X0i70xFke7ny9suRGvflPuxro6YTxuZ+G/V6obgnaCQZf/yosGXz9v5+JcKoc/uI4FA4AEgb/OA1vRnlxV5AmJPKNJOur37LBmTOW/yHeaLbdo+sCD6j7Pr96Ihb5phwSFreGSLlxpRZcUnA86ynKz5k3rOcM9Z/bNdH6wt/addkyd/C+Jf4fVT6XNIwIfhGrU12ktNd1o/eP5Qf9frdMqMfWruOdZ0S94ZMPCP3+Ov957dXwKBwP0A/9H+Z10gEAobEaCoAcF1+/ffj2kUuMkRzwS/tRDX1zArUiEg+kEVmqItp1UDYX35l2bX70UCV+ntrMud5G5RGcjPbJVp2x+tKAiwzKAeqLuM6j3jB1OYICQYUEZ1HjtYdJ5ntyRVGvj2dyMRxJZmrZFVCrjL1XZt+4sCEq1+GlS1aq3le05ylDuBl+OVoEkT+5o/nzvwP39pdr8JBAL3EfxH+7T2xz7OB54930td2mF6EKnWOI3ScE8TslDRQmpquxQGzNYikFnqEf387Pq9SEhp+ZOsCcG2356puPcHafu2oeegodp89kzJHpm2Y9LX0alw/QcGjahwe1q5XZu/nbcz0b65Xec5WHUSjjexrvBWJGUzriU8L9q5PCfV8eufzu43gUDgPoL/YD+8/oHbOeQmfJLeTF4LGS2oMIbxmk/KVgidCcke54ot4RMp4UcieMrXQl2Il/BfL51dvxcFXMPfk622Nzao1Uz7vxt3DD4KZlR2Rv8YiNp+13bXXUYN/EiXz+nL96V/ls/B3Cf3Yjn8eedO3u1n6oQq0zGeWV/9TW7/2m1HlVldjss/sTlGIHAzgP9eP0aECI0C6SwBiGk8Z6yuDfn39VjCWnNQggi1bU+Vypr05aFpyzb98Oz6vQjgGv1YqHNrqm4DINPCLQ3ptHhdzjnzzgrpjH50tf4h+Q+xqyHB7oMx/35z+1fuW5wc0BnLc3bDdE3LderKuw+viYnaXhPNvpyI7SMDgZsB/Of6gvoHXOcFlWQxAnNXKBhBO+QxaiPaVCmBqn1Hrv4vjVdWRTqJply1jrRGqkjLj8yu35sdXJWPAQGPGm7C33YEBenG/qJb0Q9YCd2GBq7VCUeyboFI8Jk1DQwDx7Lpo+3pe3O6MogQUmxTPiTP669gTd5Y7rUeSdenvAMOau10kFMWNUBKVdMumUc87kDgZgD/vT6//hEfnT9snyD79ftyzdNmxmNy03uCOFEXZlXeKKAG99Wz6/dmB9fyvUZrsyS7185AJI2UrtYf5B48t7fOXa+B9ih1NBursqpBok/5o5l4zGcwv6t041CW4PHDODVrosVv59lqoGIHDvJ3UAbaoSEHAjcD8hagoMBqQFpSbKLJ2zDACg8iLfAwIytA94TzQO6EI3+dHnTtJvjlPb5mdv3ezODm/m6p4yr6N3LUtIy6pppfdto21V5gu4Ztb3TC6tevvmTKvX6Wem3So4OUB0/T3cvT+237r00r9WuHF7ZerCOblAvnkPHzN2f3pUAgcB+QS5Qg/ceMzl2e4LBzgzaNK7T6JGHXWsz9exqBLYI3GLCawrEmDEJ+gODak/XGuwRE/k/PMRCvk/5ngB0MIknWGBpC0oqs9+6nrN+hOQOiekp9eZ+1EmXze4+MzfXhz8MOLnWpx7+vs/LH+3ENNA5a5fdd/HnP2f0pEAjcB/Af6+eThJp0hKlnU9v57Y3avfRdqNBwrgsZP/CHDaNotWYh/NP6Owj5AYDr7fYszkJdM94D5XFu2bZ3PWeiudWT7T7dq5C44J56m+47ntXGljHrbuaWc4/E7bft6ztkmmwafHfsz2f9fdmBwlnXZXpAAouUBcovm92fAoHAfQSt8XXbHzQuW1pIC0UUAdQPMybD82d5jtojT/OwQm5P8Fpv3VKYY030otn1ezOC662sN7beu54Wqs862imNAyl7z95vQ0TU5kWhwxkK9zVP6qeS87SBXGnPGU36cvcys38fHjF7LmuGlIdwN+qZ3jFkiVtdyh9hWZZ1yqmv5NgPPBC4ecB/vJ+Xu5YjArg5hqBagoLGaKooHGq6QTZaQedKKSB2kHkuCWO+clOqEu60TsR93ez6vdnAdfadtV4lNCPWt2fO9QjZTlvsaZiW+BZof9vsTfumvszIbnws/c44grUeDM9V/dIrF9mL/ZDswAPz8s7bgpw1R43P39P8la8GpJX10Yda+R89uz8FAoH7Af67/XQSjdjfucdz39kzTw+ChtR5N1jCnhOQfQbmh/mLZi+DCso9YtG3zK7fmwlcYx9dq1VCYx5aNbtLkzIsJxrazgu7igSCxzZgh73uEpghJJsvJOv7MvuvoZyi8D6jpQ8l8LR0e7Q9n4Z3kvILuWIeyOvWUc3TyHEUs7ZZSvRzs/tTIBC4n+C/3edXUjspka4GeUZ7f/iEKTzBMIioPbVhEDKjnNsTuFSlF2gUaljx7bPr92YB19Ud/Lkn95jISKJY7wkapLa3t+Vhw3Ytuf0CPqMeCp2hpx9SK/byiLMUztlvmUw/OnMe2h+M9DLZOlKvsFcxvXhu/76aNUJgTdbl89bZ/SkQCDwA8B/v51L/wz5TSIm22wQguXPMMPp3LXhW0JDJV13Lo5AF4UOoXXvC7Ltn1+/NAlapyvZ9xYmr1y8pjVGsHGeRk23r2n67jsNO+5rhXjcvj1aY1Lyt8Rbne7iOfUvvhgHDuT75PLyyRITDaRjJE6OWySARb0WLU3KGsPZv0F6z18WBa5s33j6PnN2fAoHAA0Duy57ErIZey1aS4tyVJyx25g7VfshnaSF760zreWpOPea+bO4Rofg9s+v3ZsDpcfmZWl8HqN+xHchtPyHv5nRl20STa2Pcq/UfJHjph9I/dMxsanmPc8f9GK+TurN/S4QrDwOBw5Wam4rqldvr9/+cdfxt/Ep4r2Ronm+93cs53Iax4HNm96dAIPAAwX/An5r7PGxznMlaQGY4HjQaI11QWKJAQaGK+YEwGgSQ0nJIP79pJKRvRK35+2bX73kH19GzVN3p9bgmRnX7x2ibLXwkto+3EUk5bfuYzdM6elmiRk/jlhbM0qmetb4JifrAgepvzMs+35I1DBS0Rtv6JQ1lNRVAo9UBhwdjme3ACAcc8vdavks0tcTjgV+Y3Z8CgcCDAP8xf6L80dOwwUTTTiwJDoLDSF2PjK0D0A75KqVqTxO2Qq/+bsq7OCP9xOz6Pc/g+rkV25O0lubbmck5AjXP6TPrJWqad1+LbAZR9ikEfaHmR5gex2HodCZELV05YUZG88S32RsM4m+7r7OpC/UYgn+3h+rBjioDeD5YK4EtSzb3i/PdPbP7UyAQeJDgv+pnUjc3WueQZP740Zxpr5VLw3wudc3XBHNoghsnmlO/Z9AK9taHOtpW2+YvPE3PwJKWV5v2wvY/ZJ+ULUngnGizjhC2X2+ZBKwtBAdkPpiLpd/0AV3vLNgP4ZwiReyjSQiRhj5N+BzsU1ZbFu0bBwKYxvRfQovD8GI1vWwZ6i1jOouUJZ1oyu83uz8FAoEHCf5D/hDqggvM1l2LcDQZz5EKzjdiNnNeI2Gb364pk8bre0Qh1yVS1ytm1+95Q0p0a/lmde2Lzqg/8bJu7Oa0o0MQdKzjrna9qbWk+oO6F0dS1PNvl4SDYUBW89nGc/0BJIRoHRQlwbAf85jEv1774FIrSb2/+fvAetTu3X3/J5U/9O/m4OiXzx8o8D/fPLtfBQKBawD+e36ftBGYzKl5JOuYrJtik+qmh1YjQUK3JjpLsEvujl+4LR2WAeTXIBCt8BXB+1uz6/c8guvlYbV+RAu2dY3zwd4ACPoAYZvnPLYFybIoaCfVp3T/wHEAQR67UbF6ORVFgjezXTrVzwuB2zwxrf1bsJosmVvtfWv59Juox+H775Rzd165nH/17P4UCASuEfiv+glLWYO8hZv0vDhF2Dlzy6DJOGrUKESUwjWYn/1VVH3DYxRUQtr1DhB666Ek/4PZ9XsewXX2Bq6cU+qWBI94h3ngoYVdJXFsPMjHkrYQoke0Np03KOhP2O2DY3/aeUbLbu9lLPM6eQ5sK+dpLB9e39PoPVLG+67w1+2z+1MgELhG4D/qR7OkkMhMuCdylSO+mRGkhj0Pji8ke9aitrUnZBJ1hsd0Vjvv9/cwEVaz2J5H+S2z6/e8YSH6+VpXpV1PsnaWkvqmWru7RJuzN0DT6cmk28nMkvTQn/avqwFepmx/4tjNy7xpqGc9b8987JXVnjur/qS4pAswrDSAIC0kvw9p+37/2f0pEAhcQ/Af9SOWHioRY1lr7aQ7p8A6ZbJrVstPGxghd7XDC1okCvCq7XpamQiuVF1qdNkkREMVWosWqO/kf2+dXcezwXVwy/qd8wtqxVzpQr622lalZ+xnvFbxztyxaiv0PzCDqaH90SEMTeXjMxLmj98yhdyWznXHMODhumjOez9bHny+LYc4YOlRgeZ72rmq/07M6MG8W4bHwLTO5udRE3zJ7H4VCASuMfgP+5a87Zm6CUR/X1gUDl1jJk+wbfvMkr4XBdKSu9RK/RDJVsm8QaAZLdqqRBu5b5K6RJ56yOw6ngkh41QGXkT35r5MxlhDBlLwiHe71mi8nevXcAA15t3SQ/9wNFKl2e4N+Gp/USRv+4LhRkt6Q9la/3TOm/eFR5mY3aTLYW4f3td7vh0kiJa8Dpz5cb88u18FAoHrBP6Lf2vedBAR0ja4xyokCDUdLXBRWzHCcT3V70WdaBD8TshhK9vMfVTDJyZFDKlpW5TSY2fX70xwla6EzJX0k7XOJNQikCFqvoQarkdI9jdqfVeZc4bgHZIEaZPgjCZArzwIIEJF4s718hkMAEl9D1Q+/PauIZk7Toxt+ma93mJv1vK2n3owKnnJ31fJ/67ZfSoQCFxHsDT4vfpHXwNqtGkt1GByVnOK1AWNsG7XfmB9qYrC5TnxLNWgLVqtCCEj/FTc41U4URs8tDKI6VsIutz0IbPrdza4Hp4Ggl00MAmTOYZKpb7vbx6Jrn0b8pSBWv+9rjt2o6+1diSfcJNJ279JridvrlesJ2ksG6T0BxT9/Yd53KTP9M6PUzYK0IFVWWrFyTmcgrHvjGWFv8389Nn9KRAIXEewaHtl/cM/yV2L0iJMyxlyZFDOwy5BMuRvMguFjiXx7T5q3038wsPk+W2uUUWS0Pvhimn802bX72xwHfxcrSHxFUCtC9sDNebW/nYUlnvgFVX5un/U5NoxLJlvr39Byw/EdMzjPHRnW0INlfCylMeuIlAg0XCd3Zt2yr+mBrZfSOvYLQ/p31KQXInevEUbUPRbmsm6mHv+5ey+FAgErjPSZs4swkLNK9ImwDzBhBr0Rqo9CpIV481c7WhDZ61RdjQwVY7t/k3mi7ONqE3Nd5X/+fLZ9TsTXAVPpG2Jk5iq25SEIglZc4b6ZK9tmNe1JKx33NITrO0eb14a29ZuGJJNOmVh6WVqB2iZwbzlR8Jvez33rub1u/WbdracaKNNdwBBUq9emXAw5M1ry6nV2TKl9NrZfSkQCNwAsDT4xioBDrAZsbf7HApVFJSGOIdlSNbxJ4/3rIdVcLYnW0Fs6eJYD6laFfsoIK2m7HL6Um/ByHXwhUDIqNka56iMGy8oRoDv0aFJdZThTmnX3jTktX+zAAOhkd9vOkXWo+ZDqNMQjA2zMhHjaKF/2vytfrd27I8YlAmIcFCKz9MatyVo5+9g/SnvI054saViIHAZwH/1X1ilwGkGiZBp8Pj0hBEK0Z2k7boxYQ6SXAslJVPdhySdn7pfyvVTs+t3Jvj931LrYd2mLzXyyXbnIbeeSY2P9tI1nkMShXNkfmcphSEht/0sdPtrT0A7KPA65Fn9yTtvPQ3J/LtHsJD+jL8Lf53+NuVC4vyVP2t2PwoEAjcI5Q++iodjHrVYT2M6g4RJLxvpW9Lp+0C3MgIVtDAU5G0DACsEkQjQSUZufk19x1tm1/MM8HvfW+vskMW8TNlueiD04rUTNvCSzybK8Xqnc6ONmidbLXfM25KWVWWH8/JYOOHsR5zxve2AIqkZdruUC3uvfg+v/PJ8m8Cu5S9t0+b5lyW9fHYfCgQCNxD8h/8JVTjs7fDjCptBc1D78SQrMFEYjlrDINCsX6sS6PbxZD4Z3uPNs+t3Jrg2yhpzmWM/QsV5BLYfmMMZjJF2PjLkPmQhg4DFSY3lwXXu+HirSdqBl+m37SnS3xSpG61WXoLkQXsvnx1CP6M+vXq00y/yvgv8bp/Z/ScQCNxg8B/+U0FY7MXVPeu3Pd+ElmXVHaE1iuedY2H7nTzWTxWuqUr0e2fX70zw+//ftY4kEpsQMy4Xs2RytW9pA7+tRlPxqpWbRhzbl67yW6f3Bmx7qHO5w1K9vTz9AckZzzBFtf31agMcuUkGrTJ19PzZ/ScQCNxg8B/+43J3HlmFglZTaZztGwSL59ylErkqU0ZzoV7mZIWjXcriPQfntWVwUZZy3Ta7jmeB6+Kv1xo+1A+RkDOl7iE9ks3Z5NQ/6H9stFV/JyjC3aSSCUIDT4PBlz4FjmF6L4ghoIlXbp0n7mjSu9c4EBl9FeQb/1Za/wUi9t4P19tT1tr+eryk9P/N7juBQGACWADcnrb4xodstE/DeGcsG3G/8YcIG4tOwqMHbpNvPY+mgYxkPIT1bBk+cXYdzwJXwkOPKb+p1sNpRhKg1qaiNXphIxF2/XEfsG1fSM2d5zqNDpYNzb8kc6zKrAudRnldY2cwmqnR/NvaIztHbt8Rl4Ot6QzbD/3TnBgJX8Neb+XL4AXPw6S3zu43gUBgIijRXRkCajgCDsWKpy2M8sn4bBmBZrQSdZzgtyXenA1xjNOVKsfyefbs+p0JroAPXI7Hu2pliGdymcuVARjOHdvqxIGU7g9qYw9nxy3S5GZbW2uRNKQxAzlvEGbb2RLhWCb9W+Ctk84w/vOeu9/v1euZ99YDg4L1b460Q1zs4hQIXGakhd5axYWNZ60FmlEF2vXknVZpu560m1Jd69oNCjxNv6IFw2qengP8ftHs+p0NrosPW47pz3MjQCEA2dKPrAfySnC17g/USBtJuKU91maCppJpg1XBrffL3C3R9v+eo1bd/aubvO/LfsF4xV6Td9FnDJGexfb2p/9noPuvGYAWDOZ3IGIJjfk/ze4rgUBgMlgwvKoKhdPchaMVwoOQciSSY66D++mqZlHrharUDryXRq1HPaxeL9vVXeq1yAiuj89jInxlSvRu2tq7WEbu4c/d9cPHVL7L3HvZHepKvX4Ffl+p18t57i90hWv6hHmwRgOjJfExP+dg7jutn7WfUX/Gu+qzS5p3l3OpDxBaf6gKN1hw1AyyT85j3xmGhI6vlk27n//wpwHzLkkNbK2VQfpuuX5l+6ZXzu4fgUDgHIAlww9XAXGS9+cSbSCGeh2WlGhxJ+JKhJGzrEYpJ5bMJeIEkjkuW7Hroa1ZdL3OjPy62fV7HsEVdQdXzzP584ncbJ/DzfNfM4v8d9yIf5fPvYg/X8Wfb2RF9lsop++ktHwbE/m/WCj9CJPNT/D9L+Um+WnmyJ/m75elw/FnOM1PLcvxJynRv1nS8gN8//dQSj/ELfZ9fO8/Y5J+CX9ezM30DXzta/nz1fz5Ev787byth/9E/nwEf57B+f8t/r5TGpha4KtN2ybLhKPJu3cTGojQg81DrUmuz/aWV23XF3ecKtq5XaMtevRKxmn9u6NLvVVoIBCoYKHw5VVQnADB+iY5/wiEmLJfQz4Y93iY+RVTpW8q75BYiXvWRbvGtGhib59dv4EHBm6/R3GHeEcWbXJz1qvLtxq/DZ7c96Ff7FpX3Lu3b9Fo1f1jPx+fDWWUYyn8ab3pY2bXdSAQOCdggfBJVTCcUPf4tOY2X1D1H6PyrH6QFUZWE0GZuQmvrh4TMLmdV4TvwcpYTKRF67+UkbquFcgsHeNavpU16dt4dHQb1/MtPExS2h030q2lzjndWu+2/vmeW+/rs/ne59chXomclWC/BmqNrjuga2kx1pixo5qY03Blx1mMhg6eHU1dl6Ed99EEpZ99MG0TCAQuGFguvG/uc8hiXrPONLIWGCUi6g9IjHtah9iWUQiqzM09RD2ohDcPp/I26dYgC7WMj5ldx4H7j4XSLdx2D81VS6a2jzOJZzZaVAZvaWNJEfOxNR1rkqYhPaYb8iR7l+6nVatXacSJq5iq3zS7jgOBwDlD3uYTT6sAEVIWnRMFyZ5pzggcT2NWc8jWzLidQ71EC8Qs16ntCmVUJW0OFzPlsZ581uw6Dtx/JFpYy84P5Tb/89p/TmjrB8vYCQkHYh5wYOcFHMG12cO92Cfzzt8B5E95HEAKjlIW/jxpdh0HAoFziLx5vJZRu5islWAZ7NFdDyFzgBqyFWYou5CcbTqt5dBwvZN3C4k45F1wut1I3z67fgMPDNyQT+DmvKe2/7HMXtiF6k77937im6G9vrlnzt4xP2MXlb6oEsvzcVcyyjWm+PGQfmh23QYCgXOKlKoWsmnIx+wLJ09a7QkzlYxcR65BO1bX0VzoZN52f1q3QyYrJzeTdTmzEP3O7PoNPDBw+31GpcADtKvVcPVvRZGuSTol3U/GAach2sFVsSccNWY1gFQhRNcrx+Pyhtn1GggEzjFYTvxMXjXjdMhIlBmFi5JZVhCu6XYEmxZwfSpuyfvpM6ST37K4RLRwjCWMy6QkVONqfucTfzG7fgMPDKwQf9/Wrkkii1mP5dY/aqewFpbsHNv7W/811y28+Wfbf/EYAu1s67RpW3cdToaBQGAfLCS+sgqRe3MntbMhmgA5psFR85V5aWtSVMLOEZpyr43shPqKkDNq05K2EPLp7PoNPDCktNwJfcAjUWzrHY9odZ3shXok5HlW3t5mGtL/zBaja9qj6b8FMW8cCATOBguKD68C4ySPmgAej3a7fhEcs/Ys3G6eSxVgdgMDQROIpPPHoCPbeSVut12Oqvb8PrPrOHD/wG32yBpiU7aPHBwDSawjOmSm59m8oyyr33uase23Xj/G59ai8WCQ2k5qR+683zy7TgOBwE0AFhjvmfuSjMEc6Akhxcz72jR6TystxQjBMUIYYTnaLT2PTr5WE8I8T+qFL55dx4H7ByazF1RiE3M1Ohwq8zJ0qN1pENKDuJy1iXuvB19tuZ3tz6gNy99TSpRiiVMgELjvoB460242MEg4RzgJP9vA+kiuLV1LvJM9qUFBu0VpR/VhVUlytZ7yWcMT8sG/n12/gfsHJrGX17ascbIbEYspeG+Jk3QB6l1pt4/pfto7J1xTRN77IY2rESAPGRBuA1yiR8yuz0AgcBOBJcg7qxART2u7/hIF1aZydOF1NLZsMpJQ1o6KMLXCMJn7rSQdHG4Mm4P5WmnNYrZ+8+z6Ddw/bAPEZrJeevtie1uDjVqPjtYZvE8IVTatgDjVfRcq0//keIEBoDKJQ/+Vz+oZvvz/7X17sG9JVV4Nl2EGgWHEDA9NeA0qAtEiZVAREx4a0KQqaEpiaYpKxL9ipcoqSUwpgdLSJBX0DwwWBaKVpCCaEpX4ikBMfCRKKCkwMKAGZGB0YIbBGWbunXvO+e1endW7e3V/a3Xvc+/AvdPnnN/6Zvbdv713d+9+7LO+XqtXdy+0WmdiWbnM4XA4LomkRcZmZtuRFjoolKwwGgjEco9G01TUAkcjU6B19jKm6CQ0ZW2FCAK0podzP2WXoaQp3zC7jh2XB268h0L7jcaPxQlQOnrYoROCtFOSRt/aeOOH7RkGZI6tBUASdiHQ/55dlw6H4xQi5l131hWuIjhKac1VyR0QTGpHYqU5FGHZBFtTbUeCUGkf0imw3lox7/gTc9pFV9d+4SK0k3YsnuPfVMrpmsoJB7foi0s7grWGsF2BMMFWAr8MUduP13Y2AyQz6oRaKEI2fxzrPSbjtK3kw2bXpcPhOIVg4fHE2ExtuDjISLOwAgi0BSJ9rczY+bqZEo8Tkuq91E2ZIplKFSpvN9mYBPFRCXyRVvkY3za7jh2XB262d+bvZDhMrDqCg+/G3rvEWLP6Vlvcnoptp1E6BjJMImPdhyVbT5pdjw6H45SCJci52By7ZAxZxoKNaa/+FKHYjzFHpbVWTQa0iXKD5HcA2kVhGtbpLzK1hSoDo6QEz2slZKunK0e7e3YdOy4P3F731TYcz3NX3xyNTc/43Jqv8Rtbv2+SDl7/PEB8RCZjqn8ru/Vby6H+/ew6dDgcpxwsSD4ZVzNhGGnIl5oKddx5uLhHS5ckjJxR6EnwaqY0khFN4ypcSeuIhe0RP01l8p2fTjhi3uxkbXTSRCzNbqfIgaaqvjv8FoZDIuZ7w+7cyNLd/T2Q7rjKd3j77Dp0OBynFBHGVFma/LdMYHn+rhFCiTjHmnC7GGkiGF68VDtp154roOYb1v/G6QbzW9ISzWVd8IQvXjKzrh2XBrfTc6Ed13bFFTcucQQdfEi+dh7zejbkb4GdATvXPVKbPZDON86uQ4fDcYoRCymzYPmeIpzuj70wy6ZhPZaLmkQzQzeBCmGIqHe8UoKtmqVj8+KJWlAGEJyw0AhVL1zSfQQqAjoR8o4j/87sunYcD/7A3jz4PhSBUvftKS/sUSfN3hMztOrgUfte4FX128aEeuLOkV8+u/4cDscZAYuVZxQhdWjIUH5UDdaoqqNpIlY4RuqnNImo6+YZx0bUslvUSOu2WrFNZzVlkoyNU7xndh07jkcIdNvgW7ILcGDHb2B2phYn37HzkFXA0fdHWmtuz3v9Od05ooXeO7vuHA7HGQILlofHTF4Xo57vicKrCiLSWgjeV8JNC8um2VKvBXULikgcJYBJpV+OYTaQkGUJxi+ZXc+OMWJ2LDyM2rRsvyF7SGOPLDdbcQffZLBhtjqB2PnblZvp78WnODkcjisLFiyfjjDWO2I6LfCU7BoJu+46SzWygrOLG8bpEd6hJhzNy8oC/zgdJa4Dya+aXceOMbh5nlOaD3dKGn0nqDHLuPFWuBHwo8VhEPutjeKX7uA6PeCoBHn27LpzOBxnECxcfiq2BRmQ91DYoVerBFGE2Vxr6iKbllBx7hQSv1zaRR0oaq16MPtJhd3B7xR2XVeY8+X7I59QcPv8QGlDsWZE3YZyo7MbbxFq/ThthAFG3+fQWpPyxx9n8rNYQqC3zq43h8NxRsFC5ptiI1w0z9nxYSukQCgSmLpXcQhrAytFWc0dNoIzX5MyX25NY1nKHeuQY/ewXUqAa2fXs6MHt8sHanvqtpbvcdQDQwctNGFHFZ86D/5tjZrg35Yuxl/XfOebvouTw+G4emBB88iYvaxRUBkNBKi2l3J4D4Wq3aXHzietyx1uCE47/1hY12rcysEn1GerJ7asef3C2fXs6MHtcm9se3KPNFU7l33TExs6ZXLSJB8687f9lq3ntmxyIUvLJiuS7+LkcDiuLljQfMqQof2tZV9F6MNY+6LWWMU8LYKx89ImPW95S0vCdJR3LLUxxtXUWALfMruOHRrcLF8KRIedKrtQjDS5WFhG3th2eAO/kdF0KPycWseu7cktae3kG2K8bHadORyOPQALn1+J2kxo54HiyZI2CEeC31bu9SZw0ucFH5WXjFbpioa0QfNRwlfC7wKt932TiRMEbo/XlPY5hGluQrpW61XfJHyI+lsMEdNZ278z8/S/BeiDULRjWrX3HS0fml1fDodjT8BC52WF6HagvW4Jsfqc+pW8ZEy3m0ssqooRrrhwQ3lIKEiteVpkNC6bKZpQb2PP56Ny8XWz69nRwO1xW2k/WU8dPxfUmKGXZ55TR8BIqCpBDaodPrw5eGcIu7CbXVcOh2MPEIrWyILnxrg9DxQvrGYMWg34WWsiHWnTvaCkphGjCVrChqicwEYdhmH+qYxlh0AfmF3fjgxujmui3vdYOQuaj2NElHZTEgy99Y2gubvrXJY87MDsvZSMPHd2fTkcjj0Dy6C8fCZRN24LgpLyuZODIti2HGYsKa9hUaMlINzBSl3itT0yWWN4u9hIzVcISyrfQ2fXs2Ml5GeXtpHx4+yAJUbnjpOrNaZ4RZvnjZyp//SUJ76E0CZybclJnvnikPim2XXlcDj2ECx8/k9sjlB2gQa1G1ToxnDFzI0LfakfhLIwaFNhHAjZFA7zUH6vw9TiOW3NjRvm8+qck+7//dn1vM/gFpY11H9xbROq7TLqBAKFioGkXldtl0bfkvr4hhYaez91BFLnIH37ssrbXbPry+Fw7ClYAH1HEVDo2DVeuYi6MTqjbRTnKrKabNVeN03j8LzOZQaNpglQSQtNl+1fuxrTao4MRO6ccwIQ87afTHxUdhlbfQKak1ZuNd27Q2P0eCjEzkW2x2i8GLFEveTqTbPryeFw7ClYAD2ymOqsQ5U1HyPJdTITboTCpp13bGykqVF9bQg7A0bgVov0pQSsvE86GGlhhyRsHzG7rvcZiehiWz/djiFTbTcyhCumbLnS48HY/qUzeDmasfT31kO04zT96btm15PD4dhzsLi7CwRksgaOvF2RWKumgmQrNkYjGFFmisxFDUaE6QKSEheEAIFapzfBimBVoWpCXY9pixPRD86u530G1/8/i3poxC72gd9Z1xls9/pxZpPWpZ5b6886ls2p/sHsOnI4HI40tveWIq3EbIemY0ucyJAxjoQgKS042IfonEVjYammNcU2Fl3Vm9if7W9522FJ745U1ujzkqcgZl+FvCDI6plPsswlmqubHkzmG0htGFSnK9b77ZvBB/jNbjkdrn4GRHRhdv04HA7HCpZSX1sE1Or9SlWIKdMeCrQ63twkaL2/FUcSU4LRqOB1o4tyM4Bvd4oq6S81BoYekDQ1b97U2fjy2XW9r+C6Px/7ZSntuubBtF5PoAThGux3eZymHG0Y/uc5s+vH4XA4VrBMOrfQ6mhjdk5qgqx4am2txIXCzUKN+xmzt8QfrSdczZPUxPSWsKUijUfzlNMc0zJuSf9zdl3vI7juvyJqMl4/KRqvEFcd9+R7EyeC2BOxQMYtem07lmVVG/NTBF8FzsUvz64fh8PhUDjaLR+Nbcx1qN1GfSHmRFRylPkYzdYgZJXbjdWYDdDsaDMUBtFAYCvtPmn+F/lHNU1yRs7NrO99Atf9K2MdP6agBh62v7NMwHW7bvxk9M9CuKQfDztt6uFC8fzsunE4HI4OLJ/+adFYxAsWd81BAWeFpghBshJRwhjVuTdD2qSNhmPjUdOeaRBfYqOmn85lqk18xey63jeEQH9S6n4XtWUEz/b7AE3W9Afb91FIW8Ul83spt+Tdaehit1BIC8Y8ZHbdOBwOR4eYl9FMQutgw5TYm6ypStS27KBeBpGK/oxe01sqTNXKtcZThXP6v2ytiHHqFZq+7VhhXSQkEN0xu673Cdyaj+BWkU6etH/zFWgIJgzSqzRyjWcnH0Madh69kLKkf1Q+oOfNrhuHw+HYBLNVmv50GMuewmPOXElXyFBUUtFUFRkO7NCKlI02LRvQZzHciDxSH9/cVmI7mMdSlkzKtOb/qbPrel/Adf400u1uNWNredGe9pqQbbjRfeunACvQZY/7JdKvz64Xh8PhOBaszv6HmLXTgybQqhmYepmnpCGQLDVibcKRzHwVJE4k9NgEaMWyTnppNu2xOb3p3jk+NbM2gXDm3786u673BVz9r2kmY1nJbUyko5bE7wc+NUPuZnlN09GD72nHH/enZ9eJw+FwXBIssJ5ahNgOBF6/MldVQQKJLVkLyBhAUtYVwMDkjauCjVZeCibNTnsaWyyH2+9hGWTj+XRcP7u+9wH8hXxQyBDaAU3LxwxhkBr+gPDgeG06ZvBBQpvLtLcU9rGz68ThcDguC0R1Xd+jgZAc7jcLqu7QDEldUDBrE85qshqOWhYbt3o8bh6qnMmEk3HkVK5DZvTXza7rfUBsi3+IU1UZ01VjvWNz9XjIAr8Ti8HCMs1/gL+f759dHw6Hw3FJxOJxyudfjVkDkT1iLfNVYUhAfqDFyDOZQ5oFcLdfrTJ7L1HDaE7dUptWGIcWdv0f8kNCAGpMkX8czq7zsw6u5yfERsB2F6/R3GP8hlBz1u3dm7zxu7Bjy2nceBcWev/s+nA4HI4HBBZezxyRohGIKAgDyEwy4rKSMBGNRg5DszJ2wliZKOUwo9fGe7vLrhCyaEmyD++uRP7O2fV9lrHE8MrcCDTa2jN/F51lhfAbgu9A7ZVtv6TxgiE5VHp3muJ03ez6cDgcjgcMIC0cf+2FH6ESXM3MuBFAftzkqLqILUDU4a3AlvSzUG4qdl1xyQpl0cJQeI9I/7Oz6/osgyv4ffoDyJ0j01+zFunWTrhqqv7ocKGZ0dQ8nEKVHnzz7LpwOByOzwkUwrsKG1oyVloOiSbT5gwLiVuNVX5385GL5oxarvWgFjXamjpj7El45N1t82/NpS6srwK4Xq+JeQqdtXpoLbm1fYx6nFk3IenvxnwD+F2l4ZFmIg/xD2fXhcPhcHzOYEH2rCIKA8rEAk3SVV81ZEtK+Fpnnhh74WqnxIgGjBqTimc0L4p1lyCywhtJwJL2x2fX91kEV+/N+WupG4LUvTcHbSJtWO+Dpms/QWzHGLUlRDRjGZpI174al8PhON2gtjuPJc9GtMb22LQhtUCIErbFBF2EbU0gUFtg0zhkNXIlfHc3R1p1AqwZmwbx8fibs+v7rCFQeHVpcTFTj4YOavsP2suexdQ9CmMtNBfLw2+dXQ8Oh8PxeYMF2k8uzYRcGRIFKXXEq4VkUOGp/dPuohaMaTWybVOdqsZO1cmnJdeyVNO/lPla3pf2w/3E7Po+awjL8sHSCxrNI1cWC/hAuk4W6efwIRHEqWnX6Xrcw3v77DpwOByOKwKWaY8G6Wfn/4KZUKnJIxIkCCeEWuNrMg12jNmmP9LYa8/ACvxjTKQizdP5oJxfMLvOzxJCoPtjs2xIxQ8d7aj9FB+FpT5WH4j+vrCHVeKsG4gsgT41u/wOh8NxRcEC7yNFoKLjDMpDim2fZGUS1gEr76IGVEmeZLwPtKmiBY9NmaTehYK8CnqjVVnNDAnh4irIKdw2u77PCmJe8S21K3rq2yUz9XdE2D7aqEHj9sOPMFs62jf412bXgcPhcFxRsGD7hpXcmtl4pJkY4iO8JxJVNogHmSnE2TRnLYwbEVMT2Ha+aRPOWQ9bIDNIvJK3QdbXMIflwYtn1/lZANfjD0al6apOGrSHMknrtgX7B43utnYv7wmyE9T3zC6/w+FwXBXE7LEqC2uY+cm0a1pPJUOt3hgpagTvKkyHBN+0YOtpK8K9bNGYegvKtGnN6xCd7HMq5SlLapLPS74C4Lr8RKtTY3feWsQjN9GoA7U19W49h0BJM75YPpq3zC67w+FwXDWwnPulIgx3lQj1IYI0qdFqbFerqFW5tstkClmu6VGfBhA8LX18FbSZrqnFBSm/UHsX5kecgdL9V8yu89MMrr9Hkq5PMnVtm04+k2babn0vjItk3MaSaSVj5uV47+yyOxwOx1UFC7sniXAtZLmQIuNOIwZPaCVMrSKsxgFjmxojDj2W2GWeMnpaoy208u/ILo3vKelIMFnWMW/NSJSme52bXe+nFVx331zq9XD0XcTesSua+0ja6ENQf5vvb1fM3l8yyMs1M+rA4XA4rhpYsN25StCF0p62u6C1mSZcqROk1o1nNO3FkjUB+SKA2Gl0v3s3DeN2cWQBiWyCz/jns+v8tILr7u2xTUFC7de2Gd7rFoWx34S5tiu2eXs5HI79AIX4A0UAynhyEaC0UFR7E4uSWhx2OmUVSRU1p3JNKMAzqVL1vi5nyqp0U47R43rkHIZ5sdpausblPuV3IpMbZtf7aQRX6B2l/kbLYNZ6p55kLXDjib5DRTl9fviB2WV2OByOBw0sBa+LzUlHiAs3nG/kl3l2tFgIClkzvFt/h6IkLUKiRstdiuI80oLxvd1YdtSEvWVOT45d63xWfvMfzK730wautxtiPya/1T7224jSvtAxG1k/oqTNbJy20Xz07HI7HA7HgwrWS3+3CMejSGjm7caLLdT43+B5XI3hSuAWUtbrY+Mzq5TbOdLmcZQuANnbWI6oNeWEZ82u99MErq/vLHVbOmuE9YoVPzJBY3uMNGJstKXQ9otml9nhcDgedLD8e3oRhmiOlHnHxWytvGJ7UhyPK8sdu5jHaDwxRCWZ6wJdRoDXMIuZ59yPW7YdoNACsJaR4/757Ho/TeA6e1tsGrLU7TEdsda++hNQzyKkU/0WFlp+YXZ5HQ6HYxrK+KCYq3ux2QnTtg41UKUNPSJJ+K3GmgPpKUtF2Ad5FzoGjRzDMLdAFFbhVul/9+x6Py3gyroP6tVudSm1as3RZvhCNYaM8WeNm8QTPt4+u6wOh8MxFSwMvy9THS1GaK5noqqqWuFqxnZxeHf9H5yuyArk9iMop6+RCEfCbk+IbD62OgWjrkUig4fNrvuTDq6jL4nN8W8H9YkmjTblCdos6u/EmrMzKecYO/7EUhpfMLu8DofDMRUsCB/KcvEgC1wyJDZWkw2n6nFBvN/E9ogccb1Nq1HbcwlKVrij+fM4WMewoyUsvze77k86Yh4/Xutr0H7YDN0UqIHVRHW8uD8lQyTp/NLZZXU4HI6pYMZcF8tgufhfYhtnjVGTaLoaeVhbaRyAMNexXmtqJiBTMmsiwzvtbyvQBSNyHnUMRqSQypm0vr81uw1OMriC/7DUW6qrbrOPddKade4i+K2tI7b98hQnog/PLqfD4XCcGLBgvCk2QpYxQtFvRyTXLQZizMo4j3lkslzU05rWUDGX9EdaF+bhOHUenpPkL5X1fCydEocG1805rqPPRj1ubDtKWO8jT+oYO/N1kDRWh7vZ5XQ4HI4TB1Z33h2bZzIBPY73K0aubM/lLhK2WT5xVbetJmzTl5W9iiaNinWHxWhlFpYcpGjFc5h+bXbdn0Rw3TwG2s9MYVM1LgYSRcRQ6YawMyGXAYhnpHdxV8uXw3Q4HA5BBAeeMgDce9OCkKXGkKINo0BG82Zvjia1drES4orMSaVpzdfiTT0ggSDvMYuQ1CvpeIgp9utm1/9JA9fJd5S62jU+xbbVW26a9j9uyGFNaAnhJ2aX0eFwOE4sWE5+eECgvUitY8LUkar6PSbULMmDUKl6BQr5YOYbW0Cf4JLm6j5nWetLuwrtWEO7b3bdnzTE/C3IsqrWytCsJro7hD4E8m10C4gsy/KJ2eVzOByOEw0Wls8sglOt2hU1Sa/XYsI0o75g0lRsi+pU3t2psXFdGKQQeBPiVO/SRrpa1MfNcGiqLuVbOxNpVyHx9r11dv2fFHBlXBuIZEGV/B30c4372m8dncNS5WlIQJZjTeR+GELczS6fw+FwnAqwMP3jQqAiSI8zQwrJacKt9FjHC4eaciZmsyCJfl4Jek1joFJDnuywJXYarJac06Wq4e9yQPqR2fV/EsBV8YxS99rBb9RG+hsRyL2jEmh14CoN8ndnl8/hcDhOBVhgfnURquJxjePBxnzcLc5hH0g8Eew1XFGBq+euUW2F5ENJCJdrtHOlaeMeEkc01zINS0yuCwR4wuw2mA2uhh8u1WF3d7JDE1pjJjxTsj6sjnOUj9Tavzy7bA6Hw3GqQEv8ZGwrM+FYIGqio2s0C1eipRZWNq5YSbCFVRpthHRw7rLtEBBYpUdm1KjC6glWNS+xachFSw6HrNg/ZHYbzATX+gdLne3Ae9pqyv3e2fpbkO9hl78DumN2uRwOh+PUgSXpc6h5IuPewqONBdCO3LRYXBSk32hiMC5MZaoTmbCE79zSfO1NtFLjuDdq7Bit3l9CcgGnd81ug5ngprk79h0xrCtw5uqtI7F9M+ve2qVRb5pdLofD4TiVWEL4i0JcByCIq1BGRgztfiU+6p2AqgZt2NQ6gsmF3DfzmK3sr+buY7yxzXtI0idMt5BIHVd+xew2mAEu95MiKTLG4YaRJcK2i/1OUrzvnV0uh8PhOLVgKfrMIlkPjdDF8drR7yqYqdekNY+TjUftR9OqrXZ9LCDANkE3k7XtaAjxpE7IeT6eOrsdHmxwJfyrOCZiO4Vpy9krHWnMeJ0ytQS6ZXaZHA6H49QjEN0W2164VkMiYD27JaIQaTDDw3qYmKpajIt8KDUZI8e6xROOG8Od/v2j9ARl6hMtwDLi0Z3I5AJffIrP185uhwcTO4ofjG24onZawAphV1br2qvE3YWQrNVxr8fjHQ6H44qAhemTC7EdRVlSs9eMUXkdjNGu3AjrKq48HJpDroo/Iv06Bq3f34XHeHb+NMLGjzrsyj2yIMayEP2/2e3wYIHLeyMX/p6Yx30RVjOWDlodK4bvIt27WMJ+y+wyORwOx5kBi9nficmESytJrQKZit8VVU202+9YhPN6pjqP2DC4GgKWGyRjzTlOWMlzBxHwVWhKrWZtCIX5sI+RQGzCcn8lHmabN85uhwcDMS8MU6e6kV6oRfpOdnx5gfqKsXWG3ja7PA6Hw3GmEPMmA2W/5E4zxqlDZi4wmjoJwilNWsKIBt3ImRSRLuWpOF21NDLNjzRiJFmlCRfax+cLxKgkTs10m/C3Z7fF1QaX8ZWlBmqnqNSw1JXUmiVj8ayX35+ZXRaHw+E4U2DZe66cXx+zGfcACK4Snx4HbiRn7NnWvC1xu0VDDKE2MjBkjwQbNQHXa1DKRx2G0fvkdyEcyuOhkVL5HzO7Ta4muJfym4P6bdfN9oBm6nxNa/1I5+Vps8vicDgcZxIsYK/l496YCfmQ5TJ6KOMqV5kg9aYSdh6w0oRFsFNz6EJhX9MJRLia14i80Ww9GOOW66qh69g67A6OuiUl4/zstria4DL+CbYJ1CvWGY4doxf2YRmWeNPscjgcDseZBgvcF8ZGwOgVHQj2bpJzY7xqYlbTlcF2LWPM1UQttujC4RDfTmFWHYKl3TpWM9a5aPF6jbCZZRPW6V/cL/gkhzxznsNc3Ou4fLdDm8j2laNODFpFqkd22NHts8vhcDgcewEWun8Wm4dtMIIaLzJRa3JT5ubQltEE7oZpNm0cs8QlNGvbNAX4TkPEVQO3Ju7eV6yQDHQSRCtcva93S/hfs9viSoPL9XA+7oLy9nUMv6hpx0drveTR5Rtml8PhcDj2Aixwn1CFNKl1qkFkkyVK6/Vs2LBMgQrInNlKHbOLtV2AYkTwcfA8xnFceybDO6IZr1of5TFkIWQxYac1r398dntcScTsvPfpQrDFu11ZGazFoXZSygfxbbPL4HA4HHsFZqI/iNrLFk3Y1jlL7MfdfN+RWgqC327p17x+xwSM4bacw+zv4zBa61p+4xSf18xujysFIjoX80IouCgIzjeW6WFLILpYnomT33+cnX+Hw+HYO7DwfQQIbDsnFQlTpsIsG2O/sjiI1XgtoWqShcHfQvTWy9uOeXYaNel7uxqu32+5pEs2f7LGd7r57bPb5EqBC/PWUk5ZCIYPGi0CkrTiRMpLCHTr7Hw7HA7H3oKF9GujXk7TTkky/NlWfjLm6y0SbkFptN9xR7Y4j7lavsHbG+Ypm+whwZv3Q3rY8UgQcjooaT99dptcCXCFPZrL8pnYOhzVy5ygA1bI+IDP9/P5+tn5djgcjr1G2aIPtmhsTlNGoxw5BckVemu3OAFDE5KjJePRuRIt3LAOXngP4+jx797Ajdo4asrJ2evxs9vkSoDL8bV8fDTGuqa3bC6CGnI6JzJ+7Oz8OhwOx96DhfHTo1liEknWqqKxdwoi+7g5dW06Yg20cWX2RuK08bcWFrHhJF1J2EzbqmZuIafVvMuhk4fyF89ulyuBmIclPlbKK5ryUTlSxdwX93AnLIfD4TixWCi+M2YN6ij22/UJe+GCHfJTEaOYtXt2JGRc1G4xvOoIDDhWzX8eQHcQem+znbnGMgo559W8MimfCRMul+MaPtLQxJ/zcSGm7Sgp3BcovDeekY6Hw+FwnBmwYD4XAgkZo2f0ceO++NzOZ0attKzg1Y8zd6q1JkqVVhyHzc+R5Y25utOw9Y5TCaIlyz3ZfCOR8k2z2+ZKYslTonyOscPhcJxkMGV+dyFP2bIweU9bchxyKThimds2WBdtDHDbhtNxpml9PbBzD94s+cHFQuTpruTiTj7fOLttHA6Hw7FnYC35T2MbYxQTLvKZnYe8mOdW+7TEuqXxWhzXCTDvAt1YmcEVPyO3yzSuS40/J6TyfZaPL5rdNg6Hw+HYIzDxpOkyMpZcF5CIyizdOUcBOYLpt2qhimTHhEzHPpfx6YEjmDqrMe5Onz7eSQ3LIFfpd3Zyo3g/H+6J7HA4HI4HD8xCPxrb2sag1W5MgdKQ/YitFRsctvQ4c9RjyrCyFryvjf6OxraRWO3KXJIN864u+8dZANaxdU7iPOfoCbPbx+FwOBx7hIVCmr+KGjKSqCJmahtByPVQwzWkt2WKHmnI1nytSJWa5otpbLx/5fEN07cKj++QMq2rXfGPJ19OHXL4a65yMzkcDofjrEJIhM+PouOX1CzbLJKQtdpViJp2XMmOIAzZBUSGCne3uYVdfATu9USM6vh6SQRxwsg8PiJyXOu7aMprBr5xdls5HA6HY0/ApPNteQdjJDI1jhvMOHGAcV4gyUqghgTJrsJl9zPeIOSSjppnHEbvxQFhNH+PltfE9PGdS7kQL2zZiCG98NWz28jhcDgcewKmsQ8DWY6IcrhrEzJlFE26uXmBWXtzXJoqq8K4M9zD0FtOZumkOwE4qhxrf2BLSxbN/rBYAmS+sixBmRbZfsvsNnI4HA7HHoAp61wgOqS2BrIQVQDCGtmbkdPAVN2z3jGEOAwzCDBwFGv8C/kLzVoeTfjuWn4XczXhLkmrwxuV+uD6ed/sdnI4HA7HHoA55/mFpGQtZCEmWfe6kN2WQxaZ647wIvCmHRveMi/3G0i0dNX1YPqTCdcNPWP+Rg5oGEY6KWlnpS+c3VYOh8PhOONYQvi5WEm4rt4lWq/s6bRFngnFIaynR1Bpu/WzywM0PyviLw/s2DbpuOoywNgyECtJOXrlXW/9KI5ttVzUVjZLuyZ9xey2cjgcDscZB1G4NWYt+WhArnV8WK6NKXuw8cNw/Hgwjzgi2dv32Pcv5rk945znke4cuvvN+i0Lj2Ca672g18P+/tlt5XA4HI4zDCaaR8VKyEE2vLfkqc3IlczsGG9HyJjUwOzdvQPPNg/jBEN1TAtR87HtRIwWHDnu3BzXStwQ6Pf5dG52mzkcDofjjIJJ5utjnZMbcF5y5yAF5BZAI44Qthuf7U3JihWpndtULIhjw0P6JMS5vjfkKVdWQ0diThfoWW7zhQfOVRbnLwoUkgn70bPbzOFwOBxnFExXP1546ShqDBfpAFV0ARLs1FOIv7XYRyg0PNKY4cAtm3vz8oZaHmPT+KtpOlTFvnuvXVObIL5szhFKhJfObjOHw+FwnFEwz30o9ptNRCCoNt5KQw9sS5T23vZ5QOrHPD8u/ZLFredob1fMjOXFFcyknOKJnu4nLflwIXonn6+b3W4Oh8PhOGNgcrmej7+MWlMcbdyA2mTVXmkQcAA0YW8Rfyykb53IMCrs8qQUc6qjy1sZMKbs7uUZCxyY15WY+caFUpZ7Q6DnzW47h8PhcJwxMPV8Vcym2TTt5yCTTjjKzk3ryly7oEzGhJtADJf4UuSnzcUjDVuZs0GjNQmq4eZCxCPt28Yna/Iea+Tjt6EZW85C/D8yu+0cDofDccbA5PLSwjwXmY6Pojh8ESwa0lasRk1ZWMuaf/FszdqLuW/Jb3Wm0lptmV9MSlNXGnFLg0am9fZ+Mb33zmCYR5s3+SkmbKmTO/nfx8xuP4fD4XCcIYQYfpb02GmM2oQ74L9mvjZkNhof3jKF14TM/TU9IdqgSTjoLHTpqU6BIlXq8mTLtpqqTWZHnQrsEPzU7PZzOBwOxxlCoOVDRds9yCbrbu1rdTbrepSNGuwUps5cbb2vhyQ6gDU7S/o2fg07sEUfl9Zx85ZRs0dC3uUir0Hv4uNZs9vQ4XA4HGcATCjXhEB3F6JJm1EcMd0M5/FSVHOUUQm1xB1jrznjY0vSdl3t8psG96rNvF/cRGvNeHX8tCzN4vIONLMjOcfScZH1wVmVX/47n26a3ZYOh8PhOOVgSnliIDoo48erhoxrblEzA+PylQgkr5GSKhq0WmkLAnZjxMi8zPdbmrQsA2o1Zrtfsx3bzstsGkqmZqpfDxjTlvJlCwIpkk51tivh/uXstnQ4HA7HKQezyfML4criGEJ4ERkRCEsRtH1mCHakDcvvkblaESwJw8ImFQTvp+6dZNPGaVhort4ynaf7OyDo5HS+EjA1k7mkkchYOjIcMHyKT8+Z3Z4Oh8PhOMVgInl1IZbDGOtmDdbcLMRlyNeuY705pGvHkbUurgiWChl26baXjs3UViNeqM9LwMx3i382Qs9TwTpP7to5QA35MLbNKm7hG18+u00dDofDcUoRaCnLa6qpSAsQDa5uhQxmNWPLyJYshy7Y9Q74RpOQZkuSOqN0rEuFVO2VbIrb+UVaR+1XAiQPbEvyeNmymMIF1WH5rejjyw6Hw+H4XBDC8ltASris5NaSm5srZgFXbpimm3k5GGIU9ZdwnLjeu+T7jfm6pWHM73IrdFSdfwZS5m0k4HoTN+uQe4flKHZ1+l3+9ymz29bhcDgcpwxMKrfEtigGasVLVI5UmsZCx5WgORoiJH0jDI3jQJgQejR2LcRZORvI0pDz8D290Royb/I/mnst74hQPylPdv7yh/n4ytnt67g8cMM9xN7j9rtmRl4cDseegonkesqrUlkNWQg6GjLqKa7Xpu2KWAv8xvTa7WyaFuu2rH2N0Qyva2ctEiO0Is0u72i+RkB0zEfJiyFx6tMTr3Ix+e9KntLN9/PpybPb2dGD2+XpfLxxifR+bqzb+PgNCnTz7Hw5HI49BgulcxTDxZhNr0smk3Wta7sUpoyh2rHYqMLpZTDL+DRRyAtkwjSjbs/j0CKCc1WvShM8k3cu1EhYHNX68FppX2gwlYt0eau3tzwPzZ4uz60mvTqBUXMCS/gLPl7Ix0Nnt/c+g5vj4dx+r+Xv/TNx3Ik8f7Rbvm92Ph0Oxx6DBdEXMs2cj21MdNcoiFBoGYJT7NVRJ2idK5ENVGwqDA8aL854UuHRJm5N40SNKLf8yMYLhozN0h05UyZw6SzgFCohXiRnMP3X6VIpDa5behv/fuzsNt8ncH1/NXfTfjumNd3194BWjcPSdgcL0Y/OzrPD4dhjsCS6ialmoUbKagENQ45yidrhaNUtqlpoI0papzyjnt3mAHck2cjaTLkq/tao9lJ9UqdS1dW3gFxxqpfVpiWf8rIg62fmDACn5/syHUrNh4a6E4Evu24VC8T68FN8vGx2u59VcBXfzE302pCtEzLGL9P9jqDNjkpbYTsl4n7x7DI4HI49BkulJ7IeexGEE5qfrea5OlABIWqK3dY2IdDKy6GmBCbqHD7YdEinsPJlGDwCch7GNR2JVh5TRsPzmLdKuDDeXouKTl4YJt07iGAqPzzcXdiF8F7+/aLZ7X/awXX4aD5es6Nw56514KSDeTBoi9TmQsLyLaydLL64g7+vR8wuk8Ph2GOwXHoKZUIRMkFCE21QyGjAgUqdDqHdsFpu6GJS/R+ctLI2ary2QrmQ+2hCRlJFzd50CJT12y6CIolDDpUZvXYw4GW6s9CyizWgzeZUN/hYNfUlhEO++esxmVhjfNjsb+Gkg6vsOq7D53Nn7r9yvV0Mfd2GeoXtkO9gp8kOZ6zadKBwy+wyOhyOPQeTyTOiaBBUl9gU8ytqGM2OSyNSK3N/q1gkTUvAX6uAlIVAVpGYLbtGw622YsuuRSsdPSKIpoUyCOIwJOVVBZeMiyk7aF2+5n9jURGlTSvv8Jjrd7VGEFWLRH4YQhrT/yU+XsTHI2d/EycFXBeP4br69iUs7112dLBU53wmUP4GKGu3IcISrOawbWSfW+vJS2eX2eFw7DlYGn1NEUri5LUSMR0/tlwVxqIS2uedJ7TSagLpIdtecFZTL6jbNh9aU63vXbsFeUx6TM62TPKgeoPDOHftHJi8IcFLUkrY9x2MKvgTkUg97zAtym3wPj5eycczZn8bDya4vI/g8j+Xa/QN3OW6HeolxjYmvIttW1E7DQ/bwLZ9+y5JvhPVLjuicE9073iHwzEbLJK+JlYnmMqfhTDICjYk0caXjd6WgX5SF/roBGizF4+eYypLe1/NI9rGQ7tXZTBBGDlRaOZrcARrZTIdgE5JJ0gbyxh1POu8FuAQYsc9q4+iHtNPW2feHwLdyhH+M1//HT6+cPa3cqXARbyRy/MSLujPhYU+A9+H1FGtE+o6iNWSgXt9q15T/7Mja2wLqftfm10vDofDkR29IiWHGHGKERI1zl5Vy0BhN5rnm2+QiqvSof4eAglyZCY+Nh7V58ixCuh5HSAylk+Ik9Tzvpw6Hzq+JeOqpa0kkzffkilVdrhAvIQlyUAh/GUI4cNM1L/AVfu9/PDZMWuXJ1K743xdy8cXc+fi+Zz9H+bC/1++PjA9qaVaDWid253O63WgYcem9brosr4D9IOwfgjyXDpCz5tdZw6Hw8HCk57AEuy+2DxWLWHZaT/VngvydYEbotE2TVqbwqvwhP0lrKl8PWBQVoRryUsgkx7m2djSa1LpjIuMIBZLsobNrSbcdRKM1g59k3xvUA57TkFEQ8QDp/Lg+H7K873881a++n0+/wQf38HHX+fjJj6+KA6WjbwS4HSv5+MpMa+I9TJ+/7/h/LyL2/PPlhA+E4iOSPeHxEyfOn6ysIpsj4mLrCzZb0EcEuB+qZ+N9sMOJFH/XYzOlZT5x918Pnc16srhcDgeEFiKPYGP803gUxNYmplQS1y1vSoFtQAtgUk0GomMv1ATH70DhSvhiwFL1ALYJgSmYqqCuxF1b2o220GKpmqX+8TyIEHX8pBeohQJQ7RlnOOM+cCxUqs5I0GrfZwHSOHu5UTv4eMuPu7k46PcGH/Mr3o3P/t5yseb+EVv5uu35Gv6RT7/ImfynXz+H3z8Hj//U36elmFNHYB15Tca1F0BmuNT2APIJ5rppY6wzmo9Uv5upP6XsDV2TP1N+bn1XQBSXu7P7ws/P/vv0OFwOFawULqWFcm7oyYFGW8dybzqs0WaFHA8NkRZJwTEqSbEVW4GfVur2bGRmIWEDngJkrq91WxYRe1/25dQWpRlgWDLZyJByYh6QsZ49sBk0IkJncBQkxanJxlykN+H1CwOqF3r+siQlaysBimQDgA6pMnvA9aELzCRHdBKauuc36oBc/HFI3opppDasYCXtPpp5ugAFYx1td6i1bG/ZnXLbC3nLW1azrsyZHOxRHvc7L9Dh8PhWLEsy/W7ED5SBNaBFV5GKBsKNVJx1W7EutrxVSXhRoNGN121IiV0lRZL2kystNmox4DBuzunO8izxDG3hpDEQtABMTtIIo1sCf7VxG7TL+WhiOGopae8vgfxUevWWmdON0j6rTdSO0Uhyli36pO0Tg/p7pX0UbC3A30pyAv2l1r5IoQzz4flk3t2GMT+tvHtEAxutiJxPzb7b9DhcDgUlrw2cMIBCDDRzFZhaMjEkhxyiCIItE8ClhqY+kRiPw+6Dj/DPOKRSROFsxXSoP326nM7kQh/a1436XcaWyNEOjauDtsyhPmu798gcZu+rS9LipIIpj9amQ2d8Gp66l4una5fkqa0a75sdD4In9evoOskDOoNx+Y7GwxcbOxuhhaKsl7rsnvV7L8/h8PhUGDZ9G+j1opHJtQm4GCHCcNsRkOpOzBqgtpYfAPmSFlygZeQCOWRRDbk1OYbkyaDEGNELdbCkq2c5f5C+jl6fVuN2ZapxhmE6zXtAcFRv663hLVm81FnYFS+LfLrNFnS+anptAaH76DlzqY/2oEMyd9+H5fK/3oeNSS+k2onsxByfvQFs//+HA6HQyGuHrQr0JlorA1TJxSrIKVeiMf+mkSAtq0Xq5Bs5lsMe3x6QLKxqsAjjY9Abm+RUoTnSrtCAjRkGAZhRpqylFY9EzLHCiqlPq68FvqZ7vQMzdqx1kdX332qmoQbaZJ6hqVCK//ldDZU0QfhJL8SaKs+Rt+KdDRjWTO97t61C7vbZ//tORwORwcWUF8Vs+latrEbrZiE47fR/i43wHSLPNQEpYk/MkGW+ckUeuHbBq3LKZh46l1REaAaprV5GZFsjD05YEIJqLGXpUM7QlT5MLRnOw9rlUG5R57flvBtBuscXlM+m5SaOjQKS4q8oSwtMFocagnExZ16i0L9MEJPrB1h07guE7opbIM6odimUkknQX4fUS7G35v9t+dwOBwdWEjdzCIqeWDL1JtKmERhAc0Hd0ZCdhXhV4mDZKAxH7jvMApN0enQXEoi90HKjszdo+eSv2Dst6KJIqGP4rcOBRaRqCNpRYIDwrTka874forascpqeuq95r6E3UE47PfgGHK71s2nCRGqBtvXvM/OdxtpwNDjkOXGm4MVGSc73f7dmIfaMIUwZ/ZV/Sp0CbKme3FYDGlxkgvxhC684nA49hws5B7Pouz2IsSOmoBTJKMIMcL+w4qQiUZEYNS05s1r4qOWuKYDqrDyrjZSl3RSeu/kaPPev08lR83JSsy0Nh2K2umolgEYw5r47fuH46amnipBDcJJ/iyJo9PY1rvF4lDHDUhVRc2/dVozVW76TsLURMdpuZJ2JVLT05Ay1zDUj/sT1Tl3XdlEQ7fWnrxaHa0dy0MO8Luz/+4cDodjEyy5PhAb8YHmVHUiy6tVMpcf4uSEt7eIocnWgVAFwWveMnJgInOtUIeXTUYsudi8Vc29j4c82Tmc2aN7p6Q7eKcQve2cYDDbwTGXMNusD1IbEtrOhleaqmRj0EhiqscFZrCzgd76Ng3bIbHtgOWPUUe2dWoAC9/kd+xKlVJsm1mUOd30jbP/5hwOh2MTLKj+HQgz2aDisOyYZMk6Fs5EsyyONQ4lZlRmTqUYaq/dDXO1Ct80NUnbanCYHastjxyJynWIJo6Qmax4hhnD3YhG+d0yO9cwhHmgLr8UNVEOtWsMawppiQ07PLVHIyF67oPlLnX7lCsYoSirtJE8aeWw5UQM/AZaeUjHtxo7+BesWRyNtdux5NVfgi+OZv+9ORwOx7FgQfWKYibMyyFS8cAW2R2qylGJAlQgIKCq0Y0ItZhEyS6xGBtPDNOrhEOZCpIGu8DDVSgDU4dI9V0opMUSaua5DkiBqqDH/Mtvu4gFpmUJ1aavTLcqczm/uRNk6UUzJnaSSpt0FgOZ/hODHquWDoZUJ6arTL0R0oVOiGS1lZnw/QE7EqLZ13JLHZG+lvfLUVc205msRZS4/eacOh3pl8jTdWx5twvvmf335nA4HMeCZdWTWAIeFAEsyyYmJy87ltvP99VAYWu5R49RamVt6NhF43dQe9xNT6XYdv6x92u+QZPDcGKO3sFzOIdKaMBIAy2vM28Hk51gDuk9CAHuoKqxDjGOrX9DRuoeZnarM2HTiKS1T7LPy00zdS6M0pV7rf6pqwcsT+10QK9h6CdgPjBT/urvJ50AcTh8+uy/N4fD4TgWLKgesVuWW4pkO4hUFw5BIhZ1bqQJg7TeFuayjCb1jkCY3mDsWMKFEr+SVRnLJnhp8Q9rDlq4uT2cG7eQIQbS78bzaEerriOSmbkqcro+CHJXX6/es6VBEpQJOjZdBwTjlfqqnYViZlZht8ps3y9FC6YzItr/aOJzy29v6rcadckLdlBaZ4QiaOzr80Aqvq5Pwapx8wcgFqD7Zv+tORwOx2WBRdwbqhCndQcdISCZFtXGN/ulMPUqTUIeVCVuNWUWwtLmxybHUUMyJFoDoEaFySiBHjUZovYNpED1nRAP0sa84TmEQZnlX9WZMM7DkrbNX82I6v/oeOWwM4YqcdVztvAPNVZMW5ndqd2XTkO3X3btDRHJPCdpK7tjFY4J10zGqKbPdd7v0raDNK32rzoduj7k9W3LRz6t48mc2Z+Z/XfmcDgclwWWt19D2RkmUaaYcJvwa75T1mZsl020XkNqbM8wSouPG9vr1b70IhuETGefIz9aod3GiKtHVI4h5N7KoRmx6xxIJ4CG5TdeUW0ecasfXQXd2POAkNX7o3pOpOonrmxEkEgm6kCqYwKZWXS12VdhJ6LGxBoUJzUcQ0aUSMHMp+7KhVaIADGXEsp2jmpmoZyjzg7uvvWM2X9nDofDcVlggXUNy71fB0GZF2sAgV00pRCbzFeaTqzzVIOav2sEqdV2QPurWp8WzpWo6nO514R3S120rdjzaw3dTKbjlbias1iPon0N3tzytxIV5dSbhUGXH+sHOxJWw1dWitibj22chXR55Edo/NURo2RvKbsogqlckTCkVfKPtYd5MvUK7VDza+5FUdgHbWaiKRM+1kN5FyERr98yq8kXZv+NORwOxwMCy7NXaYGfBbIZtBP5F0InaMUCWzmo8h41YTsiagwPhBIG4eqYMLU+Q2P2jfBCFI2k81IfanKvITNb4EJERPYFJt81c6386jl6jmMUXHlsRNajfG3mwzAWvJ+k52DLJ/WJDlJQX+WeXVhTtaeaQmfzKR+FHSqo+ca2iKY+N9Jrrak15bLm9fpwtf4sFN4x++/L4XA4HhBY4j6OmfaTRUCmjezXqVGUnWSWIrWL0CUZa67LaFLjEeBIpfUh4LpzdirPyVyrCAMzKL5fvYli3S8YiFIP+A5IQPVLQtB8Z7VRO67aFQgvabDFINRf9WqD57jms523fBxZ2zWxcnwYLhDix0aLSJL9OHbt5MRsCxDCxRSH7Q0qbme213nuimPDW0sGQVGxTqSeb5799+VwOBwPGCGEN1PZwpHPaY3g5ondTNPNrKolsZA1aRmuftl5wgjRdEZapyQz2uwe0W+oUdeRXCX9rnuupXh1cAv1EcEPwjFu+0M0vkKclf+lXKP8N3rLKJtjUjDPxAN5y6xe2qiar8lkEcnMphHMbzMuu5ZZjd0Kqbc66siyxSfVYyr1T1APvcc05BvrAL+P0B4Xp7M21958H3TP7L8rh8Ph+JzAEuwrmBU+WYTbxfVMspj/qjnjQh1WsOPKVLjqF6JzDKtptZlNMEe18nEdH4SpMk1kN+GO6cP4snLYEo7BImQyCJY0O+4d3FCkKztOD8Ztu3Lb30KmttOBxy7WxVKwvwBlG0+VwjD4PhOG0KKAWnYod2XYonsHtU4Xpl0/F2qmZcknRi5x1Ddjvq/h9DFlYYjGIpLChECvn/135XA4HJcNVjGuweslhJ+MRVuOZSGRomqiQO+mzKCQR60KZOyICETzwqgjTdC+T9JeCCyvRpMULTvo0eMheSEholAfEaRNa2hKrqxOUTarqB2BxvhkOgvq3bqTMz6PtF6r+UpdtGc6P7r+YJWuAJo/FBuHpCk2trRkLemEUtmlUzVuY5K01bdQCJ3qtDxN2kFp9vb9aQgmjSk/ZdbflsPhcHxOYG2iEjNL0K9kKXdHYcoFjlWbpai0JSX4tUDGe0p7sXGqsAWBrafIUBzFt2TZ3SP9/irAqQl/8ZBenwtZkn6XLRO+MxcsDPPT1QWkaxciwXjpn615ulgOuduNh9MGMcdWnyH204yqs1zQeUUnOXSoqumVgGoVLggnWi4SKIaFYg+9r4MKaCwB8AzLue4Rzt/wnTP/rhwOh+OKYInLq8ugqozBHgQyc4ab0LUCGbEMbg7IuWmoigw2yBHy0Tk+DQgJ84n38P12MZIYtWZvxqAbidQDbsHFKD70CMzz1vmonZOt+gOSrF52cF9udB0manaJ3GbVIVsXnPRwQB2rpe1ySdlQk0ZCLnkLGNOauSHrLS9Rj2mvgc0wht3U47Dk/btn/y05HA7H5w2WcI/b7cJHiqBbNWVCghvRbxOoW5s2FMFbnHxIESYScdXChNwM6fYLTTT53YjEiP/ygmw+1fNoFXHRgGhs/kznxI5dyzztGt+4Mqv535CuJCPpVQ9nM44LecHOARKh3jUqtt5Gur+QLg/mIe87HFQcm8HQ6e5t8RVrTpZ0CIYZ7NejwpL6HkjyLHWTnxsKL7WQ4qWFb5LvQ9rl7E9m/x05HA7H54WjEM7J77DQt7JguyjCOprlNrVARfmLWlnHCwEvjFhFMQ9PA8777aYeNVkOiQX7ZtDzS2EgjulA9LkWrUwInTA+1Q4E4STt2DoVltukzmq5SVeIpF8v00w08HTSJ4gTeoeo+nobodRCTQu9xUl3NDANPb5MKt31O8EGLoPpWNd1Le6O8QnL1Qa5W2Zju2/KUj7OpM0zGWcnxYWWG2f+LTkcDscVx9Fy9Loi/I7KUcyCiaxX7WjHalPe6jGLVRl/FnNncRgbDBW2kUpL8koIF708tAg900H4UGPptFT6lmz0WXlP13AYwBJ3lw6ua9I5lK3UrceEO4oKEeKPLBOqQ0Gt3PJgUK52xheUewEUfJVfgl5J//o+/QFplvw10h+8x6aHO0NJe0Q4y7CKzJvn73KdrndQ6vfxs/92HA6H44qDxdsNLOj+KDaCvUgrOct85FgJuRAN7pecNeuqSUYxWaPJucrxosguPQHUBANMs9Lk2q56p7Ghl3Vnoh6Z0m3qQALrJRIS7hNsSQR7JLvWt2gVAK+SEd5GSFUzz+RWtXGj0FN7Xxg8yPUQcH/lWmk4TqzyD28wjluK/LF8IcKezfW+/BvqftpB5aENJ9j9nrFNxDyN1ppUHdJhTHV7freER87+u3E4HI6rBpZ8f2MJ8VNFCB5mAUgyd1nGeHdNoFYusU5GFJs6Vn9jmI040dyTC6txVU/q0DoBGDfmdxqfL03BuF9yOSkCrT5VI40waoetoON1C6cokyyZ8PBmgt+d45bKOonOLdTeafT4TihYdrhueSChSsiCajN4P+FwAHTCVMVlIiWscMJU5Dm2J3YwhIjl/VKX6XtMQywLheWW2X8rDofD8aCAhd4LQ1zujtlk3TQTtcXjKmXNxvdWcwxGG1WkQepG054s8cFBHZGZw2rAol0ZMqc4eJeki8xUSYv0O0rW9ThzVCQqTs1defr8m/ik8xQhjCV5S2LlntLqSRdLkSg64MWoy1bTNd7laPnAdlWdFGR3+BfeY4u4ScpyX77BlOXHzv4bcTgcjqsOgvnLzGM/wmrQBRaBRyAU0eSIJtwmzNUCGIoMI5BAJE3QdsxTKXaGpOx4Y9HMqMUVtyGqmbLC3hBfI12Z00zN0U3SlWjV8xhKgGWVeqleWJAExeH7a5kJilDfCRynViKp+cB2qTVOUha9IIgqNaao022dkPUkQxNY5wtQvel4kOTbPtsCdpBwCKB2BCl/h98+8+/D4XA4piGm7R0p/MxCdAgS9QiEsyGt9X8hZ5kHbAiIZD9fGWPUpEdA7iDQwe6NU3FE8lfZT3mMOrFljaI0tqimN0lKY8JXGi6p54RaIdASdWtxEzzNHZKuxxHF9F/JD9PGLkYumo6vDdayH3Hl1WCtCcNtNiGJrvOiH9f4aEFAU3SA5617IHkdL7tq85fKeFgzT/RR/v302X8PDofDMR0sFx/GEvJVO6IDEKK7kAWmEJDMa67EB3Ibx1XRjI3kJh7HVttSmlPUJFjl/LppBkFaGiLoycTFvI42ncB8wGYVPZFQ6zOYKUWVj9AKEJG8arkIyA3KVsLo1cDyKHfZkCFvn0hIoTqPouHKm6FO1/SXAVFSd5Tuj36F6qgg+dZpUPC8RjCFk7F3Nf4eQjg4CuGHZn//DofDcSLBgvNfhN06FaqSBMH8VhH4A6E9kuNWM+3oBJ2rqI4Hq/R0B6Afb5WHI22P8JfMoDXMie9r2ak5qdwpnYnQDM4qn2W3J63PEhYSrQJ9TQATqmqTl+TFP5Ry2kpS3NetxoppBSIobJ+T4kwmNWUyYrzGY3tXDRHGbWw7RinxtO76DwVazl36i3Q4HI49B6tj/yiEJXllJ3K+vxyrdzbL4zRfVDy1D2PT0ESLthrz0IwKrDIS4j3rjER8/8RGoRiVmdcgtAdqfLxGN/klGrwf19XGDIgGacswGFMfwnpIYxz77igdpWoBb97QJv1g37+YIHbMdxdVPXZT48Rj/zA2z33ZeexiLPPfOfD5EOhnl93u2tnft8PhcJw6sAB9KYv8j8dmckzazUFs2z3uojJrB+0gRKEK9mz2HXpvI82orfkGbESg7K4vgNgU2xj2CBTrrlPIxOgRHuo8YRu1aI99B0FrprIqWM1XWRtEm/TNvKuaxraVoCQR1H7CONAL1gPb6Rnklcy7u6EDDJ+AXvi1k1XuZfLN30TpqK3X63z3EMPdnLWXHwUnYofD4fi8wQL2y5jpPlCE72E+SLbNwznMqD2BkF9/aq2XhsJ/S2tGegAyGPJ2UCdtMlXhSb8HHZZ6smyEjOWQ+5mQCVbe6rMuGqsdbx6VUYoH5Ip7XNTbvepcFxvVE4bJWB26Cm7dkrJDWLcql/UTwHnEh3zngC/vj5W8w218ftHsb9fhcDjOBEIIag9mlrM3Bgq/xML2sAjnXdF8y1zSKsS7XYcKR4y0rwjCXZOd1vNQ8xySHoQuWnkFTrfJ1/1I7mgREvyNK1eVvOoxaNg3yWrALUy7CPqyL4cZDKb+Z7doiGSGBjU06uhYb+tRfpB8kYyzxYSSWTqvnZ6+Ba6E9/GvL531zTocDsdegYXvdcxo3xXCcicI77JedjVLBxbOZuqUIQUSUgDtthpUG/80yuu0V0s7VP/rzbctPK5XbS80EcWsmVauNp7T9TfVd5cXDDRMLEqASzumq0uj6wfN0/Ki0tkYm9pNHvD9o3faXbnkXAiZpGMDa6OvSey4tX+bfzxu9rfpcDgcewsWwl/GavB7ItV1sZNWfMACeifjtUZTlTPONCLzXFNdu3cpDdmYpfNv0Ixlv2I1Dai9JmD6wII1P0JA1nNMe2jruBiwy59h0GAUdyKtROO2hrUgUIMyhq5cwaEIo06KKUpNFq0KQsrSxms9Jo98zt+P8fHo2d+hw+FwOApYYj/2cLe8keX0Z0GlWzcTIFo3DjDE3JimhNHEAPNpRaODMErD00q0IhZ5bp3JkDclL+Ox1SjbI6p0SWcnq9mkn+OSJMHEQ1JErV+xL95vBItEW0l2kXTFBBDhHUCqKv/wftUBCS2fqe7ReS+7XS/0WT59V4DV3xwOh8NxAsHC+suYoX6TzxeiJQNULusaVQNduJlngTCUiVeZVo1iikkZRyvkHUVYFGtHQGmXLWy/FGWNWx9KmABOY4RxQ5/J1hkg7KiAURytCbYgBGWEOqx9Bjtabus5UkfW6x2p93qwWvwePn/17O/L4XA4HJ8DWIDfzLTwNj7fF/O440H5ncj6fFznqlJxEgrFLEpFIwsprDiGhaKIitlZiHgHw53F8UutbRHsbCWqRuaA5mxkMqQsuyT09pivSkBe2i3DsZjwSvvGzgMp0/7w/eWaOvKMsU4/W2LvAS9rl4vmm4YX1u05Y55zntom+QPcf3QUPs4R/iHXvGvDDofDcRawED2UBfsLWM16L1PUOj2G2o5Tde4qKTJZSaIRndqzWfGkaJNLMbM2bVfbess+0LSYMVZhzo3NJdQheYhAtmXsl9ApqkvfEGNVieG5aOKhdhtaEgQkiwYBvB9jnh6FY90h5095SsuRx/vrVLacvxDCeT64E0VPm/3dOBwOh+MqgoX+OT6+gZnjHTGv9iXjlGkHqqQxMzmzdpw3r1+AcJBY2hgozNdtGib4V4m3MiHJEQQYkKh2i2pkqTRcQ5b6JqaZU6SiseenyoEsQD4gEqaB5IrvkPo4KoVuO0Np4pWzzCXHFbVSR+iQI/0On7929vfhcDgcjglYwvLIQOElyxLezUxzX9EyhSjKghN0kdIqVURCLLGZuYuturEUkmfVaIlkFTDhPByuReKry3VbkpYIFGO31QN1l3ZMd+Xj0KiyacM1Qmc+l7W7WidCOhSF1OtuT4V4q4Zu9xvm+lMraYmT3G6J4YP86+v5+UNnfwsOh8PhOEFgUn4ek/SvhLB8mgnsYmEjMROvWh2Yuq0pFsgpinN02v1QnJ5C4z7hRBiTbeZgvYhIu6kJ0xC2eWinGA025ui0ahw/jo34w6LyR2Uzh6CWvKz1E7MZ+iDmBVvEyhBLfd3LLP92jnzz7LZ2OBwOxwlECPQQe49p51FMIP+Y2ea3mFHuIW2uzWPQeUpVXic70BFozmVtbeUDFYCJKzPjYtZjYuwIFB/htKiRN3TTfElp2Pm+ThE1ZWWCJ3geq2N1dXKTTT1kC801TpqUzAU+WkK4awn0Kibhx89oW4fD4XCcMTDpPIqZ5huZfV4fKHwktD2clfNXzGOiaY/jHWvZ2Yu4OYTJlB6h4mLiVUPIok0PTMlWSa43LVmDfZxV9PzUznlqmvEaSM1dLsRdHLOobMDYm+ODMHx6ybKE+3chvDss4QeWJXm49x0dh8PhcDiuOJiHHs/HtzDr/Sfm2bQzlWwJ2caXK3mFcuipQUXDtKZqtTiJugfjvtoEjtOR2wIgRitv8dr4cDFJV69oReqkfwtXp5cdcWluDSFwB4WSk9zDZ7eHw+FwOBwVzFR/daHwQiasH2Pq+lDI5u4yrlqdm9LvNEZ9FNvUn/tjC5ccoS4wVV5gzr7AVHgf8+UFpsw0JehCoOWgjHFzHEoe4RfLdC7ZO/piyPOsOR6nwfGZa+/l63Skeb6cbrpX41yEo25zWFy5Ui/irl2gP2LSfR3feR7n6cbZ9exwOBwOxwMGE9uNzG1PLh7F/4QJ7g1MlO9hRfMOJrnzS6T7wxIOkyt0W4N71UePkvPUajAm5Tx1COcyZr3ufFWnE1FzsBKzOc69PuBkDzNhExM83RMC3cbHBzgfP83h/gGn9ZV8PJE7ANfPrj+Hw+FwOB4UMAFex8cNfPwVJsGnMFE+i3+/gLn5hwKFn2aN+63LQr+xLOH3l7B8iJbDj/H9jzFJ38pk+jHWnP+U2foW/v1+JvI/5Pi/x/F/m++9g8P8DF//a2b47+frlzMBfzMrvc/m9yRz+w1M1L4KlsPhcDj2F4svB+lwOBwOh8PhcDgcDofD4XA4HA6Hw+FwOBwOh8PhcDgcDofD4XA4HA6Hw+FwOBwOh8PhcDgcDofD4XA4HI6zgP8Ppc3zKPNgYh8AAAAASUVORK5CYII=") center / contain no-repeat;
  mask: url("data:image/png;base64,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") center / contain no-repeat;
}

#boot-loading-title {
  width: 100%;
  margin: 0;
  font-family: "AsimovHeader", Georgia, serif;
  font-size: clamp(48px, 8vw, 72px);
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--text);
  line-height: 0.9;
  text-align: center;
}

#boot-loading-spinner {
  width: 34px;
  height: 34px;
  border: 3px solid color-mix(in oklab, var(--border) 86%, transparent);
  border-top-color: var(--brand);
  border-radius: 50%;
  animation: boot-loading-spin 0.8s linear infinite;
}

#boot-loading-label {
  width: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 0;
  min-height: 21px;
  font-size: 14px;
  color: var(--text-muted);
  line-height: 1.2;
  text-align: center;
}

.boot-auth-error-guidance {
  max-width: 380px;
  margin: -4px 0 0;
  color: var(--text-muted);
  font-size: 14px;
  line-height: 1.5;
}

.boot-auth-error-retry {
  min-width: 120px;
  padding: 10px 18px;
  border: 1px solid var(--brand);
  border-radius: 8px;
  background: var(--brand);
  color: var(--bg);
  cursor: pointer;
  font: inherit;
  font-weight: 600;
}

.boot-auth-error-retry:hover {
  opacity: 0.9;
}

.boot-auth-error-details {
  max-width: 380px;
  color: var(--text-muted);
  font-size: 12px;
  text-align: left;
}

.boot-auth-error-details summary {
  cursor: pointer;
  text-align: center;
}

.boot-auth-error-details pre {
  max-height: 120px;
  overflow: auto;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

@keyframes boot-loading-spin {
  to { transform: rotate(360deg); }
}

#shell {
  display: flex;
  height: 100vh;
  height: 100dvh;
  position: relative;
}

/* ── sidebar ──────────────────────────────────────────────── */
#sidebar {
  width: var(--sidebar-w);
  flex-shrink: 0;
  background: var(--surface);
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  align-items: stretch;
  padding: 12px 9px 10px;
  gap: 4px;
  position: relative;
  z-index: 290;
}
#sidebar .nav-item {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: flex-start;
  height: 38px;
  flex: none;
  padding: 0 0 0 9px;
  gap: 11px;
  border: none;
  border-radius: 10px;
  background: none;
  color: var(--text-muted);
  cursor: pointer;
  white-space: nowrap;
  transition: background .12s, color .12s;
}
#sidebar .nav-item::before {
  content: "";
  position: absolute;
  left: -9px;
  top: 50%;
  transform: translateY(-50%) scaleY(0);
  width: 3px;
  height: 22px;
  border-radius: 0 3px 3px 0;
  background: var(--brand);
  transition: transform .18s cubic-bezier(0.16, 1, 0.3, 1);
}
#sidebar .nav-item:hover:not(:disabled) {
  background: color-mix(in oklab, var(--brand) 8%, var(--bg));
  color: var(--chrome-hover);
}
#sidebar .nav-item.active {
  background: var(--brand-soft);
  color: var(--brand-strong);
}
#sidebar .nav-item.active::before { transform: translateY(-50%) scaleY(1); }
#sidebar .nav-item:disabled { cursor: not-allowed; }
#sidebar .nav-item:disabled svg { opacity: 0.32; }
#sidebar .nav-item svg {
  width: 20px;
  height: 20px;
  flex-shrink: 0;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* tooltip bubble */
#sidebar .nav-item span {
  position: absolute;
  left: calc(100% + 13px);
  top: 50%;
  transform: translateY(-50%) translateX(-4px);
  padding: 5px 11px;
  border-radius: 7px;
  background: #15171c;
  color: #f4f5f7;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.05em;
  line-height: 1.4;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  z-index: 400;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.28);
  transition: opacity .13s ease, transform .16s cubic-bezier(0.16, 1, 0.3, 1);
}
#sidebar .nav-item span::before {
  content: "";
  position: absolute;
  left: -3px;
  top: 50%;
  width: 8px;
  height: 8px;
  background: #15171c;
  border-radius: 2px;
  transform: translateY(-50%) rotate(45deg);
}
#sidebar .nav-item:hover span,
#sidebar .nav-item:focus-visible span {
  opacity: 1;
  transform: translateY(-50%) translateX(0);
  transition-delay: 0.18s;
}


/* ── projects hub ─────────────────────────────────────────── */
#projects-hub-view,
#my-samples-view {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
}
.hub-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
  padding-inline: var(--page-content-gutter);
  height: 44px;
  flex-shrink: 0;
  background: var(--surface);
  border-bottom: 1px solid var(--border);
}
.hub-head-left {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  padding-bottom: 7px;
}
.hub-title {
  margin: 0;
  font-size: 16px;
  font-weight: 650;
  letter-spacing: -0.01em;
  color: var(--text);
}
.hub-head-right {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
  padding-bottom: 7px;
}
#my-samples-view .hub-head-right {
  flex: 1 1 auto;
  min-width: 0;
  justify-content: flex-end;
}
#my-samples-view .hub-search-wrap {
  flex: 0 0 190px;
  width: 190px;
}

#project-new-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 28px;
  padding: 4px 9px;
  white-space: nowrap;
}
#project-new-btn svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.2;
  stroke-linecap: round;
}
#project-new-btn[hidden] { display: none; }

/* filter input */
#panel-search-wrap,
.hub-search-wrap {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 10px;
  height: 28px;
  width: min(200px, 100%);
  border: 1px solid var(--border);
  border-radius: 9px;
  background: var(--input-bg);
  transition: border-color .12s;
}
#panel-search-wrap:focus-within,
.hub-search-wrap:focus-within {
  border-color: color-mix(in oklab, var(--brand) 38%, var(--border));
}
#panel-search-wrap svg,
.hub-search-wrap svg {
  width: 14px;
  height: 14px;
  flex: none;
  fill: none;
  stroke: var(--chrome-muted);
  stroke-width: 1.75;
  stroke-linecap: round;
}
#panel-search-wrap:focus-within svg,
.hub-search-wrap:focus-within svg { stroke: var(--brand); }
#panel-search-input,
.hub-search-input {
  flex: 1;
  min-width: 0;
  height: 100%;
  border: none;
  background: none;
  font: inherit;
  font-size: 12.5px;
  color: var(--text);
  outline: none;
  padding: 0;
}
#panel-search-input::placeholder,
.hub-search-input::placeholder { color: var(--text-muted); }

.dialog-textarea {
  min-height: 88px;
  resize: vertical;
}

#project-list,
.my-samples-list {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  background: var(--bg);
  padding-block: var(--page-padding-block);
  padding-inline: var(--page-content-gutter);
}
.hub-list {
  display: flex;
  flex-direction: column;
  gap: 22px;
  width: 100%;
  min-width: 0;
}
.hub-list-section {
  display: flex;
  flex-direction: column;
  gap: 7px;
  min-width: 0;
}
.hub-list-title {
  margin: 0;
  padding: 0 2px;
  font-size: 11px;
  font-weight: 750;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-muted);
}

.project-hub-table-shell {
  background: var(--surface);
  border-top: 5px solid var(--surface);
  border-radius: var(--radius);
  box-shadow: 0 0 0 1px var(--border);
  overflow: hidden;
}
.project-hub-table {
  background: var(--surface);
}
.project-hub-table thead th {
  position: static;
}
.project-hub-table .dl-th-btn {
  padding: 9px 12px;
}
.project-hub-empty-th {
  cursor: default;
}
.project-hub-th-name,
.project-hub-table .project-entry-name {
  width: 30%;
}
.project-hub-th-owner,
.project-hub-table .project-entry-owner {
  width: 160px;
}
.project-hub-th-created_at,
.project-hub-table .project-entry-created,
.project-hub-th-last_activity_at,
.project-hub-table .project-entry-activity {
  width: 132px;
}
.project-hub-th-created_at .dl-th-btn,
.project-hub-th-last_activity_at .dl-th-btn {
  white-space: nowrap;
}
.project-hub-th-description,
.project-hub-table .project-entry-desc {
  width: auto;
}
.project-hub-table .project-entry {
  height: 38px;
  cursor: pointer;
}
.project-hub-table .project-entry:focus {
  outline: none;
}
.project-hub-table .project-entry:last-child {
  border-bottom: 0;
}
.project-hub-table td {
  height: 38px;
  padding: 0 12px;
  vertical-align: middle;
}
.project-entry-title {
  display: block;
  font-size: 13px;
  font-weight: 400;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.project-hub-table .project-entry-owner,
.project-hub-table .project-entry-created,
.project-hub-table .project-entry-activity,
.project-hub-table .project-entry-desc {
  font-size: 12px;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.project-hub-table .project-entry-created,
.project-hub-table .project-entry-activity {
  font-variant-numeric: tabular-nums;
}

@media (max-width: 720px) {
  .hub-head {
    height: auto;
    min-height: 44px;
    align-items: stretch;
    flex-direction: column;
    padding-block: 12px;
    padding-inline: var(--page-gutter);
  }
  .hub-head-left,
  .hub-head-right {
    padding-bottom: 0;
  }
  .hub-head-right {
    width: 100%;
  }
  #panel-search-wrap,
  .hub-search-wrap {
    flex: 1;
    width: auto;
  }
  #my-samples-view .hub-search-wrap {
    width: 100%;
  }
  #my-samples-view .hub-head-right .ms-codegen {
    flex: 1 1 100%;
    height: auto;
    flex-wrap: wrap;
    justify-content: flex-start;
  }
  .project-hub-th-owner,
  .project-hub-table .project-entry-owner {
    display: none;
  }
  .project-hub-th-created_at,
  .project-hub-table .project-entry-created {
    display: none;
  }
  .project-hub-th-name,
  .project-hub-table .project-entry-name {
    width: 44%;
  }
}

.panel-empty {
  padding: 26px 14px;
  font-size: 13px;
  color: var(--text-muted);
  text-align: center;
}
/* Skeleton placeholders shown while a project tab loads. The table variant
   mirrors the data-library layout (toolbar inside a bordered panel, then a
   header row and file rows); the overview variant mirrors the masthead + card
   grid. Bars/dots are the shared shimmer primitives. */
.tab-loading-skeleton {
  width: 100%;
  position: relative;
  overflow: hidden;
}
.tab-loading-skeleton::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    100deg,
    transparent 32%,
    color-mix(in oklab, var(--surface) 55%, transparent) 50%,
    transparent 68%
  );
  background-size: 240% 100%;
  animation: tls-shimmer 1.5s ease-in-out infinite;
}
.tls-bar,
.tls-dot {
  display: block;
  height: 10px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--text) 9%, transparent);
}
.tls-dot {
  width: 14px;
  height: 14px;
  border-radius: 4px;
  flex: none;
  justify-self: center;
}

/* Table variant — matches .data-library-main metrics. */
.tls-panel {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  overflow: hidden;
}
.tls-toolbar {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 8px 14px;
  min-height: 41px;
  border-bottom: 1px solid var(--border);
}
.tls-toolbar .tls-search {
  flex: 1 1 auto;
  height: 24px;
  border-radius: 8px;
}
.tls-toolbar .tls-pill {
  width: 84px;
  height: 26px;
  border-radius: 8px;
  flex: none;
}
.tls-row {
  display: grid;
  grid-template-columns: 36px minmax(0, 2fr) minmax(0, 1fr) minmax(0, 1.2fr) 56px minmax(0, 1fr) 64px;
  align-items: center;
  column-gap: 24px;
  height: 39px;
  padding-inline: 14px 24px;
}
.tls-row.tls-head {
  height: 31px;
  border-bottom: 1px solid var(--border);
}
.tls-head .tls-bar { height: 8px; width: 56%; }
.tls-head .tls-dot { width: 13px; height: 13px; }
.tls-row:not(.tls-head) + .tls-row {
  border-top: 1px solid color-mix(in oklab, var(--border) 62%, transparent);
}
/* Vary the name-column width so rows read as real data, not stripes. */
.tls-row:not(.tls-head):nth-child(3n) .tls-bar:first-of-type { width: 72%; }
.tls-row:not(.tls-head):nth-child(3n + 1) .tls-bar:first-of-type { width: 52%; }
.tls-row:not(.tls-head):nth-child(4n) .tls-bar:nth-of-type(2) { width: 64%; }
.tls-row:not(.tls-head):nth-child(2n) .tls-bar:nth-of-type(3) { width: 70%; }

/* Overview variant — masthead + two-column card grid (.ov-grid). */
.tls-masthead {
  display: grid;
  justify-items: start;
  gap: 12px;
  padding-block: 4px 22px;
}
.tls-ov-eyebrow { width: 96px; height: 8px; }
.tls-ov-title { width: min(340px, 60%); height: 24px; border-radius: 6px; }
.tls-ov-desc { width: min(520px, 85%); }
.tls-ov-stats {
  display: flex;
  gap: 8px;
  margin-top: 6px;
}
.tls-ov-stats .tls-bar {
  width: 92px;
  height: 44px;
  border-radius: 8px;
}
.tls-ov-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 20px;
  align-items: start;
}
@media (max-width: 1100px) {
  .tls-ov-grid { grid-template-columns: minmax(0, 1fr); }
}
.tls-ov-col {
  display: grid;
  gap: 20px;
  align-content: start;
}
.tls-card {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  overflow: hidden;
}
.tls-card-hd {
  padding: 10px 14px;
  border-bottom: 1px solid color-mix(in oklab, var(--border) 62%, transparent);
}
.tls-card-hd .tls-bar { width: 88px; height: 8px; }
.tls-card-bd {
  padding: 14px;
  display: grid;
  gap: 12px;
  align-content: start;
}
.tls-card-bd .tls-bar:nth-of-type(1) { width: 86%; }
.tls-card-bd .tls-bar:nth-of-type(2) { width: 62%; }
.tls-card-bd .tls-bar:nth-of-type(3) { width: 74%; }
/* Stagger card body heights so the two columns read like the real overview. */
.tls-ov-col:first-child .tls-card:nth-child(1) .tls-card-bd { min-height: 190px; }
.tls-ov-col:first-child .tls-card:nth-child(2) .tls-card-bd { min-height: 240px; }
.tls-ov-col:last-child .tls-card:nth-child(2) .tls-card-bd { min-height: 130px; }

@keyframes tls-shimmer {
  0% { background-position: 120% 0; }
  100% { background-position: -120% 0; }
}
@media (prefers-reduced-motion: reduce) {
  .tab-loading-skeleton::after { animation: none; }
}
/* ── main / app ───────────────────────────────────────────── */
#app { flex: 1; overflow: hidden; display: flex; flex-direction: column; }

#resources-view {
  flex: 1;
  min-height: 0;
}

@media (prefers-reduced-motion: no-preference) {
  .shell-surface-enter {
    will-change: transform;
    animation: shell-surface-enter 220ms cubic-bezier(0.32, 0.72, 0, 1);
  }

  .shell-surface-enter-lateral {
    will-change: transform;
    animation: shell-surface-enter-lateral 230ms cubic-bezier(0.32, 0.72, 0, 1);
  }
}

@keyframes shell-surface-enter {
  from {
    transform: translateY(6px);
  }
  to {
    transform: translateY(0);
  }
}

@keyframes shell-surface-enter-lateral {
  from {
    transform: translateX(-8px);
  }
  to {
    transform: translateX(0);
  }
}

/* ── project view ─────────────────────────────────────────── */
#project-view {
  display: flex;
  flex-direction: column;
  height: 100%;
}

#pv-header {
  flex-shrink: 0;
  height: 44px;
  background: var(--surface);
  border-bottom: 1px solid var(--border);
  display: flex;
  align-items: flex-end;
  padding: 0 28px 0 16px;
  gap: 18px;
}

#project-change-banner {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 10001;
  display: flex;
  align-items: center;
  gap: 10px;
  width: min(390px, calc(100vw - 48px));
  padding: 11px 12px 11px 14px;
  border: 1px solid color-mix(in oklab, var(--border) 76%, transparent);
  border-radius: 8px;
  background: color-mix(in oklab, var(--text) 94%, var(--surface));
  box-shadow: 0 14px 38px rgba(11, 18, 32, 0.22);
  font-size: 12px;
  color: var(--surface);
  opacity: 0;
  transform: translateY(8px);
  pointer-events: none;
  transition: opacity 0.16s ease, transform 0.16s ease-out;
}

#project-change-banner[data-origin="remote"] {
  background: color-mix(in oklab, var(--text) 89%, var(--brand));
}

#project-change-banner[hidden] { display: none; }

#project-change-banner.is-visible {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

.project-change-signal {
  width: 7px;
  height: 7px;
  flex: 0 0 auto;
  border-radius: 50%;
  background: var(--brand);
  box-shadow: 0 0 0 4px color-mix(in oklab, var(--brand) 22%, transparent);
}

.project-change-copy {
  flex: 1;
  min-width: 0;
  display: grid;
  gap: 1px;
}

#project-change-banner-text {
  line-height: 1.35;
}

#project-change-banner-views {
  color: color-mix(in oklab, var(--surface) 68%, transparent);
  font-size: 10px;
  line-height: 1.35;
}

#project-change-dismiss {
  flex: 0 0 auto;
  border: none;
  background: none;
  color: color-mix(in oklab, var(--surface) 64%, transparent);
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  padding: 0 4px;
}

#project-change-dismiss:hover { color: var(--surface); }

@media (max-width: 640px) {
  #project-change-banner {
    right: 12px;
    bottom: max(12px, calc(env(safe-area-inset-bottom) + 12px));
    left: 12px;
    align-items: flex-start;
    width: auto;
    padding: 9px 12px;
  }
}

@media (prefers-reduced-motion: reduce) {
  #project-change-banner {
    transform: none;
    transition: opacity 0.12s ease;
  }
}

#pv-title-wrap {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
  padding-bottom: 7px;
}
#pv-back-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text-muted);
  cursor: pointer;
  flex: none;
  transition: background .12s, color .12s, border-color .12s;
}
#pv-back-btn:hover {
  background: var(--brand-soft);
  color: var(--brand-strong);
  border-color: color-mix(in oklab, var(--brand) 32%, var(--border));
}
#pv-back-btn svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
#pv-switcher-wrap { position: relative; min-width: 0; }
#pv-switcher {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  max-width: 320px;
  padding: 3px 8px;
  border: none;
  border-radius: 8px;
  background: none;
  font: inherit;
  color: inherit;
  cursor: pointer;
  transition: background .12s;
}
#pv-switcher:hover { background: var(--bg); }
#pv-switcher[aria-expanded="true"] { background: var(--bg); }
#pv-switcher > svg {
  width: 13px;
  height: 13px;
  flex: none;
  fill: none;
  stroke: var(--chrome-muted);
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: transform .15s;
}
#pv-switcher[aria-expanded="true"] > svg { transform: rotate(180deg); }
#pv-header-title {
  font-size: 13.5px;
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  min-width: 0;
}

#pv-switcher-panel-wrap {
  position: absolute;
  top: calc(100% + 8px);
  left: 0;
  z-index: 320;
}
#pv-switcher-menu {
  position: absolute;
  top: 0;
  left: 0;
}
#pv-flyout-1,
#pv-flyout-2 {
  position: absolute;
}
#pv-switcher-menu,
#pv-flyout-1,
#pv-flyout-2 {
  min-width: 200px;
  max-width: 280px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-elevated);
  padding: 5px;
}
.pv-switcher-heading {
  padding: 6px 10px 4px;
  font-size: 9.5px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.pv-switcher-item {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 7px 10px;
  border: none;
  border-radius: 7px;
  background: none;
  font: inherit;
  font-size: 12.5px;
  color: var(--text);
  cursor: pointer;
  text-align: left;
  transition: background .1s;
}
.pv-switcher-item:hover { background: color-mix(in oklab, var(--brand) 10%, var(--bg)); }
.pv-switcher-item-name {
  flex: 1;
  min-width: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.pv-switcher-item svg {
  width: 14px;
  height: 14px;
  flex: none;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.pv-switcher-all { color: var(--text-muted); }
.pv-switcher-all:hover { color: var(--text); }
.pv-switcher-item-tag {
  font-size: 10.5px;
  color: var(--text-muted);
  white-space: nowrap;
  flex: none;
}
.pv-switcher-chevron-right { margin-left: auto; }
.pv-switcher-back { color: var(--text-muted); }
.pv-switcher-back:hover { color: var(--text); }
.pv-switcher-loading { padding-bottom: 8px; }
.pv-switcher-cat--active { background: color-mix(in oklab, var(--brand) 10%, var(--bg)); }
.pv-switcher-sep {
  border-top: 1px solid var(--border);
  margin: 5px 4px;
}
#pv-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: 6px;
}

#pv-actions .project-action-btn {
  width: 32px;
  height: 32px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text-muted);
  cursor: pointer;
  transition: background .12s, border-color .12s, color .12s, transform .12s;
}

#pv-actions .project-action-btn:hover {
  background: var(--bg);
  border-color: var(--panel-strong);
  color: var(--text);
  transform: translateY(-1px);
}

#pv-actions .project-action-btn:active {
  transform: translateY(0);
}

#pv-actions .project-action-btn svg {
  width: 16px;
  height: 16px;
  display: block;
  stroke: currentColor;
  fill: none;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

#pv-actions #project-delete-btn {
  margin-left: 4px;
}

#pv-actions #project-delete-btn:hover {
  background: color-mix(in oklab, #b91c1c 10%, var(--surface));
  border-color: color-mix(in oklab, #b91c1c 34%, var(--border));
  color: #b91c1c;
}

#pv-tabs { display: flex; align-items: stretch; position: relative; overflow-x: auto; scrollbar-width: none; }
#pv-tabs::-webkit-scrollbar { display: none; }
.tab {
  position: relative;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 12px 12px 11px;
  border: none;
  background: none;
  font: inherit;
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.015em;
  color: var(--text-muted);
  cursor: pointer;
  margin-bottom: -1px;
  white-space: nowrap;
  transition: color .16s ease;
}
/* hover pill behind the label */
.tab::before {
  content: "";
  position: absolute;
  inset: 7px 3px 7px 3px;
  border-radius: 8px;
  background: color-mix(in oklab, var(--brand) 9%, transparent);
  opacity: 0;
  transform: scale(0.92);
  transition: opacity .16s ease, transform .2s cubic-bezier(0.16, 1, 0.3, 1);
  pointer-events: none;
}
.tab[hidden] { display: none; }
.tab.tab-unavailable,
.tab.tab-unavailable:hover {
  color: var(--muted);
  cursor: not-allowed;
  opacity: .45;
}
.tab.tab-unavailable::before { display: none; }
.tab:hover { color: var(--text); }
.tab:hover::before { opacity: 1; transform: scale(1); }
.tab.active { color: var(--brand-strong); }
.tab.active::before { opacity: 0; }
.tab > * { position: relative; }

#tab-indicator {
  position: absolute;
  bottom: 0;
  left: 0;
  height: 2.5px;
  border-radius: 999px 999px 0 0;
  background: var(--brand);
  pointer-events: none;
  transition: transform 300ms cubic-bezier(0.22, 1.4, 0.36, 1), width 300ms cubic-bezier(0.22, 1.4, 0.36, 1);
}

/* ── tab group separators ─────────────────────────────────── */
.tab-sep {
  flex: none;
  align-self: center;
  width: 1px;
  height: 16px;
  margin-inline: 7px;
  border-radius: 999px;
  background: var(--border);
}

/* ── tab panels ───────────────────────────────────────────── */
.tab-panel {
  flex: 1;
  overflow-y: auto;
  padding-block: var(--page-padding-block);
  padding-inline: var(--page-content-gutter);
  position: relative;
}
.tab-panel-loading-overlay {
  position: absolute;
  inset: 0;
  z-index: 8;
  padding-block: var(--page-padding-block);
  padding-inline: var(--page-content-gutter);
  background: color-mix(in oklab, var(--surface) 94%, transparent);
}
.tab-panel.tab-panel-loading {
  overflow: hidden;
}

#project-view.project-view-inline-form #pv-header,
#project-view.project-view-inline-form .tab-panel {
  display: none;
}

.project-inline-form-shell {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  position: relative;
  box-sizing: border-box;
  width: 100%;
  padding-block: var(--page-padding-block);
  padding-inline: var(--page-content-gutter);
  transition: margin-left 300ms cubic-bezier(0.16, 1, 0.3, 1), width 300ms cubic-bezier(0.16, 1, 0.3, 1);
}

.project-inline-form {
  width: 100%;
}

.project-inline-form-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.project-inline-form-status {
  padding: 0;
}

@media (prefers-reduced-motion: no-preference) {
  .tab-panel-entering-forward {
    will-change: filter, opacity;
    animation: project-tab-panel-in-forward 220ms cubic-bezier(0.32, 0.72, 0, 1);
  }

  .tab-panel-entering-backward {
    will-change: filter, opacity;
    animation: project-tab-panel-in-backward 220ms cubic-bezier(0.32, 0.72, 0, 1);
  }

  .tab-panel-content-reveal > * {
    will-change: filter, opacity;
    animation: project-tab-content-reveal 240ms cubic-bezier(0.4, 0, 0.2, 1);
  }


}

@keyframes project-tab-panel-in-forward {
  from {
    opacity: 0.82;
    filter: blur(2px);
  }
  to {
    opacity: 1;
    filter: blur(0);
  }
}

@keyframes project-tab-panel-in-backward {
  from {
    opacity: 0.82;
    filter: blur(2px);
  }
  to {
    opacity: 1;
    filter: blur(0);
  }
}

@keyframes project-tab-content-reveal {
  from {
    opacity: 0.88;
    filter: blur(1px);
  }
  to {
    opacity: 1;
    filter: blur(0);
  }
}

@keyframes project-list-entry-reveal {
  from {
    transform: translateY(10px);
  }
  to {
    transform: translateY(0);
  }
}

/* ── overview — lab ledger ───────────────────────────────── */
#panel-overview {
  --ov-good: #2f9e6e;
  --ov-warn: #c08a04;
  --ov-hairline: color-mix(in oklab, var(--border) 62%, transparent);
}

.ov-shell {
  /* Width tracks the user's content-width setting via the .tab-panel padding. */
  width: 100%;
}

/* inline-editable overview fields (title / description / licence) */
.ov-editable {
  outline: none;
  border-radius: 7px;
  cursor: text;
  transition: background .12s, box-shadow .12s;
}
.ov-editable:hover { background: color-mix(in oklab, var(--text) 6%, transparent); }
.ov-editable:focus { background: var(--surface); box-shadow: 0 0 0 2px var(--focus-ring); }
#pv-overview-title.ov-editable,
#pv-description.ov-editable { padding: 2px 7px; margin-left: -7px; }
#pv-description.ov-editable:empty::before,
#pv-overview-title.ov-editable:empty::before {
  content: attr(data-placeholder);
  color: var(--text-muted);
  opacity: 0.6;
}
.ov-meta-val.ov-editable { padding: 1px 6px; margin: -1px -4px; }

/* masthead */
.ov-masthead {
  margin-bottom: 24px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--meas-section-shadow, none);
  padding: 18px 28px 16px;
}
.ov-masthead-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 26px;
  margin-bottom: 12px;
}
.ov-eyebrow {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.ov-eyebrow-public { color: var(--brand); }
.ov-eyebrow-sep { color: var(--panel-strong); }

#pv-overview-title {
  font-family: inherit;
  font-size: 22px;
  font-weight: 650;
  letter-spacing: 0;
  color: var(--text);
  margin: 0 0 8px;
  line-height: 1.05;
  overflow-wrap: anywhere;
}

#pv-description {
  font-style: italic;
  font-size: 13px;
  color: var(--text-muted);
  margin: 0 0 16px;
  line-height: 1.35;
  max-width: 68ch;
}
#pv-description[hidden] { display: none; }

.ov-meta-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px 28px;
}
.ov-meta-item {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
}
.ov-meta-lbl {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.ov-meta-val { color: var(--text); font-size: 12px; }

/* stat ledger */
.ov-ledger {
  display: flex;
  border-top: 1px solid var(--border);
  margin-top: 16px;
  margin-bottom: 0;
  padding-top: 10px;
  overflow-x: auto;
}
.ov-stat {
  flex: 1;
  min-width: 92px;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 6px;
  padding: 16px 18px 13px;
  border: none;
  border-left: 1px solid var(--ov-hairline);
  background: none;
  font: inherit;
  color: inherit;
  cursor: pointer;
  text-align: left;
  transition: background 0.15s;
}
.ov-stat:first-child { border-left: none; padding-left: 4px; }
.ov-stat:hover { background: var(--brand-soft); }
.ov-stat:hover .ov-stat-val { color: var(--brand); }
.ov-stat:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: -2px; }
.ov-stat-val {
  font-size: 29px;
  font-weight: 600;
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--text);
  font-variant-numeric: tabular-nums lining-nums;
  transition: color 0.15s;
}
.ov-stat-lbl {
  font-size: 9.5px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-muted);
  white-space: nowrap;
}

/* layout grid */
.ov-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 320px;
  gap: 20px;
  align-items: start;
}
.ov-main, .ov-rail {
  display: flex;
  flex-direction: column;
  gap: 20px;
  min-width: 0;
}
@media (max-width: 1100px) {
  .ov-grid { grid-template-columns: minmax(0, 1fr); }
}

/* cards */
.ov-card {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: var(--section-shadow);
  overflow: hidden;
}
.ov-card-hd {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 11px 20px;
  border-bottom: 1px solid var(--border);
}
.ov-card-title {
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.ov-card-hint { font-size: 11px; color: var(--text-muted); font-variant-numeric: tabular-nums; }
.ov-card-bd { padding: 18px 20px; }
.ov-empty { font-size: 12.5px; color: var(--text-muted); margin: 0; }

.ov-jump {
  border: none;
  background: none;
  font: inherit;
  font-size: 11.5px;
  color: var(--text-muted);
  cursor: pointer;
  padding: 2px 7px;
  border-radius: var(--radius);
  transition: color 0.12s, background 0.12s;
}
.ov-jump:hover { color: var(--brand); background: var(--brand-soft); }

.ov-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex: none;
}

/* pulse */
.ov-pulse-row {
  display: flex;
  gap: 3px;
  height: 96px;
}
.ov-pulse-col {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
}
.ov-pulse-bar-slot {
  flex: 1;
  display: flex;
  align-items: flex-end;
}
.ov-pulse-bar {
  width: 100%;
  min-height: 2px;
  border-radius: 2px 2px 0 0;
  background: color-mix(in oklab, var(--brand) 78%, transparent);
  transition: background 0.12s;
}
.ov-pulse-bar-zero {
  background: var(--panel-strong);
  opacity: 0.55;
  height: 2px !important;
}
.ov-pulse-col:hover .ov-pulse-bar { background: var(--brand-strong); }
.ov-pulse-tick {
  margin-top: 5px;
  height: 12px;
  overflow: hidden;
  font-size: 9px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-muted);
  white-space: nowrap;
}

/* experiments */
.ov-exp-bar {
  display: flex;
  gap: 2px;
  height: 8px;
  border-radius: 4px;
  overflow: hidden;
  margin-bottom: 9px;
}
.ov-exp-seg { min-width: 6px; }
.ov-exp-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 16px;
  margin-bottom: 10px;
  font-size: 11.5px;
  color: var(--text-muted);
}
.ov-exp-legend-item { display: inline-flex; align-items: center; gap: 6px; }
.ov-exp-legend-item strong { color: var(--text); font-weight: 600; }
.ov-exp-row {
  display: flex;
  align-items: center;
  gap: 10px;
  width: 100%;
  padding: 8px 2px;
  border: none;
  border-top: 1px solid var(--ov-hairline);
  background: none;
  font: inherit;
  color: inherit;
  cursor: pointer;
  text-align: left;
}
.ov-exp-row-title {
  flex: 1;
  min-width: 0;
  font-size: 13px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  transition: color 0.12s;
}
.ov-exp-row:hover .ov-exp-row-title { color: var(--brand); }
.ov-exp-row-status {
  font-size: 9.5px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-muted);
  white-space: nowrap;
}
.ov-exp-row-time {
  min-width: 64px;
  text-align: right;
  font-size: 11px;
  color: var(--text-muted);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}

/* storage gauge */
.ov-storage { display: flex; align-items: center; gap: 18px; }
.ov-gauge { width: 96px; height: 96px; flex: none; }
.ov-gauge-track { fill: none; stroke: var(--panel-strong); stroke-width: 7; opacity: 0.5; }
.ov-gauge-fill { fill: none; stroke-width: 7; stroke-linecap: round; }
.ov-gauge-ok { stroke: var(--brand); }
.ov-gauge-warn { stroke: var(--ov-warn); }
.ov-gauge-critical { stroke: var(--danger); }
.ov-gauge-pct {
  font-size: 19px;
  font-weight: 600;
  fill: var(--text);
  text-anchor: middle;
  font-variant-numeric: tabular-nums;
}
.ov-gauge-cap {
  font-size: 7.5px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  fill: var(--text-muted);
  text-anchor: middle;
}
.ov-storage-figures { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ov-storage-used { font-size: 18px; font-weight: 600; color: var(--text); font-variant-numeric: tabular-nums; }
.ov-storage-sub { font-size: 11.5px; color: var(--text-muted); }

/* composition */
.ov-comp-bar {
  display: flex;
  gap: 2px;
  height: 8px;
  border-radius: 4px;
  overflow: hidden;
  margin-bottom: 8px;
}
.ov-comp-row {
  display: flex;
  align-items: center;
  gap: 9px;
  padding: 5px 0;
  font-size: 12px;
  border-top: 1px solid var(--ov-hairline);
}
.ov-comp-legend .ov-comp-row:first-child { border-top: none; }
.ov-comp-ext {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-family: ui-monospace, monospace;
  font-size: 11.5px;
  color: var(--text);
}
.ov-comp-count { color: var(--text-muted); font-variant-numeric: tabular-nums; font-size: 11.5px; }
.ov-comp-size {
  min-width: 62px;
  text-align: right;
  font-size: 11.5px;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.ov-comp-sub {
  margin: 14px 0 7px;
  font-size: 9.5px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.ov-chip-row { display: flex; flex-wrap: wrap; gap: 6px; }
.ov-chip {
  font-size: 11px;
  padding: 3px 9px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--input-bg-muted);
  color: var(--text-muted);
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ov-chip strong { color: var(--text); font-weight: 600; }

/* team */
.ov-team-row { display: flex; align-items: center; gap: 10px; padding: 5px 0; }
.ov-team-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 8px;
}
.ov-team-list { display: grid; gap: 0; }
.ov-team-count {
  font-size: 11px;
  color: var(--text-muted);
}
.ov-team-share-btn {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  border: 0;
  background: none;
  padding: 0;
  color: var(--brand);
  font-size: 11px;
  cursor: pointer;
}
.ov-team-share-btn:hover,
.ov-team-share-btn:focus-visible {
  text-decoration: underline;
}
.ov-avatar {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  flex: none;
  display: grid;
  place-items: center;
  background: var(--brand-soft);
  color: var(--brand-strong);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.04em;
}
.ov-team-name {
  flex: 1;
  min-width: 0;
  font-size: 13px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
}
.ov-presence {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  flex: none;
  background: var(--panel-strong);
}
.ov-presence-online { background: var(--ov-good); }
.ov-presence-recent { background: var(--ov-warn); }
.ov-team-role {
  font-size: 9.5px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-muted);
  white-space: nowrap;
}

/* activity feed */
.ov-activity-row {
  display: flex;
  flex-direction: column;
  gap: 2px;
  width: 100%;
  padding: 8px 2px;
  border: none;
  border-top: 1px solid var(--ov-hairline);
  background: none;
  font: inherit;
  color: inherit;
  cursor: pointer;
  text-align: left;
}
.ov-activity-row:first-child { border-top: none; }
.ov-activity-summary {
  font-size: 12.5px;
  line-height: 1.45;
  color: var(--text);
  transition: color 0.12s;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.ov-activity-row:hover .ov-activity-summary { color: var(--brand); }
.ov-activity-meta { font-size: 11px; color: var(--text-muted); }

/* notes card */
#pv-notes-wrap {
  width: 100%;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  box-shadow: var(--meas-section-shadow, none);
}
#pv-notes-hd {
  flex: 0 0 auto;
}

/* markdown view */
#pv-notes-view {
  min-height: 220px;
}
#pv-notes-view:empty::before {
  content: "No notes yet.";
}

/* markdown edit */
#pv-notes {
  min-height: 300px;
  resize: none;
}
#pv-notes-save, #pv-notes-cancel {
  min-height: 28px;
}
#pv-notes-save { }
#pv-notes-cancel { }

/* ── experiments tab ──────────────────────────────────────── */
#panel-experiments {
  --exp-list-surface: var(--meas-list-surface, var(--surface));
  padding: 0;
  display: flex;
  overflow: hidden;
  position: relative;
}

#exp-list {
  width: 248px;
  flex-shrink: 0;
  background: var(--exp-list-surface);
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  transition: width 300ms cubic-bezier(0.16, 1, 0.3, 1), border-color 300ms;
}
#exp-list.list-hidden {
  width: 0;
  border-right-color: transparent;
}
/* JS-driven width when the drag engine manages this list */
#exp-list.drawer-managed,
#exp-list.drawer-managed.list-hidden {
  width: var(--drawer-w, 300px);
  transition: width 300ms cubic-bezier(0.16, 1, 0.3, 1), border-color 300ms, background-color 300ms;
}
#panel-experiments.drawer-resizable #exp-list.list-hidden {
  border-right-color: var(--border);
}

#exp-list-hd {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  padding: 0 10px;
  height: 38px;
  flex-shrink: 0;
  background: #ffffff;
  border-bottom: 1px solid var(--border);
}
#exp-list-hd span { font-size: 13px; font-weight: 600; color: var(--text); }
#exp-new-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: none;
  font-size: 16px;
  line-height: 1;
  color: var(--text-muted);
  cursor: pointer;
  transition: background .12s, color .12s;
}
#exp-new-btn:hover { background: var(--bg); color: var(--text); }

#exp-list-body {
  flex: 1;
  overflow-y: auto;
  background: var(--exp-list-surface);
}

#exp-list-hd .exp-list-tools {
  width: 100%;
  justify-content: space-evenly;
  gap: 0;
}

#exp-list-hd #exp-new-btn,
#exp-list-hd #exp-sort-btn,
#exp-list-hd .inline-search-wrap button {
  width: 28px;
  height: 28px;
  border: none;
  box-shadow: none;
}

#exp-list-hd #exp-new-btn:hover,
#exp-list-hd #exp-sort-btn:hover,
#exp-list-hd .inline-search-wrap button:hover {
  background: var(--bg);
  color: var(--text);
}

#panel-experiments.drawer-resizable #exp-list-body {
  padding-top: calc((1 - var(--drawer-t, 1)) * 1.5px);
  width: max(var(--drawer-list-max, 300px), var(--drawer-w, 300px));
}

#panel-experiments .drawer-rail {
  display: none;
}

#panel-experiments.drawer-resizable #exp-list-hd {
  padding-inline: calc(var(--drawer-t, 1) * 14px);
  width: max(var(--drawer-list-max, 300px), var(--drawer-w, 300px));
  justify-content: flex-start;
  position: relative;
  transition: padding 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-experiments.drawer-resizable #exp-list-hd > span {
  overflow: hidden;
  max-width: calc(140px * var(--drawer-t, 1));
  opacity: clamp(0, calc(var(--drawer-t, 1) * 2.1 - 0.25), 1);
  transform: translateX(calc((1 - var(--drawer-t, 1)) * -6px));
  transition: opacity 180ms ease, transform 220ms cubic-bezier(0.16, 1, 0.3, 1), max-width 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-experiments.drawer-resizable .exp-list-tools {
  position: absolute;
  top: 8px;
  right: 14px;
  width: 130px;
  margin-left: 0;
  padding-left: 34px;
  gap: calc(8px * var(--drawer-t, 1));
  transform: none;
  transition: gap 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-experiments.drawer-resizable .exp-list-tools > :not(#exp-new-btn) {
  overflow: hidden;
  opacity: clamp(0, calc(var(--drawer-t, 1) * 2.2 - 0.6), 1);
  transform: translateX(calc((1 - var(--drawer-t, 1)) * -7px));
  max-width: calc(120px * var(--drawer-t, 1));
  transition: opacity 180ms ease, transform 220ms cubic-bezier(0.16, 1, 0.3, 1), max-width 220ms cubic-bezier(0.16, 1, 0.3, 1), margin 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-experiments.drawer-resizable #exp-new-btn {
  position: absolute;
  top: 0;
  left: calc((1 - var(--drawer-t, 1)) * -147px);
  flex: none;
  transform: none;
  transition: background .12s, color .12s, left 220ms cubic-bezier(0.16, 1, 0.3, 1), border-color 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-experiments.drawer-resizable.drawer-collapsed:not(.drawer-dragging):not(.drawer-animating) #exp-list-hd > span {
  max-width: 0;
  opacity: 0;
  transform: translateX(-8px);
}

#panel-experiments.drawer-resizable.drawer-collapsed:not(.drawer-dragging):not(.drawer-animating) .exp-list-tools > :not(#exp-new-btn) {
  max-width: 0;
  opacity: 0;
  transform: translateX(-8px);
  pointer-events: none;
}

.exp-row .meas-row-body {
  align-items: center;
  display: grid;
  grid-template-columns: var(--drawer-min, 44px) minmax(0, 1fr);
  gap: 0;
  /* Same fixed card height as the organize list rows. */
  min-height: calc(22px + (var(--drawer-t, 1) * 38px));
}

.exp-row .entity-ball-sm {
  margin-top: 0;
  justify-self: center;
  align-self: center;
}

.exp-row .meas-row-content {
  margin-left: calc(10px * var(--drawer-t, 1));
  overflow: hidden;
  max-width: calc(220px * var(--drawer-t, 1));
  max-height: calc(50px * var(--drawer-t, 1));
  opacity: clamp(0, calc(var(--drawer-t, 1) * 2.2 - 0.35), 1);
  transform: translateX(calc((1 - var(--drawer-t, 1)) * -7px));
  transition: opacity 180ms ease, transform 220ms cubic-bezier(0.16, 1, 0.3, 1), max-width 220ms cubic-bezier(0.16, 1, 0.3, 1), max-height 220ms cubic-bezier(0.16, 1, 0.3, 1), margin-left 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

.exp-row {
  --exp-row-pad-x: 0px;
  --exp-ball-lane-w: var(--drawer-min, 44px);
  --exp-ball-center-x: calc(var(--exp-row-pad-x) + (var(--exp-ball-lane-w) / 2));
  --exp-ball-center-y: calc(50% - ((1 - var(--drawer-t, 1)) * 0.5px));
  position: relative;
  display: block;
  width: 100%;
  padding-block: calc(11px + (var(--drawer-t, 1) * 1px));
  padding-inline: var(--exp-row-pad-x);
  border: none;
  border-bottom: 1px solid color-mix(in oklab, var(--border) calc(var(--drawer-t, 1) * 100%), transparent);
  background: none;
  text-align: left;
  cursor: pointer;
  overflow: hidden;
  transition: background .1s, padding 220ms cubic-bezier(0.16, 1, 0.3, 1), border-color 220ms cubic-bezier(0.16, 1, 0.3, 1);
}
.exp-row::before {
  content: "";
  position: absolute;
  left: var(--exp-ball-center-x);
  top: var(--exp-ball-center-y);
  width: 30px;
  height: 30px;
  border-radius: 10px;
  background: var(--bg);
  opacity: 0;
  transform: translate(-50%, -50%);
  transition: opacity 180ms ease;
}
.exp-row > * {
  position: relative;
  z-index: 1;
}
#panel-experiments.drawer-resizable .exp-row:hover::before,
#panel-experiments.drawer-resizable .exp-row.active::before {
  opacity: clamp(0, calc(1 - var(--drawer-t, 1)), 1);
}
#panel-experiments:not(.drawer-resizable) .exp-row:hover::before,
#panel-experiments:not(.drawer-resizable) .exp-row.active::before {
  opacity: 0;
}

#panel-experiments.drawer-collapsed .exp-row::before {
  background: color-mix(in oklab, var(--brand) 18%, var(--bg));
  box-shadow:
    inset 0 0 0 1px color-mix(in oklab, var(--brand) 34%, transparent),
    0 0 0 1px color-mix(in oklab, var(--brand) 10%, transparent);
}

body.theme-slate #panel-experiments.drawer-collapsed .exp-row::before,
body.theme-light-vivid #panel-experiments.drawer-collapsed .exp-row::before {
  background: color-mix(in oklab, var(--brand) 24%, white);
  box-shadow:
    inset 0 0 0 1px color-mix(in oklab, var(--brand) 42%, transparent),
    0 1px 2px color-mix(in oklab, #000 10%, transparent);
}

#panel-experiments.drawer-collapsed .exp-row:hover,
#panel-experiments.drawer-collapsed .exp-row.active {
  background: transparent;
}

#panel-experiments.drawer-resizable:not(.drawer-collapsed) .exp-row:hover,
#panel-experiments.drawer-resizable:not(.drawer-collapsed) .exp-row.active,
#panel-experiments.drawer-resizable.drawer-dragging .exp-row:hover,
#panel-experiments.drawer-resizable.drawer-dragging .exp-row.active {
  background: var(--bg);
}

#panel-experiments.drawer-collapsed .exp-row:last-child {
  border-bottom-color: transparent;
}

#panel-experiments.drawer-collapsed:not(.drawer-dragging):not(.drawer-animating) .exp-row {
  height: 44px;
  min-height: 44px;
}

#panel-experiments.drawer-collapsed #exp-list-body > .panel-empty {
  display: none;
}
.exp-row strong {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.exp-row-meta {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: 4px;
}

/* The fixed experiment list uses the measurement row geometry verbatim. */
.exp-row.meas-row {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  min-height: 64px;
  padding: 7px 15px;
  border-bottom: 1px solid var(--border);
}

.exp-row .meas-row-body {
  display: flex;
  align-items: flex-start;
  min-height: 0;
}

.exp-row .meas-row-content {
  margin-left: 0;
  max-width: none;
  max-height: none;
  opacity: 1;
  transform: none;
  transition: none;
}

.exp-row::before { display: none; }

#exp-detail {
  flex: 1;
  overflow-y: auto;
  padding-block: 24px;
  padding-inline: var(--detail-content-gutter);
  background: color-mix(in oklab, var(--surface) 76%, var(--panel));
  position: relative;
}

/* ── resources view ───────────────────────────────────────── */
/* Grid (not nested flex) so the tree sidebar keeps a stable column width. */
.resources-shell {
  display: grid;
  grid-template-columns: 340px minmax(0, 1fr);
  height: 100%;
  min-height: 0;
}

.resources-tree-pane {
  min-width: 340px;
  max-width: min(360px, 42vw);
  overflow: hidden;
}

.resources-main-pane {
  min-width: 0;
  min-height: 0;
  display: flex;
  align-items: stretch;
  overflow: hidden;
  border-left: 1px solid var(--border);
}

.resources-pane {
  min-width: 0;
  min-height: 0;
  display: flex;
  flex-direction: column;
  background: var(--surface);
}

.resources-pane + .resources-pane {
  border-left: 1px solid var(--border);
}

.resources-pane-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  min-height: 61px;
  padding-block: 14px;
  padding-inline: var(--pane-gutter);
  border-bottom: 1px solid var(--border);
  /* Same chrome mix as the project shell so every theme matches automatically. */
  background: color-mix(in oklab, var(--surface) 76%, var(--panel));
}

.resources-pane-header-list {
  padding-bottom: 13px;
}

.resources-pane-header h2 {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}

.resources-pane-header p {
  font-size: 12px;
  color: var(--text-muted);
  margin-top: 2px;
}

.resources-pane-heading {
  min-width: 0;
}

.resources-tree,
.resources-list-body,
.resources-detail {
  flex: 1;
  min-height: 0;
  overflow: auto;
}

.resources-tree {
  padding: 8px var(--pane-gutter) 16px;
}

.resources-tree-branch {
  display: flex;
  flex-direction: column;
  position: relative;
}

.resources-tree-children {
  margin-left: 6px;
  padding-left: 2px;
  border-left: 1px solid var(--border);
}

.resources-tree-root {
  margin-top: 4px;
}

.resources-tree-node {
  display: flex;
  align-items: center;
  gap: 6px;
  width: 100%;
  padding: 5px 8px 5px 0;
  border: none;
  border-radius: var(--radius);
  background: none;
  color: var(--text-muted);
  text-align: left;
  cursor: pointer;
}

.resources-tree-node svg,
.resources-search-icon svg,
.resource-search-clear svg,
.resource-icon-btn svg,
.resource-toolbar-btn-icon svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.resources-tree-node:hover,
.resources-tree-node.active {
  background: var(--bg);
  color: var(--text);
}

.resources-tree-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 12px;
  height: 16px;
  color: var(--text-muted);
  flex-shrink: 0;
}

.resources-tree-toggle.spacer {
  pointer-events: none;
}

.resources-tree-label {
  font-size: 12px;
  line-height: 1.3;
  white-space: nowrap;
}

.resources-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
}

.resource-toolbar-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  height: 28px;
  padding: 0 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: none;
  color: var(--text-muted);
  font: inherit;
  font-size: 12px;
  white-space: nowrap;
  cursor: pointer;
}

.resource-toolbar-btn:hover {
  background: var(--bg);
  color: var(--text);
}

.resource-toolbar-btn-icon {
  width: 28px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.resources-search-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding-block: 12px;
  padding-inline: var(--pane-gutter);
  border-bottom: 1px solid var(--border);
}

.resources-search-field {
  flex: 1;
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 8px;
  height: 34px;
  padding: 0 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--input-bg);
}

.resources-search-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text-muted);
  flex-shrink: 0;
}

.resources-search-input {
  width: 100%;
  height: 100%;
  padding: 0;
  border: none;
  background: transparent;
  color: var(--text);
  font: inherit;
  outline: none;
}

.resource-search-clear {
  width: 20px;
  height: 20px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: none;
  background: none;
  color: var(--text-muted);
  cursor: pointer;
  flex-shrink: 0;
}

.resource-search-clear:hover {
  color: var(--text);
}

.resources-search-toggle {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  height: 34px;
  padding: 0 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--input-bg);
  font-size: 12px;
  color: var(--text-muted);
  white-space: nowrap;
}

.resources-breadcrumbs {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 4px;
  min-width: 0;
}

.resources-breadcrumb-link {
  border: none;
  background: none;
  color: var(--text-muted);
  font: inherit;
  font-size: 12px;
  cursor: pointer;
}

.resources-breadcrumb-link:hover,
.resources-breadcrumb-current {
  color: var(--text);
}

.resources-breadcrumb-sep {
  color: var(--text-muted);
  font-size: 12px;
}

/* ── resources table (data-library table + gr column layout) ── */
.gr-table .gr-cell-check { width: 36px; }
.gr-table .gr-cell-name { width: auto; }
.gr-table .gr-cell-location { width: 18%; }
.gr-table .gr-cell-size { width: 90px; }
.gr-table .gr-cell-date { width: 150px; }
.gr-table .gr-cell-by { width: 110px; }
.gr-table .gr-cell-type { width: 88px; }
.gr-table .gr-cell-actions { width: 152px; }
.gr-table td.gr-cell-actions { text-align: right; overflow: visible; }
.gr-table td.gr-cell-size,
.gr-table td.gr-cell-date,
.gr-table td.gr-cell-by,
.gr-table td.gr-cell-location { color: var(--text-muted); }

/* Progressive column drop as the list pane narrows (classes set by a
   ResizeObserver in group-resources.js) so file names disappear last. */
.resources-list-pane.gr-hide-type .gr-cell-type,
.resources-list-pane.gr-hide-by .gr-cell-by,
.resources-list-pane.gr-hide-date .gr-cell-date,
.resources-list-pane.gr-hide-date .gr-cell-location,
.resources-list-pane.gr-hide-size .gr-cell-size {
  display: none;
}

.gr-table tbody tr:hover { background: color-mix(in oklab, var(--brand) 4%, var(--surface)); }
.gr-row.gr-active { background: color-mix(in oklab, var(--brand) 12%, var(--surface)); }
.gr-row.gr-dragging { opacity: 0.4; }

/* Non-sortable header labels match .dl-th-btn metrics. */
.gr-th-label {
  display: inline-flex;
  padding: 9px 10px;
  font-size: 10px;
  font-weight: 500;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--text-muted);
}

.resource-check { cursor: pointer; }

.gr-name-cell { gap: 7px; }
.gr-name-cell-stack { flex-direction: column; align-items: flex-start; gap: 2px; }
.gr-name-folder { font-weight: 600; }
.gr-name-count { font-size: 11px; color: var(--text-muted); white-space: nowrap; flex: none; }
.gr-row-glyph { display: inline-flex; color: var(--text-muted); flex: none; }
.gr-row-glyph svg {
  width: 15px;
  height: 15px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.gr-snippet {
  max-width: 100%;
  font-size: 11px;
  color: var(--text-muted);
  font-style: italic;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.gr-location-btn {
  max-width: 100%;
  padding: 0;
  border: none;
  background: none;
  font: inherit;
  font-size: 12px;
  color: var(--text-muted);
  cursor: pointer;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.gr-location-btn:hover { color: var(--brand); text-decoration: underline; }

/* ── toolbar / bulk bar tweaks ────────────────────────────── */
.gr-toolbar .resources-search-toggle { height: 36px; }

.gr-btn-danger:hover {
  color: var(--danger);
  border-color: color-mix(in oklab, var(--danger) 40%, var(--border));
  background: color-mix(in oklab, var(--danger) 12%, var(--surface));
}
.meas-detail-icon-btn.gr-copied {
  color: var(--brand);
  border-color: var(--brand);
}

/* ── empty states ─────────────────────────────────────────── */
.gr-empty { margin: 16px; }
.gr-empty-actions { display: flex; gap: 8px; }
.gr-empty-icon {
  display: inline-flex;
  color: var(--text-muted);
  opacity: 0.7;
  margin-bottom: 4px;
}
.gr-empty-icon svg {
  width: 28px;
  height: 28px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* ── upload progress chip ─────────────────────────────────── */
.gr-upload-progress {
  position: absolute;
  bottom: 14px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  gap: 8px;
  max-width: 80%;
  padding: 8px 14px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
  font-size: 12px;
  color: var(--text);
  z-index: 20;
}
.gr-upload-progress-name {
  color: var(--text-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.gr-upload-progress-spinner {
  width: 12px;
  height: 12px;
  border: 2px solid var(--border);
  border-top-color: var(--brand);
  border-radius: 50%;
  animation: gr-spin 700ms linear infinite;
  flex-shrink: 0;
}
@keyframes gr-spin { to { transform: rotate(360deg); } }

/* ── drag & drop ──────────────────────────────────────────── */
.gr-drop-hover {
  background: color-mix(in oklab, var(--brand) 18%, var(--bg)) !important;
  outline: 2px dashed var(--brand);
  outline-offset: -2px;
}
tr.gr-drop-hover td {
  background: color-mix(in oklab, var(--brand) 12%, var(--surface)) !important;
}
.gr-drag-ghost {
  position: fixed;
  top: -100px;
  left: -100px;
  padding: 6px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.2);
  font-size: 12px;
  color: var(--text);
  z-index: 9999;
  pointer-events: none;
}

/* ── rename modal ─────────────────────────────────────────── */
.gr-rename-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.45);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 9999;
}
.gr-rename-modal {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 24px;
  width: 360px;
  max-width: 90vw;
  display: flex;
  flex-direction: column;
  gap: 12px;
  box-shadow: 0 8px 32px rgba(0,0,0,0.18);
}
.gr-rename-modal h3 { margin: 0; font-size: 15px; }
.gr-rename-input {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  color: var(--text);
  font: inherit;
  font-size: 14px;
  box-sizing: border-box;
}
.gr-rename-error { margin: 0; font-size: 12px; color: var(--danger, #c62828); min-height: 1em; }
.gr-rename-actions { display: flex; gap: 8px; justify-content: flex-end; }
.resource-toolbar-btn-primary { background: var(--brand); color: #fff; }

/* ── move modal ───────────────────────────────────────────── */
.gr-move-modal { width: 420px; }
.gr-move-hint { margin: 0; font-size: 12px; color: var(--text-muted); }
.gr-move-tree {
  max-height: 320px;
  overflow: auto;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 6px 4px;
  background: var(--bg);
}
.gr-move-node {
  display: flex;
  align-items: center;
  gap: 6px;
  width: 100%;
  padding: 5px 8px;
  border: none;
  border-radius: var(--radius);
  background: none;
  color: var(--text-muted);
  text-align: left;
  cursor: pointer;
  font: inherit;
  font-size: 12px;
}
.gr-move-node:hover:not(:disabled) { background: var(--surface); color: var(--text); }
.gr-move-node.active {
  background: color-mix(in oklab, var(--brand) 14%, var(--bg));
  color: var(--text);
}
.gr-move-node:disabled { opacity: 0.4; cursor: not-allowed; }
.gr-move-node svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}

/* ── tree decorations ─────────────────────────────────────── */
.gr-tree-icon {
  display: inline-flex;
  color: color-mix(in oklab, var(--text-muted) 80%, var(--brand));
  flex-shrink: 0;
}
.gr-tree-icon svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.resources-tree-toggle svg { stroke-width: 2; }
.gr-tree-empty {
  padding: 6px 10px 6px 20px;
  font-size: 11px;
  color: var(--text-muted);
  line-height: 1.4;
}
.gr-tree-count {
  margin-left: auto;
  height: 15px;
  display: inline-flex;
  align-items: center;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--panel-strong, var(--bg));
  color: var(--text-muted);
  font-size: 10px;
  font-weight: 600;
  flex-shrink: 0;
}
.resources-tree-node { padding-right: 8px; }

/* ── detail pane extras ───────────────────────────────────── */
.resources-detail-title {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  min-width: 0;
}
.resources-detail-title .data-library-type-pill {
  margin-top: 2px;
  flex-shrink: 0;
}
.resources-detail-title h3 { word-break: break-word; }
.resources-detail-empty {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 10px;
}
.resources-detail-empty .gr-empty-icon { opacity: 0.5; }

.resource-icon-btn {
  width: 28px;
  height: 28px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid transparent;
  border-radius: var(--radius);
  background: none;
  color: var(--text-muted);
  cursor: pointer;
}

.resource-icon-btn:hover {
  color: var(--text);
  background: var(--bg);
  border-color: var(--border);
}

.resource-icon-btn-danger:hover {
  color: var(--danger);
  background: color-mix(in oklab, var(--danger) 14%, var(--surface));
  border-color: color-mix(in oklab, var(--danger) 28%, var(--border));
}

.resources-list-pane {
  flex: 1;
  min-width: 0;
  position: relative;
}
.resources-list-pane.gr-upload-hover::after {
  content: "Drop files to upload";
  position: absolute;
  inset: 0;
  background: color-mix(in oklab, var(--brand) 12%, var(--bg));
  border: 2px dashed var(--brand);
  border-radius: var(--radius);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  font-weight: 600;
  color: var(--brand);
  pointer-events: none;
  z-index: 10;
}

.resources-detail-pane {
  width: 380px;
  flex-shrink: 0;
  min-width: 0;
}

.resources-resize-handle {
  flex-shrink: 0;
}

.resources-detail {
  padding: var(--pane-gutter);
  display: flex;
  flex-direction: column;
}

.resources-detail-card {
  display: flex;
  flex-direction: column;
  gap: 18px;
  flex: 1;
  min-height: 0;
}

.resources-detail-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.resources-detail-header h3 {
  font-size: 16px;
  font-weight: 600;
  color: var(--text);
}

.resources-detail-header p {
  margin-top: 4px;
  font-size: 12px;
  color: var(--text-muted);
  word-break: break-word;
}

.resources-detail-actions {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 8px;
}

.resources-detail-meta {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px 14px;
}

.resources-detail-meta div {
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: color-mix(in oklab, var(--surface) 78%, var(--panel));
}

.resources-detail-meta dt {
  font-size: 11px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: .05em;
}

.resources-detail-meta dd {
  margin-top: 5px;
  font-size: 13px;
  color: var(--text);
  word-break: break-word;
}

.resources-preview-shell {
  min-height: 320px;
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: color-mix(in oklab, var(--surface) 78%, var(--panel));
  overflow: hidden;
}

.resources-preview-loading {
  padding: 14px 16px;
  border-bottom: 1px solid var(--border);
  font-size: 12px;
  color: var(--text-muted);
}

.resources-preview-body {
  min-height: 0;
  flex: 1;
  display: flex;
  flex-direction: column;
}

.resources-preview-image,
.resources-preview-pdf {
  display: block;
  width: 100%;
  min-height: 0;
  height: 100%;
  flex: 1;
  border: none;
  background: var(--canvas-bg);
}

.resources-preview-text {
  min-height: 0;
  height: 100%;
  flex: 1;
  padding: 16px;
  overflow: auto;
  box-sizing: border-box;
  white-space: pre-wrap;
  word-break: break-word;
  font: 12px/1.55 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  color: var(--text);
}

.resources-detail-empty {
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}

/* ── measurements tab ─────────────────────────────────────── */
#panel-measurements {
  --meas-list-surface: var(--surface);
  padding: 0;
  display: flex;
  overflow: hidden;
  position: relative;
  background: var(--panel);
}

#panel-data-library,
#panel-assets.project-table-list-panel,
#panel-references.project-table-list-panel {
  padding-block: 0;
  padding-inline: var(--page-content-gutter);
}

#panel-samples {
  padding: 0;
  display: flex;
  overflow: hidden;
  position: relative;
}

.samples-layout {
  display: flex;
  min-height: 0;
  height: 100%;
  width: 100%;
}

#samples-list {
  width: 300px;
  flex-shrink: 0;
  border-right: 1px solid var(--border);
  min-height: 0;
  display: flex;
  flex-direction: column;
  background: var(--surface);
  overflow: hidden;
  transition: width 300ms cubic-bezier(0.16, 1, 0.3, 1), border-color 300ms;
}

#samples-list.list-hidden {
  width: 0;
  border-right-color: transparent;
}

.samples-list-hd,
.sample-section-hd,
.sample-modal header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}

#samples-list-hd {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 14px;
  height: 44px;
  flex-shrink: 0;
  border-bottom: 1px solid var(--border);
}

#samples-list-hd > span {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}

#sample-new-btn,
#samples-sort-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: none;
  color: var(--text-muted);
  cursor: pointer;
  flex-shrink: 0;
}

#samples-sort-btn svg {
  width: 15px;
  height: 15px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.samples-list-body,
.samples-detail {
  min-height: 0;
  overflow: auto;
}

#samples-detail {
  flex: 1;
  min-width: 0;
  overflow-y: auto;
  padding-block: 24px;
  padding-inline: var(--detail-content-gutter);
  background: color-mix(in oklab, var(--surface) 76%, var(--panel));
  position: relative;
}

#samples-list-body {
  flex: 1;
  overflow-y: auto;
}

.sample-row {
  width: 100%;
}

.sample-file-list .meas-bucket-file-item {
  min-height: 50px;
}

.sample-file-list.meas-bucket-file-list,
.sample-file-list.meas-bucket-file-list-loose {
  display: block;
  gap: 0;
}

.sample-file-list .meas-bucket-file-row {
  min-height: 32px;
}

.sample-file-list .meas-bucket-file-name,
.sample-file-list .meas-bucket-file-item:hover .meas-bucket-file-name,
.sample-file-list .meas-bucket-file-item:focus-within .meas-bucket-file-name {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  word-break: normal;
}

.sample-file-list .meas-bucket-file-meta {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}


.sample-plot-section .meas-plot-stage {
  box-sizing: border-box;
  height: 668px;
  min-height: 668px;
}

.sample-plot-section .meas-plot-canvas {
  height: 640px;
  min-height: 0;
}

.sample-plot-section.fullscreen .meas-plot-stage {
  height: auto;
  min-height: 0;
}

.sample-import-panel-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex: 1;
  min-height: 0;
  overflow: hidden;
  transition:
    background .16s ease,
    box-shadow .16s ease,
    border-color .16s ease;
}

.sample-import-panel-header-actions {
  margin-left: auto;
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 24px;
}

.sample-import-panel-status,
.sample-import-empty {
  color: var(--muted);
  font-size: 11px;
}

.sample-import-toolbar {
  display: grid;
  gap: 8px;
}

.sample-import-view-toggle,
.sample-import-filter-row {
  display: grid;
  gap: 6px;
}

.sample-import-view-toggle {
  grid-template-columns: repeat(2, minmax(0, 1fr));
}

.sample-import-filter-row {
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
}

.sample-import-view-btn,
.sample-import-clear-btn,
.sample-import-filter-select {
  border: 1px solid var(--border);
  border-radius: 7px;
  background: var(--surface);
  color: var(--text);
  font: inherit;
  font-size: 11px;
  min-height: 28px;
}

.sample-import-view-btn,
.sample-import-clear-btn {
  cursor: pointer;
}

.sample-import-view-btn {
  min-width: 0;
  width: 100%;
  padding: 4px 6px;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  line-height: 1.15;
  text-align: center;
  white-space: normal;
  overflow-wrap: anywhere;
}

.sample-import-view-btn.active {
  border-color: color-mix(in oklab, var(--brand) 52%, var(--border));
  background: color-mix(in oklab, var(--brand) 12%, var(--surface));
}

.sample-import-view-btn.secondary {
  border-color: color-mix(in oklab, var(--brand) 28%, var(--border));
  background: color-mix(in oklab, var(--brand) 5%, var(--surface));
}

.sample-import-view-order {
  flex: 0 0 auto;
  min-width: 16px;
  height: 16px;
  padding: 0 4px;
  border-radius: 999px;
  border: 1px solid currentColor;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 9px;
  line-height: 1;
}

.sample-import-filter-select {
  width: 100%;
  padding: 0 8px;
  outline: none;
}

.sample-import-filter-select:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--focus-ring);
}

.sample-import-clear-btn {
  padding: 0 10px;
}

.sample-import-clear-btn:disabled {
  opacity: 0.5;
  cursor: default;
}

.sample-import-search {
  width: 100%;
  border: 1px solid var(--border);
  border-radius: 7px;
  background: var(--bg);
  color: var(--text);
  padding: 6px 8px;
  font: inherit;
  font-size: 11px;
  outline: none;
  box-sizing: border-box;
}

.sample-import-search:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--focus-ring);
}

.sample-import-list {
  flex: 1;
  min-height: 0;
  overflow: auto;
  display: grid;
  align-content: start;
  gap: 4px;
  margin-top: 2px;
  padding-top: 8px;
  padding-right: 2px;
  border-top: 1px solid color-mix(in oklab, var(--border) 90%, var(--text-muted) 10%);
}

.sample-import-panel-body.drop-target {
  background: color-mix(in oklab, var(--surface) 72%, var(--bg));
  box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--text-muted) 16%, transparent);
}

.meas-file-drag-active .sample-import-panel-body:not(.drop-target) {
  box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--text-muted) 8%, transparent);
}

@media (max-width: 1440px) {
  .sample-import-filter-row {
    grid-template-columns: 1fr;
  }
}

.sample-import-run {
  display: grid;
  gap: 2px;
}

.sample-import-group-children {
  display: grid;
  gap: 3px;
  margin-left: 10px;
  padding-left: 10px;
  border-left: 1px solid color-mix(in oklab, var(--border) 88%, var(--text-muted) 12%);
}

.sample-import-run-header {
  min-height: 30px;
  border: 1px solid color-mix(in oklab, var(--border) 90%, var(--text-muted) 10%);
  border-radius: 7px;
  background: color-mix(in oklab, var(--surface) 90%, var(--bg));
  color: var(--text);
  display: grid;
  grid-template-columns: 16px minmax(0, 1fr) auto auto;
  align-items: center;
  gap: 8px;
  padding: 5px 7px;
  cursor: pointer;
  text-align: left;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.45);
}

.sample-import-run-header:hover {
  border-color: color-mix(in oklab, var(--brand) 28%, var(--border));
  background: color-mix(in oklab, var(--brand) 6%, var(--surface));
}

.sample-import-run-header strong,
.sample-import-run-header span {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.sample-import-run-header strong {
  font-size: 11px;
  font-weight: 560;
}

.sample-import-run-header span,
.sample-import-run-header em,
.sample-import-caret {
  color: var(--muted);
  font-size: 10px;
  font-style: normal;
}

.sample-import-run-header em {
  min-width: 22px;
  padding: 0 6px;
  border: 1px solid color-mix(in oklab, var(--border) 88%, var(--text-muted) 12%);
  border-radius: 999px;
  background: color-mix(in oklab, var(--surface) 92%, var(--bg));
  text-align: center;
  line-height: 18px;
}

.sample-import-caret {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 14px;
}

.sample-import-files {
  display: grid;
  gap: 3px;
  margin-left: 0;
  padding: 3px 0 6px 0;
  border-left: 0;
}

.sample-import-files-flat {
  padding-top: 0;
}

.sample-import-file {
  height: 56px;
  border: 1px solid color-mix(in oklab, var(--border) 94%, var(--text-muted) 6%);
  border-radius: 8px;
  background: color-mix(in oklab, var(--surface) 96%, var(--bg) 4%);
  color: var(--text);
  padding: 8px 10px;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: stretch;
  gap: 10px;
  cursor: grab;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.45);
  transition:
    background .14s ease,
    border-color .14s ease,
    box-shadow .14s ease;
}

.sample-import-file-check {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 18px;
}

.sample-import-file-check input {
  margin: 0;
  inline-size: 14px;
  block-size: 14px;
  accent-color: color-mix(in oklab, var(--brand) 82%, var(--text));
}

.sample-import-file-body {
  min-width: 0;
  display: grid;
  align-content: start;
  padding-top: 2px;
}

.sample-import-file:hover {
  border-color: color-mix(in oklab, var(--brand) 24%, var(--border));
  background: color-mix(in oklab, var(--brand) 5%, var(--surface) 95%);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,0.5),
    0 1px 2px rgba(15, 23, 42, 0.05);
}

.sample-import-file.selected {
  border-color: color-mix(in oklab, var(--brand) 46%, var(--border));
  background: color-mix(in oklab, var(--brand) 10%, var(--surface) 90%);
  box-shadow:
    inset 0 0 0 1px color-mix(in oklab, var(--brand) 18%, transparent),
    inset 0 1px 0 rgba(255,255,255,0.45);
}

.sample-import-file.linked {
  color: var(--muted);
  opacity: 0.56;
  cursor: default;
}

.sample-import-file.linked:hover {
  border-color: color-mix(in oklab, var(--border) 94%, var(--text-muted) 6%);
  background: color-mix(in oklab, var(--surface) 96%, var(--bg) 4%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.45);
}

.sample-import-file.dragging {
  opacity: 0.52;
}

.sample-import-file strong,
.sample-import-file span {
  overflow-wrap: anywhere;
  word-break: break-word;
  white-space: normal;
}

.sample-import-file strong {
  font-size: 12px;
  font-weight: 550;
  line-height: 1.25;
  display: -webkit-box;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
  overflow: hidden;
}

.sample-import-file span {
  color: var(--muted);
  font-size: 10px;
  line-height: 1.35;
}

.data-library-explorer {
  position: relative;
  height: 100%;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr);
  gap: 18px;
  padding: 24px 20px 20px;
  box-sizing: border-box;
  width: 100%;
  max-width: none;
}

.data-library-main {
  min-height: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
}

.data-library-workspace {
  min-width: 0;
  min-height: 0;
  display: grid;
  grid-template-columns: clamp(170px, 18vw, 230px) minmax(0, 1fr);
  gap: 8px;
}

.data-library-workspace.folders-collapsed {
  grid-template-columns: 38px minmax(0, 1fr);
}

.data-library-folder-sidebar {
  min-width: 0;
  min-height: 0;
  overflow: auto;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  padding: 8px 6px;
}

.data-library-folder-sidebar.is-collapsed {
  display: flex;
  justify-content: center;
  align-items: flex-start;
  padding: 7px 4px;
  overflow: hidden;
}

.data-library-folder-head {
  min-height: 28px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  padding: 0 4px 6px 8px;
  border-bottom: 1px solid var(--border);
  color: var(--text-muted);
  font-size: 10px;
  letter-spacing: .06em;
  text-transform: uppercase;
}

.data-library-folder-head-actions {
  display: flex;
  gap: 2px;
}

.data-library-folder-head-actions button,
.data-library-folder-collapse,
.data-library-folder-actions button {
  border: 0;
  border-radius: 5px;
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  cursor: pointer;
}

.data-library-folder-head-actions button {
  width: 24px;
  height: 24px;
  font-size: 17px;
  line-height: 1;
}

.data-library-folder-head-actions button:hover,
.data-library-folder-collapse:hover,
.data-library-folder-actions button:hover {
  color: var(--text);
  background: var(--bg);
}

.data-library-folder-collapse {
  width: 28px;
  height: 28px;
  padding: 6px;
}

.data-library-folder-collapse svg {
  width: 16px;
  height: 16px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
}

.data-library-folder-tree {
  display: grid;
  align-content: start;
  gap: 1px;
  padding-top: 6px;
}

.data-library-folder-tree .data-library-tree-row {
  grid-template-columns: 14px 14px minmax(0, 1fr) auto;
  gap: 2px;
  min-height: 28px;
  padding: 1px 6px 1px var(--folder-indent, 4px);
}

.data-library-folder-tree .data-library-tree-row.is-editing {
  grid-template-columns: 14px 14px minmax(0, 1fr) auto;
  padding: 2px 6px 2px var(--folder-indent, 4px);
}

.data-library-folder-tree .data-library-tree-input {
  grid-column: 3 / -1;
  width: 100%;
  min-width: 0;
  min-height: 24px;
  padding: 2px 6px;
  border-radius: 5px;
  font-size: 11px;
}

.data-library-tree-expander,
.data-library-tree-expander-spacer {
  width: 14px;
  height: 22px;
}

.data-library-tree-expander {
  border: 0;
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  font-size: 17px;
  line-height: 1;
  cursor: pointer;
  padding: 0;
  transform: rotate(0);
  transition: transform .12s ease;
}

.data-library-tree-expander[aria-expanded="true"] { transform: rotate(90deg); }

.data-library-folder-tree .data-library-tree-main {
  gap: 6px;
  padding: 3px;
}

.data-library-folder-actions {
  display: flex;
  gap: 3px;
  margin: 8px 4px 0;
  padding-top: 7px;
  border-top: 1px solid var(--border);
}

.data-library-folder-actions button {
  padding: 4px 7px;
  font-size: 10px;
}

.workspace-folder-delete-modal {
  width: min(420px, calc(100vw - 32px));
  padding: 20px;
}

.workspace-folder-delete-modal h3 {
  margin: 0 0 8px;
  font-size: 16px;
}

.workspace-folder-delete-modal p {
  margin: 0;
  color: var(--text-muted);
  font-size: 12px;
  line-height: 1.5;
}

.workspace-folder-delete-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 18px;
}

.dl-group-menu-label,
.dl-group-menu-empty {
  display: block;
  padding: 4px 9px;
  color: var(--text-muted);
  font-size: 10px;
}

.dl-group-menu-label {
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.dl-group-menu-item svg {
  width: 14px;
  height: 14px;
  flex: 0 0 auto;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
}

[data-library-move-pop] {
  max-width: min(340px, 80vw);
  max-height: min(420px, 60vh);
  overflow-y: auto;
}

[data-library-move-pop] .dl-group-menu-item {
  display: flex;
  align-items: center;
  gap: 7px;
}

[data-library-move-pop] .dl-group-menu-item span {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
}

.data-library-sidebar {
  padding: 12px;
  display: grid;
  align-content: start;
  gap: 12px;
  overflow: auto;
}

.data-library-sidebar-section {
  display: grid;
  gap: 8px;
}

.data-library-sidebar-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}

.data-library-sidebar-toggle,
.data-library-sidebar-add {
  border: 0;
  background: transparent;
  color: var(--text);
  font: inherit;
  cursor: pointer;
}

.data-library-sidebar-toggle {
  padding: 0;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
}

.data-library-sidebar-add {
  min-width: 24px;
  min-height: 24px;
  border-radius: 6px;
  color: var(--text-muted);
}

.data-library-sidebar-add:hover {
  background: color-mix(in oklab, var(--surface-alt, var(--surface)) 78%, var(--bg));
  color: var(--text);
}

.data-library-sidebar-body {
  display: grid;
  gap: 4px;
}

.data-library-sidebar-empty {
  color: var(--text-muted);
  font-size: 12px;
  padding: 6px 8px;
}

.data-library-tree-row {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 6px;
  border-radius: 8px;
  padding: 2px 6px 2px 10px;
}

.data-library-tree-row.is-active {
  background: color-mix(in oklab, var(--brand) 10%, var(--surface));
}

.data-library-tree-row.is-active::before {
  content: "";
  position: absolute;
  left: 0;
  top: 5px;
  bottom: 5px;
  width: 3px;
  border-radius: 999px;
  background: var(--brand);
}

.data-library-tree-row.is-drop-target {
  box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--brand) 30%, transparent);
  background: color-mix(in oklab, var(--brand) 8%, var(--surface));
}

.data-library-tree-row.is-editing {
  grid-template-columns: minmax(0, 1fr);
  padding: 4px 6px 4px 10px;
  background: color-mix(in oklab, var(--surface-alt, var(--surface)) 85%, var(--bg));
}

.data-library-tree-main {
  min-width: 0;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  border: 0;
  background: transparent;
  color: var(--text);
  font: inherit;
  font-size: 12px;
  text-align: left;
  cursor: pointer;
  padding: 4px 4px;
}

.data-library-tree-icon {
  width: 14px;
  height: 14px;
  color: var(--text-muted);
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.data-library-tree-icon svg {
  width: 14px;
  height: 14px;
  stroke: currentColor;
  stroke-width: 1.7;
  fill: none;
  vector-effect: non-scaling-stroke;
}

.data-library-tree-icon svg rect {
  stroke: currentColor;
}

.data-library-tree-icon.is-folder {
  color: color-mix(in oklab, var(--brand) 65%, var(--text-muted));
}

.data-library-tree-icon.is-folder svg {
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linejoin: round;
}

.data-library-tree-label {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.data-library-tree-meta {
  color: var(--text-muted);
  font-size: 11px;
  padding-right: 2px;
}

.data-library-tree-actions {
  position: absolute;
  right: 6px;
  top: 50%;
  transform: translateY(-50%);
  display: flex;
  align-items: center;
  gap: 4px;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .14s ease;
  padding-left: 8px;
  background: linear-gradient(90deg, transparent, color-mix(in oklab, var(--surface) 96%, var(--bg)) 18%);
}

.data-library-tree-row:hover .data-library-tree-actions,
.data-library-tree-row:focus-within .data-library-tree-actions,
.data-library-tree-row.is-editing .data-library-tree-actions {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
}

.data-library-tree-action {
  border: 0;
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  font-size: 11px;
  cursor: pointer;
  padding: 2px 4px;
  border-radius: 5px;
}

.data-library-tree-action:hover {
  background: color-mix(in oklab, var(--surface-alt, var(--surface)) 78%, var(--bg));
  color: var(--text);
}

.data-library-tree-input,
.data-library-sort-select,
.data-library-bulk-bar select,
.data-library-detail-select,
.data-library-toolbar-search input {
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text);
  font: inherit;
}

.data-library-tree-input {
  min-height: 34px;
  padding: 0 10px;
}

.data-library-main {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  min-width: 0;
}

.data-library-detail {
  min-width: 0;
}

.data-library-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 14px;
  min-height: 41px;
  border-bottom: 1px solid var(--border);
}

.dl-library-toolbar-lead {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1 1 340px;
  min-width: 220px;
}

.dl-bundle-notice {
  display: flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  color: var(--brand);
}

.dl-bundle-notice span {
  overflow: hidden;
  color: inherit;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.dl-bundle-notice button {
  border: 0;
  background: transparent;
  color: inherit;
  cursor: pointer;
}

.data-library-toolbar-search {
  flex: 1 1 auto;
  min-width: 0;
}

.data-library-toolbar-search input {
  width: 100%;
  min-height: 24px;
  padding: 3px 8px;
  font-size: 11px;
}

/* A search query is a persistent filter, so its active state must remain visible
   after focus leaves the input. Shared by Data, Assets, References, and Samples. */
.workspace-search-filter.is-active {
  display: flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
  padding: 2px 5px;
  border: 1px solid color-mix(in oklab, var(--brand) 52%, var(--border));
  border-radius: 8px;
  background: color-mix(in oklab, var(--brand) 9%, var(--surface));
  box-shadow: 0 0 0 2px color-mix(in oklab, var(--brand) 9%, transparent);
}
.workspace-search-filter.is-active:focus-within {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px color-mix(in oklab, var(--brand) 16%, transparent);
}
.hub-search-wrap.workspace-search-filter.is-active { padding-block: 0; }
.workspace-search-filter.is-active > svg { display: none; }
.workspace-search-filter.is-active input[type="search"] {
  flex: 1 1 auto;
  width: auto;
  min-width: 36px;
  min-height: 20px;
  padding: 1px 2px;
  border: 0;
  background: transparent;
  box-shadow: none;
  font-weight: 600;
  outline: 0;
}
.workspace-search-filter.is-active input[type="search"]::-webkit-search-cancel-button { display: none; }
.workspace-search-state {
  display: inline-flex;
  align-items: center;
  min-height: 16px;
  padding: 0 5px;
  border-radius: 4px;
  background: var(--brand);
  color: #fff;
  font-size: 9px;
  font-weight: 700;
  line-height: 1;
  white-space: nowrap;
  pointer-events: none;
}
.workspace-search-clear {
  display: inline-grid;
  place-items: center;
  flex: 0 0 auto;
  width: 19px;
  height: 19px;
  padding: 0;
  border: 0;
  border-radius: 5px;
  background: transparent;
  color: var(--brand);
  font: inherit;
  font-size: 17px;
  line-height: 1;
  cursor: pointer;
}
.workspace-search-clear:hover { background: color-mix(in oklab, var(--brand) 14%, transparent); }
.workspace-search-clear:focus-visible { outline: 2px solid var(--brand); outline-offset: 1px; }
.workspace-search-state[hidden],
.workspace-search-clear[hidden] { display: none; }
.my-samples-empty .dl-bulk-btn { display: flex; margin: 10px auto 0; }

.data-library-toolbar-actions {
  display: flex;
  align-items: center;
  gap: 5px;
  flex: 0 1 auto;
  min-width: 0;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.data-library-toolbar-actions .meas-detail-icon-btn,
.data-library-empty-state .meas-detail-icon-btn,
.data-library-detail-actions .meas-detail-icon-btn {
  flex: 0 0 auto;
}

.data-library-sort-select,
.data-library-detail-select {
  min-height: 34px;
  padding: 0 10px;
}

.data-library-view-switch {
  display: inline-grid;
  grid-template-columns: repeat(2, 34px);
  gap: 4px;
}

.data-library-view-switch-btn {
  min-height: 34px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text-muted);
  font: inherit;
  cursor: pointer;
}

.data-library-view-switch-btn.is-active {
  color: var(--text);
  border-color: color-mix(in oklab, var(--brand) 42%, var(--border));
  background: color-mix(in oklab, var(--brand) 10%, var(--surface));
}

.data-library-main-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px 4px;
}

.data-library-main-heading {
  display: grid;
  gap: 4px;
}

.data-library-main-eyebrow {
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.data-library-main-title {
  font-size: 20px;
  font-weight: 600;
  color: var(--text);
}

.data-library-main-subtitle,
.data-library-empty-copy,
.data-library-file-card-meta,
.data-library-file-card-subtle,
.data-library-file-row-cell,
.data-library-sidebar-empty {
  color: var(--text-muted);
}

.data-library-main-subtitle {
  font-size: 12px;
}

.data-library-content {
  --table-scroll-track: color-mix(in oklab, var(--panel) 82%, var(--surface));
  --table-scroll-thumb: color-mix(in oklab, var(--brand) 58%, var(--text-muted));
  width: 100%;
  max-height: 100%;
  min-height: 0;
  align-self: start;
  overflow: auto;
  scrollbar-width: auto;
  scrollbar-color: var(--table-scroll-thumb) var(--table-scroll-track);
  /* Breathing room is a border (not padding) so it stays fixed above the sticky
     table header — no row peeks through. */
  border-top: 5px solid var(--surface);
  padding: 0 0 18px;
  background: var(--surface);
  border-radius: 0 0 10px 10px;
  display: grid;
  align-content: start;
  gap: 18px;
}

.data-library-window-note {
  padding: 2px 2px 0;
  font-size: 11px;
  color: var(--text-muted);
}

.data-library-content:has(> .data-library-load-more) { gap: 8px; }

.data-library-load-more {
  width: fit-content;
  min-height: 30px;
  justify-self: center;
  padding: 4px 12px;
  border: 1px solid color-mix(in oklab, var(--brand) 24%, var(--border));
  border-radius: 999px;
  background: transparent;
  color: var(--brand);
  font: inherit;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
}

.data-library-load-more:hover {
  border-color: color-mix(in oklab, var(--brand) 45%, var(--border));
  background: color-mix(in oklab, var(--brand) 9%, transparent);
}

.data-library-load-more:focus-visible {
  outline: 2px solid var(--brand);
  outline-offset: 2px;
}

/* Drag-to-upload affordance frames the whole library so the ring's top edge sits
   above the sticky table header instead of being clipped behind it. */
.data-library-explorer.drag-active,
#project-assets-grid.drag-active {
  isolation: isolate;
}
.data-library-explorer.drag-active::after,
#project-assets-grid.drag-active::after {
  content: "Drop files to upload";
  position: absolute;
  inset: 4px;
  z-index: 60;
  display: grid;
  place-items: center;
  border: 2px dashed color-mix(in oklab, var(--brand) 62%, var(--border));
  border-radius: 12px;
  background: color-mix(in oklab, var(--brand) 10%, var(--bg) 90%);
  color: var(--brand);
  font-size: 14px;
  font-weight: 700;
  letter-spacing: .02em;
  pointer-events: none;
}
.data-library-main { border-radius: var(--radius); }
.data-library-main.drag-active {
  box-shadow: inset 0 0 0 2px color-mix(in oklab, var(--brand) 55%, transparent);
}
.data-library-main.drag-active .data-library-content { background: color-mix(in oklab, var(--brand) 6%, var(--surface)); }
/* Dim the existing rows so the drop affordance reads clearly while files are held. */
.data-library-main.drag-active .data-library-table tbody { opacity: .55; }

.data-library-bundle {
  display: grid;
  gap: 10px;
}

.data-library-bundle-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  font-size: 12px;
  color: var(--text-muted);
}

.data-library-type-pill {
  width: fit-content;
  max-width: 100%;
  min-height: 20px;
  border-radius: 6px;
  padding: 0 8px;
  display: inline-flex;
  align-items: center;
  background: color-mix(in oklab, var(--pill) 18%, transparent);
  color: var(--pill);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: .04em;
}

/* ── Flat sortable table ───────────────────────────────────────── */

.data-library-table {
  width: 100%;
  border-collapse: collapse;
  table-layout: fixed;
  font-size: 12px;
}

.data-library-content::-webkit-scrollbar:horizontal {
  height: 14px;
  background: var(--table-scroll-track);
}
.data-library-content::-webkit-scrollbar-track:horizontal {
  border-block: 1px solid var(--border);
  background: var(--table-scroll-track);
}
.data-library-content::-webkit-scrollbar-thumb:horizontal {
  min-width: 48px;
  border: 3px solid var(--table-scroll-track);
  border-radius: 999px;
  background: var(--table-scroll-thumb);
}
.data-library-content::-webkit-scrollbar-thumb:horizontal:hover { background: var(--brand); }

.data-library-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  text-align: left;
  vertical-align: middle;
  padding: 0;
  background: var(--surface);
  border-bottom: 1px solid var(--border);
}

.dl-th-btn {
  width: 100%;
  display: inline-flex;
  align-items: center;
  gap: 5px;
  border: 0;
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  cursor: pointer;
  padding: 9px 10px;
}

.dl-th-btn:hover { color: var(--text); }
.dl-th.is-sorted .dl-th-btn { color: var(--brand); }

.dl-sort-ind {
  font-size: 8px;
  line-height: 1;
  width: 8px;
}

/* Shared defaults. Individual project tables refine these below. */
.dl-th-select, .dl-cell-select      { width: 36px; text-align: center; }
.dl-th-name, .dl-th-title, .dl-cell-name { width: auto; }
.dl-th-size,   .dl-cell-size        { width: 110px; }
.dl-th-timestamp, .dl-cell-timestamp { width: 160px; color: var(--text-muted); }
.dl-th-uploaded, .dl-cell-uploaded  { width: 150px; }
.dl-th-type,   .dl-cell-type        { width: 88px; }
.dl-th-actions, .dl-cell-actions    { width: 152px; }

/* Project tables keep identity columns readable. Below each table's compact
   minimum width, .data-library-content provides horizontal scrolling instead
   of dropping columns. */
.data-project-table { min-width: 1360px; }
.data-project-table .dl-th-name,
.data-project-table .dl-cell-name { width: 300px; }
.data-project-table .dl-th-sample,
.data-project-table .dl-cell-sample { width: 180px; }
.data-project-table .dl-th-instrument,
.data-project-table .dl-cell-instrument { width: 220px; }
.data-project-table .dl-th-size,
.data-project-table .dl-cell-size { width: 80px; }
.data-project-table .dl-th-timestamp,
.data-project-table .dl-cell-timestamp { width: 160px; }
.data-project-table .dl-th-uploaded,
.data-project-table .dl-cell-uploaded { width: 160px; }
.data-project-table .dl-th-type,
.data-project-table .dl-cell-type { width: 92px; }
.data-project-table .dl-th-actions,
.data-project-table .dl-cell-actions { width: 128px; }

.project-asset-table { min-width: 860px; }
.project-asset-table .dl-th-name,
.project-asset-table .dl-cell-name { width: 360px; }
.project-asset-table .dl-th-group,
.project-asset-table .dl-cell-group { width: 160px; }
.project-asset-table .dl-th-size,
.project-asset-table .dl-cell-size { width: 72px; }
.project-asset-table .dl-th-updated,
.project-asset-table .dl-cell-updated,
.project-asset-table .dl-th-created,
.project-asset-table .dl-cell-created { width: 120px; }
.project-asset-table .dl-th-type,
.project-asset-table .dl-cell-type { width: 80px; }
.project-asset-table .dl-th-actions,
.project-asset-table .dl-cell-actions { width: 96px; }

.reference-table { min-width: 1100px; }
.reference-table .dl-th-title,
.reference-table .dl-cell-name { width: 320px; }
.reference-table .dl-th-authors,
.reference-table .dl-cell-authors { width: 210px; }
.reference-table .dl-th-year,
.reference-table .dl-cell-year { width: 64px; }
.reference-table .dl-th-journal,
.reference-table .dl-cell-journal { width: 150px; }
.reference-table .dl-th-updated,
.reference-table .dl-cell-updated { width: 120px; }
.reference-table .dl-th-type,
.reference-table .dl-cell-type { width: 64px; }
.reference-table .dl-th-actions,
.reference-table .dl-cell-actions { width: 96px; }

/* More horizontal breathing room per column on the data tab only (shared
   .data-library-table tables keep their tighter spacing). Both classes are on
   the same table — needed to outrank the later `.data-library-table td` rule. */
.data-library-table.data-project-table td { padding: 7px 14px; }
.data-project-table .dl-th-btn { padding: 9px 14px; }

/* Outrank `.data-library-table thead th { text-align: left }` so the select-all
   box centers in its column, matching the row checkboxes. */
.data-library-table thead th.dl-th-select { text-align: center; }

.dl-cell-select input,
.dl-th-select input { cursor: pointer; margin: 0; vertical-align: middle; }

.data-library-file-row.is-selected {
  background: color-mix(in oklab, var(--brand) 9%, var(--surface));
}

.data-library-file-row {
  border-bottom: 1px solid color-mix(in oklab, var(--border) 62%, transparent);
  transition: background .14s ease;
}

.data-library-file-row:hover {
  background: color-mix(in oklab, var(--brand) 4%, var(--surface));
}

.data-library-file-row.is-dragging { opacity: .45; }

/* Row whose metadata modal is currently open (file or bundle): tinted + a brand
   accent rail on the left so it stays findable behind the modal while up/down
   arrows move it. */
.data-library-file-row.is-meta-open,
.data-library-file-row.is-meta-open:hover,
.data-library-bundle-row.is-meta-open,
.data-library-bundle-row.is-meta-open:hover {
  background: color-mix(in oklab, var(--brand) 14%, var(--surface));
  box-shadow: inset 3px 0 0 0 var(--brand);
}

/* In-flight upload rows: muted, non-interactive, with a spinner in the actions cell. */
.data-library-file-row.is-uploading { color: var(--text-muted); }
.data-library-file-row.is-uploading .dl-cell-uploaded { font-style: italic; }
.dl-name-static {
  display: block;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.dl-instrument-muted { color: var(--text-muted); }
.dl-row-spinner {
  display: inline-block;
  width: 15px;
  height: 15px;
  border: 2px solid color-mix(in oklab, var(--brand) 30%, transparent);
  border-top-color: var(--brand);
  border-radius: 50%;
  animation: dl-spin .7s linear infinite;
  vertical-align: middle;
}
@keyframes dl-spin { to { transform: rotate(360deg); } }

.data-library-table td {
  padding: 7px 10px;
  vertical-align: middle;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text);
}

.project-asset-table .dl-cell-group,
.asset-table .dl-cell-group,
.project-reference-table td:nth-child(4),
.reference-table td:nth-child(4) {
  white-space: nowrap;
}

.project-asset-group-select,
.asset-table-group-select {
  max-width: 180px;
}

.project-asset-table-note {
  margin-top: 3px;
  font-size: 11px;
  line-height: 1.35;
  max-width: 52ch;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.project-asset-preview-modal,
.asset-table-preview-modal,
.reference-table-modal {
  width: min(1120px, calc(100vw - 32px));
}

.project-asset-preview-card,
.asset-table-preview-card {
  min-height: min(58vh, 620px);
  overflow: hidden;
}

.project-asset-preview-card .asset-preview-body,
.project-asset-preview-card .project-asset-preview-text-body,
.asset-table-preview-card .asset-preview-body,
.asset-table-preview-card .project-asset-preview-text-body {
  min-height: min(52vh, 560px);
}

.project-reference-table .project-reference-links,
.reference-table .project-reference-link {
  margin-left: 8px;
  font-size: 11px;
}

.reference-table-modal-body .reference-detail-shell {
  border: 0;
  box-shadow: none;
  padding: 0;
}

.dl-cell-instrument,
.dl-cell-size,
.dl-cell-uploaded { color: var(--text-muted); }

.dl-cell-instrument { overflow: visible; }

.data-project-table .dl-th-size,
.data-project-table .dl-cell-size {
  text-align: right;
  font-variant-numeric: tabular-nums;
}

.data-project-table .dl-th-size .dl-th-btn {
  justify-content: flex-end;
}

.data-project-table .data-library-file-row .dl-name-btn,
.data-project-table .data-library-file-row .dl-name-static {
  font-variant-numeric: tabular-nums;
}

.data-project-table .dl-name-cell-inner {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}

.data-project-table .dl-name-cell-inner .dl-name-btn,
.data-project-table .dl-name-cell-inner .dl-name-static {
  flex: 1 1 auto;
  min-width: 0;
}

.dl-instrument-select,
.dl-custom-instrument-input {
  width: 100%;
  max-width: 100%;
  font: inherit;
  font-weight: 400;
  color: var(--text);
  background: transparent;
  border: 1px solid transparent;
  border-radius: 6px;
  padding: 3px 6px;
  cursor: pointer;
  text-overflow: ellipsis;
}

.dl-instrument-select:hover,
.data-library-file-row:hover .dl-instrument-select {
  border-color: var(--border);
  background: var(--surface);
}

.dl-instrument-select:focus,
.dl-custom-instrument-input:focus {
  outline: none;
  border-color: var(--brand);
  background: var(--surface);
}

.dl-custom-instrument-input {
  cursor: text;
  border-color: var(--border);
  background: var(--surface);
}

/* Parse-state coloring of the instrument name. */
.dl-instrument-select.dl-instrument-parsing { color: #c08a1e; }
.dl-instrument-select.dl-instrument-error   { color: var(--danger); }

/* In-flight parse: the select is swapped for a slot-text label whose
   instrument name re-rolls on a cycle. Amber while parsing; when the parse
   settles the class drops and the colour eases back to the resting grey
   while the last roll finishes. */
.dl-instrument-roll {
  flex: 1 1 auto;
  min-width: 0;
  font: inherit;
  font-weight: 400;
  color: var(--text);
  transition: color 0.35s ease;
  padding: 3px 6px;
  overflow: hidden;
  white-space: nowrap;
}
.dl-instrument-roll.dl-instrument-parsing { color: #c08a1e; }

.dl-instrument-wrap {
  display: flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
}
.dl-instrument-wrap .dl-instrument-select { flex: 1 1 auto; min-width: 0; }

.dl-auto-btn {
  flex: 0 0 auto;
  opacity: .55;
}
.dl-auto-btn:hover { opacity: 1; color: var(--brand); }

/* Bulk action bar: height is always reserved (so the table never jumps); the
   controls only render once rows are selected. */
.data-library-bulk-bar {
  display: flex;
  align-items: center;
  gap: 8px;
  /* Fixed height in both states so populating it never shifts the table. */
  height: 44px;
  box-sizing: border-box;
  padding: 0 16px;
  border-bottom: 1px solid var(--border);
}
.data-library-toolbar-actions .data-library-bulk-bar {
  height: auto;
  padding: 0;
  border: 0;
  gap: 5px;
  min-width: 0;
  flex-wrap: wrap;
  justify-content: flex-end;
}
.dl-bulk-count {
  font-size: 12px;
  color: var(--text-muted);
  margin-right: 2px;
}

/* Match the page's standard control styling, sized like the smaller controls. */
.dl-bulk-instrument {
  font: inherit;
  font-size: 12px;
  height: 28px;
  padding: 0 8px;
  color: var(--text);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  cursor: pointer;
}

.dl-bulk-btn {
  font: inherit;
  font-size: 11px;
  min-height: 24px;
  padding: 3px 7px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text-muted);
  cursor: pointer;
  transition: background .12s, border-color .12s, color .12s;
}
.dl-bulk-btn:hover:not(:disabled) {
  background: var(--bg);
  color: var(--text);
}
.dl-bulk-btn-danger {
  border-color: color-mix(in oklab, var(--danger) 54%, var(--border));
  background: var(--danger-soft);
  color: var(--danger);
}
.dl-bulk-btn-danger:hover:not(:disabled) {
  background: color-mix(in oklab, var(--danger) 18%, var(--danger-soft));
  color: var(--danger);
}
.dl-bulk-clear { margin-left: auto; }

/* Always-visible bulk bar: count floats right, popover-based Bulk edit. */
.dl-bulkbar { overflow: visible; }
.dl-bulkbar .dl-bulk-count-right { margin-left: auto; margin-right: 0; }
.data-library-toolbar-actions .dl-bulkbar .dl-bulk-count-right {
  margin-left: 3px;
}
.dl-bulkbar .ms-cg-trigger { display: inline-flex; align-items: center; gap: 6px; }
.dl-bulkbar .ms-cg-trigger svg { width: 14px; height: 14px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; flex: 0 0 auto; }
/* No entrance animation here — the bar re-renders on each assign, and replaying
   the animation would flash. */
.dl-bulk-pop { animation: none; }

.dl-group-menu { position: relative; }
.dl-group-menu-pop {
  position: absolute;
  top: calc(100% + 4px);
  right: 0;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-elevated);
  z-index: 200;
  min-width: 160px;
  padding: 4px;
  display: flex;
  flex-direction: column;
}
.dl-group-menu-item {
  text-align: left;
  padding: 7px 12px;
  font: inherit;
  font-size: 13px;
  border: none;
  background: none;
  color: var(--text);
  cursor: pointer;
  border-radius: calc(var(--radius) - 2px);
  white-space: nowrap;
}
.dl-group-menu-item:hover:not(:disabled) { background: var(--bg); }
.dl-group-menu-item:disabled { color: var(--text-muted); cursor: default; }
.dl-group-menu-item-danger { color: var(--danger); }
.dl-group-menu-item-danger:hover:not(:disabled) { background: var(--danger-soft); }
.dl-group-menu-sep { height: 1px; background: var(--border); margin: 3px 4px; }

.dl-group-menu-item-flyout { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.dl-group-menu-chevron { font-size: 16px; line-height: 1; opacity: 0.6; }

.dl-group-flyout {
  position: fixed;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-elevated);
  z-index: 300;
  width: 220px;
  padding: 10px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.dl-gdf-header { font-weight: 600; font-size: 12px; color: var(--text-muted); text-transform: uppercase; letter-spacing: .04em; padding: 2px 4px; }
.dl-gdf-hint { font-size: 12px; color: var(--text-muted); padding: 0 4px; }
.dl-gdf-list { display: flex; flex-direction: column; }
.dl-gdf-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 6px 8px;
  font: inherit;
  font-size: 13px;
  border: none;
  background: none;
  color: var(--text);
  cursor: pointer;
  border-radius: calc(var(--radius) - 2px);
  text-align: left;
  width: 100%;
}
.dl-gdf-row:hover { background: var(--bg); }
.dl-gdf-row-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dl-gdf-row-count { font-size: 11px; color: var(--text-muted); flex-shrink: 0; }
.dl-gdf-confirm-name { font-weight: 600; font-size: 13px; color: var(--text); padding: 0 4px; }
.dl-gdf-input {
  width: 100%;
  box-sizing: border-box;
  font: inherit;
  font-size: 13px;
  padding: 6px 8px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  color: var(--text);
}
.dl-gdf-footer {
  display: flex;
  gap: 6px;
  border-top: 1px solid var(--border);
  padding-top: 8px;
}
.dl-gdf-back-btn {
  font: inherit; font-size: 13px; padding: 5px 10px;
  border: 1px solid var(--border); border-radius: var(--radius);
  background: none; color: var(--text-muted); cursor: pointer; flex-shrink: 0;
}
.dl-gdf-back-btn:hover { background: var(--bg); }
.dl-gdf-del-btn, .dl-gdf-save-btn {
  font: inherit; font-size: 13px; padding: 5px 10px;
  border-radius: var(--radius); cursor: pointer; flex: 1; text-align: center; transition: background .12s;
}
.dl-gdf-del-btn {
  border: 1px solid color-mix(in oklab, var(--danger) 40%, var(--border));
  background: none; color: var(--danger);
}
.dl-gdf-del-btn:hover:not(:disabled) { background: var(--danger-soft); }
.dl-gdf-save-btn {
  border: 1px solid var(--brand); background: none; color: var(--brand);
}
.dl-gdf-save-btn:hover:not(:disabled) { background: color-mix(in oklab, var(--brand) 10%, transparent); }
.dl-gdf-del-btn:disabled, .dl-gdf-save-btn:disabled { opacity: .5; cursor: default; }
.dl-gdf-error { font-size: 12px; color: var(--danger); padding: 0 4px; min-height: 0; }

.project-asset-entry-tab-none { opacity: 0.7; font-style: italic; }

.dl-cell-actions {
  text-align: right;
  overflow: visible;
}

.dl-name-btn {
  max-width: 100%;
  border: 0;
  background: transparent;
  padding: 0;
  font: inherit;
  font-weight: 400;
  color: var(--text);
  text-align: left;
  cursor: pointer;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  display: block;
}

.dl-name-btn:hover { color: var(--brand); }

.dl-actions {
  display: inline-flex;
  align-items: center;
  justify-content: flex-end;
  gap: 4px;
}

.dl-action-btn {
  display: inline-grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border: 1px solid transparent;
  border-radius: 6px;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  opacity: 0;
  transition: opacity .12s ease, background .12s ease, border-color .12s ease, color .12s ease;
}

.data-library-file-row .dl-action-btn,
.dl-action-btn:focus-visible { opacity: 1; }

.dl-action-btn:hover {
  border-color: var(--border);
  background: var(--surface);
  color: var(--brand);
}

.dl-action-btn[disabled] {
  opacity: 0;
  cursor: not-allowed;
}

.data-library-file-row:hover .dl-action-btn[disabled] {
  opacity: .3;
}

.dl-action-danger:hover {
  color: var(--danger, #b91c1c);
  border-color: color-mix(in oklab, var(--danger, #b91c1c) 40%, var(--border));
  background: var(--danger-soft, color-mix(in oklab, #b91c1c 10%, var(--surface)));
}

.dl-action-btn svg {
  width: 16px;
  height: 16px;
  stroke: currentColor;
  stroke-width: 1.7;
  fill: none;
}

/* ── Metadata modal ────────────────────────────────────────────── */

/* ============ Metadata modal (file + bundle): card-based sidebar + main ============ */
/* Compound selector outranks the later `.sample-modal { width; max-height }` base. */
.sample-modal.data-library-meta2 {
  width: min(1360px, calc(100vw - 48px));
  max-width: calc(100vw - 32px);
  height: min(900px, calc(100vh - 40px));
  max-height: calc(100vh - 32px);
  padding: 0;
  gap: 0;
  display: grid;
  grid-template-rows: auto minmax(0, 1fr) auto;
  background: var(--bg);
  border-radius: var(--radius);
  overflow: hidden;
}

/* --- Header --- */
.dl-meta2-header {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  min-height: 40px; box-sizing: border-box; padding: 10px 16px; background: var(--surface); border-bottom: 1px solid var(--border);
}
.dl-meta2-id { display: flex; align-items: center; min-width: 0; }
.dl-meta2-idtext { min-width: 0; display: flex; flex-direction: column; justify-content: center; gap: 2px; flex: 1 1 auto; }
.dl-meta2-title {
  margin: 0; min-width: 0; font-size: 15px; line-height: 19px; font-weight: 700; color: var(--text);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
input.dl-meta2-title {
  display: block; box-sizing: border-box; width: 100%; height: 19px; border: 1px solid transparent; border-radius: 7px;
  padding: 0 6px; margin-left: -6px; background: transparent; font: inherit; font-size: 15px; line-height: 17px; font-weight: 700;
}
input.dl-meta2-title:hover { border-color: var(--border); }
input.dl-meta2-title:focus { outline: none; border-color: var(--brand); background: var(--bg); }
.dl-meta2-headright { display: flex; align-items: center; gap: 12px; flex: 0 0 auto; }
.dl-meta2-headright .btn { height: 19px; padding: 1px 7px; font-size: 10px; line-height: 1; }
.dl-workbench-back-btn {
  width: 20px; height: 20px; padding: 0; border: 0; border-radius: 5px;
  background: transparent; color: var(--text-muted); font-family: inherit; font-size: 18px; line-height: 1; cursor: pointer;
}
.dl-workbench-back-btn:hover { background: var(--panel); color: var(--text); }
.dl-meta-status-dot { position: relative; display: inline-grid; place-items: center; flex: 0 0 auto; width: 18px; height: 18px; outline: none; }
.dl-meta-status-tooltip {
  position: absolute; top: 50%; left: calc(100% + 9px); z-index: 5;
  padding: 5px 11px; border-radius: 7px; background: #15171c; color: #f4f5f7;
  font-size: 11px; font-weight: 600; letter-spacing: .05em; line-height: 1.4; white-space: nowrap;
  opacity: 0; pointer-events: none; box-shadow: 0 4px 14px rgba(0, 0, 0, .28);
  transform: translateX(-4px) translateY(-50%); transition: opacity .13s ease, transform .16s cubic-bezier(.16, 1, .3, 1);
}
.dl-meta-status-tooltip::before {
  content: ""; position: absolute; top: 50%; left: -3px; width: 8px; height: 8px;
  border-radius: 2px; background: #15171c; transform: translateY(-50%) rotate(45deg);
}
.dl-meta-status-dot:hover .dl-meta-status-tooltip,
.dl-meta-status-dot:focus-visible .dl-meta-status-tooltip { opacity: 1; transform: translateX(0) translateY(-50%); }
.dl-meta-card-title-action { width: 100%; }
.dl-meta-card-title-action .dl-workbench-launch { margin-left: auto; padding: 2px 7px; font-size: 10px; line-height: 1.2; text-transform: none; letter-spacing: normal; }

/* --- Type icon box --- */
.dl-meta-iconbox {
  flex: 0 0 auto; display: inline-grid; place-items: center;
  width: 44px; height: 44px; border-radius: 11px;
  font-size: 11px; font-weight: 700; letter-spacing: .03em; text-transform: uppercase;
  color: var(--pill, var(--brand));
  background: color-mix(in oklab, var(--pill, var(--brand)) 16%, var(--surface));
  border: 1px solid color-mix(in oklab, var(--pill, var(--brand)) 30%, var(--border));
}
.dl-meta-iconbox-bundle { --pill: var(--brand); }
.dl-meta-iconbox svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.8; }

.dl-meta2-subtitle { font-size: 12px; color: var(--text-muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* --- Close --- */
.data-library-meta-close {
  flex: 0 0 auto; border: 0; background: transparent; color: var(--text-muted);
  font-size: 22px; line-height: 1; cursor: pointer; padding: 1px 5px; border-radius: 6px;
}
.data-library-meta-close:hover { color: var(--text); background: var(--panel); }

/* Plain modal header (used by the upload-detection modal). */
.data-library-meta-header {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding-bottom: 12px; border-bottom: 1px solid var(--border);
}
.data-library-meta-titlewrap { display: flex; align-items: center; gap: 10px; min-width: 0; }
.data-library-meta-titlewrap h3 { margin: 0; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* --- Body: sidebar + main; the body is the only scroll region --- */
.dl-meta2-body {
  min-height: 0; overflow: auto;
  display: grid; grid-template-columns: 290px minmax(0, 1fr); gap: 16px; padding: 18px;
}
.dl-meta-preview-host {
  min-height: 520px;
  height: 520px;
  width: 100%;
  display: flex;
}
.library-file-preview {
  min-height: 100%;
  width: 100%;
  display: flex;
}
.library-file-preview .meas-workspace-layout,
.library-file-preview .measurement-metadata-panel,
.library-file-preview .meas-info-box,
.library-file-preview .meas-sheet-grip {
  display: none !important;
}
.library-file-preview .meas-plot-shell {
  margin-top: 0;
  min-height: 100%;
  width: 100%;
  height: 100%;
  border: 0;
  box-shadow: none;
  border-radius: 0;
  background: transparent;
  display: flex;
  flex-direction: column;
}
.library-file-preview .meas-plot-shell.meas-preview-section { box-shadow: none; }
.library-file-preview .meas-preview-header {
  padding-left: 0;
  padding-right: 0;
  margin-left: 0;
  margin-right: 0;
}
.library-file-preview .meas-plot-stage {
  flex: 1 1 auto;
  min-height: 0;
  height: auto;
  padding: 0;
}
.library-file-preview .meas-plot-canvas,
.library-file-preview .meas-plot-empty {
  min-height: 0;
  height: 100%;
}
.dl-meta2-body-full { grid-template-columns: 1fr; }
.dl-meta2-side, .dl-meta2-main { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.dl-meta-plot-card { min-height: 0; padding: 0; gap: 0; overflow: hidden; }
@media (max-width: 880px) { .dl-meta2-body { grid-template-columns: 1fr; } }

/* --- Cards --- */
.dl-meta-card {
  background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius);
  padding: 14px 16px; display: flex; flex-direction: column; gap: 12px;
}
.dl-meta-card-title {
  display: flex; align-items: center; gap: 8px;
  font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--text-muted);
}
.dl-meta-card-title svg { width: 15px; height: 15px; fill: none; stroke: var(--brand); stroke-width: 1.8; }
.dl-meta-card-sub { text-transform: none; letter-spacing: 0; font-weight: 400; font-size: 11px; color: var(--text-muted); }

/* In-card controls (parse, per-file download/remove) are always visible here. */
.data-library-meta2 .dl-action-btn { opacity: 1; }
.data-library-meta2 .dl-action-btn[disabled] { opacity: .35; cursor: not-allowed; }
.data-library-meta2 .dl-bundle-instrument-select { border-color: var(--border); background: var(--surface); }

/* --- Sidebar detail rows --- */
.dl-meta-drows { display: flex; flex-direction: column; gap: 9px; }
.dl-meta-drow { display: flex; align-items: center; gap: 9px; font-size: 13px; }
.dl-meta-drow-ic { flex: 0 0 auto; display: inline-grid; place-items: center; color: var(--text-muted); }
.dl-meta-drow-ic svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.7; }
.dl-meta-drow-lab { color: var(--text-muted); }
.dl-meta-drow-val { margin-left: auto; text-align: right; color: var(--text); font-weight: 500; min-width: 0; }
.dl-meta-instrument-inline { width: min(170px, 100%); }

/* --- Footer --- */
.dl-meta2-foot {
  display: flex; align-items: center; gap: 8px;
  padding: 14px 20px; background: var(--surface); border-top: 1px solid var(--border);
}
.dl-meta2-foot-spacer { flex: 1 1 auto; }
.dl-meta2-foot .btn svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.8; vertical-align: -3px; margin-right: 5px; }
.dl-meta2-foot .btn.primary svg { stroke: #fff; }
.dl-meta-btn-danger { color: #fff; border-color: var(--danger); background: var(--danger); }
.dl-meta-btn-danger:hover { border-color: var(--danger); background: color-mix(in oklab, var(--danger) 88%, #000); }

/* Nested "Parsed summary" section sits flat inside the Extracted-data card. */
.data-library-meta-modal .data-library-detail-section { border: 0; border-radius: 0; background: transparent; padding: 0; margin: 6px 0 0; gap: 7px; overflow: visible; }
.data-library-meta-modal .data-library-detail-section-title { display: block; font-size: 11px; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; color: var(--text-muted); padding: 0; border: 0; }
.data-library-meta-modal .data-library-detail-row strong { font-weight: 500; }

.dl-meta-muted {
  color: var(--text-muted);
  font-size: 12px;
}

/* Two-column metadata form; textareas / explicitly-full fields (e.g. Notes) span
   the whole width. Collapses to one column on narrow screens. */
.dl-meta-fields {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  column-gap: 20px;
  row-gap: 14px;
}

.dl-meta-field {
  display: grid;
  gap: 4px;
  min-width: 0;
  align-content: start;
}

.dl-meta-field-full,
.dl-meta-field:has(textarea) {
  grid-column: 1 / -1;
}

.dl-meta-field-req { color: var(--danger); margin-left: 2px; }

@media (max-width: 880px) {
  .dl-meta-fields { grid-template-columns: 1fr; }
}

.dl-meta-field-label {
  font-size: 12px;
  font-weight: 500;
  color: var(--text);
}

.dl-meta-field-unit {
  font-weight: 400;
  color: var(--text-muted);
}

.dl-meta-field-hint {
  font-size: 11px;
  color: var(--text-muted);
}

.dl-meta-field-input {
  width: 100%;
  padding: 7px 10px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text);
  font: inherit;
  font-size: 13px;
  line-height: 1.4;
  transition: border-color .12s ease, box-shadow .12s ease;
}

.dl-meta-field-input::placeholder { color: var(--text-subtle, var(--text-muted)); opacity: .8; }

.dl-meta-field-input:focus {
  outline: none;
  border-color: var(--brand);
  box-shadow: 0 0 0 3px color-mix(in oklab, var(--brand) 18%, transparent);
}

textarea.dl-meta-field-input {
  resize: vertical;
  min-height: 70px;
}

select.dl-meta-field-input {
  cursor: pointer;
  appearance: auto;
}

/* Transient highlight on a file row when routed to it from another page. */
@keyframes nav-flash-pulse {
  0%   { background: color-mix(in oklab, var(--brand) 34%, transparent); box-shadow: 0 0 0 2px color-mix(in oklab, var(--brand) 50%, transparent); }
  100% { background: transparent; box-shadow: 0 0 0 2px transparent; }
}

.nav-flash {
  animation: nav-flash-pulse 2.2s ease-out;
  border-radius: 6px;
}

.data-library-detail-section-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 0 0 10px;
}

.data-library-meta-modal .data-library-detail-section-head .data-library-detail-section-title {
  padding: 0;
}

.dl-meta-save-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding-top: 2px;
}

.data-library-detail-section-head .dl-meta-save-row {
  padding-top: 0;
}

.dl-meta-save-status {
  font-size: 12px;
  color: var(--text-muted);
}

.dl-meta-org-list {
  display: grid;
  gap: 2px;
}

.dl-meta-org-item {
  display: flex;
  align-items: center;
  gap: 9px;
  min-width: 0;
  width: 100%;
  margin: 0 -6px;
  padding: 4px 6px;
  border: 0;
  border-radius: 6px;
  background: transparent;
  font: inherit;
  text-align: left;
  color: var(--text);
}

.dl-meta-org-item.is-nav {
  cursor: pointer;
  transition: background .12s ease;
}

.dl-meta-org-item.is-nav:hover {
  background: color-mix(in oklab, var(--brand) 10%, var(--surface));
}

.dl-meta-org-item.is-nav:hover .dl-meta-org-name {
  color: var(--brand);
}

/* Smaller balls than the experiment table, sized for this side column. */
.dl-meta-org-item .exp-member-chip {
  width: 18px;
  height: 18px;
  font-size: 9px;
  font-weight: 700;
}

.dl-meta-org-name {
  min-width: 0;
  font-size: 13px;
  font-weight: 400;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.dl-meta-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  justify-content: flex-end;
}

.dl-meta-chip {
  padding: 2px 9px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--surface-alt, var(--surface)) 60%, var(--bg));
  border: 1px solid var(--border);
  font-size: 12px;
  color: var(--text);
}

/* Parsed columns as scannable pale chips. */
.dl-meta-col-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
}

.dl-meta-col-pill {
  max-width: 100%;
  padding: 2px 8px;
  border-radius: 6px;
  background: color-mix(in oklab, var(--brand) 10%, var(--surface));
  border: 1px solid color-mix(in oklab, var(--brand) 22%, var(--border));
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 11px;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.data-library-empty-state {
  min-height: 240px;
  border: 1px dashed color-mix(in oklab, var(--brand) 30%, var(--border));
  border-radius: var(--radius);
  background: color-mix(in oklab, var(--surface) 86%, var(--bg));
  display: grid;
  align-content: center;
  justify-items: center;
  gap: 10px;
  text-align: center;
  padding: 22px;
}

/* When the content area only holds an empty state, stretch it to the full
   height of the panel and inset the dashed box from the toolbar and edges. */
.data-library-content:has(> .data-library-empty-state) {
  align-self: stretch;
  grid-template-rows: minmax(0, 1fr);
  padding: 14px;
}

.data-library-empty-state.drag-active {
  border-color: color-mix(in oklab, var(--brand) 58%, var(--border));
  background: color-mix(in oklab, var(--brand) 10%, var(--surface));
}

.data-library-empty-title {
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
}

.data-library-empty-copy {
  max-width: 420px;
  font-size: 12px;
}

.data-library-bulk-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 16px;
  border-top: 1px solid var(--border);
  background: color-mix(in oklab, var(--surface-alt, var(--surface)) 82%, var(--bg));
}

.data-library-bulk-label {
  color: var(--text);
  font-size: 12px;
  font-weight: 600;
}

.data-library-bulk-controls {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.data-library-detail {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  min-width: 0;
  overflow: hidden;
}

.data-library-detail-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 14px 16px;
  border-bottom: 1px solid var(--border);
  min-width: 0;
  box-sizing: border-box;
}

.data-library-detail-kicker {
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .05em;
  text-transform: uppercase;
  margin-bottom: 4px;
}

.data-library-detail-title {
  min-width: 0;
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.data-library-detail-close {
  border: 0;
  background: transparent;
  color: var(--text-muted);
  font-size: 18px;
  cursor: pointer;
}

.data-library-detail-body {
  min-height: 0;
  min-width: 0;
  overflow: auto;
  padding: 16px;
  display: grid;
  align-content: start;
  gap: 14px;
  box-sizing: border-box;
}

.data-library-detail-section {
  display: grid;
  min-width: 0;
  width: 100%;
  max-width: 100%;
  gap: 10px;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: color-mix(in oklab, var(--surface-alt, var(--surface)) 42%, transparent);
  box-sizing: border-box;
  overflow: hidden;
}

.data-library-detail-section-title {
  color: var(--text);
  font-size: 12px;
  font-weight: 600;
}

.data-library-detail-row {
  display: grid;
  min-width: 0;
  gap: 3px;
}

.data-library-detail-empty .data-library-detail-body {
  align-content: center;
}

.data-library-detail-row span {
  color: var(--text-muted);
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .04em;
  min-width: 0;
}

.data-library-detail-row strong {
  color: var(--text);
  font-size: 13px;
  min-width: 0;
  overflow-wrap: anywhere;
}

.data-library-detail-assign {
  display: grid;
  gap: 8px;
}

.data-library-detail-note {
  color: var(--text-muted);
  font-size: 12px;
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.data-library-detail-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.data-library-context-menu {
  position: fixed;
  z-index: 1001;
  min-width: 210px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
  box-shadow: 0 16px 40px color-mix(in oklab, var(--text) 18%, transparent);
  padding: 6px;
  display: grid;
  gap: 2px;
}

.data-library-context-item {
  position: relative;
  width: 100%;
  border: 0;
  background: transparent;
  color: var(--text);
  font: inherit;
  font-size: 12px;
  text-align: left;
  border-radius: 7px;
  padding: 8px 10px;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
}

.data-library-context-item:hover {
  background: color-mix(in oklab, var(--surface-alt, var(--surface)) 78%, var(--bg));
}

.data-library-context-item.danger {
  color: var(--danger);
}

.data-library-context-submenu {
  position: absolute;
  top: 0;
  left: calc(100% + 4px);
  min-width: 210px;
  display: none;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
  box-shadow: 0 16px 40px color-mix(in oklab, var(--text) 18%, transparent);
  padding: 6px;
  gap: 2px;
}

.data-library-context-item--submenu:hover .data-library-context-submenu {
  display: grid;
}

@media (max-width: 860px) {
	.data-library-workspace {
		grid-template-columns: minmax(150px, 28vw) minmax(0, 1fr);
	}

	.data-library-workspace.folders-collapsed {
		grid-template-columns: 38px minmax(0, 1fr);
	}

  .data-library-toolbar,
  .data-library-bulk-bar {
    flex-direction: column;
    align-items: stretch;
  }

  .data-library-toolbar-actions,
  .data-library-bulk-controls {
    width: 100%;
  }

}

.sample-section-hd h3,
.sample-modal h3 {
  margin: 0;
}

.sample-modal h3 {
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
}

.sample-detail-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.sample-measurements,
.sample-plot-section {
  display: block;
}

.sample-measurement-list,
.sample-bucket-list,
.sample-batches,
.sample-file-list,
.sample-plot-stack {
  display: grid;
  gap: 10px;
}

.sample-batch-title,
.sample-picker-run span {
  color: var(--muted);
  font-size: 12px;
}

.sample-plot-status {
  min-height: 18px;
  color: var(--muted);
  font-size: 12px;
}

.sample-plot-card {
  min-height: 340px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  padding: 8px;
}

.sample-plot-placeholder {
  min-height: 320px;
  display: grid;
  place-items: center;
  color: var(--muted);
  text-align: center;
}

.sample-modal-overlay {
  position: fixed;
  inset: 0;
  z-index: 1000;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--overlay);
}

.dl-modal-stack {
  position: relative;
  width: min(1360px, calc(100vw - 48px));
  height: min(900px, calc(100vh - 40px));
  display: flex;
  align-items: center;
  justify-content: center;
}

.dl-modal-stack-nav {
  position: absolute;
  top: -14px;
  left: 50%;
  z-index: 4;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 6px 8px;
  border: 1px solid color-mix(in oklab, var(--border) 82%, transparent);
  border-radius: 999px;
  background: color-mix(in oklab, var(--surface) 92%, transparent);
  box-shadow: var(--shadow-elevated);
  transform: translateX(-50%);
  backdrop-filter: blur(12px);
}

.dl-modal-stack-arrow {
  width: 32px;
  height: 32px;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  font-size: 18px;
  cursor: pointer;
  transition: background .18s ease, color .18s ease, transform .18s ease;
}

.dl-modal-stack-arrow:hover {
  background: color-mix(in oklab, var(--brand) 10%, var(--surface));
  color: var(--brand);
}

.dl-modal-stack-deck {
  display: flex;
  justify-content: center;
  width: 100%;
  height: 100%;
}

.sample-modal {
  width: 380px;
  max-width: calc(100vw - 48px);
  max-height: min(720px, calc(100vh - 40px));
  display: flex;
  flex-direction: column;
  gap: 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  padding: 24px;
  box-shadow: var(--shadow-elevated);
}

.sample-file-modal,
.sample-bucket-modal {
  width: min(680px, calc(100vw - 48px));
}

.sample-modal header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}

.sample-modal-search {
  width: 100%;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  color: var(--text);
  padding: 7px 10px;
}

.sample-modal-field,
.sample-file-picker-controls {
  display: grid;
  gap: 6px;
}

.sample-modal-field input,
.sample-modal-field select,
.sample-file-picker-controls input,
.sample-file-picker-controls select {
  width: 100%;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  color: var(--text);
  padding: 7px 10px;
  font: inherit;
  font-size: 13px;
  outline: none;
  box-sizing: border-box;
}

.sample-modal-field input:focus,
.sample-modal-field select:focus,
.sample-file-picker-controls input:focus,
.sample-file-picker-controls select:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--focus-ring);
}

.sample-modal-field {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-muted);
}

.sample-file-picker-controls {
  grid-template-columns: minmax(160px, 1fr) minmax(120px, 180px) minmax(180px, 1fr);
}

.sample-modal-list {
  min-height: 0;
  overflow: auto;
  display: grid;
  gap: 8px;
}

.sample-link-option {
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text);
  text-align: left;
  padding: 10px 12px;
  display: grid;
  gap: 4px;
  cursor: pointer;
}

.sample-link-option:hover:not(:disabled) {
  background: color-mix(in oklab, var(--brand) 8%, var(--surface));
}

.sample-link-option:disabled {
  opacity: 0.6;
  cursor: default;
}

.sample-link-option span {
  color: var(--muted);
  font-size: 12px;
}

.sample-picker-run {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 8px 2px 2px;
}

.sample-btn-move {
  display: flex;
  align-items: center;
  justify-content: center;
  background: none;
  border: none;
  cursor: pointer;
  padding: 3px;
  color: var(--text-muted);
  border-radius: var(--radius);
  transition: background .1s, color .1s;
  line-height: 1;
}

.sample-btn-move:hover:not(:disabled) {
  background: var(--border);
  color: var(--text);
}

.sample-btn-move:disabled {
  opacity: 0.3;
  cursor: default;
}

.sample-btn-move svg {
  width: 14px;
  height: 14px;
  stroke: currentColor;
  fill: none;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  display: block;
}

.sample-modal .btn,
.sample-btn-danger {
  font: inherit;
  font-size: 13px;
  padding: 6px 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text-muted);
  cursor: pointer;
  transition: background .12s, border-color .12s, color .12s, transform .12s;
}

.sample-modal .btn:hover:not(:disabled) {
  background: var(--bg);
  color: var(--text);
}

.sample-modal .btn.primary {
  border-color: var(--brand);
  background: var(--brand);
  color: #fff7f2;
}

.sample-modal .btn.primary:hover:not(:disabled) {
  border-color: var(--brand-strong);
  background: var(--brand-strong);
  transform: translateY(-1px);
}

.sample-btn-danger {
  border-color: color-mix(in oklab, var(--danger) 54%, var(--border));
  background: var(--danger-soft);
  color: var(--danger);
}

.sample-btn-danger:hover:not(:disabled) {
  background: color-mix(in oklab, var(--danger) 18%, var(--danger-soft));
  color: var(--danger);
}

.sample-modal .btn:disabled,
.sample-btn-danger:disabled {
  opacity: 0.45;
  cursor: default;
}

/* Modal status line */
.sample-modal-status {
  min-height: 1.2em;
  font-size: 12px;
  color: var(--text-muted);
  padding: 2px 0 4px;
}

.sample-modal-status.error {
  color: #e05252;
}

.sample-modal p {
  margin: 0;
  font-size: 13px;
  line-height: 1.5;
  color: var(--text-muted);
}

.sample-modal-filename {
  font-size: 12px;
  color: var(--text-muted);
  margin: -4px 0 10px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Danger modal accent */
.sample-modal-danger h3 {
  color: var(--danger);
}

@media (max-width: 900px) {
  .samples-layout {
    grid-template-columns: 1fr;
  }

  .samples-list {
    max-height: 280px;
    border-right: 0;
    border-bottom: 1px solid var(--border);
  }

  .sample-file-picker-controls {
    grid-template-columns: 1fr;
  }
}

#panel-assets {
  padding: 0;
  display: flex;
  overflow: hidden;
  position: relative;
}

#panel-assets #project-assets-grid {
  flex: 1;
  min-height: 0;
  position: relative;
  display: flex;
  flex-direction: column;
  padding-block: 24px 20px;
  padding-inline: var(--page-content-gutter);
  box-sizing: border-box;
}

#panel-assets .project-assets-header {
  display: none;
}

#panel-assets .project-assets-section {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
}

#panel-assets .project-section-body {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
}

#panel-assets .data-library-main {
  flex: 1;
  min-height: 0;
}

#panel-references {
  padding: 0;
  display: flex;
  overflow: hidden;
  position: relative;
}

#panel-assets.project-table-list-panel,
#panel-references.project-table-list-panel {
  display: block;
  overflow-y: auto;
  padding-block: 0;
  padding-inline: var(--page-content-gutter);
  position: relative;
  box-sizing: border-box;
}

#panel-data-library .data-library-explorer,
#panel-assets.project-table-list-panel .data-library-explorer,
#panel-references.project-table-list-panel .data-library-explorer {
  min-height: 0;
  padding-inline: 0;
}

.assets-layout {
  display: flex;
  width: 100%;
  min-height: 0;
}

.references-layout {
  display: flex;
  width: 100%;
  min-height: 0;
}

#assets-list {
  width: 320px;
  flex-shrink: 0;
  background: var(--surface);
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  transition: width 300ms cubic-bezier(0.16, 1, 0.3, 1), border-color 300ms;
}
#assets-list.list-hidden {
  width: 0;
  border-right-color: transparent;
}

#references-list {
  width: 320px;
  flex-shrink: 0;
  background: var(--surface);
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  transition: width 300ms cubic-bezier(0.16, 1, 0.3, 1), border-color 300ms;
}
#references-list.list-hidden {
  width: 0;
  border-right-color: transparent;
}

#assets-list-hd {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 14px;
  height: 44px;
  flex-shrink: 0;
  border-bottom: 1px solid var(--border);
}

#references-list-hd {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 0 14px;
  height: 44px;
  flex-shrink: 0;
  border-bottom: 1px solid var(--border);
}

#assets-list-hd span {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}

#references-list-hd span {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}

#assets-upload-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: none;
  font-size: 16px;
  line-height: 1;
  color: var(--text-muted);
  cursor: pointer;
  transition: background .12s, color .12s;
}

#references-new-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: none;
  font-size: 16px;
  line-height: 1;
  color: var(--text-muted);
  cursor: pointer;
  transition: background .12s, color .12s;
}

#assets-upload-btn:hover {
  background: var(--bg);
  color: var(--text);
}

#references-new-btn:hover {
  background: var(--bg);
  color: var(--text);
}

.asset-header-btn {
  height: 26px;
  padding: 0 8px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: none;
  font: inherit;
  font-size: 11px;
  color: var(--text-muted);
  cursor: pointer;
  transition: background .12s, color .12s;
}

.asset-header-btn:hover {
  background: var(--bg);
  color: var(--text);
}

#assets-list-body {
  flex: 1;
  overflow-y: auto;
  padding: 10px;
  background: color-mix(in oklab, var(--surface) 70%, var(--panel));
}

#references-list-body {
  flex: 1;
  overflow-y: auto;
}

#references-list-body.references-import-dropzone {
  position: relative;
}

#references-list-body.references-import-dropzone.drag-over {
  background: color-mix(in oklab, var(--brand) 6%, var(--bg));
  box-shadow: inset 0 0 0 2px color-mix(in oklab, var(--brand) 22%, var(--panel-strong));
}

#references-drop-hint {
  padding: 10px 16px;
  border-bottom: 1px solid var(--border);
  font-size: 11px;
  color: var(--text-muted);
}

.asset-group-block {
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  overflow: hidden;
  box-shadow: 0 1px 2px color-mix(in oklab, #000 5%, transparent);
}

.asset-group-block + .asset-group-block {
  margin-top: 10px;
}

.asset-group-block.drop-target,
.asset-group-block.asset-move-target {
  background: color-mix(in oklab, var(--brand) 6%, var(--bg));
  box-shadow: inset 0 0 0 2px color-mix(in oklab, var(--brand) 22%, var(--panel-strong));
}

.asset-group-block.asset-move-target .asset-group-header {
  background: color-mix(in oklab, var(--brand) 12%, var(--surface));
}

.asset-group-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
  padding: 11px 12px;
  background: color-mix(in oklab, var(--surface) 78%, var(--panel));
  border-bottom: 1px solid var(--border);
}

.asset-group-header-main {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}

.asset-group-title-line {
  display: flex;
  align-items: center;
  min-width: 0;
}

.asset-group-header-main strong {
  font-size: 12px;
  font-weight: 700;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.asset-group-subtitle,
.asset-group-count {
  font-size: 11px;
  color: var(--text-muted);
}

.asset-group-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 6px;
  flex-shrink: 0;
}

.asset-action-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  border: 1px solid transparent;
  border-radius: 5px;
  background: transparent;
  color: var(--text-muted);
  padding: 0;
  cursor: pointer;
  transition: background .12s, border-color .12s, color .12s;
}

.asset-action-btn:hover {
  background: var(--bg);
  border-color: var(--border);
  color: var(--text);
}

.asset-action-btn svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.asset-group-empty {
  padding: 14px 16px;
  font-size: 12px;
  color: var(--text-muted);
  border: 1px dashed color-mix(in oklab, var(--border) 80%, var(--text-muted));
  border-radius: 6px;
  margin: 10px;
  text-align: center;
  background: color-mix(in oklab, var(--surface) 72%, var(--panel));
}

.asset-row {
  display: grid;
  grid-template-columns: 34px minmax(0, 1fr) 14px;
  align-items: center;
  gap: 10px;
  width: 100%;
  min-height: 66px;
  padding: 10px 11px;
  border: none;
  border-bottom: 1px solid var(--border);
  background: none;
  text-align: left;
  cursor: pointer;
  transition: background .1s, opacity .12s, transform .12s;
}

.reference-row {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  width: 100%;
  min-height: 96px;
  padding: 12px 16px;
  border: none;
  border-bottom: 1px solid var(--border);
  background: none;
  text-align: left;
  cursor: pointer;
  transition: background .1s;
}

.asset-row:hover,
.asset-row.active {
  background: var(--bg);
}

.asset-row[draggable="true"] {
  cursor: grab;
}

.asset-row[draggable="true"]:active {
  cursor: grabbing;
}

.asset-row.asset-row-dragging,
.asset-row.drag-sort-ghost {
  opacity: 0.45;
  transform: scale(0.985);
}

.asset-drag-active .asset-group-block:not(.asset-move-target) {
  transition: opacity .12s, box-shadow .12s, background .12s;
}

.asset-row-type {
  width: 34px;
  height: 34px;
  border: 1px solid var(--border);
  border-radius: 7px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: color-mix(in oklab, var(--surface) 70%, var(--panel));
  color: var(--text-muted);
  font-size: 9px;
  font-weight: 800;
  letter-spacing: .02em;
}

.asset-row-main {
  min-width: 0;
}

.asset-row-grip {
  color: var(--text-muted);
  font-size: 13px;
  line-height: 1;
  opacity: 0.55;
}

.asset-row:hover .asset-row-grip {
  opacity: 1;
}

.reference-row:hover,
.reference-row.active {
  background: var(--bg);
}

.asset-row strong {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.reference-row strong {
  display: block;
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.reference-row-meta {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
  margin-top: 4px;
  min-width: 0;
  overflow: hidden;
}

.reference-row-meta .badge {
  max-width: 100%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.asset-row-description {
  margin-top: 6px;
  font-size: 12px;
  line-height: 1.35;
  color: var(--text-muted);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.reference-row-description {
  margin-top: 8px;
  font-size: 12px;
  line-height: 1.5;
  color: var(--text-muted);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

#assets-detail {
  flex: 1;
  overflow-y: auto;
  padding-block: 24px;
  padding-inline: var(--detail-content-gutter);
  background: color-mix(in oklab, var(--surface) 76%, var(--panel));
  position: relative;
}

#references-detail {
  flex: 1;
  overflow-y: auto;
  padding-block: 24px;
  padding-inline: var(--detail-content-gutter);
  background: color-mix(in oklab, var(--surface) 76%, var(--panel));
  position: relative;
}

.asset-detail-empty {
  display: flex;
  min-height: 100%;
  align-items: center;
  justify-content: center;
}

.asset-detail-shell {
  min-height: 100%;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.asset-detail-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--border);
}

.asset-detail-title-block {
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr);
  align-items: start;
  gap: 12px;
  min-width: 0;
}

.asset-detail-type {
  width: 46px;
  height: 46px;
  border: 1px solid var(--border);
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--surface);
  color: var(--text-muted);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .02em;
}

.asset-detail-title-main {
  min-width: 0;
}

.asset-detail-title {
  margin: 0;
  color: var(--text);
  font-size: 22px;
  font-weight: 650;
  line-height: 1.18;
  overflow-wrap: anywhere;
}

.asset-detail-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 9px;
}

.asset-detail-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 7px;
  flex-shrink: 0;
}

.asset-detail-hint {
  margin-top: -4px;
  font-size: 12px;
  color: var(--text-muted);
}

.asset-format-badge {
  font-weight: 700;
}

.asset-format-badge-code {
  color: #c2410c;
  border-color: color-mix(in oklab, #c2410c 28%, var(--border));
  background: color-mix(in oklab, #c2410c 10%, var(--surface));
}

.asset-format-badge-data {
  color: #0f766e;
  border-color: color-mix(in oklab, #0f766e 28%, var(--border));
  background: color-mix(in oklab, #0f766e 10%, var(--surface));
}

.asset-format-badge-markup {
  color: #1d4ed8;
  border-color: color-mix(in oklab, #1d4ed8 28%, var(--border));
  background: color-mix(in oklab, #1d4ed8 10%, var(--surface));
}

.asset-format-badge-text {
  color: #475569;
  border-color: color-mix(in oklab, #475569 22%, var(--border));
  background: color-mix(in oklab, #475569 8%, var(--surface));
}

.asset-format-badge-notebook {
  color: #7c3aed;
  border-color: color-mix(in oklab, #7c3aed 28%, var(--border));
  background: color-mix(in oklab, #7c3aed 10%, var(--surface));
}

.asset-format-badge-image {
  color: #047857;
  border-color: color-mix(in oklab, #047857 28%, var(--border));
  background: color-mix(in oklab, #047857 10%, var(--surface));
}

.asset-format-badge-pdf {
  color: var(--danger);
  border-color: color-mix(in oklab, #b91c1c 28%, var(--border));
  background: color-mix(in oklab, #b91c1c 10%, var(--surface));
}

.asset-detail-action-btn {
  width: 32px;
  height: 32px;
  border: 1px solid var(--border);
  border-radius: 7px;
  background: var(--surface);
  color: var(--text-muted);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
  cursor: pointer;
  transition: background .12s, color .12s, border-color .12s;
}

.asset-detail-action-btn:hover {
  background: var(--bg);
  color: var(--text);
}

.asset-detail-action-btn.danger:hover {
  border-color: color-mix(in oklab, var(--danger) 32%, var(--border));
  color: var(--danger);
  background: color-mix(in oklab, var(--danger) 7%, var(--surface));
}

.asset-detail-action-btn svg {
  width: 16px;
  height: 16px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.asset-preview-card {
  width: 100%;
  min-height: 420px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}

.asset-preview-card-text,
.asset-preview-card-notebook {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  justify-content: flex-start;
}

.asset-preview-card-reading {
  border-color: color-mix(in oklab, var(--border) 88%, #64748b);
  background: linear-gradient(180deg, color-mix(in oklab, var(--surface) 94%, #94a3b8 6%), var(--surface));
}

.asset-preview-card-editing {
  border-color: color-mix(in oklab, #145ea8 40%, var(--border));
  box-shadow: 0 0 0 1px color-mix(in oklab, #145ea8 22%, transparent), 0 16px 32px color-mix(in oklab, #145ea8 10%, transparent);
  background: linear-gradient(180deg, color-mix(in oklab, var(--surface) 90%, #dbeafe 10%), var(--surface));
}

.asset-preview-card-pdf {
  background: var(--canvas-bg);
}

.asset-preview-status {
  font-size: 13px;
  color: var(--text-muted);
}

.asset-preview-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--border);
  background: color-mix(in oklab, var(--surface) 90%, var(--bg));
}

.asset-preview-card-reading .asset-preview-toolbar {
  background: color-mix(in oklab, var(--surface) 85%, #e2e8f0 15%);
}

.asset-preview-card-editing .asset-preview-toolbar {
  background: linear-gradient(180deg, color-mix(in oklab, #dbeafe 42%, var(--surface)), color-mix(in oklab, #bfdbfe 22%, var(--surface)));
  border-bottom-color: color-mix(in oklab, #145ea8 24%, var(--border));
}

.asset-preview-toolbar strong {
  display: block;
  font-size: 13px;
  color: var(--text);
}

.asset-preview-toolbar-meta {
  margin-top: 4px;
  font-size: 12px;
  color: var(--text-muted);
}

.asset-preview-toolbar-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.asset-preview-toolbar-btn {
  height: 30px;
  padding: 0 12px;
  border: 1px solid var(--border);
  border-radius: 7px;
  background: var(--surface);
  color: var(--text);
  font-size: 12px;
  cursor: pointer;
}

.asset-preview-toolbar-btn:hover {
  background: var(--bg);
}

.asset-preview-toolbar-btn.primary {
  background: #145ea8;
  border-color: #145ea8;
  color: #fff;
}

.asset-preview-toolbar-btn.primary:hover {
  background: #0f4f94;
  border-color: #0f4f94;
}

.asset-preview-toolbar-btn:disabled {
  opacity: .55;
  cursor: default;
}

.asset-preview-image {
  display: block;
  max-width: 100%;
  max-height: 72vh;
  object-fit: contain;
}

.asset-preview-frame {
  width: 100%;
  min-height: 72vh;
  border: none;
  background: var(--canvas-bg);
}

.asset-preview-text {
  width: 100%;
  min-height: 420px;
  padding: 18px;
  overflow: auto;
  background: transparent;
  color: var(--text);
  font: 12px/1.6 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  white-space: pre-wrap;
}

.asset-preview-card-reading .asset-preview-text {
  background: linear-gradient(180deg, color-mix(in oklab, var(--surface) 94%, #f8fafc 6%), color-mix(in oklab, var(--surface) 98%, #cbd5e1 2%));
}

.asset-preview-code-host,
.asset-preview-editor-host,
.asset-notebook-code-host,
.asset-notebook-output-host {
  width: 100%;
  min-height: 420px;
}

.asset-notebook-code-host {
  min-height: 120px;
}

.asset-notebook-output-host {
  min-height: 0;
}

.asset-preview-editor {
  width: 100%;
  min-height: 420px;
  border: none;
  resize: vertical;
  padding: 18px;
  background: color-mix(in oklab, #eff6ff 50%, var(--surface));
  color: var(--text);
  font: 12px/1.6 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  white-space: pre;
  tab-size: 4;
  caret-color: #145ea8;
}

.asset-preview-editor:focus {
  outline: none;
}

.asset-notebook-preview {
  display: flex;
  flex-direction: column;
  gap: 14px;
  padding: 16px;
}

.asset-notebook-markdown {
  padding: 14px;
}

.asset-notebook-markdown > :first-child {
  margin-top: 0;
}

.asset-notebook-markdown > :last-child {
  margin-bottom: 0;
}

.asset-notebook-cell {
  border: 1px solid var(--border);
  border-radius: 8px;
  background: color-mix(in oklab, var(--surface) 92%, var(--bg));
  overflow: hidden;
}

.asset-notebook-cell-hd {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  border-bottom: 1px solid var(--border);
  background: color-mix(in oklab, #cbd5e1 26%, var(--surface));
}

.asset-notebook-cell-kind {
  font-size: 11px;
  letter-spacing: .02em;
  text-transform: uppercase;
  color: var(--text-muted);
}

.asset-notebook-cell-actions {
  display: flex;
  align-items: center;
  gap: 8px;
}

.asset-static-code-block {
  margin: 0;
  padding: 14px;
  overflow: auto;
  background: color-mix(in oklab, var(--surface) 96%, var(--bg));
  color: var(--text);
  font: 12px/1.6 ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  white-space: pre;
  tab-size: 4;
}

.asset-static-code-block code {
  display: block;
  font: inherit;
}

.asset-preview-static-code-block {
  min-height: 420px;
}

.asset-static-code-block .tok-keyword,
.asset-static-code-block .tok-modifier {
  color: #7c3aed;
}

.asset-static-code-block .tok-string,
.asset-static-code-block .tok-special.tok-string {
  color: #0f766e;
}

.asset-static-code-block .tok-number,
.asset-static-code-block .tok-bool,
.asset-static-code-block .tok-null {
  color: #b45309;
}

.asset-static-code-block .tok-comment {
  color: #64748b;
  font-style: italic;
}

.asset-static-code-block .tok-variableName,
.asset-static-code-block .tok-name {
  color: var(--text);
}

.asset-static-code-block .tok-propertyName,
.asset-static-code-block .tok-labelName,
.asset-static-code-block .tok-attributeName {
  color: #145ea8;
}

.asset-static-code-block .tok-typeName,
.asset-static-code-block .tok-className,
.asset-static-code-block .tok-definitionKeyword {
  color: var(--danger);
}

.asset-static-code-block .tok-operator,
.asset-static-code-block .tok-punctuation,
.asset-static-code-block .tok-bracket {
  color: #475569;
}

.asset-static-code-block .tok-meta {
  color: #0f766e;
}

[data-asset-preview-slot] {
  display: block;
  width: 100%;
}

.asset-notes-card {
  width: 100%;
  margin-top: 0;
}

.reference-detail-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-top: 22px;
}

.reference-detail-status {
  padding: 0;
  margin-top: 8px;
}

.reference-detail-shell {
  min-height: 100%;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.reference-detail-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  padding-bottom: 16px;
  border-bottom: 1px solid var(--border);
}

.reference-detail-title-block {
  display: grid;
  grid-template-columns: 46px minmax(0, 1fr);
  align-items: start;
  gap: 12px;
  min-width: 0;
}

.reference-detail-type {
  width: 46px;
  height: 46px;
  border: 1px solid var(--border);
  border-radius: 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--surface);
  color: var(--text-muted);
  font-size: 10px;
  font-weight: 800;
  letter-spacing: .02em;
}

.reference-detail-title-main {
  min-width: 0;
}

.reference-detail-title {
  margin: 0;
  color: var(--text);
  font-size: 22px;
  font-weight: 650;
  line-height: 1.18;
  overflow-wrap: anywhere;
}

.reference-detail-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 9px;
}

.reference-detail-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 7px;
  flex-shrink: 0;
}

.reference-detail-card {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  padding: 14px;
}

.reference-link-btn {
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.reference-delete-btn:hover {
  color: #dc2626;
}

.reference-notes-card {
  width: 100%;
  margin-top: 0;
}

.reference-form-card {
  width: min(680px, calc(100vw - 32px));
}

.reference-form-grid {
  display: flex;
  flex-direction: column;
  gap: 0;
  margin-top: 12px;
}

.reference-form-row {
  grid-template-columns: 120px minmax(0, 1fr);
}

.reference-form-doi-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 10px;
  align-items: end;
}

.reference-form-doi-input {
  min-width: 0;
}

.reference-doi-btn {
  height: 35px;
}

.reference-form-status {
  margin-top: -8px;
  margin-bottom: 8px;
}

.asset-group-picker-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
  margin: 12px 0 8px;
}

.asset-group-picker-option {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  cursor: pointer;
  background: var(--surface);
}

.asset-group-picker-option:hover {
  background: var(--bg);
}

.asset-group-picker-option input {
  margin: 0;
}

.asset-group-picker-option span {
  font-size: 13px;
  color: var(--text);
}

@media (max-width: 960px) {
  .assets-layout {
    flex-direction: column;
  }

  .references-layout {
    flex-direction: column;
  }

  #assets-list {
    width: 100%;
    border-right: none;
    border-bottom: 1px solid var(--border);
    max-height: 44vh;
  }

  #references-list {
    width: 100%;
    border-right: none;
    border-bottom: 1px solid var(--border);
    max-height: 44vh;
  }

  #assets-detail {
    padding: 20px;
  }

  .asset-detail-header {
    flex-direction: column;
    align-items: stretch;
  }

  .asset-detail-actions {
    justify-content: flex-start;
  }

  .measurement-detail-header {
    flex-direction: column;
    align-items: stretch;
  }

  .measurement-detail-actions {
    justify-content: flex-start;
  }

  #references-detail {
    padding: 20px;
  }

  .reference-detail-grid {
    grid-template-columns: 1fr;
  }

  .reference-detail-header {
    flex-direction: column;
    align-items: stretch;
  }

  .reference-detail-actions {
    justify-content: flex-start;
  }

  .reference-form-row {
    grid-template-columns: 1fr;
  }
}

#meas-list {
  width: 300px;
  flex-shrink: 0;
  margin: 24px 10px 10px;
  background: var(--meas-list-surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  transition: width 300ms cubic-bezier(0.16, 1, 0.3, 1), border-color 300ms;
}
#meas-list.list-hidden {
  width: 0;
  border-color: transparent;
}
#meas-list.drawer-managed,
#meas-list.drawer-managed.list-hidden {
  width: var(--drawer-w, 248px);
  transition: width 300ms cubic-bezier(0.16, 1, 0.3, 1), border-color 300ms, background-color 300ms;
}
#panel-measurements.drawer-resizable #meas-list.list-hidden {
  border-color: var(--border);
}

#meas-list-hd {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  gap: 6px;
  padding: 8px 10px;
  min-height: 38px;
  flex-shrink: 0;
  background: #ffffff;
  border-bottom: 1px solid var(--border);
}

.meas-list-head-title {
  color: var(--text-muted);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
}

#panel-measurements.drawer-resizable #meas-list-hd {
  padding-inline: calc(var(--drawer-t, 1) * 8px);
  width: max(var(--drawer-list-max, 248px), var(--drawer-w, 248px));
  justify-content: center;
  position: relative;
  transition: padding 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

body.theme-slate #meas-list-hd,
body.theme-slate #exp-list-hd,
body.theme-mocha #meas-list-hd,
body.theme-mocha #exp-list-hd,
body.theme-dark-orange #meas-list-hd,
body.theme-dark-orange #exp-list-hd,
body.theme-light-vivid #meas-list-hd,
body.theme-light-vivid #exp-list-hd {
  background: #ffffff;
}

#meas-list-hd .meas-list-title {
  display: block;
  width: 100%;
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
  line-height: 1.2;
  text-align: center;
  text-transform: uppercase;
}

#panel-measurements.drawer-resizable #meas-list-hd > .meas-list-title {
  overflow: hidden;
  max-width: calc(120px * var(--drawer-t, 1));
  opacity: clamp(0, calc(var(--drawer-t, 1) * 2.1 - 0.25), 1);
  transform: translateX(calc((1 - var(--drawer-t, 1)) * -6px));
  transition: opacity 180ms ease, transform 220ms cubic-bezier(0.16, 1, 0.3, 1), max-width 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

.exp-list-tools,
.meas-list-tools {
  display: flex;
  align-items: center;
  gap: 8px;
}

#meas-list-hd .meas-list-tools {
  width: 100%;
  justify-content: space-evenly;
  gap: 0;
}

#meas-list-hd #meas-search-wrap {
  order: 4;
}

#panel-measurements.drawer-resizable .meas-list-tools {
  position: relative;
  width: 100%;
  margin-left: 0;
  padding-left: 30px;
  gap: calc(8px * var(--drawer-t, 1));
  transform: none;
  transition: gap 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-measurements.drawer-resizable .meas-list-tools > :not(#meas-new-btn) {
  overflow: hidden;
  opacity: clamp(0, calc(var(--drawer-t, 1) * 2.2 - 0.6), 1);
  transform: translateX(calc((1 - var(--drawer-t, 1)) * -7px));
  max-width: calc(120px * var(--drawer-t, 1));
  transition: opacity 180ms ease, transform 220ms cubic-bezier(0.16, 1, 0.3, 1), max-width 220ms cubic-bezier(0.16, 1, 0.3, 1), margin 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-measurements.drawer-resizable #meas-new-btn {
  position: absolute;
  top: 0;
  left: calc((1 - var(--drawer-t, 1)) * -83px);
  flex: none;
  transform: none;
  transition: background .12s, color .12s, left 220ms cubic-bezier(0.16, 1, 0.3, 1), border-color 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-measurements.drawer-resizable.drawer-collapsed:not(.drawer-dragging):not(.drawer-animating) #meas-list-hd > .meas-list-title {
  max-width: 0;
  opacity: 0;
  transform: translateX(-8px);
}

#panel-measurements.drawer-resizable.drawer-collapsed:not(.drawer-dragging):not(.drawer-animating) .meas-list-tools > :not(#meas-new-btn) {
  max-width: 0;
  opacity: 0;
  transform: translateX(-8px);
  pointer-events: none;
}

#meas-new-btn,
#meas-sort-btn,
#exp-sort-btn,
.list-sort-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: none;
  font-size: 16px;
  line-height: 1;
  color: var(--text-muted);
  cursor: pointer;
  transition: background .12s, color .12s;
}

#meas-new-btn:hover,
#meas-sort-btn:hover,
#meas-sort-btn.active,
#exp-sort-btn:hover,
#exp-sort-btn.active,
.list-sort-btn:hover,
.list-sort-btn.active {
  background: var(--bg);
  color: var(--text);
}

#meas-list-hd #meas-new-btn,
#meas-list-hd #meas-sort-btn,
#meas-list-hd #meas-tag-filter-btn,
#meas-list-hd .inline-search-wrap button {
  border: none;
  box-shadow: none;
}

#meas-list-hd #meas-new-btn,
#meas-list-hd #meas-sort-btn,
#meas-list-hd #meas-tag-filter-btn {
  width: 28px;
  height: 28px;
}

#meas-list-hd #meas-new-btn:hover,
#meas-list-hd #meas-sort-btn:hover,
#meas-list-hd #meas-tag-filter-btn:hover,
#meas-list-hd .inline-search-wrap button:hover {
  background: var(--bg);
  color: var(--text);
}

#meas-sort-btn svg,
#exp-sort-btn svg,
.list-sort-btn svg {
  width: 15px;
  height: 15px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.meas-sort-wrap {
  position: relative;
  display: flex;
  align-items: center;
}

.meas-sort-menu {
  position: absolute;
  top: calc(100% + 6px);
  right: 0;
  z-index: 20;
  min-width: 150px;
  padding: 5px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: 0 12px 28px color-mix(in oklab, #000 16%, transparent);
}

.meas-sort-option {
  display: flex;
  align-items: center;
  width: 100%;
  padding: 7px 9px;
  border: 0;
  border-radius: 5px;
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  font-size: 12px;
  text-align: left;
  cursor: pointer;
}

.meas-sort-option:hover,
.meas-sort-option.active {
  background: var(--bg);
  color: var(--text);
}

/* ── inner list drawer toggle buttons ─────────────────────── */
.list-collapse-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: none;
  color: var(--text-muted);
  cursor: pointer;
  flex-shrink: 0;
  transition: background .12s, color .12s;
}
.list-collapse-btn:hover { background: var(--bg); color: var(--text); }
.list-collapse-btn svg {
  width: 14px; height: 14px;
  fill: none; stroke: currentColor;
  stroke-width: 2; stroke-linecap: round; stroke-linejoin: round;
}

.list-reveal-btn {
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  z-index: 5;
  width: 18px;
  height: 44px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-left: none;
  border-radius: 0 var(--radius) var(--radius) 0;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text-muted);
  padding: 0;
  opacity: 1;
  visibility: hidden;
  pointer-events: none;
  transition: background .12s, color .12s;
}
.list-reveal-btn.visible { visibility: visible; pointer-events: auto; }
/* The drag grip replaces the floating reveal tab on managed panels. */
.drawer-resizable .list-reveal-btn { display: none; }
#panel-measurements .list-reveal-btn { left: 10px; }

/* ── drawer resize handle (project tab list panes) ────────── */
/* Children keep their full layout width so nothing rewraps while the
   pane is dragged; the pane itself just clips. */
.drawer-managed > * {
  width: max(var(--drawer-list-max, 300px), var(--drawer-w, 300px));
  flex-shrink: 0;
}
/* While the spring or a drag drives --drawer-w/--drawer-t every frame,
   CSS transitions would restart toward each new value and lag ~200ms
   behind the pointer; disable them so the physics is 1:1. */
.drawer-resizable.drawer-dragging .drawer-managed,
.drawer-resizable.drawer-animating .drawer-managed,
.drawer-resizable.drawer-dragging .drawer-managed *,
.drawer-resizable.drawer-animating .drawer-managed * {
  /* !important: must beat the ID-prefixed per-panel rules that set
     transition shorthands. */
  transition-duration: 0s !important;
}
.drawer-resize {
  position: absolute;
  top: 0;
  left: calc(var(--drawer-w, 300px) - 5px);
  width: 10px;
  height: 100%;
  cursor: ew-resize;
  z-index: 40;
  touch-action: none;
}
.drawer-resize::before {
  content: "";
  position: absolute;
  top: var(--drawer-handle-center, 50%);
  left: 3px;
  width: 4px;
  height: 34px;
  transform: translateY(-50%);
  border-radius: 999px;
  background: var(--panel-strong);
  transition: background .15s ease, height .2s cubic-bezier(0.16, 1, 0.3, 1);
}
.drawer-resize:hover::before,
.drawer-resize:focus-visible::before,
.drawer-dragging .drawer-resize::before {
  background: var(--brand);
  height: 52px;
}

/* collapsed rail: slim vertical strip that replaces the closed list */
.drawer-rail {
  position: absolute;
  top: 0;
  left: 0;
  width: var(--drawer-min, 44px);
  height: 100%;
  border: none;
  border-right: 1px solid transparent;
  background: transparent;
  z-index: 35;
  display: flex;
  align-items: stretch;
  justify-content: center;
  padding: 10px 0;
  color: var(--text-muted);
  opacity: 0;
  pointer-events: none;
  touch-action: none;
  overflow: visible;
  transition: opacity 160ms ease;
}
.drawer-collapsed:not(.drawer-dragging):not(.drawer-animating) .drawer-rail {
  opacity: 1;
  pointer-events: auto;
  border-right-color: var(--border);
  background: var(--exp-list-surface, var(--surface));
}
.drawer-resizable:not(.drawer-collapsed) .drawer-rail,
.drawer-resizable.drawer-dragging .drawer-rail,
.drawer-resizable.drawer-animating .drawer-rail {
  visibility: hidden;
}
.drawer-rail-fallback,
.drawer-rail-item {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: calc(var(--drawer-min, 44px) - 8px);
  min-height: 32px;
  margin: 0 auto;
  padding: 0;
  border: none;
  border-radius: 10px;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  transition: background .12s, color .12s;
}
.drawer-rail-action {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  margin: 0 auto 4px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: none;
  color: var(--text-muted);
  cursor: pointer;
  transition: background .12s, color .12s, border-color .12s;
}
.drawer-rail-fallback:hover,
.drawer-rail-fallback:focus-visible,
.drawer-rail-action:hover,
.drawer-rail-action:focus-visible,
.drawer-rail-item:hover,
.drawer-rail-item:focus-visible,
.drawer-rail-item.active {
  background: color-mix(in oklab, var(--brand) 8%, var(--bg));
  color: var(--text);
  outline: none;
}
.drawer-rail-action:hover,
.drawer-rail-action:focus-visible {
  border-color: color-mix(in oklab, var(--brand) 32%, var(--border));
}
.drawer-rail-action > span[aria-hidden="true"] {
  font-size: 16px;
  line-height: 1;
}
.drawer-rail svg {
  width: 14px;
  height: 14px;
  flex: none;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.drawer-rail-items-scroll {
  width: 100%;
  height: 100%;
  overflow-y: auto;
  overflow-x: visible;
  scrollbar-width: none;
}
.drawer-rail-items-scroll::-webkit-scrollbar { display: none; }
.drawer-rail-items {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 6px;
  width: 100%;
  padding: 2px 0;
  overflow: visible;
}
.drawer-rail .drawer-rail-label {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}
.drawer-rail-entity-ball {
  margin: 0;
  box-shadow: 0 0 0 1px color-mix(in oklab, #fff 14%, transparent);
}
.drawer-rail-hovertip {
  position: fixed;
  padding: 5px 11px;
  border-radius: 7px;
  background: #15171c;
  color: #f4f5f7;
  font-family: var(--app-body-font);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.05em;
  line-height: 1.4;
  white-space: nowrap;
  pointer-events: none;
  z-index: 400;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.28);
  opacity: 0;
  transform: translateX(-4px);
  transition: opacity .13s ease, transform .16s cubic-bezier(0.16, 1, 0.3, 1);
}
.drawer-rail-hovertip::before {
  content: "";
  position: absolute;
  left: -3px;
  top: 50%;
  width: 8px;
  height: 8px;
  background: #15171c;
  border-radius: 2px;
  transform: translateY(-50%) rotate(45deg);
}
.drawer-rail-hovertip.visible {
  opacity: 1;
  transform: translateX(0);
}
.list-reveal-btn:hover { background: var(--bg); color: var(--text); }
.list-reveal-btn svg {
  width: 12px; height: 12px;
  fill: none; stroke: currentColor;
  stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round;
}

.inline-search-wrap {
  position: relative;
  width: 28px;
  height: 28px;
}

.inline-search-wrap input {
  position: absolute;
  right: 0;
  top: 0;
  height: 28px;
  width: 0;
  padding: 0;
  border: 1px solid transparent;
  border-radius: var(--radius);
  background: var(--input-bg);
  font: inherit;
  font-size: 13px;
  color: var(--text);
  opacity: 0;
  pointer-events: none;
  outline: none;
  z-index: 1;
  transition: width .2s ease, opacity .15s ease, padding .2s ease, border-color .15s ease;
}

.inline-search-wrap input::placeholder {
  color: var(--text-muted);
}

.inline-search-wrap.open input {
  width: 140px;
  padding: 0 8px;
  border-color: color-mix(in oklab, var(--brand) 24%, var(--border));
  opacity: 1;
  pointer-events: auto;
}

.inline-search-wrap button {
  position: absolute;
  right: 0;
  top: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: none;
  border-radius: var(--radius);
  background: none;
  color: var(--text-muted);
  cursor: pointer;
  z-index: 2;
  transition: background .12s, color .12s, opacity .15s;
}

.inline-search-wrap button:hover {
  background: var(--bg);
  color: var(--text);
}

.inline-search-wrap button svg {
  width: 15px;
  height: 15px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.75;
  stroke-linecap: round;
}

.inline-search-wrap.open button {
  opacity: 0;
  pointer-events: none;
}

#meas-list-body {
  flex: 1;
  overflow-y: auto;
  background: var(--meas-list-surface);
}

#panel-measurements.drawer-resizable #meas-list-body {
  padding-top: calc((1 - var(--drawer-t, 1)) * 1.5px);
  width: max(var(--drawer-list-max, 248px), var(--drawer-w, 248px));
  background: var(--surface);
}

#panel-measurements .drawer-rail {
  display: none;
}

.meas-row {
  display: flex;
  flex-direction: column;
  justify-content: flex-start;
  width: 100%;
  min-height: 96px;
  padding: 15px 20px;
  border: none;
  border-bottom: 1px solid var(--border);
  background: none;
  text-align: left;
  cursor: pointer;
  transition: background .1s;
}

#panel-measurements.drawer-resizable .meas-row {
  --meas-row-pad-x: 10px;
  position: relative;
  display: block;
  min-height: calc(44px + (var(--drawer-t, 1) * 64px));
  max-height: calc(44px + (var(--drawer-t, 1) * 64px));
  padding-block: calc(11px + (var(--drawer-t, 1) * 1px));
  padding-inline: var(--meas-row-pad-x);
  border-bottom-color: color-mix(in oklab, var(--border) calc(var(--drawer-t, 1) * 100%), transparent);
  overflow: hidden;
  transition: background .1s, min-height 220ms cubic-bezier(0.16, 1, 0.3, 1), padding 220ms cubic-bezier(0.16, 1, 0.3, 1), border-color 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-measurements.drawer-resizable .meas-row > * {
  position: relative;
  z-index: 1;
}

.meas-row-body {
  display: flex;
  align-items: flex-start;
  width: 100%;
}

#panel-measurements.drawer-resizable .meas-row-body {
  align-items: center;
  display: block;
  min-height: calc(22px + (var(--drawer-t, 1) * 62px));
}

.meas-row-content {
  flex: 1;
  min-width: 0;
}

#panel-measurements.drawer-resizable .meas-row-content {
  overflow: hidden;
  max-width: calc(220px * var(--drawer-t, 1));
  max-height: calc(86px * var(--drawer-t, 1));
  opacity: clamp(0, calc(var(--drawer-t, 1) * 2.2 - 0.35), 1);
  transform: translateX(calc((1 - var(--drawer-t, 1)) * -7px));
  transition: opacity 180ms ease, transform 220ms cubic-bezier(0.16, 1, 0.3, 1), max-width 220ms cubic-bezier(0.16, 1, 0.3, 1), max-height 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

/* Uniform card height with two-line title/description, then the metadata/tag
   line clipped within the fixed row height. */
#panel-measurements.drawer-resizable .meas-row-meta {
  display: inline-flex;
  vertical-align: middle;
  flex-wrap: nowrap;
  margin-top: 4px;
  margin-right: 6px;
  gap: 6px;
}

#panel-measurements.drawer-resizable .meas-row-tag-names {
  display: inline-flex;
  vertical-align: middle;
  flex-wrap: nowrap;
  overflow: hidden;
  margin-top: 4px;
  gap: 4px;
}

.entity-ball {
  flex-shrink: 0;
  box-sizing: border-box;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: #fff;
  font-weight: 800;
  line-height: 1;
  border: 1px solid color-mix(in oklab, #000 14%, rgba(255, 255, 255, 0.26));
  box-shadow: none;
}
.entity-ball-sm {
  width: 22px;
  height: 22px;
  font-size: 10px;
  margin-top: 1px;
}

.meas-row:hover,
.meas-row.active {
  background: var(--bg);
}

#panel-measurements.drawer-collapsed .meas-row:hover,
#panel-measurements.drawer-collapsed .meas-row.active {
  background: transparent;
}

#panel-measurements.drawer-resizable:not(.drawer-collapsed) .meas-row:hover,
#panel-measurements.drawer-resizable:not(.drawer-collapsed) .meas-row.active,
#panel-measurements.drawer-resizable.drawer-dragging .meas-row:hover,
#panel-measurements.drawer-resizable.drawer-dragging .meas-row.active {
  background: var(--bg);
}

#panel-measurements.drawer-collapsed .meas-row:last-child {
  border-bottom-color: transparent;
}

#panel-measurements.drawer-collapsed:not(.drawer-dragging):not(.drawer-animating) .meas-row {
  height: 44px;
  min-height: 44px;
}

#panel-measurements.drawer-collapsed #meas-list-body > .panel-empty {
  display: none;
}

/* ── assets list drawer ───────────────────────────────────── */
#assets-list.drawer-managed,
#assets-list.drawer-managed.list-hidden {
  width: var(--drawer-w, 320px);
  transition: width 300ms cubic-bezier(0.16, 1, 0.3, 1), border-color 300ms, background-color 300ms;
}
#panel-assets.drawer-resizable #assets-list.list-hidden {
  border-right-color: var(--border);
}
#panel-assets .drawer-rail {
  display: none;
}

#panel-assets.drawer-resizable #assets-list-hd {
  padding-inline: calc(var(--drawer-t, 1) * 14px);
  width: max(var(--drawer-list-max, 320px), var(--drawer-w, 320px));
  justify-content: flex-start;
  position: relative;
  transition: padding 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-assets.drawer-resizable #assets-list-hd > span {
  overflow: hidden;
  max-width: calc(120px * var(--drawer-t, 1));
  opacity: clamp(0, calc(var(--drawer-t, 1) * 2.1 - 0.25), 1);
  transform: translateX(calc((1 - var(--drawer-t, 1)) * -6px));
  transition: opacity 180ms ease, transform 220ms cubic-bezier(0.16, 1, 0.3, 1), max-width 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-assets.drawer-resizable .meas-list-tools {
  position: absolute;
  top: 8px;
  right: 14px;
  width: 184px;
  margin-left: 0;
  padding-left: 34px;
  gap: calc(8px * var(--drawer-t, 1));
  transform: none;
  transition: gap 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-assets.drawer-resizable .meas-list-tools > :not(#assets-upload-btn) {
  overflow: hidden;
  opacity: clamp(0, calc(var(--drawer-t, 1) * 2.2 - 0.6), 1);
  transform: translateX(calc((1 - var(--drawer-t, 1)) * -7px));
  max-width: calc(120px * var(--drawer-t, 1));
  transition: opacity 180ms ease, transform 220ms cubic-bezier(0.16, 1, 0.3, 1), max-width 220ms cubic-bezier(0.16, 1, 0.3, 1), margin 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-assets.drawer-resizable #assets-upload-btn {
  position: absolute;
  top: 0;
  left: calc((1 - var(--drawer-t, 1)) * -113px);
  flex: none;
  transform: none;
  transition: background .12s, color .12s, left 220ms cubic-bezier(0.16, 1, 0.3, 1), border-color 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-assets.drawer-resizable.drawer-collapsed:not(.drawer-dragging):not(.drawer-animating) #assets-list-hd > span,
#panel-assets.drawer-resizable.drawer-collapsed:not(.drawer-dragging):not(.drawer-animating) .meas-list-tools > :not(#assets-upload-btn) {
  max-width: 0;
  opacity: 0;
  transform: translateX(-8px);
  pointer-events: none;
}

#panel-assets.drawer-resizable #assets-list-body {
  width: max(var(--drawer-list-max, 320px), var(--drawer-w, 320px));
  padding: calc(10px * var(--drawer-t, 1));
  transition: padding 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-assets.drawer-resizable .asset-group-block {
  border-color: color-mix(in oklab, var(--border) calc(var(--drawer-t, 1) * 100%), transparent);
  border-radius: calc(8px * var(--drawer-t, 1));
  box-shadow: 0 1px 2px color-mix(in oklab, #000 calc(var(--drawer-t, 1) * 5%), transparent);
  transition: border-color 220ms cubic-bezier(0.16, 1, 0.3, 1), border-radius 220ms cubic-bezier(0.16, 1, 0.3, 1), box-shadow 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-assets.drawer-resizable .asset-group-block + .asset-group-block {
  margin-top: calc(10px * var(--drawer-t, 1));
}

#panel-assets.drawer-resizable .asset-group-header {
  overflow: hidden;
  padding-block: calc(11px * var(--drawer-t, 1));
  max-height: calc(82px * var(--drawer-t, 1));
  opacity: clamp(0, calc(var(--drawer-t, 1) * 2.2 - 0.6), 1);
  border-bottom-color: color-mix(in oklab, var(--border) calc(var(--drawer-t, 1) * 100%), transparent);
  transition: opacity 180ms ease, padding 220ms cubic-bezier(0.16, 1, 0.3, 1), max-height 220ms cubic-bezier(0.16, 1, 0.3, 1), border-color 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-assets.drawer-resizable .asset-row {
  position: relative;
  grid-template-columns: var(--drawer-min, 44px) minmax(0, 1fr);
  gap: 0;
  padding-block: calc(5px + (var(--drawer-t, 1) * 5px));
  padding-inline: 0;
  min-height: calc(44px + (var(--drawer-t, 1) * 22px));
  border-bottom-color: color-mix(in oklab, var(--border) calc(var(--drawer-t, 1) * 100%), transparent);
  overflow: hidden;
  transition: background .1s, opacity .12s, transform .12s, padding 220ms cubic-bezier(0.16, 1, 0.3, 1), min-height 220ms cubic-bezier(0.16, 1, 0.3, 1), border-color 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-assets.drawer-resizable .asset-row-type {
  justify-self: center;
}

#panel-assets.drawer-resizable .asset-row-main {
  margin-left: calc(10px * var(--drawer-t, 1));
  margin-right: calc(28px * var(--drawer-t, 1));
  overflow: hidden;
  max-width: calc(230px * var(--drawer-t, 1));
  max-height: calc(60px * var(--drawer-t, 1));
  opacity: clamp(0, calc(var(--drawer-t, 1) * 2.2 - 0.35), 1);
  transform: translateX(calc((1 - var(--drawer-t, 1)) * -7px));
  transition: opacity 180ms ease, transform 220ms cubic-bezier(0.16, 1, 0.3, 1), max-width 220ms cubic-bezier(0.16, 1, 0.3, 1), max-height 220ms cubic-bezier(0.16, 1, 0.3, 1), margin 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-assets.drawer-resizable .asset-row-grip {
  position: absolute;
  right: 11px;
  top: 50%;
  transform: translateY(-50%);
  opacity: clamp(0, calc(var(--drawer-t, 1) * 2.2 - 0.6), 0.55);
  z-index: 1;
}

#panel-assets.drawer-collapsed .asset-row:hover,
#panel-assets.drawer-collapsed .asset-row.active {
  background: transparent;
}

#panel-assets.drawer-collapsed .asset-row:hover .asset-row-type,
#panel-assets.drawer-collapsed .asset-row.active .asset-row-type {
  border-color: color-mix(in oklab, var(--brand) 42%, var(--border));
  background: color-mix(in oklab, var(--brand) 14%, var(--surface));
  color: var(--text);
}

#panel-assets.drawer-resizable:not(.drawer-collapsed) .asset-row:hover,
#panel-assets.drawer-resizable:not(.drawer-collapsed) .asset-row.active,
#panel-assets.drawer-resizable.drawer-dragging .asset-row:hover,
#panel-assets.drawer-resizable.drawer-dragging .asset-row.active {
  background: var(--bg);
}

#panel-assets.drawer-collapsed:not(.drawer-dragging):not(.drawer-animating) .asset-row {
  min-height: 44px;
}

#panel-assets.drawer-collapsed:not(.drawer-dragging):not(.drawer-animating) .asset-group-header,
#panel-assets.drawer-collapsed .asset-group-empty,
#panel-assets.drawer-collapsed #assets-list-body > .panel-empty {
  display: none;
}

/* ── references list drawer ───────────────────────────────── */
#references-list.drawer-managed,
#references-list.drawer-managed.list-hidden {
  width: var(--drawer-w, 320px);
  transition: width 300ms cubic-bezier(0.16, 1, 0.3, 1), border-color 300ms, background-color 300ms;
}
#panel-references.drawer-resizable #references-list.list-hidden {
  border-right-color: var(--border);
}
#panel-references .drawer-rail {
  display: none;
}

#panel-references.drawer-resizable #references-list-hd {
  padding-inline: calc(var(--drawer-t, 1) * 14px);
  width: max(var(--drawer-list-max, 320px), var(--drawer-w, 320px));
  justify-content: flex-start;
  position: relative;
  transition: padding 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-references.drawer-resizable #references-list-hd > span {
  overflow: hidden;
  max-width: calc(120px * var(--drawer-t, 1));
  opacity: clamp(0, calc(var(--drawer-t, 1) * 2.1 - 0.25), 1);
  transform: translateX(calc((1 - var(--drawer-t, 1)) * -6px));
  transition: opacity 180ms ease, transform 220ms cubic-bezier(0.16, 1, 0.3, 1), max-width 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-references.drawer-resizable .meas-list-tools {
  position: absolute;
  top: 8px;
  right: 14px;
  width: 130px;
  margin-left: 0;
  padding-left: 34px;
  gap: calc(8px * var(--drawer-t, 1));
  transform: none;
  transition: gap 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-references.drawer-resizable .meas-list-tools > :not(#references-new-btn) {
  overflow: hidden;
  opacity: clamp(0, calc(var(--drawer-t, 1) * 2.2 - 0.6), 1);
  transform: translateX(calc((1 - var(--drawer-t, 1)) * -7px));
  max-width: calc(120px * var(--drawer-t, 1));
  transition: opacity 180ms ease, transform 220ms cubic-bezier(0.16, 1, 0.3, 1), max-width 220ms cubic-bezier(0.16, 1, 0.3, 1), margin 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-references.drawer-resizable #references-new-btn {
  position: absolute;
  top: 0;
  left: calc((1 - var(--drawer-t, 1)) * -167px);
  flex: none;
  transform: none;
  transition: background .12s, color .12s, left 220ms cubic-bezier(0.16, 1, 0.3, 1), border-color 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-references.drawer-resizable.drawer-collapsed:not(.drawer-dragging):not(.drawer-animating) #references-list-hd > span,
#panel-references.drawer-resizable.drawer-collapsed:not(.drawer-dragging):not(.drawer-animating) .meas-list-tools > :not(#references-new-btn) {
  max-width: 0;
  opacity: 0;
  transform: translateX(-8px);
  pointer-events: none;
}

#panel-references.drawer-resizable #references-list-body {
  width: max(var(--drawer-list-max, 320px), var(--drawer-w, 320px));
}

#panel-references.drawer-resizable .reference-row {
  overflow: hidden;
  padding-inline: calc(16px * var(--drawer-t, 1));
  padding-block: calc(12px * var(--drawer-t, 1));
  min-height: calc(96px * var(--drawer-t, 1));
  max-height: calc(150px * var(--drawer-t, 1));
  border-bottom-color: color-mix(in oklab, var(--border) calc(var(--drawer-t, 1) * 100%), transparent);
  transition: background .1s, padding 220ms cubic-bezier(0.16, 1, 0.3, 1), min-height 220ms cubic-bezier(0.16, 1, 0.3, 1), max-height 220ms cubic-bezier(0.16, 1, 0.3, 1), border-color 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-references.drawer-resizable .reference-row > * {
  opacity: clamp(0, calc(var(--drawer-t, 1) * 2.2 - 0.35), 1);
  transform: translateX(calc((1 - var(--drawer-t, 1)) * -7px));
  transition: opacity 180ms ease, transform 220ms cubic-bezier(0.16, 1, 0.3, 1);
}

#panel-references.drawer-collapsed:not(.drawer-dragging):not(.drawer-animating) .reference-row,
#panel-references.drawer-collapsed #references-drop-hint,
#panel-references.drawer-collapsed #references-list-body > .panel-empty {
  display: none;
}

.meas-row.drop-target {
  background: color-mix(in oklab, var(--brand) 10%, var(--bg));
  box-shadow: inset 3px 0 0 color-mix(in oklab, var(--brand) 65%, var(--border));
}

.meas-row strong {
  display: block;
  font-size: 13px;
  line-height: 1.35;
  font-weight: 600;
  color: var(--text);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.meas-row-desc {
  display: block;
  margin-top: 2px;
  font-style: italic;
  font-size: 12px;
  line-height: 1.6;
  color: var(--text-muted);
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.meas-row-desc.is-empty {
  color: color-mix(in oklab, var(--text-muted) 72%, transparent);
}

.meas-row-meta {
  display: flex;
  align-items: center;
  gap: 4px;
  flex-wrap: wrap;
  margin-top: 3px;
}

.meas-row-description {
  margin-top: 4px;
  font-size: 11px;
  line-height: 1.4;
  color: var(--text-muted);
  display: -webkit-box;
  -webkit-line-clamp: 1;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.meas-row-tag-names {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: 5px;
}

.meas-row-tag-name {
  display: inline-flex;
  align-items: center;
  font-size: 10px;
  font-weight: 500;
  color: #fff;
  padding: 1px 7px;
  border-radius: 10px;
  line-height: 1.6;
  background: var(--text-muted);
}

.meas-row-tag-name.is-empty,
.badge.is-empty {
  color: color-mix(in oklab, var(--text-muted) 78%, transparent);
  background: color-mix(in oklab, var(--bg) 86%, var(--border));
  border-color: color-mix(in oklab, var(--border) 70%, transparent);
}

.meas-cross-drop-popover {
  position: fixed;
  z-index: 1200;
  width: min(360px, calc(100vw - 24px));
  max-height: min(460px, calc(100vh - 24px));
  overflow: auto;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text);
  box-shadow: var(--shadow-elevated);
}

.meas-cross-drop-title {
  margin-bottom: 10px;
  font-size: 13px;
  font-weight: 600;
}

.meas-cross-drop-grid {
  display: grid;
  gap: 10px;
}

.meas-cross-drop-bucket {
  display: grid;
  gap: 6px;
  padding: 8px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
}

.meas-cross-drop-target {
  display: grid;
  gap: 2px;
  width: 100%;
  padding: 8px 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text);
  text-align: left;
  cursor: pointer;
}

.meas-cross-drop-target strong {
  font-size: 12px;
}

.meas-cross-drop-target span,
.meas-cross-drop-loading {
  color: var(--text-muted);
  font-size: 11px;
}

.meas-cross-drop-target.drop-target,
.meas-cross-drop-target:hover {
  border-color: color-mix(in oklab, var(--brand) 48%, var(--border));
  background: color-mix(in oklab, var(--brand) 9%, var(--surface));
}

#meas-detail {
  flex: 1;
  overflow-y: auto;
  padding-block: 24px;
  padding-inline: var(--detail-content-gutter);
  background: var(--panel);
  position: relative;
}

.measurement-detail-shell {
  min-height: 100%;
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.meas-detail-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 16px;
}

.meas-detail-head-main {
  flex: 1;
  min-width: 0;
}

.meas-detail-head-row {
  display: flex;
  align-items: center;
  gap: 12px;
  flex-wrap: wrap;
}

.meas-detail-actions {
  display: flex;
  align-items: center;
  gap: 6px;
}

.meas-info-box {
  position: relative;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  overflow: hidden;
  box-shadow: var(--shadow-elevated);
  padding: 18px 18px 0;
  display: flex;
  flex-direction: column;
  gap: 0;
}

.meas-info-collapsible {
  overflow: hidden;
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding-left: 0;
}

.meas-info-collapsible-indent {
  display: flex;
  flex-direction: column;
  gap: 2px;
  padding-top: 1px;
}

.measurement-detail-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  padding-left: 0;
}

.measurement-detail-title-block {
  display: block;
  min-width: 0;
  flex: 0 0 auto;
  max-width: calc(100% - 110px);
}

.measurement-detail-title-main {
  display: flex;
  align-items: flex-start;
  gap: 0;
  flex-direction: column;
  min-width: 0;
  line-height: 1;
}

.meas-title-collapsed-meta {
  display: none;
  flex: 0 1 auto;
  align-items: center;
  gap: 10px;
  flex-wrap: nowrap;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
}

.meas-info-box[data-info-collapsed="true"] .meas-title-collapsed-meta {
  display: flex;
  opacity: 1;
  pointer-events: auto;
  padding-left: 8px;
  align-self: center;
}

.meas-info-box[data-info-collapsed="true"] .measurement-detail-title-main {
  flex-direction: row;
  align-items: center;
  gap: 0;
}

.meas-info-box[data-info-collapsed="true"] .measurement-detail-title,
.meas-info-box[data-info-collapsed="true"] .measurement-detail-title-input {
  flex: 0 1 auto;
  min-width: 0;
  align-self: center;
  display: flex;
  align-items: center;
}

.meas-info-box[data-info-collapsed="true"] .measurement-detail-title-input {
  padding-top: 0;
  padding-bottom: 0;
}

.meas-collapsed-desc {
  font-style: italic;
  color: var(--text-muted);
  font-size: 12px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  flex-shrink: 1;
  min-width: 0;
}

.meas-title-collapsed-meta .meas-tag-chip {
  flex-shrink: 0;
}

.measurement-detail-title {
  margin: 0;
  color: var(--text);
  font-size: 22px;
  font-weight: 650;
  line-height: 1.05;
  overflow-wrap: anywhere;
}

.measurement-detail-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 0;
  padding-left: 4px;
}

.measurement-detail-meta-times {
  gap: 8px;
}

.measurement-detail-title-input {
  min-width: 60px;
  margin: 0;
  padding: 0 4px;
  border: 1px solid transparent;
  border-radius: 7px;
  background: transparent;
  color: var(--text);
  font-size: 22px;
  font-weight: 650;
  line-height: 1.05;
  font-family: inherit;
  transition: background .12s, border-color .12s;
}

.measurement-detail-title-input::placeholder {
  color: var(--text-muted);
  opacity: .65;
}

.measurement-detail-title-input:hover {
  border-color: var(--border);
}

.measurement-detail-title-input:focus {
  outline: none;
  background: var(--surface);
  border-color: var(--panel-strong);
}

.measurement-meta-time {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--text);
}

.measurement-meta-time-label {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-muted);
}

.measurement-started-date,
.measurement-started-time {
  padding: 2px 6px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--surface);
  color: var(--text);
  font-size: 12px;
  font-family: inherit;
}

.measurement-started-date {
  width: 100px;
}

.measurement-started-date:focus,
.measurement-started-time:focus {
  outline: none;
  border-color: var(--panel-strong);
}

.measurement-inline-status {
  font-size: 11px;
  white-space: nowrap;
  align-self: center;
  margin-right: 4px;
}

/* Single-row label + field (Description, Tags) */
.measurement-inline-field {
  display: flex;
  align-items: center;
  gap: 10px;
  margin-top: 9px;
}

.measurement-inline-field .measurement-description-label {
  margin-bottom: 0;
  flex-shrink: 0;
}

.measurement-description-input {
  flex: 1;
  min-width: 0;
  padding: 5px 10px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text);
  font-size: 13px;
  line-height: 1.5;
  font-family: inherit;
}

.measurement-description-input::placeholder {
  color: var(--text-muted);
  opacity: .65;
}

.measurement-description-input:focus {
  outline: none;
  border-color: var(--panel-strong);
}

/* Cursive inline description directly under title */
.measurement-description-cursive {
  display: block;
  min-width: 60px;
  font-style: italic;
  font-size: 13px;
  color: var(--text-muted);
  margin-top: -1px;
  padding: 0 4px;
  border: 1px solid transparent;
  border-radius: 6px;
  background: transparent;
  font-family: inherit;
  line-height: 1.35;
  box-sizing: border-box;
}

.measurement-description-cursive::placeholder {
  color: var(--text-muted);
  opacity: .5;
  font-style: italic;
}

.measurement-description-cursive:hover {
  border-color: var(--border);
}

.measurement-description-cursive:focus {
  outline: none;
  background: var(--bg);
  border-color: var(--panel-strong);
  color: var(--text);
}

.measurement-description-static {
  pointer-events: none;
}

.measurement-meta-tags {
  display: flex;
  align-items: center;
  margin-top: 8px;
  min-width: 0;
  padding-left: 4px;
}

.measurement-meta-tags .meas-tag-input-card-inline {
  min-height: 26px;
  padding: 2px 6px;
  width: fit-content;
  min-width: 408px;
  max-width: 408px;
  background: color-mix(in oklab, var(--surface) 82%, var(--bg));
  border-color: color-mix(in oklab, var(--border) 84%, var(--panel) 16%);
}

.measurement-meta-tags .meas-tag-text {
  min-width: 70px;
}

/* Notes card nested inside meas-info-box: no extra shadow */
.meas-info-box .notes-card.measurement-notes-card {
  box-shadow: none;
  margin-top: 10px;
}

/* Horizontal grip at the bottom edge of the info box — normal flex child with negative
   horizontal margins so it spans edge-to-edge, mirroring meas-sheet-grip's approach. */
.meas-info-box-grip {
  width: calc(100% + 36px);
  margin-left: -18px;
  margin-right: -18px;
  flex-shrink: 0;
  height: 20px;
  cursor: ns-resize;
  touch-action: none;
  background: transparent;
  border: none;
  padding: 0;
  position: relative;
}

.meas-info-box-grip::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  width: 34px;
  height: 4px;
  border-radius: 999px;
  background: var(--panel-strong);
  transition: background .15s ease, width .2s cubic-bezier(0.16, 1, 0.3, 1);
}

.meas-info-box-grip:hover::before,
.meas-info-box-grip:focus-visible::before {
  background: var(--brand);
  width: 52px;
}

.meas-info-box-grip:focus-visible {
  outline: none;
}

/* Tags moved under the Created/Started meta, kept on a single row */
.measurement-tags-field .meas-tags-section {
  flex: 1;
  min-width: 0;
  margin-bottom: 0;
}

.meas-tag-input-card-inline {
  flex-wrap: nowrap;
  min-height: 30px;
  padding: 4px 8px;
}

/* Align Tags + Description fields: shared label width, equal field length */
.measurement-inline-field .measurement-description-label {
  width: 88px;
  white-space: nowrap;
}

.measurement-detail-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 7px;
  flex-shrink: 0;
}

.meas-detail-icon-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 7px;
  background: var(--surface);
  color: var(--text-muted);
  cursor: pointer;
  transition: background .12s, border-color .12s, color .12s, transform .12s;
}

.meas-detail-icon-btn:hover {
  background: var(--bg);
  border-color: var(--panel-strong);
  color: var(--text);
  transform: translateY(-1px);
}

.meas-detail-icon-btn:active {
  transform: translateY(0);
}

.meas-detail-icon-btn svg {
  width: 15px;
  height: 15px;
  display: block;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.meas-delete-btn:hover {
  color: #dc2626;
}

.measurement-description-section,
.measurement-tags-section {
  width: 100%;
}

.measurement-description-label {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-muted);
  margin-bottom: 7px;
}

.measurement-description-body {
  color: var(--text);
  font-size: 13px;
  line-height: 1.6;
  white-space: pre-wrap;
}

.measurement-notes-card {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  margin-left: 0;
  margin-top: 0;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
}

.measurement-tags-section .meas-tags-section {
  margin-bottom: 0;
}

.meas-detail-title {
  font-size: 18px;
  font-weight: 600;
  color: var(--text);
  margin: 0;
  line-height: 1.2;
}

.meas-meta-grid {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  flex-wrap: wrap;
}

.meas-meta-chip {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  padding: 6px 10px;
  min-width: 0;
  min-height: calc(1.2em + 14px);
  display: flex;
  align-items: center;
}

.meas-meta-chip-value {
  display: block;
  font-size: 12px;
  color: var(--text);
  line-height: 1.35;
}

.notes-card {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  overflow: hidden;
  align-self: start;
}

.notes-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 41px;
  padding: 0 14px;
  border-bottom: 1px solid var(--border);
  box-sizing: border-box;
  overflow: hidden;
}

.notes-card-header span {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}

.notes-card-header-main {
  display: flex;
  align-items: center;
  gap: 8px;
}

.notes-card-header-actions {
  display: flex;
  align-items: center;
  gap: 6px;
}

.notes-card-header-actions > .notes-card-toggle-btn,
.notes-card-header-actions > .notes-card-edit-btn {
  min-height: 28px;
  padding: 0 10px;
}

.notes-card-actions {
  display: flex;
  gap: 6px;
}

.notes-card-save,
.notes-card-cancel {
  font: inherit;
  font-size: 12px;
  padding: 5px 12px;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  cursor: pointer;
  transition: background .12s;
}

.notes-card-save {
  background: var(--brand);
  color: #fff7f2;
  border-color: var(--brand);
  transition: background .12s, border-color .12s;
}

.notes-card-save:hover {
  background: var(--brand-strong);
  border-color: var(--brand-strong);
}

.notes-card-save:disabled { opacity: .6; cursor: default; }

/* dirty notes state */
.notes-card.notes-dirty .notes-card-save { background: #145ea8; border-color: #145ea8; }
.notes-card.notes-dirty .notes-card-save:hover { background: #0f4f94; border-color: #0f4f94; }

/* saved confirmation */
.notes-card-save.saved { background: #16a34a; border-color: #16a34a; pointer-events: none; }

.notes-card-cancel {
  background: var(--surface);
  color: var(--text);
}

.notes-card-cancel:hover {
  background: var(--bg);
}

.notes-card-body {
  padding: 16px 18px;
  flex: 1 1 auto;
  overflow: auto;
}

.notes-card-body:empty::before {
  content: "No notes yet.";
  color: var(--text-muted);
  font-size: 13px;
}

.notes-card-textarea {
  display: block;
  width: 100%;
  min-height: 220px;
  flex: 1 1 auto;
  padding: 16px 18px;
  border: none;
  border-top: 1px solid var(--border);
  background: var(--surface);
  font: inherit;
  font-size: 13px;
  font-family: ui-monospace, monospace;
  color: var(--text);
  resize: none;
  outline: none;
  box-sizing: border-box;
}

/* Keep Data Organization notes compact while allowing short notes to size naturally. */
.measurement-notes-card .notes-card-body {
  max-height: clamp(120px, 22vh, 220px);
  max-height: clamp(120px, 22dvh, 220px);
  overflow-y: auto;
  overscroll-behavior: contain;
}

.measurement-notes-card .notes-card-textarea {
  field-sizing: content;
  height: auto;
  min-height: 180px;
  max-height: clamp(180px, 36vh, 360px);
  max-height: clamp(180px, 36dvh, 360px);
  overflow-y: auto;
  overscroll-behavior: contain;
  resize: vertical;
}

.meas-buckets-section {
  margin-top: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  overflow: hidden;
  box-shadow: var(--shadow-elevated);
}

.meas-buckets-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 41px;
  padding: 0 14px;
  box-sizing: border-box;
  border-bottom: 1px solid var(--border);
  overflow: hidden;
}

.meas-buckets-section-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}

.meas-buckets-section-body {
  padding: 14px;
}

.meas-buckets-section-body .meas-bucket-selection-bar {
  margin-top: 0;
}

.meas-buckets-section .meas-bucket-card,
.meas-buckets-section .meas-bucket-ghost {
  background: var(--bg);
}

.meas-buckets-section .meas-bucket-card.drop-target,
.meas-buckets-section .meas-bucket-batch.drop-target,
.meas-buckets-section .meas-bucket-ghost.drop-target {
  background: color-mix(in oklab, var(--surface) 72%, var(--bg));
}

@media (prefers-reduced-motion: no-preference) {
  .meas-buckets-section.meas-data-reveal .meas-buckets-section-body {
    animation: meas-data-section-in 360ms cubic-bezier(0.22, 1, 0.36, 1);
  }

  .meas-buckets-section.meas-data-reveal .meas-bucket-card,
  .meas-buckets-section.meas-data-reveal .meas-bucket-ghost {
    animation: meas-data-card-in 420ms cubic-bezier(0.22, 1, 0.36, 1);
  }

  .meas-buckets-section.meas-data-reveal .meas-bucket-card:nth-child(2),
  .meas-buckets-section.meas-data-reveal .meas-bucket-ghost:nth-child(2) {
    animation-delay: 40ms;
  }

  .meas-buckets-section.meas-data-reveal .meas-bucket-card:nth-child(3),
  .meas-buckets-section.meas-data-reveal .meas-bucket-ghost:nth-child(3) {
    animation-delay: 80ms;
  }

  .meas-buckets-section.meas-data-reveal .meas-bucket-card:nth-child(n+4),
  .meas-buckets-section.meas-data-reveal .meas-bucket-ghost:nth-child(n+4) {
    animation-delay: 120ms;
  }
}

@keyframes meas-data-section-in {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes meas-data-card-in {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.meas-buckets-grid {
  display: grid;
  grid-template-columns: repeat(var(--bucket-cols, 1), minmax(0, 1fr));
  gap: 12px;
  align-items: start;
}
@media (max-width: 900px) {
  .meas-buckets-grid {
    grid-template-columns: 1fr;
  }
}

/* In multi-column layouts: equalise card heights per row (so a tall bucket doesn't
   leave a jagged gap beside a short one) and let the bucket body fill the height. */
.meas-buckets-grid[data-cols="2"],
.meas-buckets-grid[data-cols="3"] {
  align-items: stretch;
}
.meas-buckets-grid[data-cols="2"] .meas-bucket-card,
.meas-buckets-grid[data-cols="3"] .meas-bucket-card {
  min-height: 260px;
  display: flex;
  flex-direction: column;
}
.meas-buckets-grid[data-cols="2"] .meas-bucket-card .meas-bucket-scroll-wrap,
.meas-buckets-grid[data-cols="3"] .meas-bucket-card .meas-bucket-scroll-wrap {
  flex: 1 1 auto;
  min-height: 0;
}


.meas-bucket-cols-toggle[hidden],
.meas-bucket-cols-btn[hidden] {
  display: none;
}
.meas-bucket-cols-toggle {
  display: inline-flex;
  gap: 2px;
  margin-left: auto;
  padding: 2px;
  border: 1px solid var(--border);
  border-radius: 7px;
  background: var(--bg);
}
.meas-bucket-cols-btn {
  min-width: 26px;
  height: 22px;
  padding: 0 6px;
  border: none;
  border-radius: 5px;
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
  transition: background .12s, color .12s;
}
.meas-bucket-cols-btn:hover {
  color: var(--text);
}
.meas-bucket-cols-btn.active {
  background: var(--surface);
  color: var(--text);
  box-shadow: 0 1px 2px color-mix(in oklab, #000 12%, transparent);
}

.meas-bucket-card,
.meas-bucket-ghost,
.meas-plot-placeholder {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
}

.meas-bucket-card {
  position: relative;
  padding: 14px;
  border-radius: var(--radius);
  box-shadow:
    0 1px 3px rgba(0, 0, 0, 0.06),
    inset 0 3px 12px rgba(0, 0, 0, 0.06);
  transition: border-color .18s ease, box-shadow .18s ease, background .18s ease, transform .18s ease;
}

.meas-bucket-card.drop-target,
.meas-bucket-batch.drop-target,
.meas-bucket-ghost.drop-target {
  border-color: color-mix(in oklab, var(--brand) 55%, var(--border));
  box-shadow:
    0 4px 16px color-mix(in oklab, #000 10%, transparent),
    inset 0 0 0 2px color-mix(in oklab, var(--brand) 22%, transparent),
    inset 0 1px 0 rgba(255, 255, 255, 0.88),
    inset 0 3px 14px rgba(0, 0, 0, 0.08);
  transform: translateY(-2px) scale(1.005);
}

.meas-bucket-card-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
}

.meas-bucket-card-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
  line-height: 1.4;
  word-break: break-word;
}

.meas-bucket-card-title-input {
  flex: 1;
  min-width: 0;
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
  line-height: 1.4;
  background: none;
  border: none;
  border-bottom: 1px solid transparent;
  padding: 0;
  outline: none;
  font-family: inherit;
  width: 100%;
  transition: border-color .12s;
}
.meas-bucket-card-title-input::placeholder {
  color: var(--text-muted);
  font-weight: 400;
}
.meas-bucket-card-title-input:hover,
.meas-bucket-card-title-input:focus {
  border-bottom-color: var(--border);
}

.meas-bucket-card-subtitle {
  display: block;
  font-size: 11px;
  font-weight: 400;
  color: var(--text-muted);
  margin-top: 1px;
}

.meas-bucket-files {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.meas-bucket-scroll {
  max-height: 420px;
  overflow-y: hidden;
  padding-right: 2px;
}
.meas-bucket-scroll.is-scrollable {
  overflow-y: auto;
  overscroll-behavior: contain;
}

/* "More files" affordance: subtle fades + floating arrows at the top/bottom of a
   bucket, shown only while it can still be scrolled in that direction. */
.meas-bucket-scroll-wrap {
  position: relative;
}
.meas-bucket-scroll-wrap::before,
.meas-bucket-scroll-wrap::after {
  content: "";
  position: absolute;
  left: 0;
  right: 2px;
  height: 28px;
  pointer-events: none;
  opacity: 0;
  transition: opacity .15s ease;
  z-index: 2;
}
.meas-bucket-scroll-wrap::before {
  top: 0;
  background: linear-gradient(to top, transparent, color-mix(in oklab, var(--surface) 86%, var(--bg)));
}
.meas-bucket-scroll-wrap::after {
  bottom: 0;
  background: linear-gradient(to bottom, transparent, color-mix(in oklab, var(--surface) 86%, var(--bg)));
}
.meas-bucket-scroll-wrap.has-more-above::before,
.meas-bucket-scroll-wrap.has-more-below::after {
  opacity: 1;
}

.meas-bucket-scroll-more {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 50%;
  background: var(--surface);
  color: var(--text-muted);
  cursor: pointer;
  opacity: 0;
  pointer-events: none;
  box-shadow: 0 2px 6px color-mix(in oklab, #000 20%, transparent);
  transition: opacity .15s ease, color .12s ease;
  z-index: 3;
}
.meas-bucket-scroll-more-up { top: 4px; }
.meas-bucket-scroll-more-down { bottom: 4px; }
.meas-bucket-scroll-wrap.has-more-above .meas-bucket-scroll-more-up,
.meas-bucket-scroll-wrap.has-more-below .meas-bucket-scroll-more-down {
  opacity: 1;
  pointer-events: auto;
}
.meas-bucket-scroll-more:hover {
  color: var(--text);
}
.meas-bucket-scroll-more-arrow {
  font-size: 11px;
  line-height: 1;
}
@media (prefers-reduced-motion: no-preference) {
  .meas-bucket-scroll-wrap.has-more-below .meas-bucket-scroll-more-down .meas-bucket-scroll-more-arrow {
    animation: meas-more-bounce-down 1.5s ease-in-out infinite;
  }
  .meas-bucket-scroll-wrap.has-more-above .meas-bucket-scroll-more-up .meas-bucket-scroll-more-arrow {
    animation: meas-more-bounce-up 1.5s ease-in-out infinite;
  }
}
@keyframes meas-more-bounce-down {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(2px); }
}
@keyframes meas-more-bounce-up {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-2px); }
}

.meas-bucket-batch {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  overflow: hidden;
  position: relative;
  box-shadow: inset 0 2px 5px color-mix(in oklab, #000 5%, transparent);
  transition: border-color .16s ease, box-shadow .16s ease, background .16s ease, transform .16s ease;
}

.meas-bucket-batch-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 10px;
  border-bottom: 1px solid var(--border);
}

.meas-bucket-batch[draggable="true"] .meas-bucket-batch-header {
  cursor: grab;
}

.meas-bucket-batch.dragging {
  opacity: 0.42;
  transform: translateZ(0) scale(0.99);
  cursor: grabbing;
}

.meas-bucket-batch-select-wrap {
  display: inline-flex;
  align-items: center;
  flex-shrink: 0;
}

.meas-bucket-batch-select {
  width: 14px;
  height: 14px;
  margin: 0;
  accent-color: var(--brand);
}

.meas-bucket-select-wrap {
  display: inline-flex;
  align-items: center;
  padding: 4px;
  margin: -4px 0 -4px -4px;
  cursor: pointer;
}

.meas-bucket-select {
  width: 14px;
  height: 14px;
  margin: 0;
  accent-color: var(--brand);
}

.meas-bucket-select:disabled {
  cursor: default;
  opacity: 0.42;
}

.meas-bucket-batch-name {
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.meas-bucket-batch-count {
  font-size: 11px;
  color: var(--text-muted);
  white-space: nowrap;
}

.meas-bucket-batch-actions {
  display: flex;
  align-items: center;
  gap: 4px;
  margin-left: auto;
}

.meas-bucket-file-list {
  display: flex;
  flex-direction: column;
}

.meas-bucket-file-list-loose {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  overflow: hidden;
  box-shadow: inset 0 2px 5px color-mix(in oklab, #000 5%, transparent);
}

.meas-bucket-file-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  padding: 6px 10px;
  border-top: 1px solid var(--border);
  cursor: grab;
  user-select: none;
  -webkit-user-select: none;
  transition: opacity .16s ease, transform .16s ease, background .16s ease, box-shadow .16s ease;
  will-change: opacity, transform;
}

.meas-bucket-file-item:first-child {
  border-top: none;
}

.meas-bucket-file-item:hover,
.meas-bucket-file-item:focus-within {
  background: var(--surface);
}

.meas-bucket-file-item:last-child {
  border-bottom-right-radius: inherit;
  border-bottom-left-radius: inherit;
}

.meas-bucket-file-item.dragging {
  opacity: 0.32;
  transform: translateZ(0) scale(0.98);
  background: color-mix(in oklab, var(--surface) 58%, var(--bg));
  box-shadow: inset 3px 0 0 color-mix(in oklab, var(--text-muted) 34%, var(--panel-strong));
  cursor: grabbing;
}

.meas-bucket-file-item.missing-storage {
  box-shadow: inset 3px 0 0 #dc2626;
}

.meas-file-drag-active .meas-bucket-card:not(.drop-target),
.meas-file-drag-active .meas-bucket-batch:not(.drop-target),
.meas-file-drag-active .meas-bucket-ghost:not(.drop-target) {
  border-color: color-mix(in oklab, var(--text-muted) 10%, var(--border));
}

.meas-bucket-file-item.just-dropped {
  animation: meas-file-drop-land 320ms cubic-bezier(0.2, 0.9, 0.2, 1);
  background: color-mix(in oklab, var(--surface) 68%, var(--bg));
  will-change: opacity, transform;
}

body.meas-transfer-locking,
body.meas-transfer-locking * {
  cursor: wait !important;
}

.measurement-transfer-lock {
  position: fixed;
  inset: 0;
  z-index: 99998;
  pointer-events: all;
  cursor: wait;
  background: transparent;
}

.measurement-transfer-lock.is-passive {
  pointer-events: none;
  cursor: default;
}

.measurement-transfer-lock-card {
  position: absolute;
  left: 50%;
  bottom: 20px;
  transform: translateX(-50%);
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 34px;
  padding: 8px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: color-mix(in oklab, var(--surface) 92%, var(--panel));
  color: var(--text);
  box-shadow: 0 10px 24px color-mix(in oklab, #000 16%, transparent);
  font-size: 12px;
  font-weight: 600;
}

.measurement-transfer-spinner {
  width: 14px;
  height: 14px;
  border: 2px solid color-mix(in oklab, var(--brand) 25%, var(--border));
  border-top-color: var(--brand);
  border-radius: 50%;
  animation: meas-transfer-spin .8s linear infinite;
}

@keyframes meas-transfer-spin {
  to {
    transform: rotate(360deg);
  }
}

.meas-transfer-active .meas-transfer-source {
  opacity: .34 !important;
  filter: grayscale(.2);
  transform: translateZ(0) scale(.985);
}

.meas-transfer-active .meas-transfer-target {
  border-color: color-mix(in oklab, var(--brand) 62%, var(--border));
  box-shadow:
    0 4px 16px color-mix(in oklab, #000 10%, transparent),
    inset 0 0 0 2px color-mix(in oklab, var(--brand) 24%, transparent);
}

@keyframes meas-file-drop-land {
  0% {
    transform: translate3d(0, -10px, 0) scale(0.985);
    opacity: 0.2;
    box-shadow: 0 10px 22px color-mix(in oklab, #000 12%, transparent);
  }
  58% {
    transform: translate3d(0, 1px, 0) scale(1.006);
    opacity: 1;
  }
  100% {
    transform: translate3d(0, 0, 0) scale(1);
    box-shadow: none;
  }
}

.measurement-drag-preview {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 99999;
  display: flex;
  align-items: center;
  gap: 9px;
  width: 218px;
  max-width: 218px;
  padding: 9px 11px;
  border: 1px solid color-mix(in oklab, var(--text-muted) 24%, var(--border));
  border-radius: 7px;
  background: color-mix(in oklab, var(--surface) 92%, var(--panel));
  color: var(--text);
  box-shadow: 0 12px 28px color-mix(in oklab, #000 16%, transparent);
  pointer-events: none;
}

.measurement-drag-preview-canvas {
  position: fixed;
  top: 12px;
  left: 12px;
  display: block;
  width: 218px;
  height: 54px;
  padding: 0;
  margin: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
  opacity: 1;
  pointer-events: none;
  z-index: 2147483647;
}

.measurement-drag-preview-canvas-hidden {
  transform: translate3d(-10000px, -10000px, 0);
}

.measurement-drag-preview-icon {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border-radius: 6px;
  background: color-mix(in oklab, var(--panel) 70%, var(--bg));
  color: var(--text-muted);
  font-size: 15px;
  font-weight: 700;
  flex-shrink: 0;
}

.measurement-drag-preview-main {
  min-width: 0;
}

.measurement-drag-preview-title,
.measurement-drag-preview-subtitle {
  display: block;
  min-width: 0;
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.measurement-drag-preview-title {
  font-size: 12px;
  font-weight: 700;
}

.measurement-drag-preview-subtitle {
  margin-top: 2px;
  font-size: 10px;
  color: var(--text-muted);
}

.meas-bucket-file-select-wrap {
  display: flex;
  align-items: center;
  flex-shrink: 0;
  padding: 4px;
  margin: -4px;
  cursor: pointer;
}

.meas-bucket-file-select {
  display: block;
  width: 15px;
  height: 15px;
  margin: 0;
  cursor: pointer;
  accent-color: var(--accent, #145ea8);
}

.meas-bucket-file-main {
  flex: 1;
}

.meas-bucket-file-row {
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
  flex: 1;
}

.meas-bucket-file-item.selected {
  background: color-mix(in oklab, var(--brand) 9%, var(--bg));
}

.meas-bucket-selection-bar {
  margin-top: 8px;
  margin-bottom: 10px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  flex-wrap: wrap;
}

.meas-bucket-selection-left,
.meas-bucket-selection-right {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.meas-bucket-selection-left {
  min-width: 0;
}

.meas-bucket-selection-right {
  margin-left: auto;
  justify-content: flex-end;
}

.meas-bucket-selection-btn {
  font: inherit;
  font-size: 12px;
  padding: 5px 9px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text);
  cursor: pointer;
  transition: background .12s, color .12s;
}

.meas-bucket-selection-btn:hover {
  background: var(--bg);
}

.meas-bucket-selection-btn.danger {
  color: #dc2626;
  border-color: color-mix(in oklab, #dc2626 32%, var(--border));
}

.meas-bucket-selection-btn.danger:hover {
  background: color-mix(in oklab, #dc2626 12%, var(--bg));
  color: var(--danger);
}

.meas-upload-progress {
  margin-bottom: 10px;
  padding: 10px 12px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.meas-upload-progress-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
  min-width: 0;
}
.meas-upload-progress-label {
  font-size: 12px;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.meas-upload-progress-track {
  height: 6px;
  background: var(--panel-strong);
  border-radius: 3px;
  overflow: hidden;
}
.meas-upload-progress-fill {
  height: 100%;
  background: var(--brand);
  border-radius: 3px;
  transition: width 0.15s linear;
  width: 0%;
}

.meas-bucket-filter-input {
  min-width: 180px;
  max-width: 240px;
  padding: 5px 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--input-bg);
  font: inherit;
  font-size: 12px;
  color: var(--text);
  outline: none;
}

.meas-bucket-filter-input:focus {
  border-color: var(--brand);
  background: var(--input-bg-muted);
  box-shadow: 0 0 0 3px var(--focus-ring);
}

.meas-bucket-filter-input::placeholder {
  color: var(--text-muted);
}

.meas-bucket-file-main {
  min-width: 0;
}

.meas-bucket-file-actions {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  flex: 0 0 auto;
  margin-left: auto;
}

.meas-bucket-file-icon-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  flex: 0 0 24px;
  border: 1px solid transparent;
  border-radius: 5px;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  transition: background .12s ease, border-color .12s ease, color .12s ease;
}

.meas-bucket-file-icon-btn:hover {
  border-color: var(--border);
  background: var(--surface);
  color: var(--text);
}

.meas-bucket-file-icon-btn svg {
  width: 15px;
  height: 15px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.7;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.meas-bucket-file-name {
  display: block;
  font-size: 12px;
  line-height: 1.25;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.meas-bucket-file-item:hover .meas-bucket-file-name,
.meas-bucket-file-item:focus-within .meas-bucket-file-name {
  white-space: normal;
  overflow: visible;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.meas-bucket-file-meta {
  display: block;
  margin-top: 1px;
  font-size: 10px;
  line-height: 1.2;
  color: var(--text-muted);
}

.meas-bucket-file-parse-error {
  border: 0;
  padding: 0;
  background: transparent;
  color: #dc2626;
  font: inherit;
  font-weight: 600;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 2px;
  cursor: pointer;
}

.meas-bucket-file-parse-error:hover {
  color: var(--danger);
}

.meas-parse-error-popover {
  position: fixed;
  z-index: 100000;
  width: min(420px, calc(100vw - 20px));
  max-height: min(320px, calc(100vh - 20px));
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: 0 18px 45px color-mix(in oklab, #000 22%, transparent);
  overflow: auto;
}

.meas-parse-error-title {
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
  margin-bottom: 8px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.meas-parse-error-message {
  margin: 0;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  font: 11px/1.45 ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  color: var(--text-muted);
}

.meas-file-inspect-popover {
  position: fixed;
  z-index: 100000;
  width: min(680px, calc(100vw - 20px));
  max-height: min(520px, calc(100vh - 20px));
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: 0 18px 45px color-mix(in oklab, #000 22%, transparent);
  overflow: auto;
}

.meas-file-inspect-title {
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
  line-height: 1.45;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.meas-file-inspect-meta {
  margin-top: 3px;
  margin-bottom: 8px;
  font-size: 11px;
  color: var(--text-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.meas-file-inspect-content,
.meas-file-inspect-message {
  margin: 8px 0 0;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
  font: 11px/1.45 ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  color: var(--text-muted);
}

.meas-file-inspect-content {
  color: var(--text);
}

.meas-file-inspect-summary {
  display: grid;
  gap: 6px;
  margin: 10px 0 12px;
}

.meas-file-inspect-meta-row {
  display: grid;
  grid-template-columns: 78px minmax(0, 1fr);
  gap: 10px;
  align-items: start;
  font-size: 11px;
  color: var(--text);
}

.meas-file-inspect-meta-row span {
  color: var(--text-muted);
}

.meas-file-inspect-meta-row strong {
  font-weight: 500;
  overflow-wrap: anywhere;
  word-break: break-word;
}

.meas-bucket-empty,
.meas-bucket-loading {
  margin-top: 12px;
  font-size: 12px;
  line-height: 1.5;
  color: var(--text-muted);
}

.meas-bucket-card-actions {
  display: flex;
  align-items: center;
  gap: 1px;
  flex-shrink: 0;
}

.meas-bucket-action-btn {
  min-width: 18px;
  height: 18px;
  border: none;
  border-radius: 4px;
  background: transparent;
  font: inherit;
  font-size: 11px;
  line-height: 1;
  color: var(--text-muted);
  cursor: pointer;
  transition: background .12s, color .12s;
  padding: 0;
}

.meas-bucket-action-btn:hover {
  background: var(--bg);
  color: var(--text);
}

.meas-bucket-action-btn:disabled {
  opacity: 0.32;
  cursor: default;
}


.meas-bucket-ghost {
  min-height: 120px;
  display: flex;
  align-items: center;
  justify-content: center;
  border-style: dashed;
  border-radius: var(--radius);
  background: color-mix(in oklab, var(--surface) 60%, var(--bg));
}

.meas-bucket-ghost-btn {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  width: 100%;
  min-height: 120px;
  border: none;
  background: none;
  color: var(--text-muted);
  cursor: pointer;
  padding: 16px;
  font: inherit;
  transition: background .12s, color .12s;
}

.meas-bucket-ghost-btn:hover {
  background: var(--bg);
  color: var(--text);
}

.meas-bucket-ghost-plus {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 30px;
  border: 1px dashed var(--border);
  border-radius: 999px;
  font-size: 18px;
  line-height: 1;
}

.meas-bucket-ghost-label {
  font-size: 13px;
  font-weight: 600;
}

.meas-bucket-ghost-copy {
  font-size: 12px;
  line-height: 1.5;
  text-align: center;
}

/* ── Bucket board overhaul: wide stacked cards, calm headers, library-style rows ── */

.meas-bucket-card-count {
  font-size: 11px;
  font-weight: 500;
  color: var(--text-muted);
  white-space: nowrap;
  margin-left: 2px;
}

.meas-bucket-card-header .meas-bucket-card-title,
.meas-bucket-card-header .meas-bucket-card-title-input {
  flex: 1;
  min-width: 0;
}

/* Overflow "⋯" menu replacing the crammed inline glyph buttons */
.meas-bucket-menu-wrap {
  position: relative;
  flex-shrink: 0;
}

.meas-bucket-menu-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 26px;
  height: 26px;
  border: 1px solid transparent;
  border-radius: 6px;
  background: transparent;
  color: var(--text-muted);
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  transition: background .12s, border-color .12s, color .12s;
}

.meas-bucket-menu-toggle:hover,
.meas-bucket-menu-wrap.is-open .meas-bucket-menu-toggle {
  border-color: var(--border);
  background: var(--surface);
  color: var(--text);
}

.meas-bucket-menu {
  position: absolute;
  top: calc(100% + 4px);
  right: 0;
  z-index: 2147483000;
  display: none;
  flex-direction: column;
  min-width: 152px;
  max-height: min(340px, calc(100vh - 16px));
  overflow: auto;
  padding: 4px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: 0 14px 34px color-mix(in oklab, #000 20%, transparent);
}

.meas-bucket-menu-wrap.is-open .meas-bucket-menu {
  display: flex;
}

.meas-bucket-menu .meas-bucket-action-btn {
  display: flex;
  align-items: center;
  width: 100%;
  min-width: 0;
  height: auto;
  padding: 7px 10px;
  border-radius: 5px;
  font-size: 12px;
  text-align: left;
  color: var(--text);
}

.meas-bucket-menu .meas-bucket-action-btn.danger {
  color: #dc2626;
}

.meas-bucket-menu .meas-bucket-action-btn.danger:hover {
  background: color-mix(in oklab, #dc2626 12%, var(--bg));
  color: var(--danger);
}
.meas-bucket-menu-subpanel {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-top: 4px;
  padding-top: 4px;
  border-top: 1px solid var(--border);
}

/* Bucket/library rows reuse the Data Library tab pill (.data-library-type-pill);
   keep it from shrinking, and beat the generic .sample-import-file span color. */
.meas-bucket-file-row .data-library-type-pill,
.measurement-library-item .data-library-type-pill {
  flex: 0 0 auto;
  color: var(--pill);
  font-size: 10px;
}

/* Batch identity chip */
.meas-bucket-batch-chip {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  border-radius: 5px;
  font-size: 10px;
  font-weight: 700;
  color: #fff;
  background: var(--chip, #5f7ea6);
}

/* File-row action icons reveal on hover (calmer default) */
.meas-bucket-file-actions .meas-bucket-file-icon-btn {
  opacity: 0;
  transition: opacity .12s ease, background .12s ease, border-color .12s ease, color .12s ease;
}

.meas-bucket-file-item:hover .meas-bucket-file-icon-btn,
.meas-bucket-file-item:focus-within .meas-bucket-file-icon-btn {
  opacity: 1;
}

/* Persistent toolbar + bulk bar (bulk bar reserves height so the stack never jumps) */
.meas-bucket-toolbar {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 8px;
}

.meas-bucket-toolbar .meas-bucket-filter-input {
  flex: 1 1 200px;
  max-width: none;
}

.meas-bucket-bulkbar {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 36px;
  margin-bottom: 10px;
  padding: 5px 10px;
  border: 1px solid transparent;
  border-radius: var(--radius);
  opacity: 0;
  pointer-events: none;
  transition: opacity .12s ease, background .12s ease, border-color .12s ease;
}

.meas-bucket-bulkbar.is-active {
  opacity: 1;
  pointer-events: auto;
  background: color-mix(in oklab, var(--brand) 9%, var(--bg));
  border-color: color-mix(in oklab, var(--brand) 22%, var(--border));
}

.meas-bucket-bulkbar-count {
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
  margin-right: 2px;
}

/* Selection actions live in the toolbar, pushed right, always visible. */
.meas-bucket-toolbar .meas-bucket-bulkbar-count {
  margin-left: auto;
  color: var(--text-muted);
}
.meas-bucket-selection-btn:disabled {
  opacity: 0.42;
  cursor: default;
  pointer-events: none;
}

/* Visible per-bucket batch creation; enabled once files in the bucket are selected. */
.meas-bucket-new-batch-btn {
  flex-shrink: 0;
  font-size: 11px;
  padding: 3px 8px;
}

/* Batch header: name grows so the count + ⋯ menu sit at the right. */
.meas-bucket-batch-name {
  flex: 1;
}
.meas-bucket-batch-header .meas-bucket-menu-toggle {
  width: 22px;
  height: 22px;
  font-size: 14px;
}
/* The ⋯ dropdown must escape the batch's own overflow clip when open. */
.meas-bucket-batch:has(.meas-bucket-menu-wrap.is-open) {
  overflow: visible;
}
.meas-bucket-file-list-loose:has(.meas-bucket-menu-wrap.is-open) {
  overflow: visible;
}
/* File rows create stacking contexts (will-change: transform); an open ⋯ menu's
   row/batch/card must be lifted above later siblings so it renders in front. */
.meas-bucket-file-item:has(.meas-bucket-menu-wrap.is-open),
.meas-bucket-batch:has(.meas-bucket-menu-wrap.is-open),
.meas-bucket-card:has(.meas-bucket-menu-wrap.is-open) {
  position: relative;
  z-index: 2147482999;
}

/* File-row parse-status dot (leading) + inline instrument reassign control. */
.meas-file-status-dot {
  flex: 0 0 auto;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: #9ca3af;
}
.meas-file-status-dot.is-done { background: #16a34a; }
.meas-file-status-dot.is-parsing { background: #d97706; }
.meas-file-status-dot.is-error { background: #dc2626; }
.meas-file-status-dot.is-none { background: color-mix(in oklab, var(--text-muted) 50%, transparent); }
@media (prefers-reduced-motion: no-preference) {
  .meas-file-status-dot.is-parsing { animation: meas-dot-pulse 1.1s ease-in-out infinite; }
}
@keyframes meas-dot-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } }

.meas-file-instrument {
  flex: 0 1 auto;
  min-width: 0;
  max-width: 210px;
  font-size: 12px;
}
/* Reuse the Data Library .dl-action-btn (hidden until row hover) for auto-detect. */
.meas-bucket-file-item:hover .dl-action-btn,
.meas-bucket-file-item:focus-within .dl-action-btn {
  opacity: 1;
}

/* Metadata-loss dialog: Download on the left, Cancel/Confirm on the right. */
.dialog-actions.dialog-actions-split {
  justify-content: space-between;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.dialog-actions-split .dialog-actions-end {
  display: inline-flex;
  align-items: center;
  gap: 8px;
}
.meas-file-instrument-static {
  flex: 0 1 auto;
  min-width: 0;
  font-size: 11px;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.meas-bucket-selection-btn.danger:disabled {
  color: #dc2626;
}

/* Explicit "Move to bucket" popover menu (non-drag path) */
.meas-move-menu {
  position: fixed;
  z-index: 100001;
  min-width: 180px;
  max-height: min(340px, calc(100vh - 20px));
  padding: 5px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  box-shadow: 0 18px 45px color-mix(in oklab, #000 22%, transparent);
  overflow-y: auto;
  overflow-x: hidden;
  overscroll-behavior: contain;
}

.meas-move-menu-label {
  padding: 5px 9px 6px;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.03em;
  text-transform: uppercase;
  color: var(--text-muted);
}

.meas-move-menu-item {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 8px 10px;
  border: none;
  border-radius: 5px;
  background: transparent;
  font: inherit;
  font-size: 12px;
  color: var(--text);
  text-align: left;
  cursor: pointer;
}

.meas-move-menu-item:hover {
  background: var(--bg);
}

.meas-move-menu-item.is-new {
  border-top: 1px solid var(--border);
  margin-top: 4px;
  color: var(--brand);
  font-weight: 600;
}

.meas-plot-placeholder {
  margin-top: 24px;
  padding: 18px;
  min-height: 220px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 8px;
}

.meas-plot-placeholder-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}

.meas-plot-placeholder-copy {
  font-size: 12px;
  line-height: 1.6;
  color: var(--text-muted);
  max-width: 480px;
}

.meas-plot-shell {
  margin-top: 24px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  overflow: hidden;
}

.meas-workspace-layout {
  margin-top: 0;
  display: grid;
  grid-template-columns: minmax(var(--project-side-rail-min), var(--project-side-rail-fr)) minmax(0, var(--project-main-fr));
  gap: 16px;
  align-items: start;
}

.meas-workspace-layout .meas-plot-shell {
  margin-top: 0;
}

.meas-meta-rail {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  overflow: hidden;
  min-height: 0;
  display: flex;
  flex-direction: column;
}

.meas-meta-rail-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  height: 41px;
  padding: 0 14px;
  box-sizing: border-box;
  border-bottom: 1px solid var(--border);
  overflow: hidden;
}

.meas-meta-rail-header > div {
  min-width: 0;
  flex: 1;
}

.meas-meta-rail-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}

.meas-meta-rail-subtitle {
  font-size: 12px;
  line-height: 1.5;
  color: var(--text-muted);
  max-width: 100%;
  overflow: hidden;
  white-space: nowrap;
  -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent);
  mask-image: linear-gradient(to right, #000 calc(100% - 28px), transparent);
}

.meas-meta-rail-subtitle-body {
  margin-bottom: 10px;
}

.meas-meta-rail-status {
  min-height: 18px;
  padding: 6px 14px 0;
  font-size: 12px;
  color: var(--text-muted);
}

.meas-meta-rail-body {
  flex: 1;
  padding: 8px 14px 14px;
  overflow-y: hidden;
  overscroll-behavior: auto;
}
.meas-meta-rail-body.is-scrollable {
  overflow-y: auto;
  overscroll-behavior: contain;
}

.meas-meta-save-btn {
  font: inherit;
  font-size: 11px;
  line-height: 1;
  height: 24px;
  padding: 4px 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--surface);
  color: var(--text);
  cursor: pointer;
  flex-shrink: 0;
  transition: background .12s, color .12s;
}

.meas-meta-save-btn:hover {
  background: var(--bg);
}

.meas-meta-save-btn:disabled {
  opacity: 0.5;
  cursor: default;
}

/* dirty state */
.meas-meta-rail.dirty .meas-meta-save-btn {
  background: #145ea8;
  border-color: #145ea8;
  color: #fff;
}
.meas-meta-rail.dirty .meas-meta-save-btn:hover {
  background: #0f4f94;
  border-color: #0f4f94;
}

/* saved confirmation */
.meas-meta-save-btn.saved {
  background: #16a34a;
  border-color: #16a34a;
  color: #fff;
  pointer-events: none;
}

.meas-meta-empty,
.meas-meta-banner {
  font-size: 12px;
  line-height: 1.5;
  color: var(--text-muted);
}

.meas-meta-banner {
  margin-bottom: 10px;
  padding: 8px 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  color: var(--text);
}

.meas-meta-fields {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 0;
}

.meas-meta-field {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 8px 0;
}

.meas-meta-field:first-child {
  padding-top: 0;
}

.meas-meta-field:last-child {
  padding-bottom: 0;
}

.meas-meta-field-readonly {
  gap: 6px;
}
.meas-meta-field-value {
  font-size: 12px;
  color: var(--text-muted);
  word-break: break-word;
}

.meas-meta-field-label {
  font-size: 10px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-muted);
}

.meas-meta-readonly-row {
  display: flex;
  align-items: stretch;
}

.meas-meta-readonly-value {
  min-width: 0;
  flex: 1;
  padding: 7px 7px 7px 10px;
  max-height: 132px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: color-mix(in oklab, var(--input-bg) 78%, var(--surface) 22%);
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  font-size: 9.5px;
  line-height: 1.35;
  color: var(--text-muted);
  display: flex;
  align-items: flex-start;
  gap: 8px;
  overflow: auto;
}

.meas-meta-readonly-text {
  min-width: 0;
  flex: 1;
  white-space: pre-wrap;
  overflow-wrap: anywhere;
}

.meas-meta-copy-btn {
  width: 24px;
  min-width: 24px;
  height: 24px;
  border: 0;
  border-radius: calc(var(--radius) - 1px);
  background: transparent;
  color: var(--text-muted);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  transition: background .12s, color .12s, border-color .12s;
}

.meas-meta-copy-btn svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.meas-meta-copy-btn:hover:not(:disabled) {
  background: var(--bg);
  color: var(--text);
}

.meas-meta-copy-btn.copied {
  color: #16a34a;
}

.meas-meta-copy-btn:disabled {
  opacity: 0.45;
  cursor: default;
}

.meas-meta-field-unit {
  font-weight: 400;
}

.meas-meta-field-input {
  width: 100%;
  padding: 7px 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--input-bg);
  font: inherit;
  font-size: 13px;
  color: var(--text);
  outline: none;
}

.meas-meta-field-input:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--focus-ring);
}

.meas-meta-field textarea.meas-meta-field-input {
  min-height: 74px;
  resize: vertical;
}

.meas-meta-field-notes {
  min-height: 120px !important;
}

.tag-wrap {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  align-items: center;
  min-height: 36px;
  padding: 6px 8px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--input-bg);
}

.tag-wrap:focus-within {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--focus-ring);
}

.tag-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 8px;
  border-radius: 999px;
  background: var(--bg);
  font-size: 12px;
  color: var(--text);
}

.tag-chip-x {
  cursor: pointer;
  opacity: 0.6;
  font-size: 13px;
  line-height: 1;
}

.tag-chip-x:hover {
  opacity: 1;
}

.tag-new-input {
  border: none;
  outline: none;
  background: transparent;
  font: inherit;
  font-size: 12px;
  color: var(--text);
  min-width: 80px;
  flex: 1 1 80px;
}

.tag-backing {
  display: none;
}

.meas-plot-shell-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  height: 41px;
  padding: 0 14px;
  box-sizing: border-box;
  border-bottom: 1px solid var(--border);
  overflow: hidden;
}

.meas-plot-shell-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}

.meas-plot-shell-status {
  font-size: 12px;
  color: var(--text-muted);
  line-height: 24px;
  white-space: nowrap;
}

.meas-plot-shell-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 24px;
  flex-wrap: nowrap;
}

.meas-plot-controls {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  gap: 10px 14px;
  padding: 14px;
  border-bottom: 1px solid var(--border);
}

.meas-plot-control {
  display: flex;
  flex-direction: column;
  flex: 1 1 140px;
  min-width: 120px;
}

.meas-plot-control label {
  display: flex;
  align-items: baseline;
  gap: 5px;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-muted);
  margin-bottom: 5px;
}

.meas-plot-control-hint {
  font-size: 9px;
  font-weight: 500;
  letter-spacing: .03em;
  text-transform: none;
  opacity: .7;
}

.meas-plot-control select {
  width: 100%;
  padding: 7px 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  font: inherit;
  font-size: 13px;
  color: var(--text);
  background: var(--surface);
}

/* reset axes / legend buttons grouped with the axis controls */
.meas-plot-control-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-left: auto;
  flex: 0 0 auto;
}

.meas-plot-control-meta {
  font-size: 12px;
  color: var(--text-muted);
}

/* cycle scrubber row — only present when a single multi-cycle file is selected */
.meas-plot-cycle-row {
  padding: 0 14px;
}
.meas-plot-cycle-row:has(.meas-plot-cycle-controls:empty) {
  display: none;
}

.meas-plot-secondary {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  padding: 0 14px 14px;
  border-bottom: 1px solid var(--border);
}

.meas-plot-fullscreen-btn,
.meas-plot-legend-btn {
  font: inherit;
  font-size: 12px;
  line-height: 1;
  height: 24px;
  padding: 4px 8px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-sizing: border-box;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: none;
  color: var(--text-muted);
  cursor: pointer;
  transition: background .12s, color .12s;
}
.meas-plot-fullscreen-btn:hover,
.meas-plot-legend-btn:hover { background: var(--bg); color: var(--text); }

.meas-plot-resolution-note {
  font-size: 11px;
  color: var(--text-muted);
  padding-top: 2px;
}

/* cycle scrubber */
.cycle-scrubber { display: flex; flex-direction: column; gap: 8px; flex: 1; padding-top: 12px; }

.cycle-scrubber-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.cycle-scrubber-label {
  font-size: 11px;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: .05em;
}

.cycle-mode-tabs { display: flex; }
.cycle-mode-tab {
  font: 11px/1 system-ui, sans-serif;
  padding: 3px 8px;
  border: 1px solid var(--border);
  background: none;
  color: var(--text-muted);
  cursor: pointer;
}
.cycle-mode-tab:first-child { border-radius: var(--radius) 0 0 var(--radius); }
.cycle-mode-tab:last-child  { border-radius: 0 var(--radius) var(--radius) 0; border-left: none; }
.cycle-mode-tab.active { background: var(--bg); color: var(--text); }
.cycle-mode-tab:hover:not(.active) { background: var(--bg); }

.cycle-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  padding: 0 5px;
  margin-left: 4px;
  height: 16px;
  border-radius: 8px;
  background: var(--bg);
  color: var(--text-muted);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0;
  vertical-align: middle;
}

.cycle-slider-wrap {
  display: flex;
  align-items: center;
  gap: 10px;
}

.cycle-arrow {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  height: 24px;
  padding: 0;
  font-size: 16px;
  line-height: 1;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text);
  cursor: pointer;
  transition: background .12s, color .12s, border-color .12s;
}
.cycle-arrow:hover:not(:disabled) {
  background: var(--bg);
  border-color: var(--text-muted);
}
.cycle-arrow:disabled {
  opacity: .35;
  cursor: not-allowed;
}

.flat-cycle-slider {
  flex: 1;
  min-width: 160px;
  height: 20px;
  display: flex;
  align-items: center;
  cursor: pointer;
  user-select: none;
}

.flat-cycle-slider-track {
  flex: 1;
  height: 2px;
  background: var(--border);
  border-radius: 1px;
  position: relative;
}

.flat-cycle-slider-fill {
  position: absolute;
  top: 0;
  left: 0;
  height: 100%;
  background: var(--text-muted);
  border-radius: 1px;
  pointer-events: none;
}

.flat-cycle-slider-thumb {
  position: absolute;
  top: 50%;
  width: 8px;
  height: 14px;
  background: var(--text);
  border-radius: 2px;
  transform: translate(-50%, -50%);
  pointer-events: none;
  transition: background .1s;
}

.flat-cycle-slider:hover .flat-cycle-slider-thumb,
.flat-cycle-slider.dragging .flat-cycle-slider-thumb {
  background: #145ea8;
}

.cycle-slider-value {
  font-size: 12px;
  color: var(--text);
  white-space: nowrap;
  min-width: 60px;
}

.cycle-onion-label {
  display: flex;
  align-items: center;
  gap: 5px;
  font-size: 12px;
  color: var(--text-muted);
  cursor: pointer;
  white-space: nowrap;
}

.cycle-list-wrap {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}

.cycle-list-input {
  flex: 1;
  min-width: 120px;
  font: 12px/1 system-ui, sans-serif;
  padding: 5px 8px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--input-bg);
  color: var(--text);
  outline: none;
}
.cycle-list-input:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--focus-ring);
}

.cycle-list-hint {
  font-size: 11px;
  color: var(--text-muted);
  white-space: nowrap;
}

.meas-plot-stage {
  min-height: 640px;
  padding: 14px;
  position: relative;
}

.meas-plot-manual-btn {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  padding: 10px 22px;
  font-size: 13px;
  font-weight: 600;
  color: #fff7f2;
  background: var(--brand);
  border: 1px solid var(--brand);
  border-radius: var(--radius);
  cursor: pointer;
  transition: background .12s, border-color .12s, transform .12s;
}

.meas-plot-manual-btn:hover {
  background: var(--brand-strong);
  border-color: var(--brand-strong);
  transform: translate(-50%, -50%) translateY(-1px);
}

.meas-plot-manual-btn[hidden] {
  display: none;
}

.meas-plot-shell--idle .meas-plot-stage {
  min-height: 0;
}

.meas-plot-canvas {
  width: 100%;
  min-height: 480px;
}

.meas-plot-shell--idle .meas-plot-canvas {
  min-height: 0;
  height: 0 !important;
}

.meas-plot-empty {
  min-height: 480px;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  color: var(--text-muted);
  text-align: center;
  padding: 24px;
}

.meas-plot-shell--idle .meas-plot-empty {
  min-height: 80px;
}

.meas-plot-shell.fullscreen {
  position: fixed;
  inset: 24px;
  z-index: 1000;
  margin-top: 0;
  display: flex;
  flex-direction: column;
  box-shadow: 0 10px 24px rgba(0, 0, 0, 0.22);
}

.meas-plot-shell.fullscreen .meas-plot-stage {
  flex: 1;
  min-height: 0;
}

.meas-plot-shell.fullscreen .meas-plot-canvas,
.meas-plot-shell.fullscreen .meas-plot-empty {
  min-height: calc(100vh - 220px);
}

@media (max-width: 960px) {
  .meas-workspace-layout {
    grid-template-columns: 1fr;
  }

  .meas-meta-rail {
    height: auto;
  }

  .meas-plot-control {
    flex-basis: calc(50% - 7px);
  }
  .meas-plot-control-actions {
    margin-left: 0;
  }
}

@media (max-width: 640px) {
  .project-inline-form-row {
    grid-template-columns: 1fr;
  }

  .meas-plot-control {
    flex-basis: 100%;
  }
}

.measurement-form-inline-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 140px;
  gap: 12px;
}

/* experiment form */
.exp-form-hd {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 24px;
}
.exp-form-hd span { font-size: 15px; font-weight: 600; color: var(--text); }
.exp-form-hd-actions { display: flex; gap: 6px; }

.form-field { margin-bottom: 16px; }
.form-label {
  display: block;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-muted);
  margin-bottom: 5px;
}
.form-input, .form-select, .form-textarea {
  width: 100%;
  padding: 7px 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  font: inherit;
  font-size: 13px;
  color: var(--text);
  background: var(--surface);
  outline: none;
  transition: border-color .15s;
}
.form-input:focus, .form-select:focus, .form-textarea:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--focus-ring);
}
.form-textarea { resize: vertical; min-height: 80px; }
.form-row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }

.exp-edit-btn, .btn-cancel, .btn-save {
  font: inherit;
  font-size: 12px;
  padding: 5px 12px;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  cursor: pointer;
  transition: background .12s;
  flex-shrink: 0;
}
.exp-edit-btn, .btn-cancel { background: var(--surface); color: var(--text-muted); }
.exp-edit-btn:hover, .btn-cancel:hover { background: var(--bg); color: var(--text); }
.btn-save { background: var(--brand); color: #fff7f2; border-color: var(--brand); transition: background .12s, border-color .12s; }
.btn-save:hover { background: var(--brand-strong); border-color: var(--brand-strong); }
.btn-save:disabled { opacity: .6; cursor: default; }

/* dirty form state — accent the save button */
.exp-form-hd.dirty .btn-save { background: #145ea8; border-color: #145ea8; }
.exp-form-hd.dirty .btn-save:hover { background: #0f4f94; border-color: #0f4f94; }

/* saved confirmation state */
.btn-save.saved { background: #16a34a; border-color: #16a34a; pointer-events: none; }

/* unsaved-changes guard overlay */
.meas-form-guard-overlay {
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0.93);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 20;
}
.meas-form-guard {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  padding: 32px 28px;
  max-width: 380px;
  text-align: center;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: 0 6px 16px rgba(0,0,0,.10);
}
.meas-form-guard-msg { font-size: 14px; color: var(--text); line-height: 1.5; }
.meas-form-guard-actions { display: flex; gap: 8px; }
.meas-form-guard-abandon {
  font: inherit;
  font-size: 13px;
  padding: 6px 14px;
  border: 1px solid #fca5a5;
  border-radius: var(--radius);
  background: #fee2e2;
  color: var(--danger);
  cursor: pointer;
  transition: background .12s;
}
.meas-form-guard-abandon:hover { background: #fecaca; }

/* status / type / confidence badges */
.badge {
  display: inline-block;
  font-size: 11px;
  padding: 2px 7px;
  border: 1px solid var(--border);
  border-radius: 3px;
  color: var(--text-muted);
  white-space: nowrap;
  text-transform: lowercase;
}

/* experiment detail */
.experiment-detail-shell {
  min-height: 100%;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.experiment-info-box {
  padding-bottom: 16px;
}

.experiment-detail-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  padding: 0;
}

.experiment-detail-title-block {
  display: block;
  min-width: 0;
  flex: 0 1 auto;
  max-width: calc(100% - 60px);
}

/* Color dot — experiment header ball */
.exp-color-dot {
  width: 10px;
  height: 10px;
  box-sizing: border-box;
  min-height: 0;
  border-radius: 50%;
  border: 1px solid color-mix(in oklab, #000 14%, rgba(255, 255, 255, 0.26));
  cursor: pointer;
  flex-shrink: 0;
  margin: 0 2px 0 0;
  padding: 0;
  color: #fff;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: 0;
  box-shadow: none;
  transition: border-color 80ms, filter 80ms;
}
.exp-color-dot:hover { filter: none; border-color: color-mix(in oklab, var(--brand) 34%, var(--border)); }
.exp-color-dot.bloom-picker-anchor-pressing,
.exp-color-dot.bloom-picker-anchor-active {
  transform: none;
  filter: none;
}

.entity-ball-m {
  width: 14px;
  height: 30px;
  border-radius: 9px;
  font-size: 8px;
  margin-top: 0;
}

.experiment-detail-title-main {
  min-width: 0;
}

.experiment-detail-title-input {
  display: block;
  width: auto;
  min-width: 60px;
  max-width: 100%;
  box-sizing: border-box;
  margin: 0;
  padding: 0 4px;
  border: 1px solid transparent;
  border-radius: 7px;
  background: transparent;
  color: var(--text);
  font: inherit;
  font-size: 22px;
  font-weight: 650;
  line-height: 1.05;
  outline: none;
  transition: border-color 120ms;
}
.experiment-detail-title-input:hover { border-color: var(--border); }
.experiment-detail-title-input:focus { border-color: var(--panel-strong); background: var(--surface); }

.experiment-title-mirror {
  position: absolute;
  left: -9999px;
  top: -9999px;
  visibility: hidden;
  white-space: pre;
  pointer-events: none;
}

.experiment-detail-meta {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 16px;
  margin-top: 10px;
  padding-left: 4px;
}

/* Clickable meta badges (status, confidence) */
.exp-meta-btn {
  cursor: pointer;
  border: none;
  padding: 0;
  background: transparent;
  color: var(--text);
  font: inherit;
  font-size: 12px;
  transition: opacity 120ms;
}
.exp-meta-btn:hover { opacity: 0.75; }
.exp-meta-btn-empty {
  opacity: 0.55;
  font-style: italic;
}

.experiment-meta-field {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
}

.experiment-meta-label {
  color: var(--text-muted);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
}

.experiment-meta-value { color: var(--text); }

.experiment-detail-actions {
  display: flex;
  align-items: center;
  justify-content: flex-end;
  flex-wrap: wrap;
  gap: 7px;
  flex-shrink: 0;
}

.exp-title-row {
  display: flex;
  align-items: baseline;
  gap: 10px;
  flex-wrap: wrap;
}
.exp-detail-title {
  font-size: 18px;
  font-weight: 600;
  color: var(--text);
  margin: 0;
}
.exp-status-inline {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .02em;
  text-transform: lowercase;
}
.exp-status-inline-draft { color: #9ca3af; }
.exp-status-inline-planned { color: #2563eb; }
.exp-status-inline-in-progress { color: #dc2626; }
.exp-status-inline-complete { color: #16a34a; }
.exp-status-inline-completed { color: #16a34a; }
.exp-status-inline-archived { color: #7c3aed; }
.exp-status-inline-done { color: #16a34a; }
.exp-status-inline-active { color: #2563eb; }
.exp-status-inline-cancelled { color: #dc2626; }
.exp-detail-badges {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  margin: 10px 0 20px;
}
.exp-focus-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
  margin-bottom: 12px;
}
.exp-focus-grid-3 {
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin-bottom: 20px;
}
.exp-focus-card {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  padding: 14px 16px;
}
.experiment-section-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-bottom: 10px;
}
/* ── Members grouped layout ─────────────────────── */
.exp-members-groups { display: grid; gap: 14px; }
.exp-member-group { display: grid; gap: 6px; }
.exp-member-group-header {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 0 2px;
}
.exp-member-group-label {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.exp-member-group-count {
  font-size: 10px;
  font-weight: 700;
  min-width: 16px;
  height: 16px;
  line-height: 16px;
  text-align: center;
  padding: 0 4px;
  border-radius: 999px;
  background: var(--panel-strong);
  color: var(--text-muted);
}
.exp-members-total-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--panel-strong);
  color: var(--text-muted);
  font-size: 10px;
  font-weight: 700;
  margin-left: 4px;
  vertical-align: middle;
}
/* ── Member table ────────────────────────────────── */
.experiment-member-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
  table-layout: fixed;
}
.experiment-member-table thead th {
  text-align: left;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--text-muted);
  padding: 4px 8px;
  border-bottom: 1px solid var(--border);
  white-space: nowrap;
}
.experiment-member-table tbody td {
  padding: 6px 8px;
  border-bottom: 1px solid var(--border);
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  vertical-align: middle;
}
.experiment-member-table tbody tr:hover td {
  background: color-mix(in oklab, var(--brand) 4%, var(--surface));
}
.exp-mtable-cell-color { width: 30px; padding-right: 0; }
.exp-mtable-cell-title { width: 26%; cursor: pointer; font-weight: 600; }
.exp-mtable-cell-title:hover .exp-mtable-title-text { color: var(--brand); }
.exp-mtable-cell-source { color: var(--text-muted); }
.exp-mtable-cell-actions {
  width: 104px;
  white-space: nowrap;
  text-align: right;
  padding-left: 0;
  overflow: visible;
}
.exp-mtable-cell-actions > * { vertical-align: middle; }
.exp-mtable-val { color: inherit; }
.exp-mtable-source-wrap {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
  max-width: 100%;
}
.exp-mtable-type-ball {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  font-size: 10px;
  font-weight: 800;
  line-height: 1;
  color: #fff;
}
.exp-mtable-multi {
  display: inline-flex;
  align-items: center;
  height: 18px;
  padding: 0 7px;
  border-radius: 999px;
  background: var(--panel-strong);
  color: var(--text);
  font-size: 11px;
  font-weight: 600;
  cursor: pointer;
}
.exp-mtable-cell-title { cursor: pointer; }
/* Hidden-from-graph members read as muted; actions stay crisp for easy un-hide. */
.experiment-member-row.is-member-hidden td:not(.exp-mtable-cell-actions) {
  opacity: 0.4;
  transition: opacity 120ms ease;
}
/* Instant hover tooltips for the members table (JS-positioned, no native delay). */
.exp-member-hovertip {
  position: fixed;
  z-index: 4000;
  pointer-events: none;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.22);
}
.exp-member-hovertip-list {
  max-width: 360px;
  padding: 8px 10px;
  font-size: 12px;
  line-height: 1.5;
  color: var(--text);
  white-space: pre-line;
}
.exp-member-hovertip-legend {
  display: flex;
  flex-direction: column;
  gap: 3px;
  white-space: normal;
}
.exp-member-hovertip-legend .exp-tip-row {
  display: block;
  white-space: nowrap;
  font-weight: 600;
}
.exp-member-hovertip-thumb {
  padding: 0;
  background: #fff;
  line-height: 0;
  overflow: hidden;
}
.exp-member-hovertip-thumb img {
  display: block;
  width: 320px;
  height: 180px;
}
/* Keep action buttons on one row inside the table cell, always visible. */
.exp-mtable-cell-actions .experiment-member-dataset-btn,
.exp-mtable-cell-actions .experiment-member-hide-btn,
.exp-mtable-cell-actions .experiment-member-remove-btn {
  display: inline-grid;
  vertical-align: middle;
  opacity: 1;
}
/* ── Color picker popup (shared by experiment + member pickers) ───────── */
.asset-subgroup-color-picker-popup {
  position: absolute;
  z-index: 1200;
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 12px;
  min-width: 208px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.2);
}
.asset-subgroup-color-picker-swatches {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: 6px;
}
.asset-subgroup-color-swatch {
  width: 24px;
  height: 24px;
  padding: 0;
  border: 2px solid transparent;
  border-radius: 50%;
  box-shadow: 0 0 0 1px var(--border) inset;
  cursor: pointer;
  transition: transform 100ms ease;
}
.asset-subgroup-color-swatch:hover { transform: scale(1.12); }
.asset-subgroup-color-swatch-active { border-color: var(--text); }
.asset-subgroup-color-picker-footer {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  border-top: 1px solid var(--border);
  padding-top: 10px;
}
.asset-subgroup-color-custom-label {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--text-muted);
}
.asset-subgroup-color-custom-input {
  width: 30px;
  height: 26px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: none;
  cursor: pointer;
}
.asset-subgroup-color-reset-btn { font-size: 12px; }
/* ── Type chip ───────────────────────────────────── */
.exp-member-chip {
  flex-shrink: 0;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  font-weight: 800;
  border: none;
  background: #9ca3af;
  color: #fff;
}
.exp-member-chip-measurement { background: #4f8a78; }
.exp-member-chip-sample      { background: #8b6aa9; }
.exp-member-chip-file        { background: #c07b45; }
.exp-member-chip-reference   { background: #b5566e; }
.exp-member-chip-asset       { background: #3f8f9e; }
/* ── Member color dot (click to recolor) ─────────────── */
.exp-member-color-dot {
  padding: 0;
  cursor: pointer;
  border: 2px solid transparent;
  box-shadow: 0 0 0 1px var(--border) inset;
  transition: transform 120ms ease, box-shadow 120ms ease;
}
.exp-member-color-dot:hover {
  transform: scale(1.12);
  box-shadow: 0 0 0 2px color-mix(in oklab, var(--brand) 45%, var(--border)) inset;
}
.experiment-member-dataset-btn {
  display: grid;
  place-items: center;
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  border: 1px solid transparent;
  border-radius: 5px;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  opacity: 0;
  transition: opacity 120ms ease, background 120ms ease, border-color 120ms ease;
}
.experiment-member-row:hover .experiment-member-dataset-btn { opacity: 1; }
.experiment-member-dataset-btn:hover {
  border-color: var(--border);
  background: var(--surface-hover, var(--surface));
  color: var(--brand);
}
.experiment-member-hide-btn,
.experiment-member-remove-btn {
  display: grid;
  place-items: center;
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  border: 1px solid transparent;
  border-radius: 6px;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  opacity: 0.35;
  transition: opacity 120ms ease, color 120ms ease, background 120ms ease, border-color 120ms ease;
}
.experiment-member-hide-btn.is-hidden {
  opacity: 1;
  color: var(--brand, #4f8a78);
}
.experiment-member-row:hover .experiment-member-hide-btn,
.experiment-member-row:hover .experiment-member-remove-btn { opacity: 1; }
.experiment-member-hide-btn:hover {
  border-color: var(--border);
  background: var(--surface-hover, var(--surface));
}
.experiment-member-remove-btn:hover {
  color: var(--danger);
  border-color: color-mix(in oklab, var(--danger) 40%, var(--border));
  background: var(--danger-soft);
}
/* ── Empty state ─────────────────────────────────── */
.exp-members-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  padding: 24px 16px;
  border: 1.5px dashed var(--border);
  border-radius: var(--radius);
  background: transparent;
  text-align: center;
}
.exp-members-empty-hint { font-size: 12px; color: var(--text-muted); margin: 0; }
.exp-members-empty-add {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 6px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text);
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  transition: border-color 120ms ease, background 120ms ease;
}
.exp-members-empty-add svg { width: 13px; height: 13px; flex-shrink: 0; }
.exp-members-empty-add:hover {
  border-color: color-mix(in oklab, var(--brand) 40%, var(--border));
  background: color-mix(in oklab, var(--brand) 5%, var(--surface));
}
/* ── Add button (header) ─────────────────────────── */
.exp-members-add-btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 4px 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text);
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
  transition: border-color 120ms ease, background 120ms ease;
}
.exp-members-add-btn svg { width: 13px; height: 13px; flex-shrink: 0; }
.exp-members-add-btn:hover {
  border-color: color-mix(in oklab, var(--brand) 40%, var(--border));
  background: color-mix(in oklab, var(--brand) 5%, var(--surface));
}
.experiment-graph-shell {
  display: grid;
  gap: 14px;
}
.experiment-graph-toolbar {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.experiment-graph-toolbar-copy {
  font-size: 12px;
  color: var(--text-muted);
  margin-top: 4px;
}
.experiment-graph-stage-shell .graph-canvas-shell {
  height: 440px;
  min-height: 440px;
  overflow: auto;
  cursor: default;
  touch-action: auto;
  background-color: var(--bg);
  background-image: radial-gradient(circle, var(--canvas-grid, rgba(148, 163, 184, 0.28)) 1.2px, transparent 1.2px);
  background-size: 22px 22px;
}
.experiment-graph-scene {
  position: relative;
  inset: auto;
  transform: none;
  display: block;
}
.experiment-graph-stage {
  position: absolute;
  inset: 0;
}
.experiment-graph-edge-layer {
  width: 100%;
  height: 100%;
}
/* Task 12: wider edge hit area — !important needed, graph.css loads after app.css */
.experiment-graph-edge-layer .graph-edge-hit {
  stroke: transparent !important;
  stroke-width: 22px !important;
  cursor: pointer;
  pointer-events: stroke !important;
}
/* Task 13: hook offset only, no size change (size change breaks transform centering) */
.experiment-graph-node .graph-node-hook-in { left: -11px; }
.experiment-graph-node .graph-node-hook-out { right: -11px; }
/* Snap target highlight during edge drag */
.experiment-graph-snap-target {
  box-shadow: 0 0 0 2px var(--brand), 0 4px 16px rgba(13,18,40,0.14) !important;
  border-color: color-mix(in oklab, var(--brand) 50%, var(--border)) !important;
}
/* Live edge: glides to its target via JS easing; solid brand glow when snapped. */
.experiment-graph-edge-live.is-snapped {
  stroke: var(--brand);
  stroke-width: 2.4px;
  filter: drop-shadow(0 0 3px color-mix(in oklab, var(--brand) 55%, transparent));
  transition: stroke 120ms ease, stroke-width 120ms ease;
}
/* Note nodes — match edge label style */
.experiment-graph-note-node {
  position: absolute;
  display: inline-flex;
  align-items: center;
  cursor: grab;
  user-select: none;
  -webkit-user-select: none;
  z-index: 20;
}
.experiment-graph-note-node:active { cursor: grabbing; }
.experiment-graph-note-body {
  padding: 4px 8px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 5px;
  box-shadow: 0 1px 6px rgba(13,18,40,0.10);
  min-width: 60px;
  max-width: 180px;
  cursor: default;
}
.experiment-graph-note-text {
  font-size: 11px;
  line-height: 1.4;
  color: var(--text);
  word-break: break-word;
  white-space: normal;
  display: block;
}
.experiment-graph-note-placeholder {
  font-size: 11px;
  color: var(--text-muted);
  font-style: italic;
  display: block;
}
.experiment-graph-note-textarea {
  display: block;
  min-width: 120px;
  max-width: 200px;
  min-height: 28px;
  max-height: 96px;
  padding: 4px 6px;
  border: 1px solid color-mix(in oklab, var(--brand) 36%, var(--border));
  border-radius: 5px;
  background: color-mix(in oklab, var(--surface) 96%, white);
  box-shadow: 0 4px 12px rgba(13,18,40,0.08);
  font: inherit;
  font-size: 11px;
  text-align: left;
  line-height: 1.4;
  resize: none;
  overflow: hidden;
  cursor: text;
  user-select: text;
  -webkit-user-select: text;
}
.experiment-graph-note-textarea:focus { outline: none; }
.experiment-graph-note-hook {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  flex-shrink: 0;
  background: transparent;
  border: none;
  cursor: crosshair;
  padding: 0;
  pointer-events: auto;
  z-index: 1;
}
.experiment-graph-note-hook-left { margin-right: -14px; }
.experiment-graph-note-hook-right { margin-left: -14px; }
.experiment-graph-note-hook .graph-node-hook-icon {
  width: 16px;
  height: 16px;
  display: block;
  pointer-events: none;
}
.experiment-graph-note-hook .graph-node-hook-icon circle {
  fill: var(--card);
  stroke: var(--panel-strong);
  stroke-width: 1.5;
  vector-effect: non-scaling-stroke;
  transition: stroke 120ms ease, fill 120ms ease;
}
.experiment-graph-note-hook:hover .graph-node-hook-icon circle {
  stroke: var(--brand);
  fill: color-mix(in oklab, var(--brand) 10%, var(--card));
}
[data-experiment-graph-stage] { pointer-events: none; }
.experiment-graph-node,
.experiment-graph-note-node { pointer-events: auto; }
.experiment-graph-node {
  position: absolute;
  align-items: center;
  padding: 8px 14px 8px 11px;
  height: auto !important;
  cursor: grab;
  transition: box-shadow 120ms ease, border-color 120ms ease;
}
.experiment-graph-node:hover {
  box-shadow: 0 4px 16px rgba(13, 18, 40, 0.10), 0 0 0 1px color-mix(in oklab, var(--brand) 18%, transparent);
}
.experiment-graph-node.is-pulsing {
  animation: experimentGraphNodePulse .8s ease;
}
.experiment-graph-node .graph-node-main {
  width: 100%;
  padding-right: 0;
  align-items: center;
  justify-content: center;
}
.experiment-graph-node .graph-node-title-row {
  width: 100%;
  justify-content: flex-start;
  gap: 6px;
}
.experiment-graph-node .graph-node-title {
  text-align: left;
  font-size: 12px;
  font-weight: 600;
  white-space: normal;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.3;
  word-break: break-word;
}
.experiment-graph-node .graph-node-hook-left,
.experiment-graph-node .graph-node-hook-right {
  top: 50%;
  margin-top: 0;
}
.experiment-graph-node .graph-node-hook-icon {
  width: 16px;
  height: 16px;
}
.experiment-graph-node .graph-node-hook-icon circle {
  fill: var(--card);
  stroke: var(--panel-strong);
  stroke-width: 1.5;
  vector-effect: non-scaling-stroke;
  transition: stroke 120ms ease, fill 120ms ease;
}
.experiment-graph-node .graph-node-hook:hover:not(:disabled) .graph-node-hook-icon circle,
.experiment-graph-node .graph-hook-active .graph-node-hook-icon circle,
.experiment-graph-node .graph-hook-snap .graph-node-hook-icon circle {
  stroke: var(--brand);
  fill: color-mix(in oklab, var(--brand) 10%, var(--card));
}
/* When magnetically snapped, make the target's "in" notch read as filled/active. */
.experiment-graph-snap-target .graph-node-hook-in .graph-node-hook-icon circle,
.experiment-graph-snap-target .experiment-graph-note-hook-left .graph-node-hook-icon circle {
  stroke: var(--brand) !important;
  fill: var(--brand) !important;
}
.experiment-graph-edge-label-node {
  position: absolute;
  transform: translate(-50%, -50%);
  width: max-content;
  max-width: 128px;
  padding: 4px 8px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 5px;
  box-shadow: 0 1px 6px rgba(13, 18, 40, 0.10);
  font-size: 11px;
  line-height: 1.4;
  color: var(--text);
  text-align: center;
  word-break: break-word;
  white-space: normal;
  pointer-events: auto;
  cursor: default;
  user-select: none;
}
.experiment-graph-edge-line {
  stroke-dasharray: none;
}
.experiment-graph-edge-editor {
  position: absolute;
  transform: translate(-50%, -50%);
  width: max-content;
  min-width: 140px;
  max-width: 220px;
}
.experiment-graph-edge-editor-input {
  display: block;
  min-height: 28px;
  max-height: 96px;
  padding: 5px 10px;
  border: 1px solid color-mix(in oklab, var(--brand) 36%, var(--border));
  border-radius: 8px;
  background: color-mix(in oklab, var(--surface) 96%, white);
  box-shadow: 0 4px 12px rgba(13, 18, 40, 0.08);
  font-size: 11px;
  text-align: center;
  resize: none;
  overflow: hidden;
  line-height: 1.4;
  word-break: break-word;
}
.experiment-graph-edge-group.is-selected .graph-edge-authored {
  stroke-width: 3.2;
}
.experiment-graph-edge-live {
  stroke-dasharray: 7 5;
}
@keyframes experimentGraphNodePulse {
  0% { box-shadow: 0 0 0 0 color-mix(in oklab, var(--brand) 28%, transparent); }
  100% { box-shadow: 0 0 0 12px transparent; }
}
.exp-section {
  margin-bottom: 20px;
}
.exp-section-label {
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: var(--text-muted);
  margin-bottom: 6px;
}
.exp-section-body {
  font-size: 13px;
  color: var(--text);
  line-height: 1.6;
  white-space: pre-wrap;
}
.exp-divider {
  border: none;
  border-top: 1px solid var(--border);
  margin: 24px 0;
}
/* ── Assumptions list ───────────────────────────────── */
.exp-assumptions-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  gap: 6px;
}
.exp-assumption-item {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  font-size: 13px;
  line-height: 1.5;
  color: var(--text);
  padding: 6px 10px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.exp-assumption-item::before {
  content: "⊨";
  flex-shrink: 0;
  font-size: 11px;
  color: var(--text-muted);
  margin-top: 2px;
}
/* ── Results table ──────────────────────────────────── */
.exp-results-table {
  display: grid;
  gap: 4px;
}
.exp-result-row {
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: baseline;
  gap: 10px 14px;
  padding: 7px 10px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.exp-result-name {
  font-size: 12px;
  font-weight: 600;
  color: var(--text-muted);
}
.exp-result-value {
  font-size: 14px;
  font-weight: 700;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.exp-result-uncertainty {
  font-size: 12px;
  font-weight: 400;
  color: var(--text-muted);
}
.exp-result-unit {
  font-size: 12px;
  color: var(--text-muted);
  white-space: nowrap;
}
/* ── Inline editable textarea ───────────────────────── */
.exp-inline-textarea {
  display: block;
  width: 100%;
  box-sizing: border-box;
  resize: none;
  overflow: hidden;
  border: none;
  border-bottom: 1px solid transparent;
  border-radius: 0;
  background: transparent;
  color: var(--text);
  font: inherit;
  font-size: 13px;
  line-height: 1.6;
  padding: 2px 0;
  transition: border-color 120ms;
}
.exp-inline-textarea:hover { border-bottom-color: var(--border); }
.exp-inline-textarea:focus {
  border-bottom-color: var(--brand);
  outline: none;
}
.exp-inline-textarea::placeholder { color: var(--text-muted); font-style: italic; }
/* ── Inline editable lists ──────────────────────────── */
.exp-inline-list { display: grid; gap: 5px; margin-bottom: 6px; }
.exp-inline-list-row {
  display: flex;
  align-items: center;
  gap: 6px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 4px 6px 4px 10px;
}
.exp-inline-list-row:focus-within {
  border-color: var(--brand);
}
.exp-assumption-prefix {
  font-size: 11px;
  color: var(--text-muted);
  flex-shrink: 0;
  user-select: none;
}
.exp-inline-list-input {
  flex: 1;
  min-width: 0;
  border: none;
  background: transparent;
  color: var(--text);
  font: inherit;
  font-size: 13px;
  padding: 2px 0;
  outline: none;
}
.exp-inline-list-input::placeholder { color: var(--text-muted); font-style: italic; }
.exp-inline-result-row {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr auto;
  gap: 0;
  align-items: stretch;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
}
.exp-inline-result-row:focus-within { border-color: var(--brand); }
.exp-inline-result-row .exp-inline-list-input {
  padding: 5px 8px;
  border-right: 1px solid var(--border);
  font-size: 13px;
}
.exp-inline-result-row .exp-inline-list-input:last-of-type { border-right: none; }
.exp-inline-result-row .exp-form-list-remove {
  border-left: 1px solid var(--border);
  border-radius: 0;
  width: 28px;
  height: auto;
}
/* ── Form dynamic lists ─────────────────────────────── */
.exp-form-list {
  display: grid;
  gap: 6px;
  margin-bottom: 6px;
}
.exp-form-list-row {
  display: flex;
  align-items: center;
  gap: 6px;
}
.exp-form-list-input {
  flex: 1;
}
.exp-form-result-row {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr 1fr auto;
  gap: 6px;
  align-items: center;
}
.exp-form-list-remove {
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  border-radius: 4px;
  border: none;
  background: transparent;
  color: var(--text-muted);
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 100ms, color 100ms;
}
.exp-form-list-remove:hover {
  background: color-mix(in oklab, var(--danger, #b91c1c) 10%, var(--surface));
  color: var(--danger, #b91c1c);
}
.exp-form-add-row-btn {
  font-size: 12px;
  color: var(--brand);
  background: none;
  border: none;
  cursor: pointer;
  padding: 2px 0;
  text-align: left;
}
.exp-form-add-row-btn:hover { text-decoration: underline; }

/* ── Inline dropdown (status, confidence, new-exp menu) ── */
.exp-inline-dropdown {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: 0 4px 16px rgba(0,0,0,.14);
  padding: 4px;
  min-width: 140px;
  display: grid;
}
.exp-inline-dropdown-item {
  display: block;
  width: 100%;
  text-align: left;
  background: none;
  border: none;
  border-radius: calc(var(--radius) - 2px);
  padding: 6px 10px;
  font: inherit;
  font-size: 13px;
  color: var(--text);
  cursor: pointer;
  text-transform: capitalize;
}
.exp-inline-dropdown-item:hover { background: var(--panel-strong); }
.exp-inline-dropdown-item.active { font-weight: 600; color: var(--brand); }
.exp-inline-dropdown-sep {
  height: 1px;
  background: var(--border);
  margin: 3px 6px;
}

/* ── Bloom color picker popover ────────────────────────── */
.bloom-color-picker-pop {
  position: fixed;
  z-index: 9998;
  width: 360px;
  height: 360px;
  pointer-events: none;
  --bloom-size: 280px;
  --bloom-swatch-size: 54px;
  --bloom-center-size: 210px;
  --bloom-inner-inset: 20px;
  --bloom-pop-scale: 1;
}

.bloom-color-picker-pop-simple {
  width: 232px;
  height: auto;
  padding: 10px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
  box-shadow: var(--shadow-elevated);
  pointer-events: auto;
}

.bloom-simple-picker {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.bloom-simple-grid {
  display: grid;
  grid-template-columns: repeat(6, minmax(0, 1fr));
  gap: 8px;
}

.bloom-simple-swatch {
  width: 100%;
  aspect-ratio: 1;
  border: 1px solid color-mix(in oklab, #000 18%, rgba(255, 255, 255, 0.34));
  border-radius: 999px;
  cursor: pointer;
  transition: border-color .12s ease;
}

.bloom-simple-swatch:hover,
.bloom-simple-swatch:focus-visible {
  border-color: color-mix(in oklab, var(--brand) 45%, var(--border));
  outline: none;
}

.bloom-simple-controls {
  display: flex;
  align-items: center;
  gap: 8px;
}

.bloom-simple-input {
  width: 40px;
  height: 32px;
  padding: 0;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  cursor: pointer;
}

.bloom-simple-action {
  flex: 1;
  min-width: 0;
  height: 32px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text);
  font: inherit;
  font-size: 12px;
  cursor: pointer;
}

.bloom-simple-action:hover {
  background: var(--bg);
}

.bloom-color-picker-host {
  width: 100%;
  height: 100%;
  pointer-events: auto;
}

.bloom-picker {
  --bloom-color: #f5b81e;
  --bloom-shadow: rgba(0, 0, 0, 0.18);
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  opacity: 1;
}

.bloom-picker-stage {
  position: relative;
  width: var(--bloom-size, 280px);
  height: var(--bloom-size, 280px);
}

.bloom-picker-arc {
  position: absolute;
  inset: -40px;
  width: calc(var(--bloom-size, 280px) + 80px);
  height: calc(var(--bloom-size, 280px) + 80px);
  overflow: visible;
  opacity: 0;
  transform: scale(0.3);
  filter: blur(8px);
  transition:
    opacity 0.16s ease-in,
    transform 0.16s ease-in,
    filter 0.16s ease-in;
}

.bloom-picker-arc-shadow {
  fill: none;
  stroke-width: 24px;
  stroke-linecap: round;
  opacity: 0.3;
}

.bloom-picker-arc-stroke {
  fill: none;
  stroke-width: 20px;
  stroke-linecap: round;
}

.bloom-picker-stage [data-bloom-arc-hit] {
  cursor: grab;
}

.bloom-picker-stage [data-bloom-knob-ring] {
  fill: #fff;
  filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.25));
  transition: r 140ms ease;
}

.bloom-picker-stage [data-bloom-knob-core] {
  fill: var(--bloom-color);
  transition: r 140ms ease;
}

.bloom-picker-center {
  position: absolute;
  top: 50%;
  left: 50%;
  width: var(--bloom-center-size, 210px);
  height: var(--bloom-center-size, 210px);
  margin-top: calc(var(--bloom-center-size, 210px) / -2);
  margin-left: calc(var(--bloom-center-size, 210px) / -2);
  border-radius: 50%;
  background: transparent;
  box-shadow: none;
  opacity: 0;
  transform: scale(0.18);
  filter: blur(3px);
  transition:
    opacity 0.22s ease-in,
    transform 0.22s ease-in,
    filter 0.22s ease-in;
}

.bloom-picker-center-inner {
  position: absolute;
  inset: var(--bloom-inner-inset, 20px);
  border-radius: 50%;
  background: rgba(233, 234, 236, 0.8);
  opacity: 0;
  transform: scale(0.4);
  filter: blur(8px);
  transition:
    opacity 0.26s ease,
    transform 0.26s cubic-bezier(0.2, 0.9, 0.3, 1),
    filter 0.26s ease;
  transition-delay: 0.05s;
}

.bloom-picker-swatch {
  position: absolute;
  width: var(--bloom-swatch-size, 54px);
  height: var(--bloom-swatch-size, 54px);
  margin-left: calc(var(--bloom-swatch-size, 54px) / -2);
  margin-top: calc(var(--bloom-swatch-size, 54px) / -2);
  border: none;
  border-radius: 50%;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.08);
  cursor: pointer;
  outline: 2px solid color-mix(in srgb, color-mix(in srgb, var(--bloom-color), #000 30%) 18%, transparent);
  outline-offset: -2px;
  opacity: 0;
  filter: blur(12px);
  transform: translate(var(--bloom-from-x, 0), var(--bloom-from-y, 0)) scale(1.5);
  transition:
    transform 0.44s cubic-bezier(0.16, 1, 0.3, 1),
    opacity 0.28s ease,
    filter 0.28s ease;
  transition-delay: var(--bloom-open-delay, 0s);
}

.bloom-picker-swatch:hover {
  transform: translate(0, 0) scale(1.12);
  filter: brightness(1.03);
}

.bloom-color-picker-pop.is-open .bloom-picker-swatch.is-near,
.bloom-picker-swatch.is-open.is-near {
  transform: translate(0, 0) scale(1.18);
  transition:
    transform 0.18s cubic-bezier(0.2, 0.9, 0.3, 1),
    opacity 0.28s ease,
    filter 0.18s ease;
}

.bloom-color-picker-pop.is-open .bloom-picker-arc,
.bloom-picker-arc.is-open {
  opacity: 1;
  transform: scale(1);
  filter: blur(0);
  transition-delay: 0.28s;
  transition-duration: 0.52s;
  transition-timing-function: cubic-bezier(0.2, 0.9, 0.3, 1);
}

.bloom-color-picker-pop.is-open {
  top: calc(var(--bloom-pop-top, 0px) + var(--bloom-open-top-shift, 0px));
}

.bloom-color-picker-pop.is-open .bloom-picker-center,
.bloom-picker-center.is-open {
  opacity: 0;
}

.bloom-color-picker-pop.is-open .bloom-picker-center-inner,
.bloom-picker-center-inner.is-open {
  opacity: 1;
  transform: scale(1);
  filter: blur(0);
}

.bloom-color-picker-pop.is-open .bloom-picker-swatch,
.bloom-picker-swatch.is-open {
  opacity: 1;
  filter: blur(0);
  transform: translate(0, 0) scale(1);
}

.bloom-color-picker-pop.is-closing .bloom-picker-center,
.bloom-picker-center.is-closing {
  opacity: 0;
  transform: scale(0.18);
  filter: blur(3px);
  transition-duration: 0.22s;
}

.bloom-color-picker-pop.is-closing .bloom-picker-arc,
.bloom-picker-arc.is-closing {
  opacity: 0;
  transform: scale(0.3);
  filter: blur(8px);
  transition-duration: 0.16s;
  transition-delay: 0s;
}

.bloom-color-picker-pop.is-closing .bloom-picker-center-inner,
.bloom-picker-center-inner.is-closing {
  opacity: 0;
  transform: scale(0.4);
  filter: blur(8px);
  transition-duration: 0.22s;
  transition-delay: 0s;
}

.bloom-color-picker-pop.is-closing .bloom-picker-swatch,
.bloom-picker-swatch.is-closing {
  opacity: 0;
  filter: blur(3px);
  transform: translate(var(--bloom-from-x, 0), var(--bloom-from-y, 0)) scale(1);
  transition-duration: 0.34s;
  transition-delay: 0s;
  transition-timing-function: ease-in-out;
}

.bloom-picker-anchor-active {
  position: relative;
  z-index: 10001 !important;
  isolation: isolate;
}

.bloom-picker-anchor-pressing {
  transform: scale(0.85);
}

.bloom-picker-anchor-ghost {
  position: fixed;
  z-index: 10002;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  color: #fff;
  font-size: 13px;
  font-weight: 800;
  letter-spacing: 0;
  pointer-events: none;
}

@media (max-width: 640px) {
  .bloom-color-picker-pop {
    width: 260px;
    height: 260px;
    --bloom-size: 202px;
    --bloom-swatch-size: 39px;
    --bloom-center-size: 152px;
    --bloom-inner-inset: 15px;
  }
}
@media (max-width: 860px) {
  .exp-focus-grid,
  .exp-focus-grid-3 {
    grid-template-columns: 1fr;
  }

  .experiment-detail-header {
    flex-direction: column;
    align-items: stretch;
  }

  .experiment-detail-actions {
    justify-content: flex-start;
  }
  .experiment-graph-toolbar {
    flex-direction: column;
    align-items: flex-start;
  }
}

/* evidence list */
.evidence-item {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  margin-bottom: 8px;
  background: var(--surface);
  overflow: hidden;
}
.evidence-item-hd {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 9px 12px;
}
.evidence-item-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}
.evidence-item-type {
  font-size: 11px;
  color: var(--text-muted);
  flex-shrink: 0;
}
.evidence-item-detail {
  padding: 0 12px 9px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.evidence-detail-row {
  display: flex;
  gap: 6px;
  font-size: 12px;
  color: var(--text-muted);
}
.evidence-detail-key {
  font-weight: 600;
  color: var(--text-muted);
  flex-shrink: 0;
  min-width: 52px;
}

/* evidence sections */
.evidence-section { margin-bottom: 20px; }
.evidence-section-label {
  font-size: 11px;
  font-weight: 500;
  color: var(--text-muted);
  margin-bottom: 8px;
}
.dialog-card.experiment-member-picker-card {
  width: min(860px, calc(100vw - 32px));
  max-width: min(860px, calc(100vw - 32px));
  max-height: min(88vh, 880px);
  gap: 12px;
}
.experiment-member-builder-overlay {
  /* Center the card so it reads as a floating popup within the content area. */
  align-items: center;
  justify-content: center;
  padding: 24px;
  /* Lighter, semi-opaque backdrop (whitens the content behind). */
  background: color-mix(in oklab, var(--surface) 68%, transparent);
  /* Positioned to the experiments content area (#exp-detail) at open time
     via inline styles set by anchorExperimentBuilderOverlay(). */
  inset: auto;
}
.dialog-card.experiment-member-builder-card {
  position: relative;
  width: 100%;
  max-width: 1300px;
  height: 100%;
  max-height: 100%;
  gap: 8px;
  padding: 12px 14px;
  border-radius: var(--radius);
  box-shadow: var(--shadow, 0 16px 40px rgba(0, 0, 0, 0.22));
}
.experiment-member-builder-body {
  display: grid;
  grid-template-columns: minmax(280px, 320px) minmax(260px, 320px) minmax(0, 1fr);
  gap: 0;
  min-height: 0;
  flex: 1;
}
.experiment-member-builder-body-unified {
  grid-template-columns: minmax(320px, 440px) minmax(0, 1fr);
}
.experiment-member-builder-column {
  min-height: 0;
  display: grid;
  grid-template-rows: auto auto 1fr;
  padding: 0 12px;
  overflow: hidden;
  border-right: 1px solid var(--border);
}
.experiment-member-builder-column:last-child {
  border-right: 0;
  padding-right: 0;
}
.experiment-member-builder-column:first-child {
  padding-left: 0;
}
/* Section headers match the data-library metadata modal: a short brand accent bar
   plus a readable medium-weight title, instead of faint uppercase micro-text. */
.experiment-member-builder-label {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 0 0 10px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0;
  text-transform: none;
  color: var(--text);
}
.experiment-member-builder-label::before {
  content: "";
  flex: 0 0 auto;
  width: 3px;
  height: 14px;
  border-radius: 2px;
  background: var(--brand);
}
.experiment-member-builder-source-list {
  min-height: 0;
  max-height: none;
}
.experiment-member-builder-scope {
  overflow-x: hidden;
  overflow-y: auto;
  min-height: 0;
  overflow-anchor: none;
}
/* Header bar matches the data-library metadata modal: title left, close × right,
   separated from the body by a hairline. */
.experiment-member-builder-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 10px;
  border-bottom: 1px solid var(--border);
}
.experiment-member-builder-heading {
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
}
.experiment-member-builder-close {
  flex: 0 0 auto;
  border: 0;
  background: transparent;
  color: var(--text-muted);
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  padding: 0 2px;
}
.experiment-member-builder-close:hover { color: var(--text); }
.experiment-member-builder-overlay .dialog-actions {
  padding-top: 10px;
  border-top: 1px solid var(--border);
}
.experiment-member-builder-overlay .btn,
.experiment-member-builder-overlay .btn-cancel,
.experiment-member-builder-overlay .dialog-confirm {
  border-radius: 0;
  box-shadow: none;
}
.mdp-tree {
  display: flex;
  flex-direction: column;
  gap: 2px;
  --mdp-indent: 18px;
}
.mdp-tree-group {
  display: grid;
  gap: 2px;
  min-width: 0;
}
/* Pure-CSS collapse: hidden checkbox toggled by the caret label. */
.mdp-tree-toggle {
  position: absolute;
  opacity: 0;
  pointer-events: none;
  width: 0;
  height: 0;
}
.mdp-tree-row {
  display: flex;
  align-items: center;
  gap: 4px;
  min-width: 0;
  overflow-anchor: none;
}
.mdp-tree-caret {
  flex-shrink: 0;
  width: 18px;
  height: 26px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: var(--text-muted);
  border-radius: var(--radius);
}
.mdp-tree-caret::before {
  content: "";
  width: 6px;
  height: 6px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(-45deg);
  transition: transform 140ms ease;
}
.mdp-tree-caret:hover { color: var(--text); }
.mdp-tree-toggle:checked ~ .mdp-tree-row .mdp-tree-caret::before {
  transform: rotate(45deg);
}
.mdp-tree-caret-empty {
  cursor: default;
}
.mdp-tree-caret-empty::before {
  content: none;
}
/* Collapsed: hide children with a soft transition. */
.mdp-tree-children {
  display: grid;
  gap: 2px;
  padding-left: var(--mdp-indent);
  min-width: 0;
  overflow: hidden;
}
.mdp-tree-group > .mdp-tree-toggle:not(:checked) ~ .mdp-tree-children {
  display: none;
}
.mdp-tree-node {
  display: flex;
  align-items: center;
  gap: 8px;
  flex: 1;
  min-width: 0;
  padding: 5px 8px;
  cursor: pointer;
  border-radius: var(--radius);
  border: 1px solid transparent;
  transition: background 120ms ease, border-color 120ms ease;
  overflow-anchor: none;
}
.mdp-tree-node:hover {
  background: color-mix(in oklab, var(--brand) 4%, var(--surface));
  border-color: color-mix(in oklab, var(--brand) 22%, var(--border));
}
.mdp-tree-node.is-active {
  background: color-mix(in oklab, var(--brand) 8%, var(--surface));
  border-color: color-mix(in oklab, var(--brand) 38%, var(--border));
}
.mdp-tree-node input[type="radio"] {
  margin: 0;
  flex-shrink: 0;
  accent-color: var(--brand);
}
.mdp-tree-title {
  font-size: 12px;
  font-weight: 500;
  color: var(--text);
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mdp-tree-node-file .mdp-tree-title { font-weight: 400; }
.mdp-tree-count {
  flex-shrink: 0;
  min-width: 18px;
  height: 16px;
  line-height: 16px;
  padding: 0 5px;
  text-align: center;
  font-size: 10px;
  font-weight: 700;
  border-radius: 999px;
  background: var(--panel-strong);
  color: var(--text-muted);
}
.mdp-empty {
  font-size: 12px;
  color: var(--text-muted);
  padding: 8px 0;
}
/* Non-interactive day/hour dividers for the Creation/Timestamp time-sorted list. */
.mdp-tree-time-day {
  margin-top: 8px;
  padding: 3px 8px 2px;
  font-size: 11px;
  font-weight: 700;
  color: var(--text);
}
.mdp-tree-time-day:first-child {
  margin-top: 0;
}
.mdp-tree-time-hour {
  padding: 2px 8px;
  font-size: 10px;
  font-weight: 600;
  color: var(--text-muted);
}
/* Source (measurement / sample) rows at the top level of the unified tree. */
.mdp-tree-row-source { margin-top: 2px; }
.mdp-tree-node-source { padding: 4px 8px; }
.mdp-tree-node-source .mdp-tree-title { font-weight: 600; }
.mdp-tree-row-source .exp-member-chip {
  width: 19px;
  height: 19px;
  font-size: 9px;
}
.experiment-member-builder-column-editor {
  /* label / plot region (flex-fills) / title+note (natural height). The plot region
     shrinks to fit so the editor side never needs its own scrollbar, and title+note
     keep a stable spot pinned to the bottom. */
  grid-template-rows: auto minmax(0, 1fr) auto;
}
/* One flexible region that always holds a single bordered frame: the hint/loading/
   empty state and the plotted card swap inside it, so nothing below it ever jumps. */
.mdp-plot-region {
  display: flex;
  flex-direction: column;
  min-height: 0;
  overflow: hidden;
}
.mdp-preview {
  flex: 1;
  min-height: 0;
  border: 1px solid var(--border);
  background: #fff;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: auto;
  overflow-anchor: none;
}
/* Reference/asset info card (shown in place of the plot for non-plottable members). */
.mdp-simple-card {
  flex: 1;
  align-self: stretch;
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 16px 18px;
}
.mdp-simple-head {
  display: flex;
  align-items: center;
  gap: 10px;
}
.mdp-simple-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
  min-width: 0;
  overflow-wrap: anywhere;
}
.mdp-simple-detail {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 6px 14px;
  margin: 0;
  font-size: 12px;
}
.mdp-simple-detail dt {
  color: var(--text-muted);
  font-weight: 500;
}
.mdp-simple-detail dd {
  margin: 0;
  color: var(--text);
  overflow-wrap: anywhere;
}
/* When no plot card has been built yet the container is empty; collapse it so the
   hint/loading frame above fills the whole region. */
.mdp-axis-pairs:empty {
  display: none;
}
.mdp-axis-pairs {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: minmax(0, 1fr);
  gap: 0 16px;
  flex: 1;
  overflow: hidden;
  min-height: 0;
  overflow-anchor: none;
}
.mdp-axis-pair-card {
  display: grid;
  grid-template-rows: auto minmax(0, 1fr);
  gap: 8px;
  min-height: 0;
  height: 100%;
  box-shadow: none;
}
.mdp-axis-pair-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
}
.mdp-axis-pair-controls {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}
.mdp-axis-field {
  display: grid;
  gap: 4px;
}
.mdp-axis-field span {
  font-size: 12px;
  font-weight: 500;
  color: var(--text);
}
.mdp-axis-field select {
  width: 100%;
  font: inherit;
  font-size: 12px;
  color: var(--text);
  background: #fff;
  border: 1px solid var(--border);
  border-radius: 0;
  min-height: 34px;
  padding: 6px 8px;
}
.mdp-axis-pair-preview {
  min-height: 0;
  border: 1px solid var(--border);
  background: #fff;
  overflow: hidden;
  overflow-anchor: none;
}
.mdp-loading {
  font-size: 11px;
  color: var(--text-muted);
  text-align: center;
  padding: 20px;
}
@media (max-width: 1180px) {
  .dialog-card.experiment-member-builder-card {
    width: calc(100vw - 24px);
    max-width: calc(100vw - 24px);
    height: calc(100vh - 24px);
    max-height: calc(100vh - 24px);
  }
  .experiment-member-builder-overlay {
    padding: 0;
  }
  .experiment-member-builder-body-unified {
    grid-template-columns: 300px minmax(0, 1fr);
  }
  .mdp-axis-pairs {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 860px) {
  .mdp-member-meta {
    grid-template-columns: 1fr;
  }
  .experiment-member-builder-body-unified {
    grid-template-columns: 1fr;
  }
  .experiment-member-builder-column {
    border-right: 0;
    border-bottom: 1px solid var(--border);
    padding: 0 0 10px;
  }
  .experiment-member-builder-column:last-child {
    border-bottom: 0;
    padding-bottom: 0;
  }
  .experiment-member-builder-scope {
    max-height: 28vh;
  }
  .mdp-axis-pair-controls {
    grid-template-columns: 1fr;
  }
}
.experiment-member-picker-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
}
.experiment-member-picker-status {
  flex-shrink: 0;
  margin-top: 2px;
  font-size: 12px;
  color: var(--text-muted);
  white-space: nowrap;
}
.experiment-member-picker-toolbar {
  display: grid;
  gap: 6px;
  padding-bottom: 8px;
}
/* Member-kind filter: narrows the source tree to one type when there are many. */
.mdp-type-filter {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
}
.mdp-type-filter:empty {
  display: none;
}
.mdp-type-filter + .mdp-type-filter {
  margin-top: 5px;
}
.mdp-type-chip {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px 9px;
  font-size: 11px;
  font-weight: 500;
  color: var(--text-muted);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 999px;
  cursor: pointer;
  transition: background 120ms ease, border-color 120ms ease, color 120ms ease;
}
.mdp-type-chip:hover {
  color: var(--text);
  border-color: color-mix(in oklab, var(--brand) 30%, var(--border));
}
.mdp-type-chip.is-active {
  color: #fff;
  background: var(--brand);
  border-color: var(--brand);
}
.mdp-type-chip-count {
  font-size: 10px;
  font-weight: 600;
  opacity: 0.85;
}
.mdp-type-chip:not(.is-active) .mdp-type-chip-count {
  color: var(--text-muted);
}
.experiment-member-picker-tabs {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.experiment-member-picker-tab {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 0;
  border: 0;
  border-bottom: 1px solid transparent;
  border-radius: 0;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
  font: inherit;
  font-size: 12px;
  transition: none;
}
.experiment-member-picker-tab.is-active {
  border-color: var(--brand);
  color: var(--text);
}
.experiment-member-picker-tab-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 16px;
  height: 16px;
  padding: 0 2px;
  border-radius: 0;
  background: transparent;
  color: inherit;
  font-size: 11px;
}
.experiment-member-picker-body {
  overflow: auto;
  border: 0;
  border-top: 1px solid var(--border);
  background: transparent;
  padding: 0;
  max-height: none;
  min-height: 0;
  overflow-anchor: none;
}
.experiment-member-picker-list {
  display: grid;
  gap: 0;
}
.experiment-member-picker-list.is-compact {
  gap: 0;
}
.experiment-member-picker-row {
  display: block;
  padding: 8px 6px;
  border: 0;
  border-bottom: 1px solid var(--border);
  border-radius: 0;
  background: transparent;
  cursor: pointer;
  transition: none;
  text-align: left;
}
.experiment-member-picker-row:hover {
  background: color-mix(in oklab, var(--bg) 60%, transparent);
}
.experiment-member-picker-row.is-current {
  background: color-mix(in oklab, var(--bg) 60%, transparent);
  cursor: default;
}
.experiment-member-picker-row input {
  margin: 0;
}
.experiment-member-picker-row.is-current input {
  cursor: default;
}
.experiment-member-picker-title {
  display: block;
  font-size: 12px;
  font-weight: 400;
  color: var(--text);
}
.experiment-member-picker-row.is-selected {
  border-left: 2px solid var(--brand);
  padding-left: 4px;
  background: transparent;
  box-shadow: inset 2px 0 0 var(--brand);
}
.mdp-title-field {
  display: grid;
  gap: 4px;
  max-width: none;
  flex: 1 1 auto;
}
.mdp-title-field span {
  font-size: 12px;
  font-weight: 500;
  color: var(--text);
}
.mdp-required { color: var(--danger, #dc2626); font-weight: 700; }
.mdp-title-source-toggle {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex: 0 0 auto;
  align-self: flex-end;
  padding-bottom: 7px;
  font-size: 12px;
  color: var(--text-muted);
  cursor: pointer;
  white-space: nowrap;
}
.mdp-title-source-toggle input { cursor: pointer; margin: 0; }
.mdp-member-meta {
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: end;
  gap: 10px 14px;
  padding-top: 12px;
  margin-top: 4px;
  border-top: 1px solid var(--border);
}
.mdp-member-meta .mdp-title-field { grid-column: 1; }
.mdp-member-meta .mdp-title-source-toggle { grid-column: 2; }
.mdp-note-field {
  grid-column: 1 / -1;
  display: grid;
  gap: 4px;
}
.mdp-note-field span {
  font-size: 12px;
  font-weight: 500;
  color: var(--text);
}
.mdp-note-field textarea {
  resize: vertical;
  min-height: 58px;
  font: inherit;
}
.mdp-input-invalid,
.mdp-input-invalid:focus {
  border-color: var(--danger, #dc2626) !important;
  box-shadow: 0 0 0 3px color-mix(in oklab, var(--danger, #dc2626) 30%, transparent) !important;
  outline: none !important;
  animation: mdp-invalid-shake 0.3s ease;
}
@keyframes mdp-invalid-shake {
  0%, 100% { transform: translateX(0); }
  25% { transform: translateX(-4px); }
  75% { transform: translateX(4px); }
}
@media (max-width: 720px) {
  .experiment-member-picker-header {
    flex-direction: column;
  }
  .experiment-member-picker-status {
    white-space: normal;
  }
}

/* evidence reason textarea */
.evidence-reason {
  display: block;
  width: calc(100% - 24px);
  min-height: 56px;
  resize: vertical;
  font: 13px/1.5 system-ui, sans-serif;
  color: var(--text);
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 7px 10px;
  margin: 4px 12px 10px;
  outline: none;
  box-sizing: border-box;
}
.evidence-reason::placeholder { color: var(--text-muted); font-style: italic; }
.evidence-reason:focus {
  border-color: var(--brand);
  background: var(--surface);
  box-shadow: 0 0 0 3px var(--focus-ring);
}

/* evidence nav button */
.evidence-nav-btn {
  flex-shrink: 0;
  padding: 0 8px;
  height: 22px;
  font-size: 11px;
  color: var(--text-muted);
  background: transparent;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  cursor: pointer;
  white-space: nowrap;
}
.evidence-nav-btn:hover { background: var(--bg); color: var(--text); }

/* exp section empty state */
.exp-section-empty { color: var(--text-muted); font-style: italic; }

/* evidence side-by-side layout */
.evidence-item-with-plot {
  display: flex;
  flex-direction: row;
  align-items: stretch;
  min-height: 400px;
}
.evidence-item-content {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  min-height: 400px;
}

/* reusable split handle */
.split-handle {
  flex-shrink: 0;
  width: 10px;
  cursor: col-resize;
  display: flex;
  align-items: center;
  justify-content: center;
  user-select: none;
  position: relative;
}
.split-handle::before {
  content: "";
  position: absolute;
  left: 50%;
  top: 0;
  bottom: 0;
  width: 1px;
  background: var(--border);
  transform: translateX(-50%);
}
.split-handle-knob {
  position: relative;
  z-index: 1;
  width: 20px;
  height: 26px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 4px;
  transition: background .12s, border-color .12s;
}
.split-handle-knob::before {
  content: "⠿";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  font-size: 13px;
  line-height: 1;
  color: var(--text-muted);
}
.split-handle:hover .split-handle-knob {
  background: var(--bg);
  border-color: #9ca3af;
}

/* plot preview — fixed height, default width = 3× height */
.plot-placeholder {
  width: 600px;
  min-height: 400px;
  height: auto;
  align-self: stretch;
  flex-shrink: 0;
  background: var(--surface);
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
}
.evidence-item-with-plot .evidence-reason {
  flex: 1 1 auto;
  min-height: 0;
  height: auto;
}
.plot-loading {
  font-size: 11px;
  color: var(--text-muted);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
}
.plot-loading-bar {
  width: 48px;
  height: 2px;
  background: var(--border);
  border-radius: 1px;
  overflow: hidden;
  position: relative;
}
.plot-loading-bar::after {
  content: "";
  position: absolute;
  left: -50%;
  top: 0;
  width: 50%;
  height: 100%;
  background: var(--text-muted);
  border-radius: 1px;
  animation: plot-loading-sweep 1.2s ease-in-out infinite;
}
@keyframes plot-loading-sweep {
  0%   { left: -50%; }
  100% { left: 100%; }
}

/* figure preview */
.figure-preview {
  padding: 10px 12px;
  border-top: 1px solid var(--border);
  background: var(--bg);
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 400px;
}
.figure-img {
  max-width: 100%;
  max-height: 400px;
  object-fit: contain;
  display: block;
}

/* ── markdown styles ──────────────────────────────────────── */
.md { font-size: 13px; line-height: 1.7; color: var(--text); }
.md h1, .md h2, .md h3, .md h4 { font-weight: 600; margin: 1.2em 0 .4em; line-height: 1.3; }
.md h1 { font-size: 18px; } .md h2 { font-size: 16px; } .md h3 { font-size: 14px; }
.md p { margin: 0 0 .8em; }
.md p:last-child { margin-bottom: 0; }
.md ul, .md ol { padding-left: 1.4em; margin: 0 0 .8em; }
.md li { margin-bottom: .2em; }
.md code { font-family: ui-monospace, monospace; font-size: 12px; background: var(--bg); padding: 1px 5px; border-radius: 3px; }
.md pre { background: var(--bg); border: 1px solid var(--border); border-radius: var(--radius); padding: 12px 14px; overflow-x: auto; margin: 0 0 .8em; }
.md pre code { background: none; padding: 0; }
.md blockquote { border-left: 3px solid var(--border); margin: 0 0 .8em; padding-left: 12px; color: var(--text-muted); }
.md a { color: var(--text); text-decoration: underline; }
.md hr { border: none; border-top: 1px solid var(--border); margin: 1em 0; }
.md strong { font-weight: 600; }
.md table { border-collapse: collapse; width: 100%; margin: 0 0 .8em; font-size: 12px; }
.md th, .md td { border: 1px solid var(--border); padding: 6px 10px; text-align: left; }
.md th { background: var(--bg); font-weight: 600; }

/* ── dialog ────────────────────────────────────────────────── */
.dialog-overlay {
  position: fixed;
  inset: 0;
  background: var(--overlay);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
}

.dialog-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 24px;
  width: 380px;
  max-width: calc(100vw - 48px);
  display: flex;
  flex-direction: column;
  gap: 14px;
  box-shadow: var(--shadow-elevated);
}

.dialog-title {
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
}

.dialog-message {
  font-size: 13px;
  color: var(--text-muted);
  line-height: 1.5;
  margin: 0;
}

.dialog-message strong { color: var(--text); font-weight: 600; }

.export-dialog-card {
  width: 460px;
}

.archive-options-dialog {
  width: 760px;
  max-height: calc(100vh - 48px);
}

.export-dialog-card code {
  padding: 1px 5px;
  border-radius: 4px;
  background: var(--bg);
  color: var(--text);
  font-size: 12px;
}

.export-dialog-select { cursor: pointer; }

.archive-format-row {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.archive-format-option {
  display: flex;
  align-items: flex-start;
  gap: 9px;
  padding: 10px 11px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  color: var(--text);
  cursor: pointer;
}

.archive-format-option:has(input:checked) {
  border-color: var(--brand);
  background: color-mix(in srgb, var(--brand) 8%, var(--bg));
}

.archive-format-option input {
  margin: 2px 0 0;
  accent-color: var(--brand);
}

.archive-format-option span {
  display: grid;
  gap: 2px;
}

.archive-format-option strong {
  font-size: 13px;
  font-weight: 600;
}

.archive-format-option small {
  color: var(--text-muted);
  font-size: 11px;
  line-height: 1.35;
}

.export-custom-licence {
  display: flex;
  flex-direction: column;
  gap: 7px;
}

.export-custom-licence[hidden] { display: none; }

.archive-preset-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
  padding: 4px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
}

.archive-preset-btn {
  min-height: 34px;
  padding: 6px 10px;
  border: 1px solid transparent;
  border-radius: calc(var(--radius) - 2px);
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  font-size: 12px;
  font-weight: 600;
  cursor: pointer;
}

.archive-preset-btn:hover {
  color: var(--text);
  background: var(--surface);
}

.archive-preset-btn.is-active {
  border-color: var(--border);
  background: var(--surface);
  color: var(--text);
  box-shadow: var(--shadow-sm);
}

.archive-option-sheet {
  min-height: 0;
  overflow-y: auto;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  padding-right: 3px;
}

.archive-option-group {
  min-width: 0;
  margin: 0;
  padding: 11px 12px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
}

.archive-option-group legend {
  padding: 0 5px;
}

.archive-option-parent,
.archive-option-item {
  display: flex;
  align-items: flex-start;
  gap: 8px;
  color: var(--text);
  cursor: pointer;
  user-select: none;
}

.archive-option-parent {
  align-items: center;
  font-size: 13px;
  font-weight: 600;
}

.archive-option-grid {
  display: grid;
  gap: 8px;
  padding-top: 5px;
}

.archive-option-item {
  font-size: 12px;
  line-height: 1.35;
}

.archive-option-parent input,
.archive-option-item input {
  flex: 0 0 auto;
  margin: 1px 0 0;
  accent-color: var(--brand);
}

.archive-option-parent input { margin-top: 0; }

.archive-option-item.is-required {
  color: var(--text-muted);
  cursor: default;
}

.archive-option-item.is-unavailable {
  color: var(--text-muted);
  cursor: not-allowed;
  opacity: .55;
}

.archive-option-status {
  min-height: 16px;
  color: var(--text-muted);
  font-size: 11px;
}

.archive-option-status.is-error { color: var(--danger); }

.archive-options-dialog .dialog-confirm:disabled {
  opacity: .45;
  cursor: default;
}

.export-section-list {
  overflow: hidden;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
}

.export-section-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  min-height: 50px;
  padding: 9px 12px;
  border-bottom: 1px solid var(--border);
}

.export-section-row:last-child { border-bottom: none; }

.export-section-main,
.export-metadata-option {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  user-select: none;
}

.export-section-main {
  color: var(--text);
  font-size: 13px;
  font-weight: 600;
}

.export-metadata-option {
  color: var(--text-muted);
  font-size: 12px;
  white-space: nowrap;
}

.export-section-row input {
  margin: 0;
  accent-color: var(--brand);
}

.export-metadata-option:has(input:disabled) {
  cursor: default;
  opacity: .45;
}

@media (max-width: 560px) {
  .archive-options-dialog { max-height: calc(100vh - 24px); }

  .archive-preset-row,
  .archive-format-row,
  .archive-option-sheet {
    grid-template-columns: 1fr;
  }

  .export-section-row {
    align-items: flex-start;
    flex-direction: column;
    gap: 7px;
  }

  .export-metadata-option { padding-left: 24px; }
}

.upload-conflict-card {
  width: 360px;
}
.upload-conflict-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}
.upload-conflict-btn {
  font: inherit;
  font-size: 13px;
  padding: 6px 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text);
  cursor: pointer;
  transition: background .12s;
}
.upload-conflict-btn:hover {
  background: var(--bg);
}
.upload-conflict-btn-danger {
  border-color: color-mix(in oklab, var(--danger) 40%, var(--border));
  color: var(--danger);
}
.upload-conflict-btn-danger:hover {
  background: var(--danger-soft);
}
.upload-conflict-apply-all {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12px;
  color: var(--text-muted);
  cursor: pointer;
  user-select: none;
}
.upload-conflict-footer {
  border-top: 1px solid var(--border);
  padding-top: 10px;
}
.upload-conflict-cancel-btn {
  font: inherit;
  font-size: 12px;
  padding: 0;
  border: none;
  background: none;
  color: var(--text-muted);
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.upload-conflict-cancel-btn:hover {
  color: var(--text);
}

.dialog-field-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-muted);
}

.dialog-input {
  width: 100%;
  padding: 7px 10px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  font: inherit;
  font-size: 13px;
  color: var(--text);
  background: var(--bg);
  outline: none;
  box-sizing: border-box;
}
.dialog-input:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--focus-ring);
}

.dialog-error {
  font-size: 12px;
  color: var(--danger);
}
/* Member builder: pull the error out of flow so toggling it never resizes the
   body/plot or moves the action buttons. */
.experiment-member-builder-card .dialog-error {
  position: absolute;
  left: 14px;
  bottom: 18px;
  z-index: 2;
  max-width: 55%;
  margin: 0;
  line-height: 16px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  pointer-events: none;
}
.experiment-member-builder-card .dialog-error[hidden] {
  display: block;
  visibility: hidden;
}

.dialog-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  margin-top: 4px;
}

.reference-import-dialog {
  width: 520px;
  max-width: calc(100vw - 40px);
}

.reference-import-list {
  max-height: min(50vh, 420px);
  overflow: auto;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
}

.reference-import-entry {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--border);
}

.reference-import-entry:last-child {
  border-bottom: none;
}

.reference-import-entry input {
  margin-top: 2px;
}

.reference-import-entry-disabled,
.reference-import-entry-error {
  opacity: 0.65;
}

.reference-import-info {
  min-width: 0;
}

.reference-import-title {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}

.reference-import-meta,
.reference-import-file {
  margin-top: 4px;
  font-size: 12px;
  color: var(--text-muted);
}

.dialog-confirm {
  font: inherit;
  font-size: 13px;
  padding: 6px 14px;
  border: 1px solid var(--brand);
  border-radius: var(--radius);
  background: var(--brand);
  color: #fff7f2;
  cursor: pointer;
  transition: background .12s, border-color .12s, transform .12s;
}
.dialog-confirm:hover {
  background: var(--brand-strong);
  border-color: var(--brand-strong);
  transform: translateY(-1px);
}

.dialog-confirm-danger {
  font: inherit;
  font-size: 13px;
  padding: 6px 14px;
  border: 1px solid color-mix(in oklab, var(--danger) 54%, var(--border));
  border-radius: var(--radius);
  background: var(--danger-soft);
  color: var(--danger);
  cursor: pointer;
  transition: background .12s;
}
.dialog-confirm-danger:hover { background: color-mix(in oklab, var(--danger) 18%, var(--danger-soft)); }

.peer-feedback-popover {
  position: fixed;
  z-index: 2147483646;
  width: min(320px, calc(100vw - 24px));
  display: grid;
  gap: 8px;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text);
  box-shadow: var(--shadow-elevated);
}

.peer-feedback-title {
  font-size: 13px;
  font-weight: 600;
}

.peer-feedback-target {
  max-height: 34px;
  overflow: hidden;
  color: var(--text-muted);
  font-size: 11px;
  line-height: 1.45;
  word-break: break-all;
}

.peer-feedback-hint {
  margin-top: 7px;
  color: var(--text-muted);
  font-size: 11px;
  line-height: 1.4;
}

.peer-feedback-textarea {
  width: 100%;
  min-height: 86px;
  resize: vertical;
  padding: 8px 9px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  color: var(--text);
  font: inherit;
  font-size: 13px;
  line-height: 1.4;
  outline: none;
}

.peer-feedback-textarea:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--focus-ring);
}

.peer-feedback-status {
  min-height: 17px;
  color: var(--text-muted);
  font-size: 12px;
}

.peer-feedback-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}

.peer-feedback-cancel,
.peer-feedback-submit {
  font: inherit;
  font-size: 12px;
  padding: 6px 12px;
  border-radius: var(--radius);
  cursor: pointer;
}

.peer-feedback-cancel {
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text-muted);
}

.peer-feedback-cancel:hover {
  color: var(--text);
  background: var(--bg);
}

.peer-feedback-submit {
  border: 1px solid var(--brand);
  background: var(--brand);
  color: #fff7f2;
}

.peer-feedback-submit:disabled {
  cursor: default;
  opacity: 0.7;
}

.peer-feedback-popover.is-sent {
  border-color: color-mix(in oklab, #16a34a 45%, var(--border));
}

.exp-edit-btn-icon {
  width: 34px;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
}

.share-overlay {
  padding: 24px;
}

.share-dialog-card {
  width: min(560px, calc(100vw - 40px));
  max-height: calc(100vh - 48px);
  overflow-y: auto;
  overflow-x: visible;
  gap: 16px;
}

.share-dialog-card-wide {
  width: min(820px, calc(100vw - 40px));
}

.share-dialog-header { display: block; }

.share-dialog-copy,
.share-panel-copy {
  font-size: 12px;
  line-height: 1.55;
  color: var(--text-muted);
}

.share-invite-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 12px;
}

.share-invite-card {
  display: flex;
  min-width: 0;
  flex-direction: column;
  gap: 9px;
  padding: 14px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: color-mix(in oklab, var(--bg) 55%, var(--surface));
}

.share-invite-card-head h3 { margin: 0; color: var(--text); font-size: 14px; }
.share-invite-card-head p { margin: 4px 0 0; color: var(--text-muted); font-size: 11.5px; line-height: 1.45; }
.share-invite-actions { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; margin-top: auto; }
.share-invite-actions .dialog-confirm { min-width: 108px; }
.share-invite-actions .dialog-confirm:disabled { opacity: .5; cursor: default; }

.share-person-choice {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 8px 12px;
  padding: 10px;
  border: 1px solid color-mix(in oklab, var(--brand) 30%, var(--border));
  border-radius: 9px;
  background: var(--surface);
}
.share-person-choice[hidden] { display: none; }
.share-person-choice > div { display: flex; min-width: 0; flex-direction: column; gap: 2px; }
.share-person-choice strong { color: var(--text); font-size: 12px; }
.share-person-choice span,
.share-person-choice p { color: var(--text-muted); font-size: 11px; }
.share-person-choice p { grid-column: 1 / -1; margin: 0; line-height: 1.4; }
.share-person-choice .share-person-warning { color: var(--danger); }
.share-person-choice > button { align-self: start; padding: 0; border: 0; background: none; color: var(--brand); font: inherit; font-size: 11px; cursor: pointer; }
.share-person-choice > label { grid-column: 1 / -1; display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 8px; color: var(--text-muted); font-size: 11px; }

.share-existing-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-top: 18px; }
.share-pending-block { margin-top: 18px; }

.share-members-block {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.share-section-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-muted);
}

.share-dialog-card .dialog-field-label,
.share-dialog-card .share-section-label {
  letter-spacing: 0;
  text-transform: none;
}

.share-public-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: color-mix(in oklab, var(--bg) 58%, var(--surface));
}

.share-public-main {
  min-width: 0;
}

.share-public-main .share-panel-copy {
  margin: 4px 0 0;
}

.share-public-row .btn-small {
  font: inherit;
  font-size: 12px;
  padding: 6px 10px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text-muted);
  cursor: pointer;
  flex-shrink: 0;
}

.share-public-row .btn-small:hover:not(:disabled) {
  background: var(--bg);
  color: var(--text);
}

.share-public-row .btn-small:disabled {
  cursor: default;
  opacity: .6;
}

.share-search-wrap {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.share-search-results {
  display: flex;
  flex-direction: column;
  gap: 4px;
  padding: 6px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  max-height: 220px;
  overflow-y: auto;
}

.share-search-item {
  border: 1px solid transparent;
  border-radius: var(--radius);
  background: var(--surface);
  color: inherit;
  text-align: left;
  padding: 8px 10px;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.share-search-item:hover {
  border-color: var(--border);
  background: #fff;
}

.share-search-item strong {
  font-size: 12px;
  color: var(--text);
}

.share-search-item span,
.share-member-main span {
  font-size: 12px;
  color: var(--text-muted);
}

.share-search-empty,
.share-empty {
  font-size: 12px;
  color: var(--text-muted);
  padding: 12px;
  border: 1px dashed var(--border);
  border-radius: var(--radius);
  background: color-mix(in oklab, var(--bg) 65%, var(--surface));
}

.share-panel-copy {
  margin: 0 0 12px;
  font-size: 11px;
}

.share-member-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 10px 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
}

.share-member-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.share-member-main {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.share-member-main strong {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  color: var(--text);
  min-width: 0;
}

.share-member-side {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-shrink: 0;
}

.share-role-select {
  width: 118px;
  min-width: 118px;
}

.share-pill {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  height: 24px;
  padding: 0 9px;
  border: 1px solid var(--border);
  border-radius: 999px;
  font-size: 11px;
  color: var(--text-muted);
  background: var(--bg);
}

.share-pill-owner {
  color: var(--brand-strong);
  border-color: color-mix(in oklab, var(--brand) 32%, var(--border));
  background: var(--brand-soft);
}

.share-member-remove {
  width: 28px;
  height: 28px;
  border: 1px solid color-mix(in oklab, var(--danger) 20%, var(--border));
  border-radius: 999px;
  background: color-mix(in oklab, var(--danger-soft) 78%, var(--surface));
  color: var(--danger);
  font: inherit;
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
}

.share-member-remove:hover {
  background: var(--danger-soft);
}

.share-presence {
  width: 8px;
  height: 8px;
  border-radius: 999px;
  background: var(--panel-strong);
  flex-shrink: 0;
}

.share-presence-online { background: #16a34a; }
.share-presence-away { background: #f59e0b; }
.share-presence-offline { background: #94a3b8; }

.share-dialog-actions {
  margin-top: 2px;
}

@media (max-width: 720px) {
  .share-overlay {
    padding: 12px;
  }

  .share-dialog-card,
  .share-dialog-card-wide {
    width: min(100%, calc(100vw - 24px));
    max-height: calc(100vh - 24px);
  }

  .share-invite-grid,
  .share-existing-grid {
    grid-template-columns: 1fr;
  }

  .share-member-item {
    flex-direction: column;
    align-items: stretch;
  }

  .share-public-row {
    flex-direction: column;
    align-items: stretch;
  }

  .share-member-side {
    justify-content: space-between;
  }
}

.settings-overlay {
  z-index: 1100;
  padding: 20px;
}

.settings-dialog {
  width: min(760px, calc(100vw - 32px));
  max-height: calc(100vh - 40px);
  overflow: auto;
}

.settings-dialog-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
}

.settings-dialog-close {
  width: 34px;
  height: 34px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
  color: var(--text-muted);
  font: inherit;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
}

.settings-dialog-close:hover {
  border-color: color-mix(in oklab, var(--brand) 36%, var(--border));
  color: var(--chrome-hover);
  background: color-mix(in oklab, var(--brand) 9%, var(--surface));
}

.settings-section {
  display: grid;
  gap: 14px;
}

.settings-section-head {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: 12px;
  flex-wrap: wrap;
}

.settings-section-title {
  font-size: 16px;
  font-weight: 600;
  color: var(--text);
}

.settings-current-theme {
  font-size: 12px;
  color: var(--text-muted);
}

.settings-toggle-row {
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: center;
  gap: 14px;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: color-mix(in oklab, var(--surface) 84%, var(--panel));
  cursor: pointer;
}

.settings-toggle-copy {
  display: grid;
  gap: 4px;
  min-width: 0;
}

.settings-toggle-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
}

.settings-toggle-description {
  font-size: 12px;
  line-height: 1.45;
  color: var(--text-muted);
}

.settings-toggle-row input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.settings-toggle-switch {
  position: relative;
  width: 42px;
  height: 24px;
  border-radius: 999px;
  background: var(--panel-strong);
  border: 1px solid var(--border);
  transition: background .15s, border-color .15s;
}

.settings-toggle-switch::after {
  content: "";
  position: absolute;
  top: 3px;
  left: 3px;
  width: 16px;
  height: 16px;
  border-radius: 999px;
  background: var(--surface);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.22);
  transition: transform .15s;
}

.settings-toggle-row input:checked + .settings-toggle-switch {
  background: var(--brand);
  border-color: var(--brand);
}

.settings-toggle-row input:checked + .settings-toggle-switch::after {
  transform: translateX(18px);
}

.settings-toggle-row:focus-within {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--focus-ring);
}

.theme-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
}

.theme-card {
  position: relative;
  display: grid;
  gap: 12px;
  padding: 12px;
  border: 1px solid var(--border);
  border-radius: calc(var(--radius) + 4px);
  background: color-mix(in oklab, var(--surface) 84%, var(--panel));
  cursor: pointer;
  transition: border-color .15s, transform .15s, background .15s, box-shadow .15s;
}

.theme-card:hover {
  transform: translateY(-1px);
  border-color: color-mix(in oklab, var(--brand) 34%, var(--border));
  background: color-mix(in oklab, var(--brand) 8%, var(--surface));
}

.theme-card.is-active {
  border-color: color-mix(in oklab, var(--brand) 58%, var(--border));
  box-shadow: 0 0 0 3px var(--focus-ring);
  background: color-mix(in oklab, var(--brand) 10%, var(--surface));
}

.theme-card input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.theme-card-preview {
  display: grid;
  gap: 6px;
  height: 86px;
  padding: 8px;
  border-radius: 10px;
  border: 1px solid rgba(255, 255, 255, 0.08);
  overflow: hidden;
}

.theme-card-preview-top {
  height: 12px;
  width: 52%;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.78);
}

.theme-card-preview-main {
  flex: 1;
  border-radius: 8px;
  border: 1px solid rgba(255, 255, 255, 0.12);
  background: rgba(255, 255, 255, 0.08);
}

.theme-card-preview-accent {
  height: 8px;
  width: 34%;
  border-radius: 999px;
}

.theme-card-copy {
  display: grid;
  gap: 4px;
}

.theme-card-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
}

.theme-card-description {
  font-size: 12px;
  line-height: 1.45;
  color: var(--text-muted);
}

.theme-card-preview-light {
  background: linear-gradient(180deg, #f8fafc 0%, #e8edf3 100%);
}
.theme-card-preview-light .theme-card-preview-accent { background: #ea580c; }

.theme-card-preview-light-vivid {
  background: linear-gradient(180deg, #dce8f5 0%, #c4d6ec 100%);
}
.theme-card-preview-light-vivid .theme-card-preview-accent { background: #ea580c; }

.theme-card-preview-slate {
  background: linear-gradient(180deg, #e6e8ef 0%, #d2d4df 100%);
}
.theme-card-preview-slate .theme-card-preview-accent { background: #3e63dd; }

.theme-card-preview-mocha {
  background: linear-gradient(180deg, #45475a 0%, #1e1e2e 100%);
}
.theme-card-preview-mocha .theme-card-preview-accent { background: #cba6f7; }

.theme-card-preview-noir {
  background: linear-gradient(180deg, #353535 0%, #181818 100%);
}
.theme-card-preview-noir .theme-card-preview-accent { background: #d8d8d8; }

.theme-card-preview-paper {
  background: linear-gradient(180deg, #fbf1e0 0%, #e8dac0 100%);
}
.theme-card-preview-paper .theme-card-preview-accent { background: #9a6736; }

.theme-card-preview-dark {
  background: linear-gradient(180deg, #25201c 0%, #14110f 100%);
}
.theme-card-preview-dark .theme-card-preview-accent { background: #d97706; }

.theme-card-preview-dark-orange {
  background: linear-gradient(180deg, #24140d 0%, #0c0806 100%);
}
.theme-card-preview-dark-orange .theme-card-preview-accent { background: #e86a1c; }

.theme-card-preview-ubuntu {
  background: linear-gradient(180deg, #3a1830 0%, #190b14 100%);
}
.theme-card-preview-ubuntu .theme-card-preview-accent { background: #e95420; }

.theme-card-preview-dark-contrast {
  background: linear-gradient(180deg, #17304a 0%, #08111c 100%);
}
.theme-card-preview-dark-contrast .theme-card-preview-accent { background: #8ab4ff; }

@media (max-width: 1280px) {
  .resources-shell {
    grid-template-columns: 240px minmax(0, 1fr);
  }

  .resources-tree-pane {
    min-width: 240px;
    max-width: 34vw;
  }
}

@media (max-width: 1024px) {
  .resources-shell {
    grid-template-columns: 200px minmax(0, 1fr);
  }

  .resources-tree-pane {
    min-width: 200px;
    max-width: 40vw;
  }

  .resources-main-pane {
    flex-direction: column;
  }

  .resources-resize-handle {
    display: none;
  }

  .resources-detail-pane {
    width: auto;
    border-left: none;
    border-top: 1px solid var(--border);
  }
}

@media (max-width: 720px) {
  .resources-shell {
    grid-template-columns: 150px minmax(0, 1fr);
  }

  /* Keep the tree on the left even on narrow screens, just slimmer. */
  .resources-tree-pane {
    min-width: 150px;
    max-width: 45vw;
  }

  /* Detail pane stacks under the list inside the main column. */
  .resources-detail-pane {
    border-left: none;
    border-top: 1px solid var(--border);
  }

  .resources-detail {
    padding: var(--pane-gutter);
  }

  .resources-pane-header,
  .resources-search-row {
    padding-inline: var(--pane-gutter);
  }

  .gr-table .gr-cell-date,
  .gr-table .gr-cell-by,
  .gr-table .gr-cell-type,
  .gr-table .gr-cell-location {
    display: none;
  }

  .gr-table .gr-cell-actions { width: 100px; }
  .gr-cell-actions .dl-action-btn { opacity: 1; }

  .resources-detail-header,
  .resources-pane-header {
    flex-direction: column;
    align-items: flex-start;
  }

  .resources-detail-meta {
    grid-template-columns: 1fr;
  }
}

/* ── dashboard view ───────────────────────────────────────── */
#dashboard-view {
  flex: 1;
  min-height: 0;
  overflow: auto;
  background: var(--bg);
}
.dash-wrap {
  max-width: 1180px;
  margin: 0 auto;
  padding: 56px 48px 80px;
  display: flex;
  flex-direction: column;
  gap: 44px;
}
.dash-hero {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding-bottom: 12px;
  border-bottom: 1px solid var(--border);
}
.dash-title {
  margin: 0;
  font-family: "AsimovHeader", Georgia, serif;
  font-size: clamp(56px, 10vw, 88px);
  font-weight: 700;
  letter-spacing: 0.04em;
  color: var(--text);
  line-height: 0.9;
}
.dash-sub {
  margin: 0;
  color: var(--text-muted);
  font-size: 15px;
}
.dash-section { display: flex; flex-direction: column; gap: 14px; }
.dash-h2 {
  margin: 0;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.dash-recent-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 16px;
}
.dash-recent-card {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 20px 22px;
  min-height: 150px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  cursor: pointer;
  text-align: left;
  font: inherit;
  color: var(--text);
  transition: border-color 120ms, transform 120ms, background 120ms;
}
.dash-recent-card:hover {
  border-color: var(--text-muted);
  transform: translateY(-1px);
}
.dash-recent-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}
.dash-recent-name {
  font-size: 16px;
  font-weight: 600;
  line-height: 1.3;
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.dash-recent-badge {
  flex: none;
  height: 22px;
  padding: 0 9px;
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--border);
  border-radius: 999px;
  font-size: 11px;
  color: var(--text-muted);
  background: var(--bg);
}
.dash-recent-badge-owner {
  color: var(--brand-strong);
  border-color: color-mix(in oklab, var(--brand) 32%, var(--border));
  background: var(--brand-soft);
}
.dash-recent-desc {
  font-size: 13px;
  line-height: 1.4;
  color: var(--text-muted);
  overflow: hidden;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}
.dash-recent-desc-empty {
  font-style: italic;
}
.dash-recent-meta {
  margin-top: auto;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 4px 10px;
  font-size: 12px;
  color: var(--text-muted);
}
.dash-recent-owner {
  font-weight: 500;
  color: var(--text);
}
.dash-recent-collabs {
  display: flex;
  align-items: center;
}
.dash-recent-avatar {
  width: 22px;
  height: 22px;
  margin-left: -6px;
  border-radius: 50%;
  border: 2px solid var(--surface);
  flex: none;
  display: grid;
  place-items: center;
  background: var(--brand-soft);
  color: var(--brand-strong);
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.02em;
}
.dash-recent-avatar:first-child { margin-left: 0; }
.dash-recent-avatar-more {
  background: var(--bg);
  color: var(--text-muted);
}
.dash-recent-empty {
  color: var(--text-muted);
  font-size: 14px;
  padding: 18px 2px;
}
.dash-tools-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: 14px;
}
.dash-tool {
  display: flex;
  align-items: center;
  gap: 14px;
  padding: 16px 18px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  text-decoration: none;
  color: var(--text);
  transition: border-color 120ms, transform 120ms;
}
.dash-tool:hover {
  border-color: var(--text-muted);
  transform: translateY(-1px);
}
.dash-tool-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border-radius: 8px;
  background: var(--bg);
  border: 1px solid var(--border);
  color: var(--text);
  flex: none;
}
.dash-tool-icon svg {
  width: 22px;
  height: 22px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.6;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.dash-tool-body {
  display: flex;
  flex-direction: column;
  min-width: 0;
}
.dash-tool-title { font-weight: 600; font-size: 15px; }
.dash-tool-sub { color: var(--text-muted); font-size: 12px; }
@media (max-width: 720px) {
  .dash-wrap { padding: 32px 20px 56px; gap: 32px; }
}

#feedback-view {
  flex: 1;
  min-height: 0;
  overflow: hidden;
  background: var(--bg);
}

.feedback-shell {
  height: 100%;
  min-height: 0;
}

.feedback-board {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  background: var(--bg);
}

.feedback-overlay {
  position: fixed;
  inset: 0;
  z-index: 9000;
  background: color-mix(in oklab, var(--text) 18%, transparent);
  opacity: 0;
  transition: opacity 180ms ease;
}

.feedback-overlay.feedback-overlay-active { opacity: 1; }
.feedback-overlay.feedback-overlay-closing { opacity: 0; }
body.fb-overlay-open { overflow: hidden; }

.feedback-panel {
  position: absolute;
  top: 0;
  right: 0;
  width: min(560px, 100vw);
  height: 100%;
  display: flex;
  flex-direction: column;
  background: var(--surface);
  border-left: 1px solid var(--border);
  box-shadow: var(--shadow-elevated);
  transform: translateX(100%);
  transition: transform 240ms cubic-bezier(0.32, 0.72, 0, 1);
}

.feedback-overlay-active .feedback-panel { transform: translateX(0); }
.feedback-overlay-closing .feedback-panel { transform: translateX(100%); }

.feedback-panel-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 16px 18px;
  border-bottom: 1px solid var(--border);
}

.feedback-panel-title {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
}

.feedback-back-btn {
  border: none;
  background: none;
  color: var(--text-muted);
  font: inherit;
  font-size: 18px;
  cursor: pointer;
  padding: 0 2px;
}

.feedback-back-btn:hover { color: var(--text); }

.feedback-panel-body {
  flex: 1;
  min-height: 0;
  padding: 18px;
  display: flex;
  flex-direction: column;
  gap: 16px;
}

.feedback-panel-scroll { overflow-y: auto; }

.feedback-panel-footer {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
  padding: 14px 18px;
  border-top: 1px solid var(--border);
  background: var(--surface);
}

.feedback-shell .btn,
.feedback-panel .btn {
  padding: 5px 12px;
  border: 1px solid var(--border);
  font: inherit;
  font-size: 12px;
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text-muted);
  cursor: pointer;
  transition: background .12s, border-color .12s, color .12s;
  flex-shrink: 0;
}

.feedback-shell .btn:hover:not(:disabled),
.feedback-panel .btn:hover:not(:disabled) {
  background: var(--bg);
  color: var(--text);
}

.feedback-shell .btn.primary,
.feedback-panel .btn.primary {
  border-color: var(--brand);
  background: var(--brand);
  color: #fff7f2;
}

.feedback-shell .btn.primary:hover:not(:disabled),
.feedback-panel .btn.primary:hover:not(:disabled) {
  border-color: var(--brand-strong);
  background: var(--brand-strong);
}

.feedback-shell .btn.danger,
.feedback-panel .btn.danger {
  border-color: color-mix(in oklab, var(--danger) 54%, var(--border));
  background: var(--danger-soft);
  color: var(--danger);
}

.feedback-shell .btn.danger:hover:not(:disabled),
.feedback-panel .btn.danger:hover:not(:disabled) {
  background: color-mix(in oklab, var(--danger) 18%, var(--danger-soft));
  border-color: color-mix(in oklab, var(--danger) 64%, var(--border));
}

.feedback-shell .btn:disabled,
.feedback-panel .btn:disabled {
  opacity: .6;
  cursor: default;
  transform: none;
}

.feedback-shell .btn-small,
.feedback-panel .btn-small {
  font-size: 11px;
  padding: 4px 9px;
}

.feedback-shell .btn-icon,
.feedback-panel .btn-icon {
  width: 34px;
  height: 34px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
  color: var(--text-muted);
  font: inherit;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  padding: 0;
  transition: border-color .12s, background .12s, color .12s;
}

.feedback-shell .btn-icon:hover:not(:disabled),
.feedback-panel .btn-icon:hover:not(:disabled) {
  border-color: color-mix(in oklab, var(--brand) 36%, var(--border));
  color: var(--chrome-hover);
  background: color-mix(in oklab, var(--brand) 9%, var(--surface));
}

.feedback-shell .btn-icon.danger:hover:not(:disabled),
.feedback-panel .btn-icon.danger:hover:not(:disabled) {
  color: var(--danger);
  background: color-mix(in oklab, var(--danger) 14%, var(--surface));
  border-color: color-mix(in oklab, var(--danger) 28%, var(--border));
}

.feedback-discard-btn,
.feedback-link-btn {
  border: none;
  background: none;
  color: var(--brand);
  cursor: pointer;
  font: inherit;
  padding: 0;
  text-decoration: underline;
}

.fb-cat-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.fb-cat-pill {
  padding: 6px 14px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
  color: var(--text-muted);
  font: inherit;
  font-size: 13px;
  cursor: pointer;
  transition: border-color 120ms ease, background 120ms ease, color 120ms ease;
}

.fb-cat-pill:hover {
  border-color: color-mix(in oklab, var(--brand) 30%, var(--border));
  color: var(--text);
}

.fb-cat-pill.active {
  border-color: var(--brand);
  background: color-mix(in oklab, var(--brand) 12%, var(--surface));
  color: var(--text);
  font-weight: 600;
}

.feedback-field,
.fb-filter-section {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.feedback-label,
.fb-filter-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-muted);
}

.feedback-input,
.feedback-textarea,
.feedback-search-input,
.fb-filter-select {
  width: 100%;
  box-sizing: border-box;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text);
  font: inherit;
  font-size: 13px;
  outline: none;
  transition: border-color 120ms ease, box-shadow 120ms ease;
}

.feedback-input,
.feedback-search-input,
.fb-filter-select {
  padding: 7px 10px;
}

.feedback-textarea {
  min-height: 80px;
  padding: 7px 10px;
  resize: vertical;
}

.feedback-input:focus,
.feedback-textarea:focus,
.feedback-search-input:focus,
.fb-filter-select:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--focus-ring);
}

.feedback-dropzone {
  padding: 16px;
  border: 1px dashed var(--border);
  border-radius: var(--radius);
  background: var(--bg);
}

.feedback-dropzone-hover {
  background: var(--surface);
  border-color: var(--text-muted);
}

.feedback-att-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 0;
  border-bottom: 1px solid var(--border);
}

.feedback-att-row:last-child { border-bottom: none; }

.feedback-att-thumb {
  width: 42px;
  height: 42px;
  object-fit: cover;
  border-radius: var(--radius);
  border: 1px solid var(--border);
}

.feedback-att-icon { font-size: 24px; }

.feedback-att-name {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12px;
}

.feedback-context-details {
  border-top: 1px solid var(--border);
  padding-top: 8px;
}

.feedback-context-pre {
  margin: 6px 0 0;
  padding: 10px 12px;
  border-radius: var(--radius);
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--text-muted);
  font-size: 11px;
  overflow: auto;
  max-height: 180px;
}

.feedback-summary {
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--bg);
}

.feedback-summary-row {
  display: flex;
  align-items: baseline;
  gap: 12px;
  padding: 12px 14px;
  border-bottom: 1px solid var(--border);
}

.feedback-summary-row:last-child { border-bottom: none; }

.fb-badge {
  display: inline-flex;
  align-items: center;
  min-height: 20px;
  padding: 1px 7px;
  border: 1px solid var(--border);
  border-radius: 999px;
  font-size: 11px;
  font-weight: 500;
  background: var(--bg);
  color: var(--text-muted);
}

.fb-cat-bug,
.fb-cat-feature,
.fb-cat-question,
.fb-cat-other,
.fb-status-open,
.fb-status-in-progress,
.fb-status-resolved,
.fb-status-wont-fix,
.fb-svc {
  background: var(--bg);
}

.fb-cat-bug,
.fb-status-open {
  border-color: color-mix(in oklab, #dc2626 28%, var(--border));
  background: color-mix(in oklab, var(--danger) 10%, var(--bg));
  color: color-mix(in oklab, #dc2626 72%, var(--text));
}

.fb-cat-feature,
.fb-status-in-progress,
.fb-svc {
  border-color: color-mix(in oklab, var(--brand) 32%, var(--border));
  background: color-mix(in oklab, var(--brand) 8%, var(--bg));
  color: var(--brand);
}

.fb-cat-question,
.fb-status-resolved {
  border-color: color-mix(in oklab, #15803d 26%, var(--border));
  background: color-mix(in oklab, #15803d 8%, var(--bg));
  color: color-mix(in oklab, #15803d 72%, var(--text));
}

.fb-cat-other,
.fb-status-wont-fix {
  color: var(--text-muted);
}

/* ── Board toolbar (replaces the old left filter sidebar) ── */
.fb-toolbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px 16px;
  flex-shrink: 0;
  padding: 12px 20px;
  border-bottom: 1px solid var(--border);
  background: var(--surface);
}

.fb-toolbar-lead {
  display: flex;
  align-items: center;
  gap: 10px;
}

.fb-toolbar-title {
  font-size: 15px;
  font-weight: 650;
  color: var(--text);
}

.fb-toolbar-count {
  display: inline-grid;
  place-items: center;
  min-width: 20px;
  height: 19px;
  padding: 0 7px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--text) 9%, transparent);
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 700;
}

.fb-toolbar-controls {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
}

.fb-toolbar-search,
.fb-toolbar-select {
  height: 32px;
  box-sizing: border-box;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text);
  font: inherit;
  font-size: 13px;
  outline: none;
  transition: border-color 120ms ease, box-shadow 120ms ease;
}

.fb-toolbar-search { width: 220px; max-width: 40vw; padding: 0 10px; }
.fb-toolbar-select { padding: 0 8px; }

.fb-toolbar-search:focus,
.fb-toolbar-select:focus {
  border-color: var(--brand);
  box-shadow: 0 0 0 3px var(--focus-ring);
}

.fb-sort {
  display: inline-flex;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
}

.fb-sort-btn {
  border: none;
  background: var(--surface);
  color: var(--text-muted);
  font: inherit;
  font-size: 12px;
  padding: 0 12px;
  height: 32px;
  cursor: pointer;
  transition: background 120ms, color 120ms;
}

.fb-sort-btn + .fb-sort-btn { border-left: 1px solid var(--border); }

.fb-sort-btn.active {
  background: var(--text);
  color: var(--surface);
}

.fb-board-layout {
  display: grid;
  grid-template-columns: 340px minmax(0, 1fr);
  flex: 1;
  min-height: 0;
}

.fb-nav-list {
  overflow-y: auto;
  border-right: 1px solid var(--border);
  background: var(--surface);
  padding: 18px 20px;
}

.fb-nav-empty {
  padding: 18px 14px;
  color: var(--text-muted);
  font-size: 13px;
}

.fb-nav-item {
  padding: 12px 14px;
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--surface);
  margin-bottom: 8px;
  cursor: pointer;
  transition: border-color 120ms ease, background 120ms ease, transform 120ms ease;
}

.fb-nav-item:hover {
  border-color: var(--text-muted);
  transform: translateY(-1px);
}

.fb-nav-item.active {
  border-color: var(--text);
  box-shadow: 0 0 0 3px color-mix(in oklab, var(--text) 10%, transparent);
}

.fb-nav-item-top,
.fb-detail-meta,
.fb-comment-meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
}

.fb-ticket-num {
  font-size: 12px;
  font-weight: 700;
  color: var(--text-muted);
}

.fb-nav-item-title {
  margin: 10px 0 8px;
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}

.fb-nav-item-meta,
.fb-detail-meta,
.fb-comments-header,
.fb-comments-empty {
  color: var(--text-muted);
}

.fb-nav-item-meta { font-size: 11px; }

.fb-detail-area {
  min-width: 0;
  min-height: 0;
  background: var(--bg);
}

.fb-detail-empty {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 100%;
  color: var(--text-muted);
  font-size: 14px;
}

.fb-detail-wrap {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 360px;
  height: 100%;
  min-height: 0;
}

.fb-detail-main {
  min-width: 0;
  min-height: 0;
  overflow-y: auto;
  margin: 20px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  padding: 20px 22px 24px;
}

.fb-detail-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
}

.fb-detail-title {
  margin: 0 0 10px;
  font-size: 18px;
  font-weight: 600;
  color: var(--text);
  line-height: 1.3;
}

.fb-detail-desc {
  margin-top: 14px;
  padding: 14px 16px;
  border-radius: var(--radius);
  background: var(--bg);
  border: 1px solid var(--border);
  white-space: pre-wrap;
  word-break: break-word;
  font-size: 13px;
}

.fb-attachments {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
  gap: 12px;
  margin-top: 16px;
}

.fb-att-preview {
  border-radius: var(--radius);
  overflow: hidden;
  background: var(--bg);
  border: 1px solid var(--border);
  display: flex;
  align-items: center;
  justify-content: center;
  min-height: 120px;
}

.fb-att-img {
  display: block;
  width: 100%;
  max-height: 280px;
  height: auto;
  object-fit: contain;
  cursor: zoom-in;
  background: var(--bg);
}

.fb-att-img[data-loading] {
  opacity: 0;
}

.fb-att-img.fb-att-img-loaded {
  opacity: 1;
  transition: opacity 140ms ease;
}

.fb-detail-sidebar {
  min-width: 0;
  min-height: 0;
  overflow: hidden;
  margin: 20px 20px 20px 0;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
}

.fb-comments-section {
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 0;
}

.fb-comments-header {
  padding: 16px 18px 12px;
  border-bottom: 1px solid var(--border);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
}

.fb-comments-list {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  padding: 16px 18px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}

.fb-comments-empty {
  padding: 12px 0;
  font-size: 13px;
}

.fb-comment {
  display: flex;
  gap: 10px;
}

.fb-comment-avatar {
  width: 30px;
  height: 30px;
  border-radius: var(--radius);
  background: var(--bg);
  border: 1px solid var(--border);
  color: var(--text);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 10px;
  font-weight: 800;
  flex-shrink: 0;
}

.fb-comment-body {
  flex: 1;
  min-width: 0;
}

.fb-comment-text {
  padding: 10px 12px;
  border-radius: var(--radius);
  background: var(--bg);
  border: 1px solid var(--border);
  font-size: 12px;
  white-space: pre-wrap;
  word-break: break-word;
}

.fb-comment-compose {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 14px 18px 18px;
  border-top: 1px solid var(--border);
}

.fb-vote-btn {
  padding: 6px 10px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--bg);
  color: var(--text-muted);
  font: inherit;
  font-size: 12px;
  font-weight: 400;
  cursor: pointer;
  transition: background 120ms, color 120ms, border-color 120ms;
}

.fb-vote-btn:hover,
.fb-vote-btn.voted {
  border-color: var(--text);
  background: var(--text);
  color: var(--surface);
}

.fb-lightbox {
  position: fixed;
  inset: 0;
  z-index: 9200;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(15, 23, 42, 0.9);
  cursor: zoom-out;
}

.fb-lightbox img {
  max-width: 94vw;
  max-height: 94vh;
  border-radius: var(--radius);
  box-shadow: 0 24px 60px rgba(15, 23, 42, 0.4);
  cursor: default;
}

.fb-lightbox-close {
  position: absolute;
  top: 20px;
  right: 22px;
  border: none;
  background: none;
  color: #fff;
  font-size: 28px;
  cursor: pointer;
}

@media (max-width: 1100px) {
  .fb-board-layout,
  .fb-detail-wrap {
    grid-template-columns: 1fr;
  }

  .fb-nav-list {
    max-height: 300px;
    border-right: 0;
    border-bottom: 1px solid var(--border);
  }

  .fb-detail-sidebar {
    margin: 0 16px 16px;
  }
}

@media (max-width: 720px) {
  .fb-toolbar {
    gap: 8px 12px;
  }
  .fb-toolbar-search {
    flex: 1;
    width: auto;
    max-width: none;
  }
}

@media (max-width: 640px) {
  .feedback-panel {
    width: 100vw;
  }

  .fb-detail-main,
  .fb-detail-sidebar {
    margin: 12px;
  }

  .fb-nav-list {
    padding: 12px;
  }
}

/* ── export zip progress overlay ───────────────────────── */
#zip-progress-overlay {
  position: fixed;
  inset: 0;
  background: var(--overlay);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 10000;
}
.zip-progress-box {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 24px;
  width: 320px;
  max-width: calc(100vw - 48px);
  display: flex;
  flex-direction: column;
  gap: 14px;
  box-shadow: var(--shadow-elevated);
}
.zip-progress-label {
  font-size: 14px;
  color: var(--text);
}
.zip-progress-track {
  background: var(--panel-strong);
  border-radius: 3px;
  height: 6px;
  overflow: hidden;
}
.zip-progress-fill {
  height: 100%;
  background: var(--brand);
  border-radius: 3px;
  transition: width 0.25s ease;
}
.zip-progress-cancel {
  align-self: flex-end;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--surface);
  color: var(--text);
  padding: 7px 12px;
  cursor: pointer;
}
.zip-progress-cancel:hover:not(:disabled) {
  background: var(--panel-strong);
}
.zip-progress-cancel:disabled {
  cursor: default;
  opacity: 0.65;
}

/* Drag-to-reorder lists */
#exp-list-body,
#meas-list-body,
#samples-list-body,
#references-list-body,
.asset-group-body {
  position: relative;
}

[data-drag-sort-wired="1"] > [draggable="true"] {
  cursor: grab;
}

[data-drag-sort-wired="1"] > [draggable="true"]:active {
  cursor: grabbing;
}

[data-drag-sort-wired="1"].drag-sort-active {
  user-select: none;
}

[data-drag-sort-wired="1"].drag-sort-active > [draggable="true"]:not(.drag-sort-ghost) {
  transition: transform 180ms cubic-bezier(0.22, 1, 0.36, 1);
}

.drag-sort-ghost {
  opacity: 0.35;
  transform: scale(0.98);
  transition: opacity 120ms ease, transform 120ms ease;
}

.drag-sort-indicator {
  position: absolute;
  left: 6px;
  right: 6px;
  height: 2px;
  background: var(--brand);
  border-radius: 2px;
  pointer-events: none;
  box-shadow: 0 0 0 2px color-mix(in srgb, var(--brand) 25%, transparent);
  transition: top 120ms cubic-bezier(0.22, 1, 0.36, 1);
  z-index: 5;
}

/* ── Measurement tags ────────────────────────────────────────────────────────── */

/* Shared chip style (editable and readonly) */
.meas-tag-chip {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 7px;
  border-radius: 10px;
  font-size: 11px;
  font-weight: 500;
  line-height: 1.6;
  border: 1px solid var(--border);
  background: var(--bg-elevated);
  color: #fff;
  white-space: nowrap;
  text-shadow: 0 1px 2px rgba(0,0,0,0.25);
}

.meas-tag-chip-remove {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 13px;
  height: 13px;
  border: none;
  background: rgba(255,255,255,0.25);
  border-radius: 50%;
  font-size: 11px;
  line-height: 1;
  cursor: pointer;
  padding: 0;
  color: inherit;
  flex-shrink: 0;
  opacity: 0.7;
  transition: opacity 100ms, background 100ms;
}

.meas-tag-chip-remove:hover {
  opacity: 1;
  background: rgba(255,255,255,0.4);
}

/* List row dots */
.meas-row-tags {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  margin-left: 6px;
  vertical-align: middle;
}

.meas-row-tag-dot {
  display: inline-block;
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--text-muted);
  flex-shrink: 0;
}

/* Tag section wrapper */
.meas-tags-section {
  margin-bottom: 12px;
  position: relative;
}

/* Inline chips row (readonly) */
.meas-tag-chips-row.meas-tag-chips-readonly {
  display: flex;
  flex-wrap: wrap;
  gap: 5px;
  padding: 6px 0;
}

/* Editable tag input card */
.meas-tag-input-card {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 5px;
  min-height: 36px;
  padding: 6px 8px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--bg);
  cursor: text;
  position: relative;
  transition: border-color 120ms;
}

.meas-tag-input-card:focus-within {
  border-color: var(--brand);
}

.meas-tag-chips-row {
  display: contents; /* chips appear inline with the input */
}

.meas-tag-text {
  flex: 1;
  min-width: 120px;
  border: none;
  outline: none;
  background: transparent;
  color: var(--text);
  font-size: 12px;
  padding: 2px 0;
  line-height: 1.5;
}

.meas-tag-text::placeholder {
  color: var(--text-muted);
}

/* Suggestions dropdown */
.meas-tag-suggestions {
  position: absolute;
  top: calc(100% + 3px);
  left: 0;
  right: 0;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 6px;
  box-shadow: 0 4px 16px rgba(0,0,0,0.3);
  z-index: 200;
  overflow: hidden;
}

.meas-tag-suggestion-item {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 6px 10px;
  border: none;
  background: none;
  text-align: left;
  font-size: 12px;
  color: var(--text);
  cursor: pointer;
  transition: background 80ms;
}

.meas-tag-suggestion-item:hover,
.meas-tag-suggestion-item.meas-tag-suggestion-active {
  background: var(--bg);
}

.meas-tag-suggestion-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--text-muted);
  flex-shrink: 0;
}

.meas-tag-suggestion-create {
  color: var(--text);
  font-weight: 600;
}

.meas-tag-suggestion-plus {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--brand);
  color: #fff;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
  flex-shrink: 0;
}

/* Measurements.js module tag row (card view) */
.measurement-tags-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 6px 0;
  flex-wrap: wrap;
}

.measurement-tags-label { font-size: 12px; flex-shrink: 0; }
.measurement-tags-list { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; flex: 1; }

/* Legacy pills (kept for measurements.js card view) */
.meas-tag-pill {
  display: inline-flex;
  align-items: center;
  padding: 2px 7px;
  border-radius: 10px;
  font-size: 11px;
  font-weight: 500;
  border: 1px solid var(--border);
  background: var(--bg-elevated);
  color: #fff;
  white-space: nowrap;
  text-shadow: 0 1px 2px rgba(0,0,0,0.25);
}

.meas-tag-pills-row {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  flex-wrap: wrap;
}

/* Tag filter */
.meas-tag-filter-wrap {
  position: relative;
  display: flex;
  align-items: center;
}

#meas-tag-filter-btn {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 28px;
  height: 28px;
  border: none;
  border-radius: var(--radius);
  background: none;
  color: var(--text-muted);
  cursor: pointer;
  transition: background .12s, color .12s, box-shadow .12s;
}

#meas-tag-filter-btn:hover,
#meas-tag-filter-btn.active {
  background: var(--bg);
  color: var(--text);
}

#meas-tag-filter-btn svg {
  width: 16px;
  height: 16px;
  display: block;
}

.meas-tag-filter-count {
  position: absolute;
  top: -4px;
  right: -5px;
  min-width: 15px;
  height: 15px;
  padding: 0 4px;
  border-radius: 999px;
  border: 1px solid var(--surface);
  background: var(--brand);
  color: #fff;
  font-size: 9px;
  font-weight: 700;
  line-height: 13px;
  text-align: center;
}

.meas-tag-filter-menu {
  position: fixed;
  width: 236px;
  max-width: calc(100vw - 24px);
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-elevated);
  z-index: 10000;
  padding: 6px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}

.meas-tag-filter-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  padding: 5px 6px 7px;
  border-bottom: 1px solid var(--border);
}

.meas-tag-filter-head div {
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.meas-tag-filter-head strong {
  color: var(--text);
  font-size: 12px;
  font-weight: 700;
}

.meas-tag-filter-head span {
  color: var(--text-muted);
  font-size: 11px;
  line-height: 1.25;
}

.meas-tag-filter-clear {
  flex-shrink: 0;
  border: 0;
  border-radius: 5px;
  background: transparent;
  color: var(--text-muted);
  font: inherit;
  font-size: 11px;
  padding: 4px 6px;
  cursor: pointer;
}

.meas-tag-filter-clear:hover:not(:disabled) {
  background: var(--bg);
  color: var(--text);
}

.meas-tag-filter-clear:disabled {
  opacity: 0.45;
  cursor: default;
}

.meas-tag-filter-list {
  display: flex;
  flex-direction: column;
  gap: 2px;
  max-height: 240px;
  overflow-y: auto;
}

.meas-tag-filter-option {
  display: grid;
  grid-template-columns: 10px minmax(0, 1fr) auto 14px;
  align-items: center;
  gap: 8px;
  width: 100%;
  min-height: 30px;
  padding: 6px 7px;
  border: 0;
  border-radius: 5px;
  background: transparent;
  color: var(--text);
  font: inherit;
  font-size: 12px;
  text-align: left;
  cursor: pointer;
  transition: background 80ms, color 80ms;
}

.meas-tag-filter-option:hover,
.meas-tag-filter-option:focus-visible,
.meas-tag-filter-option.selected {
  background: color-mix(in oklab, var(--chip-color, var(--brand)) 10%, var(--bg));
  outline: none;
}

.meas-tag-filter-option.selected {
  color: var(--text);
  box-shadow: inset 2px 0 0 var(--chip-color, var(--brand));
}

.meas-tag-filter-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
  background: var(--border);
}

.meas-tag-filter-name {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.meas-tag-filter-total {
  color: var(--text-muted);
  font-size: 11px;
  font-variant-numeric: tabular-nums;
}

.meas-tag-filter-check {
  color: var(--chip-color, var(--brand));
  font-size: 12px;
  font-weight: 700;
  opacity: 0;
  text-align: center;
}

.meas-tag-filter-option.selected .meas-tag-filter-check {
  opacity: 1;
}

.measurement-data-layout {
  position: relative;
  margin-top: 0;
}

/* ── Layered drag-to-reveal sheet engine (shared) ─────────────────────────────
   A `.meas-sheet` slides horizontally over a `.meas-reveal-under` panel that
   tucks beneath it; only the left --meas-lib-w "mouth" of the under-panel is ever
   exposed (a reveal rail). --meas-sheet-x (set by JS) is the sheet's left edge.
   Used by the Measurements Data Library board and the Inspect plot. */
.meas-reveal-layout {
  position: relative;
  --meas-lib-w: clamp(320px, 30%, 440px);
}

/* Under-panel: spans the full width and slides underneath the opaque sheet, which
   sits on top (z-index 2). Only the left mouth is exposed; the rest stays tucked
   under the sheet so the two read as one connected unit. */
.meas-reveal-layout .meas-reveal-under {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 10px;
  max-height: none;
}

/* The sheet sits opaque on top and slides via margin-left. */
.meas-reveal-layout .meas-sheet {
  position: relative;
  z-index: 2;
  min-width: 0;
  margin-left: var(--meas-sheet-x, var(--meas-lib-w));
  background: var(--surface);
  will-change: margin-left;
}

/* ── Data Library board specifics ─────────────────────────────────────────── */
.measurement-data-layout.library-drawer-open {
  display: block;
}

/* The file list is hard-clamped to the mouth so its right-edge scrollbar lands at
   the mouth edge instead of tucking under the board where it'd be unreachable. */
.measurement-data-layout.library-drawer-open .meas-library-drawer .measurement-library-scroll-wrap {
  width: var(--meas-lib-w);
}

/* The header, filters strip, and footer stay FULL width so their separator lines
   (bottom/top borders) continue to the right underneath the buckets board; only
   their content is padded back into the visible mouth so it stays reachable. */
.measurement-data-layout.library-drawer-open .meas-library-drawer-head,
.measurement-data-layout.library-drawer-open .meas-library-drawer-filters,
.measurement-data-layout.library-drawer-open .meas-library-drawer-foot {
  padding-right: calc(100% - var(--meas-lib-w) + 12px);
}

/* Floating depth: a left-edge shadow at the seam, deepening while the sheet is
   lifted (dragging/springing) and faintly on while it rests over the under-panel.
   Lives on the layout (under the sheet, over the under-panel). */
.meas-reveal-layout::after {
  content: "";
  position: absolute;
  top: 0;
  bottom: 0;
  left: var(--meas-sheet-x, var(--meas-lib-w));
  right: 0;
  z-index: 1;
  border-radius: var(--radius);
  /* Seam shadow removed — depth now comes from the single sheet shadow + drawer
     offset below, so there's only one shadow at the seam (no overlap). */
  box-shadow: none;
  opacity: 0;
  pointer-events: none;
}

.meas-reveal-layout.meas-sheet-dragging {
  cursor: grabbing;
  user-select: none;
}

.meas-reveal-layout.meas-sheet-dragging .meas-sheet-grip {
  cursor: grabbing;
}

/* Drag grip: a vertical pill on the sheet's left edge. */
.meas-sheet-grip {
  position: absolute;
  top: 0;
  left: 0;
  width: 14px;
  height: 100%;
  z-index: 4;
  cursor: ew-resize;
  touch-action: none;
  background: transparent;
  border: none;
  padding: 0;
}

.meas-sheet-grip::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 4px;
  width: 4px;
  height: 34px;
  transform: translateY(-50%);
  border-radius: 999px;
  background: var(--panel-strong);
  transition: background .15s ease, height .2s cubic-bezier(0.16, 1, 0.3, 1);
}

.meas-sheet-grip:hover::before,
.meas-sheet-grip:focus-visible::before,
.meas-reveal-layout.meas-sheet-dragging .meas-sheet-grip::before {
  background: var(--brand);
  height: 52px;
}

.meas-sheet-grip:focus-visible {
  outline: none;
}

/* Board content clears the edge grip so cards never sit under the pill. The grid
   fills the full board width (cells stretch via minmax(0,1fr)), so the buckets use
   all the horizontal space in both covered and revealed states. Height stays put
   because the column *count* is frozen during the slide (see bindMeasurementDataSheet);
   only cell width changes, which the fixed-height bucket cards don't react to. */
.meas-sheet > .meas-buckets-section-header,
.meas-sheet > .meas-buckets-section-body {
  padding-left: 18px;
}

/* Reveal rail: the under-panel strip that fades in only while the sheet overlaps
   it, so it reads as "tucked underneath", never gone. Opacity tracks the continuous
   --meas-lib-cover (0 = revealed, 1 = covered) for a smooth crossfade with the
   under-panel content; it ramps in once there's meaningful overlap. */
.meas-reveal-rail {
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  width: 36px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  padding: 10px 0;
  border-right: 1px solid var(--border);
  background: color-mix(in oklab, var(--brand) 4%, var(--surface));
  cursor: pointer;
  user-select: none;
  z-index: 6;
  opacity: clamp(0, calc((var(--meas-lib-cover, 0) - 0.2) * 1.8), 1);
  pointer-events: none;
}

.meas-reveal-layout.is-covered .meas-reveal-rail {
  pointer-events: auto;
}

.meas-reveal-rail:hover {
  background: color-mix(in oklab, var(--brand) 9%, var(--surface));
}

.meas-reveal-rail-label {
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--text-muted);
  white-space: nowrap;
}

.meas-reveal-rail-chevron {
  font-size: 14px;
  color: var(--text-muted);
  transition: transform 0.25s ease;
}

.meas-reveal-layout.is-covered .meas-reveal-rail-chevron {
  transform: rotate(180deg);
}

/* The under-panel content fades out as the sheet slides over it (inverse of the
   rail), so once covered there is nothing left to bleed through the sheet. */
.meas-reveal-layout .meas-reveal-under > *:not(.meas-reveal-rail) {
  opacity: clamp(0, calc((0.8 - var(--meas-lib-cover, 0)) * 1.8), 1);
}

.meas-reveal-layout.is-covered .meas-reveal-under > *:not(.meas-reveal-rail) {
  pointer-events: none;
}

.measurement-data-layout .meas-buckets-section {
  margin-top: 0;
  min-height: 520px;
  max-height: min(82vh, 1000px);
  display: flex;
  flex-direction: column;
}

.measurement-data-layout .meas-buckets-section.meas-buckets-detail-mode {
  min-height: 640px;
  max-height: min(90vh, 1200px);
}

/* ── Inspect plot sheet specifics ─────────────────────────────────────────── */
.meas-workspace-layout.inspect-sheet-open {
  display: block;
}

/* The plot shell is the sheet; ensure it sits flush at the top like the board. */
.meas-workspace-layout.inspect-sheet-open .meas-plot-shell.meas-sheet {
  margin-top: 0;
}

/* Preview (plot) content clears the edge grip. */
.meas-workspace-layout.inspect-sheet-open .meas-plot-shell.meas-sheet > .meas-preview-header,
.meas-workspace-layout.inspect-sheet-open .meas-plot-shell.meas-sheet > .meas-plot-controls,
.meas-workspace-layout.inspect-sheet-open .meas-plot-shell.meas-sheet > .meas-plot-secondary,
.meas-workspace-layout.inspect-sheet-open .meas-plot-shell.meas-sheet > .meas-plot-stage {
  padding-left: 18px;
}

/* The Metadata panel's header and body stay inside the visible mouth so their
   controls and form fields remain reachable (the fields are interactive, unlike
   the library's read-only rows). The panel surface still extends under the
   preview, so the two read as one tucked-under unit. */
.meas-workspace-layout.inspect-sheet-open .meas-metadata-section > .meas-buckets-section-header,
.meas-workspace-layout.inspect-sheet-open .meas-metadata-section > .meas-meta-rail-body {
  width: var(--meas-lib-w);
}

.measurement-data-layout .meas-buckets-section:not(.measurement-library-panel) {
  flex: 1;
  min-width: 0;
}

.measurement-data-layout .meas-buckets-section-body {
  flex: 1;
  min-height: 0;
  overflow: auto;
  /* Column so the grid can flex to fill the section's full height. */
  display: flex;
  flex-direction: column;
}

/* ── Buckets board: controls live in the header ──────────────────────────────── */
/* The header holds the title, the filter/selection toolbar, and the column toggle on
   one bar; let it grow and wrap instead of clipping at the fixed 41px. */
.meas-buckets-section.meas-sheet > .meas-buckets-section-header {
  height: auto;
  min-height: 41px;
  overflow: visible;
  flex-wrap: wrap;
  gap: 8px 10px;
  padding-top: 6px;
  padding-bottom: 6px;
}
.meas-buckets-section.meas-sheet > .meas-buckets-section-header .meas-bucket-toolbar {
  flex: 1 1 280px;
  margin-bottom: 0;
  gap: 5px;
}
.meas-buckets-section.meas-sheet .measurement-bucket-search-wrap {
  flex: 1 1 200px;
  min-width: 140px;
}
.meas-buckets-section.meas-sheet .measurement-bucket-search-wrap .meas-bucket-filter-input {
  width: 100%;
  max-width: none;
}
.meas-buckets-section.meas-sheet .measurement-bucket-search-wrap.is-active .meas-bucket-filter-input {
  min-width: 0;
  padding: 1px 2px;
}

/* Smaller, denser controls in the board header. */
.meas-buckets-section.meas-sheet .meas-bucket-toolbar .meas-bucket-selection-btn {
  font-size: 11px;
  padding: 3px 7px;
}
.meas-buckets-section.meas-sheet .meas-bucket-toolbar .meas-bucket-filter-input {
  min-width: 140px;
  padding: 3px 8px;
  font-size: 11px;
}
.meas-buckets-section.meas-sheet .meas-bucket-toolbar .meas-bucket-bulkbar-count {
  font-size: 11px;
}

/* UX grouping: filter + Upload sit on the left; the selection cluster (Select all,
   count, Move, Download, Unlink, Clear) is pushed right, starting at Select all. */
.meas-buckets-section.meas-sheet .meas-bucket-toolbar [data-selection-action="select-all"] {
  margin-left: auto;
}
.meas-buckets-section.meas-sheet .meas-bucket-toolbar .meas-bucket-bulkbar-count {
  margin-left: 0;
}

/* ── Buckets fill the full height at the section's min-height ─────────────────── */
/* Grid stretches to the body height; rows expand (with a sensible floor) so cards
   reach the bottom instead of leaving empty space below. */
.measurement-data-layout .meas-buckets-grid {
  flex: 1 1 auto;
  min-height: 0;
  align-items: stretch;
  align-content: stretch;
  grid-auto-rows: minmax(420px, 1fr);
}
/* 1x: flex-column so the ghost row doesn't inherit the 1fr grid row height. */
.measurement-data-layout .meas-buckets-grid[data-cols="1"] {
  display: flex;
  flex-direction: column;
}
.measurement-data-layout .meas-buckets-grid[data-cols="1"] .meas-bucket-card {
  flex: 1;
  min-height: 220px;
}
.measurement-data-layout .meas-buckets-grid[data-cols="1"] .meas-bucket-ghost,
.measurement-data-layout .meas-buckets-grid[data-cols="1"] .meas-bucket-ghost-btn {
  min-height: 60px;
  flex: none;
}

/* Cards become column flex (every column count, not just 2/3) so their file list
   fills the card height. */
.measurement-data-layout .meas-bucket-card {
  display: flex;
  flex-direction: column;
}
.measurement-data-layout .meas-bucket-card .meas-bucket-scroll-wrap {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
}
.measurement-data-layout .meas-bucket-card .meas-bucket-scroll {
  flex: 1 1 auto;
  max-height: none;
  min-height: 0;
}

.meas-buckets-detail-mode .meas-buckets-section-body {
  overflow: hidden;
}

.meas-bucket-detail-layout {
  flex: 1 1 auto;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(288px, 360px) minmax(0, 1fr);
  gap: 12px;
}

.meas-bucket-nav-panel {
  min-height: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.meas-bucket-nav-list {
  min-height: 0;
  overflow: auto;
  display: flex;
  flex-direction: column;
  gap: 5px;
  padding-right: 2px;
}

.meas-bucket-nav-item {
  width: 100%;
  min-height: 52px;
  display: grid;
  grid-template-columns: minmax(0, 1fr) 22px;
  gap: 10px;
  align-items: center;
  padding: 9px 9px 9px 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
  color: var(--text);
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.meas-bucket-nav-item:hover,
.meas-bucket-nav-item.active {
  border-color: color-mix(in oklab, var(--brand) 45%, var(--border));
  background: color-mix(in oklab, var(--brand) 7%, var(--surface));
}

.meas-bucket-nav-item.drop-target {
  border-color: color-mix(in oklab, var(--brand) 60%, var(--border));
  box-shadow: inset 0 0 0 2px color-mix(in oklab, var(--brand) 18%, transparent);
}

.meas-bucket-nav-copy {
  min-width: 0;
  display: grid;
  gap: 4px;
}

.meas-bucket-nav-name {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 12px;
  font-weight: 400;
  line-height: 1.25;
}

.meas-bucket-nav-meta {
  min-width: 0;
  display: flex;
  align-items: center;
  gap: 6px;
  color: var(--text-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.meas-bucket-nav-count {
  color: var(--text-muted);
  font-size: 11px;
  font-weight: 400;
  line-height: 1.2;
  font-variant-numeric: tabular-nums;
}

.meas-bucket-nav-selected {
  color: color-mix(in oklab, var(--brand) 58%, var(--text));
  font-size: 10px;
  font-weight: 600;
  line-height: 1.2;
  white-space: nowrap;
}

.meas-bucket-nav-action {
  width: 22px;
  height: 22px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  justify-self: end;
  border: 1px solid color-mix(in oklab, var(--border) 80%, transparent);
  border-radius: 50%;
  color: var(--text-muted);
  background: color-mix(in oklab, var(--surface) 72%, var(--bg));
  font-size: 15px;
  line-height: 1;
  transition: border-color .12s ease, color .12s ease, transform .12s ease, background .12s ease;
}

.meas-bucket-nav-item:hover .meas-bucket-nav-action,
.meas-bucket-nav-item.active .meas-bucket-nav-action {
  border-color: color-mix(in oklab, var(--brand) 35%, var(--border));
  color: var(--text);
  background: var(--surface);
  transform: translateX(1px);
}

.meas-bucket-nav-add {
  width: 100%;
  min-height: 44px;
  border-style: dashed;
  background: color-mix(in oklab, var(--surface) 55%, transparent);
}

.meas-bucket-nav-add .meas-bucket-nav-name,
.meas-bucket-nav-add .meas-bucket-nav-meta,
.meas-bucket-nav-add .meas-bucket-nav-action {
  color: var(--text-muted);
}

.meas-bucket-detail-panel,
.meas-bucket-detail-card {
  min-height: 0;
  display: flex;
  flex-direction: column;
}

.meas-bucket-detail-card {
  height: 100%;
}

.meas-bucket-detail-card .meas-bucket-scroll-wrap {
  flex: 1 1 auto;
  min-height: 0;
  display: flex;
  flex-direction: column;
}

.meas-bucket-detail-card .meas-bucket-scroll {
  flex: 1 1 auto;
  max-height: none;
  min-height: 0;
}

@media (max-width: 900px) {
  .meas-bucket-detail-layout {
    grid-template-columns: 1fr;
    grid-template-rows: minmax(120px, 180px) minmax(360px, 1fr);
  }
}

.measurement-library-panel {
  min-height: 720px;
  max-height: min(90vh, 1200px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
}

.measurement-library-panel-body {
  display: flex;
  flex-direction: column;
  gap: 8px;
  flex: 1;
  min-height: 0;
  overflow: hidden;
}

.measurement-library-toolbar {
  display: grid;
  gap: 8px;
}


.measurement-library-search {
  min-width: 0;
}

.measurement-library-list {
  flex: 1;
  min-height: 0;
  overflow: auto;
}

/* Library tree leaf: the file node IS the mdp-tree-node (no card grid). */
.measurement-library-item.mdp-tree-node {
  cursor: grab;
  border: 0;
  border-radius: 0;
  background: transparent;
}

.measurement-library-item.mdp-tree-node.linked {
  opacity: 0.5;
  cursor: default;
}

.measurement-library-item.mdp-tree-node.dragging {
  opacity: 0.5;
}

.measurement-library-item .sample-import-file-check {
  display: inline-flex;
  align-items: center;
  width: auto;
  flex-shrink: 0;
}

.measurement-library-item .sample-import-file-check input {
  margin: 0;
  width: 14px;
  height: 14px;
  accent-color: var(--brand);
}

.measurement-library-leaf-meta {
  flex-shrink: 0;
  max-width: 38%;
  font-size: 10px;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.measurement-library-item-body {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 1px;
}
.measurement-library-item-name {
  display: block;
  font-size: 12px;
  font-weight: 500;
  line-height: 1.3;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.measurement-library-item-meta {
  font-size: 10px;
  line-height: 1.3;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* Group header row (JS-toggled, styled like an mdp-tree branch). */
.measurement-library-group-row {
  width: 100%;
  padding: 3px 4px;
  background: transparent;
  border: 1px solid transparent;
  border-radius: var(--radius);
  font: inherit;
  text-align: left;
  cursor: pointer;
  transition: background 120ms ease, border-color 120ms ease;
}

.measurement-library-group-row:hover {
  background: color-mix(in oklab, var(--brand) 4%, var(--surface));
}

.measurement-library-group-row .exp-member-chip {
  flex-shrink: 0;
  width: 19px;
  height: 19px;
  font-size: 9px;
}

.measurement-library-tree .mdp-tree-caret.is-open::before {
  transform: rotate(45deg);
}

.measurement-library-empty {
  margin-top: 0;
}

/* ── Data Library slide-in drawer (over the bucket board) ── */
.meas-library-open-btn {
  margin-left: auto;
}

/* Box style mirrors the Experiment graph "Research Question" / "Conclusion"
   inspector fields: flat 1px border, var(--radius), surface bg, no shadow. */
.meas-library-drawer {
  flex: 0 0 clamp(320px, 30%, 440px);
  align-self: stretch;
  min-height: 520px;
  max-height: min(82vh, 1000px);
  display: flex;
  flex-direction: column;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  box-shadow: none;
  overflow: hidden;
}

@media (prefers-reduced-motion: no-preference) {
  .meas-library-drawer-enter {
    animation: meas-library-drawer-in .2s cubic-bezier(.22, 1, .36, 1);
  }
}

@keyframes meas-library-drawer-in {
  from { opacity: 0; transform: translateX(-18px); }
  to { opacity: 1; transform: none; }
}

.meas-library-drawer-head {
  display: flex;
  align-items: center;
  gap: 8px;
  height: 41px;
  padding: 0 12px;
  border-bottom: 1px solid var(--border);
}
.meas-library-drawer-head .measurement-library-search-wrap {
  flex: 1 1 auto;
  min-width: 0;
}
/* Search fills the rest of the header; sized to match the buckets filter input. */
.meas-library-drawer-head .measurement-library-search {
	width: 100%;
	min-width: 0;
	max-width: none;
	padding: 3px 8px;
	font-size: 11px;
}
.meas-library-drawer-head .measurement-library-search-wrap.is-active .measurement-library-search {
	padding: 1px 2px;
}

/* Filters live in their own small strip below the header. Its bottom border is the
   single divider that separates the controls block from the file list (and runs
   full width to continue under the buckets board). */
.meas-library-drawer-filters {
  padding: 6px 12px 7px;
  border-bottom: 1px solid var(--border);
}

.measurement-library-folder-browser {
  max-height: 132px;
  margin: -1px 0 6px;
  padding: 2px;
  overflow-y: auto;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: color-mix(in oklab, var(--surface) 82%, var(--bg));
  scrollbar-width: thin;
}

.measurement-library-folder-row {
  display: grid;
  grid-template-columns: 15px 15px minmax(0, 1fr) auto;
  align-items: center;
  min-height: 25px;
  padding: 1px 6px 1px var(--measurement-folder-indent, 4px);
  border-radius: 4px;
  color: var(--text-muted);
}

.measurement-library-folder-row:hover {
  background: color-mix(in oklab, var(--brand) 5%, var(--surface));
}

.measurement-library-folder-row.is-active {
  background: color-mix(in oklab, var(--brand) 11%, var(--surface));
  color: var(--text);
}

.measurement-library-folder-toggle,
.measurement-library-folder-name {
  border: 0;
  background: transparent;
  color: inherit;
  font: inherit;
  cursor: pointer;
}

.measurement-library-folder-toggle {
  position: relative;
  width: 15px;
  height: 20px;
  padding: 0;
}

.measurement-library-folder-toggle::before {
  content: "";
  position: absolute;
  top: 7px;
  left: 4px;
  width: 5px;
  height: 5px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(-45deg);
  transition: transform 120ms ease;
}

.measurement-library-folder-toggle.is-open::before {
  transform: rotate(45deg) translate(-1px, -1px);
}

.measurement-library-folder-icon {
  display: inline-flex;
  width: 13px;
  color: color-mix(in oklab, var(--brand) 65%, var(--text-muted));
}

.measurement-library-folder-icon svg {
  width: 13px;
  height: 13px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.8;
  stroke-linejoin: round;
}

.measurement-library-folder-icon.is-all {
  color: var(--text-muted);
}

.measurement-library-folder-name {
  min-width: 0;
  padding: 3px 4px;
  overflow: hidden;
  text-align: left;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 11px;
}

.measurement-library-folder-count {
  padding-left: 5px;
  font-size: 10px;
  font-variant-numeric: tabular-nums;
  color: var(--text-muted);
}

.meas-library-drawer-title {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  color: var(--text-muted, var(--muted));
}

.meas-library-drawer-close {
  width: 26px;
  height: 26px;
  border: 1px solid transparent;
  border-radius: 6px;
  background: transparent;
  color: var(--text-muted);
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  transition: background .12s, border-color .12s, color .12s;
}

.meas-library-drawer-close:hover {
  border-color: var(--border);
  background: var(--bg);
  color: var(--text);
}

/* The scroll-wrap is the flex child that fills the drawer; the list scrolls inside
   it so the bucket-style fade + arrow affordances anchor to the wrap. */
.meas-library-drawer .measurement-library-scroll-wrap {
  flex: 1;
  min-height: 0;
  display: flex;
  flex-direction: column;
  overflow-y: hidden;
  overflow-x: hidden;
  direction: rtl;
}
.meas-library-drawer .measurement-library-scroll-wrap.is-scrollable {
  overflow-y: auto;
  overscroll-behavior: contain;
}

.meas-library-drawer .measurement-library-list {
  flex: 0 0 auto;
  min-height: min-content;
  overflow: visible;
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 10px;
  box-sizing: border-box;
  direction: ltr;
  /* Drop the .sample-import-list top border/margin — the filters strip's bottom
     border is the divider above the list, so this would just double it. */
  margin-top: 0;
  border-top: none;
}

.meas-library-drawer .meas-library-load-more {
  margin-top: 2px;
}

.meas-library-drawer .measurement-library-tree,
.meas-library-drawer .sample-import-files {
  border: 1px solid var(--border);
  border-radius: 8px;
  overflow: hidden;
  background: color-mix(in oklab, var(--surface) 82%, var(--bg));
}

.meas-library-drawer .measurement-library-tree,
.meas-library-drawer .sample-import-files,
.meas-library-drawer .mdp-tree-children,
.meas-library-drawer .mdp-tree-group {
  gap: 0;
}

.meas-library-drawer .mdp-tree-children {
  padding-left: 2px;
}

/* Top-level leaf rows — flat ("All") file rows live inside .measurement-library-tree,
   and pinned bundle rows (All / Alphabetic / Type modes) sit as direct children of
   the list — have a dead empty caret cell. Collapse it so both align flush left.
   (In grouped modes the leaves live inside .mdp-tree-children / .sample-import-files,
   where the caret column still aligns children under the group caret, so leave those.) */
.meas-library-drawer .measurement-library-tree > .mdp-tree-row-leaf > .mdp-tree-caret-empty,
.meas-library-drawer .measurement-library-list > .mdp-tree-row-leaf > .mdp-tree-caret-empty {
  width: 0;
}

.meas-library-drawer .measurement-library-tree > .mdp-tree-row-leaf,
.meas-library-drawer .sample-import-files > .mdp-tree-row-leaf {
  border-top: 1px solid var(--border);
  transition: background 120ms ease;
}

.meas-library-drawer .measurement-library-tree > .mdp-tree-row-leaf:first-child,
.meas-library-drawer .sample-import-files > .mdp-tree-row-leaf:first-child {
  border-top: none;
}

.meas-library-drawer .measurement-library-tree > .mdp-tree-row-leaf:hover,
.meas-library-drawer .sample-import-files > .mdp-tree-row-leaf:hover {
  background: color-mix(in oklab, var(--brand) 4%, var(--surface));
}

.meas-library-drawer .measurement-library-tree > .mdp-tree-row-leaf:has(.measurement-library-item.is-active),
.meas-library-drawer .measurement-library-tree > .mdp-tree-row-leaf:has(.measurement-library-item.selected),
.meas-library-drawer .sample-import-files > .mdp-tree-row-leaf:has(.measurement-library-item.is-active),
.meas-library-drawer .sample-import-files > .mdp-tree-row-leaf:has(.measurement-library-item.selected) {
  background: color-mix(in oklab, var(--brand) 10%, var(--surface));
}

/* Tighter file rows in the drawer. */
.meas-library-drawer .measurement-library-item.mdp-tree-node {
  gap: 6px;
  padding: 4px 7px;
  border-top: none;
}

.meas-library-drawer .measurement-library-item.mdp-tree-node:hover {
  background: transparent;
  border-color: transparent;
}

.meas-library-drawer .measurement-library-item.mdp-tree-node.is-active,
.meas-library-drawer .measurement-library-item.mdp-tree-node.selected {
  background: transparent;
  border-color: transparent;
}

.meas-library-drawer-foot {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
  border-top: 1px solid var(--border);
}

.meas-library-drawer-count {
  font-size: 12px;
  color: var(--text-muted);
  white-space: nowrap;
}

.meas-library-drawer-target {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-left: auto;
  font-size: 12px;
  color: var(--text);
}

.meas-library-drawer-target select {
  min-width: 110px;
  max-width: 160px;
}

.meas-library-drawer-add[disabled] {
  opacity: .5;
  cursor: default;
}

/* Unify every Measurement-tab section with the drawer / inspector look:
   flat bordered box (no shadow) + uppercase, muted section headers.
   (Plot, Metadata, Notes boxes are already flat; Tags label already matches.) */
/* Every Measurement-tab section box (board, Inspect, Notes, Data Library drawer)
   uses the same shadow as the experiment .exp-focus-card boxes, via --section-shadow. */
body .measurement-data-layout .meas-buckets-section,
body .measurement-data-layout .meas-library-drawer,
body .notes-card.measurement-notes-card,
body .meas-info-box {
  box-shadow: var(--meas-section-shadow, none);
}

/* White (surface) section headers across all themes — overrides the themed tint. */
body .meas-buckets-section > .meas-buckets-section-header,
body .notes-card > .notes-card-header,
body .meas-library-drawer > .meas-library-drawer-head,
body .meas-metadata-section > .meas-buckets-section-header,
body .meas-preview-section > .meas-buckets-section-header {
  background: var(--surface);
}

.meas-buckets-section-title,
.meas-plot-shell-title,
.meas-meta-rail-title,
.meas-meta-rail-label,
.notes-card-header-main > span {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  color: var(--text-muted, var(--muted));
}

/* INSPECT: Metadata and Preview are two standalone section boxes (mirroring the
   Data tab's Data Library + Buckets), so the metadata keeps its own border/box
   chrome from .meas-meta-rail rather than dropping it. */
.meas-inspect-meta .meas-meta-rail-body {
  padding: 10px 22px 16px 22px;
}
/* Pack short fields into a responsive 2-up grid; long fields span full width. */
.meas-inspect-meta .meas-meta-fields {
  grid-template-columns: repeat(auto-fit, minmax(148px, 1fr));
  gap: 12px;
  align-items: start;
}
.meas-inspect-meta .meas-meta-field {
  padding: 0;
  gap: 4px;
}
.meas-inspect-meta .meas-meta-sample-card {
  grid-column: 1 / -1;
  padding: 8px 10px 9px;
  border: 1px solid color-mix(in oklab, var(--brand) 20%, var(--border));
  border-radius: var(--radius);
  background: color-mix(in oklab, var(--brand) 3%, var(--surface));
}
.meas-meta-sample-head {
  display: flex;
  align-items: center;
  min-width: 0;
  gap: 7px;
}
.meas-meta-sample-head > strong {
  min-width: 0;
  overflow: hidden;
  font-size: 12px;
  font-weight: 650;
  color: var(--text);
  text-overflow: ellipsis;
  white-space: nowrap;
}
.meas-meta-sample-kicker {
  flex: 0 0 auto;
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: var(--brand);
}
.meas-meta-sample-status {
  flex: 0 0 auto;
  margin-left: auto;
  padding: 1px 5px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--brand) 9%, var(--surface));
  color: var(--text-muted);
  font-size: 9px;
  line-height: 1.45;
}
.meas-meta-sample-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(96px, 1fr));
  gap: 5px 12px;
  margin-top: 7px;
  padding-top: 7px;
  border-top: 1px solid color-mix(in oklab, var(--border) 75%, transparent);
}
.meas-meta-sample-property {
  display: grid;
  grid-template-columns: minmax(0, auto) minmax(0, 1fr);
  gap: 5px;
  min-width: 0;
  font-size: 10px;
  line-height: 1.35;
}
.meas-meta-sample-property > span {
  color: var(--text-muted);
}
.meas-meta-sample-property > strong {
  min-width: 0;
  overflow-wrap: anywhere;
  color: var(--text);
  font-weight: 500;
}
.meas-meta-sample-property.is-wide {
  grid-column: 1 / -1;
}
.meas-inspect-meta .meas-meta-field-full,
.meas-inspect-meta .meas-meta-field-readonly,
.meas-inspect-meta .meas-meta-banner,
.meas-inspect-meta .meas-meta-field:has(textarea),
.meas-inspect-meta .meas-meta-field:has(.tag-wrap) {
  grid-column: 1 / -1;
}
/* Match the Data Library metadata modal input sizing (compact, 12px). */
.meas-inspect-meta .meas-meta-field-input {
  padding: 3px 7px;
  font-size: 12px;
  line-height: 1.4;
  background: var(--bg);
}
.meas-inspect-meta textarea.meas-meta-field-input {
  min-height: 60px;
  font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Liberation Mono", monospace;
  font-size: 11px;
}
/* Number fields: drop the spinner arrows (they don't help here). */
.meas-inspect-meta input[type="number"].meas-meta-field-input {
  -moz-appearance: textfield;
  appearance: textfield;
}
.meas-inspect-meta input[type="number"].meas-meta-field-input::-webkit-outer-spin-button,
.meas-inspect-meta input[type="number"].meas-meta-field-input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
.meas-inspect-meta .meas-meta-field-notes {
  min-height: 96px !important;
}
.meas-inspect-meta .meas-meta-field-label {
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: var(--text);
}
.meas-metadata-header .meas-meta-rail-status {
  flex: 1;
  min-width: 0;
  min-height: 0;
  padding: 0;
  font-size: 11px;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.meas-metadata-header .meas-meta-save-btn {
  margin-left: auto;
}
.meas-inspect-meta .meas-meta-copy-only-row {
  display: flex;
  align-items: center;
}
.meas-inspect-meta .meas-meta-copy-btn-standalone {
  width: auto;
  min-width: 0;
  padding: 0 9px;
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text-muted);
  gap: 6px;
}
.meas-inspect-meta .meas-meta-copy-btn-standalone span {
  font-size: 11px;
  line-height: 1;
}

/* Metadata and Preview are standalone sections now — give them the same section
   shadow as the Data tab boxes so the two pairs mirror each other. */
body .meas-inspect-meta.meas-meta-rail,
body .meas-preview-section.meas-plot-shell {
  box-shadow: var(--meas-section-shadow, none);
}

.meas-preview-section.meas-sheet > .meas-preview-header {
  height: auto;
  min-height: 41px;
  overflow: visible;
  flex-wrap: wrap;
  gap: 8px 10px;
  padding-top: 6px;
  padding-bottom: 6px;
}
.meas-preview-toolbar {
  flex: 0 1 auto;
  margin-left: auto;
  margin-bottom: 0;
  gap: 5px;
  min-width: 0;
}
.meas-preview-toolbar-group {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
}
.meas-preview-toolbar-group-axis {
  width: 168px;
}
.meas-preview-toolbar-label {
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  color: var(--text);
}
.meas-preview-toolbar select {
  min-width: 0;
  width: 100%;
  max-width: 148px;
  height: 24px;
  padding: 3px 8px;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--surface);
  color: var(--text);
  font: inherit;
  font-size: 11px;
}
.meas-preview-toolbar .meas-bucket-selection-btn,
.meas-preview-header .meas-plot-fullscreen-btn {
  font-size: 11px;
  padding: 3px 7px;
}
.meas-preview-header .meas-plot-shell-actions {
  flex: 0 0 auto;
}

/* ── Stepped-card depth (both reveal layouts via the shared classes) ───────────── */
/* 1) Keep the tucked-under drawer flush with its sheet; the layered read now comes
   only from the front sheet shadow instead of a vertical offset. */
body .meas-reveal-layout .meas-reveal-under {
  transform: none;
  z-index: 1;
}
/* 2) Front reveal sheets use the same single section shadow as the rest of the
   Measurement tab so the layered pairs do not render heavier than the other boxes. */
body .meas-reveal-layout .meas-sheet {
  box-shadow: var(--meas-section-shadow, none);
  position: relative;
  z-index: 2;
}

/* reset axes / legend live on the plot surface, beside the cycle controls. */
.meas-plot-secondary-left {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  min-width: 0;
}
.meas-plot-surface-actions {
  display: flex;
  align-items: center;
  gap: 6px;
}

/* Fullscreen: the Preview becomes a fixed overlay (positioning from
   .meas-plot-shell.fullscreen). Re-assert position:fixed (the shared
   .meas-reveal-layout .meas-sheet rule sets position:relative and is later in the
   file), neutralise the slide offset, and hide the drag grip so it fills the screen. */
.meas-plot-shell.meas-sheet.fullscreen {
  position: fixed;
  z-index: 1000;
  margin-left: 0;
}
.meas-plot-shell.meas-sheet.fullscreen .meas-sheet-grip {
  display: none;
}

@media (max-width: 1180px) {
  .measurement-data-layout {
    flex-direction: column;
  }
  .measurement-library-panel {
    width: 100%;
    height: auto;
    min-height: 0;
    max-height: none;
  }
}

/* ===================== File groups ===================== */
.data-library-bundles-strip {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  padding: 8px 0 4px;
}
.dl-bundles-label {
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: .04em;
}
.dl-bundle-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 10px;
  border: 1px solid var(--border);
  border-radius: 999px;
  background: var(--surface);
  cursor: pointer;
  font-size: 12px;
}
.dl-bundle-chip:hover { border-color: var(--brand); }
.dl-bundle-name { font-weight: 600; }
.dl-bundle-count {
  background: var(--panel);
  border-radius: 999px;
  padding: 0 6px;
  font-size: 11px;
  color: var(--muted);
}
.dl-bundle-reader { color: var(--muted); font-size: 11px; }
.dl-bundle-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--muted); }
.dl-bundle-dot-done { background: #16a34a; }
.dl-bundle-dot-error { background: #dc2626; }
.dl-bundle-dot-parsing, .dl-bundle-dot-pending { background: #d97706; }
.dl-bundle-dot-skipped { background: #9ca3af; }

.fb-modal { width: min(680px, 94vw); }
.fb-header { display: flex; align-items: center; gap: 12px; }
.fb-name {
  flex: 1;
  font-size: 16px;
  font-weight: 600;
  border: 1px solid transparent;
  border-radius: 8px;
  padding: 6px 8px;
  background: transparent;
  color: var(--text);
}
.fb-name:hover, .fb-name:focus { border-color: var(--border); background: var(--surface); outline: none; }
.fb-close {
  border: none; background: none; cursor: pointer;
  font-size: 22px; line-height: 1; color: var(--muted);
}
.fb-body { display: flex; flex-direction: column; gap: 16px; overflow-y: auto; }
.fb-section { display: flex; flex-direction: column; gap: 8px; }
.fb-section-title { font-size: 13px; font-weight: 600; color: var(--text); }
.fb-hint { font-weight: 400; color: var(--muted); font-size: 12px; }
.fb-field { display: grid; gap: 5px; color: var(--text); font-size: 12px; font-weight: 600; }
.fb-input {
  width: 100%;
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 7px 9px;
  background: var(--surface);
  color: var(--text);
  font-size: 13px;
}
.fb-reader { font-size: 12px; color: var(--muted); }
.fb-reader code { background: var(--panel); padding: 1px 5px; border-radius: 5px; }
.fb-member {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px 9px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--surface);
}
.fb-member.is-active { border-color: var(--brand); }
.fb-member.is-dormant { border-style: dashed; opacity: .72; }
.fb-member.is-dormant:hover, .fb-member.is-dormant:focus-within { opacity: 1; }
.fb-role-dormant {
  font-size: 10px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase;
  background: var(--panel); border: 1px dashed var(--border);
  border-radius: 999px; padding: 1px 7px;
}
.fb-radio { display: flex; align-items: center; gap: 8px; flex: 1; cursor: pointer; min-width: 0; }
.fb-member-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; }
.fb-member-meta { color: var(--muted); font-size: 12px; white-space: nowrap; }
.fb-member-role { color: var(--muted); font-size: 12px; white-space: nowrap; }
.fb-slot { width: auto; min-width: 160px; flex: none; }
.fb-x {
  border: none; background: none; cursor: pointer;
  color: var(--muted); font-size: 18px; line-height: 1;
}
.fb-x:hover { color: #dc2626; }
.fb-params { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.fb-param { display: flex; flex-direction: column; gap: 4px; }
.fb-param-label { font-size: 12px; color: var(--text); }
.fb-unit { color: var(--muted); }
.fb-req { color: #dc2626; }
.fb-parse-callout {
  display: grid;
  grid-template-columns: 8px minmax(0, 1fr) auto;
  align-items: center;
  gap: 9px;
  padding: 10px;
  border: 1px solid var(--border);
  border-radius: 9px;
  background: var(--panel);
}
.fb-parse-callout > div { display: grid; grid-template-columns: auto minmax(0, 1fr); align-items: center; gap: 2px 7px; }
.fb-parse-callout > div > span:last-child { grid-column: 1 / -1; color: var(--muted); font-size: 11px; }
.fb-parse-callout strong { min-width: 0; font-size: 12px; }
.fb-parse-mark { width: 8px; height: 8px; border-radius: 50%; background: var(--brand); }
.fb-parse-callout-pending .fb-parse-mark, .fb-parse-callout-parsing .fb-parse-mark { background: #d97706; }
.fb-parse-callout-error .fb-parse-mark { background: var(--danger); }
.fb-parse-callout-done .fb-parse-mark { background: #16a34a; }
.fb-status {
  display: inline-flex; align-items: center;
  padding: 2px 10px; border-radius: 999px;
  font-size: 12px; font-weight: 600;
  background: var(--panel); color: var(--muted);
}
.fb-status-done { background: #dcfce7; color: #15803d; }
.fb-status-error { background: #fee2e2; color: var(--danger); }
.fb-status-parsing, .fb-status-pending { background: #ffedd5; color: #c2410c; }
.fb-error { color: var(--danger); font-size: 12px; background: var(--danger-soft); border-radius: 8px; padding: 8px 10px; }
.fb-summary { display: flex; flex-direction: column; gap: 3px; margin-top: 6px; }
.fb-sum-row { display: flex; justify-content: space-between; gap: 12px; font-size: 12px; }
.fb-sum-row span { color: var(--muted); }
.fb-foot { display: flex; justify-content: space-between; gap: 10px; }

.fb-review {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  border: 1px solid var(--border);
  border-radius: 9px;
  background: var(--panel);
  overflow: hidden;
}

.fb-review > div {
  display: grid;
  gap: 3px;
  min-width: 0;
  padding: 9px 11px;
  border-right: 1px solid var(--border);
}

.fb-review > div:last-child { border-right: 0; }
.fb-review span { color: var(--muted); font-size: 10px; text-transform: uppercase; letter-spacing: .04em; }
.fb-review strong { overflow: hidden; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }

/* Wizard parse result */
.fb-parse-result { display: flex; flex-direction: column; gap: 10px; }
.fb-cols-title { font-size: 12px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.fb-col-pills { display: flex; flex-wrap: wrap; gap: 5px; }
.fb-col-pill { padding: 2px 8px; border-radius: 6px; background: color-mix(in oklab, var(--brand) 10%, var(--surface)); border: 1px solid color-mix(in oklab, var(--brand) 22%, var(--border)); font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; color: var(--text); white-space: nowrap; }

/* Wizard stepper */
.fb-stepper { display: flex; align-items: center; gap: 0; padding: 16px 24px 0; border-bottom: 1px solid var(--border); margin-bottom: 0; }
.fb-step { display: flex; align-items: center; gap: 6px; padding-bottom: 12px; font-size: 13px; color: var(--muted); }
.fb-step-active { color: var(--brand); font-weight: 600; }
.fb-step-done { color: var(--muted); }
.fb-step-num { width: 22px; height: 22px; border-radius: 50%; border: 2px solid currentColor; display: flex; align-items: center; justify-content: center; font-size: 11px; font-weight: 700; flex-shrink: 0; }
.fb-step-active .fb-step-num { background: var(--brand); border-color: var(--brand); color: #fff; }
.fb-step-done .fb-step-num { background: var(--muted); border-color: var(--muted); color: #fff; font-size: 12px; }
.fb-step-sep { color: var(--border); padding: 0 8px; font-size: 16px; padding-bottom: 12px; }
.fb-wizard-intro { font-size: 13px; color: var(--muted); margin: 0; }
.fb-header-title { font-size: 15px; font-weight: 600; flex: 1; }

/* ============ File groups: inline expandable rows ============ */
.data-library-bundle-row > td {
  border-bottom: 1px solid color-mix(in oklab, var(--border) 62%, transparent);
  transition: background .14s ease;
}
.data-library-bundle-row:hover > td {
  background: color-mix(in oklab, var(--brand) 4%, var(--surface));
}
.data-library-bundle-row.is-selected > td {
  background: color-mix(in oklab, var(--brand) 9%, var(--surface));
}
.dl-bundle-caret {
  border: none; background: none; cursor: pointer;
  font-size: 12px; color: var(--muted); padding: 2px 4px; line-height: 1;
}
.dl-bundle-namewrap { display: flex; align-items: center; gap: 8px; min-width: 0; }
.dl-bundle-name-btn { flex: 1; }
.dl-bundle-marker {
  flex: 0 0 auto; display: inline-flex; align-items: center; gap: 4px;
  padding: 1px 4px; border: 0; border-radius: 5px; background: transparent; color: var(--text-muted);
  cursor: pointer; font-family: inherit; font-size: 10px; font-weight: 500; line-height: 16px;
}
.dl-bundle-marker svg { width: 12px; height: 12px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.dl-bundle-marker:hover { background: var(--panel); color: var(--text); }
.dl-bundle-marker:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; }
/* Editable bundle name in the metadata modal header — reads as the title until
   hovered/focused, matching the single-file modal's h3. */
.dl-bundle-meta-name-input {
  min-width: 0; flex: 1;
  border: 1px solid transparent; border-radius: 6px;
  padding: 3px 6px; background: transparent; color: var(--text);
  font: inherit; font-size: 15px; font-weight: 400;
}
.dl-bundle-meta-name-input:hover, .dl-bundle-meta-name-input:focus {
  border-color: var(--border); background: var(--surface); outline: none;
}
.dl-bundle-count {
  background: var(--surface); border: 1px solid var(--border);
  border-radius: 999px; padding: 0 7px; font-size: 11px; color: var(--muted);
}
.dl-bundle-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--muted); flex: none; }
.dl-bundle-dot-done { background: #16a34a; }
.dl-bundle-dot-error { background: #dc2626; }
.dl-bundle-dot-parsing, .dl-bundle-dot-pending { background: #d97706; }
.dl-bundle-dot-skipped { background: #9ca3af; }
/* Bundle instrument dropdown matches the standalone-file select: transparent
   until the row is hovered/focused, same sizing and reveal. */
.dl-bundle-instrument-select {
  width: 100%; max-width: 100%; font: inherit; font-weight: 400;
  color: var(--text); background: transparent;
  border: 1px solid transparent; border-radius: 6px;
  padding: 3px 6px; cursor: pointer; text-overflow: ellipsis;
}
.dl-bundle-instrument-select:hover,
.data-library-bundle-row:hover .dl-bundle-instrument-select {
  border-color: var(--border); background: var(--surface);
}
.dl-bundle-instrument-select:focus {
  outline: none; border-color: var(--brand); background: var(--surface);
}
.dl-bundle-slot-select {
  width: 100%; min-width: 140px; border: 1px solid var(--border); border-radius: 7px;
  padding: 5px 7px; background: var(--surface); color: var(--text); font-size: 12px;
}
.dl-bundle-badge {
  display: inline-block; font-size: 10px; font-weight: 700; letter-spacing: .05em;
  color: var(--brand); background: var(--surface);
  border: 1px solid var(--border); border-radius: 5px; padding: 1px 5px; margin-right: 6px;
}
.dl-bundle-reader { font-size: 11px; color: var(--muted); }

.data-library-bundle-member-row > td {
  background: var(--surface); border-top: 1px dashed var(--border);
}
.data-library-bundle-member-row .dl-cell-name { padding-left: 28px; }
.dl-bundle-member-name {
  font-size: 13px; color: var(--text);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; display: block;
}
.dl-bundle-role-muted { font-size: 12px; color: var(--muted); }

.data-library-bundle-param-row > td { background: var(--surface); border-top: 1px dashed var(--border); }
.dl-bundle-params { display: flex; flex-wrap: wrap; gap: 14px; padding: 4px 0 4px 28px; }
.dl-bundle-param { display: flex; flex-direction: column; gap: 3px; }
.dl-bundle-param-label { font-size: 11px; color: var(--muted); }
.dl-bundle-unit { color: var(--muted); }
.dl-bundle-req { color: #dc2626; }
.dl-bundle-param-input {
  border: 1px solid var(--border); border-radius: 7px;
  padding: 5px 7px; background: var(--surface); color: var(--text); font-size: 12px; min-width: 140px;
}
.data-library-bundle-error-row > td { background: var(--surface); }
.dl-bundle-error {
  color: var(--danger); background: var(--danger-soft); border-radius: 7px;
  padding: 7px 10px; font-size: 12px; margin: 2px 0 4px 28px;
}

/* Bundle action + parse buttons auto-hide and reveal on row hover, exactly like
   standalone file rows (bundle rows aren't .data-library-file-row). */
.data-library-bundle-row .dl-action-btn { opacity: 1; }
.data-library-bundle-row .dl-action-btn[disabled] { opacity: .3; }

/* ===== Bundle metadata modal: files tree + per-file controls ===== */

.dl-meta-count {
  font-size: 11px; font-weight: 600; letter-spacing: 0; text-transform: none; color: var(--muted);
  background: var(--panel); border: 1px solid var(--border); border-radius: 999px; padding: 0 7px;
}

/* Folder tree: flat rows with a left rail per nesting level (Bruker NMR etc.),
   so files read as an indented tree rather than staggered boxes. */
.dl-bundle-file-list { display: flex; flex-direction: column; gap: 0; max-height: 300px; overflow-y: auto; }
.dl-bundle-tree-group {
  display: flex; flex-direction: column; gap: 0;
  margin-left: 6px; padding-left: 8px; border-left: 1px solid var(--border);
}
.dl-bundle-file-item {
  display: flex; align-items: center; min-width: 0;
  border-radius: 4px; padding: 2px 4px; text-align: left;
}
.dl-bundle-file-item:hover { background: var(--panel); }
.dl-bundle-file-name { font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; flex: 1; }

.dl-bundle-tree-dir {
  display: flex; align-items: center; gap: 6px;
  padding: 3px 4px; font-size: 10px; font-weight: 600; letter-spacing: .02em; color: var(--text);
}
.dl-bundle-tree-dir svg { width: 12px; height: 12px; stroke: var(--brand); fill: none; stroke-width: 1.7; flex: none; }
.dl-bundle-tree-dir span { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* Instrument select + parse button sit on one row in both modals. */
.dl-meta-instrument-row { display: flex; align-items: center; gap: 6px; }
.dl-meta-instrument-row .dl-bundle-instrument-select {
  flex: 1 1 auto; min-width: 0; border-color: var(--border); background: var(--surface);
}
.dl-meta-instrument-row .dl-action-btn { flex: 0 0 auto; }
.dl-bundle-meta-params { margin-top: 4px; }

.dl-bundle-parse-guide {
  display: grid;
  grid-template-columns: 8px minmax(0, 1fr) auto;
  align-items: center;
  gap: 8px;
  margin-top: 4px;
  padding: 8px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--panel);
}

.dl-bundle-parse-guide > div {
  display: grid;
  gap: 1px;
  min-width: 0;
}

.dl-bundle-parse-guide strong { font-size: 11px; }
.dl-bundle-parse-guide span { color: var(--text-muted); font-size: 10px; line-height: 1.35; }
.dl-bundle-parse-mark { width: 8px; height: 8px; border-radius: 50%; background: #9ca3af; }
.dl-bundle-parse-guide-ready .dl-bundle-parse-mark { background: var(--brand); }
.dl-bundle-parse-guide-processing .dl-bundle-parse-mark { background: #d97706; }
.dl-bundle-parse-guide-error .dl-bundle-parse-mark { background: var(--danger); }
.dl-bundle-parse-guide-done .dl-bundle-parse-mark { background: #16a34a; }

/* ===== File groups in the Measurement tab (read-only) ===== */
.meas-library-groups { display: flex; flex-direction: column; gap: 8px; margin-bottom: 10px; }
.meas-bundle-row {
  border: 1px solid var(--border); border-radius: 10px;
  background: var(--panel); overflow: hidden; cursor: grab;
}
.meas-bundle-row:active { cursor: grabbing; }
.meas-bundle-row.dragging { opacity: .5; }
.meas-bundle-head {
  display: flex; align-items: center; gap: 8px; padding: 8px 10px;
}
.meas-bundle-badge {
  font-size: 10px; font-weight: 700; letter-spacing: .05em; color: var(--brand);
  background: var(--surface); border: 1px solid var(--border); border-radius: 5px; padding: 1px 5px;
}
.meas-bundle-name { font-weight: 600; font-size: 13px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.meas-bundle-count {
  background: var(--surface); border: 1px solid var(--border); border-radius: 999px;
  padding: 0 7px; font-size: 11px; color: var(--muted);
}
.meas-bundle-instrument { font-size: 11px; color: var(--muted); margin-left: auto; }
.meas-bundle-unset { font-style: italic; }
.meas-bundle-members { display: flex; flex-direction: column; }
.meas-bundle-member {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 5px 12px; border-top: 1px dashed var(--border); background: var(--surface);
}
.meas-bundle-member-name { font-size: 12px; color: var(--text); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.meas-bundle-member-role { font-size: 11px; color: var(--muted); white-space: nowrap; }
.meas-bundle-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--muted); flex: none; }
.meas-bundle-dot-done { background: #16a34a; }
.meas-bundle-dot-error { background: var(--danger); }
.meas-bundle-dot-parsing, .meas-bundle-dot-pending { background: #d97706; }
.meas-bundle-dot-skipped { background: #9ca3af; }
.meas-bucket-bundle-banner {
  display: flex; align-items: center; gap: 8px; padding: 5px 9px; margin-bottom: 6px;
  border: 1px dashed var(--border); border-radius: 8px; background: var(--panel);
}

.meas-meta-hint { font-size: 11px; color: var(--muted); margin-top: 6px; font-style: italic; }

/* Parse-status ball on loose Data Library file rows (matches group rows). */
.dl-name-cell-inner { display: inline-flex; align-items: center; gap: 8px; min-width: 0; max-width: 100%; }
.dl-status-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--muted); flex: none; }
.dl-status-dot-done { background: #16a34a; }
.dl-status-dot-error { background: var(--danger); }
.dl-status-dot-parsing, .dl-status-dot-pending { background: #d97706; }
.dl-status-dot-skipped, .dl-status-dot-none { background: #9ca3af; }

/* --- Bundle workbench ---------------------------------------------------- */
.dl-bundle-upload-notice { display: flex; align-items: stretch; margin: 0 10px 8px; border: 1px solid color-mix(in oklab, var(--brand) 35%, var(--border)); border-radius: 8px; background: color-mix(in oklab, var(--brand) 7%, var(--surface)); color: var(--text); }
.dl-bundle-upload-notice.needs-attention { border-color: color-mix(in oklab, #d97706 50%, var(--border)); background: color-mix(in oklab, #d97706 8%, var(--surface)); }
.dl-bundle-upload-notice button { border: 0; background: transparent; color: inherit; font: inherit; cursor: pointer; }
.dl-bundle-upload-notice > button:first-child { display: flex; align-items: center; gap: 8px; min-width: 0; flex: 1; padding: 7px 10px; text-align: left; }
.dl-bundle-upload-notice > button:last-child { width: 32px; color: var(--muted); font-size: 18px; }
.dl-bundle-upload-notice svg { width: 15px; height: 15px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.8; }
.dl-bundle-upload-notice span { overflow: hidden; font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.dl-bundle-upload-notice strong { margin-left: auto; color: #a16207; font-size: 10px; white-space: nowrap; }

.dl-workbench-state-dot { width: 7px; height: 7px; flex: none; border-radius: 50%; background: #9ca3af; }
.dl-workbench-state-ready { background: #2563eb; }
.dl-workbench-state-processing { background: #2563eb; }
.dl-workbench-state-setup { background: #d97706; }
.dl-workbench-state-error { background: #dc2626; }
.dl-workbench-state-done { background: #16a34a; }

.dl-workbench-body {
  min-height: 0; display: grid; align-content: start; gap: 16px;
  padding: 18px; overflow-y: auto; background: var(--bg);
}
.dl-workbench-fields { grid-template-columns: minmax(0, 1fr); }
.dl-workbench-inputs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.dl-workbench-files { display: grid; gap: 7px; }
.dl-workbench-file { display: grid; grid-template-columns: minmax(0, 1fr) minmax(160px, 220px); align-items: center; gap: 12px; min-height: 38px; padding: 7px 9px; border: 1px solid var(--border); border-radius: 8px; background: var(--bg); }
.dl-workbench-file > div { min-width: 0; display: flex; flex-direction: column; }
.dl-workbench-file strong { overflow: hidden; font-family: var(--mono, ui-monospace, monospace); font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.dl-workbench-file div > span { color: var(--text-muted); font-size: 10px; }
.dl-workbench-file .dl-workbench-file-controls { flex-direction: row; align-items: center; gap: 7px; }
.dl-workbench-file-controls select { width: 100%; min-width: 0; }
.dl-workbench-file-controls .dl-action-btn { flex: 0 0 auto; opacity: 1; }
.dl-workbench-modal .dl-bundle-params { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px 20px; padding: 0; }
.dl-workbench-modal .dl-bundle-param-label { color: var(--text); font-size: 12px; font-weight: 500; }
.dl-workbench-modal .dl-bundle-param-input { min-width: 0; padding: 7px 10px; border-radius: 8px; font-size: 13px; }
.dl-workbench-readiness { display: flex; align-items: center; gap: 14px; padding: 11px 14px; }
.dl-workbench-readiness-copy { display: flex; align-items: center; gap: 9px; min-width: 0; }
.dl-workbench-readiness-copy > div { display: grid; gap: 2px; min-width: 0; }
.dl-workbench-readiness-copy strong { font-size: 12px; }
.dl-workbench-readiness-copy span:last-child { overflow: hidden; color: var(--text-muted); font-size: 11px; text-overflow: ellipsis; white-space: nowrap; }
.dl-workbench-parse-btn {
  display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; margin-left: auto;
  padding: 5px 10px; border: 1px solid color-mix(in oklab, var(--workbench-accent) 45%, var(--border)); border-radius: 999px;
  background: color-mix(in oklab, var(--surface) 82%, transparent); color: var(--workbench-accent);
  font-family: inherit; font-size: 11px; font-weight: 600; line-height: 1; cursor: pointer; transition: background .12s ease, border-color .12s ease, transform .12s ease;
}
.dl-workbench-parse-btn svg { width: 13px; height: 13px; fill: none; stroke: currentColor; stroke-width: 1.8; }
.dl-workbench-parse-btn:hover:not(:disabled) { border-color: var(--workbench-accent); background: color-mix(in oklab, var(--workbench-accent) 12%, var(--surface)); transform: translateY(-1px); }
.dl-workbench-parse-btn:disabled { opacity: .5; cursor: not-allowed; }
.dl-workbench-readiness-ready { --workbench-accent: var(--brand); border-color: color-mix(in oklab, var(--brand) 35%, var(--border)); background: color-mix(in oklab, var(--brand) 7%, var(--surface)); }
.dl-workbench-readiness-setup { --workbench-accent: #c2410c; border-color: color-mix(in oklab, #d97706 40%, var(--border)); background: #ffedd5; }
.dl-workbench-readiness-processing { --workbench-accent: #1d4ed8; border-color: color-mix(in oklab, #2563eb 40%, var(--border)); background: #dbeafe; }
.dl-workbench-readiness-error { --workbench-accent: var(--danger); border-color: color-mix(in oklab, var(--danger) 45%, var(--border)); background: var(--danger-soft); }
.dl-workbench-readiness-done { --workbench-accent: #15803d; border-color: color-mix(in oklab, #15803d 40%, var(--border)); background: #dcfce7; }
.dl-workbench-result .dl-meta-card { margin: 0; }
.dl-workbench-launch { border-color: color-mix(in oklab, var(--brand) 35%, var(--border)); color: var(--brand); }
.dl-workbench-launch-setup { border-color: color-mix(in oklab, #c2410c 35%, var(--border)); background: #ffedd5; color: #c2410c; }
.dl-workbench-launch-error { border-color: color-mix(in oklab, var(--danger) 40%, var(--border)); background: var(--danger-soft); color: var(--danger); }
.dl-workbench-launch-processing { border-color: color-mix(in oklab, #2563eb 35%, var(--border)); background: #dbeafe; color: #1d4ed8; }
.dl-workbench-launch-done { border-color: color-mix(in oklab, #15803d 35%, var(--border)); background: #dcfce7; color: #15803d; }
@media (max-width: 760px) {
	.dl-library-toolbar-lead { flex-wrap: wrap; }
	.data-library-toolbar-search { flex: 1 1 auto; }
	.dl-workbench-fields { grid-template-columns: 1fr; }
	.dl-workbench-inputs { grid-template-columns: 1fr; }
	.dl-workbench-file { grid-template-columns: 1fr; }
	.dl-workbench-modal .dl-bundle-params { grid-template-columns: 1fr; }
	.dl-workbench-modal .dl-meta2-foot { flex-wrap: wrap; }
	.fb-review { grid-template-columns: 1fr; }
	.fb-review > div { border-right: 0; border-bottom: 1px solid var(--border); }
	.fb-review > div:last-child { border-bottom: 0; }
	.fb-step-label { display: none; }
}

/* --- Bundle modal: header actions + per-member content head + downloads --- */
.dl-bundle-file-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* --- My Samples: projects-hub style specimen list ------------------------- */
#my-samples-view { height: 100%; overflow: hidden; }
.my-samples-list .hub-list { gap: 7px; }
.my-samples-folder-workspace {
  grid-template-columns: clamp(146px, 15vw, 188px) minmax(0, 1fr);
  align-items: start;
}
.my-samples-folder-workspace.folders-collapsed {
  grid-template-columns: 38px minmax(0, 1fr);
}
.my-samples-folder-workspace .data-library-folder-sidebar {
  position: sticky;
  top: 0;
  align-self: start;
  width: 100%;
  max-height: min(520px, 68vh);
  box-sizing: border-box;
}
.my-samples-empty { color: var(--text-muted, #71717a); padding: 40px 4px; text-align: center; }
.my-samples-table-shell {
  overflow-x: auto;
  overflow-y: hidden;
}
.my-samples-table-shell .my-samples-empty {
  background: var(--surface);
}

/* Always span the full content width; scroll horizontally only when the columns
   genuinely need more room than the viewport. */
.my-samples-table { width: 100%; min-width: 1180px; table-layout: auto; background: var(--surface); }
.my-samples-table thead th { position: static; }
.my-samples-table .dl-th-btn { padding: 9px 6px; }
.my-samples-table .ms-row {
  height: 38px;
}
.my-samples-table .ms-row:last-child {
  border-bottom: 0;
}
.my-samples-table .dl-th { white-space: nowrap; }
.my-samples-table .ms-cell { height: 38px; padding: 0 6px; vertical-align: middle; overflow: visible; }
.ms-th-name, .ms-cell-name { min-width: 170px; }
.ms-cell-notes, .ms-cell-safety_notes, .ms-cell-preparation_method,
.ms-th-notes, .ms-th-safety_notes, .ms-th-preparation_method { width: 56px; text-align: center; }
.ms-th-center .dl-th-btn { justify-content: center; }
/* Batch + Parent sit side by side; give Batch the room, keep Parent compact,
   and stop either dropdown's text from being clipped. */
.ms-th-batch, .ms-cell-batch { min-width: 180px; }
.ms-th-parent_specimen_id, .ms-cell-parent_specimen_id { min-width: 130px; }
.ms-cell-batch .dl-inline-select, .ms-cell-parent_specimen_id .dl-inline-select { text-overflow: ellipsis; }
.ms-th-prepared_at, .ms-cell-prepared_at { min-width: 190px; }
.ms-dt-input { min-width: 176px; }
.my-samples-table .dl-cell-select,
.my-samples-table .dl-th-select { width: 36px; }
.my-samples-table .dl-cell-actions, .my-samples-table .dl-th-actions { width: 64px; }
.ms-del-btn svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

/* Smart code-generation / bulk-create bar — always visible; rich controls live
   in hover popovers anchored to the two triggers. */
.ms-codegen {
  height: 28px;
  gap: 8px;
  overflow: visible;
  justify-content: flex-start;
  padding: 0;
  border: 0;
}
#my-samples-view .hub-head-right .ms-codegen {
  width: auto;
  height: 28px;
  min-width: 0;
  flex: 0 1 auto;
  flex-wrap: nowrap;
  align-content: center;
  justify-content: flex-end;
  background: transparent;
  box-shadow: none;
}
/* Triggers + Clear stay pinned left; the selection count floats to the right so
   it never shifts the left cluster as the number changes. */
.ms-codegen .dl-bulk-btn { height: 28px; display: inline-flex; align-items: center; gap: 6px; white-space: nowrap; }
#my-samples-view .hub-head-right .ms-codegen .dl-bulk-btn {
  background: var(--input-bg);
  flex: 0 0 auto;
}
#my-samples-view .hub-head-right .ms-codegen .ms-cg-trigger {
  justify-content: center;
  width: 28px;
  padding: 0;
}
#my-samples-view .hub-head-right .ms-codegen .ms-cg-trigger span {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}
#my-samples-view .hub-head-right .ms-codegen .dl-bulk-btn:hover:not(:disabled),
#my-samples-view .hub-head-right .ms-codegen .ms-cg-trigger.is-open {
  background: var(--surface);
}
#my-samples-view .hub-head-right .ms-codegen .dl-bulk-btn-danger {
  background: var(--danger-soft);
}
.ms-cg-go { white-space: nowrap; }
.ms-cg-check { display: flex; align-items: center; gap: 7px; font-size: 12px; color: var(--text-muted); cursor: pointer; }
.ms-cg-check input { margin: 0; cursor: pointer; }
.ms-codegen .ms-cg-count { margin-left: auto; }
#my-samples-view .hub-head-right .ms-codegen .ms-cg-count {
  margin-left: 0;
  flex: 0 0 max-content;
  width: auto;
  white-space: nowrap;
}
.dl-bulk-btn:disabled { opacity: .45; cursor: default; }
.dl-bulk-btn.primary {
  border-color: color-mix(in oklab, var(--brand) 50%, var(--border));
  background: color-mix(in oklab, var(--brand) 12%, var(--surface));
  color: var(--brand);
}
.dl-bulk-btn.primary:hover:not(:disabled) { background: color-mix(in oklab, var(--brand) 20%, var(--surface)); }

.ms-cg-trigger { color: var(--text); }
.ms-cg-trigger svg { width: 14px; height: 14px; flex: 0 0 auto; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.ms-cg-trigger.is-open { border-color: var(--brand); color: var(--brand); background: color-mix(in oklab, var(--brand) 8%, var(--surface)); }

/* Anchor wraps trigger + popover so the popover positions under its trigger. */
.ms-cg-anchor { position: relative; display: inline-flex; }
.ms-cg-popover {
  position: absolute; top: calc(100% + 6px); left: 0; z-index: 40;
  width: 300px; padding: 14px; box-sizing: border-box;
  background: var(--panel, var(--surface)); border: 1px solid var(--border);
  border-radius: 12px; box-shadow: 0 12px 32px rgba(0,0,0,.18);
  display: flex; flex-direction: column; gap: 10px;
  animation: ms-cg-pop .12s ease-out;
}
@keyframes ms-cg-pop { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }
.ms-cg-pop-title { display: flex; align-items: center; gap: 7px; font-size: 13px; font-weight: 650; }
.ms-cg-pop-title svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; color: var(--brand); }
.ms-cg-pop-title em { margin-left: auto; font-style: normal; font-size: 11px; font-weight: 500; color: var(--text-muted); }

.ms-cg-fields { display: flex; gap: 8px; }
.ms-cg-field { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.ms-cg-field > span { font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--text-muted); }
.ms-cg-field-grow { flex: 1 1 auto; }
.ms-cg-field-sm { width: 74px; flex: 0 0 auto; }
.ms-cg-count { width: 100%; }
.ms-cg-input {
  width: 100%; box-sizing: border-box; height: 30px; padding: 0 9px;
  font: inherit; font-size: 13px; color: var(--text);
  background: var(--surface); border: 1px solid var(--border); border-radius: 7px;
}
.ms-cg-input:focus { outline: none; border-color: var(--brand); }
.ms-cg-textarea { height: auto; min-height: 84px; padding: 8px 9px; resize: vertical; line-height: 1.5; }
.ms-cg-popover-edit { width: 320px; }
.ms-cg-valuewrap { display: block; }
.ms-cg-applyrow { display: flex; align-items: center; gap: 8px; }
.ms-cg-applyrow .ms-cg-go { flex: 1; width: auto; }
.ms-cg-status { font-size: 11px; color: var(--text-muted); white-space: nowrap; }
.ms-cg-tokenhint { font-size: 11px; color: var(--text-muted); }
.ms-cg-tokenhint code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; background: var(--surface); border: 1px solid var(--border); border-radius: 4px; padding: 0 4px; }

.ms-cg-preview-label { font-size: 10px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--text-muted); }
.ms-cg-preview {
  display: flex; flex-direction: column; gap: 2px; max-height: 168px; overflow: auto;
  padding: 8px 10px; border-radius: 8px; background: var(--surface); border: 1px solid var(--border);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px;
}
.ms-cg-preview-row { color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ms-cg-preview-more { color: var(--text-muted); font-size: 11px; font-family: var(--font, sans-serif); padding: 1px 0; }
.ms-cg-preview-empty { color: var(--text-muted); font-family: var(--font, sans-serif); font-size: 12px; }
.ms-cg-hint { font-size: 11px; color: var(--text-muted); }
.ms-cg-go { width: 100%; justify-content: center; height: 32px; }

/* Inline editors: invisible until hover/focus, like the library's instrument cell. */
.dl-inline-input {
  width: 100%; max-width: 100%; min-width: 0; box-sizing: border-box;
  font: inherit; font-size: 12px; color: var(--text); background: transparent;
  border: 1px solid transparent; border-radius: 6px; padding: 4px 6px;
  text-overflow: ellipsis;
}
.dl-inline-input::placeholder { color: var(--text-muted); opacity: .5; }
.ms-row:hover .dl-inline-input,
.ms-row:hover .dl-inline-select { border-color: var(--border); background: var(--surface); }
.dl-inline-input:focus,
.dl-inline-select:focus { outline: none; border-color: var(--brand); background: var(--surface); }
.dl-inline-select { cursor: pointer; }

/* Status select tinting */
.ms-status-select { font-weight: 600; }
.ms-status-select.ms-status-active { color: #15803d; }
.ms-status-select.ms-status-consumed { color: #a16207; }
.ms-status-select.ms-status-archived { color: #52525b; }
.ms-status-select.ms-status-lost { color: #b91c1c; }
.ms-status-select.ms-status-contaminated { color: #be123c; }

/* Notes cell button */
/* Note cells are icon-only — open the note to read/edit. Filled notes tint. */
.ms-notes-btn {
  display: inline-flex; align-items: center; justify-content: center;
  padding: 5px; border-radius: 6px; color: var(--text-muted);
}
.ms-notes-btn:hover { color: var(--brand); background: color-mix(in oklab, var(--brand) 10%, transparent); }
.ms-notes-btn.has-note { color: var(--brand); }
.ms-notes-ic { display: inline-flex; flex: 0 0 auto; }
.ms-notes-ic svg { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }

/* Large, uncluttered notes window — an e-lab notebook page. The textarea fills
   the frame edge-to-edge so there's plenty of vertical room to write. */
.ms-notes-modal { width: min(1040px, 96vw); height: min(90vh, 980px); display: flex; flex-direction: column; }
.ms-modal-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 22px; }
.ms-modal-head h3 { margin: 0; font-size: 16px; font-weight: 600; color: var(--text-muted); display: inline-flex; align-items: center; gap: 8px; }
.ms-modal-head h3 svg { width: 18px; height: 18px; fill: none; stroke: currentColor; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.ms-notes-body { flex: 1; min-height: 0; padding: 0 22px; display: flex; }
.ms-notes-area {
  flex: 1; width: 100%; min-height: 0; resize: none; font: inherit; font-size: 15px; line-height: 1.7;
  padding: 4px 2px; border: 0; background: transparent; color: inherit;
}
.ms-notes-area:focus { outline: none; }
.ms-modal-foot { display: flex; align-items: center; gap: 10px; padding: 16px 22px; }
.ms-foot-spacer { flex: 1; }
.ms-modal-error { color: #dc2626; font-size: 12px; }

/* ---- Compose workspace sync + sharing ---- */

.compose-sync-status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 500;
  color: var(--text-muted);
  white-space: nowrap;
}

.compose-sync-status[hidden] {
  display: none;
}

.compose-sync-status-dot {
  width: 7px;
  height: 7px;
  border-radius: 999px;
  background: currentColor;
  flex: 0 0 auto;
}

.compose-sync-status-saving { color: var(--text-muted); }
.compose-sync-status-saved { color: #1a7f37; }
.compose-sync-status-pending { color: #9a6700; }
.compose-sync-status-error { color: #b42318; }
.compose-sync-status-readonly { color: #6e56cf; }

.compose-sync-status-saving .compose-sync-status-dot {
  animation: compose-sync-pulse 1s ease-in-out infinite;
}

@keyframes compose-sync-pulse {
  0%, 100% { opacity: .35; }
  50% { opacity: 1; }
}

.compose-readonly-banner {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  padding: 6px 16px;
  background: color-mix(in oklab, #6e56cf 10%, var(--surface));
  border-bottom: 1px solid color-mix(in oklab, #6e56cf 30%, var(--border));
  color: #4a3a9e;
  font-size: 12px;
  font-weight: 500;
}

.compose-workspace-tab-shared {
  display: inline-flex;
  flex: 0 0 auto;
  width: 13px;
  height: 13px;
  color: var(--text-muted);
}

.compose-workspace-tab.active .compose-workspace-tab-shared {
  color: var(--brand);
}

.compose-workspace-tab-shared svg {
  width: 100%;
  height: 100%;
}

.compose-workspace-tab-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.compose-share-dialog {
  width: min(440px, calc(100vw - 48px));
}

.compose-share-search {
  position: relative;
  margin: 10px 0 4px;
}

.compose-share-results {
  position: absolute;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  z-index: 5;
  max-height: 220px;
  overflow: auto;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  box-shadow: 0 8px 24px rgba(15, 23, 42, .14);
}

.compose-share-result {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 1px;
  width: 100%;
  padding: 8px 12px;
  border: none;
  background: none;
  font: inherit;
  text-align: left;
  cursor: pointer;
}

.compose-share-result:hover {
  background: color-mix(in oklab, var(--brand) 8%, var(--surface));
}

.compose-share-list {
  display: grid;
  gap: 4px;
  margin-top: 10px;
  max-height: 260px;
  overflow: auto;
}

.compose-share-row {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 7px 10px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: color-mix(in oklab, var(--surface) 92%, var(--panel));
}

.compose-share-row-info {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
  flex: 1;
}

.compose-share-row-name {
  font-size: 13px;
  font-weight: 500;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.compose-share-row-email {
  font-size: 11px;
  color: var(--text-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.compose-share-role {
  flex: 0 0 auto;
  padding: 4px 6px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--surface);
  color: var(--text);
  font-size: 12px;
}

.compose-share-remove {
  flex: 0 0 auto;
  width: 24px;
  height: 24px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: none;
  border-radius: 6px;
  background: none;
  color: var(--text-muted);
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
}

.compose-share-remove:hover {
  color: #b42318;
  background: color-mix(in oklab, #b42318 10%, transparent);
}

.compose-share-empty {
  padding: 10px 12px;
  font-size: 12px;
  color: var(--text-muted);
}

.compose-plot-hydrate-error {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 11px;
  color: #b42318;
}

/* ==========================================================================
   Compose — drafting-instrument overhaul
   Precision-tool aesthetic: blueprint dot grid, hairline chrome, tabular
   numerics, brand-orange measurement accents. Theme-aware via UI vars.
   ========================================================================== */

:root {
  /* Compose tokens live at :root so portal dialogs (plot setup, share)
     mounted on <body> resolve them too. */
  --cmp-hairline: color-mix(in oklab, var(--text) 14%, transparent);
  --cmp-hairline-soft: color-mix(in oklab, var(--text) 8%, transparent);
  --cmp-accent: var(--brand);
  --cmp-accent-soft: color-mix(in oklab, var(--brand) 14%, transparent);
  --cmp-glass: color-mix(in oklab, var(--card) 86%, transparent);
  --cmp-mono: ui-monospace, "SFMono-Regular", "Cascadia Mono", "JetBrains Mono", Menlo, monospace;
}

/* --- Stage: drafting table --- */

.compose-stage-surface {
  border-radius: var(--radius);
  border: 1px solid var(--cmp-hairline-soft);
  background:
    radial-gradient(ellipse 120% 90% at 50% -10%, color-mix(in oklab, var(--surface) 55%, transparent), transparent 60%),
    radial-gradient(ellipse 140% 120% at 50% 115%, color-mix(in oklab, var(--text) 5%, transparent), transparent 55%),
    color-mix(in oklab, var(--panel) 86%, var(--bg));
  background-size: auto, auto, auto;
}

.compose-stage-marquee {
  border: 1px solid color-mix(in oklab, var(--brand) 85%, transparent);
  background: color-mix(in oklab, var(--brand) 10%, transparent);
  box-shadow: inset 0 0 0 1px color-mix(in oklab, #fff 35%, transparent);
}

.compose-workspace-bounds {
  border: 1px dashed color-mix(in oklab, var(--text) 32%, transparent);
  box-shadow: none;
  background: radial-gradient(circle at 2px 2px, color-mix(in oklab, var(--text) 16%, transparent) 1.3px, transparent 1.8px);
  background-size: 42px 42px;
}

/* --- Canvas frames: paper on the table --- */

.compose-canvas-frame {
  border: 1px solid color-mix(in oklab, #1a1d23 16%, transparent);
  border-radius: 3px;
  background: #ffffff;
  box-shadow:
    0 1px 2px rgba(15, 23, 42, 0.10),
    0 12px 28px -10px rgba(15, 23, 42, 0.28);
  transition: box-shadow .16s ease, border-color .12s ease;
}

.compose-canvas-frame.selected {
  border-color: color-mix(in oklab, var(--brand) 70%, #1a1d23);
  box-shadow:
    0 0 0 1px color-mix(in oklab, var(--brand) 55%, transparent),
    0 1px 2px rgba(15, 23, 42, 0.10),
    0 16px 34px -12px rgba(15, 23, 42, 0.32);
}

.compose-world-object-multi-selected {
  border-color: var(--brand) !important;
  box-shadow: 0 0 0 2px color-mix(in oklab, var(--brand) 24%, transparent), 0 6px 16px rgba(15, 23, 42, 0.12);
}

.compose-canvas-dragbar {
  height: 34px;
  border-bottom: 1px solid #e3e5ea;
  background: linear-gradient(180deg, #fafbfc, #f1f3f7);
  border-radius: 2px 2px 0 0;
  font-size: 11.5px;
  letter-spacing: 0.01em;
}

.compose-canvas-body.compose-canvas-body-drop-target {
  background: color-mix(in oklab, var(--brand) 6%, #ffffff);
  box-shadow: inset 0 0 0 1.5px color-mix(in oklab, var(--brand) 65%, transparent);
}

/* --- World objects: shared chrome recipe --- */

.compose-canvas-dragbar,
.compose-world-asset-header,
.compose-world-note-header {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.03em;
}

.compose-canvas-dragbar span:last-child,
.compose-world-asset-header span:last-child,
.compose-world-note-header span:last-child {
  font-family: var(--cmp-mono);
  font-weight: 450;
  font-variant-numeric: tabular-nums;
  font-size: 10px;
  letter-spacing: 0.02em;
}

.compose-world-asset {
  border-radius: 3px;
  border-color: color-mix(in oklab, #1a1d23 16%, transparent);
  box-shadow:
    0 1px 2px rgba(15, 23, 42, 0.10),
    0 12px 28px -10px rgba(15, 23, 42, 0.28);
}

.compose-world-asset-header {
  border-radius: 3px 3px 0 0;
}

.compose-world-asset.selected {
  border-color: color-mix(in oklab, var(--brand) 70%, #1a1d23);
  box-shadow:
    0 0 0 1px color-mix(in oklab, var(--brand) 55%, transparent),
    0 12px 28px -10px rgba(15, 23, 42, 0.28);
}

.compose-world-note {
  border-radius: 6px;
  box-shadow:
    0 1px 2px rgba(120, 88, 10, 0.10),
    0 12px 28px -10px rgba(120, 88, 10, 0.30);
}

.compose-note-resize-handle {
  border-radius: 2px;
}

/* --- World connectors (arrows between canvases/notes/assets) --- */

.compose-world-connectors {
  position: absolute;
  left: 0;
  top: 0;
  overflow: visible;
  pointer-events: none;
  z-index: 0;
  color: color-mix(in oklab, var(--text) 55%, transparent);
}

#compose-stage-scene[data-color-mode="dark"] .compose-world-connectors {
  color: rgba(216, 208, 200, 0.62);
}

.compose-connector-list {
  display: grid;
  gap: 2px;
  padding-bottom: 6px;
  margin-bottom: 4px;
  border-bottom: 1px solid var(--cmp-hairline-soft);
}

.compose-connector-row {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 3px 7px;
  border-radius: 8px;
}

.compose-connector-row:hover {
  background: color-mix(in oklab, var(--text) 5%, transparent);
}

.compose-connector-row-label {
  flex: 1;
  min-width: 0;
  font-size: var(--compose-panel-meta-size, 11px);
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* --- Tool rail: instrument keys --- */

.compose-tool-rail-button {
  border: 1px solid var(--cmp-hairline);
  border-radius: 8px;
  background: var(--cmp-glass);
  backdrop-filter: blur(6px);
  color: var(--chrome-muted);
  position: relative;
  transition: color .12s ease, border-color .12s ease, background .12s ease, transform .08s ease;
}

.compose-tool-rail-button:hover {
  background: color-mix(in oklab, var(--brand) 9%, var(--card));
  border-color: color-mix(in oklab, var(--brand) 38%, var(--cmp-hairline));
  color: var(--text);
}

.compose-tool-rail-button:active {
  transform: translateY(1px);
}

.compose-tool-rail-button.active {
  background: color-mix(in oklab, var(--brand) 12%, var(--card));
  border-color: color-mix(in oklab, var(--brand) 55%, transparent);
  color: var(--brand-strong);
}

.compose-tool-rail-button.active::before {
  content: "";
  position: absolute;
  left: -5px;
  top: 50%;
  width: 2px;
  height: 16px;
  transform: translateY(-50%);
  background: var(--brand);
  border-radius: 2px;
}

.compose-tool-rail-label {
  position: absolute;
  top: 50%;
  z-index: 80;
  min-width: max-content;
  padding: 4px 9px;
  border-radius: 7px;
  background: #15171c;
  color: #f4f5f7;
  font-size: 10.5px;
  font-weight: 650;
  letter-spacing: 0.045em;
  line-height: 1.35;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.28);
  transition: opacity .13s ease, transform .16s cubic-bezier(0.16, 1, 0.3, 1);
}

.compose-workspace-tools {
  width: 48px;
  min-width: 48px;
}

.compose-workspace-tools .compose-tool-popout {
  top: 12px;
}

.compose-workspace-tools .compose-tool-popout-workspaces {
  width: min(292px, calc(100vw - 180px));
}

.compose-workspace-tools .compose-tool-rail {
  width: 38px;
  gap: 4px;
}

.compose-workspace-tools .compose-tool-rail-sep {
  width: 18px;
  margin: 1px auto;
}

.compose-workspace-tools .compose-tool-rail-button {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  padding: 0;
  border: none;
  border-radius: 10px;
  background: none;
  color: var(--text-muted);
  backdrop-filter: none;
}

.compose-workspace-tools .compose-tool-rail-button::before {
  content: "";
  left: auto;
  right: -5px;
  width: 3px;
  height: 22px;
  border-radius: 3px 0 0 3px;
  transform: translateY(-50%) scaleY(0);
  transition: transform .18s cubic-bezier(0.16, 1, 0.3, 1);
}

.compose-workspace-tools .compose-tool-rail-button:hover:not(:disabled) {
  background: color-mix(in oklab, var(--brand) 8%, var(--bg));
  border-color: transparent;
  color: var(--chrome-hover);
}

.compose-workspace-tools .compose-tool-rail-button.active {
  background: var(--brand-soft);
  border-color: transparent;
  color: var(--brand-strong);
}

.compose-workspace-tools .compose-tool-rail-button.active::before {
  transform: translateY(-50%) scaleY(1);
}

.compose-workspace-tools .compose-tool-rail-icon,
.compose-workspace-tools .compose-tool-rail-icon svg {
  width: 20px;
  height: 20px;
}

.compose-workspace-tools .compose-tool-rail-label {
  right: calc(100% + 12px);
  transform: translateY(-50%) translateX(4px);
}

.compose-workspace-tools .compose-tool-rail-label::before {
  content: "";
  position: absolute;
  right: -3px;
  top: 50%;
  width: 8px;
  height: 8px;
  background: #15171c;
  border-radius: 2px;
  transform: translateY(-50%) rotate(45deg);
}

.compose-workspace-tools .compose-tool-rail-button:hover .compose-tool-rail-label,
.compose-workspace-tools .compose-tool-rail-button:focus-visible .compose-tool-rail-label {
  opacity: 1;
  transform: translateY(-50%) translateX(0);
  transition-delay: 0.18s;
}

.compose-canvas-tool-dock .compose-tool-rail-label {
  left: calc(100% + 10px);
  transform: translateY(-50%) translateX(-4px);
}

.compose-canvas-tool-dock .compose-tool-rail-label::before {
  content: "";
  position: absolute;
  left: -3px;
  top: 50%;
  width: 8px;
  height: 8px;
  background: #15171c;
  border-radius: 2px;
  transform: translateY(-50%) rotate(45deg);
}

.compose-canvas-tool-dock .compose-tool-rail-button:hover .compose-tool-rail-label,
.compose-canvas-tool-dock .compose-tool-rail-button:focus-visible .compose-tool-rail-label {
  opacity: 1;
  transform: translateY(-50%) translateX(0);
  transition-delay: 0.18s;
}

/* --- Workspace tabs: index cards --- */

.compose-workspace-tab {
  position: relative;
  border-bottom: 2px solid transparent;
  border-radius: 6px 6px 0 0;
  transition: color .12s ease, background .12s ease, border-color .12s ease;
}

.compose-workspace-tab:hover {
  background: color-mix(in oklab, var(--text) 5%, transparent);
}

.compose-workspace-tab.active {
  background: color-mix(in oklab, var(--brand) 7%, transparent);
  border-bottom-color: var(--brand);
}

.compose-workspace-tab-dot {
  background: var(--brand);
  box-shadow: 0 0 0 3px color-mix(in oklab, var(--brand) 18%, transparent);
}

/* --- Popouts + selection footer: glass instrument panels --- */

.compose-tool-popout,
.compose-selection-box {
  border: 1px solid var(--cmp-hairline);
  border-radius: var(--radius);
  background: var(--cmp-glass);
  backdrop-filter: blur(10px);
  box-shadow:
    0 1px 0 color-mix(in oklab, #fff 40%, transparent) inset,
    0 14px 34px -14px rgba(15, 23, 42, 0.35);
  outline: none;
}

.compose-tool-popout-card {
  border: none;
  border-radius: inherit;
  background: transparent;
  box-shadow: none;
}

.compose-tool-popout-header .compose-control-section-title {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  color: var(--text-muted, var(--muted));
}

/* --- Popout lists: same row idiom as the rest of the app --- */

.compose-tool-popout .compose-stage-list-compact {
  gap: 2px;
}

.compose-tool-popout .compose-stage-item-compact {
  min-height: 30px;
  padding: 5px 7px;
  border-color: transparent;
  border-radius: 8px;
  background: transparent;
  cursor: pointer;
}

.compose-tool-popout .compose-stage-item-compact:hover {
  background: color-mix(in oklab, var(--text) 5%, transparent);
}

.compose-tool-popout .compose-stage-item-compact.active {
  border-color: color-mix(in oklab, var(--brand) 32%, transparent);
  background: color-mix(in oklab, var(--brand) 9%, transparent);
}

.compose-tool-popout .compose-stage-item-compact.drop-target {
  border-color: color-mix(in oklab, var(--brand) 32%, transparent);
  background: color-mix(in oklab, var(--brand) 9%, transparent);
}

.compose-tool-popout .compose-stage-item-compact.is-locked {
  background: color-mix(in oklab, var(--text) 3%, transparent);
}

/* --- Precision numerics --- */

.compose-field-input[type="number"],
.compose-plot-setup-num,
.compose-sync-status,
.compose-plot-setup-preview-caption {
  font-family: var(--cmp-mono);
  font-variant-numeric: tabular-nums;
}

.compose-field-input[type="number"] {
  font-size: 11.5px;
}

.compose-field-input:focus-visible {
  outline: none;
  border-color: color-mix(in oklab, var(--brand) 60%, transparent);
  box-shadow: 0 0 0 3px var(--focus-ring);
}

/* --- Empty state: drafting crosshair --- */

.compose-workspace-starter {
  border: 1px dashed color-mix(in oklab, var(--text) 26%, transparent);
  border-radius: var(--radius);
  background: var(--cmp-glass);
  backdrop-filter: blur(8px);
  box-shadow: none;
  text-align: center;
}

.compose-workspace-starter::before {
  content: "";
  display: block;
  width: 34px;
  height: 34px;
  margin: 0 auto 12px;
  border: 1px solid color-mix(in oklab, var(--brand) 55%, transparent);
  border-radius: 50%;
  background:
    linear-gradient(0deg, transparent calc(50% - 0.5px), var(--brand) calc(50% - 0.5px), var(--brand) calc(50% + 0.5px), transparent calc(50% + 0.5px)),
    linear-gradient(90deg, transparent calc(50% - 0.5px), var(--brand) calc(50% - 0.5px), var(--brand) calc(50% + 0.5px), transparent calc(50% + 0.5px));
}

.compose-workspace-starter-title {
  letter-spacing: 0.1em;
}

/* --- Undo toast --- */

.compose-undo-notice {
  border: 1px solid color-mix(in oklab, var(--brand) 40%, transparent);
  border-radius: 8px;
  background: var(--cmp-glass);
  backdrop-filter: blur(6px);
  color: var(--brand-strong);
  font-family: var(--cmp-mono);
  font-size: 11px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

/* --- Plot setup dialog --- */

.compose-plot-setup {
  width: min(1040px, calc(100vw - 48px));
  max-height: min(90vh, 860px);
  display: flex;
  flex-direction: column;
}

.compose-plot-setup-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
}

.compose-plot-setup-subtitle {
  margin-top: 2px;
  font-size: 12.5px;
  color: var(--text-muted);
  max-width: min(620px, 58vw);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.compose-plot-setup-meta {
  display: flex;
  gap: 6px;
  flex: 0 0 auto;
  flex-wrap: wrap;
  justify-content: flex-end;
}

.compose-plot-setup-chip {
  display: inline-flex;
  align-items: center;
  padding: 3px 8px;
  border: 1px solid var(--cmp-hairline, color-mix(in oklab, var(--text) 14%, transparent));
  border-radius: 999px;
  font-family: ui-monospace, Menlo, monospace;
  font-size: 10.5px;
  color: var(--text-muted);
  white-space: nowrap;
}

.compose-plot-setup-body {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 340px;
  gap: 18px;
  margin-top: 16px;
  min-height: 0;
}

@media (max-width: 860px) {
  .compose-plot-setup-body { grid-template-columns: 1fr; }
}

.compose-plot-setup-table-wrap {
  max-height: min(58vh, 560px);
  overflow: auto;
  border: 1px solid var(--border);
  border-radius: 8px;
}

.compose-plot-setup-table {
  width: 100%;
  border-collapse: collapse;
  font-size: 12px;
}

.compose-plot-setup-table thead th {
  position: sticky;
  top: 0;
  z-index: 1;
  padding: 7px 10px;
  background: color-mix(in oklab, var(--panel) 80%, var(--surface));
  border-bottom: 1px solid var(--border);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--text-muted);
  text-align: left;
}

.compose-plot-setup-table tbody td {
  padding: 6px 10px;
  border-bottom: 1px solid color-mix(in oklab, var(--border) 60%, transparent);
}

.compose-plot-setup-table tbody tr:hover {
  background: color-mix(in oklab, var(--brand) 5%, transparent);
}

.compose-plot-setup-name {
  font-weight: 500;
  max-width: 150px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.compose-plot-setup-num {
  color: var(--text-muted);
  font-size: 11px;
  white-space: nowrap;
}

.compose-plot-setup-pick {
  text-align: center !important;
  width: 34px;
}

.compose-plot-setup-pick input {
  accent-color: var(--brand);
  cursor: pointer;
}

.compose-plot-setup-preview {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 10px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: color-mix(in oklab, var(--surface) 92%, var(--panel));
  align-self: start;
  min-height: 310px;
}

.compose-plot-setup-preview svg {
  width: 100%;
  min-height: 250px;
  color: var(--text);
  background: var(--canvas-bg, #fff);
  border-radius: 4px;
}

.compose-plot-setup-preview-caption {
  font-size: 11px;
  color: var(--text-muted);
  text-align: center;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.compose-plot-setup-actions {
  align-items: center;
}

.compose-plot-setup-hint {
  margin-right: auto;
  font-size: 11px;
  color: var(--text-muted);
}

.compose-plot-setup-hint kbd {
  padding: 1px 5px;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: var(--panel);
  font-family: ui-monospace, Menlo, monospace;
  font-size: 10px;
}

/* --- Sync status refinement --- */

.compose-sync-status {
  padding: 3px 10px;
  border: 1px solid var(--cmp-hairline-soft, color-mix(in oklab, var(--text) 8%, transparent));
  border-radius: 999px;
  font-size: 11px;
  letter-spacing: 0.03em;
}

/* ==========================================================================
   Compose — left rail layout + workspace sidebar
   ========================================================================== */

.compose-workspace-shell.compose-shell-left-rail {
  grid-template-columns: auto auto minmax(0, 1fr);
}

.compose-shell-left-rail .compose-workspace-sidebar { grid-column: 1; grid-row: 1; }
.compose-shell-left-rail .compose-workspace-tools { grid-column: 2; grid-row: 1; }
.compose-shell-left-rail .compose-stage-area { grid-column: 3; grid-row: 1; }

.compose-shell-left-rail .compose-workspace-tools {
  justify-content: flex-start;
  padding: 18px 4px 10px 10px;
}

/* Popout now opens to the right of the rail */
.compose-shell-left-rail .compose-tool-popout {
  right: auto;
  left: calc(100% + 8px);
}

/* ==========================================================================
   Compose — drawer layout: [project/data drawer] [stage] [tools] [workspaces]
   ========================================================================== */

.compose-workspace-shell.compose-shell-drawer {
  --compose-drawer-w: 328px;
  --meas-lib-w: var(--compose-drawer-w);
  display: block;
  overflow: hidden;
}

.compose-shell-drawer .compose-data-drawer-stack.meas-reveal-under {
  right: 10px;
  width: var(--meas-lib-w);
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-rows: minmax(128px, 30%) minmax(0, 1fr);
  overflow: hidden;
}

.compose-shell-drawer .compose-workspace-main-sheet.meas-sheet {
  height: 100%;
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-rows: minmax(0, 1fr);
}

.compose-shell-drawer .compose-project-col { grid-column: 1; grid-row: 1; }
.compose-shell-drawer .compose-drawer-col { grid-column: 1; grid-row: 2; }
.compose-shell-drawer .compose-stage-area { grid-column: 1; grid-row: 1; position: relative; }
.compose-shell-drawer .compose-workspace-tools { grid-column: 2; grid-row: 1; justify-content: center; padding: 12px 5px 10px 5px; }

.compose-shell-drawer .meas-sheet-grip {
  z-index: 20;
}

/* Tools on the right: popout opens toward the stage (to its left) */
.compose-shell-drawer .compose-tool-popout {
  left: auto;
  right: calc(100% + 8px);
}

/* Canvas dock popouts keep opening to the right of the canvas */
.compose-shell-drawer .compose-tool-popout-canvas {
  right: auto;
  left: calc(100% + 8px);
}

/* Inspector footer now lives inside the stage column */
.compose-shell-drawer .compose-selection-footer {
  right: 18px;
}

/* --- Project list (col 1): drawer-header chrome + pv-switcher rows --- */
.compose-project-col {
  display: flex;
  flex-direction: column;
  min-height: 0;
  border-bottom: 2px solid color-mix(in oklab, var(--brand) 18%, var(--border));
  border-right: 1px solid var(--border);
  background: var(--surface);
  box-shadow: 0 1px 0 color-mix(in oklab, var(--text) 8%, transparent);
}

.compose-project-col-scroll {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 6px;
}

.compose-project-group + .compose-project-group { margin-top: 6px; }

.compose-project-group-label {
  padding: 8px 6px 4px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  color: var(--text-muted, var(--muted));
}

.compose-project-col .pv-switcher-item.pv-switcher-cat--active {
  font-weight: 500;
}

/* --- Data drawer (row 2): fill the stacked drawer column, flat edges --- */
.compose-shell-drawer .compose-drawer-col.meas-library-drawer {
  flex: initial;
  min-height: 0;
  max-height: none;
  border-top: 1px solid color-mix(in oklab, var(--text) 10%, transparent);
  border-bottom: none;
  border-left: none;
  border-radius: 0;
  box-shadow: none;
}

.compose-drawer-col .meas-library-drawer-head {
  padding: 6px 10px;
}

.compose-drawer-col .meas-library-drawer-head .measurement-library-search {
  width: 100%;
}

.compose-drawer-tabs {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0;
  border-bottom: 1px solid var(--border);
  background: color-mix(in oklab, var(--surface) 90%, var(--bg));
}

.compose-drawer-tab {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-width: 0;
  height: 34px;
  border: 0;
  border-right: 1px solid var(--border);
  border-radius: 0;
  background: transparent;
  color: var(--text-muted, var(--muted));
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.2px;
  cursor: pointer;
}

.compose-drawer-tab:last-child { border-right: 0; }

.compose-drawer-tab:hover {
  background: color-mix(in oklab, var(--brand) 5%, transparent);
  color: var(--text);
}

.compose-drawer-tab.is-active {
  background: var(--surface);
  color: var(--text);
  box-shadow: inset 0 -2px 0 var(--brand);
}

.compose-drawer-tab-count {
  min-width: 18px;
  padding: 1px 5px;
  border-radius: 999px;
  background: color-mix(in oklab, var(--text) 7%, transparent);
  color: var(--text-muted, var(--muted));
  font-size: 10px;
  font-weight: 700;
  line-height: 1.4;
  text-align: center;
}

.compose-drawer-tab.is-active .compose-drawer-tab-count {
  background: color-mix(in oklab, var(--brand) 12%, transparent);
  color: var(--brand);
}

.compose-drawer-col .measurement-library-scroll-wrap { direction: ltr; }

.compose-drawer-assets,
.compose-drawer-references {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.compose-drawer-asset-row.compose-result-card {
  margin: 0;
  border-radius: 8px;
}

.compose-drawer-asset-row.is-static {
  cursor: default;
}

.compose-drawer-asset-row.is-static:hover {
  border-color: var(--border);
  background: color-mix(in oklab, var(--surface) 84%, var(--bg));
}

.compose-drawer-reference-row {
  display: flex;
  flex-direction: column;
  gap: 3px;
  padding: 8px 9px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: color-mix(in oklab, var(--surface) 84%, var(--bg));
}

.compose-drawer-reference-title {
  min-width: 0;
  color: var(--text);
  font-size: 12px;
  font-weight: 700;
  line-height: 1.25;
}

.compose-drawer-reference-meta,
.compose-drawer-reference-link {
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  color: var(--text-muted, var(--muted));
  font-size: 11px;
}

.compose-drawer-reference-row[data-compose-reference-place] {
  cursor: pointer;
}

.compose-drawer-reference-row[data-compose-reference-place]:hover {
  border-color: color-mix(in oklab, var(--brand) 30%, var(--border));
  background: color-mix(in oklab, var(--brand) 5%, var(--surface));
}

.compose-reference-dialog {
  width: min(440px, calc(100vw - 48px));
}

.compose-reference-dialog .compose-inspector-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
  margin: 10px 0 4px;
}

.compose-reference-dialog .compose-inspector-field-wide {
  grid-column: 1 / -1;
}

@media (max-width: 1100px) {
  .compose-workspace-shell.compose-shell-drawer {
    --compose-drawer-w: 287px;
  }
}

.compose-tool-rail-sep {
  width: 22px;
  height: 1px;
  margin: 3px auto;
  background: var(--cmp-hairline);
}

/* --- Workspace sidebar --- */

.compose-workspace-sidebar {
  display: flex;
  flex-direction: column;
  width: 232px;
  min-width: 232px;
  min-height: 0;
  border-right: 1px solid var(--border);
  background: color-mix(in oklab, var(--surface) 88%, var(--panel));
}

.compose-workspace-popout-list.compose-workspace-sidebar {
  width: 268px;
  min-width: 0;
  max-height: min(520px, calc(100vh - 120px));
  border: 0;
  background: transparent;
}

.compose-workspace-popout-list .compose-ws-sidebar-list {
  padding: 0;
}

.compose-ws-sidebar-head {
  display: flex;
  align-items: center;
  gap: 4px;
  min-height: 40px;
  padding: 6px 8px;
  border-bottom: 1px solid var(--border);
}

.compose-ws-sidebar-title {
  flex: 1;
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.09em;
  text-transform: uppercase;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
}

.compose-ws-sidebar-btn {
  display: grid;
  place-items: center;
  width: 26px;
  height: 26px;
  border: 1px solid transparent;
  border-radius: 7px;
  background: none;
  color: var(--text-muted);
  font-size: 16px;
  line-height: 1;
  cursor: pointer;
}

.compose-ws-sidebar-btn:hover {
  color: var(--text);
  background: color-mix(in oklab, var(--brand) 9%, transparent);
  border-color: color-mix(in oklab, var(--brand) 30%, transparent);
}

.compose-ws-sidebar-btn svg { width: 14px; height: 14px; }

.compose-ws-sidebar-list {
  flex: 1;
  min-height: 0;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 6px;
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.compose-ws-row {
  position: relative;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 7px 8px;
  border-radius: 8px;
  border: 1px solid transparent;
  cursor: pointer;
  user-select: none;
}

.compose-ws-row:hover {
  background: color-mix(in oklab, var(--text) 5%, transparent);
}

.compose-ws-row.active {
  background: color-mix(in oklab, var(--brand) 9%, transparent);
  border-color: color-mix(in oklab, var(--brand) 32%, transparent);
}

.compose-ws-row-main {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.compose-ws-row-name {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-width: 0;
  font-size: 12.5px;
  font-weight: 500;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.compose-ws-row-meta {
  font-size: 10.5px;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-family: var(--cmp-mono);
}

.compose-ws-row-shared {
  display: inline-flex;
  width: 12px;
  height: 12px;
  flex: 0 0 auto;
  color: var(--text-muted);
}

.compose-ws-row.active .compose-ws-row-shared { color: var(--brand); }
.compose-ws-row-shared svg { width: 100%; height: 100%; }

.compose-ws-row-actions {
  display: none;
  align-items: center;
  gap: 2px;
  flex: 0 0 auto;
}

.compose-ws-row:hover .compose-ws-row-actions { display: inline-flex; }

.compose-ws-row-action {
  display: grid;
  place-items: center;
  width: 22px;
  height: 22px;
  border: none;
  border-radius: 5px;
  background: none;
  color: var(--text-muted);
  cursor: pointer;
}

.compose-ws-row-action svg { width: 13px; height: 13px; }

.compose-ws-row-action:hover {
  color: var(--text);
  background: color-mix(in oklab, var(--text) 8%, transparent);
}

.compose-ws-row-action-danger:hover {
  color: #b42318;
  background: color-mix(in oklab, #b42318 10%, transparent);
}

/* Header brand: workspace name next to title */
.compose-workspace-header-brand {
  display: flex;
  align-items: baseline;
  gap: 10px;
  min-width: 0;
}

.compose-workspace-header-actions {
  display: flex;
  align-items: center;
  gap: 10px;
  flex: 0 0 auto;
}

.compose-save-btn {
  border: 1px solid var(--brand);
  background: var(--brand);
  color: #fff7f2;
}

.compose-save-btn:hover:not(:disabled) {
  background: var(--brand-strong);
  border-color: var(--brand-strong);
}

.compose-workspace-name {
  font-size: 12.5px;
  color: var(--text-muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.compose-workspace-name::before {
  content: "/ ";
  color: color-mix(in oklab, var(--text-muted) 50%, transparent);
}

/* ── Specimen trace view ──────────────────────────────────────── */
.ms-trace-view {
  display: flex;
  flex-direction: column;
  height: 100%;
  overflow: hidden;
}

.ms-trace-topbar {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 20px;
  border-bottom: 1px solid var(--border);
  flex: 0 0 auto;
}

.ms-trace-back {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: 13px;
  font-weight: 500;
  color: var(--text-muted);
  background: none;
  border: none;
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 5px;
}
.ms-trace-back:hover { background: var(--panel); color: var(--text); }

.ms-trace-header {
  margin: 16px 24px 0;
  padding: 18px 18px 14px;
  flex: 0 0 auto;
}

.ms-trace-detail-header {
  margin-bottom: 12px;
}

.ms-trace-name {
  margin: 0;
}

.ms-trace-title-input {
  min-width: 120px;
  padding-left: 0;
  padding-right: 0;
}

.ms-trace-status {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  padding: 2px 8px;
  border-radius: 20px;
  background: var(--panel);
  color: var(--text-muted);
}
.ms-trace-status-active    { background: #dcfce7; color: #15803d; }
.ms-trace-status-consumed  { background: #fef9c3; color: #a16207; }
.ms-trace-status-archived  { background: var(--panel); color: #52525b; }
.ms-trace-status-lost      { background: #fee2e2; color: #b91c1c; }
.ms-trace-status-contaminated { background: #ffe4e6; color: #be123c; }

.ms-trace-meta-grid {
  margin-bottom: 10px;
  gap: 5px 14px;
}
.ms-trace-meta-item {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  min-width: 0;
}
.ms-trace-meta-label {
  font-size: 10px;
  letter-spacing: .03em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.ms-trace-meta-value {
  font-size: 11px;
  color: var(--text);
}

.ms-trace-lineage {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  font-size: 12px;
  color: var(--text-muted);
}
.ms-trace-lineage-label { font-weight: 600; }
.ms-trace-lineage-link {
  background: none;
  border: 1px solid var(--border);
  border-radius: 5px;
  padding: 2px 8px;
  font-size: 12px;
  color: var(--brand);
  cursor: pointer;
  font-weight: 500;
}
.ms-trace-lineage-link:hover { background: var(--brand-soft); }
.ms-trace-lineage-sep { color: var(--border); }

.ms-trace-timeline-wrap {
  flex: 1 1 auto;
  overflow: auto;
  padding: 16px 24px 24px;
}

.ms-trace-empty {
  font-size: 13px;
  color: var(--text-muted);
  padding: 20px 0;
}

.ms-trace-summary {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 0;
}
.ms-trace-summary-chip {
  display: flex;
  gap: 6px;
  align-items: center;
  padding: 0;
  border: 0;
  background: transparent;
}
.ms-trace-summary-label {
  font-size: 11px;
  color: var(--text-muted);
}
.ms-trace-summary-value {
  font-size: 11px;
  color: var(--text);
  font-weight: 600;
}

.ms-trace-filters {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 0;
}
.ms-trace-filter-btn {
  appearance: none;
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--text-muted);
  border-radius: 999px;
  padding: 4px 9px;
  font-size: 11px;
  cursor: pointer;
}
.ms-trace-filter-btn.is-active {
  color: var(--brand);
  border-color: color-mix(in oklab, var(--brand) 35%, var(--border));
  background: var(--brand-soft);
}
.ms-trace-filter-select-wrap {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 11px;
  color: var(--text-muted);
}
.ms-trace-filter-select {
  border: 1px solid var(--border);
  background: var(--bg);
  color: var(--text);
  border-radius: 7px;
  padding: 4px 7px;
  font-size: 11px;
}

.ms-trace-board-toolbar {
  gap: 16px;
  height: auto;
  min-height: 41px;
  padding-top: 8px;
  padding-bottom: 8px;
}
.ms-trace-board-toolbar-main {
  display: flex;
  align-items: center;
  gap: 14px;
  min-width: 0;
}

.ms-trace-board-shell {
  border-radius: var(--radius);
  overflow: auto;
  --ms-trace-row-template: minmax(120px, 1fr) 76px 62px 96px;
}
.ms-trace-board-header,
.ms-trace-board-row {
  display: grid;
  grid-template-columns: 120px minmax(720px, 1fr);
}
.ms-trace-board-header {
  position: sticky;
  top: 0;
  z-index: 2;
  background: var(--surface);
  border-bottom: 1px solid var(--border);
}
.ms-trace-board-dayhead,
.ms-trace-board-day {
  padding: 10px 12px;
  font-size: 11px;
  font-weight: 700;
  color: var(--text-muted);
  border-right: 1px solid var(--border);
}
.ms-trace-board-day {
  text-align: right;
  background: var(--surface);
}
.ms-trace-board-projects,
.ms-trace-board-cells {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(220px, 1fr);
}
.ms-trace-project-head {
  padding: 9px 0 0;
  border-right: 1px solid var(--border);
  background: var(--surface);
}
.ms-trace-project-top,
.ms-trace-project-meta,
.ms-trace-project-cols {
  padding-left: 10px;
  padding-right: 10px;
}
.ms-trace-project-top {
  margin-bottom: 4px;
}
.ms-trace-project-name {
  font-size: 11px;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 2px;
  letter-spacing: 0.4px;
  text-transform: uppercase;
}
.ms-trace-project-range {
  font-size: 10px;
  color: var(--text-muted);
}
.ms-trace-project-meta {
  font-size: 10px;
  color: var(--text-muted);
  margin-bottom: 6px;
}
.ms-trace-project-cols {
  display: grid;
  grid-template-columns: var(--ms-trace-row-template);
  align-items: center;
  column-gap: 10px;
  padding-top: 6px;
  padding-bottom: 7px;
  border-top: 1px solid color-mix(in oklab, var(--border) 72%, transparent);
  font-size: 9px;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.ms-trace-project-cols-center {
  text-align: center;
}
.ms-trace-project-cols-end {
  text-align: right;
}
.ms-trace-board-row {
  border-bottom: 1px solid var(--border);
}
.ms-trace-board-row:last-child {
  border-bottom: none;
}
.ms-trace-board-cell {
  min-height: 72px;
  padding: 4px 0;
  border-right: 1px solid var(--border);
  display: grid;
  align-content: start;
}
.ms-trace-board-cell.is-empty {
  background: var(--surface);
}
.ms-trace-file-row {
  padding: 0 10px;
  display: grid;
  grid-template-columns: var(--ms-trace-row-template);
  align-items: center;
  column-gap: 10px;
  border-bottom: 1px solid color-mix(in oklab, var(--border) 72%, transparent);
  min-height: 40px;
  height: 40px;
}
.ms-trace-board-cell > .ms-trace-file-row:last-child {
  border-bottom: none;
}
.ms-trace-file-row:hover {
  background: color-mix(in oklab, var(--brand-soft) 22%, transparent);
}
.ms-trace-file-row.is-unused {
  opacity: 0.62;
}
.ms-trace-file-link {
  appearance: none;
  border: 0;
  background: none;
  padding: 0;
  text-align: left;
  font-size: 11px;
  font-weight: 500;
  color: var(--text);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  cursor: pointer;
}
.ms-trace-file-link:hover,
.ms-trace-file-link:focus-visible {
  color: var(--brand);
  text-decoration: underline;
}
.ms-trace-file-instrument {
  font-size: 10px;
  color: var(--text-muted);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.ms-trace-file-time {
  font-size: 10px;
  color: var(--text-muted);
  white-space: nowrap;
  text-align: right;
  width: 96px;
}
.ms-trace-meas-grid {
  display: grid;
  grid-auto-flow: column;
  grid-template-rows: repeat(2, 18px);
  grid-auto-columns: 18px;
  gap: 4px;
  width: 62px;
  min-width: 62px;
  height: 40px;
  justify-content: center;
  justify-self: center;
  align-content: center;
  align-items: stretch;
  overflow: hidden;
}
.ms-trace-meas-grid.is-empty {
  width: 62px;
  min-width: 62px;
}
.ms-trace-meas-tile {
  position: relative;
  min-width: 0;
  aspect-ratio: 1;
  border: 1px solid color-mix(in oklab, var(--brand) 18%, var(--border));
  background:
    linear-gradient(180deg, color-mix(in oklab, var(--brand-soft) 84%, var(--surface)) 0%, color-mix(in oklab, var(--surface) 92%, var(--bg)) 100%);
  border-radius: 6px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--text);
  cursor: pointer;
  padding: 0;
  overflow: visible;
  transition: transform .14s ease, border-color .14s ease, box-shadow .14s ease;
}
.ms-trace-meas-tile:hover,
.ms-trace-meas-tile:focus-visible {
  transform: translateY(-1px);
  border-color: color-mix(in oklab, var(--brand) 38%, var(--border));
  box-shadow: 0 10px 24px color-mix(in srgb, var(--brand) 12%, transparent);
  z-index: 4;
}
.ms-trace-meas-tile-overflow {
  border-style: dashed;
  color: var(--text-muted);
  cursor: default;
  box-shadow: none;
}
.ms-trace-meas-tile-code {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: .04em;
}
.ms-trace-meas-hovercard {
  position: absolute;
  left: 50%;
  bottom: calc(100% + 8px);
  margin-left: -66px;
  width: 132px;
  min-height: 132px;
  padding: 10px;
  border-radius: 14px;
  border: 1px solid color-mix(in oklab, var(--brand) 16%, var(--border));
  background: color-mix(in oklab, var(--surface) 96%, white 4%);
  box-shadow: 0 18px 34px rgba(15, 23, 42, 0.18);
  display: grid;
  align-content: start;
  gap: 6px;
  opacity: 0;
  pointer-events: none;
  transform: translateY(6px) scale(.96);
  transition: opacity .14s ease, transform .14s ease;
}
.ms-trace-meas-tile:hover .ms-trace-meas-hovercard,
.ms-trace-meas-tile:focus-visible .ms-trace-meas-hovercard {
  opacity: 1;
  transform: translateY(0) scale(1);
}
.ms-trace-meas-hovercode {
  width: 34px;
  height: 34px;
  border-radius: 10px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid color-mix(in oklab, var(--brand) 20%, var(--border));
  background: color-mix(in oklab, var(--brand-soft) 76%, var(--surface));
  font-size: 12px;
  font-weight: 700;
  letter-spacing: .05em;
}
.ms-trace-meas-hovertitle {
  font-size: 11px;
  line-height: 1.35;
  color: var(--text);
  overflow-wrap: anywhere;
}
.ms-trace-meas-hovermeta {
  font-size: 10px;
  line-height: 1.35;
  color: var(--text-muted);
}

.ms-trace-btn {
  color: var(--text-muted);
}
.ms-trace-btn:hover { color: var(--brand); background: var(--brand-soft); }
/* ── noir theme: monochrome dark grayscale (noir / glassmorphism) ── */
:root[data-ui-theme="noir"] {
  --bg:              #181818;
  --surface:         #2b2b2b;
  --panel:           #121212;
  --card:            #353535;
  --border:          #474747;
  --panel-strong:    #585858;
  --text:            #e8e8e8;
  --text-muted:      #a7a7a7;
  --muted:           var(--text-muted);
  --brand:           #d8d8d8;
  --brand-strong:    #f0f0f0;
  --brand-soft:      rgba(240, 240, 240, 0.10);
  --focus-ring:      rgba(240, 240, 240, 0.30);
  --overlay:         rgba(0, 0, 0, 0.58);
  --shadow-elevated: 0 12px 24px rgba(0, 0, 0, 0.52);
  --section-shadow:  0 4px 16px rgba(0, 0, 0, 0.36);
  --input-bg:        #2b2b2b;
  --input-bg-muted:  #181818;
  --canvas-bg:       #222222;
  --canvas-grid:     rgba(120, 120, 120, 0.30);
  --canvas-overlay:  rgba(18, 18, 18, 0.80);
  --chrome-muted:    #767676;
  --chrome-hover:    #d8d8d8;
  --chrome-active:   #f0f0f0;
  --danger:          #e0a3a3;
  --danger-soft:     rgba(224, 163, 163, 0.16);
}


/* ── noir component overrides (cloned from mocha) ── */
body.theme-noir #sidebar {
  background: #0f0f0f;
  border-right-color: #353535;
}
body.theme-noir #project-panel {
  background: #0f0f0f;
  border-right-color: #474747;
}
body.theme-noir #project-panel-hd {
  background: #0f0f0f;
  border-bottom-color: #353535;
}
body.theme-noir #pv-header,
body.theme-noir .hub-head {
  background: #181818;
  border-bottom-color: #474747;
}
body.theme-noir .asset-group-header {
  background: #474747;
  border-bottom-color: #585858;
}
body.theme-noir .meas-bucket-batch-header {
  background: #474747;
  border-bottom-color: #585858;
}
body.theme-noir .meas-bucket-card {
  background: #242424;
  border-color: #585858;
  box-shadow:
    0 2px 8px rgba(0, 0, 0, 0.32),
    inset 0 3px 12px rgba(0, 0, 0, 0.38);
}
body.theme-noir .metric-box {
  background: #353535;
  border-color: #585858;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.32);
}
body.theme-noir .meas-bucket-batch {
  border-color: #474747;
}
body.theme-noir .project-entry:hover {
  background: #181818;
}
body.theme-noir #meas-list,
body.theme-noir #exp-list,
body.theme-noir #samples-list {
  background: #141414;
  border-color: #353535;
}
body.theme-noir #meas-list-hd,
body.theme-noir #samples-list-hd {
  background: #0f0f0f;
  border-bottom-color: #353535;
}
body.theme-noir #exp-list-hd {
  background: #141414;
  border-bottom-color: #353535;
}
body.theme-noir .meas-row.active,
body.theme-noir .exp-row.active,
body.theme-noir .sample-row.active {
  background: rgba(240, 240, 240, 0.12);
}
body.theme-noir #meas-detail,
body.theme-noir #exp-detail,
body.theme-noir #samples-detail {
  background: #121212;
}
body.theme-noir #panel-measurements {
  background: #121212;
}
body.theme-noir .notes-card {
  background: #353535;
  border-color: #585858;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.36);
}
body.theme-noir .meas-buckets-section {
  background: #353535;
  border-color: #585858;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.36);
}
body.theme-noir .notes-card-header {
  background: #474747;
  border-bottom-color: #585858;
}
body.theme-noir .meas-buckets-section-header,
body.theme-noir .meas-library-drawer-head {
  background: #474747;
  border-bottom-color: #585858;
}
body.theme-noir .meas-meta-chip {
  background: #353535;
  border-color: #474747;
}
body.theme-noir .meas-plot-shell {
  background: #1b1b1b; /* dark plot surface: traces/grid/legend wash out on mid grey */
  border-color: #585858;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.36);
}
body.theme-noir .meas-plot-shell-header {
  background: #474747;
  border-bottom-color: #585858;
}
body.theme-noir .meas-meta-rail {
  background: #353535;
  border-color: #585858;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.36);
}
body.theme-noir .meas-meta-rail-header {
  background: #474747;
  border-bottom-color: #585858;
}
body.theme-noir .tab-panel,
body.theme-noir #project-list {
  background: #181818;
}
body.theme-noir #assets-list,
body.theme-noir #references-list {
  background: #141414;
  border-right-color: #353535;
}
body.theme-noir #assets-list-hd,
body.theme-noir #references-list-hd {
  background: #0f0f0f;
  border-bottom-color: #353535;
}
body.theme-noir .asset-row.active,
body.theme-noir .reference-row.active {
  background: rgba(240, 240, 240, 0.12);
}
body.theme-noir #assets-detail,
body.theme-noir #references-detail {
  background: #181818;
}
body.theme-noir .resources-tree-pane,
body.theme-noir .resources-tree-pane .resources-pane,
body.theme-noir .resources-list-pane .resources-pane {
  background: #141414;
}
body.theme-noir .resources-detail-pane,
body.theme-noir .resources-detail-pane .resources-pane {
  background: #181818;
}
body.theme-noir .reference-detail-card {
  background: #353535;
  border-color: #585858;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.36);
}
body.theme-noir .exp-focus-card {
  background: #353535;
  border-color: #585858;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.36);
}
body.theme-noir .evidence-item {
  background: #353535;
  border-color: #585858;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.32);
}
body.theme-noir .evidence-item-hd {
  background: #474747;
  border-bottom: 1px solid #585858;
}
body.theme-noir .resources-detail-meta div {
  background: #353535;
  border-color: #474747;
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.28);
}
body.theme-noir .resources-preview-shell {
  background: #353535;
  border-color: #585858;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.36);
}
body.theme-noir .asset-preview-card {
  background: #353535;
  border-color: #585858;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.36);
}
body.theme-noir .asset-detail-group-value {
  background: #474747;
  border-color: #585858;
}
/* noir: --brand is light grey, so primary buttons take dark ink;
   also gives the otherwise-unstyled .fb-new-btn a real button look */
body.theme-noir .btn.primary,
body.theme-noir .btn-save,
body.theme-noir .fb-new-btn {
  background: var(--brand);
  border: 1px solid var(--brand);
  color: #181818;
}
body.theme-noir .btn.primary:hover,
body.theme-noir .btn-save:hover,
body.theme-noir .fb-new-btn:hover {
  background: var(--brand-strong);
  border-color: var(--brand-strong);
}
body.theme-noir .btn.primary svg,
body.theme-noir .btn-save svg { stroke: #181818; }

/* noir: Plotly paints the legend as an SVG <rect class="bg"> with an inline
   white fill, which the layout bgcolor doesn't reliably override — force it dark */
body.theme-noir .legend .bg {
  fill: #262626 !important;
  fill-opacity: .94 !important;
  stroke: #6a6a6a !important;
}
body.theme-noir .legend .legendtext { fill: #e8e8e8 !important; }

/* ── Notes ─────────────────────────────────────────────── */
#notes-view {
  flex: 1;
  min-height: 0;
}
.notes-shell {
  display: grid;
  grid-template-columns: 220px 1fr 250px;
  height: 100%;
  min-height: 0;
  background: var(--bg);
}
.notes-list,
.notes-vars {
  display: flex;
  flex-direction: column;
  min-height: 0;
  background: var(--surface);
  overflow: hidden;
}
.notes-list { border-right: 1px solid var(--border); }
.notes-vars { border-left: 1px solid var(--border); }
.notes-list-head,
.notes-vars-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 14px 10px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-muted);
}
.notes-new-btn {
  border: none;
  background: none;
  color: var(--text-muted);
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
  border-radius: var(--radius);
  width: 24px;
  height: 24px;
}
.notes-new-btn:hover { background: var(--panel); color: var(--text); }
.notes-list-items { overflow-y: auto; padding: 0 8px 12px; }
.notes-list-empty,
.notes-vars-empty {
  padding: 8px 14px;
  color: var(--text-muted);
  font-size: 13px;
}
.notes-list-item {
  display: flex;
  align-items: center;
  gap: 8px;
  width: 100%;
  padding: 9px 10px;
  border: none;
  background: none;
  border-radius: var(--radius);
  color: var(--text);
  cursor: pointer;
  text-align: left;
  font-size: 14px;
}
.notes-list-item:hover { background: var(--panel); }
.notes-list-item.active { background: var(--brand-soft); color: var(--brand-strong); }
.notes-list-title {
  flex: 1;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.notes-list-del {
  opacity: 0;
  color: var(--text-muted);
  font-size: 16px;
  line-height: 1;
  padding: 0 2px;
}
.notes-list-item:hover .notes-list-del { opacity: 1; }
.notes-list-del:hover { color: var(--danger); }
.notes-editor {
  display: flex;
  flex-direction: column;
  min-height: 0;
  padding: 24px 32px;
  overflow-y: auto;
}
.notes-editor.empty { opacity: 0.5; }
.notes-title {
  border: none;
  background: none;
  color: var(--text);
  font-size: 26px;
  font-weight: 700;
  padding: 0 0 12px;
  outline: none;
}
.notes-editor-tools {
  position: sticky;
  top: 0;
  z-index: 5;
  height: 0;
  display: flex;
  justify-content: flex-end;
}
.notes-editor.empty .notes-editor-tools { display: none; }
.notes-linenums-toggle,
.notes-help-toggle {
  border: none;
  background: none;
  color: var(--text-muted);
  width: 26px;
  height: 26px;
  border-radius: var(--radius);
  cursor: pointer;
  font-size: 13px;
  font-weight: 600;
  opacity: 0.5;
  transition: opacity 0.15s ease, background 0.15s ease, color 0.15s ease;
}
.notes-linenums-toggle:hover,
.notes-help-toggle:hover { opacity: 1; background: var(--panel); }
.notes-linenums-toggle[aria-pressed="true"] { color: var(--brand-strong); opacity: 0.85; }
.notes-help-pop {
  position: absolute;
  top: 30px;
  right: 0;
  width: 340px;
  max-height: min(60vh, 480px);
  overflow-y: auto;
  border: 1px solid var(--border);
  border-radius: 7px;
  background: var(--surface);
  box-shadow: 0 6px 18px rgba(15, 23, 42, 0.14);
  padding: 10px 12px;
  font-size: 12px;
  cursor: default;
}
.notes-help-pop[hidden] { display: none; }
.notes-help-head {
  font-size: 11px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--text);
  margin: 10px 0 4px;
}
.notes-help-head:first-child { margin-top: 0; }
.notes-help-row {
  display: flex;
  align-items: baseline;
  gap: 8px;
  padding: 2px 0;
  color: var(--text-muted);
}
.notes-help-row code {
  flex: 0 0 104px;
  color: var(--text);
  background: var(--panel);
  border-radius: 3px;
  padding: 0 4px;
  font-size: 11px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.notes-body-wrap {
  flex: 1;
  min-height: 200px;
  display: flex;
  align-items: flex-start;
  position: relative;
}
.notes-line-stripes {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
}
.notes-line-stripe {
  position: absolute;
  left: 0;
  right: 0;
  border-radius: 3px;
  background: color-mix(in srgb, var(--text) 4%, transparent);
}
.notes-body-wrap.notes-hide-nums .notes-line-nums { display: none; }
.notes-line-nums,
.notes-body {
  position: relative;
  z-index: 1;
}
.notes-line-nums {
  flex: 0 0 34px;
  align-self: stretch;
  min-height: 200px;
  padding-right: 10px;
  color: var(--text-muted);
  font-size: 15px;
  user-select: none;
  pointer-events: none;
}
.notes-line-num {
  position: absolute;
  right: 10px;
  line-height: 1;
  text-align: right;
  transform: translateY(-50%);
}
.notes-body {
  flex: 1;
  min-width: 0;
  min-height: 200px;
  color: var(--text);
  font-size: 15px;
  line-height: 1.7;
  outline: none;
}
.notes-body:empty::before,
.notes-body.notes-body-blank::before {
  content: attr(data-placeholder);
  position: absolute;
  top: 0;
  left: 0;
  color: var(--text-muted);
  pointer-events: none;
}
.notes-vars-list { padding: 0 8px 12px; overflow-y: auto; }
.notes-var {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 92px;
  gap: 2px 8px;
  align-items: center;
  padding: 6px 8px;
  margin-bottom: 4px;
  border-radius: var(--radius);
  border-left: 3px solid var(--brand-strong);
  font-size: 13px;
}
.notes-var:hover { background: var(--panel); }
.notes-var.err { border-left-color: var(--danger); }
.notes-var-name {
  border: none;
  background: none;
  padding: 0;
  text-align: left;
  font-family: inherit;
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
  cursor: pointer;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.notes-var-name:hover { color: var(--brand-strong); }
.notes-var-input {
  min-width: 0;
  border: 1px solid var(--border);
  border-radius: var(--radius);
  background: var(--bg);
  color: var(--text);
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  padding: 2px 6px;
  text-align: right;
  outline: none;
}
.notes-var-input:focus { border-color: var(--brand-strong); }
.notes-var-out {
  grid-column: 1 / -1;
  color: var(--text-muted);
  font-size: 12px;
  font-variant-numeric: tabular-nums;
  text-align: right;
}
.notes-var.err .notes-var-out { color: var(--danger); }
.notes-ta-empty {
  padding: 8px 12px;
  font-size: 13px;
  color: var(--text-muted);
}
.notes-ta {
  position: fixed;
  z-index: 10000;
  max-height: 240px;
  overflow-y: auto;
  border: 1px solid var(--border);
  border-radius: 4px;
  background: var(--surface);
  box-shadow: 0 4px 14px rgba(15, 23, 42, 0.12);
  padding: 2px;
}
.notes-ta[hidden] {
  display: none !important;
}
.notes-ta-item {
  display: block;
  width: 100%;
  padding: 5px 8px;
  border-radius: 2px;
  cursor: pointer;
  color: var(--text);
  font-size: 13px;
  line-height: 1.35;
}
.notes-ta-item:hover,
.notes-ta-item.active {
  background: var(--panel);
}
.note-tag {
  display: inline;
  max-width: none;
  padding: 0 2px;
  border-radius: 2px;
  background: transparent;
  color: var(--brand-strong);
  font-size: inherit;
  line-height: inherit;
  text-decoration: underline;
  text-decoration-style: dotted;
  text-underline-offset: 2px;
  vertical-align: baseline;
  cursor: pointer;
}
.note-tag-pending-delete {
  background: var(--brand-soft);
  outline: 1px solid var(--brand-strong);
}
.notes-body hr {
  border: none;
  border-top: 1px solid var(--border);
  margin: 20px 0;
}
.notes-body h1, .notes-body h2, .notes-body h3 {
  font-weight: 700;
  line-height: 1.3;
  margin: 0.6em 0 0.3em;
}
.notes-body h1 { font-size: 24px; }
.notes-body h2 { font-size: 20px; }
.notes-body h3 { font-size: 16px; }
.notes-body ul, .notes-body ol {
  margin: 0.3em 0;
  padding-left: 1.4em;
}
.notes-body input[type="checkbox"] {
  margin-right: 6px;
  vertical-align: middle;
}
.notes-body blockquote {
  margin: 0.4em 0;
  padding: 6px 14px;
  border-left: 3px solid var(--brand, var(--border));
  border-radius: 0 var(--radius) var(--radius) 0;
  background: var(--panel);
  color: var(--text-muted);
}
.notes-body code {
  background: var(--panel);
  padding: 1px 5px;
  border-radius: 3px;
  font-family: monospace;
  font-size: 0.9em;
}
.notes-body pre {
  position: relative;
  background: color-mix(in srgb, var(--text) 5%, var(--panel));
  border: 1px solid var(--border);
  border-left: 3px solid var(--brand-strong);
  padding: 10px 12px;
  margin: 0.4em 0;
  border-radius: var(--radius);
  overflow-x: auto;
  font-family: monospace;
  font-size: 13px;
  white-space: pre-wrap;
}
.notes-body pre.note-code-raw {
  border-left-style: dashed;
  border-left-color: var(--text-muted);
}
/* Rendered mode shows the fences as decorative lines so the block occupies
   exactly the same height as raw edit mode — no shift on enter/exit. */
.notes-body pre:not(.note-code-raw)::before {
  content: "```" attr(data-lang);
  display: block;
  color: var(--text-muted);
  user-select: none;
}
.notes-body pre:not(.note-code-raw)::after {
  content: "```";
  display: block;
  color: var(--text-muted);
  user-select: none;
}
.notes-body pre code {
  background: none;
  padding: 0;
}
.notes-body table.note-table {
  border-collapse: collapse;
  margin: 0.5em 0;
}
.notes-body table.note-table td,
.notes-body table.note-table th {
  border: 1px solid var(--border);
  padding: 6px 10px;
  min-width: 60px;
}
.notes-body table.note-table th {
  background: var(--panel);
  font-weight: 600;
  text-align: left;
}
.notes-body .note-latex {
  padding: 0 2px;
  cursor: text;
}
.notes-body .note-frac,
.notes-body .note-chem { cursor: pointer; }
.notes-body .note-latex .note-frac { cursor: inherit; }
.notes-body .note-frac {
  display: inline-flex;
  flex-direction: column;
  vertical-align: middle;
  text-align: center;
  font-size: 0.85em;
  line-height: 1;
  margin: 0 2px;
}
.notes-body .note-frac-num {
  border-bottom: 1px solid currentColor;
  padding: 0 2px 1px;
}
.notes-body .note-frac-den {
  padding: 1px 2px 0;
}
.notes-body .note-callout {
  border-left: 3px solid var(--border);
  background: var(--panel);
  border-radius: var(--radius);
  padding: 8px 12px;
  margin: 0.4em 0;
}
.notes-body .note-callout-note { border-left-color: #3b82f6; }
.notes-body .note-callout-warning { border-left-color: #f59e0b; }
.notes-body .note-callout-tip { border-left-color: #22c55e; }
.notes-body .note-callout-label { font-weight: 700; }
.notes-callouts-list { padding: 0 8px 12px; }
.notes-callout-item {
  padding: 6px 8px;
  border-radius: var(--radius);
  font-size: 13px;
  cursor: pointer;
  border-left: 3px solid var(--border);
  margin-bottom: 4px;
  color: var(--text);
}
.notes-callout-item:hover { background: var(--panel); }
.notes-callout-item.notes-callout-note { border-left-color: #3b82f6; }
.notes-callout-item.notes-callout-warning { border-left-color: #f59e0b; }
.notes-callout-item.notes-callout-tip { border-left-color: #22c55e; }
.notes-body .note-spoiler {
  border-radius: 3px;
  cursor: pointer;
  filter: blur(5px);
  background: var(--panel);
  transition: filter 0.15s;
}
.notes-body .note-spoiler.revealed {
  filter: none;
  cursor: text;
}
.notes-body .note-date {
  border-bottom: 1px dotted var(--text-muted);
  cursor: pointer;
}
.notes-body a {
  color: var(--brand-strong);
}
.notes-body .note-calc {
  font-variant-numeric: tabular-nums;
}
.notes-body .note-calc-err { color: var(--danger); }
.notes-body .note-var {
  padding: 0 4px;
  border-radius: 3px;
  background: var(--panel);
  border: 1px solid var(--border);
  font-size: 0.92em;
  font-variant-numeric: tabular-nums;
  cursor: pointer;
  white-space: nowrap;
}
.notes-body .note-var .note-var-name { color: var(--text-muted); }
.notes-body .note-var .note-var-val { font-weight: 600; }
.notes-body .note-var.note-var-err .note-var-val { color: var(--danger); }
.notes-body .note-img-wrap {
  display: inline-block;
  resize: both;
  overflow: hidden;
  min-width: 40px;
  min-height: 40px;
  max-width: 100%;
  vertical-align: bottom;
}
.notes-body .note-img-wrap img {
  width: 100%;
  height: 100%;
  display: block;
  object-fit: contain;
}
.notes-body .note-mention {
  padding: 0 2px;
  border-radius: 2px;
  background: var(--brand-soft);
  color: var(--brand-strong);
  font-weight: 600;
}

/* Smart-insert pop-in + toast */
@keyframes note-pop-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
.notes-body .note-pop { animation: note-pop-in 0.18s ease-out; }
@keyframes notes-ta-in {
  from { opacity: 0; transform: translateY(-3px); }
  to { opacity: 1; transform: none; }
}
.notes-ta { animation: notes-ta-in 0.12s ease-out; }
.notes-toast {
  position: fixed;
  z-index: 10001;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 8px 5px 11px;
  border: 1px solid var(--border);
  border-radius: 7px;
  background: var(--surface);
  box-shadow: 0 6px 18px rgba(15, 23, 42, 0.14);
  font-size: 12px;
  color: var(--text-muted);
  opacity: 0;
  transform: translateY(5px);
  pointer-events: none;
  transition: opacity 0.16s ease, transform 0.16s ease;
}
.notes-toast.show {
  opacity: 1;
  transform: none;
  pointer-events: auto;
}
.notes-toast-label { color: var(--text); white-space: nowrap; }
.notes-toast-undo {
  border: none;
  background: var(--panel);
  color: var(--brand-strong);
  font-size: 12px;
  font-weight: 600;
  padding: 2px 8px;
  border-radius: 5px;
  cursor: pointer;
}
.notes-toast-undo:hover { background: var(--brand-soft); }
.notes-toast-key {
  font-size: 10px;
  border: 1px solid var(--border);
  border-radius: 3px;
  padding: 0 4px;
  color: var(--text-muted);
}

/* Image resize affordance (native CSS resize does the work) */
.notes-body .note-img-wrap {
  position: relative;
  border-radius: 4px;
  transition: box-shadow 0.15s ease;
}
.notes-body .note-img-wrap:hover { box-shadow: 0 0 0 2px var(--brand-soft); }
.notes-body .note-img-wrap::after {
  content: "";
  position: absolute;
  right: 3px;
  bottom: 3px;
  width: 9px;
  height: 9px;
  border-right: 2px solid var(--text-muted);
  border-bottom: 2px solid var(--text-muted);
  border-radius: 0 0 3px 0;
  opacity: 0;
  transition: opacity 0.15s ease;
  pointer-events: none;
}
.notes-body .note-img-wrap:hover::after { opacity: 0.8; }

/* ================================================================== */
/* Compose: reference world objects + selection inspector redesign     */

/* --- World reference card: index-card look, distinct from sticky notes --- */

.compose-world-note.compose-world-reference {
  border: 1px solid #cdc3ea;
  border-radius: 6px;
  background: linear-gradient(180deg, #fdfcff 0%, #f5f2fc 100%);
  box-shadow: 0 8px 20px rgba(60, 42, 120, 0.14);
}

.compose-world-note.compose-world-reference.selected {
  border-color: #7c5ccf;
  box-shadow: 0 0 0 2px rgba(124, 92, 207, 0.22), 0 10px 24px rgba(60, 42, 120, 0.18);
}

.compose-world-note-header.compose-world-reference-header {
  border-bottom: 1px solid rgba(124, 92, 207, 0.22);
  background: rgba(244, 240, 254, 0.92);
  color: #5b44a8;
}

.compose-world-reference-body {
  display: flex;
  gap: 10px;
  align-items: flex-start;
  flex: 1 1 auto;
  min-height: 0;
  padding: 10px 12px;
  overflow: auto;
}

.compose-world-reference-icon {
  flex: 0 0 auto;
  width: 18px;
  height: 18px;
  margin-top: 1px;
  color: #7c5ccf;
}

.compose-world-reference-icon svg {
  width: 18px;
  height: 18px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.compose-world-reference-text {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.compose-world-reference-title {
  font-size: 13px;
  font-weight: 600;
  line-height: 1.35;
  color: #2f2a4d;
  word-break: break-word;
}

.compose-world-reference-meta {
  font-size: 11.5px;
  line-height: 1.4;
  color: #6a648f;
}

.compose-world-reference-link {
  width: fit-content;
  font-size: 11px;
  color: #7c5ccf;
  text-decoration: none;
  word-break: break-all;
}

.compose-world-reference-link:hover {
  text-decoration: underline;
}

/* --- Selection inspector: identity header + one tabbed group at a time --- */

.compose-selection-box {
  width: min(520px, 100%);
}

.compose-selection-content {
  grid-template-rows: auto minmax(0, 1fr);
}

.compose-selection-head {
  display: flex;
  align-items: center;
  gap: 8px;
  min-height: 26px;
  padding-bottom: 7px;
  margin-bottom: 8px;
  border-bottom: 1px solid var(--cmp-hairline, var(--border));
}

.compose-selection-head-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 24px;
  height: 24px;
  border-radius: 6px;
  color: var(--compose-selection-accent, var(--text-muted));
  background: color-mix(in oklab, var(--compose-selection-accent, var(--text)) 10%, transparent);
}

.compose-selection-head-icon svg {
  width: 14px;
  height: 14px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.compose-selection-head-type {
  flex: 0 0 auto;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.4px;
  text-transform: uppercase;
  color: var(--text-muted);
}

.compose-selection-head-name {
  flex: 0 1 auto;
  min-width: 0;
  font-size: 12px;
  font-weight: 600;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.compose-selection-tabs {
  display: flex;
  gap: 2px;
  margin-left: auto;
  flex: 0 0 auto;
}

.compose-selection-tab {
  border: 1px solid transparent;
  border-radius: 7px;
  background: transparent;
  padding: 3px 8px;
  font-size: 11px;
  font-weight: 500;
  color: var(--text-muted);
  cursor: pointer;
}

.compose-selection-tab:hover {
  background: color-mix(in oklab, var(--text) 5%, transparent);
  color: var(--text);
}

.compose-selection-tab.active {
  background: color-mix(in oklab, var(--brand) 9%, transparent);
  border-color: color-mix(in oklab, var(--brand) 32%, transparent);
  color: var(--text);
}

.compose-selection-dismiss {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 24px;
  height: 24px;
  padding: 0;
  border: none;
  border-radius: 7px;
  background: transparent;
  color: var(--text-muted);
  cursor: pointer;
}

.compose-selection-dismiss:hover {
  background: color-mix(in oklab, var(--text) 6%, transparent);
  color: var(--text);
}

.compose-selection-dismiss svg {
  width: 13px;
  height: 13px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.75;
  stroke-linecap: round;
}

/* Tabbed mode: single full-width group, header tabs switch between them */
.compose-selection-tabbed .compose-selection-body {
  display: block;
  overflow: auto;
  padding-top: 0;
}

.compose-selection-tabbed .compose-selection-group,
.compose-selection-tabbed .compose-selection-group-wide {
  width: auto;
  min-width: 0;
  max-width: none;
  height: 100%;
  padding: 0 2px 0 0;
  border: none;
  background: transparent;
  box-shadow: none;
  grid-template-rows: minmax(0, 1fr);
}

.compose-selection-tabbed .compose-selection-group-title {
  display: none;
}

.compose-selection-tabbed .compose-selection-group.is-hidden {
  display: none;
}

/* --- Leader arrow: selected object -> inspector --- */

.compose-selection-leader {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 7;
  pointer-events: none;
  overflow: visible;
  color: color-mix(in oklab, var(--text) 45%, transparent);
}

.compose-selection-leader [data-compose-leader-path] {
  animation: compose-leader-march 0.8s linear infinite;
}

.compose-selection-leader.is-entering {
  animation: compose-leader-in 0.28s ease-out;
}

@keyframes compose-leader-march {
  to { stroke-dashoffset: -10; }
}

@keyframes compose-leader-in {
  from { opacity: 0; }
  to { opacity: 1; }
}

/* ================================================================== */
/* Compose: connector redo (drag handles, curved selectable arrows)    */

.compose-connect-handle {
  position: absolute;
  right: -10px;
  top: 50%;
  transform: translateY(-50%) scale(0.85);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 20px;
  height: 20px;
  padding: 0;
  border: 1px solid color-mix(in oklab, var(--brand) 45%, var(--border));
  border-radius: 50%;
  background: var(--card);
  color: var(--brand);
  box-shadow: 0 2px 6px rgba(15, 23, 42, 0.18);
  cursor: crosshair;
  opacity: 0;
  transition: opacity 0.12s ease, transform 0.12s ease;
  z-index: 3;
}

.compose-connect-handle svg {
  width: 12px;
  height: 12px;
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.compose-connect-handle svg circle {
  fill: currentColor;
  stroke: none;
}

.compose-canvas-frame:hover > .compose-connect-handle,
.compose-world-note:hover > .compose-connect-handle,
.compose-world-asset:hover > .compose-connect-handle,
.compose-canvas-frame.selected > .compose-connect-handle,
.compose-world-note.selected > .compose-connect-handle,
.compose-world-asset.selected > .compose-connect-handle {
  opacity: 1;
  transform: translateY(-50%) scale(1);
}

.compose-connect-handle:hover {
  background: color-mix(in oklab, var(--brand) 10%, var(--card));
  border-color: var(--brand);
}

/* Drop-target highlight while dragging a connection */
.compose-connect-target {
  outline: 2px solid var(--brand);
  outline-offset: 2px;
}

body.compose-connecting,
body.compose-connecting #compose-stage-surface,
body.compose-connecting #compose-stage-surface * {
  cursor: crosshair;
}

/* While connecting, existing arrows must not steal the elementFromPoint hit */
body.compose-connecting .compose-world-connectors [data-compose-connector-hit] {
  pointer-events: none;
}

/* Curved connector groups: transparent hit stroke + line + origin dot */
.compose-world-connectors [data-compose-connector-hit] {
  pointer-events: stroke;
  cursor: pointer;
}

.compose-connector-group [data-compose-connector-line],
.compose-connector-group [data-compose-connector-dot] {
  transition: stroke 0.12s ease, fill 0.12s ease;
}

.compose-connector-group:hover [data-compose-connector-line] {
  stroke-width: 2.5;
}

.compose-connector-group.selected {
  color: var(--brand);
}

.compose-connector-group.selected [data-compose-connector-line] {
  stroke-width: 2.5;
}

.compose-world-connectors [data-compose-connector-preview] {
  color: var(--brand);
  pointer-events: none;
}

/* --- Inspector field audit: no clipping, sane heights/widths --- */

.compose-selection-head {
  flex-wrap: wrap;
  row-gap: 4px;
}

.compose-selection-tabbed .compose-selection-group-body {
  max-width: 460px;
}

.compose-selection-group-body .compose-field-input {
  min-width: 0;
  max-width: 100%;
}

.compose-selection-box .compose-field-textarea,
.compose-selection-box .compose-textarea {
  min-height: 60px;
  max-height: 104px;
  resize: none;
}

/* Canvas frames keep their tool dock on the right edge; connect handle goes
   bottom-center there instead. */
.compose-canvas-frame > .compose-connect-handle {
  right: auto;
  top: auto;
  left: 50%;
  bottom: -10px;
  transform: translateX(-50%) scale(0.85);
}

.compose-canvas-frame:hover > .compose-connect-handle,
.compose-canvas-frame.selected > .compose-connect-handle {
  transform: translateX(-50%) scale(1);
}
