/* Shared palette, typography and the approved continuous register design. */
body.register-workspace {
    color-scheme: light dark;
    --register-bg: light-dark(#f4f6f8, #131e23);
    --register-paper: light-dark(#ffffff, #1c2b32);
    --register-contract: light-dark(#f0f5f8, #253b45);
    --register-ink: light-dark(#243e4b, #e0e9ed);
    --register-secondary: light-dark(#596f7c, #aabec9);
    --register-line: light-dark(#dce4e9, #354952);
    --register-head: light-dark(#f2f5f7, #24363e);
    --register-hover: light-dark(#f0f7f8, #223c43);
    --register-group: light-dark(#eaf2f5, #2a3e47);
    --register-total: light-dark(#e3eef0, #2c454c);
    --register-teal: light-dark(#126b73, #79c9cf);
    --register-warning: light-dark(#8b5f17, #efc27e);
    --register-active: light-dark(#e5f0f2, #24434b);
    --ink: var(--register-ink);
    --muted: var(--register-secondary);
    --line: var(--register-line);
    --paper: var(--register-paper);
    --surface: var(--register-bg);
    --green: var(--register-teal);
    --accent: var(--register-teal);
    background: var(--register-bg);
    color: var(--register-ink);
    font-family: Inter, "Segoe UI", Arial, sans-serif;
    font-size: 13px;
    line-height: 1.5;
}
.register-workspace .portal-shell { grid-template-columns: 145px minmax(0, 1fr); grid-template-rows: 58px 1fr; }
.register-workspace .portal-top { height: 58px; background: light-dark(#102f39, #0c2028); padding: 0 20px; gap: 22px; box-shadow: none; }
.register-workspace .portal-brand { width: 105px; gap: 9px; font-size: 16px; font-weight: 600; }
.register-workspace .portal-logo { width: 29px; height: 29px; border: 1px solid #52727d; border-radius: 6px; background: transparent; color: #f0f7f9; font-size: 16px; letter-spacing: 0; padding: 0; font-weight: 600; }
.register-workspace .portal-product { display: none; }
.register-workspace .portal-top-title { font-size: 11px; color: #c4d6dc; }
.register-workspace .portal-sidebar { background: var(--register-paper); top: 58px; height: calc(100dvh - 58px); padding: 23px 9px; }
.register-workspace .portal-nav-caption { padding: 0 7px; margin-bottom: 18px; color: var(--register-secondary); font-size: 9px; font-weight: 400; letter-spacing: 1px; }
.register-workspace .portal-main-nav > a { padding: 11px 8px; gap: 8px; border-left: 0; color: var(--register-secondary); font-size: 11px; font-weight: 400; }
.register-workspace .portal-main-nav > a:hover { background: var(--register-hover); }
.register-workspace .portal-main-nav > a[aria-current=page] { background: var(--register-active); color: var(--register-teal); font-weight: 600; }
.register-workspace .portal-icon { width: 16px; height: 16px; }
.register-workspace .portal-navigation-note, .register-workspace .portal-sidebar-footer { display: none; }
.register-workspace .portal-breadcrumb { padding: 18px 16px 0; color: var(--register-secondary); font-size: 10px; }
.register-workspace .portal-breadcrumb a { color: inherit; }
.register-workspace .workspace .page-content { padding: 18px 16px 24px; }
.register-workspace .workspace-footer { background: var(--register-bg); border-color: var(--register-line); color: var(--register-secondary); }
.register-workspace .workspace-footer span { color: inherit; }
.register-workspace .register-heading { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.register-workspace .register-heading h1 { margin: 0; font-size: 21px; font-weight: 600; letter-spacing: -.4px; }
.register-workspace .button { background: var(--register-paper); border-color: var(--register-line); color: var(--register-ink); font-size: 12px; font-weight: 500; }
.register-workspace .button:hover { background: var(--register-hover); border-color: var(--register-teal); }
.register-workspace .button.primary { background: #126b73; border-color: #126b73; color: #fff; }
.register-workspace .button.primary:hover { background: #0d5961; }
.register-workspace .workspace-sheet { border: 1px solid var(--register-line); border-radius: 6px; background: var(--register-paper); box-shadow: none; overflow: hidden; }
.register-workspace .workspace-sheet > .filters { margin: 0; padding: 16px; background: var(--register-paper); border: 0; border-bottom: 1px solid var(--register-line); border-radius: 0; gap: 14px; }
.register-workspace .filters label { color: var(--register-secondary); font-size: 11px; font-weight: 400; }
.register-workspace input, .register-workspace select, .register-workspace textarea { background: var(--register-paper); border-color: var(--register-line); color: var(--register-ink); font-family: inherit; }
.register-workspace .filters input, .register-workspace .filters select { height: 37px; font-size: 12px; border-color: var(--register-line); background: var(--register-paper); color: var(--register-ink); }
.register-workspace input::placeholder { color: var(--register-secondary); opacity: 1; }
.register-workspace .list-caption { padding: 11px 16px; font-size: 10px; color: var(--register-secondary); border: 0; gap: 12px; flex-wrap: wrap; }
.register-workspace .list-caption strong { color: inherit; font-weight: 500; }
.register-workspace .register-units { display: inline-flex; align-items: center; gap: 7px; margin-left: auto; white-space: nowrap; font-size: 11px; font-weight: 400; }
.register-workspace [hidden] { display: none !important; }
.register-workspace .register-units select { width: 106px; height: 30px; font: inherit; font-size: 12px; padding: 4px 8px; background: var(--register-head); border: 1px solid var(--register-line); border-radius: 4px; }
.register-workspace .comparison-scroll { max-width: 100%; overflow-x: auto; background: var(--register-paper); }
.register-workspace .workspace .comparison-table { width: 100%; min-width: 950px; border-collapse: collapse; table-layout: fixed; font-size: 13px; }
.register-workspace .workspace .funding-comparison-list .comparison-table { min-width: 1000px; }
.register-workspace .workspace .project-comparison-list .comparison-table { min-width: 1080px; }
body.register-workspace:has([data-register-unit] option[value=eur]:checked) #projects .comparison-table { min-width: 1200px; }
.register-workspace .register-gutter-col { width: 18px; }
.register-workspace .register-code-col { width: 70px; }
.register-workspace .register-amount-col { width: 130px; }
.register-workspace .register-percent-col { width: 160px; }
.register-workspace .register-actions-col { width: 52px; }
.register-workspace :is(.project-comparison-list, .funding-comparison-list) .register-actions-col { width: 84px; }
.register-row-actions { display: inline-grid; grid-template-columns: repeat(2, 28px); align-items: center; gap: 5px; vertical-align: middle; }
.register-row-actions > .button { margin: 0; }
.register-workspace .register-add .portal-icon { width: 13px; height: 13px; }
.register-workspace .register-add { color: var(--register-teal); }
.register-workspace .contract-status-col { width: 112px; }
.register-workspace .contracts-comparison-list tbody tr:hover > * { background: var(--register-hover); }
.register-workspace .workspace .comparison-table .register-actions { text-align: right; white-space: nowrap; }
.register-workspace .register-edit { gap: 5px; }
.register-workspace .register-edit .portal-icon { width: 13px; height: 13px; }
.register-workspace .register-progress { display: inline-grid; grid-template-columns: 44px 22px minmax(0, 1fr); width: 100%; align-items: center; gap: 6px; vertical-align: middle; }
.register-workspace .register-progress progress { grid-column: 1; grid-row: 1; appearance: none; -webkit-appearance: none; width: 44px; min-width: 44px; height: 5px; border: 0; border-radius: 4px; overflow: hidden; background: var(--register-line); accent-color: var(--register-teal); }
.register-workspace .register-progress progress::-webkit-progress-bar { background: var(--register-line); border-radius: 4px; }
.register-workspace .register-progress progress::-webkit-progress-value { background: var(--register-teal); border-radius: 4px; }
.register-workspace .register-progress progress::-moz-progress-bar { background: var(--register-teal); border-radius: 4px; }
body.register-workspace:has([data-register-unit] option[value=eur]:checked) .register-amount-col { width: 160px; }
body.register-workspace:has([data-register-unit] option[value=eur]:checked) .workspace .comparison-table { min-width: 1100px; }
.register-workspace .workspace .comparison-table th, .register-workspace .workspace .comparison-table td { padding: 5px 10px; min-width: 0; max-width: none; vertical-align: middle; border-bottom: 1px solid var(--register-line); color: var(--register-ink); font-size: 13px; line-height: 1.5; }
.register-workspace .workspace .comparison-table thead th { padding-top: 8px; padding-bottom: 8px; background: var(--register-head); color: var(--register-secondary); text-transform: none; letter-spacing: 0; font-size: 11px; font-weight: 400; white-space: normal; vertical-align: bottom; }
.register-workspace .workspace .comparison-table .numeric { text-align: right; font-variant-numeric: tabular-nums; font-size: 12.5px; white-space: nowrap; letter-spacing: -.1px; }
.register-workspace .workspace .comparison-table thead .numeric { font-size: 11px; white-space: normal; letter-spacing: 0; }
.register-workspace .workspace .comparison-table .project-code-heading { white-space: nowrap; }
.register-workspace .workspace .comparison-table .project-progress-cell { text-align: right; min-width: 0; font-variant-numeric: tabular-nums; white-space: nowrap; }
.register-workspace .register-percent { grid-column: 3; grid-row: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; text-align: right; font-size: 12px; font-weight: 500; font-variant-numeric: tabular-nums; }
.register-workspace .workspace .comparison-table .corridor-total-row > * { background: var(--register-group); font-weight: 600; border-top: 1px solid var(--register-line); }
.register-workspace .workspace .comparison-table .corridor-group-name { text-align: left; color: var(--register-ink); font-size: 12px; white-space: nowrap; overflow: hidden; }
.register-workspace .corridor-expand { width: 24px; height: 26px; padding: 0; margin-right: 8px; color: var(--register-secondary); }
.register-workspace .corridor-expand:hover { background: var(--register-paper); }
.register-workspace .corridor-badge { padding: 2px 5px; margin-right: 8px; border: 1px solid var(--register-line); border-radius: 3px; background: var(--register-paper); color: var(--register-teal); font-size: 10px; letter-spacing: 0; font-weight: 600; }
.register-workspace .corridor-label, .register-workspace .register-group-link { display: inline-block; max-width: calc(100% - 82px); vertical-align: middle; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.register-workspace .register-group-link { color: inherit; text-decoration: none; }
.register-workspace .register-group-link .corridor-label { max-width: 100%; }
.register-workspace .register-group-link:hover { text-decoration: underline; text-underline-offset: 3px; }
.register-workspace .workspace .comparison-table .corridor-project-row > * { background: var(--register-paper); }
.register-workspace .workspace .comparison-table .corridor-project-row:hover > * { background: var(--register-hover); }
.register-workspace .workspace .comparison-table .corridor-project-row .register-row-gutter { padding: 0; border: 0; background: var(--register-bg); }
.register-workspace .workspace .comparison-table .register-row-gutter + * { border-left: 1px solid var(--register-line); }
.register-workspace .workspace .comparison-table .project-child-code { padding-left: 8px; position: static; }
.register-workspace .project-child-code::before { content: none; }
.register-workspace .project-code { display: block; font-size: 10px; color: var(--register-secondary); overflow: hidden; text-overflow: ellipsis; }
.register-workspace .workspace .comparison-table .basic-project-name { font-weight: 500; text-align: left; }
.register-workspace .workspace .project-comparison-list .basic-project-name { padding-left: 28px; }
.register-workspace .workspace .project-comparison-list .basic-project-name:has(.project-name-line) { padding-left: 8px; }
.project-name-line, .contract-name-line { display: flex; align-items: center; min-width: 0; gap: 5px; }
.register-workspace .project-name-line > a { flex: 1; min-width: 0; }
.register-workspace .project-contract-toggle { flex: 0 0 20px; width: 20px; height: 24px; padding: 0; margin: 0; }
.project-contract-toggle-placeholder { flex: 0 0 20px; width: 20px; }
.register-workspace .workspace .comparison-table .project-contract-row > * { background: var(--register-contract); font-size: 12px; }
.register-workspace .workspace .comparison-table .project-contract-row:hover > * { background: color-mix(in srgb, var(--register-contract) 88%, var(--register-teal)); }
.register-workspace .workspace .comparison-table .project-contract-row .contract-row-gutter { background: var(--register-bg); padding: 0; border: 0; }
.register-workspace .workspace .comparison-table .project-contract-name { padding-left: 36px; text-align: left; border-left: 1px solid var(--register-line); }
.contract-name-line > a { min-width: 0; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--register-ink); text-decoration: none; font-weight: 400; }
.contract-name-line > a strong { font-weight: 500; }
.contract-name-line > a span { color: var(--register-secondary); font-size: 11px; }
.contract-name-line > a:hover { color: var(--register-teal); text-decoration: underline; }
.contract-row-status { flex: 0 0 auto; color: var(--register-secondary); font-size: 9px; font-weight: 400; padding: 1px 4px; border: 1px solid var(--register-line); border-radius: 3px; }
.register-workspace .basic-project-name a { display: block; width: 100%; padding: 2px 0; color: var(--register-ink); font-weight: 500; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.5; }
.register-workspace .basic-project-name a:hover { color: var(--register-teal); text-underline-offset: 3px; }
.register-workspace .workspace .comparison-table .corridor-project-row .project-realized { background: color-mix(in srgb, var(--register-teal) 3%, var(--register-paper)); font-weight: 600; }
.register-workspace .workspace .comparison-table .portfolio-total-row > * { padding-top: 8px; padding-bottom: 8px; border-top: 2px solid var(--register-line); border-bottom: 0; background: var(--register-total); font-weight: 600; }
.register-workspace .not-set { color: var(--register-secondary); font-weight: 400; }
.register-workspace .register-warning { position: relative; display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; margin-right: 5px; color: var(--register-warning); font-size: 10px; font-weight: 600; line-height: 1; vertical-align: middle; cursor: help; }
.register-workspace .register-warning::before { content: ""; position: absolute; inset: 4px; border: 1px solid currentColor; border-radius: 50%; pointer-events: none; }
.register-workspace .register-progress .register-warning { grid-column: 2; grid-row: 1; margin: 0; }
.register-workspace .register-warning:focus-visible { outline: 2px solid var(--register-teal); outline-offset: 2px; }
.register-workspace .register-legend { display: flex; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-top: 12px; color: var(--register-secondary); font-size: 10px; }
.register-workspace .empty-state { color: var(--register-secondary); border: 0; }
.register-workspace .save-notice { background: var(--register-active); color: var(--register-teal); border-color: var(--register-line); }
.register-workspace .contract-dialog, .register-workspace .contract-dialog-content, .register-workspace .contract-dialog-content .panel, .register-workspace .contract-dialog .editor-actions { background: var(--register-paper); color: var(--register-ink); border-color: var(--register-line); box-shadow: none; }
.register-workspace .contract-dialog-heading { background: var(--register-head); color: var(--register-ink); }
.register-workspace .editor-field label, .register-workspace .editor-field small, .register-workspace .contract-dialog-content legend { color: var(--register-secondary); }
.register-workspace .editor-field input, .register-workspace .editor-field select, .register-workspace .editor-field textarea { background: var(--register-paper); color: var(--register-ink); border-color: var(--register-line); }
.register-workspace a:focus-visible, .register-workspace button:focus-visible, .register-workspace .comparison-scroll:focus-visible { outline: 2px solid var(--register-teal); outline-offset: 3px; }
@media(max-width:760px) {
    .register-workspace .portal-shell { display: block; }
    .register-workspace .portal-sidebar { position: static; height: auto; padding: 0 12px; }
    .register-workspace .portal-main-nav { flex-wrap: wrap; }
    .register-workspace .portal-main-nav > a { padding: 12px 8px; }
    .register-workspace .register-heading { align-items: flex-start; flex-wrap: wrap; }
    .register-workspace .register-heading h1 { font-size: 21px; }
    .register-workspace .project-list-actions { flex-wrap: wrap; }
    .register-workspace .workspace-sheet > .filters { padding: 12px; }
    .register-workspace .filters input, .register-workspace .filters select { height: 42px; font-size: 16px; }
    .register-workspace .register-units select { height: 36px; font-size: 16px; }
    .register-workspace .list-caption > span:last-child { max-width: none; }
}
@media(pointer:coarse) {
    .register-workspace .corridor-expand { min-width: 44px; min-height: 44px; }
    .register-workspace .project-contract-toggle { flex-basis: 44px; }
    .project-contract-toggle-placeholder { flex-basis: 44px; }
    .register-workspace .basic-project-name a, .register-workspace .register-group-link { min-height: 44px; display: flex; align-items: center; }
}

/* Keep register controls visible while only table rows scroll. */
html:has(.viewport-register) { overflow: hidden; scrollbar-gutter: auto; }
body.register-workspace:has(.viewport-register) { display: flex; flex-direction: column; height: 100dvh; overflow: hidden; }
.register-workspace:has(.viewport-register) > .notice { flex: 0 0 auto; }
.register-workspace:has(.viewport-register) .portal-shell { flex: 1; min-height: 0; grid-template-rows: 58px minmax(0, 1fr); }
.register-workspace:has(.viewport-register) .portal-workspace { min-height: 0; }
.register-workspace:has(.viewport-register) .portal-breadcrumb, .register-workspace:has(.viewport-register) .workspace-footer { flex: 0 0 auto; }
.register-workspace:has(.viewport-register) .workspace .page-content { display: flex; flex-direction: column; min-height: 0; overflow: hidden; }
.viewport-register { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.viewport-register > .register-heading, .viewport-register > .save-notice, .viewport-register > .register-legend { flex: 0 0 auto; }
.viewport-register > .workspace-sheet { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.viewport-register .workspace-sheet > .filters, .viewport-register .list-caption { flex: 0 0 auto; }
.register-workspace .viewport-register .compact-register-filters { align-items: center; gap: 10px 18px; padding: 10px 16px; }
.register-workspace .viewport-register .compact-register-filters > .search-field,
.register-workspace .viewport-register .compact-register-filters > .corridor-field { display: flex; align-items: center; gap: 8px; min-width: 0; }
.register-workspace .viewport-register .compact-register-filters > .search-field { flex: 1 1 300px; max-width: 440px; }
.register-workspace .viewport-register .compact-register-filters > .corridor-field { flex: 0 1 270px; }
.viewport-register .compact-register-filters label { flex: 0 0 auto; margin: 0; white-space: nowrap; }
.viewport-register .compact-register-filters input, .viewport-register .compact-register-filters select { flex: 1; min-width: 0; }
.register-workspace #projects .project-add-corridor { flex: 0 0 auto; margin: 0 0 0 auto; white-space: nowrap; }
.register-workspace #projects .compact-register-filters { column-gap: 12px; }
.register-workspace #projects .compact-register-filters > .search-field { flex-basis: 230px; max-width: 310px; }
.register-workspace #projects .compact-register-filters > .corridor-field { flex-basis: 220px; }
.register-workspace #projects .project-display-options { display: flex; align-items: center; gap: 12px; flex: 0 0 auto; min-width: 0; color: var(--register-secondary); font-size: 10px; white-space: nowrap; }
.viewport-register .compact-register-filters .project-filter-status { margin-top: 0; }
.viewport-register .register-results { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.viewport-register .comparison-scroll { flex: 1; min-height: 0; overflow: auto; overscroll-behavior: contain; scrollbar-gutter: stable; }
.viewport-register .comparison-table thead th { position: sticky; top: 0; z-index: 3; box-shadow: inset 0 -1px var(--register-line); }
.viewport-register .empty-state { overflow: auto; }
@media(max-width:760px) {
    .register-workspace:has(.viewport-register) .portal-shell { display: grid; grid-template-columns: minmax(0, 1fr); grid-template-rows: 58px auto minmax(0, 1fr); }
    .register-workspace .viewport-register .compact-register-filters { padding: 10px 12px; }
    .register-workspace .viewport-register .compact-register-filters > .search-field,
    .register-workspace .viewport-register .compact-register-filters > .corridor-field { flex: 1 1 100%; max-width: none; }
    .viewport-register .compact-register-filters label { flex-basis: 55px; }
    .register-workspace #projects .compact-register-filters > .search-field,
    .register-workspace #projects .compact-register-filters > .corridor-field { flex-basis: 100%; max-width: none; }
    #projects .project-display-options .register-units { flex-basis: auto; }
}
@media(pointer:coarse) {
    .register-workspace :is(.project-comparison-list, .funding-comparison-list) .register-actions-col { width: 120px; }
    .register-row-actions { grid-template-columns: repeat(2, 44px); }
}
