
    :root {
      --bg: #eef4fb;
      --panel: rgba(31, 74, 135, 0.06);
      --panel-strong: rgba(31, 74, 135, 0.14);
      --text: #10233d;
      --muted: #59708f;
      --brand: #1377ff;
      --card: #fcfdff;
      --shadow: 0 18px 38px rgba(18, 52, 96, 0.10);
      --code-token-comment: #57606a;
      --code-token-keyword: #b31d28;
      --code-token-string: #0a4d91;
      --code-token-number: #0550ae;
      --code-token-literal: #6f42c1;
      --code-token-tag: #22863a;
      --code-token-attr: #6f42c1;
      /* Graph node accents aligned to app.js FILE_COLUMN_PALETTE border tones. */
      --graph-node-accent-measurement: #5ea9e8;
      --graph-node-accent-script: #8e7ae6;
      --graph-node-accent-figure: #de9f45;
      --graph-node-accent-experiment: #44b9a6;
      --graph-node-accent-reference: #63b96d;
      --files-preview-height: clamp(730px, calc(100vh - 170px), 1040px);
      --plot-min-height: 440px;
      --file-column-max-height: calc(var(--files-preview-height) - 12px);
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) {
      background:
        radial-gradient(1120px 680px at -14% -18%, rgba(19, 119, 255, 0.12), transparent 64%),
        radial-gradient(920px 520px at 112% -10%, rgba(68, 185, 166, 0.08), transparent 66%),
        linear-gradient(180deg, #f7fbff 0%, #eef4fb 52%, #e8f0f8 100%);
      background-attachment: fixed;
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) header {
      background: color-mix(in oklab, var(--card) 84%, #eef6ff);
      border-bottom-color: color-mix(in oklab, var(--panel-strong) 82%, rgba(255, 255, 255, 0.58));
      box-shadow: 0 10px 24px rgba(18, 52, 96, 0.08);
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) aside,
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) #details,
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .project-card {
      background: color-mix(in oklab, var(--card) 94%, #f3f8fe);
      border-color: color-mix(in oklab, var(--panel-strong) 84%, rgba(19, 119, 255, 0.08));
      box-shadow: 0 16px 36px rgba(18, 52, 96, 0.08);
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .project-card-header {
      background: color-mix(in oklab, var(--card) 76%, rgba(19, 119, 255, 0.05));
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .btn {
      background: color-mix(in oklab, var(--card) 84%, rgba(19, 119, 255, 0.04));
      border-color: color-mix(in oklab, var(--panel-strong) 90%, rgba(19, 119, 255, 0.10));
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .btn:hover {
      border-color: color-mix(in oklab, var(--brand) 56%, var(--panel-strong));
      background: color-mix(in oklab, var(--card) 72%, rgba(19, 119, 255, 0.10));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--brand) 14%, transparent);
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .btn.primary {
      background: linear-gradient(
        180deg,
        color-mix(in oklab, var(--brand) 18%, white),
        color-mix(in oklab, var(--brand) 10%, white)
      );
      border-color: color-mix(in oklab, var(--brand) 42%, var(--panel-strong));
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .project-info-item,
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .project-notes-col,
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .info-card,
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .project-asset-bucket,
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .project-assets-browser {
      background: color-mix(in oklab, var(--card) 86%, rgba(31, 74, 135, 0.04));
      border-color: color-mix(in oklab, var(--panel-strong) 76%, rgba(19, 119, 255, 0.08));
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .measurements-section,
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .project-assets-section {
      background: color-mix(in oklab, var(--card) 94%, rgba(19, 119, 255, 0.02));
      border-color: color-mix(in oklab, var(--panel-strong) 82%, rgba(19, 119, 255, 0.10));
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .measurements-section-header,
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .project-assets-header,
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .measurement-header,
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .project-experiment-header,
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .project-asset-subgroup-header,
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .project-asset-bucket-header {
      background: color-mix(in oklab, var(--card) 72%, rgba(31, 74, 135, 0.06));
      border-color: color-mix(in oklab, var(--panel-strong) 72%, rgba(19, 119, 255, 0.08));
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .measurement-card {
      background: color-mix(in oklab, var(--card) 90%, rgba(94, 169, 232, 0.05));
      border-color: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 30%, var(--panel-strong));
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .measurement-card.expanded {
      background: color-mix(in oklab, var(--card) 84%, rgba(94, 169, 232, 0.09));
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .project-assets-section-script .project-asset-card {
      background: color-mix(in oklab, var(--card) 86%, rgba(142, 122, 230, 0.09));
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .project-assets-section-asset .project-asset-card {
      background: color-mix(in oklab, var(--card) 86%, rgba(19, 119, 255, 0.09));
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .project-assets-section-figure .project-asset-card {
      background: color-mix(in oklab, var(--card) 86%, rgba(222, 159, 69, 0.10));
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .project-experiment-card {
      background: color-mix(in oklab, var(--card) 90%, rgba(68, 185, 166, 0.06));
      border-color: color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 28%, var(--panel-strong));
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .graph-node-card {
      background: color-mix(in oklab, var(--card) 88%, #eef5fd);
      border-color: color-mix(in oklab, var(--panel-strong) 82%, rgba(31, 74, 135, 0.10));
    }
    body:not(.theme-dark):not(.theme-ubuntu):not(.theme-paper):not(.theme-dark-contrast) .graph-node-child {
      background: color-mix(in oklab, var(--card) 92%, #f4f8fd);
      border-color: color-mix(in oklab, var(--panel-strong) 80%, rgba(31, 74, 135, 0.08));
    }
    body.theme-dark {
      --bg: #08111b;
      --panel: rgba(148, 163, 184, 0.10);
      --panel-strong: rgba(148, 163, 184, 0.22);
      --text: #eef4ff;
      --muted: #9fb0c8;
      --brand: #59b8ff;
      --card: #0f1826;
      --shadow: 0 18px 40px rgba(2, 8, 18, 0.5);
      --graph-node-accent-measurement: #73c8ff;
      --graph-node-accent-script: #b295ff;
      --graph-node-accent-figure: #ffbf6b;
      --graph-node-accent-experiment: #59d6be;
      --graph-node-accent-reference: #8fdc87;
      color-scheme: dark;
    }
    body.theme-dark {
      background:
        radial-gradient(1200px 620px at -14% -20%, rgba(89, 184, 255, 0.14), transparent 64%),
        radial-gradient(940px 520px at 116% -16%, rgba(89, 214, 190, 0.08), transparent 66%),
        linear-gradient(180deg, #050b12 0%, #08111b 42%, #0b1522 100%);
      background-attachment: fixed;
    }
    body.theme-dark header {
      background: color-mix(in oklab, var(--card) 90%, #050a12);
      border-bottom-color: color-mix(in oklab, var(--panel-strong) 88%, rgba(89, 184, 255, 0.16));
      box-shadow: 0 10px 28px rgba(0, 0, 0, 0.42);
    }
    body.theme-dark aside,
    body.theme-dark #details,
    body.theme-dark .project-card {
      background: color-mix(in oklab, var(--card) 94%, #0a1320);
      border-color: color-mix(in oklab, var(--panel-strong) 82%, rgba(122, 160, 212, 0.12));
    }
    body.theme-dark .project-card-header {
      background: color-mix(in oklab, var(--card) 78%, rgba(89, 184, 255, 0.05));
    }
    body.theme-dark .btn {
      background: color-mix(in oklab, var(--card) 88%, rgba(148, 163, 184, 0.08));
      border-color: color-mix(in oklab, var(--panel-strong) 88%, rgba(89, 184, 255, 0.14));
      transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
    }
    body.theme-dark .btn:hover {
      border-color: color-mix(in oklab, var(--brand) 64%, var(--panel-strong));
      background: color-mix(in oklab, var(--card) 76%, rgba(89, 184, 255, 0.14));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--brand) 22%, transparent);
    }
    body.theme-dark .btn.primary {
      background: linear-gradient(
        180deg,
        color-mix(in oklab, var(--brand) 34%, var(--card)),
        color-mix(in oklab, var(--brand) 20%, var(--card))
      );
      border-color: color-mix(in oklab, var(--brand) 70%, var(--panel-strong));
      color: #f7fbff;
    }
    body.theme-dark .project-info-item,
    body.theme-dark .project-notes-col,
    body.theme-dark .info-card,
    body.theme-dark .project-asset-bucket,
    body.theme-dark .project-assets-browser {
      background: color-mix(in oklab, var(--card) 84%, rgba(148, 163, 184, 0.08));
      border-color: color-mix(in oklab, var(--panel-strong) 74%, rgba(89, 184, 255, 0.08));
    }
    body.theme-dark .measurements-section,
    body.theme-dark .project-assets-section {
      background: color-mix(in oklab, var(--card) 96%, rgba(89, 184, 255, 0.02));
      border-color: color-mix(in oklab, var(--panel-strong) 86%, rgba(89, 184, 255, 0.12));
    }
    body.theme-dark .measurements-section-header,
    body.theme-dark .project-assets-header {
      background: linear-gradient(
        180deg,
        color-mix(in oklab, var(--card) 68%, rgba(89, 184, 255, 0.18)),
        color-mix(in oklab, var(--card) 84%, rgba(8, 17, 27, 0.76))
      );
      border-bottom-color: color-mix(in oklab, var(--panel-strong) 92%, rgba(89, 184, 255, 0.18));
      box-shadow: inset 0 -1px 0 color-mix(in oklab, rgba(89, 184, 255, 0.18) 72%, transparent);
    }
    body.theme-dark .project-section-body {
      background: color-mix(in oklab, var(--card) 97%, rgba(5, 11, 18, 0.9));
    }
    body.theme-dark .measurement-header,
    body.theme-dark .project-experiment-header,
    body.theme-dark .project-asset-subgroup-header,
    body.theme-dark .project-asset-bucket-header {
      background: color-mix(in oklab, var(--card) 84%, rgba(148, 163, 184, 0.08));
      border-color: color-mix(in oklab, var(--panel-strong) 68%, rgba(89, 184, 255, 0.08));
    }
    body.theme-dark .measurement-card {
      background: color-mix(in oklab, var(--card) 94%, rgba(115, 200, 255, 0.05));
      border-color: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 34%, var(--panel-strong));
      box-shadow: 0 10px 22px rgba(2, 8, 18, 0.28);
    }
    body.theme-dark .measurement-card.expanded {
      background: color-mix(in oklab, var(--card) 90%, rgba(115, 200, 255, 0.1));
    }
    body.theme-dark .measurement-card.expanded .measurement-header {
      background: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 12%, var(--card));
    }
    body.theme-dark .project-assets-section-script,
    body.theme-dark .project-assets-section-asset,
    body.theme-dark .project-assets-section-figure {
      background: color-mix(in oklab, var(--card) 96%, rgba(148, 163, 184, 0.04));
    }
    body.theme-dark .project-assets-section-script .project-assets-list,
    body.theme-dark .project-assets-section-asset .project-assets-list,
    body.theme-dark .project-assets-section-figure .project-assets-list {
      background: transparent;
    }
    body.theme-dark .project-assets-section-script .project-asset-card {
      background: color-mix(in oklab, var(--card) 88%, rgba(178, 149, 255, 0.08));
    }
    body.theme-dark .project-assets-section-asset .project-asset-card {
      background: color-mix(in oklab, var(--card) 88%, rgba(89, 184, 255, 0.08));
    }
    body.theme-dark .project-assets-section-figure .project-asset-card {
      background: color-mix(in oklab, var(--card) 88%, rgba(255, 191, 107, 0.08));
    }
    body.theme-dark .project-experiment-card {
      background: color-mix(in oklab, var(--card) 93%, rgba(89, 214, 190, 0.07));
      border-color: color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 30%, var(--panel-strong));
      box-shadow: 0 10px 22px rgba(2, 8, 18, 0.28);
    }
    body.theme-dark .project-experiment-card-expanded .project-experiment-header {
      background: color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 11%, var(--card));
    }
    body.theme-dark .project-asset-card,
    body.theme-dark .project-reference-card,
    body.theme-dark .project-asset-subgroup-card {
      box-shadow: 0 10px 22px rgba(2, 8, 18, 0.24);
    }
    body.theme-dark .project-reference-card {
      background: color-mix(in oklab, var(--reference-entry-accent, var(--graph-node-accent-reference)) 8%, var(--card));
      border-color: color-mix(in oklab, var(--reference-entry-accent, var(--graph-node-accent-reference)) 34%, var(--panel-strong));
    }
    body.theme-dark .project-reference-card:hover {
      background: color-mix(in oklab, var(--reference-entry-accent, var(--graph-node-accent-reference)) 11%, var(--card));
      border-color: color-mix(in oklab, var(--reference-entry-accent, var(--graph-node-accent-reference)) 50%, var(--panel-strong));
    }
    body.theme-dark .graph-node-card {
      background: color-mix(in oklab, var(--card) 90%, #142033);
      border-color: color-mix(in oklab, var(--panel-strong) 84%, rgba(148, 163, 184, 0.16));
      box-shadow: 0 12px 24px rgba(2, 8, 18, 0.3);
    }
    body.theme-dark .graph-node-child {
      background: color-mix(in oklab, var(--card) 94%, #131d2d);
      border-color: color-mix(in oklab, var(--panel-strong) 84%, rgba(148, 163, 184, 0.14));
    }
    body.theme-dark .graph-node-card.graph-node-measurement_run,
    body.theme-dark .graph-node-child.graph-node-measurement_run,
    body.theme-dark .graph-node-child.graph-node-measurement_column,
    body.theme-dark .graph-node-child.graph-node-measurement_series {
      background: color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-measurement)) 16%, var(--card));
    }
    body.theme-dark .graph-node-card.graph-node-script,
    body.theme-dark .graph-node-child.graph-node-script {
      background: color-mix(in oklab, var(--card) 84%, rgba(178, 149, 255, 0.12));
    }
    body.theme-dark .graph-node-card.graph-node-asset,
    body.theme-dark .graph-node-child.graph-node-asset {
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 16%, var(--card));
    }
    body.theme-dark .graph-node-card.graph-node-figure,
    body.theme-dark .graph-node-child.graph-node-figure {
      background: color-mix(in oklab, var(--card) 84%, rgba(255, 191, 107, 0.12));
    }
    body.theme-dark .graph-node-card.graph-node-experiment,
    body.theme-dark .graph-node-child.graph-node-experiment {
      background: color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-experiment)) 16%, var(--card));
      border-color: color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-experiment)) 34%, var(--panel-strong));
    }
    body.theme-dark .graph-node-card.graph-node-reference,
    body.theme-dark .graph-node-child.graph-node-reference {
      background: color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-reference)) 14%, var(--card));
      border-color: color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-reference)) 32%, var(--panel-strong));
    }
    body.theme-dark .graph-node-card.graph-node-dataset,
    body.theme-dark .graph-node-card.graph-node-dataset_version,
    body.theme-dark .graph-node-child.graph-node-dataset,
    body.theme-dark .graph-node-child.graph-node-dataset_version {
      background: color-mix(in oklab, var(--card) 84%, rgba(164, 179, 209, 0.12));
    }
    body.theme-ubuntu {
      --bg: #220015;
      --panel: rgba(255,255,255,.08);
      --panel-strong: rgba(233,84,32,.3);
      --text: #f3e9dd;
      --muted: #d1b8a5;
      --brand: #e95420;
      --card: #2f0b22;
      --shadow: 0 12px 34px rgba(0, 0, 0, 0.52);
      --graph-node-accent-measurement: #7db896;
      --graph-node-accent-script: #b089d8;
      --graph-node-accent-figure: #e9a162;
      --graph-node-accent-experiment: #6dc4b1;
      --graph-node-accent-reference: #72b47e;
      color-scheme: dark;
    }
    body.theme-ubuntu {
      background:
        radial-gradient(1260px 560px at -12% -24%, rgba(128, 46, 104, 0.42), transparent 64%),
        radial-gradient(980px 500px at 112% -20%, rgba(233, 84, 32, 0.24), transparent 66%),
        linear-gradient(180deg, #17000f 0%, #220015 46%, #2c031d 100%);
      background-attachment: fixed;
    }
    body.theme-ubuntu header {
      background: color-mix(in oklab, var(--card) 92%, #13000d);
      border-bottom-color: color-mix(in oklab, var(--panel-strong) 86%, rgba(245, 153, 105, 0.32));
      box-shadow: 0 8px 24px rgba(0, 0, 0, 0.48);
    }
    body.theme-ubuntu aside {
      background: color-mix(in oklab, var(--card) 94%, #170010);
    }
    body.theme-ubuntu .btn {
      background: color-mix(in oklab, var(--card) 90%, rgba(233, 84, 32, 0.12));
      border-color: color-mix(in oklab, var(--panel-strong) 84%, rgba(255, 186, 141, 0.26));
      transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
    }
    body.theme-ubuntu .btn:hover {
      border-color: color-mix(in oklab, var(--brand) 66%, var(--panel-strong));
      background: color-mix(in oklab, var(--card) 74%, rgba(233, 84, 32, 0.24));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--brand) 30%, transparent);
    }
    body.theme-ubuntu .btn.primary {
      background: linear-gradient(
        180deg,
        color-mix(in oklab, var(--brand) 30%, var(--card)),
        color-mix(in oklab, var(--brand) 18%, var(--card))
      );
      border-color: color-mix(in oklab, var(--brand) 64%, var(--panel-strong));
    }
    body.theme-ubuntu .measurements-section {
      background: color-mix(in oklab, var(--graph-node-accent-measurement) 5%, var(--card));
      border-color: color-mix(in oklab, var(--graph-node-accent-measurement) 34%, var(--panel-strong));
    }
    body.theme-ubuntu .measurement-card {
      background: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 11%, var(--card));
      border-color: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 42%, var(--panel-strong));
    }
    body.theme-ubuntu .measurement-header {
      background: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 8%, var(--card));
    }
    body.theme-ubuntu .measurement-card.expanded {
      background: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 16%, var(--card));
    }
    body.theme-ubuntu .measurement-card.expanded .measurement-header {
      background: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 12%, var(--card));
    }
    body.theme-ubuntu .project-assets-section-script {
      background: color-mix(in oklab, var(--graph-node-accent-script) 8%, var(--card));
      border-color: color-mix(in oklab, var(--graph-node-accent-script) 32%, var(--panel-strong));
    }
    body.theme-ubuntu .project-assets-section-asset {
      background: color-mix(in oklab, var(--brand) 8%, var(--card));
      border-color: color-mix(in oklab, var(--brand) 32%, var(--panel-strong));
    }
    body.theme-ubuntu .project-assets-section-figure {
      background: color-mix(in oklab, var(--graph-node-accent-figure) 8%, var(--card));
      border-color: color-mix(in oklab, var(--graph-node-accent-figure) 32%, var(--panel-strong));
    }
    body.theme-ubuntu .project-assets-section-script .project-assets-list {
      background: color-mix(in oklab, var(--graph-node-accent-script) 6%, var(--card));
    }
    body.theme-ubuntu .project-assets-section-asset .project-assets-list {
      background: color-mix(in oklab, var(--brand) 6%, var(--card));
    }
    body.theme-ubuntu .project-assets-section-figure .project-assets-list {
      background: color-mix(in oklab, var(--graph-node-accent-figure) 6%, var(--card));
    }
    body.theme-ubuntu .project-assets-section-script .project-asset-card {
      background: color-mix(in oklab, var(--graph-node-accent-script) 14%, var(--card));
    }
    body.theme-ubuntu .project-assets-section-asset .project-asset-card {
      background: color-mix(in oklab, var(--brand) 14%, var(--card));
    }
    body.theme-ubuntu .project-assets-section-figure .project-asset-card {
      background: color-mix(in oklab, var(--graph-node-accent-figure) 14%, var(--card));
    }
    body.theme-ubuntu .graph-node-card {
      background: color-mix(in oklab, var(--card) 84%, #4a1534);
      border-color: color-mix(in oklab, var(--panel-strong) 80%, rgba(238, 138, 83, 0.26));
    }
    body.theme-ubuntu .graph-node-child {
      background: color-mix(in oklab, var(--card) 90%, #3d122c);
      border-color: color-mix(in oklab, var(--panel-strong) 84%, rgba(238, 138, 83, 0.22));
    }
    body.theme-ubuntu .graph-node-card.graph-node-measurement_run,
    body.theme-ubuntu .graph-node-child.graph-node-measurement_run,
    body.theme-ubuntu .graph-node-child.graph-node-measurement_column,
    body.theme-ubuntu .graph-node-child.graph-node-measurement_series {
      background: color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-measurement)) 18%, var(--card));
    }
    body.theme-ubuntu .graph-node-card.graph-node-script,
    body.theme-ubuntu .graph-node-child.graph-node-script {
      background: color-mix(in oklab, var(--graph-node-accent-script) 18%, var(--card));
    }
    body.theme-ubuntu .graph-node-card.graph-node-asset,
    body.theme-ubuntu .graph-node-child.graph-node-asset {
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 18%, var(--card));
    }
    body.theme-ubuntu .graph-node-card.graph-node-figure,
    body.theme-ubuntu .graph-node-child.graph-node-figure {
      background: color-mix(in oklab, var(--graph-node-accent-figure) 18%, var(--card));
    }
    body.theme-ubuntu .graph-node-card.graph-node-dataset,
    body.theme-ubuntu .graph-node-card.graph-node-dataset_version,
    body.theme-ubuntu .graph-node-child.graph-node-dataset,
    body.theme-ubuntu .graph-node-child.graph-node-dataset_version {
      background: color-mix(in oklab, #a27764 20%, var(--card));
    }
    body.theme-paper {
      --bg: #f1e8d8;
      --panel: rgba(120, 90, 56, 0.1);
      --panel-strong: rgba(122, 91, 58, 0.24);
      --text: #2f2418;
      --muted: #6d5a46;
      --brand: #8d6843;
      --card: #fbf4e6;
      --shadow: 0 4px 18px rgba(92, 68, 43, 0.15);
      --graph-node-accent-measurement: #8f9a7c;
      --graph-node-accent-script: #a2856e;
      --graph-node-accent-figure: #b98958;
      --graph-node-accent-experiment: #88a68b;
      --graph-node-accent-reference: #85b878;
      color-scheme: light;
    }
    body.theme-paper {
      background:
        radial-gradient(1000px 620px at -18% -22%, rgba(255, 255, 255, 0.54), transparent 66%),
        radial-gradient(920px 520px at 118% -16%, rgba(194, 156, 113, 0.2), transparent 64%),
        linear-gradient(180deg, #f5ede0 0%, #f1e8d8 52%, #ebe0cf 100%);
      background-attachment: fixed;
    }
    body.theme-paper header {
      background: color-mix(in oklab, var(--card) 92%, #fff6e9);
      border-bottom-color: color-mix(in oklab, var(--panel-strong) 80%, rgba(255, 255, 255, 0.45));
      box-shadow: 0 6px 20px rgba(96, 71, 43, 0.11);
    }
    body.theme-paper aside {
      background: color-mix(in oklab, var(--card) 92%, #fff8ec);
    }
    body.theme-paper .btn {
      background: color-mix(in oklab, var(--card) 88%, rgba(171, 133, 94, 0.08));
      border-color: color-mix(in oklab, var(--panel-strong) 84%, rgba(255, 255, 255, 0.42));
      transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
    }
    body.theme-paper .btn:hover {
      border-color: color-mix(in oklab, var(--brand) 62%, var(--panel-strong));
      background: color-mix(in oklab, var(--card) 74%, rgba(179, 132, 85, 0.18));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--brand) 24%, transparent);
    }
    body.theme-paper .btn.primary {
      background: linear-gradient(
        180deg,
        color-mix(in oklab, var(--brand) 20%, var(--card)),
        color-mix(in oklab, var(--brand) 12%, var(--card))
      );
      border-color: color-mix(in oklab, var(--brand) 56%, var(--panel-strong));
    }
    body.theme-paper .measurements-section {
      background: color-mix(in oklab, var(--graph-node-accent-measurement) 5%, var(--card));
      border-color: color-mix(in oklab, var(--graph-node-accent-measurement) 32%, var(--panel-strong));
    }
    body.theme-paper .measurement-card {
      background: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 12%, var(--card));
      border-color: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 38%, var(--panel-strong));
    }
    body.theme-paper .measurement-header {
      background: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 8%, var(--card));
    }
    body.theme-paper .measurement-card.expanded {
      background: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 16%, var(--card));
    }
    body.theme-paper .measurement-card.expanded .measurement-header {
      background: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 12%, var(--card));
    }
    body.theme-paper .project-assets-section-script {
      background: color-mix(in oklab, var(--graph-node-accent-script) 8%, var(--card));
      border-color: color-mix(in oklab, var(--graph-node-accent-script) 28%, var(--panel-strong));
    }
    body.theme-paper .project-assets-section-asset {
      background: color-mix(in oklab, var(--brand) 8%, var(--card));
      border-color: color-mix(in oklab, var(--brand) 28%, var(--panel-strong));
    }
    body.theme-paper .project-assets-section-figure {
      background: color-mix(in oklab, var(--graph-node-accent-figure) 8%, var(--card));
      border-color: color-mix(in oklab, var(--graph-node-accent-figure) 28%, var(--panel-strong));
    }
    body.theme-paper .project-assets-section-script .project-assets-list {
      background: color-mix(in oklab, var(--graph-node-accent-script) 6%, var(--card));
    }
    body.theme-paper .project-assets-section-asset .project-assets-list {
      background: color-mix(in oklab, var(--brand) 6%, var(--card));
    }
    body.theme-paper .project-assets-section-figure .project-assets-list {
      background: color-mix(in oklab, var(--graph-node-accent-figure) 6%, var(--card));
    }
    body.theme-paper .project-assets-section-script .project-asset-card {
      background: color-mix(in oklab, var(--graph-node-accent-script) 14%, var(--card));
    }
    body.theme-paper .project-assets-section-asset .project-asset-card {
      background: color-mix(in oklab, var(--brand) 14%, var(--card));
    }
    body.theme-paper .project-assets-section-figure .project-asset-card {
      background: color-mix(in oklab, var(--graph-node-accent-figure) 14%, var(--card));
    }
    body.theme-paper .graph-node-card {
      background: color-mix(in oklab, var(--card) 84%, #fff);
      border-color: color-mix(in oklab, var(--panel-strong) 80%, rgba(133, 102, 71, 0.2));
    }
    body.theme-paper .graph-node-child {
      background: color-mix(in oklab, var(--card) 90%, #fff);
      border-color: color-mix(in oklab, var(--panel-strong) 84%, rgba(133, 102, 71, 0.18));
    }
    body.theme-paper .graph-node-card.graph-node-measurement_run,
    body.theme-paper .graph-node-child.graph-node-measurement_run,
    body.theme-paper .graph-node-child.graph-node-measurement_column,
    body.theme-paper .graph-node-child.graph-node-measurement_series {
      background: color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-measurement)) 18%, var(--card));
    }
    body.theme-paper .graph-node-card.graph-node-script,
    body.theme-paper .graph-node-child.graph-node-script {
      background: color-mix(in oklab, var(--graph-node-accent-script) 18%, var(--card));
    }
    body.theme-paper .graph-node-card.graph-node-asset,
    body.theme-paper .graph-node-child.graph-node-asset {
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 18%, var(--card));
    }
    body.theme-paper .graph-node-card.graph-node-figure,
    body.theme-paper .graph-node-child.graph-node-figure {
      background: color-mix(in oklab, var(--graph-node-accent-figure) 18%, var(--card));
    }
    body.theme-paper .graph-node-card.graph-node-dataset,
    body.theme-paper .graph-node-card.graph-node-dataset_version,
    body.theme-paper .graph-node-child.graph-node-dataset,
    body.theme-paper .graph-node-child.graph-node-dataset_version {
      background: color-mix(in oklab, #e2d4be 22%, var(--card));
    }
    body.theme-dark-contrast {
      --bg: #090d14;
      --panel: rgba(255,255,255,.12);
      --panel-strong: rgba(200,217,255,.34);
      --text: #f1f6ff;
      --muted: #b8c6e6;
      --brand: #90c0ff;
      --card: #1b2638;
      --shadow: 0 2px 6px rgba(0,0,0,0.62);
      --graph-node-accent-measurement: #95b9dd;
      --graph-node-accent-script: #b39bd3;
      --graph-node-accent-figure: #d8b18d;
      --graph-node-accent-experiment: #8cc9b8;
      --graph-node-accent-reference: #82c27e;
      color-scheme: dark;
    }
    body.theme-dark .btn.danger,
    body.theme-ubuntu .btn.danger,
    body.theme-dark-contrast .btn.danger {
      color: #ff9898;
      border-color: rgba(255, 144, 144, 0.48);
      background: color-mix(in oklab, var(--card) 78%, rgba(255, 86, 86, 0.18));
    }
    body.theme-dark .btn.danger:hover,
    body.theme-ubuntu .btn.danger:hover,
    body.theme-dark-contrast .btn.danger:hover {
      border-color: rgba(255, 164, 164, 0.8);
      background: color-mix(in oklab, var(--card) 60%, rgba(255, 110, 110, 0.26));
      color: #ffc1c1;
    }
    body.theme-dark .btn-icon.danger:hover,
    body.theme-ubuntu .btn-icon.danger:hover,
    body.theme-dark-contrast .btn-icon.danger:hover,
    body.theme-dark .project-asset-action-delete:hover,
    body.theme-ubuntu .project-asset-action-delete:hover,
    body.theme-dark-contrast .project-asset-action-delete:hover {
      background: color-mix(in oklab, var(--card) 56%, rgba(255, 108, 108, 0.28));
      border-color: rgba(255, 170, 170, 0.6);
      color: #ffb4b4;
    }
    body.theme-dark .global-badge,
    body.theme-ubuntu .global-badge,
    body.theme-dark-contrast .global-badge {
      background: color-mix(in oklab, #43a047 22%, var(--card));
      color: #81c784;
    }
    body.theme-dark .role-badge.write,
    body.theme-ubuntu .role-badge.write,
    body.theme-dark-contrast .role-badge.write {
      background: color-mix(in oklab, var(--brand) 26%, var(--card));
      color: color-mix(in oklab, var(--brand) 84%, #fff);
    }
    body.theme-dark .role-badge.admin,
    body.theme-ubuntu .role-badge.admin,
    body.theme-dark-contrast .role-badge.admin {
      background: color-mix(in oklab, #c2185b 20%, var(--card));
      color: color-mix(in oklab, #f48fb1 76%, #fff);
    }
    body.theme-dark,
    body.theme-ubuntu,
    body.theme-dark-contrast {
      --code-token-comment: #93a4be;
      --code-token-keyword: #ffb86c;
      --code-token-string: #9fe48f;
      --code-token-number: #8ad7ff;
      --code-token-literal: #c8b7ff;
      --code-token-tag: #7ee787;
      --code-token-attr: #f2b8ff;
    }

    body {
      margin: 0;
      font-family: ui-monospace, "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", monospace;
      background:
        radial-gradient(1200px 640px at 6% -12%, color-mix(in oklab, var(--brand) 8%, transparent), transparent 62%),
        radial-gradient(920px 540px at 108% 4%, color-mix(in oklab, var(--panel-strong) 32%, transparent), transparent 66%),
        linear-gradient(180deg, color-mix(in oklab, var(--bg) 96%, white 4%) 0%, var(--bg) 100%);
      color: var(--text);
      overflow-x: hidden;
    }
    body.measurement-fullscreen-active { overflow: hidden; }
    body.measurement-fullscreen-active #app,
    body.measurement-fullscreen-active #details,
    body.measurement-fullscreen-active .measurement-card,
    body.measurement-fullscreen-active .measurement-details { overflow: visible; }
    body.measurement-fullscreen-active .measurement-card.expanded .measurement-details {
      animation: none;
      will-change: auto;
      transform: none;
    }
    header {
      position: sticky;
      top: 0;
      padding: 14px 20px;
      border-bottom: 1px solid color-mix(in oklab, var(--panel-strong) 72%, transparent);
      display:flex;
      justify-content:space-between;
      align-items:center;
      background: color-mix(in oklab, var(--bg) 78%, var(--card));
      backdrop-filter: blur(14px);
      box-shadow: 0 10px 28px rgba(13, 18, 40, 0.06);
      z-index: 40;
    }
    header strong { font-weight: 700; letter-spacing: 0.3px; }
    .header-actions { display: flex; align-items: center; gap: 8px; }
    .theme-select-wrap { position: relative; display: inline-flex; align-items: center; }
    .theme-select-wrap::after {
      content: "▾";
      position: absolute;
      right: 8px;
      font-size: 9px;
      color: var(--muted);
      pointer-events: none;
      line-height: 1;
    }
    .theme-select {
      min-width: 104px;
      padding: 4px 22px 4px 8px;
      border: 1px solid var(--panel-strong);
      border-radius: 6px;
      background: var(--card);
      color: var(--text);
      font-size: 11px;
      font-family: inherit;
      line-height: 1.3;
      cursor: pointer;
      appearance: none;
      -webkit-appearance: none;
      transition: border-color 0.15s, box-shadow 0.15s;
    }
    .theme-select:hover { border-color: var(--text); }
    .theme-select:focus {
      outline: none;
      border-color: var(--brand);
      box-shadow: 0 0 0 2px color-mix(in oklab, var(--brand) 28%, transparent);
    }
    main {
      display: grid;
      grid-template-columns: 296px minmax(0, 1fr);
      min-height: calc(100vh - 53px);
      gap: 18px;
      padding: 18px;
      box-sizing: border-box;
      overflow: hidden;
      transition: grid-template-columns 0.25s ease;
    }
    aside {
      border: 1px solid color-mix(in oklab, var(--panel-strong) 72%, transparent);
      border-radius: 16px;
      padding: 16px;
      background: color-mix(in oklab, var(--card) 94%, var(--panel));
      overflow-y: auto;
      overflow-x: hidden;
      transition: padding 0.25s ease, opacity 0.2s ease;
      min-width: 0;
      box-shadow: 0 12px 30px rgba(13, 18, 40, 0.06);
    }
    main.sidebar-collapsed { grid-template-columns: 0px 1fr; gap: 0; }
    main.sidebar-collapsed > aside { padding: 0; opacity: 0; pointer-events: none; border-right: none; }
    #details {
      overflow: auto;
      border: 1px solid color-mix(in oklab, var(--panel-strong) 68%, transparent);
      border-radius: 20px;
      background: color-mix(in oklab, var(--card) 96%, transparent);
      box-shadow: 0 16px 40px rgba(13, 18, 40, 0.07);
      padding: 22px !important;
    }
    #details.plot-mode {
      padding: 0 !important;
      overflow: hidden;
      border-radius: 16px;
      grid-column: 1 / -1;
    }
    #app:has(#details.plot-mode) aside,
    #app:has(#details.plot-mode) #sidebar-toggle {
      display: none !important;
    }

    /* Sidebar toggle */
    .sidebar-toggle {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      background: color-mix(in oklab, var(--card) 94%, var(--panel));
      border: 1px solid color-mix(in oklab, var(--panel-strong) 78%, transparent);
      border-radius: 999px;
      font-size: 12px;
      font-weight: 600;
      padding: 7px 12px;
      cursor: pointer;
      color: var(--text);
      font-family: inherit;
      transition: color 0.15s, border-color 0.15s, background 0.15s, box-shadow 0.15s;
      box-shadow: 0 8px 18px rgba(13, 18, 40, 0.06);
    }
    .sidebar-toggle:hover {
      border-color: var(--text);
      background: color-mix(in oklab, var(--panel) 52%, var(--card));
      box-shadow: 0 10px 22px rgba(13, 18, 40, 0.1);
    }
    .sidebar-toggle:focus-visible {
      outline: none;
      border-color: var(--text);
      box-shadow: 0 0 0 3px color-mix(in oklab, var(--brand) 18%, transparent);
    }
    .sidebar-toggle-icon {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 22px;
      height: 22px;
      border-radius: 999px;
      background: color-mix(in oklab, var(--panel) 78%, transparent);
      font-size: 13px;
      line-height: 1;
      flex-shrink: 0;
    }
    .sidebar-toggle-label {
      white-space: nowrap;
      letter-spacing: 0.01em;
    }
    .btn { padding: 8px 12px; cursor: pointer; border: 1px solid var(--panel-strong); border-radius: 6px; background: var(--card); font-family: inherit; font-size: 13px; color: var(--text); transition: border-color 0.15s; }
    .btn:hover { border-color: var(--text); }
    .btn.primary { font-weight: 600; border-color: var(--text); background: var(--panel); }
    .btn.danger { background: var(--card); color: #c62828; border-color: #ffcdd2; }
    .btn.danger:hover { border-color: #c62828; background: #fff5f5; }
    .btn.danger:disabled { opacity: 0.4; cursor: not-allowed; }
    .notes-header { display: flex; align-items: center; gap: 8px; margin-top: 0; margin-bottom: 6px; }
    .notes-header h3 { margin: 0; font-size: 14px; }

    /* Empty State */
    .empty-state { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 60px 20px; text-align: center; color: var(--muted); }
    .empty-state h2 { margin: 0 0 8px; color: var(--text); font-size: 16px; font-weight: 600; }
    .empty-state p { margin: 0; font-size: 12px; }

    /* Project Card - Mono theme */
    .project-card {
      background: color-mix(in oklab, var(--card) 97%, transparent);
      border: 1px solid color-mix(in oklab, var(--panel-strong) 70%, transparent);
      border-radius: 18px;
      margin-bottom: 24px;
      box-shadow: 0 14px 38px rgba(13, 18, 40, 0.07);
      overflow: hidden;
    }
    .project-card-header {
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
      gap: 18px;
      padding: 18px 22px 14px;
      border-bottom: 1px solid color-mix(in oklab, var(--panel-strong) 62%, transparent);
      background: color-mix(in oklab, var(--panel) 34%, var(--card));
    }
    .project-header-main { display: flex; flex: 1 1 auto; min-width: 0; flex-direction: column; gap: 10px; }
    .project-card-title { display: flex; flex: 1 1 auto; min-width: 0; flex-direction: column; gap: 2px; }
    .project-card-title h2 { margin: 0; font-size: 22px; font-weight: 700; letter-spacing: 0.2px; }
    .project-header-desc { font-size: 12px; line-height: 1.3; max-width: 72ch; word-break: break-word; margin-top: 1px; }
    .project-header-meta { font-size: 11px; line-height: 1.3; margin-top: 1px; }
    .project-header-badges { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 3px; min-height: 0; }
    .project-header-side { width: min(280px, 34vw); min-width: 220px; display: flex; flex-direction: column; align-items: stretch; gap: 8px; flex-shrink: 0; }
    .project-badge { font-size: 10px; font-weight: 600; letter-spacing: 1px; color: var(--muted); opacity: 0.7; }
    .project-card-body { padding: 20px 22px 24px; display: flex; flex-direction: column; gap: 24px; }
    /* Project Info Row */
    .project-info-row { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px; margin-bottom: 12px; }
    @media (max-width: 800px) { .project-info-row { grid-template-columns: 1fr; } }
    .project-info-item {
      padding: 12px 14px;
      background: color-mix(in oklab, var(--panel) 72%, var(--card));
      border: 1px solid color-mix(in oklab, var(--panel-strong) 62%, transparent);
      border-radius: 12px;
    }
    .project-info-content { }
    .project-info-label { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.5px; font-weight: 600; margin-bottom: 3px; }
    .project-info-value { font-size: 12px; color: var(--text); line-height: 1.4; word-break: break-word; }

    /* Project Notes Column */
    .project-notes-col {
      display: flex;
      flex-direction: column;
      background: color-mix(in oklab, var(--panel) 58%, var(--card));
      border: 1px solid color-mix(in oklab, var(--panel-strong) 58%, transparent);
      border-radius: 12px;
      padding: 8px 12px 10px;
    }
    .project-notes-col-compact { padding: 4px 10px 5px; }
    .project-notes-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      min-height: 20px;
      margin-bottom: 1px;
      padding: 0;
      border: none;
      background: transparent;
    }
    #project-notes-toggle { min-height: 20px; padding: 1px 4px; align-items: center; }
    #project-notes-toggle .project-notes-title { display: inline-flex; align-items: center; line-height: 1; }
    .project-notes-title { font-size: 11px; font-weight: 700; color: var(--text); text-transform: none; letter-spacing: 0.2px; }
    .project-notes-area {
      width: 100%;
      flex: 1;
      min-height: 96px;
      padding: 6px 4px 4px;
      box-sizing: border-box;
      border: none;
      border-radius: 0;
      font-size: 12px;
      font-family: inherit;
      resize: vertical;
      background: transparent;
      transition: box-shadow 0.2s;
      line-height: 1.6;
    }
    .project-notes-area:hover { box-shadow: none; }
    .project-notes-area:focus { outline: none; box-shadow: none; }
    .project-notes-area::placeholder { color: var(--muted); opacity: 0.7; }

    /* Collapsible notes toggle */
    .notes-toggle-btn { background: none; border: none; cursor: pointer; font-size: 9px; color: var(--muted); padding: 1px 4px; min-height: 20px; border-radius: 3px; font-family: inherit; display: inline-flex; align-items: center; gap: 6px; transition: color 0.15s, background 0.15s; }
    .notes-toggle-btn:hover { color: var(--text); background: var(--panel); }
    .notes-toggle-chevron { display: inline-block; font-size: 13px; line-height: 1; transition: transform 0.15s ease; }
    .notes-body { overflow: hidden; transition: max-height 0.25s ease, opacity 0.2s ease; }
    .notes-body.collapsed { max-height: 0 !important; opacity: 0; pointer-events: none; }

    /* Measurements Section */
    .measurements-section {
      background: var(--card);
      border: 1px solid color-mix(in oklab, var(--panel-strong) 70%, transparent);
      border-radius: 16px;
      box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2);
      padding: 0;
      overflow: hidden;
    }
    .measurements-section-header,
    .project-assets-header {
      min-height: 44px;
      flex-shrink: 0;
      box-sizing: border-box;
      display: flex;
      align-items: center;
      margin-bottom: 0;
      padding: 0 16px;
      border-bottom: 1px solid color-mix(in oklab, var(--panel-strong) 50%, transparent);
      background: color-mix(in oklab, var(--panel) 58%, var(--card));
    }
    .measurements-section.section-collapsed .measurements-section-header,
    .project-assets-section.section-collapsed .project-assets-header {
      min-height: 44px;
      cursor: pointer;
    }
    .measurements-section-title {
      flex: 1 1 auto;
      min-width: 0;
      display: flex;
      align-items: center;
      gap: 8px;
    }
    .project-section-header-actions {
      display: inline-flex;
      align-items: center;
      justify-content: flex-end;
      gap: 8px;
      min-width: 0;
      flex-shrink: 0;
    }
    .measurement-badge {
      font-size: 12px;
      font-weight: 700;
      letter-spacing: 0.55px;
      text-transform: uppercase;
      color: color-mix(in oklab, var(--text) 66%, transparent);
      background: none;
      padding: 0;
      border: none;
      box-shadow: none;
      line-height: 1;
    }
    .measurement-badge-measurement {
      color: color-mix(in oklab, var(--graph-node-accent-measurement) 72%, var(--text));
    }
    .measurement-badge-script {
      color: color-mix(in oklab, var(--graph-node-accent-script) 74%, var(--text));
    }
    .measurement-badge-figure {
      color: color-mix(in oklab, var(--graph-node-accent-figure) 74%, var(--text));
    }
    .measurement-badge-asset {
      color: color-mix(in oklab, var(--brand) 74%, var(--text));
    }
    .measurement-badge-experiment {
      color: color-mix(in oklab, var(--graph-node-accent-experiment) 74%, var(--text));
    }
    .measurement-badge-reference {
      color: color-mix(in oklab, var(--graph-node-accent-reference) 74%, var(--text));
    }
    .measurements-count {
      font-size: 11px;
      font-weight: 600;
      color: color-mix(in oklab, var(--text) 66%, transparent);
      white-space: nowrap;
    }
    .project-section-toggle-btn {
      width: 22px;
      height: 22px;
      min-width: 22px;
      min-height: 22px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      padding: 0;
      border: 1px solid color-mix(in oklab, var(--panel-strong) 58%, transparent);
      border-radius: 999px;
      background: color-mix(in oklab, var(--panel) 68%, var(--card));
      color: color-mix(in oklab, var(--text) 68%, var(--muted));
      cursor: pointer;
      transition: border-color 0.15s, background-color 0.15s, color 0.15s;
    }
    .project-section-toggle-btn:hover {
      color: var(--text);
      background: color-mix(in oklab, var(--panel) 92%, transparent);
      border-color: color-mix(in oklab, var(--panel-strong) 82%, transparent);
    }
    .project-section-body.collapsed {
      display: none;
    }
    .section-collapsed .project-section-open-only {
      display: none;
    }
    .btn-measurement-new {
      width: 18px;
      height: 18px;
      min-width: 18px;
      min-height: 18px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      padding: 0;
      border: 1px solid color-mix(in oklab, var(--panel-strong) 62%, transparent);
      border-radius: 999px;
      background: color-mix(in oklab, var(--panel) 62%, var(--card));
      color: color-mix(in oklab, var(--text) 64%, var(--muted));
      font-size: 12px;
      line-height: 1;
      font-family: inherit;
      cursor: pointer;
      transition: border-color 0.15s, color 0.15s, background-color 0.15s;
    }
    .btn-measurement-new:hover {
      border-color: color-mix(in oklab, var(--brand) 62%, var(--panel-strong));
      color: color-mix(in oklab, var(--brand) 74%, var(--text));
      background: color-mix(in oklab, var(--panel) 78%, transparent);
    }
    .project-assets-grid { display: block; }
    .project-assets-supersection {
      display: flex;
      flex-direction: column;
      gap: 14px;
    }
    .project-assets-supersection-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      padding: 0 2px;
    }
    .project-assets-supersection-actions,
    .project-assets-subgroup-actions,
    .project-asset-bucket-actions {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap;
    }
    .project-assets-browser {
      min-height: 520px;
      height: min(74vh, 980px);
      max-height: min(74vh, 980px);
      border: 1px solid color-mix(in oklab, var(--panel-strong) 62%, transparent);
      border-radius: 16px;
      background: color-mix(in oklab, var(--panel) 44%, var(--card));
    }
    .project-assets-entry-browser {
      min-height: 460px;
      height: min(68vh, 900px);
      max-height: min(68vh, 900px);
    }
    .project-assets-browser-main {
      flex: 1.25;
      min-width: 0;
      padding: 16px;
      overflow: auto;
      display: flex;
      flex-direction: column;
      gap: 18px;
    }
    .project-assets-section {
      background: var(--card);
      border: 1px solid color-mix(in oklab, var(--panel-strong) 70%, transparent);
      border-radius: 16px;
      box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18);
      padding: 0;
      overflow: hidden;
      transition: border-color 0.16s ease, box-shadow 0.16s ease, background-color 0.16s ease;
    }
    .project-assets-section.project-assets-drop-active {
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--brand) 32%, var(--panel-strong)), 0 6px 14px rgba(13, 18, 40, 0.12);
    }
    .project-assets-section-asset {
      background: color-mix(in oklab, var(--brand) 3%, var(--card));
      border-color: color-mix(in oklab, var(--brand) 20%, var(--panel-strong));
    }
    .project-assets-section-asset.project-assets-drop-active {
      border-color: color-mix(in oklab, var(--brand) 64%, var(--panel-strong));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--brand) 44%, var(--panel-strong)), 0 6px 14px rgba(13, 18, 40, 0.12);
    }
    .project-assets-section-script.project-assets-drop-active {
      border-color: color-mix(in oklab, var(--graph-node-accent-script) 64%, var(--panel-strong));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--graph-node-accent-script) 44%, var(--panel-strong)), 0 6px 14px rgba(13, 18, 40, 0.12);
    }
    .project-assets-section-figure.project-assets-drop-active {
      border-color: color-mix(in oklab, var(--graph-node-accent-figure) 64%, var(--panel-strong));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--graph-node-accent-figure) 44%, var(--panel-strong)), 0 6px 14px rgba(13, 18, 40, 0.12);
    }
    .project-assets-section-experiment.project-assets-drop-active {
      border-color: color-mix(in oklab, var(--graph-node-accent-experiment) 64%, var(--panel-strong));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--graph-node-accent-experiment) 44%, var(--panel-strong)), 0 6px 14px rgba(13, 18, 40, 0.12);
    }
    .project-assets-section.project-assets-drop-active .project-assets-list {
      background: color-mix(in oklab, var(--brand) 7%, var(--card));
    }
    .project-assets-section-asset.project-assets-drop-active .project-assets-list {
      background: color-mix(in oklab, var(--brand) 10%, var(--card));
    }
    .project-assets-section-script.project-assets-drop-active .project-assets-list {
      background: color-mix(in oklab, var(--graph-node-accent-script) 10%, var(--card));
    }
    .project-assets-section-figure.project-assets-drop-active .project-assets-list {
      background: color-mix(in oklab, var(--graph-node-accent-figure) 10%, var(--card));
    }
    .project-assets-section-experiment.project-assets-drop-active .project-assets-list {
      background: color-mix(in oklab, var(--graph-node-accent-experiment) 10%, var(--card));
    }
    .project-assets-list { display: flex; flex-direction: column; gap: 12px; max-height: 360px; overflow-y: auto; padding: 14px 14px 18px; }
    .project-assets-entry-list { max-height: none; overflow: visible; }
    .project-assets-entry-list-pane .project-assets-list,
    .project-assets-browser-main .project-assets-list { max-height: none; overflow: visible; flex-shrink: 0; }
    .project-assets-workspace {
      display: grid;
      grid-template-columns: 240px minmax(0, 1fr);
      height: min(74vh, 980px);
      min-height: min(74vh, 980px);
      max-height: min(74vh, 980px);
      overflow: hidden;
    }
    .project-assets-workspace-empty {
      display: flex;
      align-items: center;
      justify-content: center;
      padding: 28px 20px;
      min-height: 220px;
    }
    .project-assets-entry-rail {
      border-right: 1px solid color-mix(in oklab, var(--panel-strong) 60%, transparent);
      background: color-mix(in oklab, var(--panel) 62%, var(--card));
      min-width: 0;
      overflow-x: hidden;
      overflow-y: auto;
      padding: 12px;
    }
    .project-assets-entry-rail.project-assets-entry-rail-drop-active {
      background: color-mix(in oklab, var(--brand) 7%, var(--panel));
      box-shadow: inset 0 0 0 2px color-mix(in oklab, var(--brand) 28%, var(--panel-strong));
    }
    .project-assets-entry-rail-list {
      display: flex;
      flex-direction: column;
      gap: 8px;
    }
    .project-asset-entry-tab {
      width: 100%;
      max-width: 100%;
      box-sizing: border-box;
      text-align: left;
      font: inherit;
      appearance: none;
      padding: 10px 12px;
      border: 1px solid color-mix(in oklab, var(--panel-strong) 76%, transparent);
      border-left-width: 3px;
      border-left-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 72%, var(--panel-strong));
      border-radius: 8px;
      background: color-mix(in oklab, var(--card) 90%, var(--panel));
      color: inherit;
      cursor: pointer;
      display: flex;
      flex-direction: column;
      gap: 6px;
      overflow: hidden;
      transition: border-color 0.16s ease, background-color 0.16s ease, box-shadow 0.16s ease, transform 0.16s ease;
    }
    .project-asset-entry-tab:hover {
      transform: translateY(-1px);
      border-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 44%, var(--panel-strong));
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 7%, var(--card));
    }
    .project-asset-entry-tab-active {
      border-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 56%, var(--panel-strong));
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 10%, var(--card));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 22%, var(--panel-strong));
    }
    .project-asset-entry-tab-drop-target {
      border-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 62%, var(--panel-strong));
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 12%, var(--card));
      box-shadow: 0 0 0 2px color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 24%, var(--panel-strong));
      transform: none;
    }
    .project-asset-entry-tab.project-asset-entry-tab-drop-target > * {
      pointer-events: none;
    }
    .project-asset-entry-tab-top {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      min-width: 0;
    }
    .project-asset-entry-tab-title {
      display: flex;
      align-items: center;
      gap: 8px;
      min-width: 0;
      flex: 1 1 auto;
    }
    .project-asset-entry-tab-name {
      min-width: 0;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
      font-size: 13px;
      font-weight: 700;
    }
    .project-asset-entry-tab-count {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-width: 22px;
      height: 22px;
      padding: 0 6px;
      border-radius: 999px;
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 16%, var(--card));
      border: 1px solid color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 28%, var(--panel-strong));
      font-size: 11px;
      font-weight: 700;
      flex-shrink: 0;
    }
    .project-asset-entry-tab-meta {
      font-size: 11px;
      line-height: 1.35;
      color: var(--muted);
    }
    .project-asset-entry-tab-meta strong {
      color: color-mix(in oklab, var(--text) 76%, var(--muted));
      font-weight: 700;
    }
    .project-asset-entry-tab-actions {
      display: inline-flex;
      align-items: center;
      gap: 3px;
      flex-shrink: 0;
      margin-left: auto;
    }
    .project-asset-entry-tab-action {
      width: 19px;
      height: 19px;
      padding: 0;
      border: 1px solid color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 18%, var(--panel-strong));
      border-radius: 6px;
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 5%, var(--card));
      color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 42%, var(--muted));
      display: inline-flex;
      align-items: center;
      justify-content: center;
      cursor: pointer;
      transition: border-color 0.15s ease, background-color 0.15s ease, color 0.15s ease, transform 0.15s ease;
    }
    .project-asset-entry-tab-action .project-asset-action-icon {
      width: 11px;
      height: 11px;
    }
    .project-asset-entry-tab-action:hover,
    .project-asset-entry-tab-action:focus-visible {
      border-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 32%, var(--panel-strong));
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 9%, var(--card));
      color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 70%, var(--text));
      transform: translateY(-1px);
      outline: none;
    }
    .project-asset-entry-tab-action-delete {
      color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 34%, var(--muted));
    }
    .project-asset-entry-tab-action-delete:hover,
    .project-asset-entry-tab-action-delete:focus-visible {
      border-color: color-mix(in oklab, #b45454 28%, var(--panel-strong));
      background: color-mix(in oklab, #b45454 7%, var(--card));
      color: color-mix(in oklab, #b45454 74%, var(--text));
    }
    .asset-subgroup-color-picker-popup {
      position: absolute;
      z-index: 9999;
      background: var(--card);
      border: 1px solid var(--panel-strong);
      border-radius: 10px;
      box-shadow: 0 6px 24px rgba(0,0,0,0.18);
      padding: 10px;
      width: 200px;
    }
    .asset-subgroup-color-picker-swatches {
      display: grid;
      grid-template-columns: repeat(6, 1fr);
      gap: 6px;
      margin-bottom: 8px;
    }
    .asset-subgroup-color-swatch {
      width: 100%;
      aspect-ratio: 1;
      border-radius: 50%;
      border: 2px solid transparent;
      cursor: pointer;
      padding: 0;
      transition: transform 0.1s, border-color 0.1s;
    }
    .asset-subgroup-color-swatch:hover { transform: scale(1.15); }
    .asset-subgroup-color-swatch-active { border-color: var(--text); }
    .asset-subgroup-color-picker-footer {
      display: flex;
      align-items: center;
      gap: 8px;
    }
    .asset-subgroup-color-custom-label {
      display: flex;
      align-items: center;
      gap: 6px;
      font-size: 12px;
      color: var(--muted);
      cursor: pointer;
      flex: 1;
    }
    .asset-subgroup-color-custom-input {
      width: 28px;
      height: 22px;
      border: 1px solid var(--panel-strong);
      border-radius: 4px;
      padding: 1px;
      cursor: pointer;
      background: none;
    }
    .asset-subgroup-color-reset-btn {
      font-size: 11px;
      padding: 3px 8px;
      height: auto;
    }
    .project-asset-entry-tab-create {
      border-style: dashed;
      justify-content: center;
      min-height: 76px;
      border-color: color-mix(in oklab, var(--panel-strong) 36%, transparent);
      background: color-mix(in oklab, var(--panel) 22%, transparent);
      color: color-mix(in oklab, var(--text) 56%, var(--muted));
      box-shadow: none;
    }
    .project-asset-entry-tab-create .project-asset-entry-tab-top {
      justify-content: flex-start;
    }
    .project-asset-entry-tab-create .project-asset-entry-tab-meta {
      padding-left: 34px;
    }
    .project-asset-entry-tab-create:hover,
    .project-asset-entry-tab-create:focus-visible {
      border-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 18%, var(--panel-strong));
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 3%, transparent);
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 8%, var(--panel-strong));
      transform: translateY(-1px);
    }
    .project-asset-create-tile-icon {
      width: 24px;
      height: 24px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      border-radius: 7px;
      background: color-mix(in oklab, var(--panel-strong) 14%, transparent);
      color: color-mix(in oklab, var(--text) 42%, var(--muted));
      flex-shrink: 0;
    }
    .project-asset-create-tile-icon .project-asset-action-icon {
      width: 16px;
      height: 16px;
    }
    .project-assets-entry-main {
      min-width: 0;
      min-height: 0;
      overflow: hidden;
      display: flex;
      flex-direction: column;
      background: color-mix(in oklab, var(--panel) 58%, var(--card));
    }
    .project-assets-entry-main-empty {
      align-items: center;
      justify-content: center;
      padding: 20px;
    }
    .project-asset-entry-header {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 14px;
      padding: 14px 16px 12px;
      border-bottom: 1px solid color-mix(in oklab, var(--panel-strong) 72%, transparent);
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 6%, var(--card));
    }
    .project-asset-entry-title-block {
      min-width: 0;
      display: flex;
      flex-direction: column;
      gap: 6px;
    }
    .project-asset-entry-heading-row {
      display: flex;
      align-items: center;
      gap: 10px;
      min-width: 0;
      flex-wrap: wrap;
    }
    .project-asset-entry-title {
      margin: 0;
      font-size: 17px;
      line-height: 1.2;
    }
    .project-asset-entry-meta {
      font-size: 12px;
      color: var(--muted);
    }
    .project-asset-entry-empty-state {
      display: grid;
      gap: 8px;
      width: min(100%, 420px);
      padding: 24px 22px;
      border: 1px dashed color-mix(in oklab, var(--panel-strong) 76%, transparent);
      border-radius: 12px;
      background: color-mix(in oklab, var(--panel) 70%, var(--card));
      text-align: center;
    }
    .project-asset-entry-empty-title {
      margin: 0;
      font-size: 19px;
      line-height: 1.2;
    }
    .project-asset-entry-empty-copy {
      margin: 0;
      color: var(--muted);
      font-size: 13px;
      line-height: 1.45;
    }
    .project-assets-entry-panels {
      min-height: 0;
      flex: 1;
      display: flex;
      align-items: stretch;
    }
    .project-assets-entry-list-pane {
      flex: 0 0 auto;
      width: min(460px, 52%);
      max-width: calc(100% - 332px);
      min-width: 0;
      min-height: 0;
      display: flex;
      flex-direction: column;
      overflow-y: auto;
      container-type: inline-size;
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 4%, var(--card));
    }
    .project-assets-entry-resize-handle { width: 12px; min-width: 12px; }
    .project-assets-entry-list-pane.project-assets-entry-list-pane-drop-active {
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 12%, var(--card));
      box-shadow: inset 0 0 0 2px color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 40%, var(--panel-strong)), inset 0 0 0 999px color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 3%, transparent);
      border-radius: 12px;
    }
    .project-assets-entry-list-pane.project-assets-entry-list-pane-drop-active .project-assets-item-list {
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 6%, var(--card));
      border-radius: 10px;
    }
    .project-assets-subgroup-list { max-height: none; overflow: visible; padding: 14px 12px 16px; }
    .project-assets-item-list {
      gap: 6px;
      padding: 12px;
      min-height: 0;
      flex: 1;
      overflow: auto;
      position: relative;
      overscroll-behavior: contain;
    }
    .project-assets-item-list.project-assets-drop-active {
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 16%, var(--card));
      box-shadow: inset 0 0 0 2px color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 42%, var(--panel-strong)), inset 0 0 0 999px color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 4%, transparent);
      border-radius: 10px;
    }
    .project-assets-item-list.project-assets-drop-active .project-asset-inline-add-row {
      border-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 54%, var(--panel-strong));
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 10%, var(--card));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 24%, var(--panel-strong));
    }
    .project-assets-section-experiment .project-assets-list { max-height: none; overflow: visible; }
    .project-asset-card {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      padding: 12px 13px;
      border: 1px solid color-mix(in oklab, var(--panel-strong) 64%, transparent);
      border-radius: 12px;
      background: color-mix(in oklab, var(--card) 96%, var(--panel));
      box-shadow: 0 4px 14px rgba(13, 18, 40, 0.04);
      margin: 0;
    }
    .project-asset-card-selected {
      border-color: color-mix(in oklab, var(--brand) 56%, var(--panel-strong));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--brand) 18%, var(--panel-strong)), 0 8px 20px rgba(13, 18, 40, 0.05);
      background: color-mix(in oklab, var(--brand) 5%, var(--card));
    }
    .project-asset-card-clickable {
      cursor: pointer;
      transition: border-color 0.16s ease, background-color 0.16s ease, box-shadow 0.16s ease, transform 0.16s ease;
    }
    .project-asset-card-clickable:focus-visible {
      outline: 2px solid var(--text);
      outline-offset: 2px;
    }
    .project-assets-section-asset .project-asset-card-clickable:hover,
    .project-assets-section-asset .project-asset-card-clickable:focus-visible {
      border-color: color-mix(in oklab, var(--brand) 40%, var(--panel-strong));
      background: color-mix(in oklab, var(--brand) 7%, var(--card));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--brand) 18%, var(--panel-strong)), 0 8px 20px rgba(13, 18, 40, 0.05);
      transform: translateY(-1px);
    }
    .project-assets-section-script .project-asset-card-clickable:hover,
    .project-assets-section-script .project-asset-card-clickable:focus-visible {
      border-color: color-mix(in oklab, var(--graph-node-accent-script) 40%, var(--panel-strong));
      background: color-mix(in oklab, var(--graph-node-accent-script) 7%, var(--card));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--graph-node-accent-script) 18%, var(--panel-strong)), 0 8px 20px rgba(13, 18, 40, 0.05);
      transform: translateY(-1px);
    }
    .project-assets-section-figure .project-asset-card-clickable:hover,
    .project-assets-section-figure .project-asset-card-clickable:focus-visible {
      border-color: color-mix(in oklab, var(--graph-node-accent-figure) 40%, var(--panel-strong));
      background: color-mix(in oklab, var(--graph-node-accent-figure) 7%, var(--card));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--graph-node-accent-figure) 18%, var(--panel-strong)), 0 8px 20px rgba(13, 18, 40, 0.05);
      transform: translateY(-1px);
    }
    .project-assets-section-script .project-asset-card {
      border-left-width: 3px;
      border-left-color: color-mix(in oklab, var(--graph-node-accent-script) 86%, var(--panel-strong));
    }
    .project-assets-section-asset .project-asset-card {
      border-left-width: 3px;
      border-left-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 82%, var(--panel-strong));
    }
    .project-assets-subgroup-list .project-asset-card {
      margin: 0;
    }
    .project-asset-row {
      margin: 0;
      padding: 8px 10px;
      border-radius: 8px;
      box-shadow: none;
      align-items: center;
      user-select: none;
      -webkit-user-select: none;
    }
    .project-asset-row-drag-source {
      opacity: 0.46;
      border-style: dashed;
      box-shadow: none;
    }
    .project-asset-row-swapping {
      z-index: 2;
    }
    .project-asset-drag-proxy {
      position: fixed;
      z-index: 1200;
      pointer-events: none;
      margin: 0;
      opacity: 0.96;
      transform: rotate(-1deg);
      box-shadow: 0 20px 46px rgba(13, 18, 40, 0.22), 0 6px 16px rgba(13, 18, 40, 0.14);
    }
    .project-asset-drop-indicator {
      position: absolute;
      left: 12px;
      right: 12px;
      height: 3px;
      border-radius: 999px;
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 80%, white);
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 26%, var(--panel-strong));
      pointer-events: none;
    }
    .project-assets-section-asset .project-asset-card-clickable:hover,
    .project-assets-section-asset .project-asset-card-clickable:focus-visible {
      border-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 42%, var(--panel-strong));
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 7%, var(--card));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 18%, var(--panel-strong)), 0 8px 20px rgba(13, 18, 40, 0.05);
      transform: translateY(-1px);
    }
    .project-asset-card-selected {
      border-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 58%, var(--panel-strong));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 18%, var(--panel-strong)), 0 8px 20px rgba(13, 18, 40, 0.05);
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 5%, var(--card));
    }
    .project-asset-subgroup-card {
      flex-direction: column;
      align-items: stretch;
      gap: 8px;
      border-left-width: 4px;
      border-left-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 82%, var(--panel-strong));
    }
    .project-asset-subgroup-card:not(.project-asset-subgroup-card-expanded) {
      padding-bottom: 0;
    }
    .project-asset-subgroup-header {
      margin: -12px -12px 0;
      padding: 12px;
      border-radius: 6px;
      border: 1px solid transparent;
      cursor: pointer;
      transition: border-color 0.16s ease, background-color 0.16s ease;
    }
    .project-asset-subgroup-header:focus-visible {
      outline: 2px solid var(--text);
      outline-offset: 2px;
    }
    .project-asset-subgroup-card:hover .project-asset-subgroup-header {
      border-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 34%, var(--panel-strong));
    }
    .project-asset-subgroup-card-expanded .project-asset-subgroup-header {
      border-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 44%, var(--panel-strong));
      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 7%, var(--card));
    }
    .project-asset-subgroup-card-expanded {
      border-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 56%, var(--panel-strong));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 18%, var(--panel-strong)), 0 10px 24px rgba(13, 18, 40, 0.05);
    }
    .project-asset-subgroup-summary {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      padding: 0;
      border-radius: 6px;
    }
    .project-asset-subgroup-details {
      border-top: 1px dashed color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 30%, var(--panel-strong));
      padding-top: 8px;
      display: grid;
      gap: 10px;
    }
    .project-assets-section-body.collapsed {
      display: none;
    }
    .project-asset-entry-swatch {
      width: 10px;
      height: 10px;
      border-radius: 999px;
      background: var(--asset-entry-accent, var(--brand));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 34%, var(--panel-strong));
      flex-shrink: 0;
    }
    .project-asset-subgroup-toolbar {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 12px;
      flex-wrap: wrap;
    }
    .project-asset-subgroup-toolbar-title {
      display: flex;
      align-items: center;
      gap: 8px;
      min-width: 0;
    }
    .project-assets-section-figure .project-asset-card {
      border-left-width: 3px;
      border-left-color: color-mix(in oklab, var(--graph-node-accent-figure) 86%, var(--panel-strong));
    }
    .project-assets-empty {
      padding: 10px 12px;
      font-size: 12px;
    }
    .project-asset-bucket {
      border: 1px solid color-mix(in oklab, var(--panel-strong) 62%, transparent);
      border-radius: 12px;
      background: color-mix(in oklab, var(--panel) 24%, var(--card));
      overflow: hidden;
    }
    .project-asset-bucket-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      padding: 10px 12px;
      border-bottom: 1px solid color-mix(in oklab, var(--panel-strong) 72%, transparent);
      background: color-mix(in oklab, var(--panel) 44%, var(--card));
    }
    .project-asset-bucket-title-row {
      display: flex;
      align-items: center;
      gap: 8px;
      min-width: 0;
    }
    .project-asset-bucket-toggle {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 24px;
      height: 24px;
      padding: 0;
      border: 1px solid color-mix(in oklab, var(--panel-strong) 72%, transparent);
      border-radius: 4px;
      background: color-mix(in oklab, var(--panel) 82%, var(--card));
      color: inherit;
      cursor: pointer;
      flex-shrink: 0;
      transition: border-color 0.15s ease, background-color 0.15s ease;
    }
    .project-asset-bucket-toggle:hover {
      border-color: color-mix(in oklab, var(--brand) 42%, var(--panel-strong));
      background: color-mix(in oklab, var(--brand) 10%, var(--card));
    }
    .project-asset-bucket-toggle .column-chevron {
      pointer-events: none;
    }
    .project-asset-bucket-title {
      font-size: 12px;
      font-weight: 700;
      letter-spacing: 0.3px;
      text-transform: uppercase;
      color: color-mix(in oklab, var(--brand) 62%, var(--text));
    }
    .project-asset-bucket.project-asset-bucket-collapsed .project-asset-bucket-header {
      border-bottom: none;
    }
    .project-asset-bucket.project-asset-bucket-collapsed .project-asset-bucket-body {
      display: none;
    }
    .project-asset-bucket-body {
      display: flex;
      flex-direction: column;
      gap: 12px;
      padding: 12px 0 14px;
    }
    .project-asset-batch {
      display: flex;
      flex-direction: column;
      gap: 8px;
    }
    .project-asset-batch-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      padding: 0 12px;
    }
    .project-asset-batch-title {
      font-size: 12px;
      font-weight: 600;
      color: color-mix(in oklab, var(--text) 76%, var(--muted));
    }
    .project-asset-batch-list {
      display: flex;
      flex-direction: column;
      gap: 12px;
    }
    .project-asset-preview-pane {
      flex: 1 1 auto;
      min-width: 320px;
      border-left: none;
      background: color-mix(in oklab, var(--panel) 68%, var(--card));
      overflow: hidden;
      overscroll-behavior: contain;
      min-height: 0;
    }
    .project-assets-browser-divider {
      display: block;
      width: 1px;
      min-width: 1px;
      background: color-mix(in oklab, var(--panel-strong) 72%, transparent);
      cursor: default;
    }
    .project-asset-preview-panel {
      display: flex;
      flex-direction: column;
      flex: 1 1 auto;
      gap: 12px;
      height: auto;
      min-height: 0;
      padding: 16px;
      box-sizing: border-box;
      box-shadow: inset 3px 0 0 color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 74%, transparent);
    }
    .project-asset-preview-header {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 14px;
    }
    .project-asset-preview-title-block {
      min-width: 0;
      display: flex;
      flex-direction: column;
      gap: 8px;
    }
    .project-asset-preview-body-wrap {
      display: flex;
      flex-direction: column;
      flex: 1 1 0;
      min-height: 0;
      overflow: hidden;
      transition: opacity 0.12s ease;
    }
    .project-asset-preview-body-wrap.preview-body-loading {
      opacity: 0.32;
      pointer-events: none;
    }
    .asset-preview-body-inline {
      display: flex;
      flex: 1 1 auto;
      flex-direction: column;
      min-height: 0;
      max-height: none;
    }
    .project-assets-section-experiment .project-asset-card {
      border-left-width: 3px;
      border-left-color: color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 86%, var(--panel-strong));
    }
    .project-experiment-card {
      flex-direction: column;
      align-items: stretch;
      gap: 8px;
      border-color: color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 22%, var(--panel-strong));
      background: color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 3%, var(--card));
      transition: border-color 220ms cubic-bezier(0.22, 1, 0.36, 1), box-shadow 220ms cubic-bezier(0.22, 1, 0.36, 1), background-color 220ms cubic-bezier(0.22, 1, 0.36, 1);
      overflow: hidden;
    }
    .project-experiment-card:not(.project-experiment-card-expanded) {
      padding-bottom: 0;
    }
    .project-experiment-card:hover {
      border-color: color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 48%, var(--panel-strong));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 16%, var(--panel-strong)), 0 10px 22px rgba(13, 18, 40, 0.05);
    }
    .project-experiment-header {
      margin: -12px -12px 0;
      padding: 12px;
      border-radius: 10px 10px 0 0;
      border: 1px solid transparent;
      cursor: pointer;
      transition: border-color 0.16s ease, background-color 0.16s ease;
    }
    .project-experiment-header:focus-visible {
      outline: 2px solid var(--text);
      outline-offset: 2px;
    }
    .project-experiment-card:hover .project-experiment-header {
      border-color: color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 32%, var(--panel-strong));
    }
    .project-experiment-card-expanded .project-experiment-header {
      border-color: color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 42%, var(--panel-strong));
      background: color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 5%, var(--card));
    }
    .project-experiment-summary {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 10px;
      padding: 0;
      border-radius: 6px;
    }
    .project-experiment-toggle-btn {
      color: color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 70%, var(--text));
      border-color: color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 34%, var(--panel-strong));
      background: color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 10%, var(--card));
    }
    .project-experiment-toggle-btn:hover {
      border-color: color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 52%, var(--panel-strong));
      background: color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 14%, var(--card));
      color: color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 80%, var(--text));
    }
    .project-experiment-card-expanded {
      border-color: color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 54%, var(--panel-strong));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--experiment-entry-accent, var(--graph-node-accent-experiment)) 18%, var(--panel-strong)), 0 10px 24px rgba(13, 18, 40, 0.05);
    }
    .project-experiment-details {
      overflow: hidden;
      max-height: none;
      transform-origin: top;
      will-change: max-height, transform, opacity;
    }
    .project-experiment-card.project-experiment-card-expanded .project-experiment-details {
      animation: measurement-open 280ms cubic-bezier(0.22, 1, 0.36, 1);
    }
    .project-experiment-card.closing .project-experiment-details {
      animation: measurement-close 240ms cubic-bezier(0.4, 0, 0.2, 1) forwards;
      pointer-events: none;
    }
    .project-experiment-readonly {
      border-top: 1px dashed color-mix(in oklab, var(--graph-node-accent-experiment) 28%, var(--panel-strong));
      padding-top: 8px;
      display: grid;
      gap: 6px;
      font-size: 12px;
      color: var(--text);
      white-space: pre-wrap;
      word-break: break-word;
    }
    .project-experiment-editor {
      border-top: 1px dashed color-mix(in oklab, var(--graph-node-accent-experiment) 28%, var(--panel-strong));
      padding-top: 8px;
      display: grid;
      gap: 8px;
    }
    .project-experiment-editor label {
      margin: 0;
      font-size: 10px;
      font-weight: 600;
      letter-spacing: 0.4px;
      text-transform: uppercase;
      color: var(--muted);
    }
    .project-experiment-editor input,
    .project-experiment-editor textarea {
      width: 100%;
      box-sizing: border-box;
      border: 1px solid var(--panel-strong);
      border-radius: 6px;
      padding: 8px 10px;
      font-size: 12px;
      font-family: inherit;
      background: var(--card);
      color: var(--text);
    }
    .project-experiment-editor textarea {
      resize: vertical;
      min-height: 72px;
    }
    .project-experiment-editor-grid {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 10px 12px;
      align-items: start;
    }
    .project-experiment-editor-field,
    .project-experiment-readonly-field {
      min-width: 0;
      display: grid;
      gap: 6px;
      align-content: start;
      align-self: start;
    }
    .project-experiment-readonly-field-label {
      margin: 0;
      font-size: 10px;
      font-weight: 600;
      letter-spacing: 0.4px;
      text-transform: uppercase;
      color: var(--muted);
    }
    .project-experiment-readonly-field-value {
      font-size: 12px;
      color: var(--text);
      line-height: 1.35;
      white-space: pre-wrap;
      word-break: break-word;
      min-height: 1.35em;
    }
    .project-experiment-editor-actions {
      display: flex;
      align-items: center;
      justify-content: flex-end;
      gap: 8px;
    }
    .project-experiment-inline-status {
      margin-top: 0;
      margin-right: auto;
      min-height: 1.2em;
      font-size: 11px;
    }
    .project-experiment-evidence-block {
      border: 1px dashed color-mix(in oklab, var(--graph-node-accent-experiment) 30%, var(--panel-strong));
      border-radius: 6px;
      padding: 8px;
      display: grid;
      gap: 8px;
      background: color-mix(in oklab, var(--graph-node-accent-experiment) 4%, var(--card));
    }
    .project-experiment-evidence-block-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 8px;
      font-size: 11px;
      font-weight: 600;
      color: var(--muted);
      text-transform: uppercase;
      letter-spacing: 0.4px;
    }
    .project-experiment-evidence-list {
      display: grid;
      grid-template-columns: minmax(0, 1fr);
      gap: 10px;
      align-items: start;
      padding: 0 10px;
    }
    .project-experiment-evidence-row {
      border: 1px solid color-mix(in oklab, var(--graph-node-accent-experiment) 36%, var(--panel-strong));
      border-radius: 12px;
      padding: 11px 12px 10px;
      background: var(--card);
      box-shadow: 0 1px 0 color-mix(in oklab, var(--graph-node-accent-experiment) 24%, transparent), 0 8px 18px rgba(13, 18, 40, 0.07);
      display: grid;
      gap: 7px;
      align-content: start;
      position: relative;
      overflow: visible;
      cursor: default;
    }
    .project-experiment-evidence-row-body {
      display: grid;
      grid-template-columns: minmax(0, 1.4fr) minmax(220px, 0.95fr);
      gap: 16px;
      align-items: start;
    }
    .project-experiment-evidence-row-summary,
    .project-experiment-evidence-row-side {
      min-width: 0;
      display: grid;
      gap: 8px;
    }
    .project-experiment-evidence-row-side {
      align-content: start;
      justify-items: end;
      text-align: right;
    }
    .project-experiment-evidence-header {
      display: flex;
      align-items: start;
      justify-content: flex-start;
      gap: 0;
      min-width: 0;
    }
    .project-experiment-evidence-header-main {
      min-width: 0;
      width: 100%;
      display: grid;
      gap: 0;
    }
    .project-experiment-evidence-figure {
      border: 1px solid color-mix(in oklab, var(--graph-node-accent-figure) 42%, var(--panel-strong));
      border-radius: 10px;
      background: color-mix(in oklab, var(--graph-node-accent-figure) 10%, var(--card));
      overflow: hidden;
      min-height: 148px;
      display: flex;
      align-items: center;
      justify-content: center;
    }
    .project-experiment-evidence-figure-image {
      display: block;
      width: 100%;
      min-height: 148px;
      max-height: 228px;
      object-fit: contain;
      background: color-mix(in oklab, var(--panel) 56%, var(--card));
    }
    .project-experiment-evidence-figure-placeholder {
      font-size: 11px;
      color: var(--muted);
      padding: 10px;
      text-align: center;
    }
    .project-experiment-evidence-figure.error {
      border-color: color-mix(in oklab, #c62828 44%, var(--panel-strong));
      background: color-mix(in oklab, #c62828 8%, var(--card));
    }
    .project-experiment-evidence-measurement {
      border: 1px solid color-mix(in oklab, var(--graph-node-accent-measurement) 34%, var(--panel-strong));
      border-radius: 10px;
      background: color-mix(in oklab, var(--graph-node-accent-measurement) 6%, var(--card));
      overflow: hidden;
      min-height: 196px;
      display: grid;
      align-items: stretch;
    }
    .project-experiment-evidence-measurement-plot-wrap,
    .project-experiment-evidence-measurement-chart {
      display: grid;
      gap: 0;
      padding: 0;
    }
    .project-experiment-evidence-measurement-plot,
    .project-experiment-evidence-measurement-svg {
      display: block;
      width: 100%;
      height: 180px;
      border-radius: 0;
      background: transparent;
      border: 0;
    }
    .project-experiment-evidence-measurement-plot rect,
    .project-experiment-evidence-measurement-svg rect {
      fill: color-mix(in oklab, var(--card) 94%, var(--panel));
      stroke: color-mix(in oklab, var(--panel-strong) 68%, var(--graph-node-accent-measurement));
      stroke-width: 1;
    }
    .project-experiment-evidence-measurement-grid line {
      stroke: color-mix(in oklab, var(--graph-node-accent-measurement) 24%, var(--panel-strong));
      stroke-width: 1;
      vector-effect: non-scaling-stroke;
    }
    .project-experiment-evidence-measurement-axis line {
      stroke: color-mix(in oklab, var(--graph-node-accent-measurement) 58%, var(--panel-strong));
      stroke-width: 1;
      vector-effect: non-scaling-stroke;
    }
    .project-experiment-evidence-measurement-axis text {
      fill: color-mix(in oklab, var(--muted) 84%, var(--graph-node-accent-measurement));
      font-size: 12px;
      font-weight: 600;
      letter-spacing: 0.08px;
      user-select: none;
      -webkit-user-select: none;
    }
    .project-experiment-evidence-measurement-axis-title {
      fill: color-mix(in oklab, var(--text) 68%, var(--graph-node-accent-measurement));
      font-size: 13px;
      font-weight: 700;
      letter-spacing: 0.1px;
      user-select: none;
      -webkit-user-select: none;
    }
    .project-experiment-evidence-measurement-traces path {
      fill: none;
      stroke-width: 1.5;
      stroke-linecap: round;
      stroke-linejoin: round;
      opacity: 0.92;
      vector-effect: non-scaling-stroke;
    }
    .project-experiment-evidence-measurement-svg-large {
      height: 286px;
    }
    .project-experiment-evidence-measurement-svg-card {
      height: 196px;
    }
    .project-experiment-evidence-measurement-meta {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap;
      font-size: 10px;
      color: var(--muted);
      line-height: 1.2;
      padding: 0 10px 9px;
    }
    .project-experiment-evidence-measurement-submeta {
      color: color-mix(in oklab, var(--muted) 84%, var(--graph-node-accent-measurement));
      font-weight: 600;
    }
    .project-experiment-evidence-measurement-placeholder {
      font-size: 11px;
      color: var(--muted);
      display: flex;
      align-items: center;
      justify-content: center;
      text-align: center;
      min-height: 196px;
      padding: 10px;
    }
    .project-experiment-evidence-measurement.error {
      border-color: color-mix(in oklab, #c62828 44%, var(--panel-strong));
      background: color-mix(in oklab, #c62828 8%, var(--card));
    }
    .project-experiment-evidence-script {
      border: 1px solid color-mix(in oklab, var(--graph-node-accent-script) 40%, var(--panel-strong));
      border-radius: 10px;
      background: color-mix(in oklab, var(--graph-node-accent-script) 10%, var(--card));
      min-height: 108px;
      display: grid;
      grid-template-columns: auto minmax(0, 1fr);
      align-items: center;
      gap: 10px;
      padding: 12px;
    }
    .project-experiment-evidence-script-icon {
      width: 38px;
      height: 38px;
      border-radius: 10px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      background: color-mix(in oklab, var(--graph-node-accent-script) 18%, var(--card));
      color: color-mix(in oklab, var(--graph-node-accent-script) 58%, var(--text));
      font-size: 14px;
      font-weight: 700;
      font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
    }
    .project-experiment-evidence-script-body {
      min-width: 0;
      display: grid;
      gap: 4px;
    }
    .project-experiment-evidence-script-filename {
      font-size: 13px;
      font-weight: 700;
      color: var(--text);
      word-break: break-word;
      font-family: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;
    }
    .project-experiment-evidence-script-copy {
      font-size: 11px;
      color: var(--muted);
    }
    .project-experiment-evidence-source {
      margin: 0;
      padding: 0;
      border: 0;
      background: transparent;
      text-align: left;
      font-family: inherit;
      font-size: 13px;
      font-weight: 700;
      color: var(--text);
      line-height: 1.3;
      word-break: break-word;
    }
    .project-experiment-evidence-link {
      margin: 0;
      padding: 0;
      border: 0;
      background: transparent;
      text-align: left;
      font-family: inherit;
      font-size: 13px;
      font-weight: 700;
      color: var(--text);
      line-height: 1.3;
      cursor: pointer;
      text-decoration: none;
      width: 100%;
      max-width: 100%;
      word-break: break-word;
    }
    .project-experiment-evidence-link:hover {
      color: color-mix(in oklab, var(--brand) 32%, var(--text));
    }
    .project-experiment-evidence-description {
      font-size: 12px;
      color: color-mix(in oklab, var(--text) 90%, var(--muted));
      white-space: pre-wrap;
      word-break: break-word;
      line-height: 1.35;
    }
    .project-experiment-evidence-note-block {
      min-width: 0;
      display: grid;
      gap: 4px;
    }
    .project-experiment-evidence-meta {
      min-width: 0;
      display: grid;
      gap: 4px;
      justify-items: end;
    }
    .project-experiment-evidence-meta-line {
      font-size: 11px;
      color: color-mix(in oklab, var(--text) 88%, var(--muted));
      line-height: 1.35;
      max-width: 100%;
      word-break: break-word;
    }
    .project-experiment-evidence-actions {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      justify-content: flex-end;
      gap: 6px;
    }
    .project-experiment-evidence-meta-line strong {
      font-weight: 700;
    }
    .project-experiment-evidence-comment-label {
      margin: 0;
      font-size: 11px;
      font-weight: 600;
      letter-spacing: 0.08px;
      text-transform: none;
      color: color-mix(in oklab, var(--text) 76%, var(--muted));
    }
    .project-experiment-evidence-note {
      font-size: 12px;
      color: var(--text);
      white-space: pre-wrap;
      word-break: break-word;
      line-height: 1.35;
      min-height: 1.35em;
    }
    .project-experiment-evidence-empty {
      font-size: 12px;
      padding: 2px 0;
      grid-column: 1 / -1;
    }
    .project-experiment-evidence-row textarea {
      min-height: 62px;
      resize: vertical;
    }
    .project-automation-overlay {
      position: fixed;
      inset: 0;
      display: flex;
      align-items: center;
      justify-content: center;
      background: rgba(84, 88, 96, 0.46);
      backdrop-filter: grayscale(0.22) blur(2px);
      opacity: 0;
      pointer-events: auto;
      transition: opacity 160ms ease;
      z-index: 180;
    }
    .project-automation-overlay-visible {
      opacity: 1;
    }
    .project-automation-overlay-hiding {
      opacity: 0;
    }
    .project-automation-overlay-card {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      padding: 12px 16px;
      border-radius: 999px;
      background: color-mix(in oklab, var(--card) 84%, rgba(255,255,255,0.2));
      border: 1px solid color-mix(in oklab, var(--panel-strong) 74%, var(--text));
      box-shadow: 0 10px 28px rgba(11, 16, 33, 0.14);
      color: var(--text);
      font-size: 12px;
      font-weight: 600;
      letter-spacing: 0.12px;
    }
    .project-automation-overlay-spinner {
      width: 14px;
      height: 14px;
      border-radius: 999px;
      border: 2px solid color-mix(in oklab, var(--panel-strong) 80%, transparent);
      border-top-color: color-mix(in oklab, var(--text) 84%, var(--brand));
      animation: project-automation-spin 0.8s linear infinite;
      flex-shrink: 0;
    }
    @keyframes project-automation-spin {
      from { transform: rotate(0deg); }
      to { transform: rotate(360deg); }
    }
    .project-asset-main { min-width: 0; flex: 1; display: flex; flex-direction: column; justify-content: center; gap: 2px; }
    .project-asset-title-row { display: flex; align-items: center; gap: 8px; min-width: 0; }
    .project-asset-title { display: block; font-size: 14px; font-weight: 700; line-height: 1.3; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .project-asset-format-pill {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      height: 18px;
      padding: 0 6px;
      border-radius: 999px;
      border: 1px solid color-mix(in oklab, var(--panel-strong) 76%, transparent);
      background: color-mix(in oklab, var(--panel) 72%, var(--card));
      color: var(--muted);
      font-size: 10px;
      font-weight: 700;
      letter-spacing: 0.3px;
      flex-shrink: 0;
    }
    .project-asset-status-pill {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-height: 18px;
      padding: 0 7px;
      border-radius: 999px;
      font-size: 10px;
      font-weight: 700;
      letter-spacing: 0.2px;
      flex-shrink: 0;
    }
    .project-asset-status-pill-hidden {
      border: 1px solid color-mix(in oklab, #b7791f 42%, var(--panel-strong));
      background: color-mix(in oklab, #f6d79f 58%, var(--card));
      color: color-mix(in oklab, #6b4708 82%, var(--text));
    }
    .project-asset-mode { font-size: 10px; color: var(--muted); border: 1px solid var(--panel-strong); border-radius: 999px; padding: 1px 6px; text-transform: uppercase; letter-spacing: 0.4px; }
    .project-asset-meta { font-size: 11px; line-height: 1.3; word-break: break-word; }
    .project-asset-side,
    .project-experiment-header-side,
    .measurement-header-side {
      display: flex;
      flex-direction: column;
      align-items: flex-end;
      gap: 6px;
      flex-shrink: 0;
    }
    .project-asset-actions,
    .measurement-header-actions {
      display: flex;
      flex-wrap: wrap;
      align-items: center;
      justify-content: flex-end;
      gap: 6px;
    }
    .project-asset-action-btn {
      width: 28px;
      height: 28px;
      padding: 0;
      border: 1px solid var(--panel-strong);
      border-radius: 6px;
      background: color-mix(in oklab, var(--panel) 64%, var(--card));
      color: color-mix(in oklab, var(--text) 70%, var(--muted));
      display: inline-flex;
      align-items: center;
      justify-content: center;
      font-size: 14px;
      line-height: 1;
      transition: border-color 0.15s, color 0.15s, background-color 0.15s, transform 0.15s;
    }
    .project-asset-row .project-asset-title { font-size: 13px; }
    .project-asset-row .file-checkbox-hitbox {
      margin: -2px 0 -2px -2px;
      align-self: center;
    }
    .project-asset-row-draggable {
      cursor: grab;
      touch-action: none;
    }
    .project-asset-row .project-asset-meta {
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    .project-asset-row .project-asset-side {
      align-items: flex-end;
      gap: 3px;
      min-width: 0;
    }
    .project-asset-row-actions {
      flex-wrap: nowrap;
      flex-shrink: 0;
      align-self: center;
      margin-left: 6px;
    }
    .project-asset-row-date {
      display: flex;
      align-items: baseline;
      justify-content: flex-end;
      gap: 6px;
      font-size: 10px;
      line-height: 1.2;
      white-space: nowrap;
      color: color-mix(in oklab, var(--text) 70%, var(--muted));
    }
    .project-asset-inline-add-row {
      width: 100%;
      max-width: 100%;
      box-sizing: border-box;
      appearance: none;
      font: inherit;
      text-align: left;
      justify-content: flex-start;
      gap: 12px;
      padding: 12px;
      border-style: dashed;
      box-shadow: none;
      border-color: color-mix(in oklab, var(--panel-strong) 36%, transparent);
      background: transparent;
      color: color-mix(in oklab, var(--text) 56%, var(--muted));
      cursor: pointer;
      transition: border-color 0.16s ease, background-color 0.16s ease, box-shadow 0.16s ease, transform 0.16s ease;
    }
    .project-asset-inline-add-row:hover,
    .project-asset-inline-add-row:focus-visible {
      border-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 18%, var(--panel-strong));
      background: transparent;
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 8%, var(--panel-strong));
      transform: translateY(-1px);
      outline: none;
    }
    .project-asset-inline-add-copy {
      min-width: 0;
      display: flex;
      flex-direction: column;
      gap: 3px;
    }
    .project-asset-inline-add-title {
      font-size: 13px;
      font-weight: 700;
      line-height: 1.2;
    }
    .project-asset-inline-add-meta {
      font-size: 11px;
      line-height: 1.35;
      color: var(--muted);
    }
    .project-asset-row-date-label {
      font-size: 9px;
      font-weight: 700;
      letter-spacing: 0.28px;
      text-transform: uppercase;
      color: color-mix(in oklab, var(--text) 46%, var(--muted));
    }
    .project-asset-row-date-value {
      color: color-mix(in oklab, var(--text) 80%, var(--muted));
    }
    .project-asset-graph-toggle {
      color: color-mix(in oklab, var(--text) 70%, var(--muted));
    }
    .project-asset-graph-toggle:hover {
      color: var(--text);
      border-color: var(--panel-strong);
      background: var(--panel);
    }
    .project-asset-graph-toggle-off {
      color: color-mix(in oklab, var(--brand) 55%, var(--muted));
    }
    .project-asset-card-graph-excluded .project-asset-title {
      opacity: 0.72;
    }
    .project-asset-card-graph-excluded {
      border-color: color-mix(in oklab, #c6912c 42%, var(--panel-strong));
      background: color-mix(in oklab, #f4d18c 12%, var(--card));
      box-shadow: inset 0 0 0 1px color-mix(in oklab, #f0c96c 14%, transparent);
    }
    .project-asset-card-graph-excluded .project-asset-meta,
    .project-asset-card-graph-excluded .project-asset-row-date-value {
      color: color-mix(in oklab, var(--text) 66%, var(--muted));
    }
    body.project-asset-dragging-active {
      cursor: grabbing;
      user-select: none;
    }
    body.project-asset-dragging-active .project-asset-row-draggable {
      cursor: grabbing;
    }
    .project-asset-action-icon {
      width: 14px;
      height: 14px;
      display: block;
      pointer-events: none;
    }
    .project-asset-action-icon path,
    .project-asset-action-icon circle,
    .project-asset-action-icon line,
    .project-asset-action-icon polyline,
    .project-asset-action-icon rect {
      stroke: currentColor;
      stroke-width: 1.9;
      fill: none;
      stroke-linecap: round;
      stroke-linejoin: round;
    }
    .project-asset-action-btn:hover {
      transform: translateY(-1px);
      border-color: color-mix(in oklab, var(--brand) 46%, var(--panel-strong));
      background: color-mix(in oklab, var(--brand) 10%, var(--card));
      color: color-mix(in oklab, var(--brand) 62%, var(--text));
    }
    .project-asset-action-inspect:hover { color: color-mix(in oklab, var(--brand) 68%, var(--text)); }
    .project-asset-action-copy:hover { color: color-mix(in oklab, var(--brand) 64%, var(--text)); }
    .project-asset-action-edit:hover { color: color-mix(in oklab, var(--brand-3) 62%, var(--text)); }
    .project-asset-action-upload:hover { color: color-mix(in oklab, var(--brand-2) 64%, var(--text)); }
    .project-asset-action-download:hover { color: color-mix(in oklab, var(--brand) 72%, var(--text)); }
    .project-asset-action-delete {
      color: #b54a4a;
      border-color: #e8c2c2;
      background: color-mix(in oklab, #fff5f5 72%, var(--card));
    }
    .project-asset-action-delete:hover {
      border-color: #ce8c8c;
      background: #fff1f1;
      color: #9f2e2e;
    }
    .modal-box-large { width: min(1080px, 96vw); max-width: min(1080px, 96vw); }
    .modal-box-preview {
      max-height: 96vh;
      display: flex;
      flex-direction: column;
      gap: 10px;
      padding: 16px;
    }
    .asset-preview-modal {
      gap: 14px;
      padding: 20px;
    }
    .asset-preview-modal-text {
      width: min(980px, 95vw);
      max-width: min(980px, 95vw);
    }
    .asset-preview-modal-visual {
      width: min(1320px, 97vw);
      max-width: min(1320px, 97vw);
    }
    .asset-preview-header {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 16px;
    }
    .asset-preview-title-block {
      min-width: 0;
      display: flex;
      flex-direction: column;
      gap: 8px;
    }
    .asset-preview-kicker {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap;
    }
    .asset-preview-kind {
      display: inline-flex;
      align-items: center;
      padding: 4px 8px;
      border-radius: 999px;
      font-size: 10px;
      font-weight: 700;
      letter-spacing: 0.45px;
      text-transform: uppercase;
      border: 1px solid color-mix(in oklab, var(--panel-strong) 80%, transparent);
      background: color-mix(in oklab, var(--panel) 72%, var(--card));
      color: color-mix(in oklab, var(--text) 78%, var(--muted));
    }
    .asset-preview-kind-script {
      border-color: color-mix(in oklab, var(--graph-node-accent-script) 34%, var(--panel-strong));
      color: color-mix(in oklab, var(--graph-node-accent-script) 74%, var(--text));
      background: color-mix(in oklab, var(--graph-node-accent-script) 10%, var(--card));
    }
    .asset-preview-kind-asset {
      border-color: color-mix(in oklab, var(--brand) 34%, var(--panel-strong));
      color: color-mix(in oklab, var(--brand) 74%, var(--text));
      background: color-mix(in oklab, var(--brand) 10%, var(--card));
    }
    .asset-preview-kind-figure {
      border-color: color-mix(in oklab, var(--graph-node-accent-figure) 34%, var(--panel-strong));
      color: color-mix(in oklab, var(--graph-node-accent-figure) 74%, var(--text));
      background: color-mix(in oklab, var(--graph-node-accent-figure) 10%, var(--card));
    }
    .modal-box.asset-preview-modal .asset-preview-title {
      margin: 0;
      font-size: 22px;
      line-height: 1.15;
      letter-spacing: -0.02em;
      text-transform: none;
    }
    .project-asset-preview-panel .asset-preview-title {
      margin: 0;
      font-size: 20px;
      line-height: 1.15;
      letter-spacing: -0.02em;
      text-transform: none;
    }
    .asset-preview-subtitle {
      font-size: 12px;
      line-height: 1.45;
      color: var(--muted);
      word-break: break-word;
    }
    .asset-preview-notes {
      padding: 10px 12px;
      border: 1px dashed color-mix(in oklab, var(--panel-strong) 76%, transparent);
      border-radius: 8px;
      background: color-mix(in oklab, var(--panel) 54%, var(--card));
      font-size: 12px;
      line-height: 1.5;
      color: color-mix(in oklab, var(--text) 92%, var(--muted));
      white-space: pre-wrap;
      word-break: break-word;
    }
    .asset-preview-toolbar {
      display: flex;
      flex-wrap: wrap;
      justify-content: flex-end;
      gap: 6px;
      flex-shrink: 0;
    }
    .asset-preview-status {
      margin-top: -2px;
      min-height: 1.2em;
    }
    .asset-links-body { display: flex; flex-direction: column; gap: 10px; }
    .asset-links-list { display: flex; flex-direction: column; gap: 8px; max-height: 280px; overflow-y: auto; padding-right: 2px; }
    .asset-link-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; border: 1px solid var(--panel-strong); border-radius: 6px; padding: 8px 10px; background: var(--card); }
    .asset-link-main { min-width: 0; flex: 1; display: flex; flex-direction: column; gap: 3px; font-size: 12px; }
    .asset-link-add { border-top: 1px dashed var(--panel-strong); margin-top: 4px; padding-top: 10px; }
    .asset-link-measurement-detail { margin-top: 6px; padding: 8px; border: 1px dashed var(--panel-strong); border-radius: 6px; background: var(--panel); }
    .asset-link-actions { margin-top: 10px; display: flex; justify-content: flex-end; }
    .asset-preview-body { min-height: 320px; max-height: 72vh; overflow: auto; border: 1px solid var(--panel-strong); border-radius: 10px; background: color-mix(in oklab, var(--panel) 80%, var(--card)); padding: 14px; }
    .project-asset-preview-panel .asset-preview-body { flex: 1 1 auto; min-height: 0; max-height: none; }
    .project-asset-preview-panel .project-asset-preview-text-body {
      flex: 1 1 0;
      display: block;
      overflow: auto;
      overscroll-behavior: contain;
      -webkit-overflow-scrolling: touch;
    }
    .asset-preview-modal-text .asset-preview-body { min-height: 420px; }
    .asset-preview-modal-visual .asset-preview-body { min-height: 68vh; padding: 18px; }
    .asset-preview-image-wrap { display: flex; justify-content: center; align-items: center; min-height: 100%; }
    .project-asset-preview-panel .asset-preview-image-wrap { flex: 1 1 auto; min-height: 0; align-items: flex-start; }
    .asset-preview-image { width: auto; max-width: 100%; max-height: calc(68vh - 36px); object-fit: contain; border: 1px solid color-mix(in oklab, var(--panel-strong) 82%, transparent); border-radius: 8px; background: var(--card); box-shadow: 0 1px 0 rgba(13, 18, 40, 0.12), 2px 2px 0 rgba(13, 18, 40, 0.10); }
    .project-asset-preview-panel .asset-preview-image { max-height: none; }
    .asset-preview-frame { width: 100%; min-height: calc(68vh - 36px); border: 1px solid color-mix(in oklab, var(--panel-strong) 82%, transparent); border-radius: 8px; background: #fff; }
    .project-asset-preview-panel .asset-preview-frame { flex: 1 1 auto; min-height: 100%; height: 100%; }
    .asset-preview-code { margin: 0; border: 1px solid var(--panel-strong); border-radius: 4px; background: var(--card); overflow: visible; min-height: 0; }
    .project-asset-preview-panel .project-asset-preview-text-body .asset-preview-code {
      width: max-content;
      min-width: 100%;
    }
    .asset-preview-code code { display: block; white-space: pre; word-break: normal; font-size: 12px; line-height: 1.5; color: var(--text); padding: 12px 14px; }
    .asset-preview-code .hljs { background: transparent; color: var(--text); padding: 12px 14px; }
    .asset-preview-code .hljs-comment { color: var(--code-token-comment); font-style: italic; }
    .asset-preview-code .hljs-keyword,
    .asset-preview-code .hljs-selector-tag,
    .asset-preview-code .hljs-tag { color: var(--code-token-keyword); font-weight: 600; }
    .asset-preview-code .hljs-string,
    .asset-preview-code .hljs-attr,
    .asset-preview-code .hljs-name { color: var(--code-token-string); }
    .asset-preview-code .hljs-number,
    .asset-preview-code .hljs-literal { color: var(--code-token-number); }
    .asset-preview-code .hljs-title,
    .asset-preview-code .hljs-type,
    .asset-preview-code .hljs-built_in { color: var(--code-token-literal); }
    .asset-preview-code .asset-syn-com { color: var(--code-token-comment); font-style: italic; }
    .asset-preview-code .asset-syn-kw { color: var(--code-token-keyword); font-weight: 600; }
    .asset-preview-code .asset-syn-str { color: var(--code-token-string); }
    .asset-preview-code .asset-syn-num { color: var(--code-token-number); }
    .asset-preview-code .asset-syn-lit { color: var(--code-token-literal); font-weight: 600; }
    .asset-preview-code .asset-syn-tag { color: var(--code-token-tag); font-weight: 600; }
    .asset-preview-code .asset-syn-attr { color: var(--code-token-attr); }
    @container (max-width: 620px) {
      .project-asset-row .project-asset-side { display: none; }
      .project-asset-row-actions { margin-left: auto; }
    }
    .asset-preview-text { margin: 0; white-space: pre-wrap; word-break: break-word; font-size: 12px; line-height: 1.45; }
    .asset-preview-note { margin-top: 10px; padding-left: 2px; }

    /* Small icon buttons for edit/delete in corners - Mono theme */
    .btn-icon { padding: 5px 7px; font-size: 16px; line-height: 1; border-radius: 4px; background: none; border: 1px solid transparent; color: var(--muted); cursor: pointer; }
    .btn-icon:hover { background: var(--panel); color: var(--text); }
    .btn-icon.project-header-icon-btn {
      width: 30px;
      height: 30px;
      padding: 0;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      border-radius: 6px;
    }
    .btn-icon.project-header-icon-btn svg {
      width: 16px;
      height: 16px;
      display: block;
      stroke: currentColor;
      fill: none;
      stroke-width: 1.9;
      stroke-linecap: round;
      stroke-linejoin: round;
      vector-effect: non-scaling-stroke;
    }
    .btn-icon.project-header-icon-btn:hover {
      background: var(--panel);
      border-color: var(--panel-strong);
      color: var(--text);
    }
    .btn-icon.danger { background: none; color: var(--muted); border-color: transparent; }
    .btn-icon.danger:hover { background: #fff5f5; color: #c62828; }
    .btn-icon.danger.project-header-icon-btn:hover {
      background: #fff2f2;
      border-color: #efcaca;
      color: #b32929;
    }
    .corner-actions { display: flex; gap: 4px; flex-shrink: 0; }
    .project-header-actions {
      align-self: flex-start;
      flex-wrap: wrap;
      justify-content: flex-end;
      width: 100%;
      padding-top: 0;
    }
    .project-header-side .storage-bar-container { margin-bottom: 0; }
    .project-header-side .storage-bar-label { margin-bottom: 3px; }
    .project-header-side .storage-bar-track { height: 5px; }
    @media (max-width: 760px) {
      .project-card-header {
        flex-direction: column;
        align-items: stretch;
        gap: 10px;
      }
      .project-header-side {
        width: 100%;
        min-width: 0;
      }
      .project-header-actions {
        justify-content: flex-start;
        padding-top: 0;
      }
    }
    .notes-status { font-size: 11px; color: var(--muted); padding: 2px 8px; border-radius: 4px; transition: all 0.2s; }
    .notes-status:not(:empty) { background: var(--panel); }
    .notes-status.error { color: #c62828; background: #ffebee; }
    /* Project list cards - Mono theme */
    .list { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; }
    .card { border: 1px solid var(--panel-strong); border-radius: 6px; padding: 10px; cursor: pointer; transition: border-color .15s, background .15s; background: var(--card); }
    .card:hover { border-color: var(--muted); }
    .card.selected { border-color: var(--text); background: var(--panel); }
    .muted { color: var(--muted); font-size: 12px; }
    .project-desc-preview {
      line-height: 1.35;
      max-height: calc(1.35em * 4);
      overflow: hidden;
      display: -webkit-box;
      -webkit-line-clamp: 4;
      -webkit-box-orient: vertical;
      text-overflow: ellipsis;
      word-break: break-word;
    }
    .detail-row { margin-bottom: 12px; }
    .detail-label { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.5px; }
    .detail-value { margin-top: 2px; }
    .status { margin-top: 10px; color: #c62828; min-height: 1.2em; font-size: 12px; }
    #search { width: 100%; padding: 10px 12px; margin-top: 8px; box-sizing: border-box; border: 1px solid var(--panel-strong); border-radius: 6px; font-size: 12px; font-family: inherit; background: var(--card); transition: border-color 0.15s; }
    #search:focus { outline: none; border-color: var(--text); }
    /* Modal styles - Mono theme */
    .modal-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.4); display: flex; align-items: center; justify-content: center; z-index: 600; }
    .modal-box { background: var(--card); border: 1px solid var(--panel-strong); border-radius: 6px; padding: 24px; min-width: 360px; max-width: 480px; box-shadow: 0 4px 24px rgba(0,0,0,0.15); }
    .modal-box.asimov-popup {
      padding: 26px;
      border-width: 2px;
      border-color: color-mix(in oklab, var(--brand) 42%, var(--panel-strong));
      background:
        radial-gradient(140% 110% at 0% 0%, color-mix(in oklab, var(--brand) 10%, transparent), transparent 48%),
        var(--card);
      box-shadow:
        0 1px 0 rgba(13, 18, 40, 0.12),
        4px 4px 0 rgba(13, 18, 40, 0.14),
        0 0 0 1px color-mix(in oklab, var(--brand) 20%, var(--panel-strong));
    }
    .modal-box.asimov-popup h3 {
      letter-spacing: 0.3px;
      text-transform: uppercase;
      font-size: 15px;
    }
    .modal-box.asimov-popup-project {
      border-color: color-mix(in oklab, var(--brand) 52%, var(--panel-strong));
      background:
        radial-gradient(130% 110% at 0% 0%, color-mix(in oklab, var(--brand) 12%, transparent), transparent 48%),
        var(--card);
    }
    .modal-box.asimov-popup-asset {
      border-color: color-mix(in oklab, var(--panel-strong) 64%, var(--text));
      background:
        radial-gradient(130% 110% at 0% 0%, color-mix(in oklab, var(--panel) 64%, transparent), transparent 48%),
        var(--card);
    }
    .modal-box.asimov-popup-measurement {
      border-color: color-mix(in oklab, var(--graph-node-accent-measurement) 54%, var(--panel-strong));
      background:
        radial-gradient(130% 110% at 0% 0%, color-mix(in oklab, var(--graph-node-accent-measurement) 10%, transparent), transparent 48%),
        var(--card);
    }
    .modal-box.asimov-popup-experiment {
      border-color: color-mix(in oklab, var(--graph-node-accent-experiment) 54%, var(--panel-strong));
      background:
        radial-gradient(130% 110% at 0% 0%, color-mix(in oklab, var(--graph-node-accent-experiment) 11%, transparent), transparent 48%),
        var(--card);
    }
    .modal-box.asimov-popup-danger {
      border-color: color-mix(in oklab, #d76969 56%, var(--panel-strong));
      background:
        radial-gradient(130% 110% at 0% 0%, color-mix(in oklab, #d76969 9%, transparent), transparent 48%),
        var(--card);
    }
    .asimov-popup-copy p { margin: 0 0 12px; font-size: 12px; line-height: 1.55; }
    .asimov-popup-copy p:last-child { margin-bottom: 0; }
    .modal-box.modal-box-large { width: min(1080px, 96vw); max-width: min(1080px, 96vw); }
    .modal-box.modal-box-preview { width: min(1600px, 99vw); max-width: min(1600px, 99vw); }
    .modal-box h3 { margin-top: 0; font-size: 16px; font-weight: 700; }
    .modal-box label { display: block; font-size: 11px; font-weight: 600; margin-bottom: 4px; margin-top: 12px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.5px; }
    .modal-box input:not([type="checkbox"]):not([type="radio"]), .modal-box textarea { width: 100%; padding: 10px 12px; box-sizing: border-box; border: 1px solid var(--panel-strong); border-radius: 6px; font-size: 13px; font-family: inherit; background: var(--card); transition: border-color 0.15s; }
    .modal-box input:not([type="checkbox"]):not([type="radio"]):focus, .modal-box textarea:focus { outline: none; border-color: var(--text); }
    .modal-box textarea { resize: vertical; min-height: 60px; }
    .modal-box input[type="checkbox"], .modal-box input[type="radio"] { width: 16px; height: 16px; margin: 2px 0 0; padding: 0; box-sizing: border-box; border: 0; border-radius: 0; background: transparent; box-shadow: none; flex-shrink: 0; accent-color: var(--text); }
    .modal-checkbox-row { display: flex !important; align-items: flex-start; gap: 8px; margin: 12px 0 0; font-size: 12px !important; font-weight: 500 !important; letter-spacing: 0 !important; text-transform: none !important; color: var(--muted) !important; }
    .modal-checkbox-row input[type="checkbox"] { width: 16px; height: 16px; margin: 1px 0 0; padding: 0; flex-shrink: 0; }
    .modal-checkbox-row span { line-height: 1.45; }
    .project-assets-delete-group-options { display: flex; flex-direction: column; gap: 10px; margin: 16px 0 12px; }
    .project-assets-delete-group-option { display: flex !important; align-items: flex-start; gap: 10px; margin: 0; padding: 12px; border: 1px solid var(--panel-strong); border-radius: 8px; background: var(--panel); cursor: pointer; font-size: 12px !important; font-weight: 500 !important; letter-spacing: 0 !important; text-transform: none !important; color: var(--text) !important; }
    .project-assets-delete-group-option.is-disabled { opacity: 0.6; cursor: not-allowed; }
    .project-assets-delete-group-option-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
    .project-assets-delete-group-option-title { font-size: 12px; font-weight: 700; line-height: 1.35; color: var(--text); }
    .project-assets-delete-group-option-copy { font-size: 12px; line-height: 1.45; color: var(--muted); }
    .project-assets-delete-group-option select { margin-top: 8px; }
    .modal-actions { display: flex; gap: 8px; justify-content: flex-end; margin-top: 20px; }
    .modal-box .hint { font-size: 12px; color: var(--muted); margin-top: 8px; }
    .modal-box select { width: 100%; padding: 10px 12px; box-sizing: border-box; border: 1px solid var(--panel-strong); border-radius: 6px; font-size: 13px; font-family: inherit; background: var(--card); }
    .measurements-list { display: flex; flex-direction: column; gap: 12px; overflow: hidden; padding: 14px 14px 18px; }
    .measurements-list:empty::after { content: "No measurements yet. Click '+' to create one."; display: block; padding: 20px; text-align: center; color: var(--muted); font-size: 12px; background: var(--card); border-radius: 6px; border: 1px dashed var(--panel-strong); }
    .measurements-list > .measurement-card { margin: 0; }
    .measurement-card {
      border: 1px solid color-mix(in oklab, var(--panel-strong) 68%, transparent);
      border-left-width: 4px;
      border-left-color: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 72%, var(--panel-strong));
      border-radius: 12px;
      padding: 12px 12px 0;
      cursor: pointer;
      position: relative;
      transition: border-color 220ms cubic-bezier(0.22, 1, 0.36, 1), box-shadow 220ms cubic-bezier(0.22, 1, 0.36, 1), background-color 220ms cubic-bezier(0.22, 1, 0.36, 1);
      background: color-mix(in oklab, var(--card) 97%, var(--panel));
      box-shadow: 0 4px 14px rgba(13, 18, 40, 0.04);
      overflow: hidden;
    }
    .measurement-card-swapping { z-index: 2; }
    .measurement-card:hover { border-color: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 50%, var(--panel-strong)); border-left-color: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 86%, var(--panel-strong)); }
    .measurement-card.expanded {
      border-color: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 52%, var(--panel-strong));
      border-left-color: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 78%, var(--panel-strong));
      background: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 3%, var(--card));
      box-shadow: 0 0 0 1px color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 18%, var(--panel-strong)), 0 10px 24px rgba(13, 18, 40, 0.05);
    }
    .measurement-header {
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
      gap: 12px;
      min-height: 46px;
      padding: 12px 12px 10px;
      margin: -12px -12px 0;
      border-radius: 10px 10px 0 0;
      border: 1px solid transparent;
      background: color-mix(in oklab, var(--panel) 30%, var(--card));
      cursor: pointer;
      user-select: none;
      transition: background 220ms cubic-bezier(0.22, 1, 0.36, 1), border-color 220ms cubic-bezier(0.22, 1, 0.36, 1);
    }
    .measurement-card:hover .measurement-header { border-color: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 30%, var(--panel-strong)); }
    .measurement-card.expanded .measurement-header {
      background: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 6%, var(--card));
      border-color: color-mix(in oklab, var(--measurement-entry-accent, var(--graph-node-accent-measurement)) 24%, var(--panel-strong));
    }
    .measurement-header:focus-visible { outline: 2px solid var(--text); outline-offset: 2px; }
    .measurement-header-main { min-width: 0; flex: 1; display: flex; flex-direction: column; justify-content: center; gap: 6px; }
    .measurement-header-topline {
      display: flex;
      align-items: baseline;
      justify-content: space-between;
      gap: 10px;
      min-width: 0;
      flex-wrap: wrap;
    }
    .measurement-header-facts {
      display: flex;
      align-items: center;
      flex-wrap: wrap;
      gap: 6px 8px;
      min-width: 0;
      font-size: 11px;
      line-height: 1.35;
      color: color-mix(in oklab, var(--text) 88%, var(--muted));
      word-break: break-word;
    }
    .measurement-header-fact {
      display: inline-flex;
      align-items: center;
      gap: 6px;
      min-width: 0;
      max-width: 100%;
      padding: 3px 8px;
      border: 1px solid color-mix(in oklab, var(--panel-strong) 84%, transparent);
      border-radius: 999px;
      background: color-mix(in oklab, var(--panel) 60%, var(--card));
    }
    .measurement-header-fact-label {
      font-weight: 700;
      color: var(--muted);
    }
    .measurement-header-fact-value {
      display: inline-flex;
      align-items: center;
      gap: 4px;
      min-width: 0;
      color: var(--text);
    }
    .measurement-header-created {
      flex-shrink: 0;
      white-space: nowrap;
      font-size: 10px;
      letter-spacing: 0.04em;
      text-transform: uppercase;
    }
    .measurement-header-side {
      display: flex;
      align-items: flex-start;
      justify-content: flex-end;
      flex-shrink: 0;
    }
    .measurement-header-actions {
      margin-top: -1px;
    }
    .measurement-header-fact strong {
      font-weight: 700;
    }
    .measurement-order-controls { display: flex; align-items: center; gap: 6px; margin-right: 0; }
    .measurement-move-btn {
      cursor: pointer;
      transition: border-color 0.15s, color 0.15s, background-color 0.15s, transform 0.15s;
    }
    .measurement-move-btn .project-asset-action-icon {
      width: 14px;
      height: 14px;
    }
    .measurement-move-btn:hover {
      border-color: color-mix(in oklab, var(--graph-node-accent-measurement) 58%, var(--panel-strong));
      color: color-mix(in oklab, var(--graph-node-accent-measurement) 70%, var(--text));
      background: color-mix(in oklab, var(--graph-node-accent-measurement) 10%, var(--card));
      transform: translateY(-1px);
    }
    .measurement-move-btn:disabled {
      opacity: 0.45;
      cursor: default;
      transform: none;
    }
    .measurement-move-btn:disabled:hover {
      border-color: var(--panel-strong);
      color: color-mix(in oklab, var(--text) 68%, var(--muted));
      background: color-mix(in oklab, var(--panel) 64%, var(--card));
      transform: none;
    }
    .measurement-action-btn {
      width: 28px;
      height: 28px;
      border-radius: 6px;
    }
    .measurement-action-edit:hover {
      color: color-mix(in oklab, var(--graph-node-accent-measurement) 72%, var(--text));
      border-color: color-mix(in oklab, var(--graph-node-accent-measurement) 56%, var(--panel-strong));
      background: color-mix(in oklab, var(--graph-node-accent-measurement) 12%, var(--card));
    }
    .measurement-header-title { color: var(--text); font-size: 14px; font-weight: 700; line-height: 1.25; display: block; }
    .measurement-header-desc { font-size: 11px; line-height: 1.35; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; text-overflow: ellipsis; max-width: 100%; word-break: break-word; }
    .measurement-details { margin-top: 16px; padding-top: 12px; border-top: none; position: relative; overflow: hidden; max-height: none; transform-origin: top; will-change: max-height, transform, opacity; }
    .measurement-card.expanded .measurement-details { animation: measurement-open 280ms cubic-bezier(0.22, 1, 0.36, 1); }
    .measurement-card.closing .measurement-details { animation: measurement-close 240ms cubic-bezier(0.4, 0, 0.2, 1) forwards; pointer-events: none; }
    @keyframes measurement-open { from { max-height: 0; opacity: 0; transform: translateY(-6px) scaleY(0.985); } to { max-height: 3200px; opacity: 1; transform: translateY(0) scaleY(1); } }
    @keyframes measurement-close { from { max-height: 3200px; opacity: 1; transform: translateY(0) scaleY(1); } to { max-height: 0; opacity: 0; transform: translateY(-4px) scaleY(0.99); } }

    /* Measurement Info Row */
    .measurement-info-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 8px; margin-bottom: 12px; }
    @media (max-width: 900px) { .measurement-info-row { grid-template-columns: 1fr; } }
    .info-card {
      padding: 12px 14px;
      background: color-mix(in oklab, var(--panel) 66%, var(--card));
      border: 1px solid color-mix(in oklab, var(--panel-strong) 58%, transparent);
      border-radius: 12px;
    }
    .info-card-content { }
    .info-card-label { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 3px; font-weight: 600; }
    .info-card-value { font-size: 12px; color: var(--text); word-break: break-word; line-height: 1.4; }
    .info-card-value-instrument { display: flex; align-items: center; gap: 6px; min-width: 0; }
    .instrument-title-stack {
      min-width: 0;
      display: inline-flex;
      align-items: center;
      gap: 6px;
      flex-wrap: wrap;
      flex: 1 1 auto;
    }
    .instrument-title-name { min-width: 0; word-break: break-word; }
    .instrument-macro-pill {
      margin-left: auto;
      display: inline-flex;
      align-items: center;
      gap: 4px;
      min-width: 0;
      flex-shrink: 0;
    }
    .instrument-macro-pill-label {
      font-size: 10px;
      color: var(--muted);
      text-transform: uppercase;
      letter-spacing: 0.4px;
      line-height: 1;
    }
    .instrument-macro-pill-info {
      display: inline-block;
      max-width: clamp(88px, 18vw, 150px);
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
      font-size: 10px;
      line-height: 1;
      color: var(--muted);
      vertical-align: middle;
    }
    .nordic-macro-drop-slot {
      flex: 0 0 auto;
      width: 20px;
      height: 20px;
      min-width: 20px;
      border: 1px dashed var(--panel-strong);
      border-radius: 7px;
      padding: 0;
      background: color-mix(in oklab, var(--card) 90%, var(--panel));
      display: inline-flex;
      align-items: center;
      justify-content: center;
      transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
    }
    .nordic-macro-slot-icon {
      font-size: 12px;
      line-height: 1;
      font-weight: 600;
      color: var(--muted);
    }
    .nordic-macro-drop-slot-editable { cursor: pointer; }
    .nordic-macro-drop-slot-editable:hover { border-color: color-mix(in oklab, var(--text) 42%, var(--panel-strong)); }
    .nordic-macro-drop-slot-editable:focus-visible { outline: none; border-color: color-mix(in oklab, var(--text) 42%, var(--panel-strong)); box-shadow: 0 0 0 2px color-mix(in oklab, var(--text) 26%, transparent); }
    .nordic-macro-drop-slot.macro-state-assigned { border-style: solid; border-color: color-mix(in oklab, var(--text) 30%, var(--panel-strong)); background: color-mix(in oklab, var(--panel) 80%, var(--card)); }
    .nordic-macro-drop-slot.macro-state-assigned .nordic-macro-slot-icon { color: var(--text); }
    .nordic-macro-drop-slot.macro-state-loading .nordic-macro-slot-icon { color: var(--muted); }
    .nordic-macro-drop-slot.macro-state-missing { border-color: #ce8c8c; background: color-mix(in oklab, #fff6f6 82%, var(--card)); }
    .nordic-macro-drop-slot.macro-state-missing .nordic-macro-slot-icon { color: #9f2e2e; }
    .nordic-macro-drop-slot.macro-state-empty .nordic-macro-slot-icon { color: var(--muted); }
    .nordic-macro-clear-btn {
      appearance: none;
      border: 1px solid var(--panel-strong);
      background: color-mix(in oklab, var(--card) 92%, var(--panel));
      color: var(--muted);
      border-radius: 999px;
      width: 14px;
      height: 14px;
      padding: 0;
      line-height: 1;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      cursor: pointer;
      flex-shrink: 0;
    }
    .nordic-macro-clear-btn:hover { color: var(--text); border-color: color-mix(in oklab, var(--text) 35%, var(--panel-strong)); }
    .nordic-macro-drop-slot.drop-target {
      border-color: var(--text);
      border-style: dashed;
      box-shadow: 0 0 0 1px var(--text);
      background: color-mix(in oklab, var(--panel) 64%, var(--card));
    }
    .measurement-instrument-tag {
      display: inline-flex;
      align-items: center;
      border: 1px solid var(--panel-strong);
      border-radius: 999px;
      font-size: 10px;
      font-weight: 700;
      letter-spacing: 0.3px;
      padding: 1px 7px;
      text-transform: uppercase;
      line-height: 1.4;
    }
    .measurement-instrument-tag-custom { background: #fff8e1; color: #7a5b00; border-color: #f3d27a; }
    .measurement-instrument-tag-ixdat { background: #e8f4ff; color: #145ea8; border-color: #b6d8f5; }
    .measurement-instrument-verified {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      width: 16px;
      height: 16px;
      min-width: 16px;
      border-radius: 999px;
      background: #e8f4ff;
      border: 1px solid #b6d8f5;
      color: #145ea8;
      font-size: 12px;
      font-weight: 700;
      line-height: 1;
      flex-shrink: 0;
    }

    /* Measurement Notes Column */
    .measurement-notes-col {
      display: flex;
      flex-direction: column;
      background: color-mix(in oklab, var(--card) 92%, var(--panel));
      border: 1px solid color-mix(in oklab, var(--panel-strong) 72%, transparent);
      border-radius: 8px;
      padding: 5px 10px 6px;
      margin-bottom: 4px;
    }
    .section-header {
      display: flex;
      align-items: center;
      justify-content: space-between;
      min-height: 20px;
      margin-bottom: 2px;
      padding: 0;
      border: none;
      background: transparent;
    }
    .section-title { font-size: 11px; font-weight: 700; color: var(--text); text-transform: none; letter-spacing: 0.2px; }
    .run-notes-area {
      width: 100%;
      flex: 1;
      min-height: 100px;
      padding: 8px 4px 6px;
      box-sizing: border-box;
      border: none;
      border-radius: 0;
      font-size: 12px;
      font-family: inherit;
      resize: vertical;
      background: transparent;
      transition: box-shadow 0.2s;
      line-height: 1.6;
    }
    .run-notes-area:hover { box-shadow: none; }
    .run-notes-area:focus { outline: none; box-shadow: none; }
    .run-notes-area::placeholder { color: var(--muted); opacity: 0.7; }

    .project-notes-col .EasyMDEContainer,
    .measurement-notes-col .EasyMDEContainer {
      border: none;
      background: transparent;
      box-shadow: none;
    }
    .project-notes-col .EasyMDEContainer .CodeMirror,
    .measurement-notes-col .EasyMDEContainer .CodeMirror {
      border: none;
      border-radius: 0;
      border-left: none;
      background: transparent;
      box-shadow: none;
      padding: 4px 2px;
    }
    .project-notes-col .EasyMDEContainer .CodeMirror-focused,
    .measurement-notes-col .EasyMDEContainer .CodeMirror-focused {
      border: none;
      border-left: none;
      background: transparent;
      box-shadow: none;
    }
    .project-notes-col .EasyMDEContainer .editor-toolbar,
    .measurement-notes-col .EasyMDEContainer .editor-toolbar {
      border-bottom: none;
      padding: 1px 0;
      margin-bottom: 2px;
    }

    /* Upload controls - Mono theme */
    .dropzone-modern { display: flex; align-items: center; justify-content: center; padding: 14px 20px; border: 1px dashed var(--panel-strong); border-radius: 6px; background: var(--panel); cursor: pointer; transition: border-color 0.15s, background 0.15s; }
    .dropzone-modern:hover { border-color: var(--muted); background: var(--card); }
    .dropzone-modern.dropzone-hover { border-color: var(--text); background: var(--card); border-style: solid; }
    .dropzone-text { }
    .dropzone-text strong { font-size: 12px; color: var(--muted); font-weight: 500; }
    .dropzone-subtext { display: block; margin-top: 2px; font-size: 10px; color: var(--muted); }

    /* Upload Progress - Mono theme */
    .upload-progress-modern { padding: 14px 16px; background: var(--panel); border-radius: 6px; margin-top: 10px; border: 1px solid var(--panel-strong); }
    .upload-progress-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
    .upload-progress-label { font-size: 11px; font-weight: 600; color: var(--text); text-transform: uppercase; letter-spacing: 0.5px; }
    .upload-progress-count { font-size: 12px; color: var(--muted); font-weight: 500; }
    .upload-progress-track { height: 6px; background: var(--panel-strong); border-radius: 3px; overflow: hidden; }
    .upload-progress-fill { height: 100%; background: var(--text); border-radius: 3px; transition: width 0.2s ease; }
    .upload-status-modern { font-size: 12px; margin-top: 10px; padding: 10px 14px; border-radius: 6px; font-weight: 500; }
    .upload-status-modern:empty { display: none; }
    .upload-status-modern.error { background: #fff5f5; color: #c62828; border: 1px solid #ffcdd2; }
    .upload-status-modern:not(.error):not(:empty) { background: #f1f8e9; color: #2e7d32; border: 1px solid #c8e6c9; }

    /* File upload styles - Mono theme */
    .files-section { margin-top: 20px; padding-top: 20px; border-top: 1px solid var(--panel-strong); }
    .measurement-notes-col + .files-section { margin-top: 0; padding-top: 0; border-top: none; }
    .files-section.measurement-files-fullscreen {
      position: fixed;
      inset: 0;
      z-index: 90;
      margin: 0;
      padding: 16px;
      border: none;
      border-radius: 0;
      background: var(--bg);
      box-shadow: 0 10px 34px rgba(0,0,0,0.22);
      --files-preview-height: calc(100vh - 92px);
      --file-column-max-height: calc(var(--files-preview-height) - 12px);
    }
    .files-section.measurement-files-fullscreen .files-toolbar { margin-bottom: 8px; }
    .files-section.measurement-files-fullscreen .files-and-preview {
      height: var(--files-preview-height);
      min-height: var(--files-preview-height);
      max-height: var(--files-preview-height);
    }
    .files-upload-row { margin-bottom: 10px; }
    .files-upload-row-inline { margin-top: 4px; }
    .measurement-files-intake {
      display: flex;
      align-items: center;
      justify-content: space-between;
      gap: 14px;
      margin-bottom: 10px;
      padding: 12px 14px;
      border: 1px solid color-mix(in oklab, var(--panel-strong) 80%, transparent);
      border-radius: 10px;
      background: linear-gradient(180deg, color-mix(in oklab, var(--panel) 85%, var(--card)), color-mix(in oklab, var(--panel) 52%, var(--card)));
    }
    .measurement-files-intake-copy {
      min-width: 0;
      display: flex;
      flex-direction: column;
      gap: 3px;
    }
    .measurement-files-intake-title {
      font-size: 12px;
      font-weight: 700;
      color: var(--text);
      letter-spacing: 0.02em;
      text-transform: uppercase;
    }
    .measurement-files-intake-text {
      font-size: 11px;
      line-height: 1.45;
      color: var(--muted);
      max-width: 68ch;
    }
    .measurement-files-intake-actions {
      display: flex;
      align-items: center;
      gap: 8px;
      flex-wrap: wrap;
      justify-content: flex-end;
      flex-shrink: 0;
    }
    .files-primary-upload-btn {
      border-style: dashed;
      border-color: color-mix(in oklab, var(--panel-strong) 88%, var(--text));
      background: color-mix(in oklab, var(--panel) 68%, var(--card));
    }
    .files-primary-upload-btn:hover {
      border-color: color-mix(in oklab, var(--graph-node-accent-measurement) 64%, var(--panel-strong));
      background: color-mix(in oklab, var(--graph-node-accent-measurement) 12%, var(--card));
    }
    .files-external-uri-btn {
      background: color-mix(in oklab, var(--graph-node-accent-measurement) 11%, var(--card));
      border-color: color-mix(in oklab, var(--graph-node-accent-measurement) 48%, var(--panel-strong));
    }
    .files-external-uri-btn:hover {
      background: color-mix(in oklab, var(--graph-node-accent-measurement) 16%, var(--card));
      border-color: color-mix(in oklab, var(--graph-node-accent-measurement) 66%, var(--panel-strong));
    }
    .files-empty-upload-cta {
      width: 100%;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
      gap: 3px;
      padding: 16px 14px;
      border: 1px dashed color-mix(in oklab, var(--panel-strong) 86%, var(--text));
      border-radius: 6px;
      background: color-mix(in oklab, var(--panel) 76%, var(--card));
      color: var(--muted);
      font-family: inherit;
      cursor: pointer;
      text-align: center;
      transition: border-color 0.15s, background-color 0.15s, color 0.15s;
    }
    .files-empty-upload-cta strong {
      font-size: 12px;
      font-weight: 700;
      color: var(--text);
    }
    .files-empty-upload-cta span {
      font-size: 11px;
      color: var(--muted);
    }
    .files-empty-upload-cta:hover {
      border-color: color-mix(in oklab, var(--graph-node-accent-measurement) 64%, var(--panel-strong));
      background: color-mix(in oklab, var(--graph-node-accent-measurement) 11%, var(--card));
      color: var(--text);
    }
    .dropzone-modern.dropzone-prominent {
      justify-content: flex-start;
      padding: 12px 14px;
      border-width: 2px;
      border-color: var(--text);
      background: linear-gradient(180deg, var(--card), var(--panel));
      box-shadow: 0 0 0 1px var(--panel-strong);
    }
    .dropzone-modern.dropzone-prominent .dropzone-text strong { color: var(--text); font-weight: 700; }
    .dropzone-modern.dropzone-prominent.dropzone-hover {
      background: var(--card);
      box-shadow: 0 0 0 1px var(--text);
    }
    .fullscreen-measurement-header { display: none; }
    .files-section.measurement-files-fullscreen .fullscreen-measurement-header {
      display: flex;
      align-items: center;
      min-height: 0;
      padding: 0;
      margin: 0 0 6px;
      border-bottom: none;
    }
    .files-and-preview { display: flex; gap: 0; position: relative; width: 100%; max-width: 100%; overflow: hidden; height: var(--files-preview-height); min-height: var(--files-preview-height); max-height: var(--files-preview-height); }
    .files-and-preview.project-assets-browser {
      height: min(74vh, 980px);
      min-height: 520px;
      max-height: min(74vh, 980px);
    }
    .files-columns { display: flex; flex-direction: column; gap: 6px; min-width: 200px; flex-shrink: 0; overflow-y: auto; height: 100%; min-height: 0; }
    .files-columns.upload-drop-hover { outline: 2px dashed var(--text); outline-offset: -3px; background: rgba(0,0,0,0.03); }
    .files-loading-inline { display: flex; align-items: center; justify-content: center; gap: 8px; width: 100%; min-height: 56px; padding: 10px 12px; box-sizing: border-box; border: 1px dashed var(--panel-strong); border-radius: 6px; background: var(--panel); color: var(--muted); font-size: 11px; }
    .files-loading-spinner { width: 12px; height: 12px; border: 2px solid var(--panel-strong); border-top-color: var(--text); border-radius: 50%; animation: spin 0.8s linear infinite; flex-shrink: 0; }
    .resize-handle { width: 12px; cursor: col-resize; background: transparent; flex-shrink: 0; align-self: stretch; position: relative; display: flex; align-items: center; justify-content: center; user-select: none; touch-action: none; }
    .resize-handle.project-assets-browser-divider {
      width: 1px;
      min-width: 1px;
      cursor: default;
      background: color-mix(in oklab, var(--panel-strong) 72%, transparent);
    }
    .resize-handle::before { content: ''; position: absolute; width: 2px; height: 100%; background: var(--panel-strong); border-radius: 2px; transition: background 0.15s; }
    .resize-handle:hover::before { background: var(--text); }
    .resize-handle.dragging::before { background: var(--text); }
    .file-preview { flex: 1; min-width: 0; border: 1px solid var(--panel-strong); border-radius: 6px; background: var(--card); padding: 12px; overflow: hidden; box-sizing: border-box; display: flex; flex-direction: column; height: 100%; min-height: 0; }
    .file-preview.project-asset-preview-pane {
      flex: 1 1 auto;
      min-width: 320px;
      border: none;
      border-left: none;
      border-radius: 0;
      background: color-mix(in oklab, var(--panel) 68%, var(--card));
      padding: 0;
      overflow: hidden;
    }
    .file-item { display: flex; justify-content: space-between; align-items: center; padding: 8px 12px; border: 1px solid var(--panel-strong); border-radius: 6px; background: var(--card); }
    .file-info { display: flex; flex-direction: column; gap: 2px; overflow: hidden; }
    .file-name { font-size: 12px; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .file-meta { font-size: 11px; color: var(--muted); }

    /* Upload progress bar */
    .upload-progress { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
    .upload-progress-bar-container { flex: 1; height: 6px; background: var(--panel-strong); border-radius: 3px; overflow: hidden; }
    .upload-progress-bar { height: 100%; background: var(--text); border-radius: 3px; transition: width 0.2s ease; }
    .upload-progress-text { font-size: 11px; color: var(--muted); min-width: 50px; }

    /* Files toolbar - Mono theme */
    .files-toolbar {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
      align-items: center;
      gap: 10px;
      margin-bottom: 6px;
      padding: 6px 10px;
      border: 1px solid var(--panel-strong);
      border-radius: 8px;
      background: color-mix(in oklab, var(--panel) 82%, var(--card));
    }
    .files-toolbar-zone { display: flex; align-items: center; gap: 8px; min-width: 0; }
    .files-toolbar-zone-left { justify-self: start; justify-content: flex-start; }
    .files-toolbar-zone-center { justify-self: center; justify-content: center; }
    .files-toolbar-zone-right { justify-self: end; justify-content: flex-end; }
    .files-toolbar-spacer { width: 1px; height: 1px; }
    .files-toolbar-group { display: flex; align-items: center; gap: 6px; min-width: 0; }
    .files-toolbar-group + .files-toolbar-group { padding-left: 10px; border-left: 1px solid var(--panel-strong); }
    .files-toolbar-title { margin: 0; font-size: 13px; line-height: 1.1; }
    .files-toolbar-search-input { width: clamp(220px, 28vw, 320px); }
    .asimov-popup-external-uri { max-width: min(560px, 92vw); }
    .external-uri-modal-fields {
      display: grid;
      gap: 8px;
      margin-top: 12px;
    }
    .external-uri-modal-helper {
      font-size: 11px;
      line-height: 1.45;
      color: var(--muted);
    }
    .external-uri-modal-detected {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      width: fit-content;
      padding: 6px 10px;
      border: 1px solid var(--panel-strong);
      border-radius: 999px;
      background: color-mix(in oklab, var(--panel) 72%, var(--card));
    }
    .external-uri-modal-detected-label {
      font-size: 10px;
      font-weight: 700;
      letter-spacing: 0.04em;
      text-transform: uppercase;
      color: var(--muted);
    }
    .fullscreen-measurement-title {
      display: inline-block;
      max-width: min(56vw, 700px);
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
      font-size: 11px;
      font-weight: 600;
      color: var(--muted);
      letter-spacing: 0.2px;
    }
    .toolbar-label { font-size: 11px; color: var(--muted); }
    .toolbar-select { padding: 4px 8px; font-size: 12px; border: 1px solid var(--panel-strong); border-radius: 4px; background: var(--card); font-family: inherit; }
    .sampling-slider-wrap {
      display: inline-flex;
      align-items: center;
      gap: 8px;
      min-width: 0;
      padding: 2px 8px;
      border: 1px solid var(--panel-strong);
      border-radius: 999px;
      background: color-mix(in oklab, var(--panel) 76%, var(--card));
    }
    .sampling-slider {
      width: 180px;
      margin: 0;
      accent-color: var(--text);
    }
    .sampling-slider-min,
    .sampling-slider-max,
    .sampling-slider-value {
      font-size: 11px;
      color: var(--muted);
      white-space: nowrap;
    }
    .sampling-slider-value {
      min-width: 32px;
      color: var(--text);
      font-weight: 600;
      text-align: right;
    }
    .regex-input { padding: 4px 8px; font-size: 12px; border: 1px solid var(--panel-strong); border-radius: 4px; width: 180px; font-family: inherit; background: var(--card); }
    .btn-small { padding: 4px 8px; font-size: 11px; }

    /* Bulk actions bar - Mono theme */
    .bulk-actions { display: flex; align-items: center; gap: 8px; padding: 0; margin-bottom: 0; background: transparent; border: none; border-radius: 0; font-size: 12px; }
    .bulk-actions span { color: var(--text); font-weight: 600; }
    .bulk-actions-count {
      display: inline-flex;
      align-items: center;
      gap: 5px;
      padding: 4px 10px;
      border: 1px solid var(--panel-strong);
      border-radius: 999px;
      background: var(--card);
      white-space: nowrap;
    }
    .bulk-actions-count-value { font-weight: 700; line-height: 1; }
    .bulk-actions-count-label { font-weight: 600; line-height: 1; }

    /* File multi-select - Mono theme */
    .file-item { display: flex; align-items: center; gap: 10px; padding: 8px 12px; border: 1px solid var(--panel-strong); border-radius: 6px; background: var(--card); cursor: pointer; transition: background 0.1s, border-color 0.1s; }
    .file-item:hover { background: var(--panel); }
    .file-item.selected { background: var(--panel); border-color: var(--text); }
    .file-checkbox-hitbox {
      width: 28px;
      height: 28px;
      margin: -4px 0 -4px -4px;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      flex-shrink: 0;
      border-radius: 6px;
      cursor: pointer;
      transition: background-color 0.15s ease;
    }
    .file-checkbox-hitbox:hover { background: color-mix(in oklab, var(--panel) 84%, var(--card)); }
    .file-checkbox { width: 18px; height: 18px; margin: 0; cursor: pointer; flex-shrink: 0; }
    .file-info { flex: 1; display: flex; flex-direction: column; gap: 2px; overflow: hidden; }

    /* Series grouping - Mono theme */
    .file-series-header { position: relative; z-index: 0; padding: 7px 10px 6px; margin-top: 12px; margin-bottom: 0; background: color-mix(in oklab, var(--panel) 86%, var(--card)); border: 1px solid var(--panel-strong); border-bottom: none; border-radius: 8px 8px 0 0; font-size: 11px; font-weight: 600; color: var(--text); display: flex; justify-content: space-between; align-items: center; cursor: pointer; user-select: none; transition: background 0.15s, border-color 0.15s; }
    .file-series-header:hover { border-color: var(--text); background: color-mix(in oklab, var(--panel) 72%, var(--card)); }
    .file-series-header.ungrouped { background: transparent; border: 1px dashed var(--panel-strong); border-bottom: none; color: var(--muted); }
    .file-series-header.ungrouped:hover { background: var(--panel); border-color: var(--muted); }
    .file-series-header:first-child { margin-top: 0; }
    .series-left { display: flex; align-items: center; gap: 6px; }
    .series-checkbox { width: 14px; height: 14px; cursor: pointer; flex-shrink: 0; }
    .column-select-checkbox { width: 14px; height: 14px; cursor: pointer; flex-shrink: 0; }
    .series-chevron { font-size: 9px; transition: transform 0.15s ease; display: inline-block; cursor: pointer; padding: 2px 4px; border-radius: 3px; }
    .series-chevron:hover { background: var(--panel-strong); }
    .series-chevron.collapsed { transform: rotate(-90deg); }
    .series-right { position: relative; z-index: 2; display: flex; align-items: center; gap: 8px; min-width: 0; }
    .series-actions { position: relative; z-index: 3; display: inline-flex; align-items: center; gap: 6px; pointer-events: auto; }
    .series-action-btn { position: relative; z-index: 4; padding: 2px 7px; min-height: 22px; pointer-events: auto; }
    .series-count { font-weight: 400; color: var(--muted); }
    .series-folder { display: flex; flex-direction: column; gap: 0; }
    .series-files-group.folder-group {
      display: flex;
      flex-direction: column;
      gap: 6px;
      margin: 0 0 10px;
      padding: 0 8px 8px;
      border: 1px solid var(--panel-strong);
      border-top: none;
      border-radius: 0 0 8px 8px;
      background: color-mix(in oklab, var(--panel) 76%, var(--card));
    }
    .series-files-group.folder-group-ungrouped {
      background: transparent;
      border-style: dashed;
      border-top: none;
    }
    .series-files-group.flat-group { display: flex; flex-direction: column; gap: 6px; }

    /* Drag interactions */
    .files-columns.drag-moving { user-select: none; }
    .files-columns.drag-moving .file-item { cursor: grabbing; }

    /* Ghost indicator shown during drag-to-move */
    .drag-ghost { position: fixed; padding: 4px 10px; background: var(--text); color: var(--bg); font-size: 11px; font-weight: 600; border-radius: 6px; pointer-events: none; z-index: 200; white-space: nowrap; box-shadow: var(--shadow); }

    /* Series header as drop target */
    .file-series-header.drop-target { background: var(--panel); border: 2px solid var(--text); border-bottom: none; }
    .file-series-header.ungrouped.drop-target { background: var(--panel); border: 2px solid var(--text); border-bottom: none; color: var(--text); }
    .series-files-group.drop-target { outline: 2px solid var(--text); outline-offset: 1px; border-radius: 6px; }

    /* Kanban file columns */
    .files-columns.multi-column { display: flex; flex-direction: row; gap: 10px; overflow-x: auto; align-items: flex-start; }
    .file-columns-single-row { display: flex; align-items: flex-start; gap: 10px; min-width: 0; flex: 1 1 auto; }
    .file-column { display: flex; flex-direction: column; min-width: 250px; max-width: 400px; flex: 1 1 250px; border: 2px solid var(--column-border, var(--panel-strong)); border-radius: 8px; background: var(--column-bg, var(--bg)); box-shadow: 2px 2px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent); transition: border-color 0.15s, box-shadow 0.15s, opacity 0.15s, transform 0.18s ease, min-width 0.22s ease, max-width 0.22s ease, flex-basis 0.22s ease; min-height: 0; max-height: var(--file-column-max-height); overflow: hidden; align-self: flex-start; }
    .file-column-single { display: flex; flex-direction: column; flex: 1 1 auto; min-height: 0; max-height: var(--file-column-max-height); overflow: hidden; border: 2px solid var(--column-border, var(--panel-strong)); border-radius: 8px; background: var(--column-bg, var(--bg)); box-shadow: 2px 2px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent); }
    .file-columns-single-row .file-column-single { min-width: 0; }
    .file-column.active { border-color: var(--column-border-active, var(--text)); box-shadow: 0 0 0 1px var(--column-border-active, var(--text)), 2px 2px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent); }
    .file-column.collapsed { max-width: 52px; min-width: 52px; flex-basis: 52px; }
    .file-column.collapsed .file-column-header { writing-mode: vertical-rl; text-orientation: mixed; white-space: nowrap; padding: 10px 6px; border-bottom: none; }
    .file-column.collapsed .column-count, .file-column.collapsed .column-delete-btn, .file-column.collapsed .column-add-group-btn-header { display: none; }
    .file-column.collapsed .column-order-controls { display: none; }
    .file-column.collapsed .column-select-checkbox { display: none; }
    .file-column-header { display: flex; align-items: center; gap: 6px; padding: 8px 10px; border-bottom: 2px solid var(--column-border-soft, var(--panel-strong)); font-size: 12px; font-weight: 700; color: var(--text); cursor: pointer; user-select: none; background: var(--column-header, var(--panel)); border-radius: 6px 6px 0 0; transition: padding 0.2s ease, border-bottom-color 0.2s ease, background-color 0.2s ease; }
    .file-column.active .file-column-header { background: var(--column-header-active, var(--panel-strong)); }
    .column-chevron { font-size: 9px; transition: transform 0.15s ease; display: inline-block; cursor: pointer; padding: 2px 4px; border-radius: 3px; }
    .column-chevron:hover { background: var(--column-border-soft, var(--panel-strong)); }
    .column-chevron.collapsed { transform: rotate(-90deg); }
    .column-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .column-name[title] { cursor: text; }
    .column-name[contenteditable] { cursor: text; border-radius: 3px; padding: 1px 4px; }
    .column-name[contenteditable]:focus { outline: 1px solid var(--text); background: var(--card); }
    .column-order-controls { display: inline-flex; gap: 2px; align-items: center; }
    .column-move-btn { width: 16px; height: 16px; border: 1px solid var(--column-border-soft, var(--panel-strong)); border-radius: 3px; background: var(--column-tools, var(--card)); color: var(--muted); font-size: 10px; line-height: 1; padding: 0; cursor: pointer; transition: border-color 0.15s, color 0.15s, background-color 0.15s; }
    .column-move-btn:hover { border-color: var(--column-border, var(--text)); color: var(--text); background: var(--column-header, var(--panel)); }
    .column-move-btn:disabled { opacity: 0.45; cursor: default; }
    .column-move-btn:disabled:hover { border-color: var(--column-border-soft, var(--panel-strong)); color: var(--muted); background: var(--column-tools, var(--card)); }
    .column-count { font-weight: 400; color: var(--muted); font-size: 11px; background: var(--card); padding: 1px 6px; border-radius: 8px; }
    .column-add-group-btn-header {
      flex-shrink: 0;
      padding: 2px 7px;
      border: 1px solid var(--column-border-soft, var(--panel-strong));
      border-radius: 999px;
      background: var(--column-tools, var(--card));
      color: var(--text);
      font-size: 10px;
      line-height: 1.4;
    }
    .column-add-group-btn-header:hover {
      border-color: var(--column-border, var(--text));
      background: color-mix(in oklab, var(--column-tools, var(--card)) 70%, var(--panel));
    }
    .column-delete-btn { background: none; border: none; color: var(--muted); cursor: pointer; font-size: 14px; padding: 0 4px; line-height: 1; transition: color 0.15s; }
    .column-delete-btn:hover { color: #c62828; }
    .file-column-body { padding: 8px; display: flex; flex-direction: column; gap: 6px; flex: 1 1 auto; max-height: 100%; overflow-y: auto; min-height: 0; opacity: 1; transition: max-height 0.22s ease, opacity 0.16s ease, padding 0.22s ease, min-height 0.22s ease; }
    .file-column.collapsed .file-column-body { max-height: 0; min-height: 0; opacity: 0; padding-top: 0; padding-bottom: 0; overflow: hidden; pointer-events: none; }
    .bucket-inline-add-slot { flex: 0 0 auto; display: flex; align-items: flex-start; justify-content: center; padding-top: 8px; }
    .bucket-inline-add-btn {
      width: 30px;
      height: 30px;
      padding: 0;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      border: 1px solid color-mix(in oklab, var(--panel-strong) 88%, var(--text));
      border-radius: 10px;
      background: color-mix(in oklab, var(--panel) 74%, var(--card));
      color: var(--text);
      font-size: 18px;
      line-height: 1;
      font-weight: 500;
      cursor: pointer;
      box-shadow: 2px 2px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent);
      transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
    }
    .bucket-inline-add-btn:hover {
      background: color-mix(in oklab, var(--graph-node-accent-measurement) 14%, var(--card));
      border-color: color-mix(in oklab, var(--graph-node-accent-measurement) 62%, var(--panel-strong));
      box-shadow: 2px 2px 0 color-mix(in oklab, var(--graph-node-accent-measurement) 36%, transparent);
      transform: translateY(-1px);
    }
    .bucket-inline-add-btn:focus-visible {
      outline: none;
      border-color: color-mix(in oklab, var(--graph-node-accent-measurement) 68%, var(--panel-strong));
      box-shadow: 0 0 0 2px color-mix(in oklab, var(--graph-node-accent-measurement) 22%, transparent), 2px 2px 0 color-mix(in oklab, var(--graph-node-accent-measurement) 36%, transparent);
    }
    .file-column.drop-target, .file-column-single.drop-target { border-color: var(--text); box-shadow: 0 0 0 1px var(--text), 2px 2px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent); background: var(--panel); }
    /* multi-column stacking now handled by 1024px breakpoint */

    /* File preview panel - Mono theme */
    .preview-layout { display: flex; gap: 10px; flex: 1; min-height: 0; }
    .preview-main { flex: 1; min-width: 0; display: flex; flex-direction: column; min-height: 0; }
    .preview-summary-wrap {
      position: relative;
      display: flex;
      align-items: stretch;
      flex: 0 0 270px;
      width: 270px;
      min-width: 270px;
      padding-left: 18px;
      box-sizing: border-box;
      transition: flex-basis 0.2s ease, width 0.2s ease, min-width 0.2s ease, padding-left 0.2s ease;
    }
    .preview-summary-wrap.collapsed {
      flex-basis: 26px;
      width: 26px;
      min-width: 26px;
      padding-left: 14px;
    }
    .preview-summary-panel {
      width: 100%;
      flex-shrink: 0;
      overflow-y: auto;
      overflow-x: hidden;
      position: relative;
      transition: opacity 0.18s ease, transform 0.18s ease;
    }
    .preview-summary-wrap.collapsed .preview-summary-panel {
      width: 0;
      min-width: 0;
      opacity: 0;
      transform: translateX(8px);
      pointer-events: none;
      overflow: hidden;
    }
    .preview-summary-toggle {
      position: absolute;
      left: 0;
      top: 50%;
      transform: translate(-50%, -50%);
      width: 28px;
      padding: 0;
      border: none;
      background: transparent;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      cursor: pointer;
      z-index: 2;
    }
    .preview-summary-toggle-chip {
      min-height: 42px;
      padding: 6px 5px;
      border: 1px solid var(--panel-strong);
      border-radius: 999px;
      background: color-mix(in oklab, var(--panel) 80%, var(--card));
      box-shadow: 2px 2px 0 color-mix(in oklab, var(--panel-strong) 72%, transparent);
      display: inline-flex;
      align-items: center;
      justify-content: center;
      transition: border-color 0.15s ease, background-color 0.15s ease, box-shadow 0.15s ease, transform 0.15s ease;
    }
    .preview-summary-toggle:hover .preview-summary-toggle-chip {
      border-color: color-mix(in oklab, var(--brand) 44%, var(--panel-strong));
      background: color-mix(in oklab, var(--brand) 10%, var(--card));
      transform: translateY(-1px);
    }
    .preview-summary-toggle-chevron {
      font-size: 12px;
      line-height: 1;
      color: var(--muted);
    }
    .preview-summary-toggle-label {
      display: none;
      font-size: 10px;
      line-height: 1.05;
      color: var(--muted);
      letter-spacing: 0.2px;
      white-space: nowrap;
    }
    .preview-summary-wrap.collapsed .preview-summary-toggle-chip {
      min-height: 154px;
      padding: 10px 5px;
      gap: 8px;
      flex-direction: column;
    }
    .preview-summary-wrap.collapsed .preview-summary-toggle-label {
      display: inline-block;
      writing-mode: vertical-rl;
      transform: rotate(180deg);
    }
    .preview-collective-metadata-rail {
      position: relative;
      display: flex;
      align-items: stretch;
      flex: 0 0 26px;
      width: 26px;
      min-width: 26px;
      padding-left: 14px;
      box-sizing: border-box;
    }
    .preview-collective-metadata-toggle .preview-summary-toggle-chip {
      min-height: 154px;
      padding: 10px 5px;
      gap: 8px;
      flex-direction: column;
    }
    .preview-collective-metadata-toggle .preview-summary-toggle-label {
      display: inline-block;
      writing-mode: vertical-rl;
      transform: rotate(180deg);
    }
    .preview-collective-metadata-toggle:disabled {
      cursor: default;
    }
    .preview-collective-metadata-toggle:disabled .preview-summary-toggle-chip {
      opacity: 0.55;
      box-shadow: none;
      transform: none;
    }
    .preview-collective-metadata-toggle:disabled:hover .preview-summary-toggle-chip {
      border-color: var(--panel-strong);
      background: color-mix(in oklab, var(--panel) 80%, var(--card));
    }
    .preview-metadata { width: 100%; overflow-y: auto; overflow-x: hidden; min-height: 0; flex: 0 0 auto; }
    .preview-metadata:empty { display: none; }
    .preview-empty { display: flex; align-items: center; justify-content: center; min-height: 80px; color: var(--muted); }
    .preview-header { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 10px; padding-bottom: 8px; border-bottom: 1px solid var(--panel-strong); }
    .preview-header strong { font-size: 12px; word-break: break-all; flex: 1; min-width: 0; overflow: hidden; }
    .preview-actions { display: flex; gap: 4px; flex-shrink: 0; }
    .preview-single-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; }
    .preview-file-toolbar {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 10px;
      margin-bottom: 10px;
      padding-bottom: 8px;
      border-bottom: 1px solid var(--panel-strong);
    }
    .preview-file-toolbar-main {
      min-width: 0;
      flex: 1;
      display: flex;
      flex-direction: column;
      gap: 4px;
    }
    .preview-file-title-display {
      font-size: 12px;
      font-weight: 700;
      line-height: 1.35;
      color: var(--text);
      white-space: nowrap;
      overflow: hidden;
      text-overflow: ellipsis;
    }
    .preview-file-meta-simple {
      display: flex;
      flex-direction: column;
      gap: 2px;
      min-width: 0;
    }
    .preview-file-meta-line {
      display: flex;
      flex-wrap: wrap;
      gap: 10px;
      font-size: 11px;
      line-height: 1.35;
      color: var(--muted);
    }
    .preview-file-meta-line span { white-space: nowrap; }
    .preview-file-meta-line strong {
      color: var(--text);
      font-weight: 600;
    }
    .preview-file-toolbar .preview-filename-editor {
      display: none;
      align-items: center;
      gap: 6px;
      min-width: 0;
    }
    .preview-file-toolbar.editing .preview-file-title-display { display: none; }
    .preview-file-toolbar.editing .preview-filename-editor { display: flex; }
    .preview-file-toolbar-status {
      margin: 0;
      min-height: 0;
    }
    .preview-file-action-btn {
      width: 24px;
      height: 24px;
    }
    .preview-file-action-btn .project-asset-action-icon {
      width: 13px;
      height: 13px;
    }
    .preview-card { border: 1px solid var(--panel-strong); border-radius: 8px; background: var(--panel); padding: 10px; }
    .preview-card-header { padding-bottom: 8px; }
    .preview-header-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; align-items: center; }
    .preview-filename-editor { display: flex; align-items: center; gap: 6px; min-width: 0; flex: 1; }
    .preview-filename-input { flex: 1; min-width: 0; margin: 0; padding: 6px 8px; font-size: 12px; background: var(--card); border-color: var(--panel-strong); }
    .preview-filename-ext { font-size: 12px; color: var(--muted); white-space: nowrap; }
    .preview-inline-hint { margin-top: 4px; font-size: 10px; }
    .preview-inline-status { margin: 2px 0 0; min-height: 16px; font-size: 11px; }
    .preview-facts-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
    .preview-fact { display: flex; flex-direction: column; gap: 2px; padding: 6px 7px; border: 1px solid var(--panel-strong); border-radius: 6px; background: var(--card); min-width: 0; }
    .preview-fact-full { grid-column: 1 / -1; }
    .preview-fact-value { font-size: 12px; line-height: 1.35; word-break: break-word; }
    .preview-details { display: flex; flex-direction: column; gap: 4px; margin-bottom: 10px; }
    .preview-details.preview-details-dense { gap: 2px; margin-bottom: 8px; }
    .preview-row { display: flex; justify-content: space-between; align-items: baseline; font-size: 12px; gap: 8px; overflow: hidden; }
    .preview-label { color: var(--muted); font-size: 10px; text-transform: uppercase; letter-spacing: 0.5px; flex-shrink: 0; }
    .preview-id { font-size: 11px; text-align: right; word-break: break-all; }
    .preview-summary-section { }
    .preview-summary-title-row { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 6px; }
    .preview-summary-title { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.4px; color: var(--muted); }
    .preview-summary-editor { display: flex; flex-direction: column; gap: 0; overflow-x: hidden; }
    .preview-summary-fields-grid { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0; }
    .preview-summary-field { display: flex; flex-direction: column; gap: 5px; border: none; border-bottom: 1px solid var(--panel-strong); border-radius: 0; background: transparent; padding: 10px 0; min-width: 0; position: relative; overflow: visible; }
    .preview-summary-field:first-child { padding-top: 0; }
    .preview-summary-field:last-child { border-bottom: none; padding-bottom: 0; }
    .preview-summary-field-full { grid-column: 1 / -1; }
    .preview-summary-label-row { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
    .preview-summary-field label { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.4px; }
    .preview-summary-help { width: 14px; height: 14px; border: 1px solid var(--panel-strong); border-radius: 50%; font-size: 9px; color: var(--muted); background: var(--panel); display: inline-flex; align-items: center; justify-content: center; cursor: pointer; line-height: 1; user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; position: relative; z-index: 20; flex: 0 0 auto; }
    .preview-summary-help:hover { border-color: var(--text); color: var(--text); }
    .preview-summary-help::after, .preview-summary-help::before { content: none !important; display: none !important; }
    .summary-help-popover { position: fixed; z-index: 6000; display: none; pointer-events: none; background: #0d1228; color: #fff; border-radius: 6px; padding: 6px 8px; font-size: 10px; font-weight: 500; line-height: 1.35; max-width: min(320px, 72vw); box-shadow: 0 4px 16px rgba(0,0,0,0.22); }
    .preview-summary-field input,
    .preview-summary-field textarea { width: 100%; max-width: 100%; font-size: 12px; margin: 0; box-sizing: border-box; display: block; }
    .preview-summary-field textarea { min-height: 68px; resize: vertical; }
    .preview-summary-notes { min-height: 108px !important; resize: vertical; }
    .preview-summary-actions { display: flex; justify-content: flex-end; }
    .preview-placeholder { margin-top: 0; padding: 12px; border: 1px dashed var(--panel-strong); border-radius: 6px; text-align: center; font-size: 11px; color: var(--muted); background: var(--panel); }
    .preview-file-list { display: flex; flex-direction: column; gap: 3px; max-height: 200px; overflow-y: auto; }
    .preview-file-entry { display: flex; justify-content: space-between; align-items: center; font-size: 12px; padding: 3px 0; border-bottom: 1px solid var(--panel-strong); overflow: hidden; min-height: 24px;}
    .preview-file-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; min-width: 0; flex: 1; }

    /* Parse status badges - Mono theme */
    .parse-badge { display: inline-block; padding: 2px 6px; border-radius: 4px; font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.3px; vertical-align: middle; line-height: 14px; border: 1px solid; }
    .parse-badge.done { background: #f1f8e9; color: #2e7d32; border-color: #c8e6c9; }
    .parse-badge.error { background: #fff5f5; color: #c62828; border-color: #ffcdd2; }
    .parse-badge.pending { background: #fff8e1; color: #856404; border-color: #ffe082; }
    .parse-badge.parsing { background: var(--panel); color: var(--text); border-color: var(--panel-strong); }
    .parse-badge.skipped { background: var(--panel); color: var(--muted); border-color: var(--panel-strong); }
    .parse-error-box { margin-top: 8px; padding: 8px 10px; background: #fff5f5; border: 1px solid #ffcdd2; border-radius: 6px; font-size: 11px; color: #c62828; word-break: break-word; white-space: pre-wrap; max-height: 120px; overflow-y: auto; }
    .parse-hint { margin-top: 8px; padding: 8px 10px; background: #fff8e1; border: 1px solid #ffe082; border-radius: 6px; font-size: 11px; color: #856404; }

    /* Inline parse status (file list) */
    .parse-status { font-size: 11px; font-weight: 500; }
    .parse-status.done { color: #2e7d32; }
    .parse-status.error { color: #c62828; }
    .parse-status.skipped { color: #c62828; }
    .parse-status.pending { color: #856404; }
    .parse-status.parsing { color: var(--muted); }

    /* Storage quota bar */
    .storage-bar-container { margin-bottom: 4px; }
    .storage-bar-label { font-size: 11px; color: var(--muted); margin-bottom: 4px; }
    .storage-bar-track { height: 6px; background: var(--panel-strong); border-radius: 3px; overflow: hidden; }
    .storage-bar-fill { height: 100%; border-radius: 3px; transition: width 0.3s; }
    .storage-bar-fill-ok { background: #2e7d32; }
    .storage-bar-fill-warn { background: #856404; }
    .storage-bar-fill-critical { background: #c62828; }

    /* External file badge */
    .file-external-badge { font-size: 9px; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; background: var(--panel-strong); color: var(--muted); border-radius: 3px; padding: 1px 4px; margin-left: 5px; vertical-align: middle; }
    .preview-external-source { margin-bottom: 8px; }
    .preview-external-uri-row {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 10px;
      flex-wrap: wrap;
    }
    .preview-external-uri-link {
      color: var(--text);
      text-decoration: underline;
      text-underline-offset: 2px;
      word-break: break-all;
      min-width: 0;
      flex: 1;
    }
    .preview-external-uri-link:hover { color: color-mix(in oklab, var(--brand) 70%, var(--text)); }
    .preview-external-uri-actions {
      display: flex;
      align-items: center;
      gap: 6px;
      flex-wrap: wrap;
      flex-shrink: 0;
    }

    /* Cancel upload button (inline in progress bar header) */
    .upload-cancel-btn { margin-left: auto; flex-shrink: 0; }

    /* Asset upload inline progress row */
    .asset-upload-progress-row { padding: 10px 14px; background: var(--panel); border-bottom: 1px solid var(--panel-strong); }
    .asset-upload-progress-row .upload-progress-header { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
    .asset-upload-progress-row .upload-progress-track { height: 4px; background: var(--panel-strong); border-radius: 2px; overflow: hidden; }
    .asset-upload-progress-row .upload-progress-fill { height: 100%; background: var(--primary, #3b82f6); border-radius: 2px; transition: width 0.15s linear; }

    /* Plot controls - Mono theme */
    .plot-section {
      margin-top: 8px;
      width: 100%;
      box-sizing: border-box;
      display: flex;
      flex-direction: column;
      gap: 8px;
      flex: 1 1 auto;
      min-height: 0;
    }
    .plot-stage {
      position: relative;
      flex: 1 1 auto;
      min-height: var(--plot-min-height);
      display: flex;
      flex-direction: column;
      overflow: hidden;
    }
    .plot-controls {
      display: flex;
      flex-direction: column;
      gap: 6px;
      align-items: stretch;
      flex: 0 0 auto;
    }
    .plot-controls-row {
      display: flex;
      align-items: center;
      gap: 10px;
      min-width: 0;
    }
    .plot-controls-row-main > label {
      font-size: 12px;
      font-weight: 700;
      letter-spacing: 0.2px;
      color: var(--text);
    }
    .plot-controls-row-main select {
      flex: 0 1 170px;
      min-width: 0;
      max-width: 170px;
    }
    .plot-controls-row-secondary { gap: 8px; align-items: center; }
    .plot-toggle-chip {
      display: inline-flex;
      align-items: center;
      gap: 7px;
      padding: 4px 10px;
      border: 1px solid var(--panel-strong);
      border-radius: 999px;
      background: color-mix(in oklab, var(--panel) 78%, var(--card));
      color: var(--text);
      cursor: pointer;
      font-size: 11px;
      line-height: 1;
      white-space: nowrap;
    }
    .plot-toggle-chip input[type="checkbox"] { margin: 0; width: 13px; height: 13px; }
    .plot-toggle-chip.disabled { opacity: 0.5; cursor: default; }
    .plot-toggle-chip span { font-size: 11px; text-transform: none; letter-spacing: 0; }
    .plot-cycle-controls-host { display: inline-flex; min-width: 0; }
    .plot-cycle-controls {
      display: inline-flex;
      align-items: center;
      gap: 10px;
      min-width: 0;
      flex-wrap: wrap;
    }
    .plot-cycle-label {
      font-size: 10px;
      color: var(--muted);
      text-transform: uppercase;
      letter-spacing: 0.5px;
      white-space: nowrap;
    }
    .plot-cycle-chip-row { display: inline-flex; align-items: center; gap: 6px; flex-wrap: wrap; min-width: 0; }
    .plot-cycle-chip {
      --plot-cycle-color: var(--text);
      display: inline-flex;
      align-items: center;
      gap: 5px;
      padding: 3px 8px;
      border: 1px solid color-mix(in oklab, var(--plot-cycle-color) 36%, var(--panel-strong));
      border-radius: 999px;
      background: color-mix(in oklab, var(--plot-cycle-color) 10%, var(--card));
      color: var(--text);
      cursor: pointer;
      font-size: 11px;
      line-height: 1;
    }
    .plot-cycle-chip.selected {
      background: color-mix(in oklab, var(--plot-cycle-color) 16%, var(--card));
      border-color: color-mix(in oklab, var(--plot-cycle-color) 56%, var(--panel-strong));
      box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--plot-cycle-color) 28%, transparent);
    }
    .plot-cycle-chip input[type="checkbox"] { margin: 0; width: 12px; height: 12px; accent-color: var(--plot-cycle-color); }
    .plot-cycle-quick { padding: 3px 8px; min-height: 24px; }
    .plot-resolution-note-host {
      display: inline-flex;
      align-items: center;
      min-width: 0;
      flex: 1 1 220px;
    }
    .plot-resolution-note {
      font-size: 11px;
      color: var(--muted);
      line-height: 1.35;
    }
    .plot-legend-toggle-slot { margin-left: auto; display: inline-flex; }
    .plot-controls label { font-size: 10px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.5px; flex-shrink: 0; }
    .plot-controls select { padding: 3px 6px; font-size: 11px; border: 1px solid var(--panel-strong); border-radius: 4px; background: var(--card); font-family: inherit; }
    .plot-loading {
      position: absolute;
      inset: 0;
      z-index: 3;
      display: none;
      align-items: center;
      justify-content: center;
      background: color-mix(in oklab, var(--card) 42%, transparent);
      backdrop-filter: grayscale(0.15);
    }
    .plot-loading::before {
      content: "";
      position: absolute;
      inset: 0;
      background: color-mix(in oklab, var(--panel) 34%, transparent);
    }
    .plot-loading.visible {
      display: flex !important;
    }
    .plot-loading > span,
    .plot-loading-text {
      position: relative;
      z-index: 1;
      padding: 8px 14px;
      border: 1px solid var(--panel-strong);
      border-radius: 999px;
      background: color-mix(in oklab, var(--card) 92%, var(--panel));
      color: var(--muted);
      font-size: 12px;
      box-shadow: 0 10px 26px rgba(13, 18, 40, 0.12);
    }
    .plot-stage > div[id^="plot-container-"] { width: 100%; height: 100%; min-height: var(--plot-min-height); flex: 1 1 auto; }

    /* Project sections in sidebar */
    .project-section { margin-bottom: 16px; }
    .project-section .section-label { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.5px; color: var(--muted); margin-bottom: 8px; padding: 0 2px; }
    .project-section .section-label-toggle { width: 100%; display: flex; align-items: center; justify-content: space-between; border: none; background: none; font-family: inherit; text-align: left; cursor: pointer; }
    .project-section .section-label-toggle:hover { color: var(--text); }
    .section-toggle-chevron { display: inline-block; font-size: 9px; line-height: 1; transition: transform 0.16s ease; }
    .section-toggle-chevron.collapsed { transform: rotate(-90deg); }
    .section-count { font-size: 9px; font-weight: 700; padding: 1px 5px; border-radius: 8px; background: color-mix(in oklab, var(--panel-strong) 80%, transparent); color: var(--muted); min-width: 16px; text-align: center; }
    .shared-section .section-label { color: var(--brand); }
    .card.shared { border-left: 3px solid var(--brand); }
    .card.shared-resource-card { border-left: 3px solid color-mix(in oklab, var(--brand) 70%, var(--panel-strong)); }

    /* Role badges */
    .role-badge { display: inline-block; padding: 2px 6px; border-radius: 4px; font-size: 9px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.3px; }
    .role-badge.read { background: var(--panel); color: var(--muted); }
    .role-badge.write { background: #e3f2fd; color: #1565c0; }
    .role-badge.admin { background: #fce4ec; color: #c2185b; }

    /* Shared project badge */
    .shared-badge { font-size: 11px; color: var(--muted); margin-left: 8px; font-weight: 400; }
    .shared-project { border-left: 3px solid var(--brand); }

    /* Global / published project */
    .global-section .section-label { color: #2e7d32; }
    .card.global-project-card { border-left: 3px solid #43a047; }
    .global-badge {
      display: inline-block;
      background: #e8f5e9;
      color: #2e7d32;
      font-size: 9px;
      font-weight: 700;
      padding: 2px 6px;
      border-radius: 4px;
      text-transform: uppercase;
      letter-spacing: 0.4px;
      vertical-align: middle;
    }
    .global-badge-header {
      font-size: 11px;
      padding: 3px 8px;
      border-radius: 5px;
    }
    .btn-icon.active-publish svg { stroke: #2e7d32; stroke-width: 2.2; }
    .btn-icon.active-publish { color: #2e7d32; }

    /* Share modal styles */
    .share-modal { min-width: 460px; max-width: 560px; }
    .share-modal h3 { margin-bottom: 4px; }

    .user-search-section { margin-bottom: 16px; }
    .user-search-wrapper { position: relative; }
    .user-search-results { position: absolute; top: 100%; left: 0; right: 0; background: var(--card); border: 1px solid var(--panel-strong); border-radius: 6px; margin-top: 4px; max-height: 200px; overflow-y: auto; z-index: 10; box-shadow: var(--shadow); }
    .search-result-item { padding: 10px 12px; cursor: pointer; display: flex; justify-content: space-between; align-items: center; gap: 8px; transition: background 0.1s; border-bottom: 1px solid var(--panel-strong); }
    .search-result-item:last-child { border-bottom: none; }
    .search-result-item:hover { background: var(--panel); }
    .search-result-item.muted { cursor: default; }
    .search-result-item.muted:hover { background: transparent; }
    .search-result-name { font-size: 13px; font-weight: 500; }
    .search-result-email { font-size: 11px; }

    .members-section { margin-bottom: 16px; }
    .members-list { border: 1px solid var(--panel-strong); border-radius: 6px; max-height: 300px; overflow-y: auto; }
    .member-item { display: flex; justify-content: space-between; align-items: center; padding: 10px 12px; border-bottom: 1px solid var(--panel-strong); }
    .member-item:last-child { border-bottom: none; }
    .member-info { display: flex; flex-direction: column; gap: 2px; min-width: 0; flex: 1; }
    .member-name { font-size: 13px; font-weight: 500; display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
    .member-email { font-size: 11px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .member-actions { display: flex; align-items: center; gap: 6px; flex-shrink: 0; }
    .role-select { padding: 4px 8px; font-size: 11px; border: 1px solid var(--panel-strong); border-radius: 4px; background: var(--card); font-family: inherit; cursor: pointer; }
    .role-label { font-size: 11px; color: var(--muted); padding: 4px 8px; }

    .owner-badge { font-size: 9px; padding: 2px 5px; background: #fce4ec; color: #c2185b; border-radius: 3px; font-weight: 600; text-transform: uppercase; }
    .you-badge { font-size: 9px; padding: 2px 5px; background: var(--panel); color: var(--muted); border-radius: 3px; font-weight: 600; text-transform: uppercase; }
    .presence-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; margin-right: 5px; vertical-align: middle; flex-shrink: 0; }
    .presence-dot.presence-online { background: #4caf50; box-shadow: 0 0 0 2px color-mix(in oklab, #4caf50 30%, transparent); }
    .presence-dot.presence-recent { background: #ff9800; }
    .presence-dot.presence-away { background: var(--muted); opacity: 0.5; }
    .presence-dot.presence-unknown { background: var(--muted); opacity: 0.3; }
    .presence-label { font-size: 10px; }
    .presence-label.presence-online { color: #4caf50; }
    .presence-label.presence-recent { color: #ff9800; }

    /* Chat launch button */
    .chat-launch-btn {
      position: fixed;
      right: 24px;
      bottom: 24px;
      z-index: 2147483645;
      min-width: 0;
      height: 26px;
      padding: 0 9px;
      border: 1px solid color-mix(in oklab, var(--panel-strong) 72%, var(--text));
      border-radius: 4px;
      background: var(--card);
      box-shadow: 0 1px 2px rgba(13, 18, 40, 0.06);
      color: color-mix(in oklab, var(--text) 68%, transparent);
      font-family: inherit;
      font-size: 10px;
      font-weight: 600;
      letter-spacing: 0.2px;
      cursor: pointer;
      display: inline-flex;
      align-items: center;
      gap: 5px;
      pointer-events: auto;
    }
    .chat-launch-btn:hover {
      border-color: color-mix(in oklab, var(--brand) 62%, var(--panel-strong));
      color: color-mix(in oklab, var(--brand) 74%, var(--text));
      background: color-mix(in oklab, var(--panel) 62%, var(--card));
    }
    body.modal-open .chat-launch-btn,
    body.fb-overlay-open .chat-launch-btn,
    body.measurement-fullscreen-active .chat-launch-btn { display: none; }
    .chat-unread-badge {
      background: #e53935;
      color: #fff;
      border-radius: 8px;
      font-size: 9px;
      font-weight: 700;
      padding: 0 4px;
      min-width: 14px;
      text-align: center;
      line-height: 14px;
      height: 14px;
    }

    /* Chat panel */
    .chat-panel {
      position: fixed;
      right: 24px;
      bottom: 58px;
      z-index: 2147483644;
      width: 300px;
      height: 440px;
      background: var(--card);
      border: 1px solid var(--panel-strong);
      border-radius: 10px;
      box-shadow: 0 8px 32px rgba(0,0,0,0.16);
      display: flex;
      flex-direction: column;
      overflow: hidden;
    }
    .chat-panel-header {
      display: flex;
      align-items: center;
      gap: 6px;
      padding: 9px 10px 8px;
      border-bottom: 1px solid var(--panel-strong);
      flex-shrink: 0;
    }
    .chat-back-btn-icon { border: none; background: none; cursor: pointer; color: var(--brand); font-size: 15px; padding: 0 2px; line-height: 1; flex-shrink: 0; }
    .chat-back-btn-icon:hover { color: var(--text); }
    .chat-panel-title { font-size: 12px; font-weight: 700; letter-spacing: 0.2px; flex: 1; }
    .chat-panel-close { border: none; background: none; cursor: pointer; color: var(--muted); font-size: 13px; padding: 2px 4px; border-radius: 3px; flex-shrink: 0; }
    .chat-panel-close:hover { background: var(--panel); color: var(--text); }
    .chat-panel-body { display: flex; flex-direction: column; flex: 1; min-height: 0; }

    /* People view */
    #chat-people-view { display: flex; flex-direction: column; flex: 1; min-height: 0; }
    .chat-filter-wrap { padding: 7px 8px 6px; border-bottom: 1px solid var(--panel-strong); flex-shrink: 0; }
    .chat-filter-input { width: 100%; box-sizing: border-box; padding: 5px 8px; font-size: 12px; font-family: inherit; border: 1px solid var(--panel-strong); border-radius: 5px; background: var(--bg); color: var(--text); }
    .chat-filter-input:focus { outline: none; border-color: var(--brand); }
    .chat-people-list { flex: 1; overflow-y: auto; }
    .chat-person-item {
      display: flex;
      align-items: center;
      gap: 9px;
      padding: 8px 11px;
      cursor: pointer;
      border-bottom: 1px solid var(--panel-strong);
      transition: background 0.1s;
    }
    .chat-person-item:last-child { border-bottom: none; }
    .chat-person-item:hover { background: var(--panel); }
    .chat-thread-avatar {
      width: 28px;
      height: 28px;
      border-radius: 50%;
      background: var(--panel-strong);
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 11px;
      font-weight: 700;
      color: var(--muted);
      flex-shrink: 0;
      text-transform: uppercase;
      position: relative;
    }
    .chat-thread-avatar .presence-dot {
      position: absolute;
      bottom: 0;
      right: 0;
      width: 8px;
      height: 8px;
      border: 1.5px solid var(--card);
      border-radius: 50%;
    }
    .chat-thread-info { flex: 1; min-width: 0; }
    .chat-thread-name { font-size: 12px; font-weight: 600; display: flex; align-items: center; justify-content: space-between; }
    .chat-thread-time { font-size: 10px; color: var(--muted); white-space: nowrap; margin-left: 4px; flex-shrink: 0; }
    .chat-thread-preview { font-size: 11px; color: var(--muted); margin-top: 2px; display: flex; align-items: center; justify-content: space-between; gap: 4px; }
    .chat-thread-unread {
      background: color-mix(in oklab, var(--brand) 80%, var(--card));
      color: #fff;
      border-radius: 8px;
      font-size: 9px;
      font-weight: 700;
      padding: 0 5px;
      min-width: 16px;
      text-align: center;
      line-height: 16px;
      height: 16px;
      flex-shrink: 0;
    }
    .chat-empty { padding: 20px 12px; text-align: center; font-size: 12px; }

    /* Conversation view */
    .chat-conv-view { display: flex; flex-direction: column; flex: 1; min-height: 0; }
    .chat-conv-messages { flex: 1; overflow-y: auto; padding: 10px 11px; display: flex; flex-direction: column; gap: 6px; min-height: 0; }
    .chat-msg { max-width: 82%; word-break: break-word; }
    .chat-msg-out { align-self: flex-end; }
    .chat-msg-in { align-self: flex-start; }
    .chat-msg-bubble { padding: 6px 10px; border-radius: 12px; font-size: 12px; line-height: 1.4; }
    .chat-msg-out .chat-msg-bubble { background: color-mix(in oklab, var(--brand) 85%, var(--card)); color: #fff; border-bottom-right-radius: 3px; }
    .chat-msg-in .chat-msg-bubble { background: var(--panel); color: var(--text); border-bottom-left-radius: 3px; }
    .chat-msg-time { font-size: 9px; color: var(--muted); margin-top: 2px; text-align: right; }
    .chat-msg-in .chat-msg-time { text-align: left; }
    .chat-conv-input-row { display: flex; gap: 6px; padding: 7px 8px; border-top: 1px solid var(--panel-strong); flex-shrink: 0; align-items: flex-end; }
    .chat-conv-input { flex: 1; font-family: inherit; font-size: 12px; border: 1px solid var(--panel-strong); border-radius: 6px; padding: 5px 8px; background: var(--bg); color: var(--text); resize: none; max-height: 80px; overflow-y: auto; line-height: 1.4; }
    .chat-conv-input:focus { outline: none; border-color: var(--brand); }
    .chat-conv-send { flex-shrink: 0; font-size: 11px; padding: 5px 10px; height: auto; }
    /* Ensure hidden attribute always wins over display:flex/block rules above */
    .chat-launch-btn[hidden],
    .chat-unread-badge[hidden],
    .chat-panel[hidden],
    .chat-back-btn-icon[hidden],
    #chat-people-view[hidden],
    .chat-conv-view[hidden] { display: none !important; }

    /* Share modal tabs */
    .share-tabs { display: flex; gap: 4px; margin-bottom: 16px; border-bottom: 1px solid var(--panel-strong); padding-bottom: 8px; }
    .share-tab { padding: 6px 12px; border: none; background: none; font-family: inherit; font-size: 12px; cursor: pointer; border-radius: 4px; color: var(--muted); transition: background 0.15s, color 0.15s; }
    .share-tab:hover { background: var(--panel); color: var(--text); }
    .share-tab.active { background: var(--panel); color: var(--text); font-weight: 600; }
    .share-tab-content { }

    /* Import-from-project tree */
    .import-tree-container { border: 1px solid var(--panel-strong); border-radius: 6px; max-height: 360px; overflow-y: auto; background: var(--card); margin-bottom: 10px; font-size: 12px; }
    .import-tree-placeholder { padding: 14px 12px; color: var(--muted); font-size: 12px; }
    .import-tree-inner-msg { padding: 6px 10px 6px 44px; color: var(--muted); font-size: 11px; }
    .import-tree-run { border-bottom: 1px solid color-mix(in oklab, var(--panel-strong) 55%, transparent); }
    .import-tree-run:last-child { border-bottom: none; }
    .import-tree-row { display: flex; align-items: center; gap: 5px; padding: 5px 10px; }
    .import-tree-measurement { background: color-mix(in oklab, var(--panel) 45%, transparent); font-weight: 500; }
    .import-tree-measurement:hover { background: var(--panel); }
    .import-tree-bucket { padding-left: 28px; border-top: 1px solid color-mix(in oklab, var(--panel-strong) 40%, transparent); }
    .import-tree-batch { padding-left: 52px; color: var(--muted); font-size: 11px; border-top: 1px solid color-mix(in oklab, var(--panel-strong) 25%, transparent); }
    .import-tree-expand-btn { display: inline-flex; align-items: center; justify-content: center; width: 18px; height: 18px; min-width: 18px; border: none; background: none; cursor: pointer; color: var(--muted); font-size: 11px; padding: 0; border-radius: 3px; flex-shrink: 0; }
    .import-tree-expand-btn:hover { background: var(--panel-strong); color: var(--text); }
    .import-tree-expand-spacer { display: inline-block; width: 18px; min-width: 18px; flex-shrink: 0; }
    .import-tree-label { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .import-tree-meta { font-size: 10px; color: var(--muted); flex-shrink: 0; margin-left: auto; padding-left: 8px; }
    .import-tree-children { }

    /* Measurement share list */
    .measurements-share-list { border: 1px solid var(--panel-strong); border-radius: 6px; max-height: 300px; overflow-y: auto; }
    .measurement-share-item { display: flex; justify-content: space-between; align-items: center; padding: 10px 12px; border-bottom: 1px solid var(--panel-strong); }
    .measurement-share-item:last-child { border-bottom: none; }
    .measurement-share-label { display: flex; align-items: center; gap: 8px; cursor: pointer; flex: 1; min-width: 0; }
    .measurement-share-toggle { width: 16px; height: 16px; cursor: pointer; flex-shrink: 0; }
    .measurement-share-title { font-size: 13px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .measurement-share-date { font-size: 11px; flex-shrink: 0; margin-left: 8px; }
    .measurement-share-actions { display: flex; align-items: center; gap: 8px; margin-left: auto; }
    .measurement-card-imported { border-left: 3px solid color-mix(in oklab, var(--brand) 70%, var(--panel-strong)); }

    .shared-resource-detail-card { border-left: 3px solid var(--brand); }
    .shared-resource-section { margin-top: 18px; }
    .shared-resource-list { border: 1px solid var(--panel-strong); border-radius: 8px; overflow: hidden; background: var(--card); }
    .shared-resource-list-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 14px; border-bottom: 1px solid var(--panel-strong); }
    .shared-resource-list-item:last-child { border-bottom: none; }
    .shared-resource-list-main { min-width: 0; display: flex; flex-direction: column; gap: 4px; }
    .shared-resource-list-main strong { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .shared-resource-preview { border: 1px solid var(--panel-strong); border-radius: 8px; padding: 14px; background: var(--panel); }
    .shared-asset-inline-preview { margin: 0; white-space: pre-wrap; word-break: break-word; font-size: 12px; line-height: 1.55; font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, monospace; }

    /* Transfer warning */
    .transfer-warning { padding: 12px; background: #fff8e1; border: 1px solid #ffe082; border-radius: 6px; margin-bottom: 12px; font-size: 12px; color: #856404; }

    /* Inline file preview */
    .file-preview-toggle { width: 24px; height: 24px; padding: 0; border: 1px solid transparent; border-radius: 4px; background: none; cursor: pointer; color: var(--muted); font-size: 14px; line-height: 24px; text-align: center; flex-shrink: 0; transition: background 0.15s, color 0.15s, border-color 0.15s; }
    .file-preview-toggle:hover { background: var(--panel); color: var(--text); border-color: var(--panel-strong); }
    .file-preview-toggle.loading { animation: spin 1s linear infinite; }

    .inline-preview-container { margin: 4px 0 6px 24px; padding: 10px 12px; background: var(--panel); border: 1px solid var(--panel-strong); border-radius: 6px; max-height: 400px; overflow: auto; }
    .inline-preview-text { margin: 0; font-size: 11px; font-family: inherit; white-space: pre-wrap; word-wrap: break-word; line-height: 1.5; color: var(--text); }
    .inline-preview-table-wrap { overflow-x: auto; }
    .inline-preview-table { width: 100%; border-collapse: collapse; font-size: 11px; }
    .inline-preview-table th { position: sticky; top: 0; background: var(--panel-strong); text-align: left; padding: 4px 8px; font-weight: 600; color: var(--text); border-bottom: 1px solid var(--panel-strong); white-space: nowrap; }
    .inline-preview-table td { padding: 3px 8px; border-bottom: 1px solid var(--panel-strong); color: var(--text); white-space: nowrap; }
    .inline-preview-table tbody tr:hover { background: var(--card); }
    .inline-preview-loading { font-size: 12px; color: var(--muted); padding: 12px 0; text-align: center; }
    .inline-preview-error { font-size: 12px; color: #c62828; padding: 8px 0; }
    .inline-preview-truncated { margin-top: 8px; padding: 6px 10px; background: #fff8e1; border: 1px solid #ffe082; border-radius: 4px; font-size: 11px; color: #856404; }

    @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }

    /* Auth overlay */
    .auth-overlay { position: fixed; inset: 0; background: var(--bg); z-index: 300; transition: opacity 0.3s ease; }
    .auth-overlay.done { opacity: 0; pointer-events: none; }
    body.app-preload {
      overflow: hidden;
    }

    /* Nav toggle */
    .nav-toggle { display: flex; gap: 2px; background: var(--panel); border-radius: 6px; padding: 2px; }
    .nav-btn { padding: 5px 12px; border: none; background: transparent; font-family: inherit; font-size: 12px; font-weight: 500; cursor: pointer; border-radius: 4px; color: var(--muted); transition: background 0.15s, color 0.15s; }
    .nav-btn:hover { color: var(--text); }
    .nav-btn.active { background: var(--card); color: var(--text); font-weight: 600; box-shadow: var(--shadow); }
    .overlay-launcher {
      position: fixed;
      left: 24px;
      bottom: 24px;
      z-index: 2147483646;
      display: inline-flex;
      align-items: center;
      gap: 6px;
      padding: 0;
      pointer-events: none;
      background: none;
    }
    body.modal-open .overlay-launcher,
    body.fb-overlay-open .overlay-launcher,
    body.measurement-fullscreen-active .overlay-launcher { display: none; }
    .overlay-launcher.hidden { display: none; }
    .overlay-launch-btn {
      min-width: 0;
      height: 26px;
      padding: 0 9px;
      border: 1px solid color-mix(in oklab, var(--panel-strong) 72%, var(--text));
      border-radius: 4px;
      background: var(--card);
      box-shadow: 0 1px 2px rgba(13, 18, 40, 0.06);
      color: color-mix(in oklab, var(--text) 68%, transparent);
      font-family: inherit;
      font-size: 10px;
      font-weight: 600;
      letter-spacing: 0.2px;
      text-transform: none;
      cursor: pointer;
      pointer-events: auto;
      display: inline-flex;
      align-items: center;
      justify-content: center;
      gap: 6px;
      transition: border-color 0.15s, background-color 0.15s, color 0.15s, opacity 0.15s;
    }
    .overlay-launch-btn:hover {
      border-color: color-mix(in oklab, var(--brand) 62%, var(--panel-strong));
      color: color-mix(in oklab, var(--brand) 74%, var(--text));
      background: color-mix(in oklab, var(--panel) 62%, var(--card));
    }
    .overlay-launch-btn:disabled {
      opacity: 0.5;
      cursor: not-allowed;
    }
    .overlay-launch-btn:disabled:hover {
      border-color: color-mix(in oklab, var(--panel-strong) 72%, var(--text));
      color: color-mix(in oklab, var(--text) 68%, transparent);
      background: var(--card);
    }
    .overlay-launch-key {
      display: inline-flex;
      align-items: center;
      justify-content: center;
      min-width: 14px;
      height: 14px;
      padding: 0 3px;
      border: 1px solid color-mix(in oklab, var(--panel-strong) 84%, transparent);
      border-radius: 3px;
      background: color-mix(in oklab, var(--panel) 70%, transparent);
      color: color-mix(in oklab, var(--text) 64%, var(--muted));
      font-size: 10px;
      line-height: 1;
      text-transform: lowercase;
    }

    /* Tag chip input */
    .tag-wrap { display:flex; flex-wrap:wrap; gap:4px; align-items:center;
      border:1px solid var(--panel-strong); border-radius:6px;
      padding:4px 6px; min-height:32px; background:var(--card); cursor:text; }
    .tag-wrap:focus-within { outline:2px solid var(--brand); outline-offset:-1px; }
    .tag-chip { display:inline-flex; align-items:center; gap:3px;
      background:#eef2ff; border:1px solid #dbe4ff;
      border-radius:4px; padding:1px 6px; font-size:11px; }
    .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-family:inherit; font-size:12px; color:var(--text); min-width:80px; flex:1; }
    .tag-backing { display:none; }

    /* Autocomplete dropdown */
    .summary-ac-wrap { position:relative; }
    .summary-ac-list { position:absolute; top:100%; left:0; right:0; z-index:200;
      background:var(--card); border:1px solid var(--panel-strong); border-radius:6px;
      box-shadow:0 4px 12px rgba(0,0,0,.12); max-height:180px; overflow-y:auto; }
    .summary-ac-item { padding:5px 10px; font-size:12px; cursor:pointer; }
    .summary-ac-item:hover { background:var(--panel); }

    /* Search history sidebar */
    .search-hist-item { position:relative; padding:6px 24px 6px 6px; border-radius:4px; cursor:pointer;
      border:1px solid transparent; margin-bottom:3px; }
    .search-hist-item:hover { background:var(--panel); border-color:var(--panel-strong); }
    .search-hist-label { font-size:11px; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .search-hist-meta { font-size:10px; color:var(--muted); margin-top:1px; }
    .search-hist-del { position:absolute; top:5px; right:4px; background:none; border:none; cursor:pointer;
      font-size:14px; color:var(--muted); padding:0 3px; line-height:1; opacity:0; }
    .search-hist-item:hover .search-hist-del { opacity:0.7; }
    .search-hist-del:hover { opacity:1 !important; color:var(--text); }

    /* Dataset search view */
    .ds-search-wrap { padding:16px; max-width:900px; }
    .ds-filter-row { display:flex; gap:6px; align-items:center; margin-bottom:6px; }
    .ds-filter-key, .ds-filter-op, .ds-filter-val { padding:4px 7px; border:1px solid var(--panel-strong); border-radius:4px; background:var(--bg); color:var(--text); font-family:inherit; font-size:12px; }
    .ds-filter-key:focus, .ds-filter-op:focus, .ds-filter-val:focus { outline:2px solid var(--brand); outline-offset:-1px; border-color:transparent; }
    .ds-filter-key { width:140px; }
    .ds-filter-op  { width:120px; }
    .ds-filter-val { flex:1; }
    .ds-filter-val:disabled { opacity:0.4; cursor:not-allowed; }
    .ds-result-card { background:var(--card); border:1px solid var(--panel-strong);
      border-radius:6px; padding:10px 14px; margin-bottom:8px; }
    .ds-result-header { display:flex; align-items:center; gap:8px; margin-bottom:4px; }
    .ds-result-label { font-weight:600; font-size:13px; flex:1;
      white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
    .ds-result-meta { font-size:11px; color:var(--muted); }
    .ds-result-user { display:flex; flex-wrap:wrap; gap:4px; margin-top:6px; }
    .ds-user-pill { font-size:10px; padding:1px 6px; border-radius:4px;
      background:var(--panel); border:1px solid var(--panel-strong); }

    /* Group Resources - Folder Tree */
    .folder-tree { display: flex; flex-direction: column; gap: 2px; margin-top: 8px; }
    .folder-node { display: flex; align-items: center; gap: 6px; padding: 6px 8px; border-radius: 4px; cursor: pointer; font-size: 12px; transition: background 0.1s; user-select: none; }
    .folder-node:hover { background: var(--panel); }
    .folder-node.active { background: var(--panel); font-weight: 600; border: 1px solid var(--panel-strong); }
    .folder-indent { display: inline-block; }
    .folder-chevron { font-size: 10px; display: inline-block; width: 14px; text-align: center; cursor: pointer; transition: transform 0.15s ease; border-radius: 3px; line-height: 14px; }
    .folder-chevron:hover { background: var(--panel-strong); }
    .folder-chevron.collapsed { transform: rotate(-90deg); }

    /* Group Resources - Breadcrumb */
    .gr-breadcrumb { display: flex; align-items: center; gap: 4px; font-size: 12px; margin-bottom: 12px; flex-wrap: wrap; }
    .gr-breadcrumb-seg { cursor: pointer; color: var(--brand); padding: 2px 4px; border-radius: 3px; }
    .gr-breadcrumb-seg:hover { background: var(--panel); }
    .gr-breadcrumb-sep { color: var(--muted); }
    .gr-breadcrumb-current { font-weight: 600; color: var(--text); }

    /* Group Resources - File List */
    .gr-file-list { display: flex; flex-direction: column; gap: 6px; }
    .gr-item { display: flex; align-items: center; gap: 10px; padding: 10px 12px; border: 1px solid var(--panel-strong); border-radius: 6px; background: var(--card); cursor: pointer; transition: background 0.1s, border-color 0.1s; }
    .gr-item:hover { background: var(--panel); border-color: var(--muted); }
    .gr-item.selected { background: var(--panel); border-color: var(--text); }
    .gr-item-icon { font-size: 16px; flex-shrink: 0; width: 20px; text-align: center; }
    .gr-item-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
    .gr-item-name { font-size: 12px; font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
    .gr-item-meta { font-size: 11px; color: var(--muted); }
    .gr-item-actions { display: flex; gap: 4px; flex-shrink: 0; }
    .gr-file-check { width: 16px; height: 16px; cursor: pointer; flex-shrink: 0; }
    .gr-item.checked { background: var(--panel); }
    .gr-item.gr-drop-target.drop-hover { border-color: var(--text); border-style: solid; background: var(--panel); }
    .folder-node.drop-hover { background: var(--panel); outline: 2px solid var(--text); outline-offset: -2px; border-radius: 4px; }

    /* Group Resources - Bulk Action Bar */
    .gr-bulk-bar { display: flex; align-items: center; gap: 10px; padding: 8px 12px; margin-bottom: 8px; background: var(--panel); border: 1px solid var(--panel-strong); border-radius: 6px; font-size: 12px; }
    .gr-bulk-bar > span { font-weight: 600; white-space: nowrap; }

    /* Group Resources - Zip Progress Overlay */
    .gr-zip-progress-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.4); display: flex; align-items: center; justify-content: center; z-index: 150; }
    .gr-zip-progress-card { background: var(--card); border: 1px solid var(--panel-strong); border-radius: 8px; padding: 24px 28px; min-width: 320px; max-width: 420px; box-shadow: 0 4px 24px rgba(0,0,0,0.15); }

    /* Group Resources - Preview Panel */
    .gr-preview { flex: 1; min-width: 0; border: 1px solid var(--panel-strong); border-radius: 6px; background: var(--card); padding: 16px; overflow-y: auto; overflow-x: hidden; box-sizing: border-box; }
    .gr-preview-header { display: flex; justify-content: space-between; align-items: center; gap: 8px; margin-bottom: 12px; padding-bottom: 10px; border-bottom: 1px solid var(--panel-strong); }
    .gr-preview-header strong { font-size: 13px; word-break: break-all; flex: 1; min-width: 0; }
    .gr-preview-details { display: flex; flex-direction: column; gap: 4px; margin-bottom: 12px; }
    .gr-preview-row { display: flex; justify-content: space-between; font-size: 12px; }
    .gr-preview-label { color: var(--muted); font-size: 10px; text-transform: uppercase; letter-spacing: 0.5px; }
    .gr-preview-content { margin-top: 8px; }
    .gr-preview-content img { max-width: 100%; height: auto; border-radius: 4px; }
    .gr-preview-content iframe { width: 100%; height: 1000px; border: 1px solid var(--panel-strong); border-radius: 4px; }
    .gr-preview-content pre { font-size: 11px; font-family: inherit; white-space: pre-wrap; word-wrap: break-word; line-height: 1.5; max-height: 500px; overflow-y: auto; padding: 12px; background: var(--panel); border-radius: 6px; border: 1px solid var(--panel-strong); }

    /* Group Resources - Content area layout */
    .gr-content { display: flex; gap: 0; position: relative; width: 100%; height: calc(100vh - 53px); overflow: hidden; }
    .gr-list-pane { flex: 0 0 50%; overflow-y: auto; padding: 16px; box-sizing: border-box; min-width: 25%; max-width: 75%; border: 2px solid transparent; transition: border-color 0.15s; }
    .gr-list-pane.gr-upload-hover { border-color: var(--text); border-style: dashed; background: var(--panel); }
    .gr-preview-pane { flex: 1; overflow-y: auto; padding: 16px; box-sizing: border-box; min-width: 25%; }

    /* Group Resources - Search */
    .gr-search-wrap { display: flex; flex-direction: column; gap: 6px; margin-bottom: 8px; }
    .gr-search-input { width: 100%; padding: 10px 12px; box-sizing: border-box; border: 1px solid var(--panel-strong); border-radius: 6px; font-size: 12px; font-family: inherit; background: var(--card); transition: border-color 0.15s; }
    .gr-search-input:focus { outline: none; border-color: var(--text); }
    .gr-search-opts { display: flex; align-items: center; gap: 8px; font-size: 11px; color: var(--muted); }
    .gr-search-opts input[type="checkbox"] { width: 14px; height: 14px; }

    /* Search result badges */
    .match-badge { display: inline-block; padding: 1px 6px; border-radius: 3px; font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.3px; }
    .match-badge.filename { background: var(--panel); color: var(--text); border: 1px solid var(--panel-strong); }
    .match-badge.content { background: #e3f2fd; color: #1565c0; border: 1px solid #bbdefb; }
    .search-snippet { font-size: 11px; color: var(--muted); margin-top: 2px; font-style: italic; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

    /* Group Resources - Preview Loading Spinner */
    .gr-preview-loading { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; padding: 40px 20px; color: var(--muted); font-size: 12px; }
    .gr-preview-spinner { width: 28px; height: 28px; border: 3px solid var(--panel-strong); border-top-color: var(--text); border-radius: 50%; animation: spin 0.8s linear infinite; }

    /* PDF Presentation Overlay */
    .pdf-presentation-overlay { position: fixed; inset: 0; background: #000; z-index: 200; display: flex; flex-direction: column; align-items: center; justify-content: center; }
    .pdf-canvas-wrapper { flex: 1; overflow: auto; width: 100%; padding-top: 35px; scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.25) transparent; touch-action: pan-x pan-y; }
    .pdf-canvas-wrapper::-webkit-scrollbar { width: 8px; height: 8px; }
    .pdf-canvas-wrapper::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.25); border-radius: 4px; }
    .pdf-canvas-wrapper.zoomed { cursor: grab; }
    .pdf-canvas-wrapper.zoomed:active { cursor: grabbing; }
    .pdf-presentation-canvas { display: block; margin: auto; }
    .pdf-presentation-controls { position: fixed; bottom: 20px; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 12px; background: rgba(30,30,30,0.92); backdrop-filter: blur(10px); padding: 8px 20px; border-radius: 30px; z-index: 201; border: 1px solid rgba(255,255,255,0.12); }
    .pdf-presentation-controls button { padding: 6px 16px; border: 1px solid rgba(255,255,255,0.2); border-radius: 6px; background: rgba(255,255,255,0.1); color: #fff; font-family: inherit; font-size: 13px; cursor: pointer; transition: background 0.15s; }
    .pdf-presentation-controls button:hover { background: rgba(255,255,255,0.22); }
    .pdf-presentation-controls span { color: #fff; font-size: 13px; min-width: 80px; text-align: center; }
    .pdf-loading-indicator { display: flex; flex-direction: column; align-items: center; gap: 16px; color: #fff; font-family: inherit; font-size: 14px; }
    .pdf-loading-spinner { width: 40px; height: 40px; border: 3px solid rgba(255,255,255,0.2); border-top-color: #fff; border-radius: 50%; animation: spin 0.8s linear infinite; }

    /* PDF Search Bar */
    .pdf-search-bar { position: fixed; top: 16px; left: 50%; transform: translateX(-50%); display: flex; align-items: center; gap: 8px; background: rgba(40,40,40,0.95); backdrop-filter: blur(10px); padding: 8px 16px; border-radius: 10px; z-index: 202; border: 1px solid rgba(255,255,255,0.2); }
    .pdf-search-bar input { background: rgba(255,255,255,0.12); border: 1px solid rgba(255,255,255,0.25); border-radius: 6px; color: #fff; font-family: inherit; font-size: 13px; padding: 5px 10px; width: 220px; outline: none; }
    .pdf-search-bar input:focus { border-color: rgba(255,255,255,0.5); background: rgba(255,255,255,0.18); }
    .pdf-search-bar input::placeholder { color: rgba(255,255,255,0.4); }
    .pdf-search-bar button { padding: 4px 10px; border: 1px solid rgba(255,255,255,0.25); border-radius: 5px; background: rgba(255,255,255,0.1); color: #fff; font-size: 12px; cursor: pointer; transition: background 0.15s; }
    .pdf-search-bar button:hover { background: rgba(255,255,255,0.25); }
    .pdf-search-count { color: rgba(255,255,255,0.7); font-size: 12px; min-width: 70px; text-align: center; }

    /* PDF Thumbnail Panel */
    .pdf-thumb-panel { position: fixed; top: 0; left: 0; bottom: 0; width: 180px; background: rgba(20,20,20,0.95); backdrop-filter: blur(8px); z-index: 202; display: flex; flex-direction: column; transform: translateX(-100%); transition: transform 0.25s ease; border-right: 1px solid rgba(255,255,255,0.1); }
    .pdf-thumb-panel.open { transform: translateX(0); }
    .pdf-thumb-list { flex: 1; overflow-y: auto; padding: 10px 8px; display: flex; flex-direction: column; gap: 8px; scrollbar-width: thin; scrollbar-color: rgba(255,255,255,0.25) transparent; }
    .pdf-thumb-list::-webkit-scrollbar { width: 6px; }
    .pdf-thumb-list::-webkit-scrollbar-thumb { background: rgba(255,255,255,0.25); border-radius: 3px; }
    .pdf-thumb-item { cursor: pointer; border-radius: 6px; border: 2px solid transparent; padding: 3px; transition: border-color 0.15s, background 0.15s; display: flex; flex-direction: column; align-items: center; gap: 4px; }
    .pdf-thumb-item:hover { background: rgba(255,255,255,0.08); }
    .pdf-thumb-item.active { border-color: rgba(100,160,255,0.8); background: rgba(100,160,255,0.12); }
    .pdf-thumb-item canvas { width: 100%; border-radius: 3px; display: block; }
    .pdf-thumb-item .pdf-thumb-label { color: rgba(255,255,255,0.5); font-size: 11px; }
    .pdf-thumb-item.active .pdf-thumb-label { color: rgba(100,160,255,0.9); }
    .pdf-presentation-overlay.thumbs-open .pdf-canvas-wrapper { margin-left: 180px; width: calc(100% - 180px); }
    .pdf-zoom-controls { display: flex; align-items: center; gap: 4px; border-left: 1px solid rgba(255,255,255,0.2); margin-left: 4px; padding-left: 8px; }
    .pdf-zoom-controls button { padding: 6px 10px !important; min-width: 32px; text-align: center; }
    .pdf-zoom-level { color: rgba(255,255,255,0.7); font-size: 12px; min-width: 42px; text-align: center; }
    .pdf-presentation-controls button.active { background: rgba(100,160,255,0.35); border-color: rgba(100,160,255,0.6); }

    /* PDF Continuous Scroll Mode */
    .pdf-scroll-container { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 10px 0 100px 0; }
    .pdf-scroll-page canvas { display: block; box-shadow: 0 2px 8px rgba(0,0,0,0.5); }

    /* ── Narrow viewport: stack files/preview vertically ────────────────── */
    @media (max-width: 1024px) {
      .files-and-preview { flex-direction: column; height: auto; min-height: 0; max-height: none; }
      .files-columns { width: 100% !important; min-width: 0; height: auto; max-height: 40vh; }
      .file-column, .file-column-single { max-height: none; }
      .files-and-preview > .resize-handle { display: none; }
      .file-preview { min-height: 300px; height: auto; overflow-y: auto; }
      .preview-metadata { overflow: visible; flex: initial; }
      .preview-layout { flex-direction: column; }
      .preview-summary-wrap {
        width: 100%;
        min-width: 0;
        flex-basis: auto;
        padding-left: 0;
        padding-top: 20px;
      }
      .preview-summary-wrap.collapsed {
        width: 100%;
        min-width: 0;
        flex-basis: auto;
        padding-top: 20px;
      }
      .preview-collective-metadata-rail {
        width: 100%;
        min-width: 0;
        flex-basis: auto;
        padding-left: 0;
        padding-top: 20px;
      }
      .preview-summary-panel { width: 100%; }
      .preview-summary-wrap.collapsed .preview-summary-panel {
        width: 100%;
        max-height: 0;
      }
      .preview-summary-toggle {
        left: 50%;
        top: 0;
        transform: translate(-50%, -50%);
      }
      .preview-summary-wrap.collapsed .preview-summary-toggle-chip {
        min-height: 42px;
        flex-direction: row;
        padding: 6px 10px;
      }
      .preview-summary-wrap.collapsed .preview-summary-toggle-label {
        writing-mode: horizontal-tb;
        transform: none;
      }
      .preview-collective-metadata-toggle {
        left: 50%;
        top: 0;
        transform: translate(-50%, -50%);
      }
      .preview-collective-metadata-toggle .preview-summary-toggle-chip {
        min-height: 42px;
        flex-direction: row;
        padding: 6px 10px;
      }
      .preview-collective-metadata-toggle .preview-summary-toggle-label {
        writing-mode: horizontal-tb;
        transform: none;
      }
      .files-columns.multi-column { flex-direction: column; }
      .file-column { max-width: 100%; min-width: 0; }
    }

    /* ── Mobile responsive ──────────────────────────────────────────────── */
    @media (max-width: 768px) {
      /* Main layout — stack vertically */
      main { grid-template-columns: 1fr; padding: 10px; gap: 10px; }
      aside { display: none; position: fixed; inset: 0; top: 53px; z-index: 50; width: 100%; border: none; border-radius: 0; box-shadow: none; overflow-y: auto; }
      aside.mobile-open { display: block; }

      /* Header — tighter spacing */
      header { padding: 10px 12px; gap: 8px; }
      .sidebar-toggle { padding: 6px 10px; font-size: 11px; }
      .sidebar-toggle-label { max-width: 88px; overflow: hidden; text-overflow: ellipsis; }
      main.sidebar-collapsed { grid-template-columns: 1fr; }
      #user-label { display: none; }
      .nav-btn { padding: 5px 8px; font-size: 11px; }
      /* Details section — reduce padding */
      #details { padding: 10px !important; }

      /* Project card — breathe on small screens */
      .project-card-header { padding: 12px 14px 10px; flex-wrap: wrap; gap: 8px; }
      .project-card-title h2 { font-size: 17px; word-break: break-word; }
      .project-card-body { padding: 14px 14px 18px; gap: 14px; }
      .project-info-item { padding: 8px 10px; }

      /* Measurements section */
      .measurements-section-header,
      .project-assets-header { height: 34px; padding: 0 10px; }
      .measurements-section.section-collapsed .measurements-section-header,
      .project-assets-section.section-collapsed .project-assets-header { height: 38px; }
      .btn-measurement-new {
        width: 22px;
        height: 22px;
        min-width: 22px;
        min-height: 22px;
        font-size: 15px;
      }
      .project-section-toggle-btn {
        width: 24px;
        height: 24px;
        min-width: 24px;
        min-height: 24px;
      }
      .project-assets-grid { display: block; }
      .project-assets-list,
      .measurements-list { gap: 12px; padding: 14px 8px 16px; }
      .project-assets-workspace { grid-template-columns: 1fr; height: auto; min-height: 0; max-height: none; }
      .project-assets-entry-rail {
        border-right: none;
        border-bottom: 1px solid color-mix(in oklab, var(--panel-strong) 72%, transparent);
        padding: 10px 8px;
      }
      .project-assets-entry-rail-list {
        flex-direction: row;
        overflow-x: auto;
        padding-bottom: 2px;
      }
      .project-asset-entry-tab {
        min-width: 220px;
      }
      .project-assets-entry-main { min-height: 0; }
      .project-assets-entry-panels { flex-direction: column; min-height: 0; }
      .project-assets-entry-panels > .resize-handle { display: none; }
      .project-assets-entry-list-pane { width: 100% !important; max-width: none; }
      .project-assets-browser { flex-direction: column; height: auto; min-height: 0; max-height: none; }
      .project-assets-entry-browser { height: auto; min-height: 0; max-height: none; }
      .project-assets-browser-main { padding: 12px; }
      .project-assets-browser-divider { display: none; }
      .project-asset-preview-pane { min-width: 0; border-left: none; border-top: 1px solid color-mix(in oklab, var(--panel-strong) 72%, transparent); }
      .project-asset-entry-header { flex-direction: column; align-items: flex-start; }
      .project-assets-supersection-header,
      .project-assets-subgroup-actions,
      .project-asset-subgroup-toolbar,
      .project-asset-bucket-header,
      .project-asset-preview-header { flex-direction: column; align-items: flex-start; }
      .project-asset-card { margin: 0 8px; }
      .project-asset-row { flex-direction: row; margin: 0; }
      .project-asset-row .project-asset-side { width: auto; }
      .project-asset-actions { justify-content: flex-start; }
      .project-experiment-editor-grid { grid-template-columns: 1fr; }
      .project-experiment-editor-actions { flex-wrap: wrap; justify-content: flex-start; }
      .project-experiment-inline-status { width: 100%; margin-right: 0; }
      .project-experiment-evidence-list { grid-template-columns: 1fr; padding: 0 6px; }
      .project-experiment-evidence-row-body { grid-template-columns: 1fr; gap: 10px; }
      .project-experiment-evidence-row-side { justify-items: start; text-align: left; }
      .project-experiment-evidence-block-header { flex-wrap: wrap; align-items: flex-start; }
      .project-experiment-evidence-meta { justify-items: start; }
      .project-experiment-evidence-actions { justify-content: flex-start; }
      .measurement-header { gap: 8px; }
      .measurement-header-topline { align-items: flex-start; }
      .measurement-header-created { font-size: 9px; }
      .measurement-header-side { width: 100%; justify-content: flex-start; }
      .measurement-details { overflow-x: hidden; }
      .measurements-list > .measurement-card { margin: 0 8px; }
      .asset-preview-modal-text,
      .asset-preview-modal-visual { width: 100%; max-width: 95vw; }
      .asset-preview-header { flex-direction: column; }
      .asset-preview-toolbar { width: 100%; justify-content: flex-start; }
      .asset-preview-title { font-size: 18px; }
      .asset-preview-modal-visual .asset-preview-body,
      .asset-preview-body { min-height: 50vh; }
      .asset-preview-frame { min-height: calc(50vh - 24px); }

      /* Modals — fit screen */
      .modal-box { min-width: 0; max-width: 95vw; width: 100%; padding: 16px; }
      .share-modal { min-width: 0; max-width: 95vw; }
      .modal-actions { flex-wrap: wrap; }

      /* Share modal members */
      .member-item { flex-wrap: wrap; gap: 6px; padding: 8px 10px; }
      .member-actions { width: 100%; justify-content: flex-end; }
      .member-name { font-size: 12px; }

      /* Group Resources — stack list/preview vertically */
      .gr-content { flex-direction: column; height: auto; }
      .gr-list-pane { flex: none !important; width: 100% !important; min-width: 0; max-width: 100%; max-height: none; overflow-y: visible; }
      .gr-preview-pane { min-width: 0; }
      .gr-content > .resize-handle { display: none; }
      .gr-item { gap: 6px; padding: 8px 10px; }
      .gr-item-name { white-space: normal; word-break: break-word; }
      .gr-bulk-bar { flex-wrap: wrap; }
      .gr-preview-content iframe { height: 50vh; }

      /* Project files — additional mobile tweaks (stacking handled by 1024px breakpoint) */
      .files-columns { max-height: none; }
      .file-preview { min-height: 200px; }
      .file-item { gap: 6px; padding: 8px 10px; }
      .file-name { white-space: normal; word-break: break-word; }

      /* Preview panel — truncate title instead of break-all wrapping */
      .preview-header strong { word-break: normal; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
      .gr-preview-header strong { word-break: normal; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
      /* Preview action buttons — stack below the title so they don't get cut off */
      .gr-preview-header { flex-wrap: wrap; }
      .gr-preview-header > div { flex-wrap: wrap; width: 100%; }
      .preview-row { flex-wrap: wrap; gap: 2px; }
      .preview-header { flex-wrap: wrap; }
      .preview-actions { flex-wrap: wrap; }
      .preview-header-row { grid-template-columns: 1fr; align-items: stretch; }
      .preview-filename-editor { width: 100%; }
      .preview-filename-ext { min-width: 0; }
      .preview-facts-grid { grid-template-columns: 1fr; }
      .preview-summary-fields-grid { grid-template-columns: 1fr; }
      .bulk-actions { flex-wrap: wrap; }

      /* Ensure content grids stack */
      .project-info-row { grid-template-columns: 1fr; }
      .measurement-info-row { grid-template-columns: 1fr; }

      /* Toolbar and misc — wrap instead of overflow */
      .measurement-files-intake { flex-direction: column; align-items: flex-start; }
      .measurement-files-intake-actions { width: 100%; justify-content: flex-start; }
      .files-toolbar { grid-template-columns: 1fr; justify-items: stretch; }
      .files-toolbar-zone { justify-self: stretch; }
      .files-toolbar-zone-left, .files-toolbar-zone-center, .files-toolbar-zone-right { justify-content: flex-start; flex-wrap: wrap; }
      .files-toolbar-search-input { width: 100%; }
      .regex-input { width: 100%; }
      .plot-controls-row-main { flex-wrap: nowrap; }
      .plot-controls-row-secondary { flex-wrap: wrap; }
      .plot-cycle-controls-host { width: 100%; }
      .gr-breadcrumb { flex-wrap: wrap; }

      /* Zip progress overlay */
      .gr-zip-progress-card { min-width: 0; width: 90vw; }

      /* ── PDF Presentation Mode ── */
      /* Controls bar — wrap into rows, smaller buttons */
      .pdf-presentation-controls { gap: 6px; padding: 6px 10px; flex-wrap: wrap; justify-content: center; max-width: 96vw; bottom: 8px; border-radius: 16px; }
      .pdf-presentation-controls button { padding: 6px 10px; font-size: 12px; }
      .pdf-presentation-controls span { min-width: 50px; font-size: 12px; }

      /* Hide zoom controls — users can pinch-to-zoom on touch screens */
      .pdf-zoom-controls { display: none; }

      /* Thumbnail panel — narrow strip, don't cover controls */
      .pdf-thumb-panel { width: 25vw; min-width: 64px; max-width: 100px; bottom: 70px; }
      .pdf-thumb-list { padding: 6px 4px; gap: 6px; }
      .pdf-thumb-item .pdf-thumb-label { font-size: 9px; }
      .pdf-presentation-overlay.thumbs-open .pdf-canvas-wrapper { margin-left: 0; width: 100%; }

      /* Search bar — stack and fit screen */
      .pdf-search-bar { flex-wrap: wrap; justify-content: center; max-width: 96vw; padding: 6px 10px; gap: 4px; left: 50%; }
      .pdf-search-bar input { width: 100%; min-width: 0; box-sizing: border-box; }
      .pdf-search-count { min-width: 50px; font-size: 11px; }

      /* Canvas wrapper — remove top padding on mobile (search bar wraps taller) */
      .pdf-canvas-wrapper { padding-top: 0; }
    }

    /* Admin section styles */
    .admin-section {
      border-top: 2px solid #f57c00;
      padding-top: 16px;
      margin-top: 16px;
    }
    .admin-section-body.collapsed {
      display: none;
    }

    .owner-header {
      font-size: 11px;
      font-weight: 600;
      text-transform: uppercase;
      color: var(--muted);
      letter-spacing: 0.5px;
      margin: 12px 0 6px 0;
      padding-left: 4px;
    }

    .admin-badge {
      display: inline-block;
      background: #f57c00;
      color: white;
      font-size: 10px;
      font-weight: 600;
      padding: 2px 6px;
      border-radius: 3px;
      margin-left: 8px;
      text-transform: uppercase;
      letter-spacing: 0.3px;
    }

    .admin-project {
      border-left: 3px solid #f57c00;
      opacity: 0.85;
    }

    .admin-project:hover {
      opacity: 1;
      border-left-color: #ff9800;
    }

    /* ── EasyMDE Theme ───────────────────────────────────────────────── */
    .EasyMDEContainer { max-width: 100%; }
    /* Side-by-side inline: adjust border-radius and add divider */
    .EasyMDEContainer.sided--no-fullscreen .CodeMirror-sided {
      border-bottom-right-radius: 0;
    }
    .EasyMDEContainer.sided--no-fullscreen .editor-preview-active-side {
      border-left: 1px solid var(--panel-strong);
      border-radius: 0 0 6px 0;
      overflow-y: auto;
    }
    .EasyMDEContainer .CodeMirror {
      font-family: ui-monospace, "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", monospace;
      font-size: 12px;
      line-height: 1.6;
      border: 1px solid color-mix(in oklab, var(--brand-3) 20%, var(--panel-strong));
      border-left: 3px solid var(--brand-3);
      border-radius: 6px;
      background: color-mix(in oklab, var(--brand-3) 5%, var(--card));
      color: var(--text);
      padding: 8px 10px;
    }
    .EasyMDEContainer .CodeMirror-focused {
      border-color: color-mix(in oklab, var(--brand-3) 50%, var(--panel-strong));
      border-left-color: var(--brand-3);
      background: color-mix(in oklab, var(--brand-3) 10%, var(--card));
      box-shadow: 0 0 0 3px color-mix(in oklab, var(--brand-3) 12%, transparent);
    }
    .EasyMDEContainer .CodeMirror-cursor { border-left-color: var(--text); }
    .EasyMDEContainer .CodeMirror-selected { background: color-mix(in oklab, var(--brand-3) 20%, var(--panel)); }
    .EasyMDEContainer .editor-toolbar {
      background: transparent;
      border: none;
      border-bottom: 1px solid var(--panel-strong);
      padding: 4px 2px;
      opacity: 1;
    }
    .EasyMDEContainer .editor-toolbar button {
      color: var(--muted) !important;
      border: none;
      border-radius: 4px;
      width: 30px;
      height: 28px;
    }
    .EasyMDEContainer .editor-toolbar button:hover,
    .EasyMDEContainer .editor-toolbar button.active {
      background: var(--panel);
      color: var(--text) !important;
    }
    .EasyMDEContainer .editor-toolbar i.separator {
      border-left-color: var(--panel-strong);
    }
    .EasyMDEContainer .editor-preview,
    .EasyMDEContainer .editor-preview-side {
      background: var(--card);
      color: var(--text);
      font-family: ui-monospace, "SFMono-Regular", Menlo, Monaco, Consolas, "Liberation Mono", monospace;
      font-size: 12px;
      line-height: 1.6;
      padding: 12px 14px;
    }
    .EasyMDEContainer .editor-preview pre,
    .EasyMDEContainer .editor-preview-side pre {
      background: var(--panel);
      border: 1px solid var(--panel-strong);
      border-radius: 4px;
      padding: 8px 10px;
    }
    .EasyMDEContainer .editor-preview a,
    .EasyMDEContainer .editor-preview-side a {
      color: var(--brand);
    }
    .EasyMDEContainer .editor-preview table,
    .EasyMDEContainer .editor-preview-side table {
      border-collapse: collapse;
      width: 100%;
    }
    .EasyMDEContainer .editor-preview th,
    .EasyMDEContainer .editor-preview td,
    .EasyMDEContainer .editor-preview-side th,
    .EasyMDEContainer .editor-preview-side td {
      border: 1px solid var(--panel-strong);
      padding: 4px 8px;
      font-size: 11px;
    }
    .EasyMDEContainer .editor-preview input[type="checkbox"] {
      margin-right: 6px;
    }
    /* Compact headings in edit mode */
    .EasyMDEContainer .CodeMirror .cm-header-1 { font-size: 16px; line-height: 1.4; }
    .EasyMDEContainer .CodeMirror .cm-header-2 { font-size: 14px; line-height: 1.4; }
    .EasyMDEContainer .CodeMirror .cm-header-3 { font-size: 13px; line-height: 1.4; }
    .EasyMDEContainer .CodeMirror .cm-header-4,
    .EasyMDEContainer .CodeMirror .cm-header-5,
    .EasyMDEContainer .CodeMirror .cm-header-6 { font-size: 12px; line-height: 1.4; }
    /* Read-only mode: hide toolbar; preview fills the container */
    .easymde-readonly .editor-toolbar { display: none; }
    .easymde-readonly .CodeMirror {
      border-left-width: 1px;
      opacity: 0.85;
    }
    .easymde-readonly .CodeMirror-cursors { display: none; }
    /* When preview is active (read-only visual mode): clean up chrome */
    .easymde-readonly .editor-preview {
      position: static;
      display: block !important;
      border: none;
      border-left: 3px solid var(--panel-strong);
      border-radius: 6px;
      font-family: inherit;
      font-size: 13px;
      line-height: 1.65;
      padding: 10px 14px;
    }

	    /* Graph overlay baseline */
	    body.graph-overlay-open { overflow: hidden; }
	    body.search-overlay-open { overflow: hidden; }

	    /* ── Feedback overlay ── */
	    .feedback-overlay {
	      position: fixed; inset: 0; z-index: 400;
	      display: flex; align-items: center; justify-content: flex-end;
	      background: rgba(0,0,0,0); pointer-events: none;
	      transition: background 0.25s;
	    }
	    .feedback-overlay.feedback-overlay-active {
	      background: rgba(0,0,0,0.35); pointer-events: auto;
	    }
	    .feedback-overlay.feedback-overlay-closing {
	      background: rgba(0,0,0,0);
	    }
	    body.fb-overlay-open #enci-feedback-fab { display: none !important; }
	    .feedback-panel {
	      width: 700px; max-width: 100vw; height: 100vh; max-height: 100vh;
	      background: var(--card); display: flex; flex-direction: column;
	      box-shadow: -4px 0 24px rgba(0,0,0,0.18);
	      transform: translateX(100%);
	      transition: transform 0.28s cubic-bezier(0.4,0,0.2,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;
	      padding: 16px 20px; border-bottom: 1px solid var(--panel-strong);
	      flex-shrink: 0;
	    }
	    .feedback-panel-title { font-weight: 700; font-size: 14px; display: flex; align-items: center; gap: 8px; }
	    .feedback-back-btn { background: none; border: none; cursor: pointer; font-size: 16px; color: var(--muted); padding: 0 4px; font-family: inherit; }
	    .feedback-back-btn:hover { color: var(--text); }
	    .feedback-panel-body { flex: 1; padding: 20px; overflow: hidden; display: flex; flex-direction: column; gap: 16px; }
	    .feedback-panel-scroll { overflow-y: auto; }
	    .feedback-panel-footer { padding: 12px 20px; border-top: 1px solid var(--panel-strong); display: flex; gap: 8px; justify-content: flex-end; flex-shrink: 0; }
	    .feedback-subtitle { margin: 0 0 8px; color: var(--muted); font-size: 13px; }
	    .feedback-discard-btn { background: none; border: none; cursor: pointer; font-size: 12px; color: var(--muted); padding: 4px 8px; font-family: inherit; text-decoration: underline; }
	    .feedback-discard-btn:hover { color: var(--danger, #c62828); }

	    /* Step 1 category cards */
	    .feedback-category-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
	    .feedback-category-card {
	      display: flex; flex-direction: column; align-items: center; gap: 6px;
	      padding: 20px 12px; border: 1px solid var(--panel-strong);
	      border-radius: 10px; cursor: pointer; background: var(--bg);
	      font-family: inherit; text-align: center; transition: border-color 0.15s, background 0.15s;
	    }
	    .feedback-category-card:hover { border-color: var(--brand); background: var(--panel); }
	    .feedback-category-card strong { font-size: 13px; color: var(--text); }
	    .feedback-cat-icon { font-size: 28px; }
	    .feedback-cat-desc { font-size: 11px; color: var(--muted); }

	    /* Form fields */
	    .feedback-field { display: flex; flex-direction: column; gap: 5px; }
	    .feedback-label { font-size: 12px; font-weight: 600; color: var(--text); }
	    .feedback-input { padding: 7px 10px; border: 1px solid var(--panel-strong); border-radius: 6px; background: var(--bg); color: var(--text); font-family: inherit; font-size: 13px; outline: none; width: 100%; box-sizing: border-box; }
	    .feedback-input:focus { border-color: var(--brand); }
	    .feedback-textarea { padding: 7px 10px; border: 1px solid var(--panel-strong); border-radius: 6px; background: var(--bg); color: var(--text); font-family: inherit; font-size: 13px; resize: vertical; outline: none; width: 100%; box-sizing: border-box; }
	    .feedback-textarea:focus { border-color: var(--brand); }
	    .feedback-link-btn { background: none; border: none; color: var(--brand); cursor: pointer; font-family: inherit; font-size: 13px; padding: 0; text-decoration: underline; }

	    /* Dropzone */
	    .feedback-dropzone {
	      border: 2px dashed var(--panel-strong); border-radius: 8px; padding: 16px;
	      text-align: center; font-size: 12px; color: var(--muted); cursor: default;
	      transition: border-color 0.15s, background 0.15s;
	    }
	    .feedback-dropzone-hover { border-color: var(--brand); background: var(--panel); }
	    .feedback-att-row { display: flex; align-items: center; gap: 8px; padding: 5px 0; border-bottom: 1px solid var(--panel); }
	    .feedback-att-thumb { width: 40px; height: 40px; object-fit: cover; border-radius: 4px; border: 1px solid var(--panel-strong); }
	    .feedback-att-icon { font-size: 24px; }
	    .feedback-att-name { flex: 1; font-size: 12px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

	    /* Canvas annotation */
	    .fb-annotation-wrap { margin-top: 8px; border: 1px solid var(--panel-strong); border-radius: 8px; overflow: hidden; }
	    .fb-annotation-toolbar { display: flex; align-items: center; gap: 6px; padding: 8px 10px; background: var(--panel); flex-wrap: wrap; }
	    .fb-tool-btn { padding: 3px 8px; border: 1px solid var(--panel-strong); border-radius: 4px; background: var(--card); color: var(--text); font-family: inherit; font-size: 11px; cursor: pointer; }
	    .fb-tool-btn.active { background: var(--brand); color: #fff; border-color: var(--brand); }
	    .fb-color-swatch { width: 18px; height: 18px; border-radius: 50%; border: 2px solid transparent; cursor: pointer; }
	    .fb-color-swatch.active, .fb-color-swatch:hover { border-color: var(--text); }
	    .fb-annotation-canvas { display: block; max-width: 100%; cursor: crosshair; }

	    /* Summary step */
	    .feedback-summary { border: 1px solid var(--panel-strong); border-radius: 8px; overflow: hidden; }
	    .feedback-summary-row { display: flex; gap: 12px; padding: 9px 14px; border-bottom: 1px solid var(--panel); align-items: baseline; }
	    .feedback-summary-row:last-child { border-bottom: none; }

	    /* Context pre */
	    .feedback-context-details { margin-top: 4px; }
	    .feedback-context-pre { font-size: 10px; color: var(--muted); background: var(--panel); padding: 8px; border-radius: 4px; overflow-x: auto; margin: 4px 0 0; max-height: 120px; overflow-y: auto; }

	    /* Badges */
	    .fb-badge { display: inline-block; padding: 2px 7px; border-radius: 12px; font-size: 11px; font-weight: 600; }
	    .fb-cat-bug      { background: #ffebee; color: #c62828; }
	    .fb-cat-feature  { background: #e8f5e9; color: #2e7d32; }
	    .fb-cat-question { background: #e3f2fd; color: #1565c0; }
	    .fb-cat-other    { background: var(--panel); color: var(--muted); }
	    .fb-status-open        { background: #fff9c4; color: #f57f17; }
	    .fb-status-in-progress { background: #e3f2fd; color: #1565c0; }
	    .fb-status-resolved    { background: #e8f5e9; color: #2e7d32; }
	    .fb-status-wont-fix    { background: var(--panel); color: var(--muted); }
	    .fb-svc { background: var(--panel-strong); color: var(--muted); font-weight: 400; }
	    body.theme-dark .fb-cat-bug, body.theme-ubuntu .fb-cat-bug, body.theme-dark-contrast .fb-cat-bug { background: rgba(198,40,40,0.18); color: #ef9a9a; }
	    body.theme-dark .fb-cat-feature, body.theme-ubuntu .fb-cat-feature, body.theme-dark-contrast .fb-cat-feature { background: rgba(46,125,50,0.18); color: #a5d6a7; }
	    body.theme-dark .fb-cat-question, body.theme-ubuntu .fb-cat-question, body.theme-dark-contrast .fb-cat-question { background: rgba(21,101,192,0.18); color: #90caf9; }
	    body.theme-dark .fb-status-open, body.theme-ubuntu .fb-status-open, body.theme-dark-contrast .fb-status-open { background: rgba(245,127,23,0.15); color: #ffcc80; }
	    body.theme-dark .fb-status-in-progress, body.theme-ubuntu .fb-status-in-progress, body.theme-dark-contrast .fb-status-in-progress { background: rgba(21,101,192,0.18); color: #90caf9; }
	    body.theme-dark .fb-status-resolved, body.theme-ubuntu .fb-status-resolved, body.theme-dark-contrast .fb-status-resolved { background: rgba(46,125,50,0.18); color: #a5d6a7; }

	    /* Ticket board sidebar */
	    .fb-sidebar { display: flex; flex-direction: column; gap: 16px; }
	    .fb-filter-section { display: flex; flex-direction: column; gap: 6px; }
	    .fb-filter-label { font-size: 12px; font-weight: 700; color: var(--text); }
	    .fb-filter-select { width: 100%; box-sizing: border-box; padding: 6px 8px; border: 1px solid var(--panel-strong); border-radius: 6px; background: var(--card); color: var(--text); font-family: inherit; font-size: 13px; cursor: pointer; outline: none; }
	    .fb-filter-select:focus { border-color: var(--brand); }
	    .fb-pills { display: flex; flex-wrap: wrap; gap: 6px; }
	    .fb-pill { padding: 5px 12px; border: 1px solid var(--panel-strong); border-radius: 6px; background: var(--card); color: var(--text); font-size: 12px; cursor: pointer; font-family: inherit; transition: border-color 0.1s, color 0.1s, background 0.1s; }
	    .fb-pill:hover { border-color: var(--brand); color: var(--brand); }
	    .fb-pill.active { border-color: var(--brand); color: var(--brand); background: color-mix(in oklab, var(--brand) 12%, var(--card)); font-weight: 600; }
	    .feedback-search-input { width: 100%; box-sizing: border-box; padding: 7px 10px; border: 1px solid var(--panel-strong); border-radius: 6px; background: var(--bg); color: var(--text); font-family: inherit; font-size: 13px; outline: none; }
	    .feedback-search-input:focus { border-color: var(--brand); }

	    /* Board layout: nav list + detail area */
	    .fb-board-layout { display: flex; height: 100%; overflow: hidden; }
	    .fb-nav-list { width: 260px; flex-shrink: 0; border-right: 1px solid var(--panel-strong); overflow-y: auto; display: flex; flex-direction: column; }
	    .fb-nav-item { padding: 10px 14px; border-bottom: 1px solid var(--panel); cursor: pointer; transition: background 0.1s; border-left: 3px solid transparent; }
	    .fb-nav-item:hover { background: var(--panel); }
	    .fb-nav-item.active { background: color-mix(in oklab, var(--brand) 8%, var(--card)); border-left-color: var(--brand); }
	    .fb-nav-item-top { display: flex; flex-wrap: wrap; gap: 4px; align-items: center; margin-bottom: 4px; }
	    .fb-nav-item-title { font-weight: 600; font-size: 12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin-bottom: 4px; }
	    .fb-nav-item-meta { display: flex; gap: 8px; font-size: 11px; color: var(--muted); }
	    .fb-nav-empty { padding: 24px 14px; font-size: 13px; color: var(--muted); text-align: center; }
	    .fb-detail-area { flex: 1; overflow: hidden; display: flex; flex-direction: column; }
	    .fb-detail-empty { display: flex; align-items: center; justify-content: center; height: 100%; color: var(--muted); font-size: 14px; }
	    .fb-ticket-num { font-size: 11px; color: var(--muted); font-weight: 600; }
	    .fb-vote-btn { background: none; border: 1px solid var(--panel-strong); border-radius: 4px; cursor: pointer; color: var(--muted); font-size: 14px; padding: 3px 7px; font-family: inherit; transition: color 0.12s, border-color 0.12s, background 0.12s; }
	    .fb-vote-btn:hover { color: var(--brand); border-color: var(--brand); }
	    .fb-vote-btn.voted { color: var(--brand); border-color: var(--brand); background: color-mix(in oklab, var(--brand) 10%, var(--card)); }

	    /* Ticket detail */
	    .fb-detail-wrap { display: flex; height: 100%; overflow: hidden; }
	    .fb-detail-main { flex: 1; min-width: 0; overflow-y: auto; padding: 20px; box-sizing: border-box; }
	    .fb-detail-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; flex-wrap: wrap; gap: 8px; }
	    .fb-detail-meta { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; font-size: 12px; color: var(--muted); margin-bottom: 12px; }
	    .fb-detail-desc { background: var(--panel); border-radius: 6px; padding: 12px 14px; font-size: 13px; white-space: pre-wrap; word-break: break-word; margin-bottom: 12px; }
	    .fb-attachments { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
	    .fb-att-preview img.fb-att-img { max-width: 240px; max-height: 180px; border-radius: 6px; border: 1px solid var(--panel-strong); object-fit: contain; cursor: zoom-in; transition: opacity 0.1s; }
	    .fb-att-preview img.fb-att-img:hover { opacity: 0.85; }
	    .fb-detail-sidebar { width: 380px; flex-shrink: 0; border-left: 1px solid var(--panel-strong); display: flex; flex-direction: column; overflow: hidden; }
	    .fb-comments-section { flex: 1; display: flex; flex-direction: column; overflow: hidden; }
	    .fb-comments-header { font-size: 12px; font-weight: 600; color: var(--muted); padding: 12px 16px 10px; border-bottom: 1px solid var(--panel-strong); flex-shrink: 0; }
	    .fb-comments-list { flex: 1; overflow-y: auto; padding: 12px 16px; display: flex; flex-direction: column; gap: 10px; }
	    .fb-comment { display: flex; gap: 10px; }
	    .fb-comment-avatar { width: 28px; height: 28px; border-radius: 50%; background: var(--brand); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 10px; font-weight: 700; flex-shrink: 0; }
	    .fb-comment-body { flex: 1; min-width: 0; }
	    .fb-comment-meta { display: flex; gap: 8px; align-items: center; margin-bottom: 3px; font-size: 11px; }
	    .fb-comment-text { font-size: 12px; white-space: pre-wrap; word-break: break-word; background: var(--panel); padding: 8px 10px; border-radius: 6px; }
	    .fb-comment-compose { padding: 10px 16px 14px; border-top: 1px solid var(--panel-strong); display: flex; flex-direction: column; gap: 8px; flex-shrink: 0; }
	    /* Lightbox */
	    .fb-lightbox { position: fixed; inset: 0; z-index: 999999; background: rgba(0,0,0,0.92); display: flex; align-items: center; justify-content: center; cursor: zoom-out; }
	    .fb-lightbox img { max-width: 95vw; max-height: 95vh; object-fit: contain; border-radius: 4px; cursor: default; box-shadow: 0 8px 40px rgba(0,0,0,0.6); }
	    .fb-lightbox-close { position: absolute; top: 16px; right: 20px; background: none; border: none; color: #fff; font-size: 28px; cursor: pointer; line-height: 1; opacity: 0.8; }
	    .fb-lightbox-close:hover { opacity: 1; }

	    .graph-overlay {
	      position: fixed;
	      inset: 0;
	      z-index: 260;
	      display: flex;
	      align-items: stretch;
	      justify-content: stretch;
	      padding: 0;
	      box-sizing: border-box;
	      background: rgba(8, 12, 24, 0);
	      transition: background 220ms ease;
	      overflow: hidden;
	    }
	    .graph-overlay.graph-overlay-active {
	      background: rgba(8, 12, 24, 0.38);
	    }
	    .graph-overlay-shell {
	      width: 100%;
	      min-height: 0;
	      height: 100svh;
	      height: 100dvh;
	      display: flex;
	      flex-direction: column;
	      overflow: hidden;
	      border: 0;
	      border-radius: 0;
	      background: var(--card);
	      box-shadow: none;
	      transform: translateY(100%);
	      opacity: 0.98;
	      transition: transform 300ms cubic-bezier(0.22, 0.88, 0.22, 1), opacity 220ms ease;
	    }
	    .graph-overlay.graph-overlay-active .graph-overlay-shell {
	      transform: translateY(0);
	      opacity: 1;
	    }
	    .graph-overlay.graph-overlay-closing .graph-overlay-shell {
	      transform: translateY(100%);
	      opacity: 0.98;
	      pointer-events: none;
	    }
	    .search-overlay {
	      position: fixed;
	      inset: 0;
	      z-index: 258;
	      display: flex;
	      align-items: flex-end;
	      justify-content: center;
	      padding: 6px 12px 12px;
	      box-sizing: border-box;
	      background: rgba(8, 12, 24, 0);
	      transition: background 220ms ease;
	      overflow: hidden;
	    }
	    .search-overlay.search-overlay-active {
	      background: rgba(8, 12, 24, 0.36);
	    }
	    .search-overlay-shell {
	      width: min(1600px, 100%);
	      min-height: 0;
	      height: min(96svh, calc(100svh - 18px));
	      display: flex;
	      flex-direction: column;
	      overflow: hidden;
	      border: 1px solid var(--panel-strong);
	      border-radius: 10px 10px 6px 6px;
	      background: var(--card);
	      box-shadow: 0 16px 40px rgba(0, 0, 0, 0.28);
	      transform: translateY(calc(100% + 24px));
	      opacity: 0.98;
	      transition: transform 300ms cubic-bezier(0.22, 0.88, 0.22, 1), opacity 220ms ease;
	    }
	    .search-overlay.search-overlay-active .search-overlay-shell {
	      transform: translateY(0);
	      opacity: 1;
	    }
	    .search-overlay.search-overlay-closing .search-overlay-shell {
	      transform: translateY(calc(100% + 24px));
	      opacity: 0.98;
	      pointer-events: none;
	    }
	    .search-overlay-toolbar {
	      height: 56px;
	      flex-shrink: 0;
	      display: flex;
	      align-items: center;
	      justify-content: space-between;
	      gap: 10px;
	      padding: 0 14px;
	      border-bottom: 1px solid var(--panel-strong);
	      background: var(--card);
	    }
	    .search-overlay-toolbar-left { min-width: 0; display: flex; flex-direction: column; }
	    .search-overlay-toolbar-title { font-size: 12px; letter-spacing: 0.6px; text-transform: uppercase; color: var(--muted); }
	    .search-overlay-toolbar-subtitle { font-size: 14px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
	    .search-overlay-toolbar-right { display: flex; align-items: center; gap: 8px; }
	    .search-overlay-layout {
	      flex: 1;
	      min-height: 0;
	      display: grid;
	      grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);
	      overflow: hidden;
	      background: var(--bg);
	    }
	    .search-overlay-panel {
	      border-right: 1px solid var(--panel-strong);
	      padding: 12px;
	      overflow-y: auto;
	      overflow-x: hidden;
	      background: var(--card);
	    }
	    .search-overlay-stage {
	      min-height: 0;
	      overflow: auto;
	      background: var(--bg);
	    }
	    .search-overlay-stage .ds-search-wrap {
	      max-width: 1040px;
	      margin: 0 auto;
	    }
	    .graph-toolbar {
	      height: 56px;
	      flex-shrink: 0;
	      display: flex;
	      align-items: center;
	      justify-content: space-between;
	      gap: 10px;
	      padding: 0 14px;
	      border-bottom: 1px solid var(--panel-strong);
	      background: var(--card);
	    }
	    .graph-toolbar-left { min-width: 0; display: flex; flex-direction: column; }
	    .graph-toolbar-title { font-size: 12px; letter-spacing: 0.6px; text-transform: uppercase; color: var(--muted); }
	    .graph-toolbar-subtitle { font-size: 14px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
	    .graph-toolbar-right { display: flex; align-items: center; gap: 8px; }
	    .graph-toolbar-meta { font-size: 11px; color: var(--muted); }
	    .graph-open-btn { border-radius: 4px; font-size: 12px; display: inline-flex; align-items: center; gap: 6px; }
	    .graph-open-btn-key {
	      display: inline-flex;
	      align-items: center;
	      justify-content: center;
	      min-width: 15px;
	      height: 15px;
	      padding: 0 4px;
	      border: 1px solid var(--panel-strong);
	      border-radius: 3px;
	      background: var(--card);
	      color: var(--muted);
	      font-size: 10px;
	      line-height: 1;
	    }
	    .graph-layout {
	      --graph-panel-width: clamp(224px, 24vw, 280px);
	      flex: 1;
	      min-height: 0;
	      display: grid;
	      grid-template-columns: minmax(0, var(--graph-panel-width)) 12px minmax(0, 1fr);
	      grid-template-rows: minmax(0, 1fr);
	      gap: 0;
	      padding: 10px;
	      box-sizing: border-box;
	      overflow: hidden;
	      transition: grid-template-columns 220ms cubic-bezier(0.22, 1, 0.36, 1);
	    }
	    .graph-layout.graph-layout-panel-collapsed {
	      --graph-panel-width: 0px;
	    }
	    .graph-layout.graph-layout-panel-collapsed .graph-panel {
	      opacity: 0;
	      transform: translateX(-8px);
	      pointer-events: none;
	      border-color: transparent;
	      padding-left: 0;
	      padding-right: 0;
	    }
	    .graph-panel-edge-toggle {
	      align-self: center;
	      justify-self: center;
	      width: 12px;
	      height: 72px;
	      border: 1px solid var(--panel-strong);
	      border-left: none;
	      border-radius: 0 6px 6px 0;
	      background: color-mix(in oklab, var(--panel) 64%, var(--card));
	      color: var(--muted);
	      font-size: 10px;
	      line-height: 1;
	      cursor: pointer;
	      display: inline-flex;
	      align-items: center;
	      justify-content: center;
	      padding: 0;
	      user-select: none;
	      opacity: 0.7;
	      transition: background 140ms ease, color 140ms ease, border-color 140ms ease, opacity 140ms ease;
	      z-index: 3;
	    }
	    .graph-panel-edge-toggle:hover {
	      background: color-mix(in oklab, var(--brand) 12%, var(--panel));
	      color: color-mix(in oklab, var(--brand) 58%, var(--text));
	      border-color: color-mix(in oklab, var(--brand) 38%, var(--panel-strong));
	      opacity: 1;
	    }
	    .graph-panel-edge-toggle[data-collapsed="true"] {
	      border-left: 1px solid var(--panel-strong);
	      border-right: none;
	      border-radius: 6px 0 0 6px;
	    }
	    .graph-panel {
	      background: var(--card);
	      border: 1px solid var(--panel-strong);
	      border-radius: 6px;
	      padding: 9px;
	      display: flex;
	      flex-direction: column;
	      gap: 8px;
	      min-height: 0;
	      max-height: 100%;
	      overflow-y: auto;
	      overflow-x: hidden;
	      overscroll-behavior: contain;
	      min-width: 0;
	      transition: opacity 180ms ease, transform 220ms cubic-bezier(0.22, 1, 0.36, 1), padding 220ms cubic-bezier(0.22, 1, 0.36, 1), border-color 180ms ease;
	    }
	    .graph-panel > * {
	      flex-shrink: 0;
	    }
	    .graph-panel-title {
	      font-size: 10px;
	      color: var(--muted);
	      letter-spacing: 0.6px;
	      text-transform: uppercase;
	      font-weight: 700;
	      margin-top: 2px;
	    }
	    .graph-inspector-panel {
	      border: 1px solid color-mix(in oklab, var(--brand) 24%, var(--panel-strong));
	      border-radius: 6px;
	      background: color-mix(in oklab, var(--brand) 4%, var(--card));
	      padding: 7px;
	      display: grid;
	      gap: 7px;
	      min-height: 104px;
	    }
	    .graph-inspector-panel .graph-muted-line {
	      padding: 0;
	    }
	    .graph-guide-box {
	      border: 1px solid color-mix(in oklab, var(--brand) 24%, var(--panel-strong));
	      border-radius: 4px;
	      background: color-mix(in oklab, var(--brand) 6%, var(--card));
	      padding: 8px 9px;
	      display: grid;
	      gap: 5px;
	    }
	    .graph-guide-row {
	      font-size: 11px;
	      line-height: 1.35;
	      color: var(--muted);
	    }
	    .graph-guide-row strong {
	      color: color-mix(in oklab, var(--brand) 58%, var(--text));
	      font-weight: 700;
	    }
	    .graph-stats-grid { display: grid; grid-template-columns: 1fr; gap: 8px; }
	    .graph-stat-card {
	      border: 1px solid var(--panel-strong);
	      border-radius: 4px;
	      background: var(--panel);
	      padding: 8px 10px;
	    }
	    .graph-stat-label { font-size: 11px; color: var(--muted); text-transform: uppercase; letter-spacing: 0.4px; }
	    .graph-stat-value { font-size: 20px; font-weight: 700; margin-top: 2px; line-height: 1.1; }
	    .graph-stat-list {
	      border: 1px solid var(--panel-strong);
	      border-radius: 6px;
	      background: var(--card);
	      overflow: hidden;
	    }
	    .graph-column-toggle-list {
	      border: 1px solid var(--panel-strong);
	      border-radius: 6px;
	      background: var(--card);
	      overflow: hidden;
	    }
    .graph-references-panel { display: grid; gap: 4px; }
	    .graph-ref-row { display: flex; align-items: flex-start; justify-content: space-between; gap: 6px; padding: 5px 4px; border-bottom: 1px solid var(--panel-strong); font-size: 12px; }
	    .graph-ref-row:last-child { border-bottom: none; }
	    .graph-ref-info { display: grid; gap: 2px; min-width: 0; flex: 1; }
	    .graph-ref-title { font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
	    .graph-ref-meta { color: var(--muted); font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
	    .graph-ref-actions { display: flex; align-items: center; gap: 2px; flex-shrink: 0; }
	    .graph-ref-url-link { text-decoration: none; font-size: 13px; opacity: 0.7; }
	    .graph-ref-url-link:hover { opacity: 1; }
	    .graph-ref-action { padding: 1px 4px; font-size: 11px; min-width: 0; }
	    .graph-ref-form { display: grid; gap: 6px; padding: 6px 4px; border: 1px solid var(--panel-strong); border-radius: 4px; background: var(--card); margin-top: 4px; }
	    .graph-ref-form-title { font-size: 12px; font-weight: 600; }
	    .graph-ref-form-row { display: grid; gap: 3px; }
	    .graph-ref-label { font-size: 11px; color: var(--muted); }
	    .graph-ref-input { width: 100%%; box-sizing: border-box; font-size: 12px; padding: 3px 5px; border: 1px solid var(--panel-strong); border-radius: 3px; background: var(--bg); color: var(--text); }
	    .graph-ref-textarea { resize: vertical; min-height: 48px; }
	    .graph-ref-doi-row { display: flex; gap: 4px; align-items: center; }
	    .graph-ref-doi-row .graph-ref-input { flex: 1; }
	    .graph-ref-doi-status { font-size: 11px; }
	    .graph-ref-doi-found { color: #2d6a4f; }
	    .graph-ref-doi-not-found { color: #c0392b; }
	    .graph-ref-form-actions { display: flex; gap: 4px; }
	    .graph-ref-form-status { font-size: 11px; color: var(--muted); }
	    .graph-muted-line { font-size: 12px; color: var(--muted); padding: 4px 0; }
	    .project-references-list { display: flex; flex-direction: column; gap: 14px; padding: 18px 12px 20px; }
	    .project-reference-card {
	      display: flex; align-items: flex-start; justify-content: space-between; gap: 8px;
	      padding: 10px 12px; border-radius: 6px; border: 1px solid var(--panel-strong); border-left-width: 3px;
	      border-left-color: color-mix(in oklab, var(--reference-entry-accent, var(--graph-node-accent-reference)) 82%, var(--panel-strong));
	      background: color-mix(in oklab, var(--reference-entry-accent, var(--graph-node-accent-reference)) 4%, var(--card));
	      box-shadow: 0 1px 0 rgba(13, 18, 40, 0.10), 2px 2px 0 rgba(13, 18, 40, 0.10);
	      margin: 0 12px;
	      transition: border-color 220ms cubic-bezier(0.22, 1, 0.36, 1), background-color 220ms cubic-bezier(0.22, 1, 0.36, 1), box-shadow 220ms cubic-bezier(0.22, 1, 0.36, 1);
	      overflow: hidden;
	    }
	    .project-reference-card:hover {
	      border-color: color-mix(in oklab, var(--reference-entry-accent, var(--graph-node-accent-reference)) 50%, var(--panel-strong));
	      background: color-mix(in oklab, var(--reference-entry-accent, var(--graph-node-accent-reference)) 7%, var(--card));
	      box-shadow: 0 0 0 1px color-mix(in oklab, var(--reference-entry-accent, var(--graph-node-accent-reference)) 20%, var(--panel-strong)), 0 1px 0 rgba(13, 18, 40, 0.12), 3px 3px 0 rgba(13, 18, 40, 0.10);
	    }
	    .project-reference-body { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
	    .project-reference-title { font-size: 13px; font-weight: 500; }
	    .project-reference-meta { font-size: 12px; color: var(--muted); }
	    .project-reference-links { font-size: 11px; display: flex; flex-wrap: wrap; gap: 6px; margin-top: 2px; }
	    .project-reference-link { color: var(--accent, #2176ae); text-decoration: none; word-break: break-all; }
	    .project-reference-link:hover { text-decoration: underline; }
	    .project-reference-notes { font-size: 12px; font-style: italic; margin-top: 2px; color: var(--muted); }
	    .project-reference-actions { display: flex; gap: 2px; flex-shrink: 0; }
	    .project-ref-doi-row { display: flex; gap: 6px; align-items: flex-end; margin-bottom: 2px; }
	    /* Reference file import */
	    #ref-drop-zone.drag-over { outline: 2px dashed var(--graph-node-accent-reference); outline-offset: -2px; border-radius: 6px; background: color-mix(in oklab, var(--graph-node-accent-reference) 5%, transparent); }
	    .modal-box.asimov-popup-import { max-width: 620px; min-width: 480px; }
	    .ref-import-list { display: flex; flex-direction: column; gap: 3px; max-height: 340px; overflow-y: auto; margin: 8px 0; border: 1px solid var(--panel-strong); border-radius: 4px; padding: 6px; }
	    .ref-import-entry { display: flex; align-items: flex-start; gap: 8px; padding: 5px 7px; border-radius: 3px; font-size: 12px; }
	    .ref-import-entry--error { background: color-mix(in oklab, var(--danger, #c0392b) 8%, transparent); }
	    .ref-import-entry--skip { opacity: 0.5; }
	    .ref-import-check { margin-top: 2px; flex-shrink: 0; accent-color: var(--graph-node-accent-reference); }
	    .ref-import-info { flex: 1; min-width: 0; }
	    .ref-import-title { font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
	    .ref-import-meta { color: var(--muted); font-size: 11px; }
	    .ref-import-warn { color: var(--danger, #c0392b); font-size: 11px; display: block; margin-top: 2px; }
	    .ref-import-file-err { color: var(--danger, #c0392b); font-size: 12px; }

	    .graph-bulk-action-box {
	      border: 1px solid var(--panel-strong);
	      border-radius: 6px;
	      background: var(--card);
	      padding: 7px 8px;
	      display: grid;
	      gap: 5px;
	    }
	    .graph-layout-control-box {
	      border: 1px solid color-mix(in oklab, var(--brand) 18%, var(--panel-strong));
	      border-radius: 8px;
	      background: linear-gradient(180deg, color-mix(in oklab, var(--brand) 3%, var(--card)), var(--card));
	      padding: 8px;
	      display: grid;
	      gap: 6px;
	    }
	    .graph-bulk-action-box .btn {
	      justify-self: flex-start;
	    }
	    .graph-bulk-action-inline {
	      display: flex;
	      gap: 6px;
	      flex-wrap: wrap;
	    }
	    .graph-bulk-action-hint {
	      font-size: 11px;
	      line-height: 1.35;
	      color: var(--muted);
	    }
	    .graph-bulk-action-status {
	      font-size: 11px;
	      color: #1b5e20;
	      min-height: 13px;
	    }
	    .graph-bulk-action-status-error {
	      color: #9f1f1f;
	    }
	    .graph-slider-field {
	      display: flex;
	      align-items: center;
	      justify-content: space-between;
	      gap: 8px;
	      font-size: 11px;
	      color: var(--muted);
	      font-weight: 600;
	    }
	    .graph-slider-label {
	      color: var(--text);
	    }
	    .graph-slider-value {
	      font-variant-numeric: tabular-nums;
	      color: var(--muted);
	    }
	    #graph-lane-spacing-slider,
	    #graph-node-spacing-slider {
	      width: 100%;
	      margin: 0;
	      accent-color: color-mix(in oklab, var(--brand) 76%, var(--text));
	    }
	    .graph-category-manager {
	      border: 1px solid var(--panel-strong);
	      border-radius: 4px;
	      background: var(--card);
	      padding: 8px;
	      display: grid;
	      gap: 8px;
	    }
	    .graph-category-manager-actions {
	      display: flex;
	      gap: 6px;
	      flex-wrap: wrap;
	    }
	    .graph-category-manager-list {
	      display: grid;
	      gap: 6px;
	    }
	    .graph-category-row {
	      border: 1px solid var(--panel-strong);
	      border-radius: 3px;
	      background: var(--panel);
	      padding: 6px 7px;
	      display: grid;
	      grid-template-columns: minmax(0, 1fr) auto;
	      grid-template-areas:
	        "main count"
	        "actions actions";
	      gap: 5px 8px;
	      align-items: center;
	    }
	    .graph-category-row-main {
	      grid-area: main;
	      min-width: 0;
	      display: grid;
	      gap: 2px;
	    }
	    .graph-category-row-title {
	      font-size: 11px;
	      font-weight: 700;
	      color: var(--text);
	      white-space: nowrap;
	      overflow: hidden;
	      text-overflow: ellipsis;
	    }
	    .graph-category-row-meta {
	      display: flex;
	      align-items: center;
	      gap: 6px;
	      min-width: 0;
	    }
	    .graph-category-kind {
	      font-size: 9px;
	      letter-spacing: 0.35px;
	      text-transform: uppercase;
	      border: 1px solid var(--panel-strong);
	      border-radius: 2px;
	      padding: 1px 4px;
	      line-height: 1.4;
	      color: var(--muted);
	      background: var(--card);
	    }
	    .graph-category-kind-measurement { border-color: color-mix(in oklab, var(--graph-node-accent-measurement) 56%, var(--panel-strong)); color: color-mix(in oklab, var(--graph-node-accent-measurement) 70%, var(--text)); }
	    .graph-category-kind-experiment { border-color: color-mix(in oklab, var(--graph-node-accent-experiment) 56%, var(--panel-strong)); color: color-mix(in oklab, var(--graph-node-accent-experiment) 70%, var(--text)); }\n\t    .graph-category-kind-reference { border-color: color-mix(in oklab, var(--graph-node-accent-reference) 56%, var(--panel-strong)); color: color-mix(in oklab, var(--graph-node-accent-reference) 70%, var(--text)); }
	    .graph-category-kind-asset { border-color: color-mix(in oklab, var(--brand) 56%, var(--panel-strong)); color: color-mix(in oklab, var(--brand) 70%, var(--text)); }
	    .graph-category-kind-script { border-color: color-mix(in oklab, var(--graph-node-accent-script) 56%, var(--panel-strong)); color: color-mix(in oklab, var(--graph-node-accent-script) 70%, var(--text)); }
	    .graph-category-kind-figure { border-color: color-mix(in oklab, var(--graph-node-accent-figure) 56%, var(--panel-strong)); color: color-mix(in oklab, var(--graph-node-accent-figure) 70%, var(--text)); }
	    .graph-category-scope {
	      font-size: 10px;
	      color: var(--muted);
	    }
	    .graph-category-row-count {
	      grid-area: count;
	      justify-self: end;
	      min-width: 18px;
	      text-align: right;
	      font-size: 11px;
	      color: var(--muted);
	      font-weight: 700;
	    }
	    .graph-category-row-actions {
	      grid-area: actions;
	      display: flex;
	      gap: 5px;
	      flex-wrap: wrap;
	    }
	    .graph-category-mutation-status {
	      min-height: 13px;
	      font-size: 11px;
	      color: #1b5e20;
	    }
	    .graph-category-mutation-status-error {
	      color: #9f1f1f;
	    }
	    .graph-column-toggle-row {
	      display: grid;
	      grid-template-columns: auto minmax(0, 1fr) auto;
	      align-items: center;
	      gap: 8px;
	      padding: 7px 10px;
	      border-top: 1px solid var(--panel-strong);
	      font-size: 12px;
	      line-height: 1.25;
	      cursor: pointer;
	    }
	    .graph-column-toggle-row:first-child { border-top: none; }
	    .graph-column-toggle-row-child { padding-left: 24px; }
	    .graph-column-toggle-row-grandchild { padding-left: 38px; }
	    .graph-column-toggle-row-greatgrandchild { padding-left: 52px; }
	    .graph-column-toggle-row-ultradeep { padding-left: 66px; }
	    .graph-column-toggle-row input {
	      margin: 0;
	      width: 13px;
	      height: 13px;
	      cursor: pointer;
	    }
	    .graph-column-toggle-row span {
	      min-width: 0;
	      overflow: hidden;
	      text-overflow: ellipsis;
	      white-space: nowrap;
	      color: var(--text);
	    }
	    .graph-column-toggle-row strong {
	      font-size: 11px;
	      color: var(--muted);
	    }
	    .graph-column-toggle-row input:disabled,
	    .graph-column-toggle-row input:disabled + span {
	      cursor: default;
	      color: var(--muted);
	    }
	    .graph-stat-row {
	      display: flex;
	      justify-content: space-between;
	      gap: 8px;
	      padding: 8px 10px;
	      font-size: 12px;
	      border-top: 1px solid var(--panel-strong);
	    }
	    .graph-stat-row:first-child { border-top: none; }
	    .graph-stat-row-legend { align-items: center; }
	    .graph-kind-legend-label {
	      min-width: 0;
	      display: inline-flex;
	      align-items: center;
	      gap: 8px;
	      color: var(--text);
	    }
	    .graph-kind-legend-label > span {
	      min-width: 0;
	      overflow: hidden;
	      text-overflow: ellipsis;
	      white-space: nowrap;
	    }
	    .graph-kind-legend-icon {
	      width: 26px;
	      height: 10px;
	      flex-shrink: 0;
	      display: block;
	      overflow: visible;
	    }
	    .graph-kind-legend-icon .graph-edge {
	      vector-effect: none;
	      pointer-events: none;
	    }
	    .graph-relation-badge-row {
	      display: flex;
	      align-items: center;
	      margin: 2px 0 4px;
	    }
	    .graph-relation-badge {
	      --graph-relation-badge-accent: color-mix(in oklab, var(--text) 62%, var(--panel-strong));
	      display: inline-flex;
	      align-items: center;
	      gap: 8px;
	      min-width: 0;
	      max-width: 100%;
	      padding: 0;
	      color: color-mix(in oklab, var(--graph-relation-badge-accent) 62%, var(--text));
	    }
	    .graph-relation-badge-compact {
	      gap: 6px;
	      font-size: 11px;
	    }
	    .graph-relation-badge-glyph {
	      flex-shrink: 0;
	      min-width: 26px;
	      height: 22px;
	      padding: 0 7px;
	      border-radius: 999px;
	      display: inline-flex;
	      align-items: center;
	      justify-content: center;
	      font-size: 10px;
	      font-weight: 800;
	      letter-spacing: 0.08em;
	      text-transform: uppercase;
	      color: white;
	      background:
	        linear-gradient(135deg, color-mix(in oklab, var(--graph-relation-badge-accent) 88%, white 12%), color-mix(in oklab, var(--graph-relation-badge-accent) 72%, black 28%));
	      box-shadow: inset 0 1px 0 color-mix(in oklab, white 24%, transparent);
	    }
	    .graph-relation-badge-compact .graph-relation-badge-glyph {
	      min-width: 22px;
	      height: 18px;
	      padding: 0 6px;
	      font-size: 9px;
	    }
	    .graph-relation-badge-text {
	      min-width: 0;
	      overflow: hidden;
	      text-overflow: ellipsis;
	      white-space: nowrap;
	      font-size: 12px;
	      font-weight: 700;
	      letter-spacing: 0.02em;
	    }
	    .graph-relation-badge-tone-lab {
	      --graph-relation-badge-accent: color-mix(in oklab, var(--graph-node-accent-experiment) 78%, #1b8f83 22%);
	    }
	    .graph-relation-badge-tone-signal {
	      --graph-relation-badge-accent: color-mix(in oklab, var(--brand) 62%, #c24a36 38%);
	    }
	    .graph-relation-badge-tone-input {
	      --graph-relation-badge-accent: color-mix(in oklab, var(--text) 58%, #3f6d8b 42%);
	    }
	    .graph-relation-badge-tone-output {
	      --graph-relation-badge-accent: color-mix(in oklab, #2f9b70 74%, var(--brand) 26%);
	    }
	    .graph-relation-badge-tone-reference {
	      --graph-relation-badge-accent: color-mix(in oklab, #7b5aa6 68%, var(--text) 32%);
	    }
	    .graph-muted-line { font-size: 12px; color: var(--muted); padding: 10px; }
	    .graph-stage {
	      min-width: 0;
	      min-height: 0;
	      max-height: 100%;
	      display: flex;
	      flex-direction: column;
	      gap: 8px;
	    }
	    .graph-stage-guide-box {
	      align-self: flex-start;
	      border: 1px solid color-mix(in oklab, var(--brand) 20%, var(--panel-strong));
	      border-radius: 6px;
	      background: color-mix(in oklab, var(--brand) 5%, var(--card));
	      max-width: calc(100% - 300px);
	      padding: 9px 10px;
	      font-size: 11px;
	      line-height: 1.45;
	      color: var(--muted);
	    }
	    .graph-stage-guide-box strong {
	      color: color-mix(in oklab, var(--brand) 60%, var(--text));
	    }
	    .graph-stage-status {
	      border: 1px solid var(--panel-strong);
	      border-radius: 4px;
	      background: var(--card);
	      padding: 8px 10px;
	      font-size: 12px;
	    }
	    .graph-stage-loading { color: var(--muted); }
	    .graph-stage-ready { color: var(--text); }
	    .graph-stage-error {
	      color: #9f1f1f;
	      border-color: #e4b4b4;
	      background: #fff5f5;
	    }
	    .graph-canvas-shell {
	      flex: 1;
	      min-height: 0;
	      border: 1px solid var(--panel-strong);
	      border-radius: 4px;
	      background: var(--card);
	      position: relative;
	      overflow: hidden;
	      cursor: all-scroll;
	      touch-action: none;
	    }
	    .graph-canvas-shell.graph-cursor-node { cursor: grab; }
	    .graph-canvas-shell.graph-cursor-hook { cursor: pointer; }
	    .graph-canvas-shell.graph-cursor-edge { cursor: pointer; }
	    .graph-canvas-shell.graph-cursor-node .graph-edge { cursor: inherit !important; }
	    .graph-canvas-shell.graph-scene-panning { cursor: all-scroll; }
	    .graph-canvas-shell.graph-canvas-shell-inspector-open { cursor: default; }
	    .graph-inspector-popup {
	      position: absolute;
	      inset: 0;
	      display: none;
	      pointer-events: none;
	      z-index: 22;
	    }
	    .graph-inspector-popup-active {
	      display: block;
	    }
	    .graph-inspector-popup-shell {
	      pointer-events: auto;
	    }
	    .graph-scene {
	      position: absolute;
	      inset: 0;
	      transform-origin: 0 0;
	      transform: translate(var(--graph-scene-pan-x, 0px), var(--graph-scene-pan-y, 0px)) scale(var(--graph-scene-scale, 1));
	      will-change: transform;
	    }
	    .graph-canvas-placeholder-slot {
	      position: absolute;
	      inset: 0;
	      z-index: 1;
	      pointer-events: none;
	    }
	    .graph-canvas-placeholder {
	      position: absolute;
	      inset: 12px;
	      border: 1px dashed var(--panel-strong);
	      border-radius: 4px;
	      background: var(--panel);
	      display: flex;
	      flex-direction: column;
	      align-items: center;
	      justify-content: center;
	      gap: 8px;
	      text-align: center;
	      padding: 14px;
	      box-sizing: border-box;
	    }
	    .graph-canvas-placeholder-title {
	      font-size: 13px;
	      font-weight: 700;
	      letter-spacing: 0.3px;
	      text-transform: uppercase;
	    }
	    .graph-canvas-placeholder-copy {
	      font-size: 12px;
	      color: var(--muted);
	      max-width: 64ch;
	    }
	    .graph-node-board {
	      min-width: 100%;
	      min-height: 100%;
	      box-sizing: border-box;
	      padding: 20px 30px 28px;
	      display: flex;
	      flex-direction: column;
	      gap: 16px;
	      align-items: stretch;
	    }
	    .graph-main-lanes {
	      display: grid;
	      grid-template-columns: repeat(var(--graph-col-count, 1), 292px);
	      column-gap: var(--graph-lane-gap, 38px);
	      row-gap: 18px;
	      align-items: start;
	      align-content: start;
	      justify-content: start;
	    }
	    .graph-node-board-has-experiment-band .graph-main-lanes {
	      margin-top: 44px;
	    }
	    .graph-experiment-band {
	      border-color: color-mix(in oklab, var(--graph-node-accent-experiment) 52%, var(--panel-strong));
	      background: color-mix(in oklab, var(--graph-node-accent-experiment) 8%, var(--card));
	      min-height: 0;
	      width: 100%;
	      max-width: 100%;
	      align-self: stretch;
	      margin-inline: 0;
	    }
	    .graph-experiment-band-header {
	      border-bottom-color: color-mix(in oklab, var(--graph-node-accent-experiment) 34%, var(--panel-strong));
	      background: color-mix(in oklab, var(--graph-node-accent-experiment) 14%, var(--panel));
	    }
	    .graph-node-list.graph-experiment-band-list {
	      display: flex;
	      flex-direction: row;
	      flex-wrap: nowrap;
	      align-items: stretch;
	      justify-content: flex-start;
	      width: 100%;
	      gap: 10px;
	      overflow-x: auto;
	      overflow-y: hidden;
	      overscroll-behavior-x: contain;
	    }
	    .graph-experiment-band-list .graph-node-card {
	      flex: 0 0 230px;
	      width: 230px;
	      min-height: 44px;
	      padding: 6px 8px;
	      gap: 6px;
	    }
	    .graph-experiment-band-list .graph-node-card .graph-node-main {
	      gap: 3px;
	    }
	    .graph-experiment-band-list .graph-node-card .graph-node-title {
	      font-size: 11px;
	    }
	    .graph-experiment-band-list .graph-node-card .graph-node-meta {
	      font-size: 10px;
	    }
	    .graph-experiment-band-list .graph-node-card .graph-node-type-chip {
	      width: 14px;
	      height: 14px;
	      font-size: 9px;
	    }
	    .graph-experiment-band-list .graph-node-card.graph-node-card-parent {
	      row-gap: 4px;
	      padding-top: 8px;
	      padding-bottom: 8px;
	    }
	    .graph-experiment-band-list .graph-node-card.graph-node-card-parent .graph-node-main {
	      padding-right: 0;
	    }
	    .graph-experiment-band .graph-muted-line {
	      padding: 4px 2px;
	    }
	    .graph-node-column {
	      position: relative;
	      border: 1px solid color-mix(in oklab, var(--panel-strong) 45%, transparent);
	      border-radius: 4px;
	      background: color-mix(in oklab, var(--card) 58%, transparent);
	      min-height: 120px;
	      display: flex;
	      flex-direction: column;
	    }
	    .graph-node-column-header {
	      position: relative;
	      z-index: 20;
	      height: 34px;
	      flex-shrink: 0;
	      box-sizing: border-box;
	      display: flex;
	      align-items: center;
	      justify-content: space-between;
	      gap: 8px;
	      padding: 0 10px;
	      border-bottom: 1px solid color-mix(in oklab, var(--panel-strong) 42%, transparent);
	      font-size: 11px;
	      text-transform: uppercase;
	      letter-spacing: 0.4px;
	      color: color-mix(in oklab, var(--muted) 70%, transparent);
	      background: color-mix(in oklab, var(--panel) 48%, transparent);
	      user-select: none;
	      -webkit-user-select: none;
	    }
	    .graph-node-column-header-main {
	      min-width: 0;
	      display: flex;
	      align-items: center;
	      gap: 8px;
	      flex: 1;
	    }
	    .graph-node-column-title {
	      min-width: 0;
	      overflow: hidden;
	      text-overflow: ellipsis;
	      white-space: nowrap;
	      user-select: none;
	      -webkit-user-select: none;
	    }
	    .graph-node-column-title-editable {
	      cursor: default;
	      border-radius: 3px;
	      padding: 1px 3px;
	      margin-left: -3px;
	      margin-right: -3px;
	    }
	    .graph-node-column-title-editing {
	      overflow: visible;
	      text-overflow: clip;
	      white-space: normal;
	      background: transparent !important;
	    }
	    .graph-lane-title-input {
	      width: 100%;
	      box-sizing: border-box;
	      border: 1px solid color-mix(in oklab, var(--brand) 60%, var(--panel-strong));
	      border-radius: 3px;
	      height: 20px;
	      background: var(--card);
	      color: var(--text);
	      font-size: 11px;
	      letter-spacing: 0.3px;
	      padding: 0 5px;
	      user-select: text;
	      -webkit-user-select: text;
	    }
	    .graph-lane-title-input:focus {
	      outline: 1px solid color-mix(in oklab, var(--brand) 50%, var(--panel-strong));
	    }
	    .graph-node-column-header-actions {
	      display: flex;
	      align-items: center;
	      gap: 4px;
	      flex-shrink: 0;
	    }
	    .graph-lane-action-btn {
	      width: 18px;
	      height: 18px;
	      border: 1px solid color-mix(in oklab, var(--panel-strong) 86%, transparent);
	      border-radius: 2px;
	      background: color-mix(in oklab, var(--panel) 70%, transparent);
	      color: color-mix(in oklab, var(--text) 64%, var(--muted));
	      font-size: 11px;
	      line-height: 1;
	      padding: 0;
	      cursor: pointer;
	    }
	    .graph-lane-action-btn:hover:not(:disabled) {
	      border-color: color-mix(in oklab, var(--brand) 62%, var(--panel-strong));
	      color: color-mix(in oklab, var(--brand) 74%, var(--text));
	    }
	    .graph-lane-action-btn:disabled {
	      opacity: 0.45;
	      cursor: default;
	    }
	    .graph-node-column-header strong {
	      color: color-mix(in oklab, var(--text) 66%, transparent);
	      font-size: 11px;
	      font-weight: 600;
	      min-width: 18px;
	      text-align: right;
	    }
	    .graph-node-column-create {
	      min-height: 120px;
	      border-style: dashed;
	      background: color-mix(in oklab, var(--card) 36%, transparent);
	      display: flex;
	      align-items: center;
	      justify-content: center;
	    }
	    .graph-node-column-create-btn {
	      width: 30px;
	      height: 30px;
	      border: 1px solid color-mix(in oklab, var(--panel-strong) 86%, transparent);
	      border-radius: 3px;
	      background: color-mix(in oklab, var(--panel) 62%, transparent);
	      color: color-mix(in oklab, var(--text) 54%, var(--muted));
	      font-size: 18px;
	      line-height: 1;
	      cursor: pointer;
	      opacity: 0.75;
	    }
	    .graph-node-column-create-btn:hover:not(:disabled) {
	      opacity: 1;
	      color: color-mix(in oklab, var(--brand) 68%, var(--text));
	      border-color: color-mix(in oklab, var(--brand) 58%, var(--panel-strong));
	    }
	    .graph-node-column-create-btn:disabled {
	      cursor: default;
	      opacity: 0.45;
	    }
	    .graph-node-column-drop-target {
	      border-color: color-mix(in oklab, var(--brand) 58%, var(--panel-strong));
	      box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--brand) 32%, transparent);
	    }
	    .graph-node-column-appearing {
	      transform-origin: left center;
	      animation: graph-lane-grow-appear 300ms cubic-bezier(0.2, 0.9, 0.2, 1);
	    }
	    @keyframes graph-lane-grow-appear {
	      from {
	        transform: translateX(18px) scaleX(0.32) scaleY(0.96);
	        opacity: 0.06;
	      }
	      68% {
	        transform: translateX(-2px) scaleX(1.03) scaleY(1);
	        opacity: 1;
	      }
	      to {
	        transform: translateX(0px) scaleX(1) scaleY(1);
	        opacity: 1;
	      }
	    }
	    .graph-node-column-swapping {
	      box-shadow: 0 4px 14px rgba(13, 18, 40, 0.12);
	    }
	    .graph-node-list {
	      display: flex;
	      flex-direction: column;
	      gap: var(--graph-node-gap, 10px);
	      padding: 10px;
	      min-height: 0;
	    }
	    .graph-node-card {
	      position: relative;
	      min-height: 52px;
	      box-sizing: border-box;
	      border: 1px solid color-mix(in oklab, var(--panel-strong) 64%, transparent);
	      border-radius: 10px;
	      background: color-mix(in oklab, var(--card) 96%, var(--panel));
	      box-shadow: 0 4px 14px rgba(13, 18, 40, 0.04);
	      display: flex;
	      align-items: center;
	      gap: 8px;
	      padding: 8px 10px;
	      cursor: grab;
	      user-select: none;
	      -webkit-user-select: none;
	      touch-action: none;
	    }
	    .graph-node-card.graph-node-measurement_run,
	    .graph-node-child.graph-node-measurement_run,
	    .graph-node-child.graph-node-measurement_column,
	    .graph-node-child.graph-node-measurement_series {
	      background: var(--card);
	      border-color: color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-measurement)) 22%, var(--panel-strong));
	      box-shadow: 0 4px 14px rgba(13, 18, 40, 0.04), inset 0 0 0 1px color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-measurement)) 8%, transparent);
	    }
	    .graph-node-card.graph-node-asset,
	    .graph-node-child.graph-node-asset {
	      background: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 6%, var(--card));
	      border-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 24%, var(--panel-strong));
	      box-shadow: 0 4px 14px rgba(13, 18, 40, 0.04), inset 0 0 0 1px color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 8%, transparent);
	    }
	    .graph-node-card.graph-node-reference,
	    .graph-node-child.graph-node-reference {
	      background: var(--card);
	      border-color: var(--panel-strong);
	    }
	    .graph-node-reference .graph-node-type-chip,
	    .graph-node-child.graph-node-reference .graph-node-child-type {
	      border-color: color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-reference)) 54%, var(--panel-strong));
	      color: color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-reference)) 82%, var(--text));
	      background: color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-reference)) 12%, var(--card));
	      box-shadow: inset 0 0 0 1px color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-reference)) 10%, transparent);
	    }
	    .graph-node-card-positioned {
	      left: var(--graph-node-x, 0px);
	      top: var(--graph-node-y, 0px);
	    }
	    .graph-node-card-dragging {
	      cursor: grabbing;
	      z-index: 8;
	      box-shadow: 0 0 0 1px var(--panel-strong);
	      pointer-events: none;
	    }
	    .graph-node-card-selected {
	      border-color: color-mix(in oklab, var(--brand) 58%, var(--panel-strong));
	      box-shadow: 0 0 0 1px color-mix(in oklab, var(--brand) 40%, var(--panel-strong));
	    }
	    .graph-node-card.graph-node-asset.graph-node-card-selected {
	      border-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 58%, var(--panel-strong));
	      box-shadow: 0 0 0 1px color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 40%, var(--panel-strong));
	    }
	    .graph-node-child-wrap-selected > .graph-node-child {
	      border-color: color-mix(in oklab, var(--brand) 58%, var(--panel-strong));
	      box-shadow: 0 0 0 1px color-mix(in oklab, var(--brand) 36%, var(--panel-strong));
	    }
	    .graph-node-child-wrap-selected > .graph-node-child.graph-node-asset {
	      border-color: color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 58%, var(--panel-strong));
	      box-shadow: 0 0 0 1px color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 36%, var(--panel-strong));
	    }
	    .graph-node-focus-dimmed {
	      opacity: 0.28;
	      filter: saturate(0.45);
	      transition: opacity 120ms ease, filter 120ms ease;
	    }
	    .graph-focus-active .graph-node-card:not(.graph-node-focus-dimmed),
	    .graph-focus-active .graph-node-child:not(.graph-node-focus-dimmed) {
	      opacity: 1;
	    }
	    .graph-node-main {
	      min-width: 0;
	      flex: 1;
	      display: flex;
	      flex-direction: column;
	      gap: 4px;
	    }
	    .graph-node-title-row {
	      display: flex;
	      align-items: center;
	      gap: 7px;
	      min-width: 0;
	    }
	    .graph-node-type-chip {
	      width: 16px;
	      height: 16px;
	      border: 1px solid var(--panel-strong);
	      border-radius: 3px;
	      display: inline-flex;
	      align-items: center;
	      justify-content: center;
	      font-size: 10px;
	      font-weight: 700;
	      color: var(--muted);
	      background: var(--panel);
	      flex-shrink: 0;
	    }
	    .graph-node-title {
	      min-width: 0;
	      overflow: hidden;
	      text-overflow: ellipsis;
	      white-space: nowrap;
	      font-size: 12px;
	      font-weight: 700;
	      color: var(--text);
	    }
	    .graph-node-meta {
	      font-size: 11px;
	      color: var(--muted);
	      overflow: hidden;
	      text-overflow: ellipsis;
	      white-space: nowrap;
	    }
	    .graph-node-experiment-context {
	      display: grid;
	      gap: 3px;
	    }
	    .graph-node-experiment-line {
	      min-width: 0;
	      display: grid;
	      grid-template-columns: auto minmax(0, 1fr);
	      align-items: start;
	      gap: 5px;
	    }
	    .graph-node-experiment-label {
	      width: 14px;
	      height: 14px;
	      border: 1px solid color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-experiment)) 58%, var(--panel-strong));
	      border-radius: 2px;
	      display: inline-flex;
	      align-items: center;
	      justify-content: center;
	      font-size: 9px;
	      font-weight: 700;
	      color: color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-experiment)) 78%, var(--text));
	      background: color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-experiment)) 14%, var(--card));
	      flex-shrink: 0;
	    }
	    .graph-node-experiment-text {
	      font-size: 10px;
	      line-height: 1.25;
	      color: var(--text);
	      white-space: normal;
	      overflow-wrap: anywhere;
	      word-break: break-word;
	      display: -webkit-box;
	      -webkit-line-clamp: 2;
	      -webkit-box-orient: vertical;
	      overflow: hidden;
	      text-overflow: ellipsis;
	    }
	    .graph-node-experiment-line-answer .graph-node-experiment-text {
	      color: color-mix(in oklab, var(--text) 72%, var(--muted));
	    }
	    .graph-node-card-parent {
	      align-items: flex-start;
	      flex-wrap: wrap;
	      row-gap: 6px;
	    }
	    .graph-node-card-parent .graph-node-main {
	      width: 100%;
	      padding-right: 12px;
	    }
	    .graph-node-card-parent .graph-node-hook-left,
	    .graph-node-card-parent .graph-node-hook-right {
	      top: 24px;
	      margin-top: -4px;
	    }
	    .graph-node-card-parent.graph-node-experiment {
	      padding-top: 12px;
	      padding-bottom: 12px;
	    }
	    .graph-node-card-parent.graph-node-experiment .graph-node-main {
	      padding-right: 0;
	    }
	    .graph-node-card-has-children {
	      padding-bottom: 9px;
	    }
	    .graph-node-children {
	      width: 100%;
	      display: grid;
	      gap: 7px;
	      padding-left: 8px;
	      cursor: default;
	    }
	    .graph-node-child-group {
	      border-top: 1px dashed color-mix(in oklab, var(--panel-strong) 54%, transparent);
	      padding-top: 6px;
	      display: grid;
	      gap: 5px;
	    }
	    .graph-node-child-group-title {
	      font-size: 10px;
	      line-height: 1.2;
	      letter-spacing: 0.35px;
	      text-transform: uppercase;
	      color: color-mix(in oklab, var(--muted) 82%, transparent);
	      padding-left: 2px;
	      font-weight: 700;
	    }
	    .graph-node-child-wrap {
	      display: grid;
	      gap: 4px;
	    }
	    .graph-node-child-wrap-depth-2 { margin-left: 10px; }
	    .graph-node-child-wrap-depth-3 { margin-left: 14px; }
	    .graph-node-child-wrap-depth-4 { margin-left: 18px; }
	    .graph-node-child {
	      position: relative;
	      min-height: 36px;
	      box-sizing: border-box;
	      border: 1px solid color-mix(in oklab, var(--panel-strong) 88%, transparent);
	      border-radius: 3px;
	      background: color-mix(in oklab, var(--card) 94%, var(--panel));
	      display: flex;
	      align-items: center;
	      padding: 6px 8px;
	      overflow: visible;
	      cursor: default;
	    }
	    .graph-node-child-depth-2 {
	      min-height: 32px;
	      padding: 5px 8px;
	    }
	    .graph-node-child-depth-3 {
	      min-height: 30px;
	      padding: 4px 8px;
	    }
	    .graph-node-child-depth-4 {
	      min-height: 28px;
	      padding: 3px 7px;
	    }
	    .graph-node-child-main {
	      min-width: 0;
	      width: 100%;
	      display: grid;
	      grid-template-columns: auto auto minmax(0, 1fr);
	      align-items: center;
	      gap: 6px;
	      padding-right: 8px;
	    }
	    .graph-node-child-type {
	      width: 13px;
	      height: 13px;
	      border: 1px solid color-mix(in oklab, var(--panel-strong) 85%, transparent);
	      border-radius: 2px;
	      display: inline-flex;
	      align-items: center;
	      justify-content: center;
	      font-size: 9px;
	      font-weight: 700;
	      color: color-mix(in oklab, var(--muted) 78%, transparent);
	      background: color-mix(in oklab, var(--panel) 70%, transparent);
	      flex-shrink: 0;
	    }
	    .graph-node-child-title {
	      min-width: 0;
	      font-size: 11px;
	      font-weight: 600;
	      color: var(--text);
	      overflow: hidden;
	      text-overflow: ellipsis;
	      white-space: nowrap;
	    }
	    .graph-node-child-depth-1 .graph-node-child-title {
	      font-size: 10px;
	    }
	    .graph-node-child-depth-2 .graph-node-child-title {
	      font-size: 9px;
	    }
	    .graph-node-child-depth-3 .graph-node-child-title {
	      font-size: 8px;
	    }
	    .graph-node-child-depth-4 .graph-node-child-title {
	      font-size: 7px;
	    }
	    .graph-node-child-depth-2 .graph-node-child-type {
	      width: 11px;
	      height: 11px;
	      font-size: 7px;
	    }
	    .graph-node-child-depth-3 .graph-node-child-type {
	      width: 10px;
	      height: 10px;
	      font-size: 6px;
	    }
	    .graph-node-child-depth-4 .graph-node-child-type {
	      width: 9px;
	      height: 9px;
	      font-size: 5px;
	    }
	    .graph-node-child.graph-node-dataset .graph-node-child-main {
	      align-items: start;
	    }
	    .graph-node-child.graph-node-dataset .graph-node-child-title {
	      white-space: normal;
	      overflow: visible;
	      text-overflow: clip;
	      line-height: 1.2;
	      overflow-wrap: anywhere;
	      word-break: break-word;
	    }
	    .graph-node-child-list {
	      display: grid;
	      gap: 4px;
	      margin-left: 10px;
	    }
	    .graph-node-child-list-depth-3 { margin-left: 12px; }
	    .graph-node-child-list-depth-4 { margin-left: 14px; }
	    .graph-node-fold-toggle {
	      width: 14px;
	      height: 14px;
	      padding: 0;
	      border: 1px solid color-mix(in oklab, var(--panel-strong) 88%, transparent);
	      border-radius: 2px;
	      background: color-mix(in oklab, var(--panel) 70%, transparent);
	      color: var(--muted);
	      font-size: 10px;
	      line-height: 1;
	      display: inline-flex;
	      align-items: center;
	      justify-content: center;
	      cursor: pointer;
	      flex-shrink: 0;
	    }
	    .graph-node-fold-toggle:hover {
	      border-color: color-mix(in oklab, var(--brand) 62%, var(--panel-strong));
	      color: color-mix(in oklab, var(--brand) 68%, var(--muted));
	    }
	    .graph-node-fold-toggle-spacer {
	      width: 14px;
	      height: 14px;
	      flex-shrink: 0;
	      display: inline-block;
	    }
	    .graph-node-fold-toggle-child {
	      width: 13px;
	      height: 13px;
	      font-size: 9px;
	    }
	    .graph-node-hook {
	      position: absolute;
	      top: 50%;
	      width: 8px;
	      height: 8px;
	      margin-top: -4px;
	      margin-left: 0;
	      border: 1px solid var(--text);
	      border-radius: 2px;
	      background: var(--card);
	      box-shadow: 0 0 0 2px var(--card);
	      cursor: pointer;
	      pointer-events: auto;
	      transition: transform 120ms ease, background-color 120ms ease, border-color 120ms ease;
	      z-index: 24;
	      padding: 0;
	      appearance: none;
	    }
	    .graph-node-hook:hover:not(:disabled) {
	      transform: scale(1.15);
	      border-color: var(--brand);
	    }
	    .graph-node-hook:disabled,
	    .graph-node-hook-readonly {
	      cursor: default;
	      opacity: 0.55;
	    }
	    .graph-hook-active {
	      border-color: var(--brand);
	      background: color-mix(in oklab, var(--brand) 20%, var(--card));
	      transform: scale(1.22);
	    }
	    .graph-hook-snap {
	      border-color: var(--brand);
	      background: color-mix(in oklab, var(--brand) 24%, var(--card));
	      transform: scale(1.22);
	    }
	    .graph-node-hook-in { left: -5px; }
	    .graph-node-hook-out { right: -5px; }
	    .graph-node-hook-left {
	      left: -5px;
	      right: auto;
	      top: 50%;
	      bottom: auto;
	      margin-top: -4px;
	      margin-left: 0;
	    }
	    .graph-node-hook-right {
	      right: -5px;
	      left: auto;
	      top: 50%;
	      bottom: auto;
	      margin-top: -4px;
	      margin-left: 0;
	    }
	    .graph-node-hook-top {
	      left: 50%;
	      right: auto;
	      top: -5px;
	      bottom: auto;
	      margin-top: 0;
	      margin-left: -4px;
	    }
	    .graph-node-hook-bottom {
	      left: 50%;
	      right: auto;
	      top: auto;
	      bottom: -5px;
	      margin-top: 0;
	      margin-left: -4px;
	    }
	    .graph-node-hook-child {
	      width: 7px;
	      height: 7px;
	      margin-top: -3.5px;
	      box-shadow: 0 0 0 1.5px var(--card);
	    }
	    .graph-node-card-parent .graph-node-child .graph-node-hook {
	      top: 50%;
	      margin-top: -3.5px;
	    }
	    .graph-node-child .graph-node-hook-in { left: -4px; }
	    .graph-node-child .graph-node-hook-out { right: -4px; }
	    .graph-edge-layer {
	      position: absolute;
	      top: 0;
	      left: 0;
	      overflow: visible;
	      pointer-events: none;
	    }
	    .graph-edge-layer-structural {
	      z-index: 12;
	    }
	    .graph-edge-layer-authored {
	      z-index: 14;
	    }
	    .graph-edge {
	      fill: none;
	      stroke-linecap: round;
	      stroke-linejoin: round;
	      vector-effect: non-scaling-stroke;
	      pointer-events: stroke;
	      transition: opacity 120ms ease, stroke-width 120ms ease;
	    }
	    .graph-edge-control {
	      fill: color-mix(in oklab, var(--card) 78%, var(--text) 22%);
	      stroke: color-mix(in oklab, var(--text) 42%, var(--panel-strong));
	      stroke-width: 1.2;
	      vector-effect: non-scaling-stroke;
	      pointer-events: all;
	      cursor: grab;
	      opacity: 0.92;
	      transition: opacity 120ms ease, stroke-width 120ms ease, fill 120ms ease, stroke 120ms ease;
	    }
	    .graph-edge-control:hover {
	      stroke-width: 1.8;
	      opacity: 1;
	    }
	    .graph-edge-control:active {
	      cursor: grabbing;
	    }
	    .graph-edge-control-selected {
	      stroke: var(--brand);
	      stroke-width: 2.1;
	      opacity: 1;
	    }
	    .graph-edge-control-custom {
	      stroke-width: 1.7;
	    }
	    .graph-edge-control-dimmed {
	      opacity: 0.16 !important;
	    }
	    .graph-edge-control-structural {
	      fill: color-mix(in oklab, var(--panel) 68%, var(--text) 32%);
	    }
	    .graph-edge-control-kind-evidence {
	      fill: color-mix(in oklab, var(--graph-node-accent-experiment) 44%, var(--card));
	      stroke: color-mix(in oklab, var(--graph-node-accent-experiment) 66%, var(--text) 34%);
	    }
	    .graph-edge-control-kind-conclusion {
	      fill: color-mix(in oklab, var(--brand) 40%, var(--card));
	      stroke: color-mix(in oklab, var(--brand) 72%, var(--graph-node-accent-experiment) 28%);
	    }
	    .graph-edge-control-kind-data_input {
	      fill: color-mix(in oklab, var(--text) 28%, var(--card));
	    }
	    .graph-edge-control-kind-produces {
	      fill: color-mix(in oklab, var(--brand) 36%, var(--card));
	    }
	    .graph-edge-control-kind-reference {
	      fill: color-mix(in oklab, var(--text) 24%, var(--card));
	    }
	    .graph-edge-control-add {
	      opacity: 0 !important;
	      pointer-events: none;
	      cursor: copy;
	      transition: opacity 120ms ease;
	    }
	    .graph-edge-group:hover .graph-edge-control-add,
	    .graph-edge-group-selected .graph-edge-control-add {
	      opacity: 0.86 !important;
	      pointer-events: all;
	    }
	    .graph-edge-control-add circle {
	      fill: color-mix(in oklab, var(--card) 66%, transparent);
	      stroke: color-mix(in oklab, var(--brand) 52%, var(--panel-strong));
	      stroke-width: 1.25;
	      stroke-dasharray: 1.2 1.6;
	      vector-effect: non-scaling-stroke;
	    }
	    .graph-edge-control-add text {
	      fill: color-mix(in oklab, var(--brand) 74%, var(--text) 26%);
	      font-size: 10px;
	      font-weight: 700;
	      letter-spacing: 0;
	      pointer-events: none;
	      user-select: none;
	    }
	    .graph-edge-hit {
	      stroke: transparent;
	      stroke-width: 12;
	      cursor: pointer;
	      pointer-events: stroke;
	    }
	    .graph-edge-structural {
	      stroke: color-mix(in oklab, var(--text) 34%, var(--panel-strong));
	      stroke-width: 1.5;
	      stroke-dasharray: 5 4;
	      opacity: 0.9;
	      cursor: pointer;
	    }
	    .graph-edge-authored {
	      stroke: color-mix(in oklab, var(--text) 62%, var(--panel-strong));
	      stroke-width: 2;
	      opacity: 0.95;
	      cursor: pointer;
	    }
	    .graph-edge-authored:hover,
	    .graph-edge-structural:hover {
	      stroke-width: 2.8;
	      opacity: 1;
	    }
	    .graph-edge-selected {
	      stroke: var(--brand) !important;
	      stroke-width: 3.2 !important;
	      opacity: 1 !important;
	    }
	    .graph-edge-dimmed {
	      opacity: 0.14 !important;
	      stroke-width: 1.25 !important;
	      filter: none !important;
	    }
	    .graph-edge-kind-evidence {
	      stroke: color-mix(in oklab, var(--graph-node-accent-experiment) 68%, var(--text) 32%);
	      stroke-width: 3;
	      stroke-dasharray: 1.6 6.6;
	      opacity: 1;
	      filter: drop-shadow(0 0 1px color-mix(in oklab, var(--graph-node-accent-experiment) 34%, transparent));
	    }
	    .graph-edge-kind-conclusion {
	      stroke: color-mix(in oklab, var(--graph-node-accent-experiment) 76%, var(--brand) 24%);
	      stroke-width: 3.4;
	      opacity: 1;
	      filter: drop-shadow(0 0 3px color-mix(in oklab, var(--brand) 20%, transparent));
	    }
	    .graph-edge-kind-data_input {
	      stroke: color-mix(in oklab, var(--text) 66%, #3f6d8b 34%);
	      stroke-width: 2;
	      stroke-dasharray: 10 5;
	    }
	    .graph-edge-kind-produces {
	      stroke: color-mix(in oklab, #2f9b70 72%, var(--brand) 28%);
	      stroke-width: 2.6;
	      filter: drop-shadow(0 0 2px color-mix(in oklab, #2f9b70 20%, transparent));
	    }
	    .graph-edge-kind-reference {
	      stroke: color-mix(in oklab, #7b5aa6 52%, var(--text) 48%);
	      stroke-width: 2.1;
	      stroke-dasharray: 14 4 2 4;
	    }
	    .graph-edge-inline-label {
	      pointer-events: none;
	      opacity: 0.9;
	      transition: opacity 120ms ease;
	    }
	    .graph-edge-inline-label rect {
	      fill: color-mix(in oklab, var(--card) 84%, transparent);
	      stroke: none;
	      vector-effect: non-scaling-stroke;
	    }
	    .graph-edge-inline-label text {
	      fill: color-mix(in oklab, var(--muted) 86%, var(--text));
	      font-size: 10px;
	      letter-spacing: 0.1px;
	      font-weight: 500;
	      user-select: none;
	      -webkit-user-select: none;
	    }
	    .graph-edge-inline-label-selected {
	      opacity: 0.94;
	    }
	    .graph-link-drag-layer {
	      position: absolute;
	      top: 0;
	      left: 0;
	      pointer-events: none;
	      z-index: 18;
	      overflow: visible;
	    }
	    .graph-marquee-selection {
	      position: absolute;
	      border: 1px solid color-mix(in oklab, var(--brand) 70%, var(--panel-strong));
	      background: color-mix(in oklab, var(--brand) 18%, transparent);
	      box-sizing: border-box;
	      pointer-events: none;
	      z-index: 26;
	      display: none;
	    }
	    .graph-marquee-selection.graph-marquee-selection-active { display: block; }
	    .graph-link-live-path {
	      fill: none;
	      stroke: color-mix(in oklab, var(--text) 60%, var(--panel-strong));
	      stroke-width: 2.2;
	      stroke-linecap: round;
	      stroke-linejoin: round;
	    }
	    .graph-link-live-path-snapped {
	      stroke: var(--brand);
	      stroke-width: 2.6;
	    }
	    .graph-link-live-path-settle {
	      stroke: var(--brand);
	      stroke-width: 3;
	      opacity: 0.9;
	      transition: opacity 140ms ease;
	    }
	    .graph-link-dragging {
	      cursor: crosshair;
	    }
	    .graph-link-dragging .graph-edge-layer {
	      pointer-events: none;
	    }
    .graph-connect-popover {
      position: absolute;
      width: min(360px, calc(100% - 16px));
      max-height: min(90svh, 820px);
      border: 1px solid var(--panel-strong);
      border-radius: 4px;
      background: var(--card);
      box-shadow: 0 8px 24px rgba(0, 0, 0, 0.14);
      padding: 8px;
      box-sizing: border-box;
      z-index: 22;
      display: grid;
      gap: 6px;
      overflow-y: auto;
      overflow-x: hidden;
    }
    .graph-connect-popover.graph-connect-popover-has-evidence {
      width: min(980px, calc(100% - 16px));
    }
	    .graph-connect-title {
	      font-size: 11px;
	      letter-spacing: 0.4px;
	      text-transform: uppercase;
	      color: var(--muted);
	      font-weight: 700;
	    }
    .graph-connect-route {
      display: grid;
      grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
      gap: 6px;
      align-items: center;
      min-width: 0;
    }
    .graph-connect-arrow {
      font-size: 11px;
      color: var(--muted);
      line-height: 1;
    }
    .graph-connect-endpoint {
      border: 1px solid var(--panel-strong);
      border-radius: 3px;
      background: color-mix(in oklab, var(--panel) 62%, var(--card));
      padding: 5px 7px;
      font-size: 11px;
      color: var(--text);
      line-height: 1.2;
      min-width: 0;
      overflow: hidden;
      text-overflow: ellipsis;
      white-space: nowrap;
    }
    .graph-connect-field {
      display: grid;
      gap: 3px;
      font-size: 11px;
    }
    .graph-connect-field-compact {
      min-width: 0;
    }
    .graph-connect-field > span {
      color: var(--muted);
      letter-spacing: 0.3px;
      text-transform: uppercase;
      font-size: 9px;
      font-weight: 700;
    }
	    .graph-connect-field input,
	    .graph-connect-field select,
	    .graph-connect-field textarea {
	      width: 100%;
	      box-sizing: border-box;
	      border: 1px solid var(--panel-strong);
	      border-radius: 3px;
	      background: var(--card);
	      color: var(--text);
      font-size: 11px;
      padding: 5px 6px;
      resize: vertical;
    }
    .graph-connect-field input {
      height: 28px;
      resize: none;
    }
    .graph-connect-field input:focus,
    .graph-connect-field select:focus,
    .graph-connect-field textarea:focus {
      outline: 1px solid color-mix(in oklab, var(--brand) 45%, var(--panel-strong));
      border-color: var(--brand);
    }
    .graph-connect-summary-grid {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 6px;
    }
    .graph-connect-summary-item {
      display: grid;
      gap: 2px;
      padding: 5px 7px;
      border: 1px solid var(--panel-strong);
      border-radius: 3px;
      background: color-mix(in oklab, var(--panel) 62%, var(--card));
      min-width: 0;
    }
    .graph-connect-summary-item span {
      color: var(--muted);
      letter-spacing: 0.3px;
      text-transform: uppercase;
      font-size: 9px;
      font-weight: 700;
    }
    .graph-connect-summary-item strong {
      font-size: 11px;
      line-height: 1.25;
      min-width: 0;
      overflow-wrap: anywhere;
    }
    .graph-connect-scope-row {
      display: grid;
      gap: 5px;
      padding: 6px;
      border: 1px solid var(--panel-strong);
      border-radius: 3px;
      background: color-mix(in oklab, var(--panel) 52%, var(--card) 48%);
    }
    .graph-edge-evidence-editor[data-evidence-supported="true"] {
      grid-template-columns: repeat(2, minmax(0, 1fr));
      column-gap: 10px;
      row-gap: 6px;
    }
	    .graph-edge-evidence-editor[data-evidence-supported="true"] > .graph-connect-scope-title,
	    .graph-edge-evidence-editor[data-evidence-supported="true"] > .graph-inspector-readonly,
	    .graph-edge-evidence-editor[data-evidence-supported="true"] > .graph-connect-evidence-preview,
	    .graph-edge-evidence-editor[data-evidence-supported="true"] > .graph-connect-evidence-grid {
	      grid-column: 1 / -1;
	    }
    .graph-connect-scope-title {
      font-size: 9px;
      text-transform: uppercase;
      letter-spacing: 0.4px;
      color: var(--muted);
      font-weight: 700;
    }
	    .graph-edge-evidence-editor-hidden {
	      display: none !important;
	    }
	    .graph-edge-evidence-field-hidden {
	      display: none !important;
	    }
    .graph-connect-evidence-preview {
      border: none;
      border-radius: 0;
      background: transparent;
      padding: 0;
    }
    .graph-connect-evidence-grid {
      display: grid;
      grid-template-columns: minmax(0, 1fr);
      gap: 10px;
      align-items: start;
    }
    .graph-connect-evidence-controls {
      display: grid;
      gap: 8px;
      align-content: start;
    }
    .graph-connect-evidence-axis-row {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 6px;
      min-width: 0;
    }
    .graph-connect-evidence-preview-wrap {
      min-width: 0;
    }
    .graph-connect-evidence-preview .project-experiment-evidence-measurement {
      min-height: 160px;
      border: none;
      background: transparent;
    }
    .graph-connect-evidence-preview .project-experiment-evidence-measurement-chart {
      padding: 0;
    }
    .graph-connect-evidence-preview .project-experiment-evidence-measurement-svg {
      height: 168px;
      border: none;
      background: transparent;
    }
    .graph-connect-popover.graph-connect-popover-has-evidence .graph-connect-evidence-preview .project-experiment-evidence-measurement {
      min-height: 360px;
    }
    .graph-connect-popover.graph-connect-popover-has-evidence .graph-connect-evidence-preview .project-experiment-evidence-measurement-chart {
      padding: 0;
    }
    .graph-connect-popover.graph-connect-popover-has-evidence .graph-connect-evidence-preview .project-experiment-evidence-measurement-svg {
      height: 344px;
      border: none;
      background: transparent;
    }
    .graph-connect-evidence-preview .project-experiment-evidence-measurement-placeholder {
      min-height: 148px;
    }
    .graph-connect-popover.graph-connect-popover-has-evidence .graph-connect-evidence-preview .project-experiment-evidence-measurement-placeholder {
      min-height: 344px;
    }
	    .graph-connect-status {
	      min-height: 14px;
	      font-size: 11px;
	      color: #9f1f1f;
	    }
	    .graph-connect-actions {
	      display: flex;
	      justify-content: flex-end;
	      gap: 6px;
	    }
	    .graph-inspector-shell {
	      border: 1px solid var(--panel-strong);
	      border-radius: 4px;
	      background: var(--card);
	      padding: 8px;
	      min-height: 64px;
	    }
	    .graph-inspector-shell-primary {
	      border-width: 2px;
	      border-color: color-mix(in oklab, var(--brand) 42%, var(--panel-strong));
	      background: linear-gradient(
	        180deg,
	        color-mix(in oklab, var(--brand) 8%, var(--card)),
	        color-mix(in oklab, var(--brand) 3%, var(--card))
	      );
	      box-shadow: 0 7px 18px rgba(13, 18, 40, 0.08), inset 0 0 0 1px color-mix(in oklab, var(--brand) 16%, transparent);
	      padding: 10px;
	      min-height: 580px;
	      max-height: none;
	      overflow-y: visible;
	      overflow-x: hidden;
	    }
	    .graph-inspector-shell-primary .graph-inspector-type {
	      color: color-mix(in oklab, var(--brand) 58%, var(--text));
	    }
	    .graph-inspector-card {
	      display: grid;
	      gap: 5px;
	      align-content: start;
	      min-height: 0;
	    }
	    .graph-inspector-type {
	      font-size: 10px;
	      letter-spacing: 0.4px;
	      text-transform: uppercase;
	      color: var(--muted);
	      font-weight: 700;
	    }
	    .graph-inspector-endpoint {
	      border: 1px solid var(--panel-strong);
	      border-radius: 3px;
	      background: var(--panel);
	      padding: 6px 8px;
	      font-size: 11px;
	      line-height: 1.3;
	      max-height: 68px;
	      overflow-y: auto;
	      overflow-x: hidden;
	      overscroll-behavior: contain;
	    }
	    .graph-inspector-link-row {
	      display: grid;
	      gap: 4px;
	    }
	    .graph-inspector-edge-route {
	      display: grid;
	      grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
	      gap: 6px;
	      align-items: center;
	    }
	    .graph-inspector-edge-route .graph-inspector-endpoint {
	      max-height: 56px;
	      padding: 5px 7px;
	    }
	    .graph-inspector-link-label {
	      font-size: 10px;
	      text-transform: uppercase;
	      letter-spacing: 0.45px;
	      color: var(--muted);
	      font-weight: 700;
	    }
	    .graph-inspector-link-kind {
	      font-size: 11px;
	      border: 1px solid color-mix(in oklab, var(--brand) 30%, var(--panel-strong));
	      border-radius: 3px;
	      background: color-mix(in oklab, var(--brand) 9%, var(--card));
	      padding: 6px 8px;
	      color: var(--text);
	    }
	    .graph-inspector-custom-box {
	      border: 1px solid var(--panel-strong);
	      border-radius: 3px;
	      background: color-mix(in oklab, var(--panel) 84%, var(--card));
	      padding: 6px 8px;
	      font-size: 11px;
	      line-height: 1.35;
	      color: var(--text);
	      max-height: 92px;
	      overflow-y: auto;
	      overflow-x: hidden;
	      overscroll-behavior: contain;
	      word-break: break-word;
	    }
	    .graph-inspector-arrow {
	      font-size: 12px;
	      line-height: 1;
	      color: var(--muted);
	    }
	    .graph-inspector-meta {
	      font-size: 11px;
	      color: var(--muted);
	    }
	    .graph-inspector-readonly {
	      font-size: 11px;
	      color: var(--muted);
	      line-height: 1.35;
	    }
	    .graph-inspector-form {
	      display: grid;
	      gap: 8px;
	    }
	    .graph-node-inspector-form {
	      --graph-inspector-accent: var(--brand);
	    }
	    .graph-node-inspector-meta {
	      color: var(--text);
	    }
	    .graph-node-inspector-grid {
	      grid-template-columns: 1fr;
	      gap: 8px;
	    }
	    .graph-node-inspector-details {
	      padding-top: 10px;
	      border-top: 1px solid color-mix(in oklab, var(--graph-inspector-accent) 18%, var(--panel-strong));
	    }
	    .graph-node-measurement_run { border-left: 3px solid var(--graph-node-entry-accent, var(--graph-node-accent-measurement)); }
	    .graph-node-measurement_column { border-left: 3px solid color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-measurement)) 74%, var(--panel-strong)); }
	    .graph-node-measurement_series { border-left: 3px solid color-mix(in oklab, var(--graph-node-entry-accent, var(--graph-node-accent-measurement)) 58%, var(--panel-strong)); }
	    .graph-node-dataset { border-left: 3px solid color-mix(in oklab, var(--text) 52%, var(--panel-strong)); }
	    .graph-node-dataset_version { border-left: 3px solid color-mix(in oklab, var(--text) 60%, var(--panel-strong)); }
	    .graph-node-asset { border-left: 3px solid color-mix(in oklab, var(--asset-entry-accent, var(--brand)) 76%, var(--panel-strong)); }
	    .graph-node-script { border-left: 3px solid var(--graph-node-accent-script); }
	    .graph-node-figure { border-left: 3px solid var(--graph-node-accent-figure); }
	    .graph-node-experiment { border-left: 3px solid var(--graph-node-entry-accent, var(--graph-node-accent-experiment)); }
	    .graph-node-reference { border-left: 3px solid var(--graph-node-entry-accent, var(--graph-node-accent-reference)); }
	    .plot-stage-card,
	    .plot-chart-card,
	    .plot-message-card {
	      border: 1px solid color-mix(in oklab, var(--panel-strong) 76%, transparent);
	      border-radius: 10px;
	      background: color-mix(in oklab, var(--card) 94%, var(--panel));
	      box-shadow: 0 10px 24px rgba(13, 18, 40, 0.06);
	    }
	    .plot-discovery-card,
	    .plot-sidebar-section {
	      padding: 0;
	    }
	    .plot-sidebar-tabs {
	      display: inline-flex;
	      gap: 2px;
	      background: color-mix(in oklab, var(--panel-strong) 40%, transparent);
	      border-radius: 6px;
	      padding: 2px;
	    }
	    .plot-sidebar-tab {
	      padding: 4px 10px;
	      border: none;
	      border-radius: 4px;
	      background: none;
	      color: var(--muted);
	      font: inherit;
	      font-size: 11px;
	      font-weight: 600;
	      cursor: pointer;
	    }
	    .plot-sidebar-tab.active {
	      background: var(--card);
	      color: var(--text);
	    }
	    .plot-sidebar-summary,
	    .plot-results-meta,
	    .plot-inline-toggle-row,
	    .plot-inline-actions,
	    .plot-result-card-footer,
	    .plot-tree-dataset,
	    .plot-stage-item,
	    .plot-stage-item-actions {
	      display: flex;
	      align-items: center;
	      gap: 6px;
	    }
	    .plot-sidebar-summary,
	    .plot-results-meta {
	      justify-content: space-between;
	      font-size: 10px;
	      color: var(--muted);
	    }
	    .plot-sidebar-section {
	      display: grid;
	      gap: 6px;
	    }
	    .plot-sidebar-section-title,
	    .plot-stage-card-header,
	    .plot-message-title {
	      font-size: 10px;
	      font-weight: 700;
	      letter-spacing: 0.4px;
	      text-transform: uppercase;
	      color: var(--muted);
	    }
	    .plot-field-grid,
	    .plot-filter-list,
	    .plot-sidebar-results,
	    .plot-tree-list,
	    .plot-stage-list,
	    .plot-message-list {
	      display: grid;
	      gap: 4px;
	    }
	    .plot-field-grid {
	      grid-template-columns: 1fr;
	    }
	    .plot-field-label {
	      display: grid;
	      gap: 2px;
	      font-size: 10px;
	      font-weight: 600;
	      color: var(--muted);
	      text-transform: uppercase;
	      letter-spacing: 0.3px;
	    }
	    .plot-field-label-inline {
	      font-size: 10px;
	      font-weight: 600;
	      color: var(--muted);
	      text-transform: uppercase;
	      letter-spacing: 0.3px;
	      margin-right: auto;
	    }
	    .plot-field-input {
	      width: 100%;
	      box-sizing: border-box;
	      padding: 4px 7px;
	      border: 1px solid color-mix(in oklab, var(--panel-strong) 74%, transparent);
	      border-radius: 5px;
	      background: color-mix(in oklab, var(--bg) 86%, var(--card));
	      color: var(--text);
	      font: inherit;
	      font-size: 11px;
	      outline: none;
	    }
	    .plot-field-input:focus {
	      border-color: var(--brand);
	    }
	    .plot-filter-row {
	      display: grid;
	      gap: 4px;
	    }
	    .plot-inline-hint,
	    .plot-inline-error,
	    .plot-inline-blocked,
	    .plot-empty-copy,
	    .plot-stage-item-meta,
	    .plot-result-card-meta,
	    .plot-tree-dataset-meta,
	    .plot-workspace-subtitle {
	      font-size: 11px;
	      line-height: 1.4;
	      color: var(--muted);
	    }
	    .plot-inline-error,
	    .plot-message-error {
	      color: #a33b3b;
	    }
	    .plot-inline-blocked {
	      color: color-mix(in oklab, #a33b3b 76%, var(--muted));
	    }
	    /* ── Discovery: result rows (no card chrome) ── */
	    .plot-result-card {
	      display: grid;
	      gap: 2px;
	      min-width: 0;
	      padding: 5px 0;
	      border-bottom: 1px solid color-mix(in oklab, var(--panel-strong) 50%, transparent);
	    }
	    .plot-result-card:last-child { border-bottom: none; }
	    .plot-sidebar-results { grid-template-columns: 1fr; }
	    .plot-result-card-header {
	      display: flex;
	      align-items: baseline;
	      gap: 6px;
	      min-width: 0;
	    }
	    .plot-result-card-title-wrap { min-width: 0; flex: 1; }
	    .plot-result-card-title,
	    .plot-tree-dataset-title,
	    .plot-stage-item-title,
	    .plot-empty-title,
	    .plot-workspace-title {
	      font-size: 12px;
	      font-weight: 600;
	      color: var(--text);
	      white-space: nowrap;
	      overflow: hidden;
	      text-overflow: ellipsis;
	    }
	    .plot-result-card-footer {
	      justify-content: space-between;
	    }
	    /* Pills → plain muted text */
	    .plot-technique-pill {
	      font-size: 10px;
	      color: var(--muted);
	      flex-shrink: 0;
	    }
	    .plot-tree-count {
	      font-size: 10px;
	      color: var(--muted);
	      flex-shrink: 0;
	    }
	    /* ── Browse tree ── */
	    .plot-tree-project,
	    .plot-tree-run {
	      overflow: hidden;
	    }
	    .plot-tree-toggle {
	      width: 100%;
	      display: flex;
	      align-items: center;
	      gap: 4px;
	      padding: 4px 0;
	      border: 0;
	      background: none;
	      color: var(--text);
	      font: inherit;
	      font-size: 12px;
	      font-weight: 600;
	      cursor: pointer;
	      text-align: left;
	    }
	    .plot-tree-toggle:hover { color: var(--brand); }
	    .plot-tree-toggle-run {
	      padding-left: 12px;
	      font-weight: 500;
	    }
	    .plot-tree-children,
	    .plot-tree-datasets {
	      display: grid;
	      gap: 0;
	      padding-bottom: 2px;
	    }
	    .plot-tree-toggle-run { padding-left: 0; font-weight: 500; }
	    .plot-tree-children { padding-left: 14px; }
	    .plot-tree-datasets { padding-left: 14px; }
	    .plot-tree-dataset { padding-left: 0; }
	    .plot-tree-bucket,
	    .plot-tree-batch,
	    .plot-tree-source-file {
	      display: grid;
	      gap: 0;
	    }
	    .plot-tree-bucket-children,
	    .plot-tree-batch-children,
	    .plot-tree-file-children {
	      display: grid;
	      gap: 0;
	      padding-left: 14px;
	    }
	    .plot-tree-node-badge {
	      width: 14px;
	      height: 14px;
	      border-radius: 999px;
	      display: inline-flex;
	      align-items: center;
	      justify-content: center;
	      flex-shrink: 0;
	      font-size: 8px;
	      font-weight: 700;
	      letter-spacing: 0.2px;
	      color: var(--muted);
	      background: color-mix(in oklab, var(--panel-strong) 70%, transparent);
	    }
	    .plot-tree-badge-bucket {
	      color: #0f6b91;
	      background: color-mix(in oklab, #0ea5e9 16%, var(--card));
	    }
	    .plot-tree-badge-batch {
	      color: #8a5a05;
	      background: color-mix(in oklab, #f59e0b 18%, var(--card));
	    }
	    .plot-tree-badge-file {
	      color: #31507f;
	      background: color-mix(in oklab, #7da6e8 18%, var(--card));
	    }
	    .plot-tree-source-file {
	      grid-template-columns: minmax(0, 1fr) auto;
	      align-items: center;
	      gap: 10px;
	      padding: 8px 10px 8px 2px;
	      border-radius: 7px;
	      margin: 2px 0;
	      user-select: none;
	    }
	    .plot-tree-file-main {
	      min-width: 0;
	      display: flex;
	      align-items: center;
	      gap: 8px;
	    }
	    .plot-tree-file-check {
	      width: 14px;
	      height: 14px;
	      flex-shrink: 0;
	      display: inline-flex;
	      align-items: center;
	      justify-content: center;
	      font-size: 11px;
	      font-weight: 700;
	      color: var(--col-accent, var(--brand));
	      border-radius: 3px;
	      border: 1px solid color-mix(in oklab, var(--panel-strong) 80%, transparent);
	      background: color-mix(in oklab, var(--card) 86%, transparent);
	    }
	    .plot-tree-file-selectable {
	      cursor: pointer;
	      transition: background 0.18s ease;
	    }
	    .plot-tree-file-selectable:hover {
	      background: color-mix(in oklab, var(--panel-strong) 64%, transparent);
	    }
	    .plot-tree-file-selected {
	      background: color-mix(in oklab, var(--col-accent, var(--brand)) 11%, transparent);
	    }
	    .plot-tree-file-partial {
	      background: color-mix(in oklab, #f59e0b 10%, transparent);
	    }
	    .plot-tree-file-selected .plot-tree-file-check {
	      background: var(--col-accent, var(--brand));
	      border-color: var(--col-accent, var(--brand));
	      color: #fff;
	    }
	    .plot-tree-file-blocked { opacity: 0.48; }
	    .plot-tree-chevron {
	      color: var(--muted);
	      font-size: 9px;
	      transition: transform 140ms ease;
	      flex-shrink: 0;
	    }
	    .plot-tree-toggle[aria-expanded="false"] .plot-tree-chevron {
	      transform: rotate(-90deg);
	    }
	    .plot-tree-title {
	      min-width: 0;
	      flex: 1;
	      overflow: hidden;
	      text-overflow: ellipsis;
	      white-space: nowrap;
	    }
	    .plot-tree-meta {
	      font-size: 10px;
	      color: var(--muted);
	      flex-shrink: 0;
	    }
	    .plot-tree-dataset {
	      justify-content: space-between;
	      align-items: center;
	      padding: 3px 0;
	    }
	    .plot-tree-dataset-main {
	      min-width: 0;
	      flex: 1;
	      display: flex;
	      align-items: baseline;
	      gap: 5px;
	    }
	    .plot-tree-dataset-title-row,
	    .plot-stage-item-title-row {
	      display: flex;
	      align-items: center;
	      gap: 6px;
	      min-width: 0;
	      flex: 1;
	    }
	    .plot-tree-dataset-meta { display: none; }
	    /* ── Selectable dataset rows ── */
	    .plot-tree-dataset {
	      align-items: center;
	      gap: 5px;
	      padding: 4px 6px 4px 2px;
	      border-radius: 5px;
	      margin: 1px 0;
	      cursor: default;
	      user-select: none;
	    }
	    .plot-tree-dataset-selectable {
	      cursor: pointer;
	      transition: background 0.12s ease;
	    }
	    .plot-tree-dataset-selectable:hover {
	      background: color-mix(in oklab, var(--panel-strong) 60%, transparent);
	    }
	    .plot-tree-dataset-selected {
	      background: color-mix(in oklab, var(--col-accent, var(--brand)) 12%, transparent);
	    }
	    .plot-tree-dataset-selected:hover {
	      background: color-mix(in oklab, var(--col-accent, var(--brand)) 18%, transparent);
	    }
	    .plot-tree-dataset-blocked { opacity: 0.45; }
	    .plot-tree-dataset-check {
	      width: 14px;
	      height: 14px;
	      flex-shrink: 0;
	      display: flex;
	      align-items: center;
	      justify-content: center;
	      font-size: 10px;
	      font-weight: 700;
	      color: var(--col-accent, var(--brand));
	      border-radius: 3px;
	      border: 1px solid color-mix(in oklab, var(--panel-strong) 80%, transparent);
	      transition: background 0.12s, border-color 0.12s, color 0.12s;
	    }
	    .plot-tree-dataset-selected .plot-tree-dataset-check {
	      background: var(--col-accent, var(--brand));
	      border-color: var(--col-accent, var(--brand));
	      color: #fff;
	    }
	    .plot-tree-dataset-name {
	      flex: 1;
	      min-width: 0;
	      font-size: 11.5px;
	      font-weight: 500;
	      color: var(--text);
	      white-space: nowrap;
	      overflow: hidden;
	      text-overflow: ellipsis;
	    }
	    .plot-tree-dataset-blocked .plot-tree-dataset-name { color: var(--muted); font-weight: 400; }
	    .plot-empty-card { padding: 6px 0; background: none; border: none; }
	    /* ── Search UX ── */
	    .plot-search-controls { display: grid; gap: 5px; }
	    .plot-search-row-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 4px; }
	    .plot-search-toggles { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
	    .plot-search-toggle-group { display: flex; align-items: center; gap: 3px; }
	    .plot-toggle-label { font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.3px; color: var(--muted); margin-right: 1px; }
	    .plot-toggle-btn {
	      padding: 2px 7px; border: 1px solid color-mix(in oklab, var(--panel-strong) 80%, transparent);
	      border-radius: 4px; background: none; color: var(--muted); font: inherit; font-size: 10px;
	      font-weight: 600; cursor: pointer; transition: all 0.12s;
	    }
	    .plot-toggle-btn.active { background: var(--brand); color: #fff; border-color: var(--brand); }
	    .plot-toggle-btn:hover:not(.active) { border-color: var(--brand); color: var(--brand); }
	    .plot-search-actions { display: flex; align-items: center; gap: 6px; }
	    .plot-search-actions .btn { flex-shrink: 0; }
	    .plot-search-actions .btn.primary { margin-left: auto; }
	    .plot-search-divider { height: 1px; background: color-mix(in oklab, var(--panel-strong) 55%, transparent); margin: 2px 0; }
	    .plot-results-header { display: flex; align-items: center; gap: 6px; }
	    .plot-results-count { font-size: 10px; font-weight: 600; color: var(--muted); flex: 1; }
	    .plot-results-ms { font-size: 10px; color: color-mix(in oklab, var(--muted) 70%, transparent); }
	    /* Result rows */
	    .plot-result-row {
	      display: flex; align-items: center; gap: 6px;
	      padding: 4px 0;
	      border-bottom: 1px solid color-mix(in oklab, var(--panel-strong) 40%, transparent);
	    }
	    .plot-result-row:last-child { border-bottom: none; }
	    .plot-result-row-info { flex: 1; min-width: 0; }
	    .plot-result-row-title { font-size: 12px; font-weight: 600; color: var(--text); display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
	    .plot-result-row-meta { font-size: 10px; color: var(--muted); display: block; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
	    /* ── Three-column plot workspace ── */
	    /* Per-column accent identities */
	    .plot-col-discovery { --col-accent: #0ea5e9; --col-accent-faint: rgba(14, 165, 233, 0.08); }
	    .plot-col-staged    { --col-accent: #f59e0b; --col-accent-faint: rgba(245, 158, 11, 0.07); }
	    .plot-col-plot      { --col-accent: var(--brand); --col-accent-faint: rgba(19, 119, 255, 0.06); }

	    .plot-workspace-shell {
	      --plot-collapse-duration: 1.25s;
	      --plot-col-gap: 1px;
	      --plot-col-rail: 56px;
	      --plot-col-rail-fullscreen: 32px;
	      display: grid;
	      grid-template-columns: 208px 160px 1fr;
	      width: 100%;
	      height: calc(100vh - 56px);
	      overflow: hidden;
	      transition: grid-template-columns var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1);
	      gap: var(--plot-col-gap);
	      background: color-mix(in oklab, var(--panel-strong) 80%, transparent);
	    }
	    .plot-workspace-shell[data-focus="discovery"] {
	      grid-template-columns:
	        minmax(0, calc(100% - (var(--plot-col-rail) * 2) - (var(--plot-col-gap) * 2)))
	        var(--plot-col-rail)
	        var(--plot-col-rail);
	    }
	    .plot-workspace-shell[data-focus="staged"] {
	      grid-template-columns:
	        var(--plot-col-rail)
	        minmax(0, calc(100% - (var(--plot-col-rail) * 2) - (var(--plot-col-gap) * 2)))
	        var(--plot-col-rail);
	    }
	    .plot-workspace-shell[data-focus="plot"] {
	      grid-template-columns:
	        var(--plot-col-rail)
	        var(--plot-col-rail)
	        minmax(0, calc(100% - (var(--plot-col-rail) * 2) - (var(--plot-col-gap) * 2)));
	    }
	    .plot-workspace-shell[data-fullscreen="true"] {
	      grid-template-columns:
	        var(--plot-col-rail-fullscreen)
	        var(--plot-col-rail-fullscreen)
	        minmax(0, calc(100% - (var(--plot-col-rail-fullscreen) * 2) - (var(--plot-col-gap) * 2)));
	    }

	    .plot-col {
	      display: flex;
	      flex-direction: column;
	      overflow: hidden;
	      min-width: 0;
	      background: var(--card, #fff);
	      position: relative;
	      /* Box shadow transitions for focused elevation */
	      transition: box-shadow 0.3s ease;
	      cursor: pointer;
	    }
	    /* Subtle tinted background per column */
	    .plot-col-discovery { background: color-mix(in oklab, var(--card) 93%, #0ea5e9); }
	    .plot-col-staged    { background: color-mix(in oklab, var(--card) 94%, #f59e0b); }
	    .plot-col-plot      { background: var(--card); }

	    /* Top accent bar: slides in on focus */
	    .plot-col::before {
	      content: "";
	      display: block;
	      flex-shrink: 0;
	      height: 3px;
	      background: var(--col-accent);
	      transform: scaleX(0);
	      transform-origin: left;
	      transition: transform var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1);
	    }
	    .plot-col-focused::before { transform: scaleX(1); }

	    .plot-col-focused {
	      cursor: default;
	      box-shadow: 0 0 0 1px color-mix(in oklab, var(--col-accent) 30%, transparent),
	                  0 6px 32px color-mix(in oklab, var(--col-accent) 14%, transparent);
	      z-index: 1;
	    }

	    /* Unfocused columns collapse to full-height header rails */
	    .plot-workspace-shell[data-focus] .plot-col:not(.plot-col-focused) {
	      cursor: pointer;
	    }
	    .plot-workspace-shell[data-focus] .plot-col:not(.plot-col-focused) .plot-col-header,
	    .plot-workspace-shell[data-fullscreen="true"] .plot-col-discovery .plot-col-header,
	    .plot-workspace-shell[data-fullscreen="true"] .plot-col-staged .plot-col-header {
	      flex-direction: column;
	      justify-content: center;
	      align-items: center;
	      gap: 6px;
	      padding: 14px 6px;
	      height: 100%;
	      border-bottom: none;
	      overflow: hidden;
	      opacity: 0.6;
	    }
	    .plot-workspace-shell[data-focus] .plot-col:not(.plot-col-focused):hover .plot-col-header {
	      opacity: 0.9;
	    }
	    .plot-workspace-shell[data-focus] .plot-col:not(.plot-col-focused) .plot-col-body,
	    .plot-workspace-shell[data-fullscreen="true"] .plot-col-discovery .plot-col-body,
	    .plot-workspace-shell[data-fullscreen="true"] .plot-col-staged .plot-col-body {
	      opacity: 0;
	      pointer-events: none;
	    }

	    /* Col header */
	    .plot-col-header {
	      display: flex;
	      align-items: center;
	      gap: 8px;
	      padding: 0 16px;
	      border-bottom: 1px solid color-mix(in oklab, var(--panel-strong) 55%, transparent);
	      flex-shrink: 0;
	      min-width: 0;
	      min-height: 44px;
	      transition: background 0.28s ease, opacity 0.2s ease, padding var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1), gap var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1);
	    }
	    .plot-col-focused .plot-col-header {
	      background: color-mix(in oklab, var(--card) 80%, var(--col-accent-faint, transparent) 200%);
	      border-bottom-color: color-mix(in oklab, var(--col-accent) 25%, transparent);
	    }

	    /* Column icon */
	    .plot-col-icon {
	      flex-shrink: 0;
	      width: 16px;
	      height: 16px;
	      color: var(--muted);
	      opacity: 0.6;
	      overflow: hidden;
	      transition: color 0.2s ease, opacity var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1), transform var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1), width var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1), height var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1);
	    }
	    .plot-col-focused .plot-col-icon { color: var(--col-accent); opacity: 1; }

	    .plot-col-title {
	      font-size: 10.5px;
	      font-weight: 700;
	      letter-spacing: 0.5px;
	      text-transform: uppercase;
	      color: var(--muted);
	      flex-shrink: 0;
	      user-select: none;
	      cursor: pointer;
	      transition: color 0.2s ease, transform var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1), letter-spacing var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1);
	      white-space: nowrap;
	      transform-origin: center;
	    }
	    .plot-col-focused .plot-col-title { color: var(--col-accent); }
	    .plot-col-title-badge {
	      font-size: 10px;
	      font-weight: 600;
	      color: var(--muted);
	      flex-shrink: 0;
	      max-width: 80px;
	      padding: 0 4px;
	      border-radius: 8px;
	      overflow: hidden;
	      background: color-mix(in oklab, var(--panel-strong) 60%, transparent);
	      transition: background 0.2s ease, color 0.2s ease, max-width var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1), opacity var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1), padding var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1), margin var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1);
	    }
	    .plot-col-focused .plot-col-title-badge {
	      background: color-mix(in oklab, var(--col-accent) 14%, transparent);
	      color: var(--col-accent);
	    }
	    .plot-col-header-right {
	      display: flex;
	      align-items: center;
	      gap: 6px;
	      margin-left: auto;
	      flex-shrink: 0;
	      overflow: hidden;
	      max-width: 240px;
	      opacity: 1;
	      transition: opacity var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1), max-width var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1);
	    }

	    /* ── Body — columns clip content as the grid slides (no fade/transform) ── */
	    .plot-col-body {
	      flex: 1;
	      overflow-y: auto;
	      overflow-x: hidden;
	      padding: 24px 28px 20px;
	      display: grid;
	      gap: 12px;
	      align-content: start;
	      cursor: default;
	      transition: opacity var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1), padding var(--plot-collapse-duration) cubic-bezier(0.18, 0.9, 0.2, 1);
	    }
	    .plot-workspace-shell[data-focus] .plot-col:not(.plot-col-focused) .plot-col-body {
	      pointer-events: none;
	    }
	    .plot-col-plot-body {
	      display: flex;
	      flex-direction: column;
	      gap: 14px;
	      padding: 24px 28px 22px;
	    }

	    /* ── Fullscreen: collapse non-plot cols to a sliver ── */
	    .plot-workspace-shell[data-focus] .plot-col:not(.plot-col-focused) .plot-col-icon,
	    .plot-workspace-shell[data-fullscreen="true"] .plot-col-discovery .plot-col-icon,
	    .plot-workspace-shell[data-fullscreen="true"] .plot-col-staged .plot-col-icon {
	      opacity: 0;
	      width: 0;
	      margin: 0;
	      transform: translateX(-6px);
	    }
	    .plot-workspace-shell[data-focus] .plot-col:not(.plot-col-focused) .plot-col-header-right,
	    .plot-workspace-shell[data-fullscreen="true"] .plot-col-discovery .plot-col-header-right,
	    .plot-workspace-shell[data-fullscreen="true"] .plot-col-staged .plot-col-header-right {
	      max-width: 0;
	      opacity: 0;
	      pointer-events: none;
	    }
	    .plot-workspace-shell[data-focus] .plot-col:not(.plot-col-focused) .plot-col-title,
	    .plot-workspace-shell[data-fullscreen="true"] .plot-col-discovery .plot-col-title,
	    .plot-workspace-shell[data-fullscreen="true"] .plot-col-staged .plot-col-title {
	      transform: none;
	      font-size: 9px;
	      line-height: 1.05;
	      letter-spacing: 0.35px;
	      white-space: normal;
	      text-align: center;
	    }
	    .plot-workspace-shell[data-focus] .plot-col:not(.plot-col-focused) .plot-col-title-badge,
	    .plot-workspace-shell[data-fullscreen="true"] .plot-col-discovery .plot-col-title-badge,
	    .plot-workspace-shell[data-fullscreen="true"] .plot-col-staged .plot-col-title-badge {
	      max-width: 0;
	      opacity: 0;
	      padding: 0;
	      margin: 0;
	      overflow: hidden;
	    }

	    /* Fullscreen btn */
	    .plot-fullscreen-btn {
	      padding: 2px 6px;
	      border: 1px solid color-mix(in oklab, var(--panel-strong) 70%, transparent);
	      border-radius: 4px;
	      background: none;
	      color: var(--muted);
	      font-size: 13px;
	      line-height: 1;
	      cursor: pointer;
	      transition: color 0.15s, border-color 0.15s;
	    }
	    .plot-fullscreen-btn:hover { color: var(--text); border-color: var(--text); }
	    .plot-fullscreen-btn.active { color: var(--brand); border-color: var(--brand); }
	    .plot-stage-card,
	    .plot-chart-card,
	    .plot-message-card {
	      padding: 12px;
	    }
	    .plot-stage-list {
	      grid-template-columns: 1fr;
	      align-items: start;
	    }
	    .plot-stage-item {
	      justify-content: space-between;
	      padding: 5px 0;
	      min-height: auto;
	      border: none;
	      border-radius: 0;
	      background: none;
	      border-bottom: 1px solid color-mix(in oklab, var(--panel-strong) 50%, transparent);
	    }
	    .plot-stage-item:last-child { border-bottom: none; }
	    .plot-stage-item-main {
	      min-width: 0;
	      flex: 1;
	    }
	    .plot-stage-item-actions {
	      flex-shrink: 0;
	    }
	    .plot-empty-card,
	    .plot-chart-status {
	      display: grid;
	      gap: 6px;
	      justify-items: start;
	    }
	    .plot-chart-card {
	      flex: 1;
	      min-height: 0;
	      display: flex;
	      flex-direction: column;
	      padding: 0;
	      border: none;
	      background: none;
	      box-shadow: none;
	    }
	    .plot-chart-card.plot-chart-status {
	      justify-content: center;
	      align-items: center;
	      min-height: 200px;
	    }
	    .plot-workspace-chart {
	      width: 100%;
	      flex: 1;
	      min-height: 300px;
	    }
	    .plot-message-card {
	      display: grid;
	      gap: 8px;
	    }
	    .plot-message-warning {
	      border-color: color-mix(in oklab, #b9781e 34%, var(--panel-strong));
	    }
	    .plot-message-error {
	      border-color: color-mix(in oklab, #a33b3b 34%, var(--panel-strong));
	    }
	    .plot-message-list {
	      margin: 0;
	      padding-left: 18px;
	      font-size: 12px;
	      color: var(--text);
	    }
	    @media (max-width: 900px) {
	      .graph-overlay { padding: 0; }
	      .graph-overlay-shell {
	        width: 100%;
	        height: 100svh;
	        height: 100dvh;
	        border-radius: 0;
	      }
	      .graph-layout { grid-template-columns: 1fr; }
	      .graph-layout.graph-layout-panel-collapsed { grid-template-columns: 1fr; }
	      .graph-layout.graph-layout-panel-collapsed .graph-panel { display: flex; }
	      .graph-panel-edge-toggle { display: none; }
	      .graph-panel { max-height: 42vh; }
	      .graph-stage-guide-box { max-width: 100%; }
	      .graph-toolbar-meta { display: none; }
	      .graph-node-board { padding: 10px; gap: 10px; }
	      .graph-node-board-has-experiment-band .graph-main-lanes { margin-top: 14px; }
	      .graph-main-lanes { grid-template-columns: 1fr; column-gap: 10px; row-gap: 10px; }
	      .graph-edge-evidence-editor[data-evidence-supported="true"] { grid-template-columns: 1fr; }
	      .graph-connect-popover.graph-connect-popover-has-evidence { width: min(640px, calc(100% - 16px)); }
	      .graph-connect-evidence-grid { grid-template-columns: 1fr; }
	      .graph-connect-evidence-axis-row,
	      .graph-connect-summary-grid { grid-template-columns: 1fr; }
	      .graph-experiment-band {
	        width: 100%;
	        max-width: 100%;
	        align-self: stretch;
	        margin-inline: 0;
	      }
	      .graph-node-list.graph-experiment-band-list {
	        width: 100%;
	      }
	      .search-overlay { padding: 0; }
	      .search-overlay-shell {
	        width: 100%;
	        height: min(96svh, calc(100svh - 8px));
	        border-radius: 10px 10px 0 0;
	      }
	      .search-overlay-layout { grid-template-columns: 1fr; }
	      .search-overlay-panel { max-height: 32vh; border-right: none; border-bottom: 1px solid var(--panel-strong); }
	      .plot-workspace-shell,
	      .plot-workspace-shell[data-focus],
	      .plot-workspace-shell[data-fullscreen="true"] {
	        grid-template-columns: 1fr;
	        height: auto;
	        overflow: visible;
	      }
	      .plot-workspace-shell { gap: 1px; background: color-mix(in oklab, var(--panel-strong) 60%, transparent); }
	      .plot-col { background: var(--card, #fff); }
	      .plot-col:last-child { }
	      .plot-workspace-shell[data-fullscreen="true"] .plot-col-discovery .plot-col-header,
	      .plot-workspace-shell[data-fullscreen="true"] .plot-col-staged .plot-col-header {
	        flex-direction: row;
	        height: auto;
	        padding: 6px 8px;
	        border-bottom: 1px solid color-mix(in oklab, var(--panel-strong) 60%, transparent);
	        border-right: none;
	      }
	      .plot-workspace-shell[data-fullscreen="true"] .plot-col-discovery .plot-col-title-btn,
	      .plot-workspace-shell[data-fullscreen="true"] .plot-col-staged .plot-col-title-btn {
	        writing-mode: horizontal-tb;
	        transform: none;
	      }
	      .plot-workspace-shell[data-fullscreen="true"] .plot-col-discovery .plot-col-body,
	      .plot-workspace-shell[data-fullscreen="true"] .plot-col-staged .plot-col-body { display: grid; }
	      .plot-workspace-chart { min-height: 300px; }
	    }
