12246 lines
291 KiB
CSS
12246 lines
291 KiB
CSS
/* src/styles/security-scoring.css */
|
|
.security-scoring-methodology {
|
|
min-width: 0;
|
|
}
|
|
.security-scoring-methodology p {
|
|
font-size: var(--type-body-size);
|
|
line-height: var(--lh-prose);
|
|
}
|
|
.security-scoring-methodology table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
table-layout: fixed;
|
|
}
|
|
.security-scoring-methodology caption {
|
|
text-align: left;
|
|
font-size: var(--type-body-size);
|
|
font-weight: var(--fw-semibold);
|
|
padding-bottom: var(--space-3);
|
|
}
|
|
.security-scoring-methodology th,
|
|
.security-scoring-methodology td {
|
|
padding: var(--space-2);
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
text-align: left;
|
|
vertical-align: top;
|
|
overflow-wrap: anywhere;
|
|
font-size: var(--type-table-body-size);
|
|
}
|
|
.security-scoring-methodology th {
|
|
font-size: var(--type-table-head-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.security-scoring-methodology th:last-child {
|
|
width: 50%;
|
|
}
|
|
|
|
/* node_modules/@fontsource-variable/inter/wght.css */
|
|
@font-face {
|
|
font-family: "Inter Variable";
|
|
font-style: normal;
|
|
font-display: swap;
|
|
font-weight: 100 900;
|
|
src: url("./inter-cyrillic-ext-wght-normal-IYF56FF6.woff2") format("woff2-variations");
|
|
unicode-range:
|
|
U+0460-052F,
|
|
U+1C80-1C8A,
|
|
U+20B4,
|
|
U+2DE0-2DFF,
|
|
U+A640-A69F,
|
|
U+FE2E-FE2F;
|
|
}
|
|
@font-face {
|
|
font-family: "Inter Variable";
|
|
font-style: normal;
|
|
font-display: swap;
|
|
font-weight: 100 900;
|
|
src: url("./inter-cyrillic-wght-normal-JEOLYBOO.woff2") format("woff2-variations");
|
|
unicode-range:
|
|
U+0301,
|
|
U+0400-045F,
|
|
U+0490-0491,
|
|
U+04B0-04B1,
|
|
U+2116;
|
|
}
|
|
@font-face {
|
|
font-family: "Inter Variable";
|
|
font-style: normal;
|
|
font-display: swap;
|
|
font-weight: 100 900;
|
|
src: url("./inter-greek-ext-wght-normal-EOVOK2B5.woff2") format("woff2-variations");
|
|
unicode-range: U+1F00-1FFF;
|
|
}
|
|
@font-face {
|
|
font-family: "Inter Variable";
|
|
font-style: normal;
|
|
font-display: swap;
|
|
font-weight: 100 900;
|
|
src: url("./inter-greek-wght-normal-IRE366VL.woff2") format("woff2-variations");
|
|
unicode-range:
|
|
U+0370-0377,
|
|
U+037A-037F,
|
|
U+0384-038A,
|
|
U+038C,
|
|
U+038E-03A1,
|
|
U+03A3-03FF;
|
|
}
|
|
@font-face {
|
|
font-family: "Inter Variable";
|
|
font-style: normal;
|
|
font-display: swap;
|
|
font-weight: 100 900;
|
|
src: url("./inter-vietnamese-wght-normal-CE5GGD3W.woff2") format("woff2-variations");
|
|
unicode-range:
|
|
U+0102-0103,
|
|
U+0110-0111,
|
|
U+0128-0129,
|
|
U+0168-0169,
|
|
U+01A0-01A1,
|
|
U+01AF-01B0,
|
|
U+0300-0301,
|
|
U+0303-0304,
|
|
U+0308-0309,
|
|
U+0323,
|
|
U+0329,
|
|
U+1EA0-1EF9,
|
|
U+20AB;
|
|
}
|
|
@font-face {
|
|
font-family: "Inter Variable";
|
|
font-style: normal;
|
|
font-display: swap;
|
|
font-weight: 100 900;
|
|
src: url("./inter-latin-ext-wght-normal-HA22NDSG.woff2") format("woff2-variations");
|
|
unicode-range:
|
|
U+0100-02BA,
|
|
U+02BD-02C5,
|
|
U+02C7-02CC,
|
|
U+02CE-02D7,
|
|
U+02DD-02FF,
|
|
U+0304,
|
|
U+0308,
|
|
U+0329,
|
|
U+1D00-1DBF,
|
|
U+1E00-1E9F,
|
|
U+1EF2-1EFF,
|
|
U+2020,
|
|
U+20A0-20AB,
|
|
U+20AD-20C0,
|
|
U+2113,
|
|
U+2C60-2C7F,
|
|
U+A720-A7FF;
|
|
}
|
|
@font-face {
|
|
font-family: "Inter Variable";
|
|
font-style: normal;
|
|
font-display: swap;
|
|
font-weight: 100 900;
|
|
src: url("./inter-latin-wght-normal-NRMW37G5.woff2") format("woff2-variations");
|
|
unicode-range:
|
|
U+0000-00FF,
|
|
U+0131,
|
|
U+0152-0153,
|
|
U+02BB-02BC,
|
|
U+02C6,
|
|
U+02DA,
|
|
U+02DC,
|
|
U+0304,
|
|
U+0308,
|
|
U+0329,
|
|
U+2000-206F,
|
|
U+20AC,
|
|
U+2122,
|
|
U+2191,
|
|
U+2193,
|
|
U+2212,
|
|
U+2215,
|
|
U+FEFF,
|
|
U+FFFD;
|
|
}
|
|
|
|
/* src/styles/layers.css */
|
|
@layer tokens, base, shell, components, utilities;
|
|
|
|
/* src/styles/ui-tokens.css */
|
|
@layer tokens {
|
|
:root {
|
|
--font-ui: "Inter Variable", sans-serif;
|
|
--font-mono: var(--font-ui);
|
|
--font-path:
|
|
ui-monospace,
|
|
Consolas,
|
|
"Liberation Mono",
|
|
monospace;
|
|
--font-donut-display: var(--font-ui);
|
|
--type-h1-size: 56px;
|
|
--type-h2-size: 32px;
|
|
--type-h3-size: 18px;
|
|
--type-detail-title-size: 20px;
|
|
--type-h4-size: 16px;
|
|
--type-body-size: 16px;
|
|
--type-table-body-size: 14px;
|
|
--type-label-size: 12px;
|
|
--type-meta-size: 12px;
|
|
--type-badge-size: 11px;
|
|
--type-table-head-size: 12px;
|
|
--type-button-size: 13px;
|
|
--segment-surface: transparent;
|
|
--segment-border: transparent;
|
|
--segment-radius: 10px;
|
|
--segment-inset: var(--space-3);
|
|
--segment-gap: var(--space-3);
|
|
--tile-surface: #323238;
|
|
--tile-surface-hover: #3A3A42;
|
|
--tile-border: transparent;
|
|
--tile-selected-border: var(--marking-color);
|
|
--tile-radius: var(--radius-sm);
|
|
--tile-inset: var(--space-4);
|
|
--tile-compact-width: 186px;
|
|
--tile-content-width: 358px;
|
|
--tile-content-min-height: 223px;
|
|
--tile-card-shadow: none;
|
|
--client-info-canvas: var(--surface-app);
|
|
--client-info-surface: var(--surface-input);
|
|
--client-info-surface-raised: var(--tile-surface);
|
|
--client-info-surface-hover: var(--tile-surface-hover);
|
|
--client-info-text: var(--text-primary);
|
|
--client-info-muted: var(--text-secondary);
|
|
--client-info-line: var(--border-default);
|
|
--client-info-line-strong: var(--border-strong);
|
|
--client-info-amber: var(--sev-medium);
|
|
--client-info-red: var(--sev-critical);
|
|
--client-info-green: var(--state-done);
|
|
--client-info-purple: var(--donut-not-applicable);
|
|
--client-info-blue: var(--donut-all);
|
|
--client-info-lime: var(--state-done);
|
|
--client-info-neutral: var(--donut-not-run);
|
|
--donut-rack-surface: var(--segment-surface);
|
|
--donut-card-surface: var(--tile-surface);
|
|
--donut-card-surface-end: var(--tile-surface);
|
|
--donut-track: #555B65;
|
|
--donut-border: var(--segment-border);
|
|
--donut-value: #E2DFE6;
|
|
--donut-label: #B7BAC0;
|
|
--donut-all: #348CF2;
|
|
--donut-deviation: #F0AC00;
|
|
--donut-passed: #3DA96C;
|
|
--donut-not-applicable: #C2568A;
|
|
--donut-not-run: #8A8E95;
|
|
--donut-error: #F23C47;
|
|
--donut-rack-shadow: none;
|
|
--donut-card-shadow: var(--tile-card-shadow);
|
|
--donut-rack-radius: var(--segment-radius);
|
|
--donut-card-radius: var(--tile-radius);
|
|
--donut-card-min-h: 196px;
|
|
--donut-ring-size: 128px;
|
|
--donut-ring-stroke: 12px;
|
|
--donut-progress-dash: 0 100;
|
|
--donut-title-size: 16px;
|
|
--donut-value-size: 26px;
|
|
--donut-percent-size: 14px;
|
|
--donut-compact-value-size: 22px;
|
|
--donut-compact-percent-size: 12px;
|
|
--donut-compact-unit-gap: 2px;
|
|
--datahub-readiness-dot-size: 14px;
|
|
--datahub-readiness-dot-inset: var(--space-1);
|
|
--fs-micro: var(--type-badge-size);
|
|
--fs-sm: var(--type-meta-size);
|
|
--fs-base: var(--type-button-size);
|
|
--fs-md: var(--type-table-body-size);
|
|
--fs-lg: var(--type-body-size);
|
|
--fs-xl: var(--type-h3-size);
|
|
--pathfinder-micro-title-size: 23px;
|
|
--pathfinder-micro-badge-size: 14px;
|
|
--pathfinder-micro-relation-badge-size: 16px;
|
|
--pathfinder-micro-action-size: 14px;
|
|
--pathfinder-micro-action-group-radius: 8px;
|
|
--pathfinder-micro-action-radius: 6px;
|
|
--pathfinder-micro-connector-backdrop-mix: #000000;
|
|
--pathfinder-micro-action-highlight-mix: #FFFFFF;
|
|
--fw-regular: 400;
|
|
--fw-content-medium: 500;
|
|
--fw-semibold: 600;
|
|
--fw-bold: 700;
|
|
--fw-medium: var(--fw-semibold);
|
|
--lh-ui: 1.35;
|
|
--lh-prose: 1.55;
|
|
--ls-caps: 0.06em;
|
|
--space-1: 4px;
|
|
--space-2: 8px;
|
|
--space-3: 12px;
|
|
--space-4: 16px;
|
|
--space-5: 20px;
|
|
--space-6: 24px;
|
|
--space-8: 32px;
|
|
--sidebar-w: 224px;
|
|
--sidebar-w-collapsed: 48px;
|
|
--topbar-h: 44px;
|
|
--band-row-h: 34px;
|
|
--contextstrip-h: 24px;
|
|
--statusbar-h: 24px;
|
|
--inspector-w: 380px;
|
|
--facetrail-w: 236px;
|
|
--table-col-min-w: 96px;
|
|
--panel-content-inset: 20px;
|
|
--panel-inset: var(--panel-content-inset);
|
|
--app-grid-size: 22px 22px;
|
|
--control-h: 24px;
|
|
--control-h-sm: 20px;
|
|
--icon-btn: 24px;
|
|
--row-h: 32px;
|
|
--tile-h: 132px;
|
|
--tile-min-w: 260px;
|
|
--radius-xs: 0px;
|
|
--radius-sm: 0px;
|
|
--radius-md: 0px;
|
|
--btn-radius: 4px;
|
|
--btn-h: 28px;
|
|
--btn-pad-x: 12px;
|
|
--radius-nav-item: 4px;
|
|
--radius-result-cluster: 4px;
|
|
--bw-hairline: 1px;
|
|
--bw-emphasis: 2px;
|
|
--marker-width: 8px;
|
|
--dur-fast: 90ms;
|
|
--dur-base: 140ms;
|
|
--dur-data-build: 700ms;
|
|
--ease: cubic-bezier(0.2, 0, 0.2, 1);
|
|
--ease-data-build: cubic-bezier(0.22, 1, 0.36, 1);
|
|
}
|
|
:root[data-density=compact] {
|
|
--control-h: 26px;
|
|
--control-h-sm: 22px;
|
|
--icon-btn: 22px;
|
|
--row-h: 28px;
|
|
--tile-h: 116px;
|
|
--band-row-h: 30px;
|
|
}
|
|
:root[data-density=reading] {
|
|
--control-h: 34px;
|
|
--control-h-sm: 30px;
|
|
--icon-btn: 30px;
|
|
--row-h: 40px;
|
|
--tile-h: 148px;
|
|
--band-row-h: 38px;
|
|
}
|
|
:root,
|
|
:root[data-theme=dark] {
|
|
color-scheme: dark;
|
|
--surface-app: #242426;
|
|
--surface-shell: #1B1B1D;
|
|
--surface-panel: #242426;
|
|
--surface-panel-raised: #323238;
|
|
--surface-input: #1A1A1C;
|
|
--surface-hover: #3A3A42;
|
|
--surface-active: #43434C;
|
|
--surface-selected: color-mix(in srgb, var(--marking-color) 16%, transparent);
|
|
--surface-selected-flat: #43434C;
|
|
--text-selected-flat: #E2DFE6;
|
|
--text-muted-selected-flat: #B7BAC0;
|
|
--border-selected-flat: var(--marking-color);
|
|
--surface-tab-active: #323238;
|
|
--text-tab-active: #E2DFE6;
|
|
--surface-results-action: #242426;
|
|
--border-results-action: var(--marking-color);
|
|
--text-results-action: var(--marking-color);
|
|
--surface-overlay: #242426;
|
|
--surface-scrim: rgba(6, 6, 9, 0.62);
|
|
--app-grid-pattern:
|
|
radial-gradient(
|
|
circle at 1px 1px,
|
|
#424248 1px,
|
|
transparent 0);
|
|
--graph-edge: rgba(104, 143, 181, 0.52);
|
|
--graph-finding: #D9DEE4;
|
|
--graph-unknown: #8EA7C0;
|
|
--graph-relation: #4FB8D4;
|
|
--graph-category: #AEB8C3;
|
|
--graph-defense: #789C99;
|
|
--graph-technique: #7E8D9C;
|
|
--graph-tactic: #668BB3;
|
|
--graph-alert: #E45E63;
|
|
--graph-selected: var(--marking-color);
|
|
--chart-tone-emphasis: var(--graph-relation);
|
|
--border-subtle: rgba(255, 255, 255, 0.14);
|
|
--border-default: #383840;
|
|
--border-strong: #4E4E58;
|
|
--button-border: #383840;
|
|
--button-bg: #323238;
|
|
--button-bg-hover: #3A3A42;
|
|
--button-text: #E2DFE6;
|
|
--button-accent: #E9A63C;
|
|
--button-accent-hover: #F0B252;
|
|
--button-accent-text: #000000;
|
|
--marking-color: #E9A63C;
|
|
--surface-nav-item: #323238;
|
|
--surface-nav-item-hover: #3A3A42;
|
|
--surface-nav-active: var(--surface-app);
|
|
--text-primary: #E2DFE6;
|
|
--text-secondary: #B7BAC0;
|
|
--text-muted: #B7BAC0;
|
|
--text-disabled: #55555E;
|
|
--text-inverse: #0D0D10;
|
|
--text-link: #7FA9F0;
|
|
--band-surface: #D9962A;
|
|
--band-surface-hover: #E5A33A;
|
|
--band-surface-active: #C4831C;
|
|
--band-border: #A66E12;
|
|
--band-text: #17130A;
|
|
--sev-critical: #E8214F;
|
|
--sev-high: #E2680F;
|
|
--sev-medium: #C99700;
|
|
--sev-low: #2E9E6B;
|
|
--sev-info: #3D8FD1;
|
|
--sev-unknown: #6E6E78;
|
|
--sev-on: #FFFFFF;
|
|
--sev-ink: #08080A;
|
|
--outcome-fail: #F2607F;
|
|
--outcome-pass: #63D69A;
|
|
--outcome-warning: #D9A82A;
|
|
--outcome-error: #E88A45;
|
|
--outcome-idle: #74747F;
|
|
--state-open: #8A8A94;
|
|
--state-progress: #3D8FD1;
|
|
--state-done: #2E9E6B;
|
|
--state-blocked: #E2680F;
|
|
--state-accepted: #74747F;
|
|
--state-bookmark: #1FA89E;
|
|
--state-online: #2E9E6B;
|
|
--state-offline: #E8214F;
|
|
--focus-ring: #4CC2FF;
|
|
--selection-border: var(--marking-color);
|
|
--selection-marker: var(--marking-color);
|
|
--search-highlight-bg: #FFE600;
|
|
--search-highlight-text: #000000;
|
|
--evidence-highlight-bg: #CBF8FF;
|
|
--evidence-highlight-text: #000000;
|
|
--criterion-highlight-bg: #176B46;
|
|
--criterion-highlight-text: #FFFFFF;
|
|
--violation-highlight-bg: #981B37;
|
|
--violation-highlight-text: #FFFFFF;
|
|
--viz-1: #6B9E1F;
|
|
--viz-2: #3D8FD1;
|
|
--viz-3: #1FA89E;
|
|
--viz-4: #C99700;
|
|
--viz-5: #E2680F;
|
|
--viz-6: #D6497A;
|
|
--viz-grid: #2A2A32;
|
|
--shadow-overlay: 0 8px 24px rgba(0, 0, 0, 0.48);
|
|
--shadow-popover: 0 4px 12px rgba(0, 0, 0, 0.42);
|
|
}
|
|
:root[data-theme=light] {
|
|
color-scheme: light;
|
|
--segment-surface: transparent;
|
|
--segment-border: transparent;
|
|
--tile-surface: #FFFFFF;
|
|
--tile-surface-hover: #F3F4F6;
|
|
--tile-border: transparent;
|
|
--tile-selected-border: var(--marking-color);
|
|
--tile-card-shadow: none;
|
|
--donut-rack-surface: var(--segment-surface);
|
|
--donut-card-surface: var(--tile-surface);
|
|
--donut-card-surface-end: var(--tile-surface);
|
|
--donut-track: #B9BEC7;
|
|
--donut-border: var(--segment-border);
|
|
--donut-value: #20242A;
|
|
--donut-label: #555B65;
|
|
--donut-all: #1C70C9;
|
|
--donut-deviation: #9A6500;
|
|
--donut-passed: #1F7F4B;
|
|
--donut-not-applicable: #A13D6C;
|
|
--donut-not-run: #626873;
|
|
--donut-error: #D42836;
|
|
--donut-rack-shadow: none;
|
|
--donut-card-shadow: var(--tile-card-shadow);
|
|
--surface-app: #F1F1F4;
|
|
--surface-shell: #E4E4EA;
|
|
--surface-panel: #FFFFFF;
|
|
--surface-panel-raised: #F7F7F9;
|
|
--surface-input: #FFFFFF;
|
|
--surface-hover: #EDEDF2;
|
|
--surface-active: #E3E3EA;
|
|
--surface-selected: color-mix(in srgb, var(--marking-color) 16%, transparent);
|
|
--surface-selected-flat: #E4E4EC;
|
|
--text-selected-flat: #17171C;
|
|
--text-muted-selected-flat: #55555F;
|
|
--border-selected-flat: var(--marking-color);
|
|
--surface-tab-active: #FFFFFF;
|
|
--text-tab-active: #17171C;
|
|
--surface-results-action: #FFFFFF;
|
|
--border-results-action: var(--marking-color);
|
|
--text-results-action: var(--marking-color);
|
|
--surface-overlay: #FFFFFF;
|
|
--surface-scrim: rgba(24, 24, 30, 0.32);
|
|
--app-grid-pattern:
|
|
radial-gradient(
|
|
circle at 1px 1px,
|
|
#CBCBD3 1px,
|
|
transparent 0);
|
|
--graph-edge: rgba(55, 92, 128, 0.45);
|
|
--graph-finding: #3F4851;
|
|
--graph-unknown: #58718A;
|
|
--graph-relation: #2E93AD;
|
|
--graph-category: #667482;
|
|
--graph-defense: #527A77;
|
|
--graph-technique: #71808E;
|
|
--graph-tactic: #426C97;
|
|
--graph-alert: #C83E45;
|
|
--graph-selected: var(--marking-color);
|
|
--chart-tone-emphasis: var(--graph-relation);
|
|
--border-subtle: #E2E2E8;
|
|
--border-default: #CFCFD8;
|
|
--border-strong: #A8A8B4;
|
|
--button-border: #888888;
|
|
--button-bg: #C8C8C8;
|
|
--button-bg-hover: #D5D5D5;
|
|
--button-text: #111111;
|
|
--button-accent: #E9A63C;
|
|
--button-accent-hover: #F0B252;
|
|
--button-accent-text: #000000;
|
|
--marking-color: #E9A63C;
|
|
--surface-nav-item: #D8D8E0;
|
|
--surface-nav-item-hover: #E4E4EC;
|
|
--surface-nav-active: var(--surface-app);
|
|
--text-primary: #17171C;
|
|
--text-secondary: #55555F;
|
|
--text-muted: #74747F;
|
|
--text-disabled: #A0A0AA;
|
|
--text-inverse: #FFFFFF;
|
|
--text-link: #2A5FBF;
|
|
--band-surface: #E9A63C;
|
|
--band-surface-hover: #F0B252;
|
|
--band-surface-active: #D8942A;
|
|
--band-border: #B37B18;
|
|
--band-text: #17130A;
|
|
--sev-critical: #E8214F;
|
|
--sev-high: #E2680F;
|
|
--sev-medium: #C99700;
|
|
--sev-low: #2E9E6B;
|
|
--sev-info: #3D8FD1;
|
|
--sev-unknown: #6E6E78;
|
|
--sev-on: #FFFFFF;
|
|
--sev-ink: #08080A;
|
|
--outcome-fail: #C60F3E;
|
|
--outcome-pass: #187447;
|
|
--outcome-warning: #8F6B00;
|
|
--outcome-error: #B85206;
|
|
--outcome-idle: #74747F;
|
|
--state-open: #6E6E78;
|
|
--state-progress: #2A6FA8;
|
|
--state-done: #1E7A50;
|
|
--state-blocked: #B85206;
|
|
--state-accepted: #74747F;
|
|
--state-bookmark: #10756D;
|
|
--state-online: #1E7A50;
|
|
--state-offline: #C60F3E;
|
|
--focus-ring: #0A66C2;
|
|
--selection-border: var(--marking-color);
|
|
--selection-marker: var(--marking-color);
|
|
--search-highlight-bg: #FFE600;
|
|
--search-highlight-text: #000000;
|
|
--evidence-highlight-bg: #CBF8FF;
|
|
--evidence-highlight-text: #000000;
|
|
--criterion-highlight-bg: #CBEFD9;
|
|
--criterion-highlight-text: #10261A;
|
|
--violation-highlight-bg: #FFD4DB;
|
|
--violation-highlight-text: #4A0714;
|
|
--viz-1: #4F7A12;
|
|
--viz-2: #2A6FA8;
|
|
--viz-3: #10756D;
|
|
--viz-4: #8F6B00;
|
|
--viz-5: #B85206;
|
|
--viz-6: #B02F5E;
|
|
--viz-grid: #DFDFE6;
|
|
--shadow-overlay: 0 8px 24px rgba(20, 20, 28, 0.18);
|
|
--shadow-popover: 0 4px 12px rgba(20, 20, 28, 0.14);
|
|
}
|
|
@media (prefers-reduced-motion: reduce) {
|
|
:root {
|
|
--dur-fast: 0ms;
|
|
--dur-base: 0ms;
|
|
--dur-data-build: 0ms;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* src/styles/tokens.css */
|
|
:root {
|
|
--bg: var(--surface-app);
|
|
--header: var(--surface-shell);
|
|
--sidebar: var(--surface-shell);
|
|
--panel: var(--surface-panel);
|
|
--panel-soft: var(--surface-panel);
|
|
--panel-raised: var(--surface-panel-raised);
|
|
--panel-hover: var(--surface-hover);
|
|
--surface-inset: var(--surface-input);
|
|
--line: var(--border-subtle);
|
|
--line-strong: var(--border-strong);
|
|
--text: var(--text-primary);
|
|
--heading: var(--text-primary);
|
|
--muted: var(--text-secondary);
|
|
--state-selected: var(--surface-selected);
|
|
--state-selected-text: var(--text-primary);
|
|
--state-selected-flat: var(--surface-selected-flat);
|
|
--state-selected-flat-text: var(--text-selected-flat);
|
|
--state-selected-flat-muted: var(--text-muted-selected-flat);
|
|
--state-selected-flat-border: var(--border-selected-flat);
|
|
--state-active: var(--marking-color);
|
|
--state-active-text: var(--band-text);
|
|
--result-color: var(--state-active);
|
|
--button-border: var(--border-default);
|
|
--button-bg: var(--surface-panel-raised);
|
|
--button-bg-hover: var(--surface-hover);
|
|
--button-text: var(--text-primary);
|
|
--button-marked-bg: var(--button-accent);
|
|
--button-marked-bg-hover: var(--button-accent-hover);
|
|
--button-marked-text: var(--button-accent-text);
|
|
--success: var(--state-done);
|
|
--warning: var(--outcome-warning);
|
|
--danger: var(--sev-critical);
|
|
--danger-text: var(--outcome-fail);
|
|
--danger-surface: color-mix(in srgb, var(--sev-critical) 16%, transparent);
|
|
--critical: var(--sev-critical);
|
|
--high: var(--sev-high);
|
|
--medium: var(--sev-medium);
|
|
--low: var(--sev-low);
|
|
--info: var(--sev-info);
|
|
--critical-badge: var(--sev-critical);
|
|
--high-badge: var(--sev-high);
|
|
--medium-badge: var(--sev-medium);
|
|
--low-badge: var(--sev-low);
|
|
--info-badge: var(--sev-info);
|
|
--severity-ink: var(--sev-ink);
|
|
--legacy-radius-sm: var(--radius-sm);
|
|
--legacy-radius-md: var(--radius-md);
|
|
--radius-lg: var(--radius-md);
|
|
--radius-pill: 999px;
|
|
--border-hair: var(--bw-hairline);
|
|
--legacy-space-1: var(--space-1);
|
|
--legacy-space-2: var(--space-2);
|
|
--legacy-space-3: var(--space-3);
|
|
--legacy-space-4: var(--space-4);
|
|
--legacy-space-5: var(--space-5);
|
|
--legacy-space-6: var(--space-6);
|
|
--space-7: var(--space-8);
|
|
--control-height: var(--control-h);
|
|
--row-height: var(--row-h);
|
|
--reader-inset: 28px;
|
|
--shadow: none;
|
|
--shadow-raised: 0 4px 12px rgba(0, 0, 0, 0.28), inset 0 1px 0 rgba(255, 255, 255, 0.08);
|
|
--shadow-raised-hover: 0 8px 20px rgba(0, 0, 0, 0.38), inset 0 1px 0 rgba(255, 255, 255, 0.12);
|
|
--font: var(--font-ui);
|
|
--ui-label-size: var(--type-table-head-size);
|
|
--ui-badge-size: var(--type-badge-size);
|
|
--ui-small-size: var(--type-meta-size);
|
|
--ui-value-size: var(--type-label-size);
|
|
--ui-control-size: var(--type-button-size);
|
|
--ui-body-size: var(--type-table-body-size);
|
|
--ui-heading-size: var(--type-h3-size);
|
|
--ui-reading-size: var(--type-body-size);
|
|
--ui-reading-heading-size: var(--type-h2-size);
|
|
--ui-glyph-size: 21px;
|
|
--ui-label-weight: var(--fw-semibold);
|
|
--ui-strong-weight: var(--fw-semibold);
|
|
--ui-body-weight: var(--fw-regular);
|
|
--ui-label-tracking: var(--ls-caps);
|
|
}
|
|
|
|
/* src/styles/base.css */
|
|
* {
|
|
box-sizing: border-box;
|
|
}
|
|
html,
|
|
body,
|
|
#root {
|
|
width: 100%;
|
|
min-width: 0;
|
|
min-height: 100%;
|
|
margin: 0;
|
|
}
|
|
body {
|
|
min-height: 100vh;
|
|
overflow: hidden;
|
|
color: var(--text);
|
|
background: var(--bg);
|
|
font: var(--fw-regular) var(--type-body-size)/1.5 var(--font-ui);
|
|
}
|
|
button,
|
|
input,
|
|
select,
|
|
textarea {
|
|
color: inherit;
|
|
font: inherit;
|
|
}
|
|
button,
|
|
select {
|
|
cursor: pointer;
|
|
}
|
|
button:disabled,
|
|
select:disabled {
|
|
cursor: not-allowed;
|
|
opacity: .42;
|
|
}
|
|
h1,
|
|
h2,
|
|
h3,
|
|
h4,
|
|
p {
|
|
margin-top: 0;
|
|
}
|
|
h1 {
|
|
font-size: var(--type-h1-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.1;
|
|
letter-spacing: -.04em;
|
|
}
|
|
h2 {
|
|
font-size: var(--type-h2-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.15;
|
|
letter-spacing: -.03em;
|
|
}
|
|
h3 {
|
|
font-size: var(--type-h3-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.25;
|
|
letter-spacing: 0;
|
|
}
|
|
h4 {
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.3;
|
|
letter-spacing: 0;
|
|
}
|
|
svg {
|
|
display: block;
|
|
width: 17px;
|
|
height: 17px;
|
|
}
|
|
table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
}
|
|
th,
|
|
td {
|
|
padding: 9px 10px;
|
|
border-bottom: 1px solid var(--line);
|
|
text-align: left;
|
|
vertical-align: top;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
td {
|
|
font-size: var(--type-table-body-size);
|
|
font-weight: var(--fw-regular);
|
|
}
|
|
th {
|
|
position: sticky;
|
|
top: 0;
|
|
z-index: 1;
|
|
color: var(--muted);
|
|
background: var(--panel-soft);
|
|
font-size: var(--type-table-head-size);
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: var(--ls-caps);
|
|
text-transform: uppercase;
|
|
}
|
|
tbody tr:hover td {
|
|
background: var(--panel-hover);
|
|
}
|
|
pre {
|
|
margin: 0;
|
|
white-space: pre-wrap;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
mark {
|
|
padding: 1px 2px;
|
|
color: var(--state-active-text);
|
|
background: var(--state-active);
|
|
}
|
|
.hidden-input {
|
|
display: none;
|
|
}
|
|
button,
|
|
.btn,
|
|
.icon-btn,
|
|
.tab-btn,
|
|
.bookmark-btn,
|
|
.results-btn {
|
|
border-radius: var(--btn-radius);
|
|
border: 1px solid var(--button-border);
|
|
color: var(--button-text);
|
|
background: var(--button-bg);
|
|
font-size: var(--type-button-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.15;
|
|
}
|
|
.select,
|
|
.input {
|
|
min-height: var(--control-height);
|
|
border: var(--border-hair) solid var(--line);
|
|
border-radius: 0;
|
|
color: var(--text);
|
|
background-color: var(--panel-raised);
|
|
font-size: var(--type-button-size);
|
|
font-weight: var(--fw-regular);
|
|
}
|
|
.btn {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: var(--btn-h);
|
|
padding: 0 var(--btn-pad-x);
|
|
}
|
|
.select,
|
|
.input {
|
|
padding: var(--legacy-space-1) var(--legacy-space-3);
|
|
}
|
|
.icon-btn,
|
|
.bookmark-btn,
|
|
.results-btn {
|
|
display: inline-grid;
|
|
place-items: center;
|
|
min-width: var(--btn-h);
|
|
min-height: var(--btn-h);
|
|
padding: 0 6px;
|
|
}
|
|
.btn:hover,
|
|
.icon-btn:hover,
|
|
.tab-btn:hover,
|
|
.bookmark-btn:hover,
|
|
.results-btn:hover {
|
|
border-color: var(--button-border);
|
|
background: var(--button-bg-hover);
|
|
color: var(--button-text);
|
|
}
|
|
.select:hover,
|
|
.input:hover {
|
|
border-color: var(--line-strong);
|
|
background-color: var(--panel-hover);
|
|
}
|
|
.input {
|
|
background: var(--surface-inset);
|
|
}
|
|
.btn.primary,
|
|
.btn--primary,
|
|
.btn.active,
|
|
.tab-btn.active,
|
|
.bookmark-btn[aria-pressed=true],
|
|
.icon-btn[aria-pressed=true],
|
|
.results-btn.is-open {
|
|
border: 1px solid var(--button-border);
|
|
color: var(--button-marked-text);
|
|
background: var(--button-marked-bg);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.btn.primary:hover,
|
|
.btn--primary:hover,
|
|
.btn.active:hover,
|
|
.tab-btn.active:hover,
|
|
.bookmark-btn[aria-pressed=true]:hover,
|
|
.icon-btn[aria-pressed=true]:hover,
|
|
.results-btn.is-open:hover {
|
|
border-color: var(--button-border);
|
|
background: var(--button-marked-bg-hover);
|
|
color: var(--button-marked-text);
|
|
}
|
|
:focus-visible {
|
|
outline: 1px solid var(--focus-ring);
|
|
outline-offset: 1px;
|
|
}
|
|
|
|
/* src/styles/layout.css */
|
|
.app-shell {
|
|
display: grid;
|
|
grid-template-rows: 124px minmax(0, 1fr);
|
|
height: 100vh;
|
|
min-height: 0;
|
|
}
|
|
.topbar {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: 10px;
|
|
min-width: 0;
|
|
height: 124px;
|
|
padding: 6px 12px;
|
|
background: var(--header);
|
|
overflow: hidden;
|
|
}
|
|
.brand {
|
|
appearance: none;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
flex: 0 0 204px;
|
|
min-width: 204px;
|
|
min-height: 112px;
|
|
padding: 6px 14px 6px 16px;
|
|
margin-top: 0;
|
|
border: 0;
|
|
color: inherit;
|
|
background: transparent;
|
|
font: inherit;
|
|
text-align: left;
|
|
white-space: nowrap;
|
|
cursor: pointer;
|
|
}
|
|
.brand:hover {
|
|
background: transparent;
|
|
}
|
|
.brand:focus-visible {
|
|
outline: 2px solid var(--focus-ring);
|
|
outline-offset: -2px;
|
|
}
|
|
.brand h1 {
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-bold);
|
|
line-height: 1;
|
|
letter-spacing: .045em;
|
|
}
|
|
.brand-copy {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
}
|
|
.brand-version {
|
|
color: var(--muted);
|
|
font-size: var(--type-meta-size);
|
|
font-variant-numeric: tabular-nums;
|
|
line-height: 1;
|
|
letter-spacing: var(--ls-caps);
|
|
}
|
|
.brand-logo {
|
|
position: relative;
|
|
display: block;
|
|
flex: 0 0 48px;
|
|
width: 48px;
|
|
height: 48px;
|
|
}
|
|
.brand-logo img {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: block;
|
|
width: 48px;
|
|
height: 48px;
|
|
object-fit: contain;
|
|
transition: opacity .16s ease;
|
|
}
|
|
.app-header-panel {
|
|
position: relative;
|
|
display: flex;
|
|
flex: 1 1 0;
|
|
flex-direction: column;
|
|
min-width: 0;
|
|
min-height: 112px;
|
|
padding: 6px 10px;
|
|
background: transparent;
|
|
overflow: hidden;
|
|
}
|
|
.app-header-panel,
|
|
.viewer {
|
|
border-radius: 10px;
|
|
}
|
|
.app-header-panel-work {
|
|
padding: 3px 0 0;
|
|
}
|
|
.work-header-row {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 18px;
|
|
min-width: 0;
|
|
}
|
|
.work-header-row .reader-toolbar {
|
|
flex: 1 1 auto;
|
|
}
|
|
.app-header-context {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
flex: 0 0 auto;
|
|
min-height: 30px;
|
|
}
|
|
.work-header-row .app-header-context {
|
|
margin-left: auto;
|
|
}
|
|
.app-header-panel:not(.app-header-panel-work) .app-header-context {
|
|
position: absolute;
|
|
top: 3px;
|
|
right: 0;
|
|
}
|
|
.app-header-client-name {
|
|
flex: 0 1 auto;
|
|
max-width: min(32vw, 420px);
|
|
margin-right: 16px;
|
|
overflow: hidden;
|
|
color: var(--heading);
|
|
font-size: var(--fs-xl);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.2;
|
|
text-align: right;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.reader-toolbar {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 10px;
|
|
min-width: 0;
|
|
min-height: 30px;
|
|
padding-left: 14px;
|
|
overflow-x: auto;
|
|
overflow-y: hidden;
|
|
scrollbar-width: thin;
|
|
scrollbar-color: var(--line-strong) transparent;
|
|
}
|
|
.toolbar,
|
|
.header-export-row,
|
|
.live-summary,
|
|
.search-tools,
|
|
.view-tabs {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
min-width: 0;
|
|
}
|
|
.toolbar {
|
|
flex: 0 0 auto;
|
|
justify-content: flex-end;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
min-inline-size: 0;
|
|
}
|
|
.live-summary {
|
|
flex: 0 0 auto;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
height: 30px;
|
|
margin-left: 0;
|
|
padding: 3px 8px;
|
|
gap: 10px;
|
|
border: 1px solid var(--border-default);
|
|
border-radius: 0;
|
|
background: var(--surface-panel-raised);
|
|
white-space: nowrap;
|
|
}
|
|
.live-summary span {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
color: var(--text-secondary);
|
|
font-weight: var(--fw-regular);
|
|
font-size: var(--ui-label-size);
|
|
}
|
|
.live-summary span + span {
|
|
border-left: 1px solid var(--border-subtle);
|
|
padding-left: 10px;
|
|
}
|
|
.live-summary b {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-width: 28px;
|
|
height: 22px;
|
|
padding: 1px 6px;
|
|
border: 1px solid var(--border-default);
|
|
border-radius: 0;
|
|
color: var(--text-primary);
|
|
background: var(--surface-input);
|
|
font-size: var(--ui-label-size);
|
|
font-variant-numeric: tabular-nums;
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1;
|
|
text-align: center;
|
|
}
|
|
.delimiter-select {
|
|
width: 220px;
|
|
}
|
|
.view-tabs {
|
|
flex: 0 0 auto;
|
|
gap: 0;
|
|
border: 1px solid var(--button-border);
|
|
border-radius: 0;
|
|
overflow: visible;
|
|
background: var(--surface-input);
|
|
}
|
|
.tab-btn {
|
|
flex: 0 0 auto;
|
|
min-width: 72px;
|
|
padding: 2px 8px;
|
|
border: 0;
|
|
border-right: 1px solid var(--button-border);
|
|
border-radius: 0;
|
|
color: var(--button-text);
|
|
background: var(--button-bg);
|
|
font-size: var(--ui-label-size);
|
|
font-weight: var(--fw-medium);
|
|
line-height: 1.15;
|
|
white-space: nowrap;
|
|
transition: background-color .12s ease, color .12s ease;
|
|
}
|
|
.view-tabs .tab-btn:first-child {
|
|
border-radius: 0;
|
|
}
|
|
.view-tabs .tab-btn:last-child {
|
|
border-radius: 0;
|
|
border-right: 0;
|
|
}
|
|
.tab-btn:hover {
|
|
color: var(--button-text);
|
|
background: var(--button-bg-hover);
|
|
}
|
|
.view-tabs .tab-btn.active,
|
|
.view-tabs .tab-btn.active:hover {
|
|
border: 1px solid var(--button-border);
|
|
color: var(--button-marked-text);
|
|
background: var(--button-marked-bg);
|
|
font-weight: 600;
|
|
}
|
|
.export-btn {
|
|
min-width: 44px;
|
|
padding-inline: 8px;
|
|
border-radius: var(--btn-radius);
|
|
border: 1px solid var(--button-border);
|
|
}
|
|
.workspace-btn {
|
|
flex: 0 0 auto;
|
|
min-width: 112px;
|
|
border: 1px solid var(--button-border);
|
|
border-radius: var(--btn-radius);
|
|
color: var(--button-text);
|
|
background: var(--button-bg);
|
|
white-space: nowrap;
|
|
}
|
|
.header-export-row {
|
|
flex: 0 0 auto;
|
|
overflow: visible;
|
|
}
|
|
.toolbar > .btn,
|
|
.toolbar > .icon-btn,
|
|
.toolbar > .delimiter-select {
|
|
flex-shrink: 0;
|
|
}
|
|
.workspace-btn.has-items {
|
|
border-color: var(--button-border);
|
|
color: var(--text);
|
|
background: var(--button-bg);
|
|
opacity: 1;
|
|
}
|
|
.workspace-btn.has-items:hover {
|
|
border-color: var(--button-border);
|
|
background: var(--button-bg-hover);
|
|
}
|
|
.workspace-btn.active {
|
|
border-color: var(--button-border);
|
|
color: var(--button-marked-text);
|
|
background: var(--button-marked-bg);
|
|
font-weight: 600;
|
|
}
|
|
.app-shell > main {
|
|
position: relative;
|
|
display: grid;
|
|
grid-template-columns: 218px minmax(0, 1fr);
|
|
min-height: 0;
|
|
transition: grid-template-columns .18s ease;
|
|
}
|
|
.app-shell.sidebar-collapsed > main {
|
|
grid-template-columns: 0 minmax(0, 1fr);
|
|
}
|
|
aside {
|
|
position: relative;
|
|
z-index: 10;
|
|
min-width: 0;
|
|
min-height: 0;
|
|
background: var(--sidebar);
|
|
overflow: visible;
|
|
}
|
|
.app-sidebar {
|
|
display: flex;
|
|
flex-direction: column;
|
|
min-height: 100%;
|
|
padding: 0;
|
|
}
|
|
.sidebar-theme-panel {
|
|
margin-top: auto;
|
|
padding: 14px 12px;
|
|
}
|
|
.theme-switcher {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 4px;
|
|
padding: 4px;
|
|
border: 1px solid var(--button-border);
|
|
border-radius: 10px;
|
|
background: var(--surface-input);
|
|
}
|
|
.theme-switcher-btn {
|
|
display: grid;
|
|
place-items: center;
|
|
flex: 1 1 0;
|
|
height: 28px;
|
|
padding: 0;
|
|
border: 1px solid transparent;
|
|
border-radius: 7px;
|
|
color: var(--button-text);
|
|
background: transparent;
|
|
box-shadow: none;
|
|
font-size: var(--ui-body-size);
|
|
line-height: 1;
|
|
transition:
|
|
background-color .12s ease,
|
|
color .12s ease,
|
|
border-color .12s ease;
|
|
cursor: pointer;
|
|
}
|
|
.theme-switcher-btn:hover:not(.active) {
|
|
color: var(--button-text);
|
|
background: var(--button-bg-hover);
|
|
}
|
|
.theme-switcher-btn.active {
|
|
border-color: var(--button-border);
|
|
color: var(--button-marked-text);
|
|
background: var(--button-marked-bg);
|
|
box-shadow: none;
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.sidebar-toggle-inline {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 28px;
|
|
height: 28px;
|
|
padding: 0;
|
|
border: 1px solid transparent;
|
|
border-radius: 7px;
|
|
color: var(--button-text);
|
|
background: transparent;
|
|
font-size: 16px;
|
|
font-weight: var(--fw-bold);
|
|
cursor: pointer;
|
|
}
|
|
.sidebar-toggle-inline:hover {
|
|
background: var(--button-bg-hover);
|
|
color: var(--text-primary);
|
|
}
|
|
.sidebar-primary-actions {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
margin: 10px 0 0 0;
|
|
padding: 0 0 12px 10px;
|
|
border-top: 0;
|
|
border-bottom: 0;
|
|
}
|
|
.sidebar-tab-btn {
|
|
position: relative;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 13px;
|
|
width: calc(100% - 10px);
|
|
min-height: 42px;
|
|
padding: 8px 14px;
|
|
border: 1px solid transparent;
|
|
border-radius: 8px;
|
|
color: var(--text-secondary);
|
|
background: transparent;
|
|
box-shadow: none;
|
|
font-size: var(--ui-heading-size);
|
|
font-weight: var(--fw-regular);
|
|
letter-spacing: 0;
|
|
text-align: left;
|
|
text-shadow: none;
|
|
cursor: pointer;
|
|
transition:
|
|
color .15s ease,
|
|
background .15s ease,
|
|
border-color .15s ease;
|
|
}
|
|
.sidebar-tab-btn svg {
|
|
flex: 0 0 22px;
|
|
width: 22px;
|
|
height: 22px;
|
|
color: var(--text-muted);
|
|
}
|
|
.sidebar-tab-btn span {
|
|
min-width: 0;
|
|
}
|
|
.sidebar-tab-btn:hover:not(.active):not(:disabled) {
|
|
color: var(--text-primary);
|
|
background: var(--surface-hover);
|
|
border-color: transparent;
|
|
box-shadow: none;
|
|
transform: none;
|
|
}
|
|
.sidebar-tab-btn:hover:not(.active):not(:disabled) svg {
|
|
color: var(--text-primary);
|
|
}
|
|
.sidebar-tab-btn:active:not(:disabled) {
|
|
color: var(--text-primary);
|
|
background: var(--surface-hover);
|
|
box-shadow: none;
|
|
transform: none;
|
|
}
|
|
.sidebar-tab-btn:disabled {
|
|
opacity: 0.45;
|
|
cursor: not-allowed;
|
|
}
|
|
.sidebar-tab-btn.active,
|
|
.sidebar-tab-btn.active:hover {
|
|
position: relative;
|
|
z-index: 12;
|
|
width: calc(100% + 1px);
|
|
margin-right: -1px;
|
|
border: 1px solid transparent;
|
|
border-right: 1px solid var(--surface-app);
|
|
border-radius: 8px 0 0 8px;
|
|
color: var(--text-primary);
|
|
background: var(--surface-app);
|
|
box-shadow: none;
|
|
outline: 0;
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.sidebar-tab-btn.active svg {
|
|
color: var(--band-surface);
|
|
}
|
|
.app-shell.sidebar-collapsed > main > aside {
|
|
visibility: hidden;
|
|
}
|
|
.sidebar-toggle {
|
|
position: absolute;
|
|
left: 0;
|
|
top: 10px;
|
|
z-index: 30;
|
|
display: grid;
|
|
place-items: center;
|
|
width: 28px;
|
|
height: 28px;
|
|
padding: 0;
|
|
border: 1px solid var(--button-border);
|
|
border-left: 0;
|
|
border-radius: 0;
|
|
color: var(--text-primary);
|
|
background: var(--button-bg);
|
|
transition: background-color .12s ease;
|
|
}
|
|
.sidebar-toggle:hover {
|
|
background: var(--surface-hover);
|
|
}
|
|
.sidebar-collapsed .sidebar-toggle {
|
|
left: 0;
|
|
}
|
|
.workspace {
|
|
display: grid;
|
|
grid-template-rows: minmax(0, 1fr);
|
|
min-width: 0;
|
|
min-height: 0;
|
|
background: var(--sidebar);
|
|
margin: 0;
|
|
padding: 0 12px 12px 0;
|
|
overflow: hidden;
|
|
}
|
|
.workspace.graph-workspace {
|
|
grid-template-rows: minmax(0, 1fr);
|
|
}
|
|
.workbar {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
align-items: center;
|
|
gap: 8px;
|
|
min-width: 0;
|
|
margin: 9px 0 0;
|
|
padding: 8px 16px;
|
|
border: 0;
|
|
background: transparent;
|
|
overflow: hidden;
|
|
}
|
|
.toolbar:disabled,
|
|
.workbar:disabled {
|
|
opacity: .5;
|
|
}
|
|
.toolbar:disabled *,
|
|
.workbar:disabled * {
|
|
pointer-events: none;
|
|
}
|
|
.search-tools {
|
|
grid-column: 1 / -1;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
flex: 1 1 auto;
|
|
flex-wrap: wrap;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
.standard-filter-btn {
|
|
flex: 0 0 auto;
|
|
min-width: 96px;
|
|
margin-left: 0;
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.title-select {
|
|
flex: 0 0 215px;
|
|
width: 215px;
|
|
}
|
|
.sort-select {
|
|
flex: 0 0 345px;
|
|
width: 345px;
|
|
}
|
|
.status-select {
|
|
flex: 0 0 190px;
|
|
width: 190px;
|
|
}
|
|
.search-tail {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
flex: 0 0 100%;
|
|
min-width: 0;
|
|
}
|
|
.sheet-select {
|
|
flex: 0 1 310px;
|
|
min-width: 240px;
|
|
margin-left: 0;
|
|
}
|
|
.work-timeslot-select {
|
|
flex: 0 0 180px;
|
|
width: 180px;
|
|
min-width: 180px;
|
|
margin-left: 0;
|
|
}
|
|
.search-text-group {
|
|
display: flex;
|
|
align-items: center;
|
|
flex: 1 1 280px;
|
|
min-width: 200px;
|
|
max-width: 480px;
|
|
}
|
|
.search-text-group .search-input-wrap {
|
|
flex: 1 1 auto;
|
|
width: 100%;
|
|
min-width: 140px;
|
|
}
|
|
.search-input-wrap {
|
|
position: relative;
|
|
flex: 0 0 150px;
|
|
width: 150px;
|
|
min-width: 150px;
|
|
}
|
|
.search-input {
|
|
width: 100%;
|
|
min-width: 0;
|
|
padding-right: 34px;
|
|
}
|
|
.search-clear-btn {
|
|
position: absolute;
|
|
inset: 1px 1px 1px auto;
|
|
display: grid;
|
|
place-items: center;
|
|
width: 30px;
|
|
padding: 0;
|
|
border: 0;
|
|
border-left: 1px solid var(--line);
|
|
border-radius: 0 2px 2px 0;
|
|
color: var(--muted);
|
|
background: transparent;
|
|
font-size: var(--ui-heading-size);
|
|
}
|
|
.search-clear-btn:hover:not(:disabled) {
|
|
color: var(--heading);
|
|
background: var(--panel-hover);
|
|
}
|
|
.search-clear-btn:disabled {
|
|
opacity: .35;
|
|
}
|
|
.workbar-action {
|
|
display: flex;
|
|
grid-column: 2;
|
|
align-items: center;
|
|
gap: 12px;
|
|
white-space: nowrap;
|
|
color: var(--muted);
|
|
font-size: var(--ui-label-size);
|
|
}
|
|
.workbar-action b {
|
|
color: var(--heading);
|
|
}
|
|
.workbar-action label {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
}
|
|
.status-line {
|
|
position: relative;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: 16px;
|
|
min-width: 0;
|
|
padding: 4px 16px;
|
|
color: var(--muted);
|
|
border: 0;
|
|
font-size: var(--ui-label-size);
|
|
}
|
|
.status-line > span {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
flex: 0 1 auto;
|
|
}
|
|
.status-line-tools {
|
|
position: absolute;
|
|
left: 50%;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
width: min(520px, calc(100% - 32px));
|
|
min-width: 0;
|
|
margin: 0;
|
|
transform: translateX(-50%);
|
|
}
|
|
.status-line .search-text-group {
|
|
flex: 1 1 auto;
|
|
min-width: 200px;
|
|
max-width: none;
|
|
margin: 0;
|
|
}
|
|
.status-line-end {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 16px;
|
|
min-width: 0;
|
|
flex: 0 1 auto;
|
|
}
|
|
.status-line-provenance {
|
|
flex: 0 1 auto;
|
|
cursor: help;
|
|
}
|
|
.viewer {
|
|
position: relative;
|
|
grid-row: 1;
|
|
min-width: 0;
|
|
min-height: 0;
|
|
margin-top: 10px;
|
|
background: var(--surface-app);
|
|
overflow: hidden;
|
|
}
|
|
.pathfinder-view-host {
|
|
min-width: 0;
|
|
min-height: 0;
|
|
height: 100%;
|
|
}
|
|
.viewer.is-joined-top {
|
|
border-top-left-radius: 0;
|
|
}
|
|
.area-landing {
|
|
display: grid;
|
|
place-items: center;
|
|
min-height: 100%;
|
|
padding: 36px;
|
|
}
|
|
.area-landing-card {
|
|
width: min(620px, 100%);
|
|
padding: 38px 42px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
background: var(--panel);
|
|
box-shadow: var(--shadow);
|
|
text-align: center;
|
|
}
|
|
.area-kicker {
|
|
display: block;
|
|
margin-bottom: 10px;
|
|
color: var(--muted);
|
|
font-size: var(--ui-label-size);
|
|
font-weight: var(--ui-label-weight);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
}
|
|
.area-landing-card h2 {
|
|
margin: 0 0 12px;
|
|
color: var(--heading);
|
|
font-size: var(--ui-glyph-size);
|
|
}
|
|
.area-landing-card p {
|
|
max-width: 510px;
|
|
margin: 0 auto 24px;
|
|
color: var(--muted);
|
|
line-height: 1.6;
|
|
}
|
|
.area-landing-card .hidden-input + .btn {
|
|
min-width: 170px;
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.records-layout {
|
|
display: grid;
|
|
grid-template-columns: clamp(420px, 27vw, 520px) minmax(0, 1fr);
|
|
height: 100%;
|
|
min-height: 0;
|
|
background: var(--surface-app);
|
|
}
|
|
.record-list {
|
|
min-width: 0;
|
|
min-height: 0;
|
|
padding: 8px 6px;
|
|
background: var(--surface-app);
|
|
overflow-y: auto;
|
|
scrollbar-color: var(--line-strong) var(--surface-inset);
|
|
scrollbar-width: thin;
|
|
}
|
|
.tile-view-scroll {
|
|
padding: var(--panel-inset);
|
|
}
|
|
.tile-grid {
|
|
box-sizing: border-box;
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(0, var(--tile-content-width)));
|
|
align-content: start;
|
|
justify-content: start;
|
|
gap: var(--segment-gap);
|
|
min-height: 100%;
|
|
padding: var(--segment-inset);
|
|
border: var(--border-hair) solid var(--segment-border);
|
|
border-radius: var(--segment-radius);
|
|
background: var(--segment-surface);
|
|
}
|
|
.table-scroll {
|
|
max-width: 100%;
|
|
overflow: auto;
|
|
background: var(--surface-app);
|
|
}
|
|
.raw-view {
|
|
min-height: 100%;
|
|
padding: var(--panel-inset);
|
|
color: var(--text);
|
|
background: var(--surface-app);
|
|
font: var(--type-table-body-size)/1.55 var(--font-mono);
|
|
}
|
|
@media (max-width: 1500px) {
|
|
.topbar-kpi {
|
|
min-width: 74px;
|
|
padding-inline: 10px;
|
|
}
|
|
.topbar-kpi.kpi-format {
|
|
min-width: 190px;
|
|
}
|
|
.delimiter-select {
|
|
width: 170px;
|
|
}
|
|
.tab-btn {
|
|
min-width: 68px;
|
|
}
|
|
}
|
|
@media (max-width: 1200px) {
|
|
.status-line-tools {
|
|
position: static;
|
|
width: min(520px, 100%);
|
|
margin-left: auto;
|
|
transform: none;
|
|
}
|
|
}
|
|
@media (max-width: 1050px) {
|
|
.workbar {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
}
|
|
.workbar-action {
|
|
grid-column: 1;
|
|
justify-content: flex-end;
|
|
}
|
|
.records-layout {
|
|
grid-template-columns: minmax(320px, 42%) minmax(0, 1fr);
|
|
}
|
|
}
|
|
@media (max-width: 760px) {
|
|
.app-shell > main {
|
|
grid-template-columns: 0 minmax(0, 1fr);
|
|
}
|
|
.app-shell > main > aside {
|
|
visibility: hidden;
|
|
}
|
|
.sidebar-toggle {
|
|
left: 0;
|
|
}
|
|
.records-layout {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.record-list {
|
|
max-height: 280px;
|
|
border-right: 0;
|
|
border-bottom: 1px solid var(--line);
|
|
}
|
|
.tile-grid {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
}
|
|
}
|
|
.app-sidebar {
|
|
display: flex;
|
|
flex-direction: column;
|
|
min-height: 100%;
|
|
padding: 0;
|
|
}
|
|
.sidebar-primary-actions {
|
|
order: 0;
|
|
}
|
|
.sidebar-severity-rack {
|
|
order: 1;
|
|
}
|
|
.sidebar-theme-panel {
|
|
order: 2;
|
|
margin-top: auto;
|
|
padding: 14px 12px;
|
|
border-top: 1px solid var(--line);
|
|
}
|
|
.connection-indicator {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 3px;
|
|
flex: 0 0 auto;
|
|
}
|
|
.connection-state-square {
|
|
display: block;
|
|
width: 9px;
|
|
height: 9px;
|
|
border-radius: 0;
|
|
opacity: .2;
|
|
}
|
|
.connection-state-square.is-offline {
|
|
background: var(--state-offline);
|
|
}
|
|
.connection-state-square.is-online {
|
|
background: var(--state-online);
|
|
}
|
|
.connection-connected .connection-state-square.is-online {
|
|
opacity: 1;
|
|
}
|
|
.connection-unavailable .connection-state-square.is-offline,
|
|
.connection-checking .connection-state-square.is-offline {
|
|
opacity: 1;
|
|
}
|
|
.area-topbar {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 14px;
|
|
flex: 1;
|
|
min-width: 0;
|
|
}
|
|
.area-topbar strong {
|
|
margin-right: auto;
|
|
color: var(--heading);
|
|
font-size: var(--type-h1-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.1;
|
|
letter-spacing: -.04em;
|
|
}
|
|
.area-topbar-heading {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 18px;
|
|
min-width: 0;
|
|
margin-right: auto;
|
|
overflow: hidden;
|
|
}
|
|
.area-topbar-heading > strong {
|
|
flex: 0 0 auto;
|
|
margin-right: 0;
|
|
}
|
|
.area-client-context-inline {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
min-width: 0;
|
|
}
|
|
.area-client-marker {
|
|
flex: 0 0 auto;
|
|
color: var(--state-active);
|
|
}
|
|
.area-client-marker .triangle-icon {
|
|
width: 24px;
|
|
height: 24px;
|
|
}
|
|
.area-client-name {
|
|
min-width: 0;
|
|
overflow: hidden;
|
|
color: var(--heading);
|
|
font-size: var(--type-h3-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.2;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.pathfinder-filter-trail {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 12px;
|
|
min-width: 0;
|
|
color: var(--heading);
|
|
font-size: calc(var(--fs-xl) * 1.5);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.15;
|
|
white-space: nowrap;
|
|
}
|
|
.pathfinder-filter-trail-marker,
|
|
.pathfinder-filter-trail-plus {
|
|
flex: 0 0 auto;
|
|
color: var(--state-active);
|
|
}
|
|
.pathfinder-filter-trail-marker {
|
|
display: inline-flex;
|
|
}
|
|
.pathfinder-filter-trail-marker .triangle-icon {
|
|
width: 28px;
|
|
height: 28px;
|
|
}
|
|
.pathfinder-filter-trail-item {
|
|
min-width: 0;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
.workspace-data-hub,
|
|
.workspace-dashboard,
|
|
.workspace-graph,
|
|
.workspace-db-structure,
|
|
.workspace-results {
|
|
grid-template-rows: minmax(0, 1fr);
|
|
}
|
|
.viewer.app-area-graph {
|
|
background-color: var(--surface-app);
|
|
background-image: var(--app-grid-pattern);
|
|
background-size: var(--app-grid-size);
|
|
}
|
|
@media (max-width: 1500px) {
|
|
.app-shell-work .delimiter-select {
|
|
display: none;
|
|
}
|
|
}
|
|
|
|
/* src/styles/components.css */
|
|
mark,
|
|
.search-highlight {
|
|
background-color: var(--search-highlight-bg);
|
|
color: var(--search-highlight-text);
|
|
border-radius: 2px;
|
|
padding: 0 2px;
|
|
font-weight: 600;
|
|
}
|
|
.empty-state {
|
|
display: grid;
|
|
place-items: center;
|
|
min-height: 55vh;
|
|
padding: 40px;
|
|
color: var(--muted);
|
|
text-align: center;
|
|
}
|
|
.empty-state-brand {
|
|
min-height: 100%;
|
|
}
|
|
.work-filter-empty {
|
|
padding: var(--panel-inset);
|
|
color: var(--muted);
|
|
}
|
|
.work-filter-empty p {
|
|
font-size: var(--type-body-size);
|
|
}
|
|
.empty-state-content {
|
|
display: grid;
|
|
justify-items: center;
|
|
gap: 24px;
|
|
width: min(620px, 100%);
|
|
}
|
|
.empty-brand-mark {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 18px;
|
|
opacity: .6;
|
|
}
|
|
.empty-brand-logo {
|
|
position: relative;
|
|
display: block;
|
|
width: 82px;
|
|
height: 82px;
|
|
}
|
|
.empty-brand-logo img {
|
|
position: absolute;
|
|
inset: 0;
|
|
width: 82px;
|
|
height: 82px;
|
|
object-fit: contain;
|
|
}
|
|
.empty-brand-mark strong {
|
|
color: var(--heading);
|
|
font-size: clamp(34px, 4vw, 58px);
|
|
font-weight: var(--fw-bold);
|
|
line-height: 1;
|
|
letter-spacing: .08em;
|
|
}
|
|
.empty-open-data {
|
|
position: relative;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 13px;
|
|
width: min(310px, 100%);
|
|
min-height: 50px;
|
|
padding: 10px 20px;
|
|
border: 0;
|
|
border-radius: 0 var(--legacy-radius-md) var(--legacy-radius-md) 0;
|
|
color: var(--text);
|
|
background: var(--panel-raised);
|
|
box-shadow: none;
|
|
font-size: var(--ui-heading-size);
|
|
font-weight: var(--fw-semibold);
|
|
text-align: left;
|
|
}
|
|
.empty-open-data::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0 auto 0 0;
|
|
width: 4px;
|
|
background: var(--marking-color);
|
|
}
|
|
.empty-open-data svg {
|
|
flex: 0 0 25px;
|
|
width: 25px;
|
|
height: 25px;
|
|
}
|
|
.empty-open-data:hover {
|
|
color: var(--heading);
|
|
background: var(--panel-hover);
|
|
}
|
|
.empty-open-data:active {
|
|
background: var(--panel-soft);
|
|
}
|
|
.empty-supported-formats {
|
|
color: var(--muted);
|
|
font-size: var(--ui-body-size);
|
|
font-weight: var(--fw-regular);
|
|
line-height: 1.8;
|
|
letter-spacing: .025em;
|
|
}
|
|
.about-sections {
|
|
display: grid;
|
|
gap: var(--space-5);
|
|
}
|
|
.about-brand {
|
|
display: grid;
|
|
place-items: center;
|
|
min-height: 172px;
|
|
}
|
|
.about-brand img {
|
|
display: block;
|
|
width: 160px;
|
|
height: 160px;
|
|
object-fit: contain;
|
|
}
|
|
.about-sections section {
|
|
display: grid;
|
|
gap: var(--space-3);
|
|
}
|
|
.about-sections h3 {
|
|
margin: 0;
|
|
font-size: var(--type-h3-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.about-sections dl {
|
|
display: grid;
|
|
gap: 0;
|
|
margin: 0;
|
|
}
|
|
.about-detail {
|
|
display: grid;
|
|
grid-template-columns: minmax(130px, .8fr) minmax(0, 1.2fr);
|
|
gap: var(--space-3);
|
|
padding: var(--space-2) 0;
|
|
border-bottom: 1px solid var(--line);
|
|
}
|
|
.about-detail dt {
|
|
color: var(--muted);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.about-detail dd {
|
|
min-width: 0;
|
|
margin: 0;
|
|
overflow-wrap: anywhere;
|
|
font-size: var(--type-table-body-size);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.about-credits {
|
|
color: var(--muted);
|
|
font-size: var(--type-meta-size);
|
|
text-align: center;
|
|
}
|
|
.panel-loading-state {
|
|
box-sizing: border-box;
|
|
display: grid;
|
|
place-items: center;
|
|
width: 100%;
|
|
min-height: min(560px, 62vh);
|
|
color: var(--muted);
|
|
}
|
|
.panel-loading-state-content {
|
|
display: grid;
|
|
justify-items: center;
|
|
gap: var(--space-4);
|
|
text-align: center;
|
|
}
|
|
.panel-loading-state-message {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: var(--space-3);
|
|
color: var(--text);
|
|
font-size: var(--type-body-size);
|
|
line-height: var(--lh-prose);
|
|
}
|
|
.panel-loading-state.is-compact {
|
|
min-height: 280px;
|
|
}
|
|
.finding-card {
|
|
position: relative;
|
|
display: grid;
|
|
grid-template-columns: 38px minmax(0, 1fr) 36px;
|
|
gap: 12px;
|
|
min-width: 0;
|
|
min-height: 238px;
|
|
padding: 22px 18px;
|
|
border: var(--border-hair) solid var(--line);
|
|
border-radius: var(--legacy-radius-md);
|
|
color: var(--text);
|
|
background: var(--panel-raised);
|
|
box-shadow: var(--shadow-raised);
|
|
cursor: pointer;
|
|
transition:
|
|
border-color .16s ease,
|
|
background-color .16s ease,
|
|
box-shadow .16s ease,
|
|
transform .16s ease;
|
|
}
|
|
.finding-card:hover,
|
|
.finding-card:focus-visible {
|
|
border-color: var(--line-strong);
|
|
background: var(--panel-hover);
|
|
box-shadow: var(--shadow-raised-hover);
|
|
transform: translateY(-2px);
|
|
}
|
|
.finding-card.active {
|
|
border-color: var(--button-border);
|
|
color: var(--button-marked-text);
|
|
background: var(--button-marked-bg);
|
|
}
|
|
.finding-card.is-bookmarked {
|
|
outline: 2px solid var(--severity, var(--info));
|
|
outline-offset: -2px;
|
|
}
|
|
.record-list .finding-card {
|
|
position: relative;
|
|
grid-template-columns: 32px minmax(0, 1fr);
|
|
gap: 12px;
|
|
min-height: 78px;
|
|
margin-bottom: 0;
|
|
padding: 14px 16px;
|
|
scroll-margin-block: 7px;
|
|
border: 0;
|
|
border-radius: 0;
|
|
background: var(--panel-raised);
|
|
box-shadow: none;
|
|
transform: none;
|
|
}
|
|
.record-list .finding-card::after {
|
|
content: "";
|
|
position: absolute;
|
|
bottom: 0;
|
|
left: 14px;
|
|
right: 14px;
|
|
height: 1px;
|
|
background: var(--border-subtle);
|
|
pointer-events: none;
|
|
}
|
|
.record-list .finding-card.active::after,
|
|
.record-list .finding-card:last-child::after {
|
|
display: none;
|
|
}
|
|
.record-list .finding-card:hover,
|
|
.record-list .finding-card:focus-visible {
|
|
border-color: transparent;
|
|
background: var(--panel-hover);
|
|
box-shadow: none;
|
|
transform: none;
|
|
}
|
|
.record-list .finding-card.active,
|
|
.record-list .finding-card.active:hover,
|
|
.record-list .finding-card.active:focus-visible {
|
|
z-index: 1;
|
|
outline: 0;
|
|
border-color: transparent;
|
|
border-left: 0;
|
|
color: var(--state-selected-flat-text);
|
|
background: var(--state-selected-flat);
|
|
box-shadow: none;
|
|
}
|
|
.record-list .finding-card.active h3,
|
|
.record-list .finding-card.active .finding-card-status {
|
|
color: var(--state-selected-flat-text);
|
|
}
|
|
.record-list .finding-card-actions,
|
|
.record-list .finding-badges {
|
|
display: none;
|
|
}
|
|
.record-list .finding-card h3 {
|
|
margin-top: 1px;
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-content-medium);
|
|
line-height: 1.35;
|
|
}
|
|
.finding-card-status {
|
|
display: none;
|
|
}
|
|
.record-list .finding-card-status {
|
|
display: block;
|
|
margin: 5px 0 0;
|
|
color: var(--muted);
|
|
font-size: var(--ui-control-size);
|
|
line-height: 1.2;
|
|
}
|
|
.finding-hex {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 29px;
|
|
height: 34px;
|
|
margin-top: 1px;
|
|
color: var(--sev-on);
|
|
background: var(--severity, var(--muted));
|
|
clip-path: polygon(50% 0, 94% 24%, 94% 76%, 50% 100%, 6% 76%, 6% 24%);
|
|
font-size: var(--ui-control-size);
|
|
font-weight: var(--fw-bold);
|
|
}
|
|
.finding-hex > span {
|
|
transform: translate(-3px, 1px);
|
|
}
|
|
.reader-title-hex {
|
|
position: relative;
|
|
display: block;
|
|
width: 30px;
|
|
height: 34px;
|
|
margin-top: 1px;
|
|
background: var(--severity, var(--muted));
|
|
clip-path: polygon(50% 0, 94% 24%, 94% 76%, 50% 100%, 6% 76%, 6% 24%);
|
|
}
|
|
.reader-title-hex::after {
|
|
content: "";
|
|
position: absolute;
|
|
left: 2px;
|
|
top: 14px;
|
|
width: 8px;
|
|
height: 4px;
|
|
border-left: 2px solid var(--sev-on);
|
|
border-bottom: 2px solid var(--sev-on);
|
|
transform: rotate(-45deg);
|
|
pointer-events: none;
|
|
}
|
|
.finding-card h3 {
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.42;
|
|
overflow-wrap: normal;
|
|
word-break: normal;
|
|
hyphens: manual;
|
|
}
|
|
.workspace-label {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
margin-left: 6px;
|
|
padding: 1px 6px;
|
|
border: 1px solid var(--border-default);
|
|
border-radius: 0;
|
|
color: var(--text-primary);
|
|
background: var(--surface-input);
|
|
font-size: var(--ui-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
font-variant-numeric: tabular-nums;
|
|
vertical-align: middle;
|
|
}
|
|
.finding-badges,
|
|
.mitre-line {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 8px;
|
|
margin-top: 16px;
|
|
}
|
|
.finding-card-actions {
|
|
display: grid;
|
|
align-content: start;
|
|
gap: 8px;
|
|
}
|
|
.bookmark-btn {
|
|
color: var(--button-text);
|
|
border: 1px solid var(--button-border);
|
|
border-radius: var(--btn-radius);
|
|
background: var(--button-bg);
|
|
}
|
|
.bookmark-btn[aria-pressed=true] {
|
|
border-color: var(--button-border);
|
|
color: var(--button-marked-text);
|
|
background: var(--button-marked-bg);
|
|
font-weight: 600;
|
|
}
|
|
.results-btn,
|
|
.results-btn:hover {
|
|
border: 1px solid var(--button-border);
|
|
border-radius: var(--btn-radius);
|
|
color: var(--button-text);
|
|
background: var(--button-bg);
|
|
font-weight: var(--fw-medium);
|
|
}
|
|
.results-btn.is-open,
|
|
.results-btn.is-open:hover {
|
|
border: 1px solid var(--result-color);
|
|
color: var(--button-accent-text);
|
|
background: var(--result-color);
|
|
font-weight: 600;
|
|
}
|
|
.status-badge {
|
|
border: var(--border-hair) solid var(--line);
|
|
}
|
|
.outcome-mark {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--legacy-space-1);
|
|
color: var(--muted);
|
|
}
|
|
.outcome-mark::before {
|
|
content: "\2013";
|
|
}
|
|
.outcome-mark[data-outcome=fail] {
|
|
color: var(--outcome-fail);
|
|
}
|
|
.outcome-mark[data-outcome=fail]::before {
|
|
content: "\25cf";
|
|
}
|
|
.outcome-mark[data-outcome=pass] {
|
|
color: var(--outcome-pass);
|
|
}
|
|
.outcome-mark[data-outcome=pass]::before {
|
|
content: "\25cb";
|
|
}
|
|
.outcome-mark[data-outcome=warning] {
|
|
color: var(--outcome-warning);
|
|
}
|
|
.outcome-mark[data-outcome=warning]::before {
|
|
content: "\25d0";
|
|
}
|
|
.outcome-mark[data-outcome=execution_error] {
|
|
color: var(--outcome-fail);
|
|
}
|
|
.outcome-mark[data-outcome=execution_error]::before {
|
|
content: "\2715";
|
|
}
|
|
.mitre-badge {
|
|
border: var(--border-hair) solid var(--line);
|
|
color: var(--text);
|
|
background: var(--surface-inset);
|
|
}
|
|
.severity-critical {
|
|
--severity: var(--critical);
|
|
}
|
|
.severity-high {
|
|
--severity: var(--high);
|
|
}
|
|
.severity-medium {
|
|
--severity: var(--medium);
|
|
}
|
|
.severity-low {
|
|
--severity: var(--low);
|
|
}
|
|
.severity-info {
|
|
--severity: var(--info);
|
|
}
|
|
.finding-reader {
|
|
min-width: 0;
|
|
min-height: 0;
|
|
padding: 34px 0 60px;
|
|
overflow-y: auto;
|
|
}
|
|
.finding-reader > * {
|
|
width: min(834px, calc(100% - var(--reader-inset) - var(--legacy-space-6)));
|
|
margin-left: var(--reader-inset);
|
|
margin-right: auto;
|
|
}
|
|
.reader-nav {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 70px;
|
|
margin-bottom: 48px;
|
|
color: var(--muted);
|
|
font-size: var(--ui-value-size);
|
|
}
|
|
.reader-nav div {
|
|
display: flex;
|
|
gap: 20px;
|
|
}
|
|
.reader-nav button {
|
|
border: 0;
|
|
color: var(--text);
|
|
background: transparent;
|
|
font-size: var(--ui-glyph-size);
|
|
}
|
|
.reader-heading {
|
|
display: grid;
|
|
grid-template-columns: auto minmax(0, 1fr) auto;
|
|
gap: var(--legacy-space-3) 16px;
|
|
align-items: start;
|
|
padding-bottom: 28px;
|
|
border-bottom: 1px solid var(--line);
|
|
}
|
|
.reader-heading h2 {
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--type-detail-title-size);
|
|
font-weight: var(--ui-strong-weight);
|
|
line-height: 1.3;
|
|
letter-spacing: 0;
|
|
overflow-wrap: normal;
|
|
word-break: normal;
|
|
hyphens: manual;
|
|
}
|
|
.reader-heading-actions {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
grid-column: 1 / -1;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
gap: 10px;
|
|
align-self: center;
|
|
}
|
|
.policy-search-key {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
min-width: min(280px, 100%);
|
|
margin-right: auto;
|
|
color: var(--muted);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.policy-search-key > div {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: var(--space-1) var(--space-3);
|
|
}
|
|
.policy-search-key code {
|
|
width: fit-content;
|
|
max-width: 100%;
|
|
color: var(--heading);
|
|
font-family: var(--font-mono);
|
|
font-size: var(--type-table-body-size);
|
|
font-weight: var(--fw-regular);
|
|
overflow-wrap: anywhere;
|
|
user-select: text;
|
|
}
|
|
.accepted-risk-trigger {
|
|
grid-column: 3;
|
|
grid-row: 1;
|
|
display: grid;
|
|
gap: 4px;
|
|
}
|
|
.accepted-risk-trigger small {
|
|
font-size: var(--type-meta-size);
|
|
font-weight: var(--fw-regular);
|
|
}
|
|
.dialog-window.risk-acceptance-dialog {
|
|
width: min(1040px, 100%);
|
|
}
|
|
.risk-acceptance-form {
|
|
display: grid;
|
|
gap: 16px;
|
|
}
|
|
.risk-acceptance-form p {
|
|
margin: 0;
|
|
font-size: var(--type-body-size);
|
|
line-height: 1.5;
|
|
}
|
|
.risk-acceptance-context {
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.risk-acceptance-note {
|
|
color: var(--muted);
|
|
}
|
|
.risk-acceptance-fields {
|
|
min-width: 0;
|
|
display: grid;
|
|
gap: 24px;
|
|
margin: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
}
|
|
.risk-acceptance-fields h3,
|
|
.risk-acceptance-history h3 {
|
|
margin: 0 0 12px;
|
|
font-size: var(--type-h3-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.risk-acceptance-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 16px;
|
|
}
|
|
.risk-acceptance-grid label {
|
|
min-width: 0;
|
|
display: grid;
|
|
align-content: start;
|
|
gap: 6px;
|
|
}
|
|
.risk-acceptance-grid label > span {
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.risk-acceptance-grid small {
|
|
font-size: var(--type-meta-size);
|
|
color: var(--muted);
|
|
line-height: 1.5;
|
|
}
|
|
.risk-acceptance-grid input,
|
|
.risk-acceptance-grid textarea,
|
|
.risk-acceptance-grid select {
|
|
width: 100%;
|
|
min-width: 0;
|
|
padding: 8px 11px;
|
|
border: var(--border-hair) solid var(--line-strong);
|
|
border-radius: var(--legacy-radius-sm);
|
|
color: var(--text);
|
|
background: var(--surface-inset);
|
|
font: inherit;
|
|
font-size: var(--type-body-size);
|
|
}
|
|
.risk-acceptance-grid textarea {
|
|
min-height: 96px;
|
|
resize: vertical;
|
|
}
|
|
.risk-acceptance-confirm {
|
|
display: flex;
|
|
align-items: start;
|
|
gap: 10px;
|
|
font-size: var(--type-body-size);
|
|
line-height: 1.5;
|
|
}
|
|
.risk-acceptance-confirm input {
|
|
flex: 0 0 auto;
|
|
margin-top: 5px;
|
|
}
|
|
.risk-acceptance-actions {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 10px;
|
|
}
|
|
.risk-acceptance-history details {
|
|
padding: 12px 0;
|
|
border-top: var(--border-hair) solid var(--line);
|
|
}
|
|
.risk-acceptance-history summary {
|
|
cursor: pointer;
|
|
font-size: var(--type-body-size);
|
|
}
|
|
.risk-acceptance-history dl {
|
|
display: grid;
|
|
gap: 12px;
|
|
}
|
|
.risk-acceptance-history dt {
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.risk-acceptance-history dd {
|
|
margin: 4px 0 0;
|
|
white-space: pre-wrap;
|
|
font-size: var(--type-body-size);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.dialog-window.risk-acceptance-review-dialog {
|
|
width: min(720px, 100%);
|
|
}
|
|
.risk-acceptance-review {
|
|
display: grid;
|
|
gap: var(--space-5);
|
|
}
|
|
.risk-acceptance-review-intro {
|
|
padding-left: var(--space-4);
|
|
border-left: var(--bw-emphasis) solid var(--marking-color);
|
|
}
|
|
.risk-acceptance-review-intro strong {
|
|
display: block;
|
|
color: var(--heading);
|
|
font-size: var(--type-h3-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.risk-acceptance-review-intro p {
|
|
margin: var(--space-1) 0 0;
|
|
color: var(--muted);
|
|
font-size: var(--type-body-size);
|
|
}
|
|
.risk-acceptance-review-meta,
|
|
.risk-acceptance-review-group dl {
|
|
display: grid;
|
|
gap: 0;
|
|
margin: 0;
|
|
}
|
|
.risk-acceptance-review-meta > div,
|
|
.risk-acceptance-review-group dl > div {
|
|
display: grid;
|
|
grid-template-columns: minmax(150px, .35fr) minmax(0, 1fr);
|
|
gap: var(--space-4);
|
|
padding: var(--space-2) 0;
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
}
|
|
.risk-acceptance-review dt {
|
|
color: var(--muted);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.risk-acceptance-review dd {
|
|
min-width: 0;
|
|
margin: 0;
|
|
color: var(--text);
|
|
font-size: var(--type-table-body-size);
|
|
line-height: 1.5;
|
|
white-space: pre-wrap;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.risk-acceptance-review-group h3 {
|
|
margin: 0;
|
|
padding-bottom: var(--space-2);
|
|
border-bottom: var(--border-hair) solid var(--line-strong);
|
|
color: var(--heading);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.risk-acceptance-review-confirmation {
|
|
margin: 0;
|
|
padding-left: var(--space-3);
|
|
border-left: var(--bw-emphasis) solid var(--success);
|
|
color: var(--text);
|
|
font-size: var(--type-body-size);
|
|
line-height: 1.5;
|
|
}
|
|
.risk-acceptance-review-actions {
|
|
display: flex;
|
|
gap: var(--space-3);
|
|
justify-content: flex-end;
|
|
}
|
|
@media (max-width: 620px) {
|
|
.accepted-risk-trigger {
|
|
grid-column: 2;
|
|
grid-row: 2;
|
|
justify-self: start;
|
|
}
|
|
.risk-acceptance-grid {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
}
|
|
}
|
|
.bookmark-label {
|
|
color: var(--text);
|
|
font-size: var(--ui-control-size);
|
|
font-weight: var(--ui-label-weight);
|
|
}
|
|
.results-detail-btn {
|
|
min-width: 136px;
|
|
}
|
|
.dashboard-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: 12px;
|
|
margin: 28px auto 24px;
|
|
}
|
|
.dashboard-grid label,
|
|
.review-grid > label {
|
|
display: grid;
|
|
gap: 7px;
|
|
color: var(--heading);
|
|
font-size: var(--ui-value-size);
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: 0;
|
|
text-transform: none;
|
|
}
|
|
.dashboard-grid input,
|
|
.dashboard-grid select,
|
|
.review-grid textarea {
|
|
width: 100%;
|
|
min-height: 39px;
|
|
padding: 8px 11px;
|
|
border: var(--border-hair) solid var(--line-strong);
|
|
border-radius: var(--legacy-radius-sm);
|
|
color: var(--text);
|
|
background-color: var(--surface-inset);
|
|
text-transform: none;
|
|
}
|
|
.reader-summary,
|
|
.review-grid,
|
|
.all-fields {
|
|
margin-top: 14px;
|
|
padding: 20px 0;
|
|
border: 0;
|
|
border-bottom: 1px solid var(--line);
|
|
background: transparent;
|
|
}
|
|
.reader-summary h3 {
|
|
margin-bottom: var(--legacy-space-5);
|
|
color: var(--heading);
|
|
font-size: var(--type-h3-size);
|
|
text-transform: none;
|
|
}
|
|
.reader-summary h4 {
|
|
margin: 0 0 7px;
|
|
color: var(--heading);
|
|
font-size: var(--ui-reading-size);
|
|
text-transform: uppercase;
|
|
}
|
|
.reader-summary > div {
|
|
padding: 0 0 15px;
|
|
margin: 0 0 15px;
|
|
border-bottom: 1px solid var(--line);
|
|
}
|
|
.reader-summary > div:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
.reader-summary > .policy-value-comparison {
|
|
display: grid;
|
|
gap: var(--legacy-space-2);
|
|
padding: 0;
|
|
border: 0;
|
|
}
|
|
.policy-value-block {
|
|
min-width: 0;
|
|
padding: var(--legacy-space-3) var(--legacy-space-4);
|
|
border-left: 4px solid var(--line-strong);
|
|
background: var(--panel-soft);
|
|
}
|
|
.policy-value-comparison[data-outcome=fail] .policy-value-block[data-value=configured] {
|
|
border-left-color: var(--critical);
|
|
background: color-mix(in srgb, var(--critical) 8%, transparent);
|
|
}
|
|
.policy-value-comparison[data-outcome=pass] .policy-value-block[data-value=configured],
|
|
.policy-value-block[data-value=expected],
|
|
.reader-summary > .reader-remediation {
|
|
border-left-color: var(--success);
|
|
background: color-mix(in srgb, var(--success) 8%, transparent);
|
|
}
|
|
.reader-summary > .reader-remediation {
|
|
padding: var(--legacy-space-3) var(--legacy-space-4);
|
|
border-left-width: 4px;
|
|
border-left-style: solid;
|
|
border-bottom: 0;
|
|
}
|
|
.policy-value-block h4 {
|
|
margin-bottom: var(--legacy-space-2);
|
|
text-transform: none;
|
|
}
|
|
.policy-value-comparison[data-outcome=historical] .policy-value-block {
|
|
border-left-color: var(--line-strong);
|
|
background: var(--panel-soft);
|
|
}
|
|
.policy-evaluation-warning {
|
|
border-left: var(--bw-emphasis) solid var(--warning);
|
|
padding: var(--tile-inset);
|
|
}
|
|
.policy-evaluation-warning p {
|
|
margin: 0;
|
|
font-size: var(--type-body-size);
|
|
}
|
|
.policy-evaluation-warning h4 {
|
|
text-transform: none;
|
|
}
|
|
.policy-value-block .rich-text-value {
|
|
white-space: pre-wrap;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.policy-guidance-text {
|
|
white-space: pre-wrap;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.policy-guidance-text .policy-value-emphasis {
|
|
font-weight: var(--fw-bold);
|
|
}
|
|
.policy-source-evidence {
|
|
display: grid;
|
|
gap: var(--space-3);
|
|
min-width: 0;
|
|
}
|
|
.policy-source-evidence h4 {
|
|
margin: 0;
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-semibold);
|
|
text-transform: none;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.policy-source-evidence p {
|
|
margin: 0;
|
|
}
|
|
.policy-source-notice {
|
|
font-size: var(--type-body-size);
|
|
line-height: 1.5;
|
|
}
|
|
.policy-source-groups {
|
|
min-width: 0;
|
|
border-top: var(--border-hair) solid var(--line-strong);
|
|
}
|
|
.policy-source-group {
|
|
display: grid;
|
|
gap: var(--space-2);
|
|
min-width: 0;
|
|
padding: var(--space-4) var(--space-3);
|
|
border-bottom: var(--border-hair) solid var(--line-strong);
|
|
background: transparent;
|
|
}
|
|
.policy-source-group__header {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
}
|
|
.policy-source-group h5 {
|
|
min-width: 0;
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.4;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.policy-source-group__badge {
|
|
width: fit-content;
|
|
padding: 3px var(--space-2);
|
|
font-size: var(--type-badge-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.policy-source-group__badge.is-review {
|
|
border: var(--border-hair) solid color-mix(in srgb, var(--warning) 45%, var(--line));
|
|
color: var(--text);
|
|
background: color-mix(in srgb, var(--warning) 10%, var(--tile-surface));
|
|
}
|
|
.policy-source-group__backup {
|
|
color: var(--muted);
|
|
font-size: var(--type-meta-size);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.policy-source-observation {
|
|
display: grid;
|
|
gap: var(--space-2);
|
|
min-width: 0;
|
|
}
|
|
.policy-source-observation hr {
|
|
width: 100%;
|
|
margin: var(--space-2) 0;
|
|
border: 0;
|
|
border-top: var(--border-hair) solid var(--line-strong);
|
|
}
|
|
.policy-source-reference {
|
|
width: fit-content;
|
|
max-width: 100%;
|
|
padding: 8px var(--space-2);
|
|
border: var(--border-hair) solid var(--line);
|
|
background: var(--tile-surface);
|
|
font-size: var(--type-table-body-size);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.policy-source-sequence {
|
|
color: var(--muted);
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.policy-source-value {
|
|
font-size: var(--type-body-size);
|
|
line-height: 1.55;
|
|
}
|
|
.policy-source-deviation-value {
|
|
display: inline-block;
|
|
width: fit-content;
|
|
padding: 1px 5px;
|
|
border-left: var(--bw-emphasis) solid var(--critical);
|
|
background: color-mix(in srgb, var(--critical) 14%, transparent);
|
|
}
|
|
.rich-text-table.result-evidence-table td {
|
|
white-space: pre-wrap;
|
|
overflow-wrap: anywhere;
|
|
font-size: var(--type-table-body-size);
|
|
}
|
|
.result-evidence-table td.result-evidence-difference {
|
|
border-left: 3px solid var(--warning);
|
|
background: color-mix(in srgb, var(--warning) 8%, transparent);
|
|
font-weight: var(--ui-strong-weight);
|
|
}
|
|
.variant-comparison {
|
|
display: grid;
|
|
gap: var(--space-5);
|
|
min-width: 0;
|
|
}
|
|
.variant-comparison__header {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
}
|
|
.variant-comparison__eyebrow {
|
|
margin: 0;
|
|
color: var(--warning);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
text-transform: uppercase;
|
|
}
|
|
.variant-comparison__header h3 {
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--type-detail-title-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.35;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.variant-comparison__scope {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.variant-comparison__notice {
|
|
padding: var(--space-4);
|
|
border-left: 4px solid var(--warning);
|
|
background: color-mix(in srgb, var(--warning) 8%, transparent);
|
|
}
|
|
.variant-comparison__notice.is-duplicate {
|
|
border-left-color: var(--info);
|
|
background: color-mix(in srgb, var(--info) 8%, transparent);
|
|
}
|
|
.variant-comparison__notice strong {
|
|
display: block;
|
|
margin-bottom: var(--space-1);
|
|
color: var(--heading);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.variant-comparison__notice p {
|
|
margin: 0;
|
|
color: var(--text);
|
|
font-size: var(--type-body-size);
|
|
line-height: 1.55;
|
|
}
|
|
.variant-comparison__notice p + p {
|
|
margin-top: var(--space-1);
|
|
color: var(--muted);
|
|
}
|
|
.variant-comparison__setting h4,
|
|
.variant-comparison__variants h4 {
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.variant-comparison dt {
|
|
color: var(--muted);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.variant-comparison__value {
|
|
min-width: 0;
|
|
}
|
|
.variant-comparison__value > .technical-path {
|
|
font-size: var(--type-table-body-size);
|
|
}
|
|
.variant-comparison__literal {
|
|
width: fit-content;
|
|
max-width: 100%;
|
|
padding: var(--space-2);
|
|
color: var(--text);
|
|
background: var(--surface-inset);
|
|
font-family: var(--font-path);
|
|
font-size: var(--type-body-size);
|
|
white-space: pre-wrap;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.variant-comparison__value-note {
|
|
color: var(--muted);
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.variant-comparison__setting dl > div,
|
|
.variant-comparison__technical dl > div {
|
|
display: grid;
|
|
grid-template-columns: minmax(112px, .2fr) minmax(0, 1fr);
|
|
gap: var(--space-3);
|
|
align-items: start;
|
|
}
|
|
.variant-comparison dd {
|
|
min-width: 0;
|
|
margin: 0;
|
|
color: var(--text);
|
|
font-size: var(--type-table-body-size);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.variant-comparison__sources,
|
|
.variant-comparison__technical {
|
|
min-width: 0;
|
|
color: var(--text);
|
|
}
|
|
.variant-comparison__sources {
|
|
display: grid;
|
|
gap: var(--space-2);
|
|
}
|
|
.variant-comparison__sources > .technical-path {
|
|
display: block;
|
|
width: 100%;
|
|
box-sizing: border-box;
|
|
}
|
|
.variant-comparison__technical > summary {
|
|
width: fit-content;
|
|
cursor: pointer;
|
|
color: var(--heading);
|
|
font-size: var(--type-button-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.variant-comparison__setting {
|
|
display: grid;
|
|
gap: var(--space-3);
|
|
min-width: 0;
|
|
}
|
|
.variant-comparison__setting dl {
|
|
display: grid;
|
|
gap: var(--space-2);
|
|
margin: 0;
|
|
}
|
|
.variant-comparison__variants {
|
|
display: grid;
|
|
gap: var(--space-3);
|
|
min-width: 0;
|
|
}
|
|
.variant-comparison__variants > p {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
font-size: var(--type-body-size);
|
|
line-height: 1.55;
|
|
}
|
|
.variant-comparison__table-wrap {
|
|
min-width: 0;
|
|
width: 100%;
|
|
overflow-x: auto;
|
|
}
|
|
.variant-comparison__table {
|
|
width: 100%;
|
|
min-width: 680px;
|
|
border-collapse: collapse;
|
|
table-layout: auto;
|
|
color: var(--text);
|
|
background: var(--tile-surface);
|
|
}
|
|
.variant-comparison__table th,
|
|
.variant-comparison__table td {
|
|
padding: var(--space-3);
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
text-align: left;
|
|
vertical-align: top;
|
|
font-size: var(--type-table-body-size);
|
|
line-height: 1.5;
|
|
white-space: normal;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.variant-comparison__table thead th {
|
|
color: var(--muted);
|
|
background: var(--surface-inset);
|
|
font-size: var(--type-table-head-size);
|
|
font-weight: var(--fw-semibold);
|
|
text-transform: uppercase;
|
|
}
|
|
.variant-comparison__table tbody th {
|
|
width: 112px;
|
|
border-left: 3px solid var(--warning);
|
|
color: var(--heading);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.variant-comparison.is-duplicate .variant-comparison__table tbody td:first-child {
|
|
min-width: 220px;
|
|
border-left: 3px solid var(--info);
|
|
}
|
|
.variant-comparison.is-duplicate .variant-comparison__table tbody td:nth-child(2) {
|
|
min-width: 150px;
|
|
}
|
|
.variant-comparison.is-duplicate .variant-comparison__table tbody td:nth-child(3) {
|
|
min-width: 140px;
|
|
}
|
|
.variant-comparison__table td:nth-child(2) {
|
|
min-width: 220px;
|
|
}
|
|
.variant-comparison__table td:nth-child(3) {
|
|
min-width: 150px;
|
|
}
|
|
.variant-comparison__table td:nth-child(4) {
|
|
min-width: 140px;
|
|
}
|
|
.variant-comparison__table .variant-comparison__sources {
|
|
margin-top: var(--space-2);
|
|
}
|
|
.variant-comparison__technical-list {
|
|
display: grid;
|
|
gap: var(--space-4);
|
|
margin-top: var(--space-4);
|
|
}
|
|
.variant-comparison__technical section {
|
|
min-width: 0;
|
|
padding-top: var(--space-3);
|
|
border-top: var(--border-hair) solid var(--line);
|
|
}
|
|
.variant-comparison__technical h5 {
|
|
margin: 0 0 var(--space-2);
|
|
color: var(--heading);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.variant-comparison__technical dl {
|
|
display: grid;
|
|
gap: var(--space-2);
|
|
margin: 0;
|
|
}
|
|
.finding-optional-detail {
|
|
margin-top: 2px;
|
|
padding: 12px 14px;
|
|
border: var(--border-hair) solid var(--line);
|
|
background: var(--panel);
|
|
min-width: 0;
|
|
max-width: 100%;
|
|
box-sizing: border-box;
|
|
overflow: hidden;
|
|
}
|
|
.finding-optional-detail > summary {
|
|
cursor: pointer;
|
|
color: var(--heading);
|
|
font-size: var(--ui-reading-size);
|
|
font-weight: var(--ui-strong-weight);
|
|
}
|
|
.finding-optional-detail[open] > summary {
|
|
margin-bottom: 10px;
|
|
}
|
|
.finding-optional-detail > .rich-text-value {
|
|
min-width: 0;
|
|
max-width: 100%;
|
|
overflow-wrap: anywhere;
|
|
word-break: normal;
|
|
white-space: pre-wrap;
|
|
}
|
|
.reader-summary p {
|
|
margin: 0;
|
|
color: var(--text);
|
|
font-size: var(--ui-reading-size);
|
|
line-height: 1.55;
|
|
white-space: pre-wrap;
|
|
}
|
|
.review-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 14px;
|
|
padding: 20px;
|
|
border: 1px solid var(--line);
|
|
background: var(--panel);
|
|
}
|
|
.review-grid textarea {
|
|
min-height: 96px;
|
|
resize: vertical;
|
|
}
|
|
.review-markers {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 10px 18px;
|
|
grid-column: 1 / -1;
|
|
margin: 0;
|
|
padding: 12px;
|
|
border: 1px solid var(--line);
|
|
}
|
|
.review-markers label {
|
|
color: var(--text);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.all-fields {
|
|
padding-inline: 18px;
|
|
border: 1px solid var(--line);
|
|
background: var(--panel);
|
|
}
|
|
.all-fields summary {
|
|
cursor: pointer;
|
|
color: var(--heading);
|
|
font-weight: var(--ui-strong-weight);
|
|
}
|
|
.all-fields table {
|
|
margin-top: 12px;
|
|
}
|
|
.all-fields th {
|
|
position: static;
|
|
width: 220px;
|
|
}
|
|
.linked-results-inline {
|
|
margin-top: 18px;
|
|
}
|
|
.linked-results {
|
|
display: grid;
|
|
gap: 20px;
|
|
min-width: 0;
|
|
}
|
|
.linked-results-heading {
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--ui-strong-weight);
|
|
line-height: 1.35;
|
|
}
|
|
.linked-results-empty {
|
|
padding: 18px;
|
|
border-left: 3px solid var(--warning);
|
|
background: color-mix(in srgb, var(--warning) 12%, transparent);
|
|
line-height: 1.55;
|
|
}
|
|
.result-block {
|
|
min-width: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
background: transparent;
|
|
line-height: 1.55;
|
|
}
|
|
.result-block__title {
|
|
margin: 0 0 10px;
|
|
color: var(--heading);
|
|
font-size: var(--ui-heading-size);
|
|
font-weight: var(--ui-strong-weight);
|
|
line-height: 1.35;
|
|
}
|
|
.result-block__subtitle {
|
|
margin: 0 0 10px;
|
|
color: var(--heading);
|
|
font-size: var(--ui-body-size);
|
|
font-weight: var(--ui-strong-weight);
|
|
line-height: 1.4;
|
|
}
|
|
.result-block__preamble {
|
|
margin: 0 0 10px;
|
|
color: var(--text);
|
|
font-size: var(--ui-reading-size);
|
|
line-height: 1.55;
|
|
}
|
|
.maester-error {
|
|
display: grid;
|
|
gap: var(--space-4);
|
|
min-width: 0;
|
|
}
|
|
.maester-error__summary {
|
|
margin: 0;
|
|
padding: var(--space-4);
|
|
border-left: var(--bw-emphasis) solid var(--critical);
|
|
color: var(--heading);
|
|
background: color-mix(in srgb, var(--critical) 8%, transparent);
|
|
font-size: var(--type-body-size);
|
|
line-height: 1.55;
|
|
}
|
|
.maester-error__facts {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: 0 var(--space-5);
|
|
margin: 0;
|
|
}
|
|
.maester-error__facts > div {
|
|
display: grid;
|
|
grid-template-columns: minmax(110px, .35fr) minmax(0, 1fr);
|
|
gap: var(--space-3);
|
|
padding: var(--space-2) 0;
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
}
|
|
.maester-error__facts dt {
|
|
color: var(--muted);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.maester-error__facts dd {
|
|
min-width: 0;
|
|
margin: 0;
|
|
color: var(--text);
|
|
font-size: var(--type-table-body-size);
|
|
line-height: 1.45;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.maester-error__raw {
|
|
min-width: 0;
|
|
color: var(--muted);
|
|
font-size: var(--type-button-size);
|
|
}
|
|
.maester-error__raw summary {
|
|
width: fit-content;
|
|
cursor: pointer;
|
|
color: var(--heading);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.maester-error__raw pre {
|
|
max-width: 100%;
|
|
margin: var(--space-3) 0 0;
|
|
padding: var(--space-3);
|
|
border: var(--border-hair) solid var(--line);
|
|
color: var(--text);
|
|
background: var(--surface-inset);
|
|
font-family: inherit;
|
|
font-size: var(--type-table-body-size);
|
|
line-height: 1.5;
|
|
white-space: pre-wrap;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.result-block > .rich-text-table-wrap:last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
@media (max-width: 760px) {
|
|
.maester-error__facts {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
}
|
|
.variant-comparison__setting dl > div,
|
|
.variant-comparison__technical dl > div {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
gap: var(--space-1);
|
|
}
|
|
}
|
|
.results-window {
|
|
--results-action-width: 84px;
|
|
--result-edge: var(--marker-width);
|
|
--cluster-bar-h: 34px;
|
|
position: fixed;
|
|
display: grid;
|
|
grid-template-rows: auto minmax(0, 1fr);
|
|
width: min(1040px, 78vw);
|
|
height: auto;
|
|
min-width: 440px;
|
|
max-width: 100vw;
|
|
max-height: calc(100vh - 144px);
|
|
border: var(--border-hair) solid var(--line-strong);
|
|
border-radius: var(--legacy-radius-sm);
|
|
color: var(--text);
|
|
background: var(--bg);
|
|
overflow: visible;
|
|
}
|
|
.results-window:not(.is-minimized) {
|
|
box-shadow: var(--shadow-overlay);
|
|
}
|
|
.results-window.is-minimized {
|
|
height: auto;
|
|
border-top: 0;
|
|
border-left: var(--result-edge) solid var(--result-color);
|
|
border-radius: 0;
|
|
}
|
|
.results-window.is-minimized.is-dimmed {
|
|
filter: grayscale(1);
|
|
opacity: 0.42;
|
|
}
|
|
.results-window.is-minimized .results-window-body {
|
|
display: none;
|
|
}
|
|
.results-window.is-minimized .results-window-head {
|
|
min-height: 33px;
|
|
border-radius: 0;
|
|
border-bottom: 0;
|
|
}
|
|
.results-window.is-minimized.is-cluster-bottom,
|
|
.results-window.is-minimized.is-cluster-bottom .results-window-head {
|
|
border-radius: 0 0 var(--radius-result-cluster) var(--radius-result-cluster);
|
|
}
|
|
.results-window.is-minimized .results-window-result-summary {
|
|
align-self: stretch;
|
|
min-width: 78px;
|
|
padding-right: 10px;
|
|
border-right: var(--border-hair) solid var(--line);
|
|
}
|
|
.results-cluster-bar {
|
|
position: absolute;
|
|
top: calc(-1 * var(--cluster-bar-h));
|
|
left: calc(-1 * var(--result-edge));
|
|
right: -1px;
|
|
z-index: 100;
|
|
display: flex;
|
|
align-items: center;
|
|
height: var(--cluster-bar-h);
|
|
border: var(--border-hair) solid var(--line-strong);
|
|
border-radius: var(--radius-result-cluster) var(--radius-result-cluster) 0 0;
|
|
color: var(--heading);
|
|
background: var(--panel-raised);
|
|
cursor: move;
|
|
touch-action: none;
|
|
user-select: none;
|
|
}
|
|
.results-cluster-slot {
|
|
display: grid;
|
|
place-items: center;
|
|
align-self: stretch;
|
|
flex: 0 0 auto;
|
|
width: 34px;
|
|
padding: 0;
|
|
border: 0;
|
|
border-right: var(--border-hair) solid var(--line);
|
|
border-radius: 0;
|
|
color: var(--muted);
|
|
background: transparent;
|
|
}
|
|
.results-cluster-slot:hover {
|
|
color: var(--marking-color);
|
|
background: var(--panel-hover);
|
|
}
|
|
.results-cluster-total {
|
|
display: grid;
|
|
place-items: center;
|
|
min-width: 58px;
|
|
height: 22px;
|
|
margin-left: 10px;
|
|
padding: 0 8px;
|
|
border: var(--border-hair) solid var(--line-strong);
|
|
border-radius: var(--legacy-radius-sm);
|
|
color: var(--heading);
|
|
background: var(--surface-inset);
|
|
font-family: var(--font-mono);
|
|
font-size: var(--ui-label-size);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.results-cluster-bar-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
margin-left: auto;
|
|
padding-right: 8px;
|
|
}
|
|
.result-dock-slot {
|
|
display: flex;
|
|
align-items: center;
|
|
flex: 0 0 auto;
|
|
}
|
|
.result-dock {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
.result-dock-toggle {
|
|
display: grid;
|
|
place-items: center;
|
|
width: var(--control-height);
|
|
height: var(--control-height);
|
|
padding: 0;
|
|
border: var(--border-hair) solid var(--line-strong);
|
|
border-radius: var(--radius-result-cluster);
|
|
color: var(--heading);
|
|
background: var(--panel-raised);
|
|
}
|
|
.result-dock-toggle:hover {
|
|
color: var(--marking-color);
|
|
border-color: var(--marking-color);
|
|
background: var(--panel-hover);
|
|
}
|
|
.result-dock-count {
|
|
display: grid;
|
|
place-items: center;
|
|
min-width: 58px;
|
|
height: var(--control-height);
|
|
padding: 0 8px;
|
|
border: var(--border-hair) solid var(--line-strong);
|
|
border-radius: var(--legacy-radius-sm);
|
|
color: var(--heading);
|
|
background: var(--surface-inset);
|
|
font-family: var(--font-mono);
|
|
font-size: var(--ui-label-size);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.result-dock-marks {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 2px;
|
|
min-width: 0;
|
|
overflow: hidden;
|
|
}
|
|
.result-dock-mark {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 22px;
|
|
height: 22px;
|
|
flex: 0 0 auto;
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: var(--legacy-radius-sm);
|
|
color: var(--result-color);
|
|
background: transparent;
|
|
}
|
|
.result-dock-mark:hover {
|
|
background: var(--panel-hover);
|
|
}
|
|
.result-dock-mark .triangle-icon {
|
|
width: 14px;
|
|
height: 14px;
|
|
}
|
|
.results-cluster-bookmark,
|
|
.results-cluster-close,
|
|
.results-window-bookmark {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 22px;
|
|
height: 22px;
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: var(--legacy-radius-sm);
|
|
color: var(--muted);
|
|
background: transparent;
|
|
}
|
|
.results-cluster-bookmark:hover,
|
|
.results-cluster-close:hover,
|
|
.results-window-bookmark:hover {
|
|
color: var(--heading);
|
|
background: var(--panel-hover);
|
|
}
|
|
.results-cluster-bookmark.is-bookmarked,
|
|
.results-window-bookmark.is-bookmarked {
|
|
color: var(--state-bookmark);
|
|
}
|
|
.results-window-resize {
|
|
position: absolute;
|
|
z-index: 5;
|
|
}
|
|
.results-window-resize-n,
|
|
.results-window-resize-s {
|
|
left: 10px;
|
|
right: 10px;
|
|
height: 5px;
|
|
cursor: ns-resize;
|
|
}
|
|
.results-window-resize-n {
|
|
top: 0;
|
|
}
|
|
.results-window-resize-s {
|
|
bottom: 0;
|
|
}
|
|
.results-window-resize-e,
|
|
.results-window-resize-w {
|
|
top: 10px;
|
|
bottom: 10px;
|
|
width: 5px;
|
|
cursor: ew-resize;
|
|
}
|
|
.results-window-resize-e {
|
|
right: 0;
|
|
}
|
|
.results-window-resize-w {
|
|
left: 0;
|
|
}
|
|
.results-window-resize-ne,
|
|
.results-window-resize-nw,
|
|
.results-window-resize-se,
|
|
.results-window-resize-sw {
|
|
width: 12px;
|
|
height: 12px;
|
|
}
|
|
.results-window-resize-ne {
|
|
top: 0;
|
|
right: 0;
|
|
cursor: nesw-resize;
|
|
}
|
|
.results-window-resize-nw {
|
|
top: 0;
|
|
left: 0;
|
|
cursor: nwse-resize;
|
|
}
|
|
.results-window-resize-se {
|
|
bottom: 0;
|
|
right: 0;
|
|
cursor: nwse-resize;
|
|
}
|
|
.results-window-resize-sw {
|
|
bottom: 0;
|
|
left: 0;
|
|
cursor: nesw-resize;
|
|
}
|
|
.results-window-head {
|
|
display: flex;
|
|
align-items: stretch;
|
|
justify-content: space-between;
|
|
gap: 0;
|
|
min-height: 32px;
|
|
min-width: 0;
|
|
padding: 0 8px 0 0;
|
|
color: var(--heading);
|
|
background: var(--panel-soft);
|
|
border-bottom: 1px solid var(--line);
|
|
cursor: move;
|
|
touch-action: none;
|
|
user-select: none;
|
|
}
|
|
.results-window-head h2 {
|
|
display: flex;
|
|
align-items: stretch;
|
|
gap: 10px;
|
|
min-width: 0;
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--ui-strong-weight);
|
|
line-height: 1.35;
|
|
}
|
|
.results-window-result-summary {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
align-self: center;
|
|
flex: 0 0 auto;
|
|
gap: 5px;
|
|
padding-left: 8px;
|
|
color: var(--heading);
|
|
font-family: var(--font-mono);
|
|
font-variant-numeric: tabular-nums;
|
|
white-space: nowrap;
|
|
}
|
|
.results-window-toggle,
|
|
.results-window-toggle-icon {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 20px;
|
|
height: 20px;
|
|
flex: 0 0 auto;
|
|
color: var(--result-color);
|
|
}
|
|
.results-window-toggle {
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: 3px;
|
|
background: transparent;
|
|
}
|
|
.results-window-toggle:hover {
|
|
color: var(--result-color);
|
|
background: var(--panel-hover);
|
|
}
|
|
.results-window-toggle .triangle-icon,
|
|
.results-window-toggle-icon .triangle-icon {
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
.results-window-name {
|
|
display: flex;
|
|
align-items: center;
|
|
min-width: 0;
|
|
padding: 5px 0;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.results-window-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
flex: 0 0 auto;
|
|
gap: 6px;
|
|
padding: 0 0 0 8px;
|
|
}
|
|
.results-window-action {
|
|
align-self: center;
|
|
min-width: var(--results-action-width);
|
|
}
|
|
.results-window-close {
|
|
align-self: center;
|
|
display: grid;
|
|
place-items: center;
|
|
width: 22px;
|
|
height: 22px;
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: 3px;
|
|
color: var(--muted);
|
|
background: transparent;
|
|
}
|
|
.results-window-close:hover {
|
|
color: var(--heading);
|
|
background: var(--panel-hover);
|
|
}
|
|
.results-window-body {
|
|
min-height: 0;
|
|
padding: var(--panel-inset);
|
|
overflow: auto;
|
|
font-size: var(--ui-reading-size);
|
|
line-height: 1.45;
|
|
}
|
|
@media (max-width: 980px) {
|
|
.dashboard-grid,
|
|
.review-grid {
|
|
grid-template-columns: 1fr 1fr;
|
|
}
|
|
.finding-reader > * {
|
|
width: calc(100% - 36px);
|
|
}
|
|
}
|
|
@media (max-width: 620px) {
|
|
.dashboard-grid,
|
|
.review-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.reader-heading {
|
|
grid-template-columns: auto minmax(0, 1fr);
|
|
}
|
|
.reader-heading-actions {
|
|
grid-column: 1 / -1;
|
|
}
|
|
.results-window:not(.is-maximized) {
|
|
left: 8px !important;
|
|
top: 8px !important;
|
|
width: calc(100vw - 16px);
|
|
height: auto;
|
|
max-height: min(78vh, 680px);
|
|
min-width: 0;
|
|
}
|
|
}
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.finding-card {
|
|
transition: none;
|
|
}
|
|
.finding-card:hover {
|
|
transform: none;
|
|
}
|
|
}
|
|
.rich-text-value > :first-child {
|
|
margin-top: 0;
|
|
}
|
|
.rich-text-value > :last-child {
|
|
margin-bottom: 0;
|
|
}
|
|
.rich-text-value p {
|
|
margin: 0 0 14px;
|
|
}
|
|
.rich-text-value ul,
|
|
.rich-text-value ol {
|
|
margin: 8px 0 14px;
|
|
padding-left: 24px;
|
|
}
|
|
.rich-text-value a {
|
|
color: var(--heading);
|
|
text-decoration: underline;
|
|
text-underline-offset: 2px;
|
|
}
|
|
.rich-text-value li {
|
|
margin: 0 0 4px;
|
|
}
|
|
.inline-results-link {
|
|
display: inline;
|
|
padding: 0;
|
|
margin: 0;
|
|
border: none;
|
|
background: transparent;
|
|
color: var(--heading);
|
|
font-size: inherit;
|
|
font-family: inherit;
|
|
font-weight: var(--ui-strong-weight);
|
|
text-decoration: underline;
|
|
text-underline-offset: 2px;
|
|
cursor: pointer;
|
|
}
|
|
.inline-results-link:hover {
|
|
color: var(--marking-color);
|
|
}
|
|
.inline-results-link-disabled {
|
|
text-decoration: underline;
|
|
text-underline-offset: 2px;
|
|
opacity: 0.85;
|
|
}
|
|
.rich-text-value h5,
|
|
.rich-text-value h6 {
|
|
margin: 16px 0 6px;
|
|
color: var(--heading);
|
|
font-size: var(--ui-body-size);
|
|
font-weight: var(--ui-strong-weight);
|
|
}
|
|
.rich-text-value h6 {
|
|
color: var(--muted);
|
|
font-size: var(--ui-control-size);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
}
|
|
.rich-text-value code {
|
|
padding: 1px 4px;
|
|
border-radius: var(--legacy-radius-sm);
|
|
background: var(--surface-inset);
|
|
font-family: var(--font-mono, monospace);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.technical-path,
|
|
.rich-text-value code.technical-path {
|
|
display: inline-block;
|
|
vertical-align: top;
|
|
max-width: 100%;
|
|
min-width: 0;
|
|
padding: var(--space-1) var(--space-2);
|
|
border: var(--border-hair) solid var(--line);
|
|
border-radius: 0;
|
|
background: var(--surface-inset);
|
|
color: var(--text);
|
|
font-family: var(--font-path);
|
|
font-size: inherit;
|
|
font-weight: var(--fw-regular);
|
|
line-height: inherit;
|
|
white-space: pre-wrap;
|
|
overflow-wrap: anywhere;
|
|
word-break: normal;
|
|
text-transform: none;
|
|
}
|
|
.rich-text-code {
|
|
margin: 8px 0 14px;
|
|
padding: var(--legacy-space-3);
|
|
border: var(--border-hair) solid var(--line);
|
|
border-radius: var(--legacy-radius-sm);
|
|
background: var(--surface-inset);
|
|
font-family: var(--font-mono, monospace);
|
|
font-size: var(--ui-control-size);
|
|
white-space: pre-wrap;
|
|
overflow-wrap: anywhere;
|
|
word-break: normal;
|
|
word-wrap: break-word;
|
|
width: 100%;
|
|
max-width: 100%;
|
|
box-sizing: border-box;
|
|
}
|
|
.rich-text-table-wrap {
|
|
margin: 8px 0 14px;
|
|
overflow-x: auto;
|
|
}
|
|
.rich-text-table-wrap,
|
|
.results-window-body {
|
|
scrollbar-width: thin;
|
|
scrollbar-color: var(--line-strong) var(--surface-inset);
|
|
}
|
|
.rich-text-table-wrap::-webkit-scrollbar,
|
|
.results-window-body::-webkit-scrollbar {
|
|
width: 11px;
|
|
height: 11px;
|
|
}
|
|
.rich-text-table-wrap::-webkit-scrollbar-track,
|
|
.results-window-body::-webkit-scrollbar-track {
|
|
background: var(--surface-inset);
|
|
}
|
|
.rich-text-table-wrap::-webkit-scrollbar-thumb,
|
|
.results-window-body::-webkit-scrollbar-thumb {
|
|
border: var(--border-hair) solid var(--surface-inset);
|
|
border-radius: var(--legacy-radius-sm);
|
|
background: var(--line-strong);
|
|
}
|
|
.rich-text-table-wrap::-webkit-scrollbar-thumb:hover,
|
|
.results-window-body::-webkit-scrollbar-thumb:hover {
|
|
background: var(--muted);
|
|
}
|
|
.rich-text-table-wrap::-webkit-scrollbar-corner,
|
|
.results-window-body::-webkit-scrollbar-corner {
|
|
background: var(--surface-inset);
|
|
}
|
|
.rich-text-table {
|
|
border-collapse: collapse;
|
|
width: auto;
|
|
min-width: 100%;
|
|
}
|
|
.rich-text-table th,
|
|
.rich-text-table td {
|
|
padding: 4px var(--legacy-space-3);
|
|
border: var(--border-hair) solid var(--line);
|
|
text-align: left;
|
|
vertical-align: top;
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.rich-text-table th {
|
|
position: static;
|
|
color: var(--heading);
|
|
background: var(--surface-panel-raised);
|
|
font-weight: var(--ui-label-weight);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
white-space: nowrap;
|
|
}
|
|
.rich-text-table.is-column-resizable th {
|
|
position: relative;
|
|
}
|
|
.rich-text-table.is-column-resizable.has-custom-column-widths {
|
|
min-width: 0;
|
|
}
|
|
.results-window.is-maximized .rich-text-table.is-column-resizable:not(.has-custom-column-widths) {
|
|
width: max-content;
|
|
min-width: max-content;
|
|
table-layout: auto;
|
|
}
|
|
.results-window.is-maximized .rich-text-table.is-column-resizable:not(.has-custom-column-widths) th,
|
|
.results-window.is-maximized .rich-text-table.is-column-resizable:not(.has-custom-column-widths) td {
|
|
white-space: nowrap;
|
|
}
|
|
.result-column-resizer {
|
|
position: absolute;
|
|
z-index: 2;
|
|
top: 0;
|
|
right: -5px;
|
|
bottom: 0;
|
|
width: 10px;
|
|
cursor: col-resize;
|
|
touch-action: none;
|
|
user-select: none;
|
|
}
|
|
.result-column-resizer::after {
|
|
position: absolute;
|
|
top: 0;
|
|
right: 4px;
|
|
bottom: 0;
|
|
width: var(--border-hair);
|
|
background: transparent;
|
|
content: "";
|
|
}
|
|
.result-column-resizer:hover::after,
|
|
.result-column-resizer:focus-visible::after {
|
|
background: var(--focus-ring);
|
|
}
|
|
.result-column-instructions {
|
|
position: absolute;
|
|
width: 1px;
|
|
height: 1px;
|
|
padding: 0;
|
|
margin: -1px;
|
|
overflow: hidden;
|
|
clip: rect(0, 0, 0, 0);
|
|
white-space: nowrap;
|
|
border: 0;
|
|
}
|
|
.rich-text-table tr.rich-text-table-row--highlight td {
|
|
background: var(--evidence-highlight-bg);
|
|
color: var(--evidence-highlight-text);
|
|
font-weight: var(--ui-strong-weight);
|
|
}
|
|
.rich-text-table tr.rich-text-table-row--criterion td {
|
|
background: var(--criterion-highlight-bg);
|
|
color: var(--criterion-highlight-text);
|
|
font-weight: var(--ui-strong-weight);
|
|
}
|
|
.rich-text-table tr.rich-text-table-row--violation td {
|
|
background: var(--violation-highlight-bg);
|
|
color: var(--violation-highlight-text);
|
|
font-weight: var(--ui-strong-weight);
|
|
}
|
|
.donut-metric-rack {
|
|
display: grid;
|
|
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
gap: var(--segment-gap);
|
|
padding: var(--segment-inset);
|
|
border: var(--border-hair) solid var(--segment-border);
|
|
border-radius: var(--segment-radius);
|
|
background: var(--segment-surface);
|
|
box-shadow: none;
|
|
}
|
|
.donut-metric-card {
|
|
position: relative;
|
|
display: grid;
|
|
grid-template-rows: auto minmax(0, 1fr);
|
|
min-width: 0;
|
|
min-height: var(--donut-card-min-h);
|
|
padding: var(--space-5) var(--space-3) var(--space-2);
|
|
overflow: hidden;
|
|
border: var(--border-hair) solid var(--tile-border);
|
|
border-radius: var(--tile-radius);
|
|
color: var(--donut-all);
|
|
background: var(--tile-surface);
|
|
box-shadow: var(--tile-card-shadow);
|
|
}
|
|
.donut-metric-card__title {
|
|
min-width: 0;
|
|
margin: 0;
|
|
overflow: hidden;
|
|
color: var(--donut-label);
|
|
font: var(--fw-regular) var(--donut-title-size) / 1.15 var(--font-donut-display);
|
|
text-align: left;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.donut-metric-card__plot {
|
|
position: relative;
|
|
align-self: end;
|
|
justify-self: center;
|
|
width: min(100%, var(--donut-ring-size));
|
|
aspect-ratio: 1;
|
|
}
|
|
.donut-metric-card__plot svg {
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow: visible;
|
|
transform: rotate(-90deg);
|
|
}
|
|
.donut-metric-card__plot circle {
|
|
fill: none;
|
|
stroke-width: var(--donut-ring-stroke);
|
|
}
|
|
.donut-metric-card__track {
|
|
stroke: var(--donut-track);
|
|
}
|
|
.donut-metric-card__progress {
|
|
stroke: currentColor;
|
|
animation: donut-progress-build var(--dur-data-build) var(--ease-data-build) both;
|
|
}
|
|
@keyframes donut-progress-build {
|
|
from {
|
|
stroke-dasharray: 0 100;
|
|
}
|
|
to {
|
|
stroke-dasharray: var(--donut-progress-dash);
|
|
}
|
|
}
|
|
.donut-metric-card__values {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-family: var(--font-donut-display);
|
|
font-variant-numeric: tabular-nums;
|
|
line-height: 1;
|
|
}
|
|
.donut-metric-card__primary {
|
|
position: relative;
|
|
display: block;
|
|
}
|
|
.donut-metric-card__primary strong {
|
|
color: var(--donut-value);
|
|
font-size: var(--donut-value-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.donut-metric-card__primary span {
|
|
position: absolute;
|
|
left: calc(100% + var(--space-1));
|
|
bottom: 0;
|
|
color: var(--donut-value);
|
|
font-size: var(--donut-percent-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.donut-metric-card__primary.is-compact strong {
|
|
font-size: calc(var(--donut-value-size) * .85);
|
|
}
|
|
.donut-metric-card__primary.is-compact span {
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.donut-metric-card__values > small {
|
|
margin-top: var(--space-2);
|
|
color: var(--donut-label);
|
|
font-size: var(--type-meta-size);
|
|
font-weight: var(--fw-regular);
|
|
}
|
|
.donut-metric-card--all {
|
|
color: var(--donut-all);
|
|
}
|
|
.donut-metric-card--deviation {
|
|
color: var(--donut-deviation);
|
|
}
|
|
.donut-metric-card--passed {
|
|
color: var(--donut-passed);
|
|
}
|
|
.donut-metric-card--not-applicable {
|
|
color: var(--donut-not-applicable);
|
|
}
|
|
.donut-metric-card--not-run {
|
|
color: var(--donut-not-run);
|
|
}
|
|
.donut-metric-card--error {
|
|
color: var(--donut-error);
|
|
}
|
|
.donut-metric-card--critical {
|
|
color: var(--critical);
|
|
}
|
|
.donut-metric-card--high {
|
|
color: var(--high);
|
|
}
|
|
.donut-metric-card--medium {
|
|
color: var(--medium);
|
|
}
|
|
.donut-metric-card--low {
|
|
color: var(--low);
|
|
}
|
|
.donut-metric-card--info {
|
|
color: var(--info);
|
|
}
|
|
.sidebar-severity-rack {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr);
|
|
gap: var(--segment-gap);
|
|
flex: 1 1 auto;
|
|
min-height: 0;
|
|
margin: 0 var(--space-3) var(--space-2);
|
|
padding: var(--segment-inset);
|
|
overflow-y: auto;
|
|
border: var(--border-hair) solid var(--segment-border);
|
|
border-radius: var(--segment-radius);
|
|
background: var(--segment-surface);
|
|
box-shadow: none;
|
|
scrollbar-color: var(--border-strong) var(--segment-surface);
|
|
scrollbar-width: thin;
|
|
}
|
|
.sidebar-severity-card {
|
|
min-height: calc(var(--donut-ring-size) + var(--space-2));
|
|
padding: var(--space-3) var(--space-2) var(--space-2);
|
|
cursor: pointer;
|
|
}
|
|
.sidebar-severity-card .donut-metric-card__title {
|
|
font-size: var(--fs-sm);
|
|
}
|
|
.sidebar-severity-card .donut-metric-card__plot {
|
|
width: calc(var(--donut-ring-size) - var(--space-8));
|
|
}
|
|
.sidebar-severity-card .donut-metric-card__primary strong {
|
|
font-size: var(--donut-compact-value-size);
|
|
}
|
|
.sidebar-severity-card .donut-metric-card__primary span {
|
|
left: calc(100% + var(--donut-compact-unit-gap));
|
|
font-size: var(--donut-compact-percent-size);
|
|
}
|
|
.sidebar-severity-card:hover {
|
|
border-color: transparent;
|
|
}
|
|
.sidebar-severity-card[aria-pressed=true] {
|
|
border-color: currentColor;
|
|
outline: var(--bw-emphasis) solid currentColor;
|
|
outline-offset: calc(-1 * var(--bw-emphasis));
|
|
}
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.donut-metric-card__progress {
|
|
animation: none;
|
|
}
|
|
}
|
|
@media (max-width: 1100px) {
|
|
.donut-metric-rack {
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
}
|
|
}
|
|
@media (max-width: 760px) {
|
|
.donut-metric-rack {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
}
|
|
.backend-connection-dialog__content {
|
|
display: grid;
|
|
grid-template-columns: 32px minmax(0, 1fr);
|
|
gap: var(--space-4);
|
|
align-items: start;
|
|
}
|
|
.backend-connection-dialog__icon {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 32px;
|
|
height: 32px;
|
|
color: var(--state-active-text);
|
|
background: var(--warning);
|
|
font-size: var(--type-detail-title-size);
|
|
font-weight: var(--fw-bold);
|
|
}
|
|
.backend-connection-dialog__content p {
|
|
margin: 0;
|
|
color: var(--text);
|
|
font-size: var(--type-body-size);
|
|
line-height: 1.5;
|
|
}
|
|
.backend-connection-dialog__content .backend-connection-dialog__hint {
|
|
margin-top: var(--space-3);
|
|
color: var(--muted);
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
|
|
/* src/styles/dynamic-filters.css */
|
|
.primary-filter-group {
|
|
display: flex;
|
|
align-items: center;
|
|
flex: 0 1 auto;
|
|
flex-wrap: nowrap;
|
|
gap: 6px;
|
|
min-width: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: 0;
|
|
background: transparent;
|
|
}
|
|
.primary-filter-group .select.dynamic-facet-select {
|
|
height: 28px;
|
|
border: var(--border-hair) solid var(--line-strong);
|
|
border-radius: var(--radius-sm);
|
|
color: var(--text);
|
|
background-color: var(--surface-input);
|
|
font-size: var(--ui-label-size);
|
|
font-weight: var(--fw-medium);
|
|
}
|
|
.primary-filter-group .select.dynamic-facet-select option {
|
|
color: var(--text);
|
|
background: var(--panel-raised);
|
|
font-weight: 400;
|
|
}
|
|
.dynamic-facet-select {
|
|
flex: 1 1 0;
|
|
width: auto;
|
|
min-width: 92px;
|
|
max-width: 200px;
|
|
height: 28px;
|
|
border-color: var(--line-strong);
|
|
font-size: var(--ui-label-size);
|
|
}
|
|
.search-tools > .dynamic-facet-select.is-source-scan {
|
|
margin-left: auto;
|
|
}
|
|
.dynamic-facet-select.is-gpo-backup {
|
|
flex: 0 1 340px;
|
|
min-width: min(100%, 340px);
|
|
max-width: 100%;
|
|
}
|
|
.primary-filter-group .select.dynamic-facet-select.is-filtered,
|
|
.select.dynamic-facet-select.is-filtered,
|
|
.dynamic-range-filter.is-filtered {
|
|
border-color: var(--state-progress);
|
|
color: var(--sev-on);
|
|
background-color: var(--state-progress);
|
|
font-weight: var(--ui-strong-weight);
|
|
}
|
|
.dynamic-range-filter.is-filtered .input {
|
|
color: var(--text);
|
|
background: var(--surface-inset);
|
|
}
|
|
.search-input.is-filtered {
|
|
border-color: var(--state-progress);
|
|
color: var(--sev-on);
|
|
background: var(--state-progress);
|
|
font-weight: var(--ui-strong-weight);
|
|
}
|
|
.search-input.is-filtered + .search-clear-btn {
|
|
border-left-color: color-mix(in srgb, var(--sev-on) 45%, transparent);
|
|
color: var(--sev-on);
|
|
}
|
|
.search-input.is-filtered + .search-clear-btn:hover:not(:disabled) {
|
|
color: var(--sev-on);
|
|
background: color-mix(in srgb, var(--sev-on) 14%, transparent);
|
|
}
|
|
.search-tools .btn.standard-filter-btn,
|
|
.search-tools .btn.standard-filter-btn:hover {
|
|
height: 24px;
|
|
padding: 2px 8px;
|
|
border: 1px solid var(--button-border);
|
|
border-radius: 0;
|
|
color: var(--button-marked-text);
|
|
background: var(--button-marked-bg);
|
|
font-weight: 600;
|
|
}
|
|
.dynamic-range-filter {
|
|
display: grid;
|
|
grid-template-columns: auto 108px 108px;
|
|
align-items: center;
|
|
gap: var(--legacy-space-1);
|
|
flex: 0 0 auto;
|
|
min-height: var(--control-height);
|
|
padding: 2px var(--legacy-space-2);
|
|
border: var(--border-hair) solid var(--line);
|
|
border-radius: var(--legacy-radius-sm);
|
|
color: var(--muted);
|
|
background: var(--panel);
|
|
font-size: var(--ui-label-size);
|
|
font-weight: var(--ui-label-weight);
|
|
white-space: nowrap;
|
|
}
|
|
.dynamic-range-filter input {
|
|
width: 108px;
|
|
min-width: 0;
|
|
height: 22px;
|
|
padding: 2px var(--legacy-space-1);
|
|
font-size: var(--ui-label-size);
|
|
}
|
|
.import-quality {
|
|
font-weight: var(--ui-label-weight);
|
|
}
|
|
.import-quality-success {
|
|
color: var(--success);
|
|
}
|
|
.import-quality-warning {
|
|
color: var(--warning);
|
|
}
|
|
.import-quality-error {
|
|
color: var(--danger);
|
|
}
|
|
.import-quality-neutral {
|
|
color: var(--muted);
|
|
}
|
|
.view-bookmark-bar {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
flex: 1 1 auto;
|
|
min-width: 0;
|
|
}
|
|
.view-bookmark-create {
|
|
flex: 0 0 auto;
|
|
height: var(--btn-h);
|
|
font-size: var(--ui-label-size);
|
|
}
|
|
.view-bookmark-list {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
flex: 1 1 auto;
|
|
min-width: 0;
|
|
overflow: visible;
|
|
}
|
|
.view-bookmark-item {
|
|
display: inline-flex;
|
|
align-items: stretch;
|
|
flex: 0 0 auto;
|
|
width: auto;
|
|
height: var(--btn-h);
|
|
min-width: 0;
|
|
}
|
|
.view-bookmark-entry {
|
|
display: block;
|
|
flex: 0 0 auto;
|
|
width: auto;
|
|
min-width: 0;
|
|
height: var(--btn-h);
|
|
border-color: var(--band-border);
|
|
border-right: 0;
|
|
font-size: var(--ui-label-size);
|
|
white-space: nowrap;
|
|
}
|
|
.view-bookmark-item.is-path {
|
|
outline: 2px solid var(--graph-alert);
|
|
outline-offset: -2px;
|
|
}
|
|
.view-bookmark-remove {
|
|
flex: 0 0 22px;
|
|
width: 22px;
|
|
height: var(--btn-h);
|
|
padding: 0;
|
|
border: 1px solid var(--band-border);
|
|
border-radius: 0;
|
|
color: var(--button-text);
|
|
background: var(--button-bg);
|
|
cursor: pointer;
|
|
}
|
|
.view-bookmark-remove:hover {
|
|
background: var(--button-bg-hover);
|
|
}
|
|
.view-bookmark-dialog-backdrop {
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 1000;
|
|
display: grid;
|
|
place-items: center;
|
|
padding: var(--space-4);
|
|
background: var(--surface-scrim);
|
|
}
|
|
.view-bookmark-dialog {
|
|
display: grid;
|
|
gap: var(--space-3);
|
|
width: min(340px, 100%);
|
|
padding: var(--space-4);
|
|
border: var(--bw-hairline) solid var(--border-strong);
|
|
border-radius: var(--radius-md);
|
|
color: var(--text-primary);
|
|
background: var(--surface-overlay);
|
|
box-shadow: var(--shadow-popover);
|
|
}
|
|
.view-bookmark-dialog label {
|
|
color: var(--text-secondary);
|
|
font-size: var(--ui-label-size);
|
|
}
|
|
.view-bookmark-dialog small {
|
|
color: var(--danger);
|
|
}
|
|
.view-bookmark-dialog footer {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: var(--space-2);
|
|
}
|
|
|
|
/* src/styles/datahub.css */
|
|
.datahub-page {
|
|
width: 100%;
|
|
min-height: 100%;
|
|
padding: var(--panel-inset);
|
|
color: var(--text);
|
|
background: var(--surface-app);
|
|
}
|
|
.datahub-page > * {
|
|
width: min(1180px, 100%);
|
|
margin-inline: auto;
|
|
}
|
|
.datahub-hero {
|
|
display: flex;
|
|
align-items: flex-end;
|
|
justify-content: space-between;
|
|
gap: var(--legacy-space-6);
|
|
padding: 0 0 var(--legacy-space-5);
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
}
|
|
.datahub-hero h2 {
|
|
margin: var(--legacy-space-1) 0 var(--legacy-space-2);
|
|
color: var(--heading);
|
|
font-size: clamp(17px, 2vw, 22px);
|
|
line-height: 1.15;
|
|
letter-spacing: -.01em;
|
|
}
|
|
.datahub-hero p {
|
|
max-width: 690px;
|
|
margin: 0;
|
|
color: var(--muted);
|
|
font-size: var(--ui-body-size);
|
|
line-height: 1.5;
|
|
}
|
|
.datahub-eyebrow,
|
|
.datahub-section-heading span {
|
|
color: var(--muted);
|
|
font-size: var(--ui-label-size);
|
|
font-weight: var(--ui-label-weight);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
}
|
|
.datahub-hero-actions,
|
|
.datahub-form-actions {
|
|
display: flex;
|
|
gap: var(--legacy-space-2);
|
|
flex: 0 0 auto;
|
|
}
|
|
.datahub-projects,
|
|
.datahub-create {
|
|
margin-top: var(--legacy-space-6);
|
|
}
|
|
.datahub-section-heading {
|
|
display: flex;
|
|
align-items: end;
|
|
justify-content: space-between;
|
|
gap: var(--legacy-space-5);
|
|
margin-bottom: var(--legacy-space-3);
|
|
}
|
|
.datahub-section-heading h3 {
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--ui-body-size);
|
|
}
|
|
.datahub-section-heading > strong {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-width: 28px;
|
|
height: 22px;
|
|
padding: 1px 6px;
|
|
border: 1px solid var(--border-default);
|
|
border-radius: 0;
|
|
color: var(--text-primary);
|
|
background: var(--surface-input);
|
|
font-size: var(--ui-value-size);
|
|
font-weight: var(--fw-semibold);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.datahub-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(0, var(--tile-content-width)));
|
|
justify-content: start;
|
|
gap: var(--segment-gap);
|
|
padding: var(--segment-inset);
|
|
border: var(--border-hair) solid var(--segment-border);
|
|
border-radius: var(--segment-radius);
|
|
background: var(--segment-surface);
|
|
}
|
|
.datahub-card {
|
|
display: grid;
|
|
grid-template-columns: 40px minmax(0, 1fr) auto;
|
|
align-items: center;
|
|
gap: var(--legacy-space-3);
|
|
min-width: 0;
|
|
min-height: 96px;
|
|
padding: var(--legacy-space-4);
|
|
overflow: hidden;
|
|
border: var(--border-hair) solid var(--tile-border);
|
|
border-radius: var(--tile-radius);
|
|
color: var(--text);
|
|
background: var(--tile-surface);
|
|
box-shadow: var(--tile-card-shadow);
|
|
text-align: left;
|
|
transition: border-color .12s ease, background .12s ease;
|
|
}
|
|
.datahub-card:hover {
|
|
border-color: transparent;
|
|
background: var(--tile-surface-hover);
|
|
}
|
|
.datahub-card-mark {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 40px;
|
|
height: 40px;
|
|
border-radius: var(--legacy-radius-sm);
|
|
color: var(--button-accent-text);
|
|
background: var(--marking-color);
|
|
font-size: var(--ui-control-size);
|
|
font-weight: var(--ui-strong-weight);
|
|
letter-spacing: .05em;
|
|
}
|
|
.datahub-card-body {
|
|
display: grid;
|
|
gap: var(--legacy-space-1);
|
|
min-width: 0;
|
|
}
|
|
.datahub-card-body strong {
|
|
color: var(--heading);
|
|
font-size: var(--ui-body-size);
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
.datahub-card-body > span {
|
|
color: var(--muted);
|
|
font-size: var(--ui-control-size);
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.datahub-card-body small {
|
|
color: var(--muted);
|
|
font-size: var(--ui-small-size);
|
|
}
|
|
.datahub-card-arrow {
|
|
color: var(--muted);
|
|
font-size: var(--ui-body-size);
|
|
}
|
|
.datahub-create {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr auto;
|
|
align-items: end;
|
|
gap: var(--legacy-space-3);
|
|
padding: var(--legacy-space-5);
|
|
border: var(--border-hair) solid var(--line);
|
|
border-radius: var(--legacy-radius-sm);
|
|
background: var(--panel);
|
|
}
|
|
.datahub-create .datahub-section-heading {
|
|
grid-column: 1 / -1;
|
|
}
|
|
.datahub-create label {
|
|
display: grid;
|
|
gap: var(--legacy-space-2);
|
|
color: var(--heading);
|
|
font-size: var(--ui-control-size);
|
|
font-weight: var(--ui-label-weight);
|
|
}
|
|
.datahub-create label small {
|
|
color: var(--muted);
|
|
font-weight: 400;
|
|
}
|
|
.datahub-alert,
|
|
.datahub-empty,
|
|
.datahub-loading {
|
|
margin-top: var(--legacy-space-6);
|
|
border: var(--border-hair) solid var(--line);
|
|
border-radius: var(--legacy-radius-sm);
|
|
background: var(--panel);
|
|
}
|
|
.datahub-empty h3 {
|
|
margin: 0 0 var(--legacy-space-2);
|
|
color: var(--heading);
|
|
}
|
|
.datahub-empty p {
|
|
max-width: 650px;
|
|
color: var(--muted);
|
|
line-height: 1.5;
|
|
}
|
|
.datahub-alert {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--legacy-space-3);
|
|
padding: var(--legacy-space-3);
|
|
border-color: var(--danger);
|
|
color: var(--danger-text);
|
|
background: var(--danger-surface);
|
|
}
|
|
.datahub-empty {
|
|
padding: var(--space-7) var(--legacy-space-6);
|
|
text-align: center;
|
|
}
|
|
.datahub-empty p {
|
|
margin-inline: auto;
|
|
}
|
|
.datahub-loading {
|
|
display: flex;
|
|
justify-content: center;
|
|
gap: var(--legacy-space-3);
|
|
padding: var(--space-7);
|
|
color: var(--muted);
|
|
}
|
|
.datahub-loading i {
|
|
width: 14px;
|
|
height: 14px;
|
|
border: 2px solid var(--line-strong);
|
|
border-top-color: var(--marking-color);
|
|
border-radius: 50%;
|
|
animation: datahub-spin .8s linear infinite;
|
|
}
|
|
@keyframes datahub-spin {
|
|
to {
|
|
transform: rotate(360deg);
|
|
}
|
|
}
|
|
@media (max-width: 800px) {
|
|
.datahub-page {
|
|
padding: var(--panel-inset);
|
|
}
|
|
.datahub-hero {
|
|
align-items: flex-start;
|
|
flex-direction: column;
|
|
}
|
|
.datahub-create {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.datahub-create .datahub-section-heading {
|
|
grid-column: 1;
|
|
}
|
|
}
|
|
.btn.danger {
|
|
border: 1px solid var(--button-border);
|
|
border-radius: var(--btn-radius);
|
|
color: var(--button-text);
|
|
background: var(--button-bg);
|
|
}
|
|
.btn.danger:hover {
|
|
border-color: var(--button-border);
|
|
color: var(--sev-on);
|
|
background: var(--sev-critical);
|
|
}
|
|
.datahub-card {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: stretch;
|
|
justify-content: space-between;
|
|
min-height: 132px;
|
|
padding: var(--legacy-space-4);
|
|
}
|
|
.datahub-card-main {
|
|
display: grid;
|
|
grid-template-columns: 40px minmax(0, 1fr);
|
|
align-items: center;
|
|
gap: var(--legacy-space-3);
|
|
}
|
|
.datahub-card-actions {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: var(--legacy-space-2);
|
|
margin-top: var(--legacy-space-4);
|
|
padding-top: var(--legacy-space-3);
|
|
border-top: var(--border-hair) solid var(--line);
|
|
}
|
|
.datahub-card-actions .btn {
|
|
min-width: 60px;
|
|
}
|
|
.tenant-header {
|
|
display: grid;
|
|
grid-template-columns: 1fr auto;
|
|
gap: var(--legacy-space-6);
|
|
padding-bottom: var(--legacy-space-6);
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
}
|
|
.tenant-back {
|
|
grid-column: 1 / -1;
|
|
justify-self: start;
|
|
padding: 0;
|
|
border: 0;
|
|
color: var(--muted);
|
|
background: transparent;
|
|
font-size: var(--ui-control-size);
|
|
font-weight: var(--ui-label-weight);
|
|
}
|
|
.tenant-back:hover {
|
|
color: var(--heading);
|
|
}
|
|
.tenant-title {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--legacy-space-4);
|
|
min-width: 0;
|
|
}
|
|
.tenant-title .datahub-card-mark {
|
|
width: 46px;
|
|
height: 46px;
|
|
flex: 0 0 46px;
|
|
}
|
|
.tenant-title h2 {
|
|
margin: 0 0 var(--legacy-space-1);
|
|
color: var(--heading);
|
|
font-size: clamp(17px, 2vw, 22px);
|
|
line-height: 1.15;
|
|
}
|
|
.tenant-title p {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
}
|
|
.tenant-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--legacy-space-2);
|
|
}
|
|
.tenant-files {
|
|
margin-top: var(--legacy-space-6);
|
|
}
|
|
.tenant-file-table {
|
|
overflow: hidden;
|
|
border: var(--border-hair) solid var(--line);
|
|
border-radius: var(--legacy-radius-sm);
|
|
background: var(--panel);
|
|
}
|
|
.tenant-file-row {
|
|
display: grid;
|
|
grid-template-columns: 150px minmax(145px, .9fr) minmax(150px, 1.2fr) 72px 85px 145px 78px;
|
|
align-items: center;
|
|
gap: var(--legacy-space-3);
|
|
min-height: 48px;
|
|
padding: var(--legacy-space-2) var(--legacy-space-3);
|
|
border-top: var(--border-hair) solid var(--line);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.tenant-file-row:first-child {
|
|
border-top: 0;
|
|
}
|
|
.tenant-file-row:not(.tenant-file-head):hover {
|
|
background: var(--panel-hover);
|
|
}
|
|
.tenant-file-head {
|
|
min-height: var(--row-height);
|
|
color: var(--muted);
|
|
background: var(--panel-soft);
|
|
font-size: var(--ui-label-size);
|
|
font-weight: var(--ui-label-weight);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
}
|
|
.tenant-file-row > span {
|
|
min-width: 0;
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
}
|
|
.tenant-file-row b {
|
|
display: block;
|
|
color: var(--heading);
|
|
}
|
|
.tenant-file-row small {
|
|
display: block;
|
|
margin-top: 2px;
|
|
color: var(--muted);
|
|
}
|
|
.tenant-file-possible-duplicate {
|
|
border-left: 0;
|
|
}
|
|
.tenant-duplicate-badge {
|
|
width: fit-content;
|
|
padding: 1px var(--legacy-space-1);
|
|
border: var(--border-hair) solid var(--warning);
|
|
border-radius: var(--legacy-radius-sm);
|
|
color: var(--warning) !important;
|
|
background: transparent;
|
|
font-size: var(--ui-small-size);
|
|
font-weight: var(--ui-label-weight);
|
|
letter-spacing: .03em;
|
|
text-transform: uppercase;
|
|
}
|
|
.tenant-scan-delete {
|
|
min-width: 64px;
|
|
padding-inline: 8px;
|
|
}
|
|
.datahub-dialog-form {
|
|
display: grid;
|
|
gap: 16px;
|
|
}
|
|
.datahub-dialog-form label {
|
|
display: grid;
|
|
gap: 7px;
|
|
color: var(--heading);
|
|
font-size: var(--ui-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.datahub-dialog-form label small {
|
|
color: var(--muted);
|
|
font-weight: 400;
|
|
}
|
|
.datahub-dialog-form textarea {
|
|
min-height: 100px;
|
|
resize: vertical;
|
|
}
|
|
.datahub-dialog-form footer,
|
|
.datahub-delete-warning footer {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: 8px;
|
|
margin-top: 4px;
|
|
padding-top: 16px;
|
|
border-top: 1px solid var(--line);
|
|
}
|
|
.datahub-delete-warning {
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
.datahub-delete-warning > strong {
|
|
color: var(--heading);
|
|
font-size: var(--ui-heading-size);
|
|
}
|
|
.datahub-delete-warning p {
|
|
color: var(--muted);
|
|
line-height: 1.6;
|
|
}
|
|
@media (max-width: 1050px) {
|
|
.tenant-file-head {
|
|
display: none;
|
|
}
|
|
.tenant-file-row {
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 8px 18px;
|
|
padding: 16px;
|
|
}
|
|
.tenant-file-row > span::before {
|
|
content: attr(data-label);
|
|
display: block;
|
|
margin-bottom: 3px;
|
|
color: var(--muted);
|
|
font-size: var(--ui-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: var(--ls-caps);
|
|
text-transform: uppercase;
|
|
}
|
|
}
|
|
@media (max-width: 800px) {
|
|
.tenant-header {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.tenant-actions {
|
|
flex-wrap: wrap;
|
|
}
|
|
.tenant-file-row {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.datahub-card-actions {
|
|
flex-wrap: wrap;
|
|
}
|
|
}
|
|
.datahub-card.active {
|
|
border-color: var(--tile-selected-border);
|
|
outline: var(--bw-emphasis) solid var(--tile-selected-border);
|
|
outline-offset: calc(-1 * var(--bw-emphasis));
|
|
background: var(--tile-surface-hover);
|
|
}
|
|
.tenant-editor-header {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
align-items: end;
|
|
gap: var(--legacy-space-5);
|
|
padding-bottom: var(--legacy-space-6);
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
}
|
|
.tenant-editor-header .tenant-back {
|
|
grid-column: 1 / -1;
|
|
}
|
|
.tenant-editor-header h2 {
|
|
margin: var(--legacy-space-1) 0;
|
|
color: var(--heading);
|
|
font-size: clamp(17px, 2vw, 22px);
|
|
line-height: 1.15;
|
|
letter-spacing: -.01em;
|
|
}
|
|
.tenant-editor-header p {
|
|
max-width: 680px;
|
|
margin: 0;
|
|
color: var(--muted);
|
|
line-height: 1.5;
|
|
}
|
|
.tenant-editor {
|
|
margin-top: var(--legacy-space-6);
|
|
padding: var(--legacy-space-5);
|
|
border: var(--border-hair) solid var(--line);
|
|
border-radius: var(--legacy-radius-sm);
|
|
background: var(--panel);
|
|
}
|
|
.tenant-editor-form {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
|
gap: var(--legacy-space-4);
|
|
}
|
|
.tenant-editor-form label {
|
|
display: grid;
|
|
grid-template-columns: auto 1fr;
|
|
gap: var(--legacy-space-2);
|
|
color: var(--heading);
|
|
font-size: var(--ui-control-size);
|
|
font-weight: var(--ui-label-weight);
|
|
}
|
|
.tenant-editor-form label > span {
|
|
justify-self: end;
|
|
color: var(--muted);
|
|
font-size: var(--ui-small-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.tenant-editor-form .input {
|
|
grid-column: 1 / -1;
|
|
}
|
|
.tenant-editor-description {
|
|
grid-column: 1 / -1;
|
|
}
|
|
.tenant-editor-description textarea {
|
|
min-height: 118px;
|
|
resize: vertical;
|
|
}
|
|
.tenant-editor-form footer {
|
|
display: flex;
|
|
grid-column: 1 / -1;
|
|
justify-content: flex-end;
|
|
gap: var(--legacy-space-2);
|
|
padding-top: var(--legacy-space-4);
|
|
border-top: var(--border-hair) solid var(--line);
|
|
}
|
|
.tenant-import-pending {
|
|
margin-top: var(--legacy-space-5);
|
|
padding: var(--legacy-space-5);
|
|
border: var(--border-hair) dashed var(--line-strong);
|
|
border-radius: var(--legacy-radius-sm);
|
|
background: var(--panel);
|
|
}
|
|
.tenant-import-pending > span {
|
|
color: var(--muted);
|
|
font-size: var(--ui-label-size);
|
|
font-weight: var(--ui-label-weight);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
}
|
|
.tenant-import-pending h3 {
|
|
margin: 6px 0;
|
|
color: var(--heading);
|
|
}
|
|
.tenant-import-pending p {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
line-height: 1.55;
|
|
}
|
|
.tenant-files-empty {
|
|
padding-block: 36px;
|
|
}
|
|
@media (max-width: 800px) {
|
|
.tenant-editor-header {
|
|
grid-template-columns: 1fr;
|
|
align-items: start;
|
|
}
|
|
.tenant-editor-form {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.tenant-editor-description,
|
|
.tenant-editor-form footer {
|
|
grid-column: 1;
|
|
}
|
|
}
|
|
.viewer.app-area-data-hub,
|
|
.viewer.app-area-dashboard,
|
|
.viewer.app-area-db-structure {
|
|
overflow-x: hidden;
|
|
overflow-y: auto;
|
|
background: var(--surface-app);
|
|
scrollbar-color: var(--line-strong) var(--surface-app);
|
|
scrollbar-width: thin;
|
|
}
|
|
.viewer.app-area-data-hub {
|
|
scrollbar-gutter: stable;
|
|
}
|
|
.datahub-page {
|
|
box-sizing: border-box;
|
|
min-height: 100%;
|
|
background: var(--surface-app);
|
|
}
|
|
.datahub-card {
|
|
border-radius: var(--tile-radius);
|
|
box-shadow: var(--tile-card-shadow);
|
|
}
|
|
.tenant-editor,
|
|
.tenant-file-table,
|
|
.tenant-import-pending {
|
|
border-radius: var(--legacy-radius-sm);
|
|
box-shadow: var(--shadow);
|
|
}
|
|
.tenant-editor-header {
|
|
align-items: center;
|
|
}
|
|
.tenant-editor-header h2 {
|
|
font-weight: var(--ui-strong-weight);
|
|
letter-spacing: -.01em;
|
|
}
|
|
.tenant-editor {
|
|
padding: var(--legacy-space-5);
|
|
}
|
|
.tenant-file-table {
|
|
overflow-x: auto;
|
|
overflow-y: visible;
|
|
}
|
|
.tenant-file-row {
|
|
min-width: 860px;
|
|
min-height: 54px;
|
|
}
|
|
.tenant-save-feedback {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--legacy-space-3);
|
|
margin-top: var(--legacy-space-3);
|
|
padding: var(--legacy-space-2) var(--legacy-space-3);
|
|
border: var(--border-hair) solid var(--line);
|
|
border-left-width: 3px;
|
|
border-radius: var(--legacy-radius-sm);
|
|
background: var(--panel);
|
|
font-size: var(--ui-body-size);
|
|
}
|
|
.tenant-save-feedback > span {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 18px;
|
|
height: 18px;
|
|
color: var(--sev-on);
|
|
border-radius: 50%;
|
|
font-weight: var(--ui-strong-weight);
|
|
}
|
|
.tenant-save-feedback.success {
|
|
border-left-color: var(--success);
|
|
color: var(--heading);
|
|
}
|
|
.tenant-save-feedback.success > span {
|
|
background: var(--success);
|
|
}
|
|
.tenant-save-feedback.error {
|
|
border-left-color: var(--danger);
|
|
color: var(--heading);
|
|
}
|
|
.tenant-save-feedback.error > span {
|
|
background: var(--danger);
|
|
}
|
|
@media (max-width: 1050px) {
|
|
.tenant-file-row {
|
|
min-width: 0;
|
|
}
|
|
}
|
|
.tenant-actions {
|
|
flex-wrap: wrap;
|
|
}
|
|
.gpo-folder-import {
|
|
display: contents;
|
|
}
|
|
.gpo-folder-actions {
|
|
position: relative;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
.gpo-folder-feedback {
|
|
position: absolute;
|
|
z-index: 5;
|
|
top: calc(100% + var(--legacy-space-2));
|
|
right: 0;
|
|
width: min(420px, 75vw);
|
|
padding: var(--legacy-space-2) var(--legacy-space-3);
|
|
border: var(--border-hair) solid var(--line-strong);
|
|
border-left-width: 3px;
|
|
border-radius: var(--legacy-radius-sm);
|
|
color: var(--heading);
|
|
background: var(--panel-raised);
|
|
font-size: var(--ui-control-size);
|
|
line-height: 1.45;
|
|
box-shadow: var(--shadow);
|
|
}
|
|
.gpo-folder-feedback.success {
|
|
border-left-color: var(--success);
|
|
}
|
|
.gpo-folder-feedback.error {
|
|
border-left-color: var(--danger);
|
|
}
|
|
.gpo-status-panel {
|
|
order: 10;
|
|
flex: 1 0 100%;
|
|
min-width: 0;
|
|
margin-top: var(--legacy-space-3);
|
|
padding: var(--legacy-space-3);
|
|
border: var(--border-hair) solid var(--line);
|
|
border-radius: var(--legacy-radius-sm);
|
|
background: var(--panel);
|
|
}
|
|
.gpo-status-heading {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--legacy-space-3);
|
|
margin-bottom: var(--legacy-space-2);
|
|
color: var(--heading);
|
|
}
|
|
.gpo-status-empty {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
font-size: var(--ui-body-size);
|
|
}
|
|
.gpo-status-list {
|
|
display: grid;
|
|
gap: var(--legacy-space-2);
|
|
}
|
|
.gpo-status-item {
|
|
display: grid;
|
|
grid-template-columns: minmax(220px, 1fr) minmax(260px, auto);
|
|
gap: var(--legacy-space-4);
|
|
padding: var(--legacy-space-2) var(--legacy-space-3);
|
|
border: var(--border-hair) solid var(--line);
|
|
border-left: 3px solid var(--state-progress);
|
|
background: var(--panel-raised);
|
|
}
|
|
.gpo-status-item > div {
|
|
display: grid;
|
|
gap: var(--legacy-space-1);
|
|
min-width: 0;
|
|
}
|
|
.gpo-status-item strong {
|
|
color: var(--heading);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.gpo-status-item span {
|
|
color: var(--muted);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.gpo-status-result {
|
|
justify-items: end;
|
|
text-align: right;
|
|
}
|
|
.gpo-status-item.state-succeeded {
|
|
border-left-color: var(--success);
|
|
}
|
|
.gpo-status-item.state-partial,
|
|
.gpo-status-item.state-recovery-required,
|
|
.gpo-status-item.state-upload-required,
|
|
.gpo-status-item.state-storage-unavailable {
|
|
border-left-color: var(--warning);
|
|
}
|
|
.gpo-status-item.state-dead-letter {
|
|
border-left-color: var(--danger);
|
|
}
|
|
.gpo-status-item code {
|
|
color: var(--danger-text);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.gpo-status-actions {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: var(--legacy-space-2);
|
|
margin-top: var(--legacy-space-1);
|
|
}
|
|
@media (max-width: 760px) {
|
|
.gpo-status-item {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.gpo-status-result {
|
|
justify-items: start;
|
|
text-align: left;
|
|
}
|
|
}
|
|
.gpo-status-error {
|
|
color: var(--warning);
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 0.35rem;
|
|
justify-content: flex-end;
|
|
}
|
|
.gpo-status-error code {
|
|
color: inherit;
|
|
}
|
|
.db-structure-page > *,
|
|
.results-browser-page > * {
|
|
width: 100% !important;
|
|
max-width: none !important;
|
|
margin-inline: 0 !important;
|
|
}
|
|
.dashboard-page {
|
|
box-sizing: border-box;
|
|
display: grid;
|
|
align-content: start;
|
|
gap: var(--space-4);
|
|
width: 100%;
|
|
min-height: 100%;
|
|
padding: var(--panel-inset);
|
|
color: var(--text);
|
|
background: var(--surface-app);
|
|
container-type: inline-size;
|
|
}
|
|
.dashboard-page.panel-is-loading {
|
|
grid-template-rows: auto minmax(0, 1fr);
|
|
align-content: stretch;
|
|
}
|
|
.dashboard-page.panel-is-loading .panel-loading-state {
|
|
min-height: 0;
|
|
}
|
|
.dashboard-context {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: var(--space-2) var(--space-5);
|
|
margin: 0;
|
|
padding: 0 var(--space-2);
|
|
color: var(--muted);
|
|
font-size: var(--ui-label-size);
|
|
}
|
|
.dashboard-context strong {
|
|
color: var(--heading);
|
|
font-size: var(--ui-body-size);
|
|
}
|
|
.dashboard-context .work-timeslot-select {
|
|
margin-left: auto;
|
|
}
|
|
.dashboard-status-rack {
|
|
display: grid;
|
|
grid-template-columns: 290px repeat(3, 210px) 250px;
|
|
justify-content: start;
|
|
gap: var(--segment-gap);
|
|
padding: var(--segment-inset);
|
|
border: var(--border-hair) solid var(--segment-border);
|
|
border-radius: var(--segment-radius);
|
|
background: var(--segment-surface);
|
|
}
|
|
.dashboard-status-metric {
|
|
display: grid;
|
|
grid-template-columns: 98px minmax(0, 1fr);
|
|
align-items: center;
|
|
gap: var(--space-3);
|
|
min-width: 0;
|
|
min-height: 190px;
|
|
padding: var(--space-3);
|
|
overflow: hidden;
|
|
border: var(--border-hair) solid var(--tile-border);
|
|
border-radius: var(--tile-radius);
|
|
color: var(--text);
|
|
background: var(--tile-surface);
|
|
box-shadow: var(--tile-card-shadow);
|
|
text-align: left;
|
|
}
|
|
button.dashboard-status-metric {
|
|
cursor: pointer;
|
|
}
|
|
button.dashboard-status-metric:hover {
|
|
border-color: transparent;
|
|
background: var(--tile-surface-hover);
|
|
}
|
|
button.dashboard-status-metric:focus-visible {
|
|
outline: var(--border-hair) solid var(--focus-ring);
|
|
outline-offset: -1px;
|
|
}
|
|
button.dashboard-status-metric[aria-pressed=true] {
|
|
border-color: var(--tile-selected-border);
|
|
outline: var(--bw-emphasis) solid var(--tile-selected-border);
|
|
outline-offset: calc(-1 * var(--bw-emphasis));
|
|
}
|
|
.dashboard-status-metric-large {
|
|
grid-template-columns: 154px minmax(0, 1fr);
|
|
}
|
|
.dashboard-status-ring {
|
|
position: relative;
|
|
width: 98px;
|
|
height: 98px;
|
|
color: var(--donut-all);
|
|
}
|
|
.dashboard-status-metric-large .dashboard-status-ring {
|
|
width: 154px;
|
|
height: 154px;
|
|
}
|
|
.dashboard-status-ring svg {
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
transform: rotate(-90deg);
|
|
}
|
|
.dashboard-status-ring circle {
|
|
fill: none;
|
|
stroke-width: var(--donut-ring-stroke);
|
|
}
|
|
.dashboard-status-ring-track {
|
|
stroke: var(--donut-track);
|
|
}
|
|
.dashboard-status-ring-progress {
|
|
stroke: currentColor;
|
|
}
|
|
.dashboard-status-ring > span {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: flex;
|
|
align-items: flex-start;
|
|
justify-content: center;
|
|
padding-top: 36px;
|
|
color: var(--heading);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.dashboard-status-metric-large .dashboard-status-ring > span {
|
|
padding-top: 57px;
|
|
}
|
|
.dashboard-donut-primary {
|
|
position: relative;
|
|
display: block;
|
|
line-height: 1;
|
|
}
|
|
.dashboard-status-ring > span strong {
|
|
display: block;
|
|
font: var(--fw-semibold) var(--donut-value-size) / 1 var(--font-donut-display);
|
|
}
|
|
.dashboard-status-metric-large .dashboard-status-ring > span strong {
|
|
font-size: calc(var(--donut-value-size) * 1.45);
|
|
}
|
|
.dashboard-status-ring > span small {
|
|
position: absolute;
|
|
left: calc(100% + var(--space-1));
|
|
bottom: 0;
|
|
color: var(--heading);
|
|
font-size: var(--donut-percent-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.dashboard-status-ring .dashboard-donut-primary.is-compact strong,
|
|
.dashboard-risk-donut .dashboard-donut-primary.is-compact strong {
|
|
font-size: calc(var(--donut-value-size) * .85);
|
|
}
|
|
.dashboard-status-ring .dashboard-donut-primary.is-compact small,
|
|
.dashboard-risk-donut .dashboard-donut-primary.is-compact small {
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.dashboard-status-ring-deviation {
|
|
color: var(--donut-error);
|
|
}
|
|
.dashboard-status-ring-passed {
|
|
color: var(--donut-passed);
|
|
}
|
|
.dashboard-status-ring-not-run {
|
|
color: var(--donut-deviation);
|
|
}
|
|
.dashboard-status-copy {
|
|
display: grid;
|
|
gap: var(--space-3);
|
|
min-width: 0;
|
|
max-width: 100%;
|
|
overflow: hidden;
|
|
}
|
|
.dashboard-status-copy > span {
|
|
min-width: 0;
|
|
color: var(--heading);
|
|
font-size: var(--ui-body-size);
|
|
overflow-wrap: normal;
|
|
word-break: normal;
|
|
hyphens: manual;
|
|
}
|
|
.dashboard-status-copy > strong {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
min-width: 0;
|
|
color: var(--heading);
|
|
font-size: calc(var(--ui-heading-size) * 1.35);
|
|
font-variant-numeric: tabular-nums;
|
|
white-space: normal;
|
|
}
|
|
.dashboard-status-copy > small {
|
|
display: block;
|
|
color: var(--muted);
|
|
font-size: var(--ui-body-size);
|
|
font-weight: var(--fw-regular);
|
|
line-height: 1.35;
|
|
overflow-wrap: normal;
|
|
word-break: normal;
|
|
hyphens: manual;
|
|
}
|
|
.dashboard-status-summary {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) minmax(100px, .8fr);
|
|
align-items: stretch;
|
|
min-width: 0;
|
|
min-height: 190px;
|
|
padding: var(--space-4);
|
|
overflow: hidden;
|
|
border: var(--border-hair) solid var(--tile-border);
|
|
border-radius: var(--tile-radius);
|
|
background: var(--tile-surface);
|
|
box-shadow: var(--tile-card-shadow);
|
|
}
|
|
.dashboard-status-summary-stack {
|
|
display: grid;
|
|
align-content: center;
|
|
padding-right: var(--space-4);
|
|
border-right: var(--border-hair) solid var(--line-strong);
|
|
}
|
|
.dashboard-status-summary-stack button {
|
|
display: grid;
|
|
gap: var(--space-2);
|
|
min-height: 64px;
|
|
padding: var(--space-2);
|
|
border: 0;
|
|
border-radius: 0;
|
|
color: var(--text);
|
|
background: transparent;
|
|
text-align: left;
|
|
cursor: pointer;
|
|
}
|
|
.dashboard-status-summary-stack button + button {
|
|
border-top: var(--border-hair) solid var(--line);
|
|
}
|
|
.dashboard-status-summary-stack button:hover {
|
|
background: var(--panel-hover);
|
|
}
|
|
.dashboard-status-summary-stack button:focus-visible {
|
|
outline: var(--border-hair) solid var(--focus-ring);
|
|
outline-offset: -1px;
|
|
}
|
|
.dashboard-status-summary-stack span,
|
|
.dashboard-ioe-summary span {
|
|
color: var(--heading);
|
|
font-size: var(--ui-body-size);
|
|
}
|
|
.dashboard-status-summary-stack strong {
|
|
color: var(--heading);
|
|
font-size: var(--ui-body-size);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.dashboard-ioe-summary {
|
|
display: grid;
|
|
align-content: center;
|
|
gap: var(--space-4);
|
|
min-width: 0;
|
|
padding: 0 0 0 var(--space-5);
|
|
border: 0;
|
|
color: inherit;
|
|
background: transparent;
|
|
text-align: left;
|
|
cursor: pointer;
|
|
}
|
|
.dashboard-ioe-summary:focus-visible {
|
|
outline: var(--border-hair) solid var(--focus-ring);
|
|
outline-offset: -1px;
|
|
}
|
|
.dashboard-ioe-summary:disabled {
|
|
cursor: default;
|
|
}
|
|
.dashboard-ioe-summary strong {
|
|
color: var(--chart-tone-emphasis);
|
|
font: var(--fw-semibold) calc(var(--donut-value-size) * 1.45) / 1 var(--font-donut-display);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.dashboard-distribution-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: var(--segment-gap);
|
|
padding: var(--segment-inset);
|
|
border: var(--border-hair) solid var(--segment-border);
|
|
border-radius: var(--segment-radius);
|
|
background: var(--segment-surface);
|
|
}
|
|
.dashboard-lower-grid {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1.15fr) minmax(420px, 1fr);
|
|
align-items: stretch;
|
|
gap: var(--segment-gap);
|
|
padding: var(--segment-inset);
|
|
border: var(--border-hair) solid var(--segment-border);
|
|
border-radius: var(--segment-radius);
|
|
background: var(--segment-surface);
|
|
}
|
|
.dashboard-environment {
|
|
min-width: 0;
|
|
margin: 0;
|
|
padding: var(--space-4);
|
|
overflow: hidden;
|
|
border: var(--border-hair) solid var(--tile-border);
|
|
border-radius: var(--tile-radius);
|
|
background: var(--tile-surface);
|
|
box-shadow: var(--tile-card-shadow);
|
|
}
|
|
.dashboard-environment .datahub-section-heading h2,
|
|
.dashboard-block h2 {
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--ui-body-size);
|
|
font-weight: var(--ui-label-weight);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
}
|
|
.dashboard-coverage-summary {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
margin-bottom: var(--space-4);
|
|
padding-bottom: var(--space-4);
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
}
|
|
.dashboard-coverage-summary > span {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
min-width: 0;
|
|
padding: 0 var(--space-3);
|
|
text-align: center;
|
|
}
|
|
.dashboard-coverage-summary > span + span {
|
|
border-left: var(--border-hair) solid var(--line-strong);
|
|
}
|
|
.dashboard-coverage-summary strong {
|
|
color: var(--heading);
|
|
font-size: var(--ui-heading-size);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.dashboard-coverage-summary small {
|
|
color: var(--muted);
|
|
font-size: var(--ui-label-size);
|
|
}
|
|
.dashboard-facts {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: var(--space-3) var(--space-5);
|
|
margin: 0;
|
|
}
|
|
.dashboard-facts div {
|
|
min-width: 0;
|
|
}
|
|
.dashboard-facts dt {
|
|
margin-bottom: var(--legacy-space-1);
|
|
color: var(--muted);
|
|
font-size: var(--ui-label-size);
|
|
}
|
|
.dashboard-facts dd {
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--ui-body-size);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.dashboard-block {
|
|
min-width: 0;
|
|
padding: var(--space-4);
|
|
overflow: hidden;
|
|
border: var(--border-hair) solid var(--tile-border);
|
|
border-radius: var(--tile-radius);
|
|
background: var(--tile-surface);
|
|
box-shadow: var(--tile-card-shadow);
|
|
}
|
|
.dashboard-distribution {
|
|
display: grid;
|
|
align-content: start;
|
|
gap: var(--space-4);
|
|
}
|
|
.dashboard-segmented-bar {
|
|
display: flex;
|
|
width: 100%;
|
|
height: 28px;
|
|
overflow: hidden;
|
|
border-radius: var(--tile-radius);
|
|
background: var(--surface-active);
|
|
}
|
|
.dashboard-segment {
|
|
--share: 0%;
|
|
flex: 0 0 var(--share);
|
|
min-width: 2px;
|
|
height: 100%;
|
|
background: var(--severity, var(--viz-1));
|
|
}
|
|
.dashboard-segment + .dashboard-segment {
|
|
border-left: var(--border-hair) solid var(--surface-panel);
|
|
}
|
|
.dashboard-distribution-legend {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
|
|
gap: var(--space-2);
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
.dashboard-legend-button {
|
|
display: flex;
|
|
align-items: flex-start;
|
|
gap: var(--space-2);
|
|
width: 100%;
|
|
min-height: 52px;
|
|
padding: var(--space-2);
|
|
border: var(--border-hair) solid transparent;
|
|
border-radius: var(--btn-radius);
|
|
color: var(--text);
|
|
background: transparent;
|
|
text-align: left;
|
|
cursor: pointer;
|
|
}
|
|
.dashboard-legend-button:hover {
|
|
border-color: var(--line);
|
|
background: var(--panel-hover);
|
|
}
|
|
.dashboard-legend-button:focus-visible {
|
|
outline: var(--border-hair) solid var(--focus-ring);
|
|
outline-offset: -1px;
|
|
}
|
|
.dashboard-legend-swatch {
|
|
flex: 0 0 10px;
|
|
width: 10px;
|
|
height: 10px;
|
|
margin-top: 3px;
|
|
background: var(--severity, var(--viz-1));
|
|
}
|
|
.dashboard-legend-copy {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
min-width: 0;
|
|
color: var(--muted);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.dashboard-legend-copy > span {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.dashboard-legend-copy strong {
|
|
color: var(--heading);
|
|
font-size: var(--ui-body-size);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.dashboard-legend-copy small {
|
|
color: var(--muted);
|
|
font-size: var(--ui-control-size);
|
|
font-weight: var(--fw-regular);
|
|
}
|
|
.dashboard-viz-1 {
|
|
--severity: var(--viz-1);
|
|
}
|
|
.dashboard-viz-2 {
|
|
--severity: var(--viz-2);
|
|
}
|
|
.dashboard-viz-3 {
|
|
--severity: var(--viz-3);
|
|
}
|
|
.dashboard-viz-4 {
|
|
--severity: var(--viz-4);
|
|
}
|
|
.dashboard-viz-5 {
|
|
--severity: var(--viz-5);
|
|
}
|
|
.dashboard-viz-6 {
|
|
--severity: var(--viz-6);
|
|
}
|
|
.severity-dashboard-cis-cat-without-severity {
|
|
--severity: var(--donut-not-run);
|
|
}
|
|
.dashboard-empty {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.dashboard-risk-profile {
|
|
display: grid;
|
|
align-content: start;
|
|
}
|
|
.dashboard-risk-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--space-4);
|
|
min-height: 32px;
|
|
}
|
|
.dashboard-risk-tool {
|
|
min-height: 30px;
|
|
max-width: min(100%, 320px);
|
|
padding: var(--space-1) var(--space-2);
|
|
border: var(--border-hair) solid transparent;
|
|
border-radius: 0;
|
|
color: var(--heading);
|
|
background-color: transparent;
|
|
font-size: var(--ui-body-size);
|
|
font-weight: var(--ui-label-weight);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
cursor: pointer;
|
|
}
|
|
.dashboard-risk-tool:hover {
|
|
border-color: var(--line-strong);
|
|
background-color: var(--panel-hover);
|
|
}
|
|
.dashboard-risk-tool:focus-visible {
|
|
border-color: var(--focus-ring);
|
|
outline: var(--border-hair) solid var(--focus-ring);
|
|
outline-offset: -1px;
|
|
}
|
|
.dashboard-risk-tool option {
|
|
color: var(--text);
|
|
background-color: var(--surface-input);
|
|
text-transform: none;
|
|
}
|
|
.dashboard-marked-summary {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--space-5);
|
|
min-width: 240px;
|
|
padding: var(--space-2) var(--space-3);
|
|
border: var(--border-hair) solid var(--line);
|
|
color: var(--muted);
|
|
font-size: var(--ui-label-size);
|
|
}
|
|
.dashboard-marked-summary strong {
|
|
color: var(--heading);
|
|
font-size: var(--ui-body-size);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.dashboard-risk-body {
|
|
display: grid;
|
|
grid-template-columns: minmax(180px, .8fr) minmax(280px, 1.2fr);
|
|
min-height: 190px;
|
|
margin-top: var(--space-4);
|
|
}
|
|
.dashboard-risk-categories,
|
|
.dashboard-risk-legend {
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
.dashboard-risk-categories {
|
|
display: grid;
|
|
align-content: center;
|
|
padding-right: var(--space-5);
|
|
border-right: var(--border-hair) solid var(--line-strong);
|
|
}
|
|
.dashboard-risk-categories li + li {
|
|
border-top: var(--border-hair) solid var(--line);
|
|
}
|
|
.dashboard-risk-categories button,
|
|
.dashboard-risk-legend button {
|
|
display: grid;
|
|
align-items: center;
|
|
width: 100%;
|
|
min-height: 42px;
|
|
padding: var(--space-2);
|
|
border: 0;
|
|
border-radius: 0;
|
|
color: var(--text);
|
|
background: transparent;
|
|
text-align: left;
|
|
cursor: pointer;
|
|
}
|
|
.dashboard-risk-categories button {
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: var(--space-3);
|
|
}
|
|
.dashboard-risk-categories button:hover,
|
|
.dashboard-risk-legend button:hover {
|
|
background: var(--panel-hover);
|
|
}
|
|
.dashboard-risk-categories button:focus-visible,
|
|
.dashboard-risk-legend button:focus-visible {
|
|
outline: var(--border-hair) solid var(--focus-ring);
|
|
outline-offset: -1px;
|
|
}
|
|
.dashboard-risk-categories span,
|
|
.dashboard-risk-legend span {
|
|
min-width: 0;
|
|
overflow: hidden;
|
|
font-size: var(--ui-body-size);
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.dashboard-risk-categories strong,
|
|
.dashboard-risk-legend strong {
|
|
color: var(--heading);
|
|
font-size: var(--ui-body-size);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.dashboard-risk-severity {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: var(--space-5);
|
|
min-width: 0;
|
|
padding-left: var(--space-5);
|
|
}
|
|
.dashboard-risk-donut {
|
|
position: relative;
|
|
flex: 0 0 150px;
|
|
width: 150px;
|
|
height: 150px;
|
|
overflow: visible;
|
|
}
|
|
.dashboard-risk-donut svg {
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow: visible;
|
|
transform: rotate(-90deg);
|
|
}
|
|
.dashboard-risk-donut circle {
|
|
fill: none;
|
|
stroke-width: var(--donut-ring-stroke);
|
|
}
|
|
.dashboard-risk-donut-track {
|
|
stroke: var(--donut-track);
|
|
}
|
|
.dashboard-risk-donut-segment {
|
|
stroke: var(--severity, var(--info));
|
|
}
|
|
.dashboard-risk-donut > span {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: flex;
|
|
align-items: flex-start;
|
|
justify-content: center;
|
|
padding-top: 57px;
|
|
color: var(--heading);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.dashboard-risk-donut > span strong {
|
|
display: block;
|
|
font: var(--fw-semibold) calc(var(--donut-value-size) * 1.45) / 1 var(--font-donut-display);
|
|
}
|
|
.dashboard-risk-donut > span small {
|
|
position: absolute;
|
|
left: calc(100% + var(--space-1));
|
|
bottom: 0;
|
|
font-size: var(--donut-percent-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.dashboard-risk-legend {
|
|
flex: 1 1 auto;
|
|
min-width: 120px;
|
|
}
|
|
.dashboard-risk-legend button {
|
|
grid-template-columns: 12px minmax(0, 1fr) auto;
|
|
gap: var(--space-3);
|
|
}
|
|
.dashboard-risk-legend i {
|
|
width: 12px;
|
|
height: 12px;
|
|
background: var(--severity, var(--info));
|
|
}
|
|
@media (max-width: 1400px) {
|
|
.dashboard-status-rack {
|
|
grid-template-columns: repeat(2, minmax(0, 290px));
|
|
}
|
|
.dashboard-status-summary {
|
|
grid-column: 1 / -1;
|
|
}
|
|
.dashboard-distribution-grid,
|
|
.dashboard-lower-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
@media (max-width: 760px) {
|
|
.dashboard-status-rack {
|
|
grid-template-columns: minmax(0, 290px);
|
|
}
|
|
.dashboard-status-summary {
|
|
grid-column: auto;
|
|
}
|
|
.dashboard-coverage-summary,
|
|
.dashboard-facts {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
.dashboard-risk-body {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.dashboard-risk-categories {
|
|
padding-right: 0;
|
|
padding-bottom: var(--space-4);
|
|
border-right: 0;
|
|
border-bottom: var(--border-hair) solid var(--line-strong);
|
|
}
|
|
.dashboard-risk-severity {
|
|
padding: var(--space-4) 0 0;
|
|
}
|
|
}
|
|
.client-info-tile-grid {
|
|
display: grid;
|
|
gap: var(--segment-gap);
|
|
}
|
|
.client-info-metric-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
gap: var(--segment-gap);
|
|
}
|
|
.client-info-top-row {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 3fr) minmax(320px, 1fr);
|
|
align-items: stretch;
|
|
gap: var(--segment-gap);
|
|
min-width: 0;
|
|
}
|
|
.client-info-metric {
|
|
display: grid;
|
|
align-content: space-between;
|
|
align-self: start;
|
|
gap: var(--space-2);
|
|
width: 100%;
|
|
min-width: 0;
|
|
aspect-ratio: 1;
|
|
min-height: 0;
|
|
padding: var(--space-3);
|
|
border: 0;
|
|
border-radius: var(--radius-sm);
|
|
color: var(--text);
|
|
background: var(--tile-surface);
|
|
box-shadow: none;
|
|
text-align: left;
|
|
}
|
|
button.client-info-metric {
|
|
cursor: pointer;
|
|
}
|
|
button.client-info-metric:hover {
|
|
border-color: transparent;
|
|
background: var(--tile-surface-hover);
|
|
}
|
|
button.client-info-metric:focus-visible {
|
|
outline: var(--bw-emphasis) solid var(--focus-ring);
|
|
outline-offset: calc(-1 * var(--bw-emphasis));
|
|
}
|
|
button.client-info-metric[aria-pressed=true] {
|
|
border-color: var(--tile-selected-border);
|
|
outline: var(--bw-emphasis) solid var(--tile-selected-border);
|
|
outline-offset: calc(-1 * var(--bw-emphasis));
|
|
}
|
|
.client-info-metric > span {
|
|
color: var(--heading);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.25;
|
|
}
|
|
.client-info-top-row > .client-info-metric-grid .client-info-metric {
|
|
align-self: stretch;
|
|
height: 100%;
|
|
min-height: 220px;
|
|
aspect-ratio: auto;
|
|
}
|
|
.client-info-metric > strong {
|
|
color: var(--chart-color, var(--heading));
|
|
font-size: calc(var(--type-h1-size) * .84);
|
|
font-weight: var(--fw-regular);
|
|
line-height: 1;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.client-info-metric.is-emphasis > strong {
|
|
font-size: var(--type-h1-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.client-info-card-column {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-self: start;
|
|
gap: var(--segment-gap);
|
|
min-width: 0;
|
|
}
|
|
.client-info-panels-layout {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 3fr) minmax(320px, 1fr);
|
|
align-items: start;
|
|
gap: var(--segment-gap);
|
|
min-width: 0;
|
|
}
|
|
.client-info-donut-rail {
|
|
display: grid;
|
|
align-content: start;
|
|
gap: var(--segment-gap);
|
|
min-width: 0;
|
|
}
|
|
.client-info-card {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 0;
|
|
min-width: 0;
|
|
min-height: min-content;
|
|
align-self: stretch;
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: var(--radius-sm);
|
|
color: var(--text);
|
|
background: var(--tile-surface);
|
|
box-shadow: none;
|
|
}
|
|
.client-info-card.is-collapsed {
|
|
align-self: start;
|
|
width: 100%;
|
|
}
|
|
.client-info-card > header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--space-5);
|
|
min-height: 60px;
|
|
padding: var(--space-3) var(--space-5);
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
cursor: pointer;
|
|
}
|
|
.client-info-card > header:hover {
|
|
background: var(--tile-surface-hover);
|
|
}
|
|
.client-info-card.is-collapsed > header {
|
|
flex: 1 1 auto;
|
|
border-bottom: 0;
|
|
}
|
|
.client-info-card-heading {
|
|
display: flex;
|
|
align-items: baseline;
|
|
flex-wrap: wrap;
|
|
gap: var(--space-2);
|
|
min-width: 0;
|
|
}
|
|
.client-info-card-heading h2 {
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.35;
|
|
}
|
|
.client-info-card-heading > span {
|
|
color: var(--muted);
|
|
font-size: var(--type-h4-size);
|
|
font-variant-numeric: tabular-nums;
|
|
line-height: 1.35;
|
|
}
|
|
.client-info-card-heading .client-info-card-meta {
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.client-info-card-toggle {
|
|
flex: 0 0 auto;
|
|
display: grid;
|
|
place-items: center;
|
|
width: 36px;
|
|
height: 36px;
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: 0;
|
|
color: var(--heading);
|
|
background: transparent;
|
|
cursor: pointer;
|
|
}
|
|
.client-info-card-toggle .triangle-icon {
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
.client-info-card-toggle:hover {
|
|
border-color: var(--line-strong);
|
|
}
|
|
.client-info-card-toggle:focus-visible {
|
|
outline: var(--bw-emphasis) solid var(--focus-ring);
|
|
outline-offset: 1px;
|
|
}
|
|
.client-info-card-content {
|
|
display: grid;
|
|
align-content: start;
|
|
min-width: 0;
|
|
}
|
|
.client-info-card-details {
|
|
display: grid;
|
|
align-content: start;
|
|
gap: 0;
|
|
min-width: 0;
|
|
padding: 0 var(--space-5) var(--space-3);
|
|
}
|
|
.client-info-card-extra {
|
|
display: grid;
|
|
align-content: start;
|
|
min-width: 0;
|
|
padding: 0 var(--space-5) var(--space-4);
|
|
border-top: var(--border-hair) solid var(--line);
|
|
}
|
|
.client-env-groups {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--tile-content-width)), 1fr));
|
|
align-items: start;
|
|
gap: var(--segment-gap);
|
|
min-width: 0;
|
|
margin-block: var(--space-4) var(--space-5);
|
|
}
|
|
.client-env-group {
|
|
min-width: 0;
|
|
}
|
|
.client-env-group-title {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: var(--space-3);
|
|
margin: 0 0 var(--space-2);
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.35;
|
|
}
|
|
.client-env-group-title > span:first-child {
|
|
order: 0;
|
|
flex: 0 0 auto;
|
|
color: var(--client-info-text);
|
|
}
|
|
.client-env-group-title::after {
|
|
content: "";
|
|
order: 1;
|
|
flex: 1 1 auto;
|
|
height: var(--border-hair);
|
|
background: var(--client-info-line);
|
|
}
|
|
.client-env-group-note {
|
|
order: 2;
|
|
flex: 0 0 auto;
|
|
font-weight: var(--fw-regular);
|
|
}
|
|
.client-env-group-toggle {
|
|
order: 3;
|
|
flex: 0 0 auto;
|
|
display: grid;
|
|
place-items: center;
|
|
width: var(--control-h);
|
|
height: var(--control-h);
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: 0;
|
|
color: var(--client-info-text);
|
|
background: transparent;
|
|
cursor: pointer;
|
|
}
|
|
.client-env-group-toggle .triangle-icon {
|
|
width: var(--space-3);
|
|
height: var(--space-3);
|
|
}
|
|
.client-env-group-toggle:focus-visible {
|
|
outline: var(--bw-emphasis) solid var(--focus-ring);
|
|
outline-offset: 1px;
|
|
}
|
|
.client-env-facts {
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
align-content: start;
|
|
min-width: 0;
|
|
margin: 0;
|
|
}
|
|
.client-env-facts > div {
|
|
display: grid;
|
|
align-content: center;
|
|
gap: 0;
|
|
min-width: 0;
|
|
min-height: calc(var(--row-h) + var(--space-3));
|
|
padding: var(--space-1) 0;
|
|
border-bottom: var(--border-hair) solid var(--client-info-line);
|
|
}
|
|
.client-env-facts dt {
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.35;
|
|
overflow-wrap: break-word;
|
|
}
|
|
.client-env-facts dd {
|
|
margin: 0;
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-table-body-size);
|
|
font-variant-numeric: tabular-nums;
|
|
line-height: 1.35;
|
|
overflow-wrap: break-word;
|
|
}
|
|
.client-command-center .client-gpo-readiness {
|
|
grid-column: 1 / -1;
|
|
min-width: 0;
|
|
margin-block: var(--space-3);
|
|
}
|
|
.client-command-center .client-gpo-readiness p {
|
|
font-size: var(--type-body-size);
|
|
}
|
|
.client-command-center .client-os-inventory {
|
|
min-width: 0;
|
|
}
|
|
.client-command-center .client-os-inventory > header {
|
|
display: flex;
|
|
align-items: baseline;
|
|
flex-wrap: wrap;
|
|
gap: var(--space-3);
|
|
margin-bottom: var(--space-2);
|
|
}
|
|
.client-command-center .client-os-inventory > header h3 {
|
|
margin: 0;
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.35;
|
|
}
|
|
.client-command-center .client-os-inventory header p {
|
|
margin: 0;
|
|
font-size: var(--type-meta-size);
|
|
color: var(--client-info-muted);
|
|
}
|
|
.client-command-center .client-os-groups {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
|
|
align-items: start;
|
|
gap: var(--space-5);
|
|
}
|
|
.client-command-center .client-os-group {
|
|
min-width: 0;
|
|
}
|
|
.client-command-center .client-os-group h4 {
|
|
display: flex;
|
|
align-items: baseline;
|
|
justify-content: space-between;
|
|
flex-wrap: wrap;
|
|
gap: var(--space-3);
|
|
margin: 0 0 var(--space-1);
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.35;
|
|
}
|
|
.client-command-center .client-os-group h4 > span:last-child {
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.client-command-center .client-os-group table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
table-layout: auto;
|
|
}
|
|
.client-command-center .client-os-group th {
|
|
padding: var(--space-1) 0;
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
text-align: left;
|
|
}
|
|
.client-command-center .client-os-group th:last-child {
|
|
width: 1%;
|
|
white-space: nowrap;
|
|
text-align: right;
|
|
}
|
|
.client-command-center .client-os-group td {
|
|
height: var(--row-h);
|
|
padding: var(--space-1) 0;
|
|
border-bottom: var(--border-hair) solid var(--client-info-line);
|
|
font-size: var(--type-table-body-size);
|
|
white-space: normal;
|
|
word-break: normal;
|
|
overflow-wrap: break-word;
|
|
}
|
|
.client-command-center .client-os-group td:last-child {
|
|
padding-inline-start: var(--space-2);
|
|
white-space: nowrap;
|
|
text-align: right;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.client-command-center .client-os-group .client-os-source {
|
|
width: 1%;
|
|
padding-inline-start: var(--space-3);
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-meta-size);
|
|
white-space: nowrap;
|
|
}
|
|
.client-command-center .client-os-empty {
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-body-size);
|
|
}
|
|
.client-info-bars {
|
|
display: grid;
|
|
align-content: start;
|
|
gap: 0;
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
.client-info-bars li {
|
|
min-width: 0;
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
}
|
|
.client-info-bars li:last-child {
|
|
border-bottom: 0;
|
|
}
|
|
.client-info-bar-row {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) minmax(48px, auto) minmax(120px, 1.15fr);
|
|
grid-template-rows: auto auto;
|
|
align-items: center;
|
|
column-gap: var(--space-4);
|
|
row-gap: var(--space-1);
|
|
width: 100%;
|
|
min-height: 64px;
|
|
padding: var(--space-2) 0;
|
|
border: 0;
|
|
border-radius: 0;
|
|
color: inherit;
|
|
background: transparent;
|
|
text-align: left;
|
|
}
|
|
button.client-info-bar-row {
|
|
cursor: pointer;
|
|
}
|
|
button.client-info-bar-row:hover {
|
|
background: var(--tile-surface-hover);
|
|
}
|
|
button.client-info-bar-row:focus-visible {
|
|
outline: var(--border-hair) solid var(--focus-ring);
|
|
outline-offset: -1px;
|
|
}
|
|
.client-info-bar-label {
|
|
grid-column: 1;
|
|
grid-row: 1 / -1;
|
|
align-self: center;
|
|
color: var(--text);
|
|
font-size: var(--type-body-size);
|
|
line-height: 1.4;
|
|
overflow-wrap: normal;
|
|
word-break: normal;
|
|
}
|
|
.client-info-bar-track {
|
|
grid-column: 3;
|
|
grid-row: 1 / -1;
|
|
width: 100%;
|
|
height: 30px;
|
|
background: var(--surface-active);
|
|
}
|
|
.client-info-bar-track i {
|
|
--share: 0%;
|
|
display: block;
|
|
width: var(--share);
|
|
min-width: 2px;
|
|
height: 100%;
|
|
background: var(--chart-color, var(--chart-tone-emphasis));
|
|
}
|
|
.client-info-bars strong {
|
|
grid-column: 2;
|
|
grid-row: 1;
|
|
display: flex;
|
|
align-items: baseline;
|
|
justify-content: flex-end;
|
|
gap: var(--space-1);
|
|
min-width: 0;
|
|
color: var(--heading);
|
|
font-size: var(--type-body-size);
|
|
font-weight: var(--fw-semibold);
|
|
font-variant-numeric: tabular-nums;
|
|
text-align: right;
|
|
white-space: nowrap;
|
|
}
|
|
.client-info-bars .client-info-bar-detail {
|
|
color: var(--heading);
|
|
font-size: var(--type-meta-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.client-info-bars .client-info-bar-status {
|
|
grid-column: 2;
|
|
grid-row: 2;
|
|
min-height: 12px;
|
|
color: var(--warning);
|
|
font-size: var(--type-meta-size);
|
|
line-height: 1;
|
|
text-align: right;
|
|
}
|
|
.client-info-bars .client-info-bar-status.is-empty {
|
|
visibility: hidden;
|
|
}
|
|
.client-info-card-caption {
|
|
margin: 0;
|
|
padding: var(--space-4) 0 0;
|
|
border-top: var(--border-hair) solid var(--line);
|
|
color: var(--muted);
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.client-info-card-extra .client-info-card-caption {
|
|
border-top: 0;
|
|
}
|
|
.client-info-donut-card .client-info-card-details {
|
|
padding: var(--space-5);
|
|
}
|
|
.client-info-donut-layout {
|
|
display: grid;
|
|
grid-template-columns: minmax(130px, .9fr) minmax(145px, 1.1fr);
|
|
align-items: center;
|
|
gap: var(--space-4);
|
|
min-width: 0;
|
|
}
|
|
.client-info-donut {
|
|
position: relative;
|
|
width: min(172px, 100%);
|
|
aspect-ratio: 1;
|
|
justify-self: center;
|
|
}
|
|
.client-info-donut svg {
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow: visible;
|
|
transform: rotate(-90deg);
|
|
}
|
|
.client-info-donut circle {
|
|
fill: none;
|
|
stroke-width: var(--donut-ring-stroke);
|
|
}
|
|
.client-info-donut-track {
|
|
stroke: var(--donut-track);
|
|
}
|
|
.client-info-donut-segment {
|
|
stroke: var(--chart-color, var(--info));
|
|
}
|
|
.client-info-donut > span {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: grid;
|
|
place-content: center;
|
|
justify-items: center;
|
|
color: var(--heading);
|
|
text-align: center;
|
|
}
|
|
.client-info-donut > span strong {
|
|
font-size: calc(var(--type-h2-size) * 1.08);
|
|
font-weight: var(--fw-regular);
|
|
line-height: 1;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.client-info-donut > span small {
|
|
margin-top: var(--space-1);
|
|
color: var(--muted);
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.client-info-legend {
|
|
display: grid;
|
|
align-content: center;
|
|
gap: var(--space-1);
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
.client-info-legend button,
|
|
.client-info-legend-row {
|
|
display: grid;
|
|
grid-template-columns: 11px minmax(0, 1fr) auto;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
width: 100%;
|
|
min-height: 36px;
|
|
padding: var(--space-1) var(--space-2);
|
|
border: 0;
|
|
border-radius: 0;
|
|
color: var(--text);
|
|
background: transparent;
|
|
text-align: left;
|
|
}
|
|
.client-info-legend button {
|
|
cursor: pointer;
|
|
}
|
|
.client-info-legend button:hover {
|
|
background: var(--tile-surface-hover);
|
|
}
|
|
.client-info-legend button:focus-visible {
|
|
outline: var(--border-hair) solid var(--focus-ring);
|
|
outline-offset: -1px;
|
|
}
|
|
.client-info-legend i {
|
|
width: 11px;
|
|
height: 11px;
|
|
background: var(--chart-color, var(--muted));
|
|
}
|
|
.client-info-legend span {
|
|
min-width: 0;
|
|
font-size: var(--type-table-body-size);
|
|
line-height: 1.25;
|
|
overflow-wrap: normal;
|
|
word-break: normal;
|
|
}
|
|
.client-info-legend strong {
|
|
color: var(--heading);
|
|
font-size: var(--type-table-body-size);
|
|
font-weight: var(--fw-semibold);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.dashboard-page.client-command-center {
|
|
--client-info-text: var(--heading);
|
|
--client-info-muted: var(--muted);
|
|
--client-info-line: var(--line);
|
|
--client-info-line-strong: var(--border-strong);
|
|
--client-info-surface: var(--surface-input);
|
|
--client-info-surface-raised: var(--tile-surface);
|
|
--client-info-surface-hover: var(--tile-surface-hover);
|
|
color: var(--client-info-text);
|
|
background: var(--surface-app);
|
|
}
|
|
.client-command-center .tone-critical {
|
|
--chart-color: var(--client-info-red);
|
|
}
|
|
.client-command-center .tone-high {
|
|
--chart-color: var(--high);
|
|
}
|
|
.client-command-center .tone-medium {
|
|
--chart-color: var(--client-info-amber);
|
|
}
|
|
.client-command-center .tone-passed {
|
|
--chart-color: var(--client-info-green);
|
|
}
|
|
.client-command-center .tone-unknown {
|
|
--chart-color: var(--client-info-neutral);
|
|
}
|
|
.client-glyph {
|
|
display: block;
|
|
width: var(--space-8);
|
|
height: var(--space-8);
|
|
fill: none;
|
|
stroke: currentColor;
|
|
stroke-width: 1.6;
|
|
stroke-linecap: round;
|
|
stroke-linejoin: round;
|
|
}
|
|
.client-overview-header {
|
|
display: grid;
|
|
grid-template-columns: auto auto minmax(240px, 1fr);
|
|
align-items: center;
|
|
gap: var(--space-8);
|
|
min-width: 0;
|
|
color: var(--client-info-muted);
|
|
}
|
|
.client-overview-identity,
|
|
.client-overview-assessment,
|
|
.client-overview-source {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-3);
|
|
min-width: 0;
|
|
font-size: var(--type-table-body-size);
|
|
}
|
|
.client-overview-identity strong {
|
|
color: var(--client-info-text);
|
|
font-weight: var(--fw-regular);
|
|
}
|
|
.client-overview-assessment .work-timeslot-select {
|
|
margin: 0;
|
|
}
|
|
.client-overview-assessment .work-timeslot-select > span {
|
|
display: none;
|
|
}
|
|
.client-overview-source {
|
|
justify-self: end;
|
|
}
|
|
.client-overview-source select,
|
|
.client-overview-assessment select {
|
|
min-width: 132px;
|
|
min-height: var(--control-h);
|
|
padding-inline: var(--space-3);
|
|
border: var(--border-hair) solid var(--client-info-line);
|
|
border-radius: var(--btn-radius);
|
|
color: var(--client-info-text);
|
|
background: var(--client-info-surface);
|
|
font: inherit;
|
|
}
|
|
.client-overview-facts {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(0, var(--tile-compact-width)));
|
|
justify-content: start;
|
|
gap: var(--segment-gap);
|
|
min-width: 0;
|
|
}
|
|
.client-overview-fact {
|
|
display: grid;
|
|
grid-template-columns: auto minmax(0, 1fr);
|
|
place-content: center;
|
|
align-items: center;
|
|
gap: var(--space-3);
|
|
min-height: 88px;
|
|
padding: var(--tile-inset);
|
|
border: 0;
|
|
border-radius: var(--tile-radius);
|
|
color: var(--client-info-muted);
|
|
background: var(--tile-surface);
|
|
text-align: left;
|
|
}
|
|
.client-overview-fact > span {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
}
|
|
.client-overview-fact strong {
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-h2-size);
|
|
font-weight: var(--fw-semibold);
|
|
font-variant-numeric: tabular-nums;
|
|
line-height: 1;
|
|
}
|
|
.client-overview-fact small {
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-label-size);
|
|
line-height: 1.3;
|
|
}
|
|
.client-overview-main {
|
|
display: grid;
|
|
grid-template-columns: minmax(720px, 2.18fr) minmax(300px, .82fr);
|
|
align-items: stretch;
|
|
gap: var(--segment-gap);
|
|
min-width: 0;
|
|
}
|
|
.client-posture {
|
|
position: relative;
|
|
display: grid;
|
|
grid-template-columns: minmax(300px, .82fr) minmax(430px, 1.18fr);
|
|
gap: var(--segment-gap);
|
|
min-width: 0;
|
|
border-radius: var(--tile-radius);
|
|
background: var(--tile-surface);
|
|
}
|
|
.client-overall,
|
|
.client-domains,
|
|
.client-priority > section {
|
|
min-width: 0;
|
|
border: 0;
|
|
border-radius: var(--tile-radius);
|
|
color: var(--client-info-text);
|
|
background: var(--tile-surface);
|
|
box-shadow: var(--tile-card-shadow);
|
|
}
|
|
.client-posture-connectors {
|
|
position: absolute;
|
|
z-index: 2;
|
|
inset: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow: visible;
|
|
pointer-events: none;
|
|
}
|
|
.client-posture-connectors path {
|
|
fill: none;
|
|
stroke: var(--text-muted);
|
|
stroke-width: 1.2;
|
|
vector-effect: non-scaling-stroke;
|
|
}
|
|
.client-overall,
|
|
.client-domains {
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
.client-overall {
|
|
display: grid;
|
|
align-content: start;
|
|
justify-items: center;
|
|
gap: var(--space-2);
|
|
min-width: 0;
|
|
padding: var(--tile-inset);
|
|
}
|
|
.client-overall > h2,
|
|
.client-domains h2,
|
|
.client-priority h2,
|
|
.client-source-overview h2 {
|
|
margin: 0;
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.3;
|
|
}
|
|
.client-overall > h2 {
|
|
justify-self: start;
|
|
color: var(--client-info-text);
|
|
}
|
|
.client-overall-ring {
|
|
position: relative;
|
|
width: min(290px, 90%);
|
|
aspect-ratio: 1;
|
|
margin: var(--space-3) 0 var(--space-2);
|
|
color: var(--chart-color, var(--client-info-neutral));
|
|
}
|
|
.client-overall-ring svg {
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow: visible;
|
|
transform: rotate(-90deg);
|
|
}
|
|
.client-overall-ring circle {
|
|
fill: none;
|
|
stroke-width: var(--donut-ring-stroke);
|
|
}
|
|
.client-overall-ring-track {
|
|
stroke: var(--donut-track);
|
|
}
|
|
.client-overall-ring-value {
|
|
stroke: var(--chart-color, var(--chart-tone-emphasis));
|
|
stroke-linecap: butt;
|
|
}
|
|
.client-overall-ring > span {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: grid;
|
|
place-items: center;
|
|
color: var(--donut-value);
|
|
}
|
|
.client-overall-ring-number {
|
|
position: relative;
|
|
}
|
|
.client-overall-ring-number strong {
|
|
font-size: var(--type-h1-size);
|
|
font-weight: var(--fw-semibold);
|
|
font-variant-numeric: tabular-nums;
|
|
line-height: 1;
|
|
}
|
|
.client-overall-ring-number small {
|
|
position: absolute;
|
|
left: calc(100% + var(--space-1));
|
|
bottom: 0;
|
|
color: var(--client-info-text);
|
|
font-size: var(--donut-percent-size);
|
|
white-space: nowrap;
|
|
}
|
|
.client-overall-ring em {
|
|
position: absolute;
|
|
top: calc(50% + var(--type-h1-size) / 2 + var(--space-2));
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-label-size);
|
|
font-style: normal;
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: var(--ls-caps);
|
|
}
|
|
.client-overall-status {
|
|
color: var(--chart-color, var(--muted));
|
|
font-size: var(--type-h3-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.client-overall-critical {
|
|
display: flex;
|
|
align-items: baseline;
|
|
justify-content: center;
|
|
gap: var(--space-2);
|
|
min-height: 40px;
|
|
padding: var(--space-1) var(--space-3);
|
|
border: 0;
|
|
border-radius: 0;
|
|
color: var(--critical);
|
|
background: transparent;
|
|
cursor: pointer;
|
|
}
|
|
.client-overall-critical:hover:not(:disabled) {
|
|
background: var(--client-info-surface-hover);
|
|
}
|
|
.client-overall-critical:disabled {
|
|
cursor: default;
|
|
opacity: .65;
|
|
}
|
|
.client-overall-critical b {
|
|
font-size: var(--type-h3-size);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.client-overall-critical span {
|
|
font-size: var(--type-table-body-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.client-overall-coverage {
|
|
display: grid;
|
|
gap: var(--space-2);
|
|
width: 100%;
|
|
margin-top: var(--space-3);
|
|
}
|
|
.client-overall-coverage > span {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: var(--space-3);
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-label-size);
|
|
}
|
|
.client-overall-coverage > span strong,
|
|
.client-overall-coverage > span b {
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.client-overall-coverage > i {
|
|
display: block;
|
|
height: 7px;
|
|
background: var(--client-info-line);
|
|
}
|
|
.client-overall-coverage > i u {
|
|
--share: 0%;
|
|
display: block;
|
|
width: var(--share);
|
|
height: 100%;
|
|
background: var(--client-info-green);
|
|
text-decoration: none;
|
|
}
|
|
.client-overall-coverage small {
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-meta-size);
|
|
line-height: 1.3;
|
|
}
|
|
.client-overall-secondary {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
width: 100%;
|
|
margin: var(--space-2) 0 0;
|
|
border-top: var(--border-hair) solid var(--client-info-line);
|
|
}
|
|
.client-overall-secondary > div {
|
|
display: grid;
|
|
justify-items: center;
|
|
gap: var(--space-1);
|
|
padding: var(--space-4) var(--space-2) 0;
|
|
}
|
|
.client-overall-secondary > div + div {
|
|
border-left: var(--border-hair) solid var(--client-info-line);
|
|
}
|
|
.client-overall-secondary dt {
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.client-overall-secondary dd {
|
|
grid-row: 1;
|
|
margin: 0;
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-h3-size);
|
|
font-weight: var(--fw-semibold);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.client-domains {
|
|
position: relative;
|
|
min-width: 0;
|
|
padding: var(--tile-inset);
|
|
}
|
|
.client-domains > header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--space-3);
|
|
}
|
|
.client-domains > header > span {
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.client-domains ul {
|
|
position: relative;
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
margin: var(--space-3) 0 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
.client-domains li {
|
|
position: relative;
|
|
min-width: 0;
|
|
}
|
|
.client-domains li > button,
|
|
.client-domains li > div {
|
|
position: relative;
|
|
z-index: 3;
|
|
display: grid;
|
|
grid-template-columns: 52px minmax(0, 1fr) auto;
|
|
grid-template-rows: auto;
|
|
align-items: center;
|
|
column-gap: var(--space-3);
|
|
row-gap: var(--space-1);
|
|
width: 100%;
|
|
min-height: 64px;
|
|
padding: var(--space-1) 0;
|
|
border: 0;
|
|
border-radius: 0;
|
|
color: inherit;
|
|
background: transparent;
|
|
text-align: left;
|
|
}
|
|
.client-domains li > button {
|
|
cursor: pointer;
|
|
}
|
|
.client-domains li > button:hover {
|
|
background: var(--client-info-surface-hover);
|
|
}
|
|
.client-domain-score {
|
|
z-index: 1;
|
|
grid-column: 1;
|
|
grid-row: 1 / 3;
|
|
display: grid;
|
|
place-items: center;
|
|
width: 46px;
|
|
height: 46px;
|
|
border: var(--border-hair) solid var(--chart-color, var(--client-info-line-strong));
|
|
border-radius: 50%;
|
|
color: var(--client-info-text);
|
|
background: var(--client-info-surface);
|
|
}
|
|
.client-domain-score .client-glyph {
|
|
width: var(--space-6);
|
|
height: var(--space-6);
|
|
}
|
|
.client-domain-score em {
|
|
color: var(--chart-color, var(--client-info-text));
|
|
font-size: var(--type-h4-size);
|
|
font-style: normal;
|
|
font-weight: var(--fw-semibold);
|
|
font-variant-numeric: tabular-nums;
|
|
line-height: 1;
|
|
}
|
|
.client-domain-copy {
|
|
grid-column: 2;
|
|
grid-row: 1;
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
min-width: 0;
|
|
}
|
|
.client-domain-copy strong {
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-body-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.25;
|
|
}
|
|
.client-domain-copy small {
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-meta-size);
|
|
line-height: 1.3;
|
|
}
|
|
.client-domains li > button > b,
|
|
.client-domains li > div > b {
|
|
grid-column: 3;
|
|
grid-row: 1;
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-h2-size);
|
|
font-weight: var(--fw-semibold);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.client-domains li b small {
|
|
display: block;
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-meta-size);
|
|
font-weight: var(--fw-regular);
|
|
text-align: right;
|
|
}
|
|
.client-priority {
|
|
display: grid;
|
|
grid-template-rows: auto auto;
|
|
align-content: start;
|
|
gap: var(--segment-gap);
|
|
min-width: 0;
|
|
}
|
|
.client-priority > section {
|
|
padding: var(--tile-inset);
|
|
}
|
|
.client-priority-findings > header {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
align-items: end;
|
|
gap: var(--space-3);
|
|
}
|
|
.client-priority-findings > header h2 {
|
|
grid-column: 1 / -1;
|
|
align-self: start;
|
|
}
|
|
.client-priority-findings > header > div {
|
|
display: grid;
|
|
justify-items: center;
|
|
color: var(--client-info-text);
|
|
}
|
|
.client-priority-findings > header > div strong {
|
|
color: var(--chart-color, var(--client-info-text));
|
|
font-size: var(--type-h2-size);
|
|
font-weight: var(--fw-semibold);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.client-priority-findings > header > div span {
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.client-priority-context {
|
|
display: grid;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: var(--space-1);
|
|
margin-top: var(--space-3);
|
|
border-top: var(--border-hair) solid var(--client-info-line);
|
|
border-bottom: var(--border-hair) solid var(--client-info-line);
|
|
}
|
|
.client-priority-context button {
|
|
display: grid;
|
|
justify-items: center;
|
|
gap: var(--space-1);
|
|
min-width: 0;
|
|
padding: var(--space-2) var(--space-1);
|
|
border: 0;
|
|
border-radius: 0;
|
|
color: var(--client-info-text);
|
|
background: transparent;
|
|
cursor: pointer;
|
|
}
|
|
.client-priority-context button + button {
|
|
border-left: var(--border-hair) solid var(--client-info-line);
|
|
}
|
|
.client-priority-context button:hover:not(:disabled) {
|
|
background: var(--client-info-surface-hover);
|
|
}
|
|
.client-priority-context button:disabled {
|
|
cursor: default;
|
|
opacity: .65;
|
|
}
|
|
.client-priority-context strong {
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-semibold);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.client-priority-context span {
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-meta-size);
|
|
line-height: 1.2;
|
|
text-align: center;
|
|
}
|
|
.client-priority-findings ol {
|
|
display: grid;
|
|
gap: var(--space-2);
|
|
margin: var(--space-4) 0 var(--space-3);
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
.client-priority-findings li {
|
|
border-left: var(--marker-width) solid var(--chart-color, var(--client-info-neutral));
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
background: transparent;
|
|
}
|
|
.client-priority-findings li button {
|
|
display: grid;
|
|
grid-template-columns: auto minmax(0, 1fr);
|
|
align-items: center;
|
|
gap: var(--space-1) var(--space-2);
|
|
width: 100%;
|
|
min-height: 70px;
|
|
padding: var(--space-3);
|
|
border: 0;
|
|
border-radius: 0;
|
|
color: inherit;
|
|
background: transparent;
|
|
text-align: left;
|
|
cursor: pointer;
|
|
}
|
|
.client-priority-findings li button:hover {
|
|
background: var(--client-info-surface-hover);
|
|
}
|
|
.client-priority-findings li small {
|
|
padding: var(--space-1) var(--space-2);
|
|
color: var(--sev-on);
|
|
background: var(--chart-color, var(--client-info-neutral));
|
|
font-size: var(--type-badge-size);
|
|
font-weight: var(--fw-semibold);
|
|
text-transform: uppercase;
|
|
}
|
|
.client-priority-findings li strong {
|
|
min-width: 0;
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-table-body-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.3;
|
|
overflow-wrap: normal;
|
|
word-break: normal;
|
|
}
|
|
.client-priority-findings li span {
|
|
grid-column: 2;
|
|
justify-self: end;
|
|
padding: var(--space-1) var(--space-2);
|
|
color: var(--client-info-muted);
|
|
background: var(--client-info-surface-hover);
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.client-priority-findings .client-priority-empty {
|
|
padding: var(--space-4);
|
|
border-left-color: var(--client-info-green);
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-table-body-size);
|
|
}
|
|
.client-overview-action {
|
|
justify-self: end;
|
|
margin-left: auto;
|
|
}
|
|
.client-assessment-gaps {
|
|
display: grid;
|
|
grid-template-columns: auto minmax(0, 1fr);
|
|
align-items: baseline;
|
|
gap: var(--space-1) var(--space-3);
|
|
}
|
|
.client-assessment-gaps h2 {
|
|
grid-column: 1 / -1;
|
|
margin-bottom: var(--space-2);
|
|
}
|
|
.client-assessment-gaps > strong {
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-h2-size);
|
|
font-weight: var(--fw-semibold);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.client-assessment-gaps > span {
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-table-body-size);
|
|
}
|
|
.client-assessment-gaps dl {
|
|
grid-column: 1 / -1;
|
|
display: grid;
|
|
margin: var(--space-3) 0 0;
|
|
border-top: var(--border-hair) solid var(--client-info-line);
|
|
}
|
|
.client-assessment-gaps dl div {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: var(--space-3);
|
|
padding: var(--space-3) 0;
|
|
border-bottom: var(--border-hair) solid var(--client-info-line);
|
|
font-size: var(--type-table-body-size);
|
|
}
|
|
.client-assessment-gaps dt {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
color: var(--client-info-muted);
|
|
}
|
|
.client-assessment-gaps dt .client-glyph {
|
|
width: var(--space-5);
|
|
height: var(--space-5);
|
|
}
|
|
.client-assessment-gaps dd {
|
|
margin: 0;
|
|
color: var(--client-info-text);
|
|
font-weight: var(--fw-semibold);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.client-assessment-gaps .client-overview-action {
|
|
grid-column: 1 / -1;
|
|
}
|
|
.client-source-overview {
|
|
min-width: 0;
|
|
padding: var(--segment-inset);
|
|
border: var(--border-hair) solid var(--segment-border);
|
|
border-radius: var(--segment-radius);
|
|
background: var(--segment-surface);
|
|
}
|
|
.client-environment-detail {
|
|
min-width: 0;
|
|
padding: var(--tile-inset);
|
|
border: 0;
|
|
border-radius: var(--tile-radius);
|
|
color: var(--client-info-text);
|
|
background: var(--tile-surface);
|
|
}
|
|
.client-environment-detail > summary,
|
|
.risk-register-detail-group > summary,
|
|
.risk-register-history > summary {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: var(--space-3);
|
|
min-height: var(--control-h);
|
|
list-style: none;
|
|
cursor: pointer;
|
|
}
|
|
.client-environment-detail > summary::-webkit-details-marker,
|
|
.risk-register-detail-group > summary::-webkit-details-marker,
|
|
.risk-register-history > summary::-webkit-details-marker {
|
|
display: none;
|
|
}
|
|
.client-environment-detail > summary:focus-visible,
|
|
.risk-register-detail-group > summary:focus-visible,
|
|
.risk-register-history > summary:focus-visible {
|
|
outline: var(--bw-emphasis) solid var(--focus-ring);
|
|
outline-offset: var(--border-hair);
|
|
}
|
|
.client-environment-detail[open] > summary > .triangle-icon,
|
|
.risk-register-detail-group[open] > summary > .triangle-icon,
|
|
.risk-register-history[open] > summary > .triangle-icon {
|
|
transform: rotate(90deg);
|
|
}
|
|
.client-environment-detail > summary h2 {
|
|
margin: 0;
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.3;
|
|
}
|
|
.client-environment-detail > summary span {
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.client-environment-detail > summary > .client-env-meta {
|
|
margin-left: auto;
|
|
}
|
|
.client-env-meta {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
gap: var(--space-2) var(--space-3);
|
|
}
|
|
.client-env-restricted-toggle {
|
|
gap: var(--space-2);
|
|
margin-top: var(--space-3);
|
|
}
|
|
.client-env-restricted-toggle .triangle-icon {
|
|
width: var(--space-3);
|
|
height: var(--space-3);
|
|
}
|
|
.client-environment-restricted {
|
|
margin: 0 0 var(--space-3);
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-meta-size);
|
|
line-height: 1.35;
|
|
}
|
|
.client-source-overview > header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--space-3);
|
|
margin-bottom: var(--space-3);
|
|
}
|
|
.client-source-overview > header span {
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.client-source-overview > div {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--tile-content-width)), var(--tile-content-width)));
|
|
justify-content: start;
|
|
gap: var(--segment-gap);
|
|
min-width: 0;
|
|
}
|
|
.client-source-overview > div > article,
|
|
.client-source-overview > div > button {
|
|
--source-color: var(--client-info-neutral);
|
|
display: grid;
|
|
grid-template-columns: var(--space-8) minmax(0, 1fr);
|
|
grid-template-rows: auto auto auto;
|
|
align-items: center;
|
|
gap: var(--space-1) var(--space-3);
|
|
min-width: 0;
|
|
min-height: 104px;
|
|
padding: var(--tile-inset);
|
|
border: 0;
|
|
border-radius: var(--tile-radius);
|
|
color: inherit;
|
|
background: var(--tile-surface);
|
|
text-align: left;
|
|
}
|
|
.client-source-overview .client-source-pingcastle {
|
|
--source-color: var(--client-info-green);
|
|
}
|
|
.client-source-overview .client-source-purple {
|
|
--source-color: var(--client-info-purple);
|
|
}
|
|
.client-source-overview .client-source-maester {
|
|
--source-color: var(--client-info-green);
|
|
}
|
|
.client-source-overview .client-source-cis {
|
|
--source-color: var(--client-info-blue);
|
|
}
|
|
.client-source-overview .client-source-gpo {
|
|
--source-color: var(--client-info-lime);
|
|
}
|
|
.client-source-overview button {
|
|
cursor: pointer;
|
|
}
|
|
.client-source-overview button:hover {
|
|
background: var(--client-info-surface-hover);
|
|
}
|
|
.client-source-overview article > .client-glyph,
|
|
.client-source-overview button > .client-glyph {
|
|
grid-column: 1;
|
|
grid-row: 1 / -1;
|
|
width: var(--space-8);
|
|
height: var(--space-8);
|
|
color: var(--client-info-muted);
|
|
}
|
|
.client-source-overview article > span,
|
|
.client-source-overview button > span {
|
|
grid-column: 2;
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-table-body-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.client-source-overview article > strong,
|
|
.client-source-overview button > strong {
|
|
grid-column: 2;
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-h2-size);
|
|
font-weight: var(--fw-semibold);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.client-source-overview article > strong small,
|
|
.client-source-overview button > strong small {
|
|
margin-left: var(--space-1);
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-table-body-size);
|
|
font-weight: var(--fw-regular);
|
|
}
|
|
.client-source-overview article > em,
|
|
.client-source-overview button > em {
|
|
grid-column: 2;
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-meta-size);
|
|
font-style: normal;
|
|
line-height: 1.3;
|
|
}
|
|
.client-risk-register {
|
|
min-width: 0;
|
|
padding: var(--tile-inset);
|
|
border: 0;
|
|
border-radius: var(--tile-radius);
|
|
color: var(--client-info-text);
|
|
background: var(--tile-surface);
|
|
box-shadow: var(--tile-card-shadow);
|
|
}
|
|
.client-risk-register > header {
|
|
display: flex;
|
|
align-items: end;
|
|
justify-content: space-between;
|
|
gap: var(--space-4);
|
|
margin-bottom: var(--space-4);
|
|
}
|
|
.client-risk-register > header > div {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
}
|
|
.client-risk-register > header h2 {
|
|
margin: 0;
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.3;
|
|
}
|
|
.client-risk-register > header span,
|
|
.client-risk-register > header strong {
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-meta-size);
|
|
font-weight: var(--fw-regular);
|
|
}
|
|
.client-risk-register-empty {
|
|
margin: 0;
|
|
padding: var(--space-6) 0;
|
|
border-top: var(--border-hair) solid var(--client-info-line);
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-body-size);
|
|
}
|
|
.client-risk-register-layout {
|
|
display: grid;
|
|
grid-template-columns: minmax(260px, .72fr) minmax(0, 1.78fr);
|
|
min-width: 0;
|
|
border-top: var(--border-hair) solid var(--client-info-line);
|
|
}
|
|
.client-risk-register-list {
|
|
display: grid;
|
|
align-content: start;
|
|
min-width: 0;
|
|
padding: var(--space-4) var(--space-4) var(--space-4) 0;
|
|
border-right: var(--border-hair) solid var(--client-info-line);
|
|
}
|
|
.client-risk-register-list button {
|
|
--risk-register-tone: var(--client-info-neutral);
|
|
position: relative;
|
|
display: grid;
|
|
grid-template-columns: var(--marker-width) minmax(0, 1fr) auto;
|
|
gap: var(--space-1) var(--space-3);
|
|
align-items: start;
|
|
width: 100%;
|
|
min-width: 0;
|
|
padding: var(--space-3);
|
|
border: 0;
|
|
border-bottom: var(--border-hair) solid var(--client-info-line);
|
|
border-radius: 0;
|
|
color: inherit;
|
|
background: transparent;
|
|
text-align: left;
|
|
cursor: pointer;
|
|
}
|
|
.client-risk-register-list button:first-child {
|
|
border-top: var(--border-hair) solid var(--client-info-line);
|
|
}
|
|
.client-risk-register-list button:hover {
|
|
background: var(--client-info-surface-hover);
|
|
}
|
|
.client-risk-register-list button[aria-pressed=true] {
|
|
z-index: 1;
|
|
outline: var(--bw-emphasis) solid var(--marking-color);
|
|
outline-offset: calc(-1 * var(--bw-emphasis));
|
|
background: var(--client-info-surface-hover);
|
|
}
|
|
.client-risk-register-list button:focus-visible {
|
|
z-index: 2;
|
|
outline: var(--bw-emphasis) solid var(--focus-ring);
|
|
outline-offset: calc(-1 * var(--bw-emphasis));
|
|
}
|
|
.client-risk-register-list button.is-current,
|
|
.client-risk-register-detail > header > strong.is-current {
|
|
--risk-register-tone: var(--client-info-green);
|
|
}
|
|
.client-risk-register-list button.is-attention,
|
|
.client-risk-register-detail > header > strong.is-attention {
|
|
--risk-register-tone: var(--client-info-amber);
|
|
}
|
|
.client-risk-register-list button.is-critical,
|
|
.client-risk-register-detail > header > strong.is-critical {
|
|
--risk-register-tone: var(--client-info-red);
|
|
}
|
|
.client-risk-register-list button > i {
|
|
grid-column: 1;
|
|
grid-row: 1 / 4;
|
|
width: var(--marker-width);
|
|
height: 100%;
|
|
min-height: 54px;
|
|
background: var(--risk-register-tone);
|
|
}
|
|
.client-risk-register-list button > span {
|
|
grid-column: 2 / -1;
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
min-width: 0;
|
|
}
|
|
.client-risk-register-list button > span strong {
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-table-body-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.35;
|
|
overflow-wrap: break-word;
|
|
}
|
|
.client-risk-register-list button > span small {
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-meta-size);
|
|
line-height: 1.3;
|
|
overflow-wrap: break-word;
|
|
}
|
|
.client-risk-register-list button > em {
|
|
grid-column: 2;
|
|
color: var(--risk-register-tone);
|
|
font-size: var(--type-badge-size);
|
|
font-style: normal;
|
|
font-weight: var(--fw-semibold);
|
|
text-transform: uppercase;
|
|
}
|
|
.client-risk-register-list button > time {
|
|
grid-column: 3;
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-meta-size);
|
|
font-variant-numeric: tabular-nums;
|
|
white-space: nowrap;
|
|
}
|
|
.client-risk-register-detail {
|
|
min-width: 0;
|
|
padding: var(--space-5) 0 var(--space-4) var(--space-5);
|
|
}
|
|
.client-risk-register-detail > header {
|
|
display: flex;
|
|
align-items: start;
|
|
justify-content: space-between;
|
|
gap: var(--space-5);
|
|
padding-bottom: var(--space-4);
|
|
}
|
|
.client-risk-register-detail > header > div {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
min-width: 0;
|
|
}
|
|
.client-risk-register-detail > header span {
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.client-risk-register-detail > header h2 {
|
|
margin: 0;
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-detail-title-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.35;
|
|
overflow-wrap: break-word;
|
|
}
|
|
.client-risk-register-detail > header > strong {
|
|
--risk-register-tone: var(--client-info-neutral);
|
|
flex: 0 0 auto;
|
|
padding: var(--space-1) var(--space-2);
|
|
border-left: var(--marker-width) solid var(--risk-register-tone);
|
|
color: var(--risk-register-tone);
|
|
background: var(--client-info-surface);
|
|
font-size: var(--type-badge-size);
|
|
font-weight: var(--fw-semibold);
|
|
text-transform: uppercase;
|
|
}
|
|
.risk-register-summary {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
margin: 0;
|
|
border-top: var(--border-hair) solid var(--client-info-line);
|
|
border-bottom: var(--border-hair) solid var(--client-info-line);
|
|
}
|
|
.risk-register-summary > div {
|
|
display: grid;
|
|
align-content: start;
|
|
gap: var(--space-1);
|
|
min-width: 0;
|
|
padding: var(--space-3);
|
|
border-right: var(--border-hair) solid var(--client-info-line);
|
|
border-bottom: var(--border-hair) solid var(--client-info-line);
|
|
}
|
|
.risk-register-summary > div:nth-child(3n) {
|
|
border-right: 0;
|
|
}
|
|
.risk-register-summary > div:nth-last-child(-n+3) {
|
|
border-bottom: 0;
|
|
}
|
|
.risk-register-summary dt,
|
|
.risk-register-detail-group dt {
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.risk-register-summary dd {
|
|
margin: 0;
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-table-body-size);
|
|
line-height: 1.4;
|
|
overflow-wrap: break-word;
|
|
}
|
|
.risk-register-detail-groups {
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
padding-top: var(--space-4);
|
|
}
|
|
.risk-register-detail-group {
|
|
min-width: 0;
|
|
padding-block: var(--space-2);
|
|
border-bottom: var(--border-hair) solid var(--client-info-line);
|
|
}
|
|
.risk-register-detail-group h3,
|
|
.risk-register-history h3 {
|
|
margin: 0;
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.risk-register-detail-group dl {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(min(100%, var(--tile-content-width)), 1fr));
|
|
gap: var(--space-4);
|
|
margin: var(--space-3) 0;
|
|
}
|
|
.risk-register-detail-group dl > div {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
min-width: 0;
|
|
}
|
|
.risk-register-detail-group dd {
|
|
margin: 0;
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-body-size);
|
|
line-height: 1.5;
|
|
white-space: pre-wrap;
|
|
overflow-wrap: break-word;
|
|
}
|
|
.risk-register-history {
|
|
padding-top: var(--space-2);
|
|
}
|
|
.risk-register-history > summary > span {
|
|
margin-left: auto;
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.risk-register-history ol {
|
|
display: grid;
|
|
gap: 0;
|
|
margin: 0;
|
|
padding: 0;
|
|
border-top: var(--border-hair) solid var(--client-info-line);
|
|
list-style: none;
|
|
}
|
|
.risk-register-history li {
|
|
display: grid;
|
|
gap: var(--space-2);
|
|
padding: var(--space-3) 0;
|
|
border-bottom: var(--border-hair) solid var(--client-info-line);
|
|
}
|
|
.risk-register-history li > span {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: var(--space-3);
|
|
}
|
|
.risk-register-history li strong {
|
|
font-size: var(--type-table-body-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.risk-register-history li time,
|
|
.risk-register-history li small {
|
|
color: var(--client-info-muted);
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.risk-register-history li p {
|
|
margin: 0;
|
|
color: var(--client-info-text);
|
|
font-size: var(--type-body-size);
|
|
line-height: 1.5;
|
|
white-space: pre-wrap;
|
|
overflow-wrap: break-word;
|
|
}
|
|
@container (max-width: 1300px) {
|
|
.client-overview-main {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.client-priority {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
.client-risk-register-layout {
|
|
grid-template-columns: minmax(230px, .8fr) minmax(0, 1.2fr);
|
|
}
|
|
.risk-register-detail-groups {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
@container (max-width: 760px) {
|
|
.client-overview-header {
|
|
grid-template-columns: 1fr;
|
|
gap: var(--space-3);
|
|
}
|
|
.client-overview-source {
|
|
justify-self: start;
|
|
}
|
|
.client-overview-facts {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
.client-posture {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.client-posture-connectors {
|
|
display: none;
|
|
}
|
|
.client-priority {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.client-risk-register-layout {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.client-risk-register-list {
|
|
padding-right: 0;
|
|
border-right: 0;
|
|
border-bottom: var(--border-hair) solid var(--client-info-line);
|
|
}
|
|
.client-risk-register-detail {
|
|
padding-left: 0;
|
|
}
|
|
}
|
|
@container (max-width: 480px) {
|
|
.client-overview-facts,
|
|
.client-source-overview > div {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.client-priority-findings > header {
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
}
|
|
.client-priority-findings > header h2 {
|
|
grid-column: 1 / -1;
|
|
}
|
|
.client-priority-context {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
.client-priority-context button:nth-child(3) {
|
|
border-left: 0;
|
|
border-top: var(--border-hair) solid var(--client-info-line);
|
|
}
|
|
.client-priority-context button:nth-child(4) {
|
|
border-top: var(--border-hair) solid var(--client-info-line);
|
|
}
|
|
.client-risk-register > header,
|
|
.client-risk-register-detail > header {
|
|
align-items: start;
|
|
flex-direction: column;
|
|
}
|
|
.risk-register-summary {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.risk-register-summary > div,
|
|
.risk-register-summary > div:nth-child(3n),
|
|
.risk-register-summary > div:nth-last-child(-n+3) {
|
|
border-right: 0;
|
|
border-bottom: var(--border-hair) solid var(--client-info-line);
|
|
}
|
|
.risk-register-summary > div:last-child {
|
|
border-bottom: 0;
|
|
}
|
|
.client-risk-register-list button > time {
|
|
grid-column: 2;
|
|
white-space: normal;
|
|
}
|
|
}
|
|
.tone-deviation,
|
|
.tone-error,
|
|
.tone-critical {
|
|
--chart-color: var(--critical);
|
|
}
|
|
.tone-passed,
|
|
.tone-low,
|
|
.tone-coverage {
|
|
--chart-color: var(--success);
|
|
}
|
|
.tone-high {
|
|
--chart-color: var(--high);
|
|
}
|
|
.tone-medium {
|
|
--chart-color: var(--medium);
|
|
}
|
|
.tone-info {
|
|
--chart-color: var(--info);
|
|
}
|
|
.tone-not-run,
|
|
.tone-neutral,
|
|
.tone-dashboard-cis-cat-without-severity {
|
|
--chart-color: var(--donut-not-run);
|
|
}
|
|
.tone-accent,
|
|
.tone-pki {
|
|
--chart-color: var(--chart-tone-emphasis);
|
|
}
|
|
.tone-gpo {
|
|
--chart-color: var(--high);
|
|
}
|
|
.tone-risk {
|
|
--chart-color: var(--warning);
|
|
}
|
|
@media (max-width: 1100px) {
|
|
.client-info-top-row {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
align-items: start;
|
|
}
|
|
.client-info-metric-grid {
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
}
|
|
.client-info-top-row > .client-info-metric-grid .client-info-metric {
|
|
height: auto;
|
|
min-height: 0;
|
|
aspect-ratio: 1;
|
|
}
|
|
.client-info-panels-layout {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
}
|
|
.client-info-donut-rail {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
}
|
|
@media (max-width: 800px) {
|
|
.client-info-metric-grid {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
.client-info-donut-rail {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
}
|
|
}
|
|
@media (max-width: 560px) {
|
|
.client-info-card > header {
|
|
align-items: flex-start;
|
|
min-height: 68px;
|
|
padding: var(--space-3);
|
|
}
|
|
.client-info-card-heading {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
}
|
|
.client-info-card-details,
|
|
.client-info-card-extra {
|
|
padding-left: var(--space-3);
|
|
padding-right: var(--space-3);
|
|
}
|
|
.client-info-bar-row {
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
grid-template-rows: auto auto auto;
|
|
min-height: 132px;
|
|
column-gap: var(--space-3);
|
|
}
|
|
.client-info-bar-label {
|
|
grid-column: 1;
|
|
grid-row: 1;
|
|
}
|
|
.client-info-bars strong {
|
|
grid-column: 2;
|
|
grid-row: 1;
|
|
}
|
|
.client-info-bars .client-info-bar-status {
|
|
grid-column: 1 / -1;
|
|
grid-row: 2;
|
|
text-align: left;
|
|
}
|
|
.client-info-bar-track {
|
|
grid-column: 1 / -1;
|
|
grid-row: 3;
|
|
height: 44px;
|
|
}
|
|
.client-info-donut-layout {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
}
|
|
}
|
|
.db-structure-page {
|
|
width: 100%;
|
|
max-width: none;
|
|
}
|
|
.db-structure-meta {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
font-size: var(--ui-body-size);
|
|
}
|
|
.page-actions-row {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--legacy-space-4);
|
|
margin-top: var(--legacy-space-4);
|
|
}
|
|
.page-action-buttons {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
justify-content: flex-end;
|
|
gap: var(--legacy-space-2);
|
|
}
|
|
.db-structure-intro {
|
|
display: flex;
|
|
align-items: end;
|
|
justify-content: space-between;
|
|
gap: var(--space-7);
|
|
padding-bottom: var(--space-5);
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
}
|
|
.db-structure-intro-copy {
|
|
display: grid;
|
|
gap: var(--space-2);
|
|
max-width: 780px;
|
|
}
|
|
.db-structure-eyebrow {
|
|
color: var(--muted);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
}
|
|
.db-structure-intro h2 {
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--type-h2-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.15;
|
|
}
|
|
.db-structure-intro p {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
font-size: var(--type-body-size);
|
|
line-height: 1.55;
|
|
}
|
|
.db-structure-intro-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
flex-wrap: wrap;
|
|
gap: var(--space-3);
|
|
flex: 0 0 auto;
|
|
}
|
|
.db-structure-persistence {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
color: var(--muted);
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.db-structure-persistence i {
|
|
width: 8px;
|
|
height: 8px;
|
|
background: var(--muted);
|
|
}
|
|
.db-structure-persistence.is-postgresql i {
|
|
background: var(--success);
|
|
}
|
|
.db-structure-summary {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, var(--tile-compact-width));
|
|
justify-content: start;
|
|
gap: var(--segment-gap);
|
|
margin-top: var(--space-5);
|
|
padding: var(--segment-inset);
|
|
border: 0;
|
|
border-radius: var(--segment-radius);
|
|
background: var(--segment-surface);
|
|
box-shadow: none;
|
|
}
|
|
.db-structure-summary article {
|
|
display: grid;
|
|
align-content: space-between;
|
|
gap: var(--space-2);
|
|
min-height: 148px;
|
|
padding: var(--space-4);
|
|
border: 0;
|
|
border-radius: 0;
|
|
background: var(--tile-surface);
|
|
box-shadow: none;
|
|
}
|
|
.db-structure-summary article > span {
|
|
color: var(--muted);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
}
|
|
.db-structure-summary article > strong {
|
|
color: var(--heading);
|
|
font-size: var(--type-h2-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.db-structure-summary article > small {
|
|
color: var(--muted);
|
|
font-size: var(--type-meta-size);
|
|
line-height: 1.4;
|
|
}
|
|
.db-structure-toolbar {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--space-4);
|
|
margin-top: var(--space-5);
|
|
padding: 0 var(--segment-inset);
|
|
}
|
|
.db-structure-meta {
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.db-structure-meta time {
|
|
color: var(--text);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.db-structure-layers {
|
|
display: grid;
|
|
gap: var(--space-7);
|
|
margin-top: var(--space-5);
|
|
width: 100%;
|
|
}
|
|
.db-structure-layer {
|
|
padding: var(--segment-inset);
|
|
border: 0;
|
|
border-radius: var(--segment-radius);
|
|
background: var(--segment-surface);
|
|
box-shadow: none;
|
|
}
|
|
.db-structure-layer-header {
|
|
display: flex;
|
|
align-items: end;
|
|
justify-content: space-between;
|
|
gap: var(--space-5);
|
|
margin-bottom: var(--space-4);
|
|
padding: 0 var(--space-1);
|
|
}
|
|
.db-structure-layer-header > div {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
max-width: 760px;
|
|
}
|
|
.db-structure-layer-header span {
|
|
color: var(--muted);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
}
|
|
.db-structure-layer-header h3 {
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--type-h3-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.35;
|
|
}
|
|
.db-structure-layer-header p {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
font-size: var(--type-body-size);
|
|
line-height: 1.5;
|
|
}
|
|
.db-structure-layer-header > strong {
|
|
flex: 0 0 auto;
|
|
color: var(--muted);
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.db-structure-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(min(100%, var(--tile-content-width)), var(--tile-content-width)));
|
|
justify-content: start;
|
|
align-items: start;
|
|
gap: var(--segment-gap);
|
|
}
|
|
.db-structure-card {
|
|
min-width: 0;
|
|
border: 0;
|
|
border-radius: 0;
|
|
background: var(--tile-surface);
|
|
box-shadow: none;
|
|
}
|
|
.db-structure-card.is-expanded {
|
|
grid-column: 1 / -1;
|
|
width: 100%;
|
|
}
|
|
.db-structure-card-header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--space-4);
|
|
width: 100%;
|
|
min-height: 112px;
|
|
padding: var(--space-4);
|
|
border: 0;
|
|
color: inherit;
|
|
background: transparent;
|
|
text-align: left;
|
|
cursor: pointer;
|
|
}
|
|
.db-structure-card-header:hover {
|
|
background: var(--tile-surface-hover);
|
|
}
|
|
.db-structure-card-header:focus-visible {
|
|
outline: var(--bw-emphasis) solid var(--focus-ring);
|
|
outline-offset: calc(-1 * var(--bw-emphasis));
|
|
}
|
|
.db-structure-card-copy {
|
|
display: grid;
|
|
gap: var(--space-2);
|
|
min-width: 0;
|
|
}
|
|
.db-structure-table-kind {
|
|
color: var(--muted);
|
|
font-size: var(--type-badge-size);
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
}
|
|
.db-structure-card-copy > strong {
|
|
color: var(--heading);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-semibold);
|
|
overflow-wrap: break-word;
|
|
}
|
|
.db-structure-card-facts {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: var(--space-1) var(--space-3);
|
|
color: var(--muted);
|
|
font-size: var(--type-meta-size);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.db-structure-card-toggle {
|
|
flex: 0 0 auto;
|
|
color: var(--muted);
|
|
}
|
|
.db-structure-card-body {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr);
|
|
gap: var(--space-6);
|
|
padding: var(--space-5);
|
|
border-top: var(--border-hair) solid var(--line);
|
|
}
|
|
.db-structure-card-section {
|
|
min-width: 0;
|
|
}
|
|
.db-structure-detail-heading {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--space-3);
|
|
margin-bottom: var(--space-3);
|
|
}
|
|
.db-structure-detail-heading h4 {
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.db-structure-detail-heading span {
|
|
color: var(--muted);
|
|
font-size: var(--type-meta-size);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.db-structure-column-head,
|
|
.db-structure-columns li {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1.4fr) minmax(100px, .8fr) minmax(76px, auto);
|
|
align-items: center;
|
|
gap: var(--space-4);
|
|
}
|
|
.db-structure-column-head {
|
|
min-height: 32px;
|
|
padding: 0 var(--space-3);
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
color: var(--muted);
|
|
font-size: var(--type-table-head-size);
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
}
|
|
.db-structure-columns {
|
|
display: grid;
|
|
gap: 0;
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
.db-structure-columns li {
|
|
min-height: 48px;
|
|
padding: var(--space-2) var(--space-3);
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
font-size: var(--type-table-body-size);
|
|
}
|
|
.db-structure-columns li:last-child {
|
|
border-bottom: 0;
|
|
}
|
|
.db-structure-columns strong {
|
|
color: var(--heading);
|
|
font-weight: var(--fw-regular);
|
|
overflow-wrap: break-word;
|
|
}
|
|
.db-structure-columns span {
|
|
color: var(--muted);
|
|
overflow-wrap: break-word;
|
|
}
|
|
.db-structure-columns small {
|
|
color: var(--muted);
|
|
font-size: var(--type-meta-size);
|
|
text-align: right;
|
|
}
|
|
.db-structure-relations {
|
|
padding-left: var(--space-5);
|
|
border-left: var(--border-hair) solid var(--line);
|
|
}
|
|
.db-structure-relations > p {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
font-size: var(--type-body-size);
|
|
line-height: 1.5;
|
|
}
|
|
.db-structure-fks {
|
|
display: grid;
|
|
gap: 0;
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
}
|
|
.db-structure-fks li {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, .8fr) auto minmax(0, 1.2fr);
|
|
align-items: start;
|
|
gap: var(--space-2);
|
|
min-height: 48px;
|
|
padding: var(--space-3) 0;
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
color: var(--muted);
|
|
font-size: var(--type-table-body-size);
|
|
}
|
|
.db-structure-fks li:last-child {
|
|
border-bottom: 0;
|
|
}
|
|
.db-structure-fks strong {
|
|
color: var(--heading);
|
|
font-weight: var(--fw-regular);
|
|
overflow-wrap: break-word;
|
|
}
|
|
.db-structure-fks span:last-child {
|
|
overflow-wrap: break-word;
|
|
}
|
|
@media (max-width: 900px) {
|
|
.db-structure-intro {
|
|
align-items: start;
|
|
flex-direction: column;
|
|
}
|
|
.db-structure-intro-actions {
|
|
justify-content: flex-start;
|
|
}
|
|
.db-structure-card-body {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
}
|
|
.db-structure-relations {
|
|
padding-top: var(--space-5);
|
|
padding-left: 0;
|
|
border-top: var(--border-hair) solid var(--line);
|
|
border-left: 0;
|
|
}
|
|
}
|
|
@media (max-width: 560px) {
|
|
.db-structure-summary {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
}
|
|
.db-structure-summary article {
|
|
min-height: 128px;
|
|
}
|
|
.db-structure-toolbar,
|
|
.db-structure-layer-header {
|
|
align-items: start;
|
|
flex-direction: column;
|
|
}
|
|
.db-structure-grid {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
}
|
|
.db-structure-column-head {
|
|
display: none;
|
|
}
|
|
.db-structure-columns li {
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
}
|
|
.db-structure-columns small {
|
|
grid-column: 1 / -1;
|
|
text-align: left;
|
|
}
|
|
}
|
|
.viewer.app-area-results {
|
|
overflow-x: hidden;
|
|
overflow-y: auto;
|
|
background: var(--surface-app);
|
|
scrollbar-color: var(--line-strong) var(--surface-app);
|
|
scrollbar-width: thin;
|
|
}
|
|
.results-browser-page {
|
|
width: 100%;
|
|
max-width: none;
|
|
}
|
|
.results-browser-layout {
|
|
display: grid;
|
|
grid-template-columns: minmax(220px, 300px) minmax(0, 1fr);
|
|
gap: var(--legacy-space-5);
|
|
margin-top: var(--legacy-space-5);
|
|
align-items: start;
|
|
width: 100%;
|
|
}
|
|
.results-filter-panel {
|
|
display: grid;
|
|
gap: var(--legacy-space-5);
|
|
padding: var(--legacy-space-4);
|
|
border: var(--border-hair) solid var(--line);
|
|
border-radius: var(--legacy-radius-sm);
|
|
background: var(--panel);
|
|
position: sticky;
|
|
top: 0;
|
|
max-height: calc(100vh - 200px);
|
|
overflow-y: auto;
|
|
}
|
|
.results-filter-group h3 {
|
|
margin: 0 0 var(--legacy-space-2);
|
|
color: var(--muted);
|
|
font-size: var(--ui-label-size);
|
|
font-weight: var(--ui-label-weight);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
}
|
|
.results-filter-options {
|
|
display: grid;
|
|
gap: var(--legacy-space-1);
|
|
margin: 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
max-height: 220px;
|
|
overflow-y: auto;
|
|
}
|
|
.results-filter-options label {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--legacy-space-2);
|
|
font-size: var(--ui-control-size);
|
|
color: var(--text);
|
|
cursor: pointer;
|
|
}
|
|
.results-filter-options label span {
|
|
flex: 1;
|
|
min-width: 0;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.results-filter-options label b {
|
|
color: var(--muted);
|
|
font-weight: 600;
|
|
flex: 0 0 auto;
|
|
}
|
|
.results-filter-empty {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.results-filter-segmented {
|
|
display: flex;
|
|
gap: var(--legacy-space-1);
|
|
}
|
|
.results-filter-segmented button {
|
|
flex: 1;
|
|
min-height: var(--control-height);
|
|
padding: var(--legacy-space-1) var(--legacy-space-2);
|
|
border: var(--border-hair) solid var(--line);
|
|
border-radius: var(--legacy-radius-sm);
|
|
color: var(--text);
|
|
background: var(--panel-raised);
|
|
font-size: var(--ui-control-size);
|
|
cursor: pointer;
|
|
}
|
|
.results-filter-segmented button.active {
|
|
border-color: var(--line-strong);
|
|
color: var(--state-selected-text);
|
|
background: var(--state-selected);
|
|
}
|
|
.results-filter-readonly {
|
|
opacity: .8;
|
|
}
|
|
.results-filter-readonly ul li {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: var(--legacy-space-2);
|
|
font-size: var(--ui-control-size);
|
|
color: var(--muted);
|
|
padding: 2px 0;
|
|
}
|
|
.results-filter-reset {
|
|
justify-self: start;
|
|
}
|
|
.results-browser-table-wrap {
|
|
min-width: 0;
|
|
width: 100%;
|
|
}
|
|
.results-browser-table {
|
|
border: var(--border-hair) solid var(--line);
|
|
border-radius: var(--legacy-radius-sm);
|
|
background: var(--panel);
|
|
width: 100%;
|
|
overflow-x: auto;
|
|
}
|
|
.results-browser-row {
|
|
display: grid;
|
|
grid-template-columns: minmax(280px, 1fr) 80px 120px 140px 50px 90px 110px 150px 110px;
|
|
gap: var(--legacy-space-3);
|
|
align-items: center;
|
|
padding: var(--legacy-space-2) var(--legacy-space-3);
|
|
border-top: var(--border-hair) solid var(--line);
|
|
font-size: var(--ui-control-size);
|
|
min-width: fit-content;
|
|
}
|
|
.results-browser-row:first-child {
|
|
border-top: 0;
|
|
}
|
|
.results-browser-row-toggle {
|
|
display: contents;
|
|
}
|
|
.results-browser-row.expanded {
|
|
background: var(--panel-raised);
|
|
}
|
|
.results-browser-head {
|
|
color: var(--muted);
|
|
background: var(--panel-soft);
|
|
font-size: var(--ui-label-size);
|
|
font-weight: var(--ui-label-weight);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
padding: var(--legacy-space-2) var(--legacy-space-3);
|
|
}
|
|
.results-browser-row span {
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.results-browser-row span[data-label=Titel] {
|
|
overflow: visible;
|
|
white-space: normal;
|
|
text-overflow: clip;
|
|
line-height: 1.35;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.results-browser-row-detail {
|
|
grid-column: 1 / -1;
|
|
padding: var(--legacy-space-3);
|
|
border-top: var(--border-hair) dashed var(--line);
|
|
color: var(--muted);
|
|
font-size: var(--ui-control-size);
|
|
line-height: 1.55;
|
|
}
|
|
.results-browser-row-detail ul {
|
|
margin: var(--legacy-space-2) 0 0;
|
|
padding: 0;
|
|
list-style: none;
|
|
display: grid;
|
|
gap: var(--legacy-space-1);
|
|
}
|
|
.results-environment-value {
|
|
color: var(--text);
|
|
font-size: var(--fs-lg);
|
|
line-height: var(--lh-prose);
|
|
}
|
|
.results-environment-value strong {
|
|
color: var(--heading);
|
|
}
|
|
.results-environment-value p {
|
|
margin: var(--legacy-space-1) 0 var(--legacy-space-3);
|
|
overflow-wrap: anywhere;
|
|
white-space: pre-wrap;
|
|
}
|
|
.results-processing-alert {
|
|
margin-bottom: var(--legacy-space-3);
|
|
}
|
|
@media (max-width: 1150px) {
|
|
.results-browser-layout {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.results-filter-panel {
|
|
position: static;
|
|
max-height: none;
|
|
}
|
|
.results-browser-row {
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: var(--legacy-space-2) var(--legacy-space-4);
|
|
}
|
|
.results-browser-row span::before {
|
|
content: attr(data-label);
|
|
display: block;
|
|
margin-bottom: 2px;
|
|
color: var(--muted);
|
|
font-size: var(--ui-label-size);
|
|
font-weight: var(--ui-label-weight);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
}
|
|
.results-browser-head {
|
|
display: none;
|
|
}
|
|
}
|
|
.datahub-mitre-management {
|
|
margin-top: var(--legacy-space-6);
|
|
padding-top: var(--legacy-space-5);
|
|
border-top: var(--border-hair) solid var(--line);
|
|
}
|
|
.datahub-mitre-card {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--legacy-space-4);
|
|
padding: var(--legacy-space-4);
|
|
border: var(--border-hair) solid var(--line);
|
|
border-radius: var(--legacy-radius-md);
|
|
background: var(--panel-raised);
|
|
}
|
|
.datahub-mitre-info strong {
|
|
display: block;
|
|
color: var(--heading);
|
|
font-size: var(--ui-heading-size);
|
|
}
|
|
.datahub-mitre-info p {
|
|
margin: 4px 0 0;
|
|
color: var(--muted);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.datahub-mitre-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--legacy-space-3);
|
|
}
|
|
.datahub-mitre-upload-btn {
|
|
cursor: pointer;
|
|
}
|
|
.datahub-mitre-file-input {
|
|
display: none;
|
|
}
|
|
.baseline-table .tenant-file-row {
|
|
grid-template-columns: minmax(260px, 1fr) 90px 160px 150px 92px;
|
|
min-width: 760px;
|
|
}
|
|
.baseline-table .tenant-file-row > span {
|
|
white-space: nowrap;
|
|
}
|
|
.baseline-cell-num {
|
|
font: inherit;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.baseline-table .baseline-status {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--legacy-space-2);
|
|
color: var(--text);
|
|
font-weight: var(--ui-body-weight);
|
|
}
|
|
.baseline-table .baseline-status::before {
|
|
content: "";
|
|
flex: 0 0 auto;
|
|
width: 8px;
|
|
height: 8px;
|
|
border-radius: 50%;
|
|
background: var(--success);
|
|
}
|
|
.baseline-table .baseline-status[data-status=metadata-required]::before {
|
|
background: var(--warning);
|
|
}
|
|
@media (max-width: 1050px) {
|
|
.baseline-table .tenant-file-row {
|
|
grid-template-columns: 1fr 1fr;
|
|
min-width: 0;
|
|
}
|
|
}
|
|
.tenant-detail-page .tenant-editor-header {
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
align-items: start;
|
|
gap: var(--space-5);
|
|
padding-bottom: var(--space-5);
|
|
border-bottom: 0;
|
|
}
|
|
.tenant-detail-page .tenant-back {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: var(--space-2);
|
|
min-width: 0;
|
|
min-height: var(--control-h);
|
|
font-size: var(--fs-md);
|
|
}
|
|
.tenant-identity {
|
|
align-self: center;
|
|
min-width: 0;
|
|
padding: var(--space-3) 0;
|
|
}
|
|
.tenant-detail-page .tenant-identity h2 {
|
|
margin: 0;
|
|
padding-bottom: var(--space-1);
|
|
overflow: hidden;
|
|
font-size: calc(var(--fs-xl) * 3);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.15;
|
|
letter-spacing: -.04em;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.tenant-detail-page .tenant-identity p {
|
|
margin: var(--space-5) 0 0;
|
|
color: var(--text-secondary);
|
|
font-size: var(--fs-xl);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.tenant-rack {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
}
|
|
.tenant-detail-page .tenant-navigation-open {
|
|
min-width: calc(var(--space-8) * 2.5);
|
|
}
|
|
.tenant-detail-page > .tenant-actions {
|
|
justify-content: flex-end;
|
|
flex-wrap: nowrap;
|
|
gap: var(--space-3);
|
|
padding: var(--space-4) 0;
|
|
border-bottom: 0;
|
|
}
|
|
.tenant-detail-page > .tenant-actions .btn {
|
|
min-width: calc(var(--space-8) * 3);
|
|
}
|
|
.tenant-detail-page > .tenant-actions .btn.primary {
|
|
min-width: calc(var(--space-8) * 4.25);
|
|
}
|
|
.tenant-detail-page > .tenant-actions .gpo-folder-actions .btn {
|
|
min-width: calc(var(--space-8) * 5.25);
|
|
}
|
|
.tenant-detail-page .tenant-editor {
|
|
margin-top: var(--space-4);
|
|
padding: 0;
|
|
overflow: hidden;
|
|
border-radius: var(--radius-nav-item);
|
|
background:
|
|
linear-gradient(
|
|
135deg,
|
|
var(--surface-panel-raised),
|
|
var(--surface-panel));
|
|
}
|
|
.tenant-section-bar {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
min-height: calc(var(--row-h) + var(--space-3));
|
|
padding: 0 var(--space-5);
|
|
border-bottom: var(--bw-hairline) solid var(--border-subtle);
|
|
color: var(--text-secondary);
|
|
font-size: var(--fs-md);
|
|
letter-spacing: var(--ls-caps);
|
|
text-transform: uppercase;
|
|
}
|
|
.tenant-section-bar > span {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
}
|
|
.tenant-section-bar strong {
|
|
color: var(--text-secondary);
|
|
font-size: inherit;
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.tenant-section-bar i {
|
|
color: var(--text-muted);
|
|
font-style: normal;
|
|
}
|
|
.tenant-detail-page .tenant-editor-form {
|
|
gap: var(--space-5) var(--space-8);
|
|
padding: var(--space-4) var(--space-5) var(--space-5);
|
|
}
|
|
.tenant-detail-page .tenant-editor-form label {
|
|
color: var(--text-primary);
|
|
font-size: var(--fs-lg);
|
|
font-weight: var(--fw-regular);
|
|
}
|
|
.tenant-detail-page .tenant-editor-form label > span {
|
|
color: var(--text-primary);
|
|
font-size: var(--fs-md);
|
|
}
|
|
.tenant-detail-page .tenant-editor-form .input {
|
|
min-height: calc(var(--control-h) + var(--space-4));
|
|
border-radius: var(--radius-nav-item);
|
|
font-size: var(--fs-md);
|
|
}
|
|
.tenant-detail-page .tenant-editor-form .input[readonly] {
|
|
border-color: var(--border-subtle);
|
|
color: var(--text-secondary);
|
|
background: var(--surface-panel);
|
|
cursor: default;
|
|
}
|
|
.tenant-detail-page .tenant-editor-description textarea {
|
|
min-height: calc(var(--space-8) * 4);
|
|
padding-top: var(--space-3);
|
|
}
|
|
.tenant-detail-page .tenant-files {
|
|
margin-top: var(--space-3);
|
|
}
|
|
.tenant-scan-history {
|
|
overflow: hidden;
|
|
border: var(--bw-hairline) solid var(--border-default);
|
|
border-radius: var(--radius-nav-item);
|
|
background:
|
|
linear-gradient(
|
|
135deg,
|
|
var(--surface-panel-raised),
|
|
var(--surface-panel));
|
|
}
|
|
.tenant-scan-history > summary {
|
|
cursor: pointer;
|
|
list-style: none;
|
|
}
|
|
.tenant-scan-history > summary::-webkit-details-marker {
|
|
display: none;
|
|
}
|
|
.tenant-section-bar .tenant-history-meta {
|
|
gap: var(--space-5);
|
|
}
|
|
.tenant-history-meta b {
|
|
display: inline-grid;
|
|
place-items: center;
|
|
min-width: var(--control-h);
|
|
min-height: var(--control-h-sm);
|
|
padding: 0 var(--space-2);
|
|
border: var(--bw-hairline) solid var(--border-default);
|
|
border-radius: var(--radius-nav-item);
|
|
color: var(--text-secondary);
|
|
background: var(--surface-input);
|
|
font-size: var(--fs-md);
|
|
font-weight: var(--fw-regular);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.tenant-history-meta .triangle-icon {
|
|
transition: transform var(--dur-base) var(--ease);
|
|
}
|
|
.tenant-scan-history[open] .tenant-history-meta .triangle-icon-right {
|
|
transform: rotate(-90deg);
|
|
}
|
|
.tenant-scan-history > .tenant-file-table {
|
|
border: 0;
|
|
border-radius: 0;
|
|
background: transparent;
|
|
}
|
|
.tenant-scan-history .tenant-file-row {
|
|
min-height: calc(var(--row-h) + var(--space-4));
|
|
padding-inline: var(--space-5);
|
|
font-size: var(--fs-md);
|
|
}
|
|
.tenant-detail-page .tenant-file-row {
|
|
grid-template-columns: minmax(calc(var(--space-8) * 5), 1.1fr) minmax(calc(var(--space-8) * 5), 1.15fr) .62fr .55fr .72fr minmax(calc(var(--space-8) * 5), 1.2fr) .55fr;
|
|
min-width: calc(var(--space-8) * 29);
|
|
}
|
|
.tenant-timeslots {
|
|
display: grid;
|
|
gap: var(--space-3);
|
|
margin-top: var(--space-8);
|
|
}
|
|
.tenant-timeslots-heading {
|
|
margin: 0;
|
|
color: var(--text);
|
|
font-size: calc(var(--fs-xl) * 1.25);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.tenant-timeslots .tenant-files {
|
|
margin-top: 0;
|
|
}
|
|
.tenant-timeslot.is-selected {
|
|
border-color: var(--state-active);
|
|
outline: var(--bw-hairline) solid var(--state-active);
|
|
outline-offset: calc(-1 * var(--bw-hairline));
|
|
}
|
|
.tenant-timeslot-title {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--space-3);
|
|
}
|
|
.tenant-timeslot-title input[type=checkbox] {
|
|
width: 16px;
|
|
height: 16px;
|
|
margin: 0;
|
|
accent-color: var(--state-active);
|
|
cursor: pointer;
|
|
}
|
|
.tenant-timeslot-actions {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
gap: var(--space-2);
|
|
margin-left: auto;
|
|
margin-right: var(--space-5);
|
|
letter-spacing: normal;
|
|
text-transform: none;
|
|
}
|
|
.tenant-timeslot-actions .btn {
|
|
min-width: calc(var(--space-8) * 3);
|
|
white-space: nowrap;
|
|
}
|
|
.tenant-timeslot-actions .btn.primary {
|
|
min-width: calc(var(--space-8) * 4);
|
|
}
|
|
.tenant-timeslot-actions .gpo-folder-actions .btn {
|
|
min-width: calc(var(--space-8) * 7);
|
|
}
|
|
.tenant-timeslot-create-row {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 100%;
|
|
min-height: calc(var(--control-h) + var(--space-3));
|
|
padding: 0;
|
|
border: var(--bw-hairline) solid var(--border-default);
|
|
border-radius: var(--radius-nav-item);
|
|
color: var(--text-secondary);
|
|
background: var(--surface-panel);
|
|
cursor: pointer;
|
|
}
|
|
.tenant-timeslot-create-row span {
|
|
font-size: calc(var(--fs-xl) * 1.6);
|
|
font-weight: var(--fw-regular);
|
|
line-height: 1;
|
|
}
|
|
.tenant-timeslot-create-row:hover {
|
|
color: var(--text-primary);
|
|
background: var(--surface-panel-raised);
|
|
}
|
|
.tenant-timeslot-create-row:focus-visible {
|
|
outline: var(--bw-emphasis) solid var(--focus-ring);
|
|
outline-offset: var(--bw-hairline);
|
|
}
|
|
.tenant-timeslot-selection {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-3);
|
|
min-height: var(--control-h);
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: 0;
|
|
color: var(--text-secondary);
|
|
font-size: var(--fs-lg);
|
|
}
|
|
.tenant-timeslot-selection strong {
|
|
color: var(--text-primary);
|
|
}
|
|
.tenant-timeslot-report-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-1);
|
|
}
|
|
.tenant-timeslot-report-actions .tenant-scan-delete {
|
|
min-width: var(--control-h-sm);
|
|
width: var(--control-h-sm);
|
|
height: var(--control-h-sm);
|
|
padding: 0;
|
|
}
|
|
.timeslot-dialog-form {
|
|
display: grid;
|
|
gap: var(--space-4);
|
|
min-width: min(360px, 72vw);
|
|
}
|
|
.timeslot-dialog-form label {
|
|
display: grid;
|
|
gap: var(--space-2);
|
|
color: var(--text-primary);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.timeslot-dialog-form p {
|
|
margin: 0;
|
|
color: var(--text-secondary);
|
|
line-height: 1.5;
|
|
}
|
|
.timeslot-dialog-form footer {
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
gap: var(--space-2);
|
|
padding-top: var(--space-3);
|
|
border-top: var(--bw-hairline) solid var(--border-subtle);
|
|
}
|
|
.tenant-scan-history .tenant-file-head {
|
|
min-height: calc(var(--row-h) + var(--space-2));
|
|
background: color-mix(in srgb, var(--surface-input) 36%, transparent);
|
|
font-size: var(--fs-sm);
|
|
}
|
|
.tenant-scan-history .tenant-file-row b {
|
|
color: var(--text-primary);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.tenant-scan-history .tenant-scan-delete {
|
|
min-width: calc(var(--space-8) * 2.75);
|
|
}
|
|
@media (max-width: 1050px) {
|
|
.tenant-detail-page .tenant-editor-header {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.tenant-detail-page .tenant-file-row {
|
|
min-width: 0;
|
|
}
|
|
}
|
|
@media (max-width: 800px) {
|
|
.tenant-detail-page > .tenant-actions {
|
|
flex-wrap: wrap;
|
|
}
|
|
.tenant-timeslot-actions {
|
|
flex-wrap: wrap;
|
|
justify-content: flex-start;
|
|
margin: var(--space-2) 0;
|
|
}
|
|
.tenant-timeslot > summary {
|
|
align-items: flex-start;
|
|
flex-wrap: wrap;
|
|
padding-block: var(--space-2);
|
|
}
|
|
}
|
|
.datahub-page.tenant-detail-page {
|
|
height: 100%;
|
|
min-height: 0;
|
|
padding: var(--panel-inset);
|
|
overflow: hidden;
|
|
}
|
|
.tenant-detail-page > .tenant-detail-layout {
|
|
display: grid;
|
|
grid-template-columns: clamp(420px, 27vw, 520px) minmax(0, 1fr);
|
|
width: 100%;
|
|
max-width: none;
|
|
height: 100%;
|
|
min-height: 0;
|
|
margin: 0;
|
|
}
|
|
.tenant-detail-navigation,
|
|
.tenant-detail-information {
|
|
min-width: 0;
|
|
min-height: 0;
|
|
background: var(--surface-app);
|
|
}
|
|
.tenant-detail-navigation {
|
|
display: flex;
|
|
flex-direction: column;
|
|
overflow: hidden;
|
|
border-right: var(--bw-hairline) solid var(--border-default);
|
|
}
|
|
.tenant-detail-information {
|
|
display: block;
|
|
padding: var(--space-5) var(--space-6);
|
|
overflow-y: auto;
|
|
scrollbar-color: var(--border-strong) var(--surface-panel);
|
|
scrollbar-width: thin;
|
|
}
|
|
.tenant-information-sheet {
|
|
width: min(794px, 100%);
|
|
background: transparent;
|
|
}
|
|
.tenant-policy-information {
|
|
width: 100%;
|
|
}
|
|
.tenant-detail-page .tenant-editor-header {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
align-items: center;
|
|
column-gap: var(--space-3);
|
|
flex: 0 0 auto;
|
|
padding: var(--space-5) var(--space-5) var(--space-4);
|
|
border-bottom: 0;
|
|
}
|
|
.tenant-detail-page .tenant-back {
|
|
grid-column: 1;
|
|
justify-self: start;
|
|
min-height: var(--control-h);
|
|
margin-bottom: 0;
|
|
color: var(--text-secondary);
|
|
}
|
|
.tenant-detail-page .tenant-navigation-open {
|
|
grid-column: 2;
|
|
justify-self: end;
|
|
}
|
|
.tenant-detail-page .tenant-identity {
|
|
grid-column: 1 / -1;
|
|
padding: 0;
|
|
margin-top: var(--space-4);
|
|
}
|
|
.tenant-detail-page .tenant-identity h2 {
|
|
padding: 0;
|
|
font-size: var(--type-h2-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1.15;
|
|
letter-spacing: -.03em;
|
|
}
|
|
.tenant-detail-page .tenant-identity p {
|
|
margin: var(--space-2) 0 0;
|
|
font-size: var(--fs-lg);
|
|
}
|
|
.tenant-timeslots {
|
|
display: flex;
|
|
flex: 1 1 auto;
|
|
flex-direction: column;
|
|
gap: 0;
|
|
min-height: 0;
|
|
margin: 0;
|
|
overflow: hidden;
|
|
}
|
|
.tenant-timeslots-header {
|
|
display: flex;
|
|
flex: 0 0 auto;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--space-3);
|
|
padding: 0 var(--space-5) var(--space-3);
|
|
border-bottom: var(--bw-hairline) solid var(--border-default);
|
|
}
|
|
.tenant-timeslots-heading {
|
|
margin: 0;
|
|
color: var(--text-primary);
|
|
font-size: var(--type-h3-size);
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: 0;
|
|
text-transform: none;
|
|
}
|
|
.tenant-timeslot-add {
|
|
flex: 0 0 auto;
|
|
}
|
|
.tenant-timeslot-add > span {
|
|
margin-right: var(--space-1);
|
|
font-size: var(--fs-lg);
|
|
line-height: 1;
|
|
}
|
|
.tenant-timeslot-list {
|
|
display: grid;
|
|
grid-auto-rows: max-content;
|
|
align-content: start;
|
|
flex: 1 1 auto;
|
|
gap: var(--space-3);
|
|
min-height: 0;
|
|
padding: var(--space-2) var(--space-2) var(--space-5);
|
|
overflow-y: auto;
|
|
scrollbar-color: var(--border-strong) var(--surface-inset);
|
|
scrollbar-gutter: stable;
|
|
scrollbar-width: thin;
|
|
}
|
|
.tenant-detail-page .tenant-files {
|
|
margin: 0;
|
|
}
|
|
.tenant-scan-history {
|
|
position: relative;
|
|
overflow: hidden;
|
|
border: var(--bw-hairline) solid var(--border-default);
|
|
border-radius: var(--radius-nav-item);
|
|
background: var(--surface-panel-raised);
|
|
}
|
|
.tenant-scan-history::after {
|
|
content: none;
|
|
}
|
|
.tenant-timeslot.is-selected {
|
|
border-color: var(--state-active);
|
|
outline: var(--bw-hairline) solid var(--state-active);
|
|
outline-offset: calc(-1 * var(--bw-hairline));
|
|
box-shadow: inset var(--marker-width) 0 0 var(--state-active);
|
|
}
|
|
.tenant-timeslot.is-selected::after {
|
|
display: none;
|
|
}
|
|
.tenant-timeslot > .tenant-section-bar {
|
|
min-height: calc(var(--row-h) + var(--space-4));
|
|
padding: 0 var(--space-4) 0 var(--space-5);
|
|
border-bottom: 0;
|
|
background: transparent;
|
|
letter-spacing: normal;
|
|
text-transform: none;
|
|
}
|
|
.tenant-timeslot.is-selected > .tenant-section-bar {
|
|
background: var(--surface-hover);
|
|
}
|
|
.tenant-timeslot > .tenant-section-bar:hover {
|
|
background: var(--surface-hover);
|
|
}
|
|
.tenant-timeslot-title {
|
|
align-self: stretch;
|
|
flex: 0 0 calc(var(--space-8) * 4.25);
|
|
padding-left: var(--space-1);
|
|
gap: var(--space-3);
|
|
cursor: pointer;
|
|
}
|
|
.tenant-timeslot > .tenant-section-bar > .tenant-history-meta {
|
|
align-self: stretch;
|
|
flex: 1 1 auto;
|
|
justify-content: flex-end;
|
|
cursor: pointer;
|
|
}
|
|
.tenant-timeslot-title input[type=checkbox],
|
|
.tenant-report-row input[type=checkbox] {
|
|
flex: 0 0 auto;
|
|
width: var(--space-4);
|
|
height: var(--space-4);
|
|
margin: 0;
|
|
accent-color: var(--state-active);
|
|
cursor: pointer;
|
|
}
|
|
.tenant-timeslot-title strong {
|
|
color: var(--text-primary);
|
|
font-size: var(--fs-lg);
|
|
font-weight: var(--fw-semibold);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.tenant-section-bar .tenant-history-meta {
|
|
gap: var(--space-4);
|
|
}
|
|
.tenant-history-meta b {
|
|
min-width: var(--control-h);
|
|
min-height: var(--control-h);
|
|
border-color: var(--border-default);
|
|
background: var(--surface-panel-raised);
|
|
font-size: var(--fs-md);
|
|
}
|
|
.tenant-report-list {
|
|
border-top: var(--bw-hairline) solid var(--border-subtle);
|
|
container: timeslot-sources / inline-size;
|
|
}
|
|
.tenant-report-row {
|
|
display: grid;
|
|
grid-template-columns: var(--space-5) minmax(calc(var(--space-8) * 3.75), 1fr) calc(var(--space-8) * 4.25) calc(var(--space-8) * 3) calc(var(--space-8) * 2);
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
min-height: calc(var(--row-h) + var(--space-5));
|
|
padding: var(--space-2) var(--space-3);
|
|
border-bottom: var(--bw-hairline) solid var(--border-subtle);
|
|
background: var(--surface-panel-raised);
|
|
}
|
|
.tenant-report-row:last-child {
|
|
border-bottom: 0;
|
|
}
|
|
.tenant-report-row:not(.tenant-report-head):hover {
|
|
background: var(--surface-hover);
|
|
}
|
|
.tenant-report-head {
|
|
min-height: calc(var(--row-h) + var(--space-2));
|
|
color: var(--text-secondary);
|
|
background: var(--surface-panel);
|
|
font-size: var(--type-table-head-size);
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: var(--ls-caps);
|
|
text-transform: uppercase;
|
|
}
|
|
.tenant-report-copy {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
min-width: 0;
|
|
}
|
|
.tenant-report-row > * {
|
|
min-width: 0;
|
|
}
|
|
.tenant-report-copy > * {
|
|
min-width: 0;
|
|
}
|
|
.tenant-report-copy b {
|
|
overflow: hidden;
|
|
color: var(--text-primary);
|
|
font-size: var(--fs-lg);
|
|
font-weight: var(--fw-regular);
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.tenant-report-copy small {
|
|
overflow: hidden;
|
|
color: var(--text-secondary);
|
|
font-size: var(--type-meta-size);
|
|
font-variant-numeric: tabular-nums;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.tenant-report-imported {
|
|
overflow: hidden;
|
|
color: var(--text-primary);
|
|
font-size: var(--type-body-size);
|
|
font-variant-numeric: tabular-nums;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.tenant-report-status {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
min-width: 0;
|
|
color: var(--text-primary);
|
|
font-size: var(--type-body-size);
|
|
font-weight: var(--fw-regular);
|
|
white-space: nowrap;
|
|
}
|
|
.tenant-report-status::before {
|
|
flex: 0 0 auto;
|
|
width: var(--space-2);
|
|
height: var(--space-2);
|
|
border-radius: 50%;
|
|
background: var(--text-secondary);
|
|
content: "";
|
|
}
|
|
.tenant-report-status[data-status=recognized]::before {
|
|
background: var(--state-done);
|
|
}
|
|
.tenant-report-status[data-status=succeeded]::before {
|
|
background: var(--state-done);
|
|
}
|
|
.tenant-report-status[data-status=generic]::before {
|
|
background: var(--outcome-warning);
|
|
}
|
|
.tenant-report-status[data-status=queued]::before,
|
|
.tenant-report-status[data-status=running]::before {
|
|
background: var(--info);
|
|
}
|
|
.tenant-report-status[data-status=partial]::before,
|
|
.tenant-report-status[data-status=upload-required]::before,
|
|
.tenant-report-status[data-status=storage-unavailable]::before,
|
|
.tenant-report-status[data-status=recovery-required]::before {
|
|
background: var(--warning);
|
|
}
|
|
.tenant-report-status[data-status=not-viewable]::before,
|
|
.tenant-report-status[data-status=unavailable]::before,
|
|
.tenant-report-status[data-status=processing-error]::before,
|
|
.tenant-report-status[data-status=dead-letter]::before {
|
|
background: var(--state-offline);
|
|
}
|
|
.tenant-report-status[data-status=processing-error] {
|
|
color: var(--state-offline);
|
|
}
|
|
.tenant-report-status[data-status=dead-letter] {
|
|
color: var(--state-offline);
|
|
}
|
|
.tenant-report-status[data-status=reimport-recommended]::before,
|
|
.tenant-report-status[data-status=re-evaluation-required]::before,
|
|
.tenant-report-status[data-status=review-required]::before {
|
|
background: var(--warning);
|
|
}
|
|
.tenant-report-status[data-status=reimport-recommended],
|
|
.tenant-report-status[data-status=re-evaluation-required],
|
|
.tenant-report-status[data-status=review-required] {
|
|
color: var(--warning);
|
|
}
|
|
.tenant-processing-alert {
|
|
display: grid;
|
|
gap: var(--space-3);
|
|
margin: var(--space-4) var(--space-5);
|
|
padding: var(--space-4);
|
|
border: var(--bw-hairline) solid var(--warning);
|
|
color: var(--text-primary);
|
|
background: color-mix(in srgb, var(--warning) 8%, var(--surface-panel));
|
|
}
|
|
.tenant-processing-alert > header {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
}
|
|
.tenant-processing-alert > header > strong {
|
|
color: var(--warning);
|
|
font-size: var(--fs-lg);
|
|
}
|
|
.tenant-processing-alert[data-status=error] {
|
|
border-color: var(--state-offline);
|
|
background: color-mix(in srgb, var(--state-offline) 8%, var(--surface-panel));
|
|
}
|
|
.tenant-processing-alert[data-status=error] > header > strong {
|
|
color: var(--state-offline);
|
|
}
|
|
.tenant-processing-alert > header > span {
|
|
color: var(--text-secondary);
|
|
font-size: var(--fs-md);
|
|
}
|
|
.tenant-processing-alert-row {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
align-items: center;
|
|
gap: var(--space-4);
|
|
padding-top: var(--space-3);
|
|
border-top: var(--bw-hairline) solid var(--border-subtle);
|
|
}
|
|
.tenant-processing-alert-row p {
|
|
margin: var(--space-1) 0 0;
|
|
color: var(--text-secondary);
|
|
font-size: var(--fs-md);
|
|
line-height: var(--lh-prose);
|
|
}
|
|
.tenant-processing-alert-row .btn {
|
|
white-space: nowrap;
|
|
}
|
|
.tenant-report-row input[type=checkbox]:disabled {
|
|
cursor: not-allowed;
|
|
opacity: .42;
|
|
}
|
|
.tenant-report-row .tenant-scan-delete {
|
|
min-width: calc(var(--space-8) * 2);
|
|
width: 100%;
|
|
}
|
|
.tenant-report-gpo .tenant-report-copy b,
|
|
.tenant-report-gpo .tenant-report-copy small {
|
|
overflow: visible;
|
|
text-overflow: clip;
|
|
white-space: normal;
|
|
overflow-wrap: normal;
|
|
}
|
|
.tenant-report-gpo {
|
|
grid-template-columns: var(--space-5) minmax(0, 1fr) minmax(0, 8rem) minmax(0, 11rem) minmax(0, 7rem);
|
|
}
|
|
.tenant-report-gpo .tenant-report-status {
|
|
display: block;
|
|
white-space: normal;
|
|
overflow: visible;
|
|
}
|
|
.tenant-report-gpo .tenant-report-status::before {
|
|
display: inline-block;
|
|
margin-inline-end: var(--space-1);
|
|
}
|
|
.tenant-report-gpo .tenant-gpo-row-actions .btn {
|
|
white-space: normal;
|
|
word-break: normal;
|
|
}
|
|
@container timeslot-sources (max-width: 620px) {
|
|
.tenant-report-row:not(.tenant-report-head) {
|
|
grid-template-columns: var(--space-5) minmax(0, 1fr) calc(var(--space-8) * 2.5);
|
|
align-items: start;
|
|
}
|
|
.tenant-report-head {
|
|
display: none;
|
|
}
|
|
.tenant-report-row > :first-child {
|
|
grid-column: 1;
|
|
grid-row: 1;
|
|
}
|
|
.tenant-report-row > :not(:first-child) {
|
|
grid-column: 2;
|
|
}
|
|
.tenant-report-row > :last-child {
|
|
grid-column: 3;
|
|
grid-row: 1 / span 3;
|
|
align-self: start;
|
|
}
|
|
.tenant-report-copy b,
|
|
.tenant-report-copy small,
|
|
.tenant-report-imported {
|
|
overflow: visible;
|
|
text-overflow: clip;
|
|
white-space: normal;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.tenant-report-imported {
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.tenant-report-imported::before {
|
|
content: "Imported: ";
|
|
color: var(--text-secondary);
|
|
}
|
|
.tenant-report-status {
|
|
flex-wrap: wrap;
|
|
font-size: var(--type-table-body-size);
|
|
}
|
|
}
|
|
.tenant-gpo-source-marker {
|
|
display: grid;
|
|
place-items: center;
|
|
width: var(--space-5);
|
|
height: var(--space-5);
|
|
color: var(--surface-app);
|
|
background: var(--marking-color);
|
|
font-size: var(--type-badge-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.tenant-report-row .tenant-gpo-view {
|
|
min-width: calc(var(--space-8) * 2);
|
|
width: 100%;
|
|
}
|
|
.tenant-gpo-row-actions {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
}
|
|
.gpo-source-recovery {
|
|
flex-wrap: wrap;
|
|
min-width: 0;
|
|
}
|
|
.gpo-source-recovery .gpo-folder-feedback {
|
|
position: static;
|
|
width: 100%;
|
|
overflow-wrap: normal;
|
|
}
|
|
.tenant-gpo-row-actions .btn {
|
|
width: 100%;
|
|
min-width: 0;
|
|
padding-inline: var(--space-1);
|
|
}
|
|
.tenant-report-row .btn:not(.danger):not(.primary):hover:not(:disabled) {
|
|
background: var(--button-bg);
|
|
color: var(--button-text);
|
|
border-color: var(--border-strong);
|
|
}
|
|
.tenant-report-no-action {
|
|
color: var(--text-secondary);
|
|
text-align: center;
|
|
}
|
|
.tenant-timeslot-actions {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: var(--space-2);
|
|
margin: 0;
|
|
padding: var(--space-3) var(--space-4) var(--space-3) var(--space-8);
|
|
border-top: var(--bw-hairline) solid var(--border-subtle);
|
|
background: var(--surface-panel-raised);
|
|
}
|
|
.tenant-timeslot-actions .btn,
|
|
.tenant-timeslot-actions .gpo-folder-actions,
|
|
.tenant-timeslot-actions .gpo-folder-actions .btn {
|
|
width: 100%;
|
|
min-width: 0;
|
|
white-space: nowrap;
|
|
}
|
|
.tenant-timeslot-actions .gpo-folder-actions {
|
|
display: contents;
|
|
}
|
|
.tenant-timeslot-add-heading {
|
|
grid-column: 1 / -1;
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
margin-bottom: var(--space-1);
|
|
}
|
|
.tenant-timeslot-add-heading h4 {
|
|
margin: 0;
|
|
font-size: var(--type-body-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.tenant-timeslot-add-heading span,
|
|
.tenant-timeslot-delete-action > span {
|
|
color: var(--text-secondary);
|
|
font-size: var(--type-meta-size);
|
|
}
|
|
.tenant-timeslot-delete-action {
|
|
grid-column: 1 / -1;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
flex-wrap: wrap;
|
|
gap: var(--space-2);
|
|
margin-top: var(--space-2);
|
|
padding-top: var(--space-3);
|
|
border-top: var(--bw-hairline) solid var(--border-subtle);
|
|
}
|
|
.tenant-timeslot-delete-action .btn {
|
|
width: auto;
|
|
}
|
|
.tenant-timeslot-actions .gpo-folder-feedback {
|
|
position: static;
|
|
grid-column: 1 / -1;
|
|
width: auto;
|
|
}
|
|
.tenant-files-empty {
|
|
margin: 0;
|
|
border: 0;
|
|
border-top: var(--bw-hairline) solid var(--border-subtle);
|
|
border-radius: 0;
|
|
background: var(--surface-panel-raised);
|
|
}
|
|
.tenant-information-header {
|
|
display: flex;
|
|
flex: 0 0 auto;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--space-4);
|
|
min-height: calc(var(--row-h) + var(--space-3));
|
|
padding: 0 0 var(--space-3);
|
|
border-bottom: var(--bw-hairline) solid var(--border-default);
|
|
background: transparent;
|
|
}
|
|
.tenant-information-title,
|
|
.tenant-information-actions {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
}
|
|
.tenant-information-actions {
|
|
flex-wrap: wrap;
|
|
justify-content: flex-end;
|
|
}
|
|
.tenant-information-title > strong {
|
|
color: var(--text-primary);
|
|
font-size: var(--type-h3-size);
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: 0;
|
|
text-transform: none;
|
|
}
|
|
.tenant-edit-client,
|
|
.tenant-save-client {
|
|
min-width: calc(var(--space-8) * 3);
|
|
}
|
|
.tenant-detail-page .tenant-editor-form {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr);
|
|
gap: 0;
|
|
padding: 0;
|
|
}
|
|
.tenant-detail-page .tenant-editor-form label {
|
|
display: block;
|
|
min-height: 0;
|
|
padding: var(--space-5) 0;
|
|
border-bottom: var(--bw-hairline) solid var(--border-subtle);
|
|
}
|
|
.tenant-detail-page .tenant-editor-form .tenant-field-label {
|
|
display: flex;
|
|
align-items: baseline;
|
|
justify-content: space-between;
|
|
justify-self: stretch;
|
|
gap: var(--space-2);
|
|
margin-bottom: var(--space-3);
|
|
padding: 0;
|
|
color: var(--text-primary);
|
|
background: transparent;
|
|
font-size: var(--type-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: 0;
|
|
text-transform: none;
|
|
}
|
|
.tenant-detail-page .tenant-editor-form .tenant-field-label i {
|
|
color: var(--text-secondary);
|
|
font-size: var(--fs-md);
|
|
font-style: normal;
|
|
font-weight: var(--fw-regular);
|
|
}
|
|
.tenant-detail-page .tenant-editor-form .tenant-field-value {
|
|
display: block;
|
|
justify-self: start;
|
|
color: var(--text-primary);
|
|
font-size: var(--type-body-size);
|
|
font-weight: var(--fw-regular);
|
|
letter-spacing: normal;
|
|
line-height: var(--lh-prose);
|
|
text-align: left;
|
|
text-transform: none;
|
|
}
|
|
.tenant-field-prose {
|
|
white-space: pre-wrap;
|
|
}
|
|
.tenant-detail-page .tenant-editor-form .input {
|
|
min-height: var(--control-h);
|
|
width: auto;
|
|
min-width: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
border-radius: 0;
|
|
color: var(--text-primary);
|
|
background: transparent;
|
|
font-size: var(--fs-lg);
|
|
}
|
|
.tenant-detail-page .tenant-editor-form textarea.input {
|
|
display: block;
|
|
width: 100%;
|
|
min-height: calc(var(--space-8) * 2);
|
|
line-height: var(--lh-prose);
|
|
resize: none;
|
|
}
|
|
.tenant-detail-page .tenant-editor-form.is-editing .input {
|
|
min-height: calc(var(--control-h) + var(--space-3));
|
|
margin: 0;
|
|
padding: 0 var(--space-3);
|
|
border: var(--bw-hairline) solid var(--border-default);
|
|
border-radius: var(--btn-radius);
|
|
background: var(--surface-input);
|
|
}
|
|
.tenant-detail-page .tenant-editor-form.is-editing textarea.input {
|
|
min-height: calc(var(--space-8) * 8);
|
|
padding-top: var(--space-3);
|
|
resize: vertical;
|
|
}
|
|
.tenant-detail-page .tenant-editor-form .input[readonly] {
|
|
border: 0;
|
|
color: var(--text-primary);
|
|
background: transparent;
|
|
}
|
|
.tenant-information-sheet > .datahub-alert,
|
|
.tenant-information-sheet > .tenant-save-feedback {
|
|
width: auto;
|
|
margin: var(--space-3) 0;
|
|
}
|
|
.tenant-delete-client {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-width: calc(var(--space-8) * 3);
|
|
margin: 0;
|
|
cursor: pointer;
|
|
}
|
|
.tenant-delete-client:focus-visible {
|
|
outline: var(--bw-emphasis) solid var(--focus-ring);
|
|
outline-offset: var(--space-1);
|
|
}
|
|
@media (max-width: 1050px) {
|
|
.datahub-page.tenant-detail-page {
|
|
height: auto;
|
|
min-height: 100%;
|
|
overflow: visible;
|
|
}
|
|
.tenant-detail-page > .tenant-detail-layout {
|
|
grid-template-columns: 1fr;
|
|
height: auto;
|
|
}
|
|
.tenant-detail-navigation {
|
|
max-height: calc(var(--space-8) * 20);
|
|
border-right: 0;
|
|
border-bottom: var(--bw-hairline) solid var(--border-default);
|
|
}
|
|
.tenant-detail-information {
|
|
min-height: calc(var(--space-8) * 15);
|
|
overflow: visible;
|
|
}
|
|
.tenant-information-sheet {
|
|
width: 100%;
|
|
}
|
|
}
|
|
@media (max-width: 700px) {
|
|
.tenant-timeslot-actions {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.tenant-detail-page .tenant-editor-form label {
|
|
grid-template-columns: 1fr;
|
|
gap: var(--space-2);
|
|
}
|
|
}
|
|
|
|
/* src/styles/datahub-redesign.css */
|
|
.datahub-page > .datahub-rack-module {
|
|
width: min(1180px, 100%);
|
|
margin-inline: auto;
|
|
}
|
|
.datahub-rack-module {
|
|
box-sizing: border-box;
|
|
margin: 0 0 var(--legacy-space-4);
|
|
border: var(--border-hair) solid var(--line);
|
|
color: var(--text);
|
|
background: var(--panel);
|
|
}
|
|
.datahub-history-module {
|
|
overflow: hidden;
|
|
}
|
|
.datahub-history-scroll {
|
|
overflow-x: auto;
|
|
scrollbar-color: var(--line-strong) var(--surface-app);
|
|
scrollbar-width: thin;
|
|
}
|
|
.datahub-history-grid {
|
|
display: flex;
|
|
width: 100%;
|
|
min-width: 1180px;
|
|
background: var(--surface-app);
|
|
}
|
|
.datahub-history-column {
|
|
display: grid;
|
|
flex: 1 0 145px;
|
|
grid-template-rows: var(--row-height) minmax(160px, auto) 40px;
|
|
min-width: 145px;
|
|
border-right: var(--border-hair) solid var(--line);
|
|
background: var(--panel);
|
|
}
|
|
.datahub-history-column > header {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr);
|
|
align-items: center;
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
background: var(--panel-raised);
|
|
}
|
|
.datahub-history-column.placeholder > header {
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
place-items: center;
|
|
color: var(--muted);
|
|
font-size: var(--ui-body-size);
|
|
}
|
|
.datahub-history-column.active > header {
|
|
color: var(--state-selected-text);
|
|
background: var(--state-selected);
|
|
}
|
|
.datahub-client-name {
|
|
height: 100%;
|
|
min-width: 0;
|
|
padding: 0 var(--legacy-space-3);
|
|
overflow: hidden;
|
|
border: 0;
|
|
color: inherit;
|
|
background: transparent;
|
|
cursor: pointer;
|
|
font-size: var(--ui-body-size);
|
|
font-weight: var(--ui-strong-weight);
|
|
text-align: left;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.datahub-history-rows {
|
|
display: grid;
|
|
align-content: start;
|
|
background: var(--panel);
|
|
}
|
|
.datahub-history-row {
|
|
display: grid;
|
|
grid-template-columns: 28px minmax(0, 1fr) 40px;
|
|
align-items: center;
|
|
min-height: 40px;
|
|
padding: 0 var(--legacy-space-2);
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
background: var(--panel);
|
|
}
|
|
.datahub-history-row:hover {
|
|
background: var(--panel-hover);
|
|
}
|
|
.datahub-history-row.selected {
|
|
outline: var(--border-hair) solid var(--marking-color);
|
|
outline-offset: -1px;
|
|
}
|
|
.datahub-history-row.current,
|
|
.datahub-history-row.selected {
|
|
color: var(--state-selected-text);
|
|
background: var(--state-selected);
|
|
}
|
|
.datahub-history-row.empty {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.datahub-history-row.empty i {
|
|
width: 12px;
|
|
height: 12px;
|
|
background: var(--surface-input);
|
|
}
|
|
.datahub-history-select,
|
|
.datahub-history-date {
|
|
color: inherit;
|
|
cursor: pointer;
|
|
}
|
|
.datahub-history-select {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 24px;
|
|
height: 24px;
|
|
padding: 0;
|
|
border: var(--border-hair) solid var(--line-strong);
|
|
background: var(--surface-input);
|
|
font-size: var(--ui-small-size);
|
|
}
|
|
.datahub-history-select[aria-pressed=true] {
|
|
border-color: var(--state-selected-text);
|
|
}
|
|
.datahub-history-date {
|
|
min-width: 0;
|
|
padding: 0 var(--legacy-space-1);
|
|
overflow: hidden;
|
|
border: 0;
|
|
background: transparent;
|
|
font-size: var(--ui-body-size);
|
|
font-variant-numeric: tabular-nums;
|
|
font-weight: var(--ui-strong-weight);
|
|
text-align: left;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.datahub-history-source {
|
|
color: inherit;
|
|
font-family: var(--font-mono);
|
|
font-size: var(--ui-small-size);
|
|
text-align: right;
|
|
opacity: .8;
|
|
}
|
|
.datahub-history-column > footer {
|
|
display: grid;
|
|
place-items: center;
|
|
padding: var(--legacy-space-1);
|
|
border-top: var(--border-hair) solid var(--line);
|
|
background: var(--panel-raised);
|
|
}
|
|
.datahub-history-column > footer strong {
|
|
font-family: var(--font-mono);
|
|
font-size: var(--ui-body-size);
|
|
font-weight: var(--ui-strong-weight);
|
|
}
|
|
.datahub-history-column.placeholder > footer i {
|
|
width: calc(100% - var(--legacy-space-2));
|
|
height: 30px;
|
|
border: var(--border-hair) solid var(--line-strong);
|
|
background: var(--surface-input);
|
|
}
|
|
.datahub-add-client {
|
|
display: grid;
|
|
flex: 0 0 66px;
|
|
grid-template-rows: var(--row-height) minmax(160px, auto) 40px;
|
|
width: 66px;
|
|
min-width: 66px;
|
|
padding: 0;
|
|
border: 0;
|
|
border-left: var(--border-hair) solid var(--line);
|
|
color: var(--muted);
|
|
background: var(--panel);
|
|
cursor: pointer;
|
|
}
|
|
.datahub-add-client:hover {
|
|
color: var(--heading);
|
|
background: var(--panel-hover);
|
|
}
|
|
.datahub-add-client strong {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 100%;
|
|
height: var(--row-height);
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
background: var(--panel-raised);
|
|
font-size: var(--ui-heading-size);
|
|
font-weight: 400;
|
|
}
|
|
.datahub-add-client > span {
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
}
|
|
.datahub-add-client footer {
|
|
display: grid;
|
|
place-items: center;
|
|
padding: var(--legacy-space-1);
|
|
border-top: var(--border-hair) solid var(--line);
|
|
background: var(--panel-raised);
|
|
}
|
|
.datahub-add-client footer i {
|
|
width: calc(100% - var(--legacy-space-2));
|
|
height: 30px;
|
|
border: var(--border-hair) solid var(--line-strong);
|
|
background: var(--surface-input);
|
|
}
|
|
.datahub-status-module {
|
|
min-height: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
background: transparent;
|
|
}
|
|
.datahub-reference-controls {
|
|
width: 100%;
|
|
}
|
|
.datahub-reference-knob {
|
|
font-style: normal;
|
|
}
|
|
.datahub-comparison-error {
|
|
display: block;
|
|
margin: 0 var(--legacy-space-3) var(--legacy-space-2);
|
|
color: var(--danger-text);
|
|
font-size: var(--ui-control-size);
|
|
font-style: normal;
|
|
}
|
|
.datahub-tenants-module {
|
|
min-height: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
background: transparent;
|
|
}
|
|
.datahub-tenant-card-rack {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, var(--tile-compact-width));
|
|
justify-content: start;
|
|
gap: var(--segment-gap);
|
|
padding: var(--segment-inset);
|
|
border: var(--border-hair) solid var(--segment-border);
|
|
border-radius: var(--segment-radius);
|
|
background: var(--segment-surface);
|
|
box-shadow: none;
|
|
}
|
|
.datahub-tenant-card {
|
|
position: relative;
|
|
min-height: var(--donut-card-min-h);
|
|
padding: 0;
|
|
transition: background .12s ease, border-color .12s ease;
|
|
}
|
|
.datahub-tenant-card::before {
|
|
content: none;
|
|
}
|
|
.datahub-tenant-card:hover,
|
|
.datahub-tenant-card:focus-within {
|
|
border-color: transparent;
|
|
background: var(--tile-surface-hover);
|
|
box-shadow: var(--tile-card-shadow);
|
|
}
|
|
.datahub-tenant-card.is-selected {
|
|
border-color: var(--tile-selected-border);
|
|
outline: var(--bw-emphasis) solid var(--tile-selected-border);
|
|
outline-offset: calc(-1 * var(--bw-emphasis));
|
|
}
|
|
.datahub-tenant-processing-dot {
|
|
position: absolute;
|
|
z-index: 3;
|
|
top: var(--datahub-readiness-dot-inset);
|
|
left: var(--datahub-readiness-dot-inset);
|
|
width: var(--datahub-readiness-dot-size);
|
|
height: var(--datahub-readiness-dot-size);
|
|
border: var(--border-hair) solid var(--surface-app);
|
|
border-radius: 50%;
|
|
background: var(--state-online);
|
|
pointer-events: none;
|
|
}
|
|
.datahub-tenant-processing-dot[data-status=update],
|
|
.datahub-tenant-processing-dot[data-status=review] {
|
|
background: var(--warning);
|
|
}
|
|
.datahub-tenant-processing-dot[data-status=processing],
|
|
.datahub-tenant-processing-dot[data-status=error] {
|
|
background: var(--state-offline);
|
|
}
|
|
.datahub-tenant-select {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: grid;
|
|
grid-template-rows: minmax(0, 1fr) auto auto;
|
|
align-items: start;
|
|
width: 100%;
|
|
min-width: 0;
|
|
padding: var(--space-5) var(--space-3) var(--space-3);
|
|
border: 0;
|
|
color: inherit;
|
|
background: transparent;
|
|
text-align: left;
|
|
cursor: pointer;
|
|
}
|
|
.datahub-tenant-select:focus-visible,
|
|
.datahub-tenant-add:focus-visible {
|
|
outline: var(--bw-emphasis) solid var(--focus-ring);
|
|
outline-offset: calc(-1 * var(--bw-emphasis));
|
|
}
|
|
.datahub-tenant-name {
|
|
display: -webkit-box;
|
|
align-self: center;
|
|
justify-self: center;
|
|
min-width: 0;
|
|
max-width: 100%;
|
|
overflow: hidden;
|
|
color: var(--donut-value);
|
|
font: var(--fw-semibold) calc(var(--donut-title-size) * 1.35) / 1.15 var(--font-donut-display);
|
|
overflow-wrap: anywhere;
|
|
text-align: center;
|
|
text-overflow: ellipsis;
|
|
white-space: normal;
|
|
-webkit-box-orient: vertical;
|
|
-webkit-line-clamp: 3;
|
|
}
|
|
.datahub-tenant-summary {
|
|
align-self: end;
|
|
justify-self: start;
|
|
display: flex;
|
|
align-items: baseline;
|
|
gap: var(--space-1);
|
|
margin-bottom: var(--space-1);
|
|
color: var(--muted);
|
|
font-family: var(--font-donut-display);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.datahub-tenant-summary strong {
|
|
color: inherit;
|
|
font-size: var(--ui-body-size);
|
|
font-weight: var(--fw-semibold);
|
|
line-height: 1;
|
|
}
|
|
.datahub-tenant-summary small,
|
|
.datahub-tenant-latest {
|
|
color: var(--muted);
|
|
font-size: var(--ui-small-size);
|
|
font-weight: var(--fw-regular);
|
|
}
|
|
.datahub-tenant-latest {
|
|
min-width: 0;
|
|
max-width: calc(100% - 68px);
|
|
overflow: hidden;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
opacity: .72;
|
|
}
|
|
.datahub-tenant-show,
|
|
.datahub-tenant-show:hover,
|
|
.datahub-tenant-show:active {
|
|
position: absolute;
|
|
z-index: 2;
|
|
top: var(--space-3);
|
|
right: var(--space-3);
|
|
min-width: 52px;
|
|
border-color: var(--button-border);
|
|
color: var(--button-marked-text);
|
|
background: var(--button-marked-bg);
|
|
}
|
|
.datahub-tenant-show[data-status=update],
|
|
.datahub-tenant-show[data-status=update]:hover,
|
|
.datahub-tenant-show[data-status=update]:active,
|
|
.datahub-tenant-show[data-status=review],
|
|
.datahub-tenant-show[data-status=review]:hover,
|
|
.datahub-tenant-show[data-status=review]:active {
|
|
border-color: var(--warning);
|
|
color: var(--warning);
|
|
background: color-mix(in srgb, var(--warning) 8%, var(--donut-card-surface));
|
|
}
|
|
.datahub-tenant-show[data-status=error],
|
|
.datahub-tenant-show[data-status=error]:hover,
|
|
.datahub-tenant-show[data-status=error]:active {
|
|
border-color: var(--state-offline);
|
|
color: var(--state-offline);
|
|
background: color-mix(in srgb, var(--state-offline) 8%, var(--donut-card-surface));
|
|
}
|
|
.datahub-tenant-open,
|
|
.datahub-tenant-open:hover,
|
|
.datahub-tenant-open:active {
|
|
position: absolute;
|
|
z-index: 2;
|
|
right: var(--space-3);
|
|
bottom: var(--space-3);
|
|
min-width: 52px;
|
|
}
|
|
.datahub-tenant-add {
|
|
display: grid;
|
|
place-items: center;
|
|
color: var(--muted);
|
|
cursor: pointer;
|
|
}
|
|
.datahub-tenant-add:hover {
|
|
color: var(--donut-all);
|
|
}
|
|
.datahub-tenant-add > span {
|
|
font-family: var(--font-donut-display);
|
|
font-size: calc(var(--donut-value-size) * 1.7);
|
|
font-weight: var(--fw-regular);
|
|
line-height: 1;
|
|
opacity: .48;
|
|
}
|
|
.datahub-tenant-add:hover > span {
|
|
opacity: .78;
|
|
}
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.datahub-tenant-card {
|
|
transition: none;
|
|
}
|
|
}
|
|
@media (max-width: 1100px) {
|
|
.datahub-tenant-card-rack {
|
|
grid-template-columns: repeat(auto-fill, var(--tile-compact-width));
|
|
}
|
|
}
|
|
@media (max-width: 760px) {
|
|
.datahub-tenant-card-rack {
|
|
grid-template-columns: minmax(0, var(--tile-compact-width));
|
|
}
|
|
}
|
|
.datahub-reference-module {
|
|
overflow: hidden;
|
|
}
|
|
.datahub-rack-header {
|
|
display: grid;
|
|
grid-template-columns: 24px 12px minmax(0, 1fr) auto;
|
|
align-items: center;
|
|
gap: var(--legacy-space-2);
|
|
min-height: 46px;
|
|
padding: 0 var(--legacy-space-3);
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
background: var(--panel-raised);
|
|
}
|
|
.datahub-rack-header > strong {
|
|
overflow: hidden;
|
|
color: var(--text);
|
|
font-size: var(--ui-body-size);
|
|
font-weight: var(--ui-label-weight);
|
|
letter-spacing: .02em;
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.datahub-grip {
|
|
color: var(--muted);
|
|
font-size: var(--ui-heading-size);
|
|
}
|
|
.datahub-led {
|
|
width: 10px;
|
|
height: 10px;
|
|
border-radius: 50%;
|
|
background: var(--success);
|
|
}
|
|
.datahub-rack-badge {
|
|
min-height: 24px;
|
|
padding: 2px var(--legacy-space-2);
|
|
border: var(--border-hair) solid var(--line-strong);
|
|
color: var(--text);
|
|
background: var(--surface-input);
|
|
font-size: var(--ui-small-size);
|
|
line-height: 20px;
|
|
font-variant-numeric: tabular-nums;
|
|
white-space: nowrap;
|
|
}
|
|
.datahub-rack-body {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-end;
|
|
gap: var(--legacy-space-2);
|
|
min-height: 62px;
|
|
padding: var(--legacy-space-2) var(--legacy-space-3);
|
|
}
|
|
.datahub-rack-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--legacy-space-2);
|
|
}
|
|
.datahub-maintenance-action {
|
|
border: var(--bw-hairline) solid var(--button-border);
|
|
color: var(--button-marked-text);
|
|
background: var(--button-marked-bg);
|
|
font-weight: var(--ui-strong-weight);
|
|
cursor: pointer;
|
|
}
|
|
.datahub-maintenance-action:hover {
|
|
background: var(--button-marked-bg-hover);
|
|
}
|
|
.datahub-maintenance-action:disabled {
|
|
color: var(--muted);
|
|
background: var(--surface-active);
|
|
cursor: default;
|
|
}
|
|
.datahub-reference-row {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
|
align-items: start;
|
|
gap: var(--legacy-space-4);
|
|
}
|
|
.datahub-reference-row > .mitre-library {
|
|
grid-area: 1 / 1 / 2 / -1;
|
|
}
|
|
.datahub-reference-row > .baseline-catalog {
|
|
grid-area: 2 / 1 / 3 / -1;
|
|
margin-top: 0;
|
|
}
|
|
.datahub-reference-row.is-mitre-hidden > .baseline-catalog {
|
|
grid-area: 1 / 1 / 2 / -1;
|
|
}
|
|
.datahub-reference-row > .datahub-rack-module {
|
|
margin-bottom: 0;
|
|
}
|
|
.baseline-upload-action {
|
|
flex: 0 0 auto;
|
|
text-transform: none;
|
|
letter-spacing: normal;
|
|
}
|
|
.tenant-section-bar .baseline-title {
|
|
gap: var(--space-3);
|
|
}
|
|
.tenant-timeslot-toolbar {
|
|
display: grid;
|
|
grid-template-columns: minmax(220px, .8fr) minmax(340px, 1fr);
|
|
align-items: end;
|
|
gap: var(--legacy-space-3) var(--legacy-space-5);
|
|
margin-bottom: var(--legacy-space-4);
|
|
padding: var(--legacy-space-3);
|
|
border: var(--border-hair) solid var(--line);
|
|
background: var(--panel-raised);
|
|
}
|
|
.tenant-timeslot-toolbar label {
|
|
display: grid;
|
|
gap: var(--legacy-space-2);
|
|
color: var(--heading);
|
|
font-size: var(--ui-label-size);
|
|
font-weight: var(--ui-label-weight);
|
|
}
|
|
.tenant-timeslot-toolbar p {
|
|
grid-column: 1 / -1;
|
|
margin: 0;
|
|
color: var(--muted);
|
|
}
|
|
.tenant-timeslot-create {
|
|
display: grid;
|
|
grid-template-columns: minmax(180px, 1fr) auto;
|
|
align-items: end;
|
|
gap: var(--legacy-space-2);
|
|
}
|
|
.tenant-file-row.is-active-timeslot {
|
|
background: var(--state-selected-flat);
|
|
}
|
|
.tenant-file-row.is-active-timeslot > span:first-child {
|
|
border-left: var(--marker-width) solid var(--state-selected);
|
|
padding-left: var(--legacy-space-2);
|
|
}
|
|
@media (max-width: 760px) {
|
|
.datahub-reference-row {
|
|
grid-template-columns: minmax(0, 1fr);
|
|
}
|
|
.datahub-reference-row > .mitre-library {
|
|
grid-area: 1 / 1;
|
|
}
|
|
.datahub-reference-row > .baseline-catalog {
|
|
grid-area: 2 / 1;
|
|
}
|
|
.datahub-reference-row.is-mitre-hidden > .baseline-catalog {
|
|
grid-area: 1 / 1;
|
|
}
|
|
.tenant-timeslot-toolbar,
|
|
.tenant-timeslot-create {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.datahub-rack-header {
|
|
grid-template-columns: 20px 10px minmax(0, 1fr) auto;
|
|
}
|
|
.datahub-rack-actions {
|
|
justify-content: stretch;
|
|
}
|
|
.datahub-rack-actions > * {
|
|
flex: 1;
|
|
}
|
|
}
|
|
|
|
/* src/styles/policy-analysis.css */
|
|
.policy-analysis-panel {
|
|
margin-top: var(--legacy-space-6);
|
|
padding-top: var(--legacy-space-5);
|
|
border-top: var(--border-hair) solid var(--line);
|
|
}
|
|
.policy-analysis-boundary {
|
|
margin: 0 0 var(--legacy-space-4);
|
|
padding: var(--legacy-space-3);
|
|
border-left: 3px solid var(--warning);
|
|
color: var(--heading);
|
|
background: var(--panel-soft);
|
|
font-size: var(--ui-control-size);
|
|
line-height: 1.5;
|
|
}
|
|
.policy-analysis-empty {
|
|
padding-block: 28px;
|
|
}
|
|
.policy-analysis-result-groups {
|
|
display: grid;
|
|
gap: var(--legacy-space-5);
|
|
}
|
|
.policy-analysis-result-group {
|
|
display: grid;
|
|
gap: var(--legacy-space-2);
|
|
}
|
|
.policy-analysis-result-group > h4 {
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--type-h4-size);
|
|
}
|
|
.policy-analysis-summary {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, var(--tile-compact-width));
|
|
justify-content: start;
|
|
gap: var(--segment-gap);
|
|
padding: var(--segment-inset);
|
|
border-radius: var(--segment-radius);
|
|
background: var(--segment-surface);
|
|
}
|
|
.policy-analysis-summary article {
|
|
display: grid;
|
|
gap: var(--legacy-space-1);
|
|
min-width: 0;
|
|
padding: var(--legacy-space-3);
|
|
overflow: hidden;
|
|
border: 0;
|
|
border-left: 3px solid var(--line-strong);
|
|
border-radius: var(--tile-radius);
|
|
background: var(--tile-surface);
|
|
box-shadow: none;
|
|
}
|
|
.policy-analysis-summary article[data-result=pass] {
|
|
border-left-color: var(--success);
|
|
}
|
|
.policy-analysis-summary article[data-result=fail] {
|
|
border-left-color: var(--critical);
|
|
}
|
|
.policy-analysis-summary span {
|
|
color: var(--muted);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.policy-analysis-summary strong {
|
|
color: var(--heading);
|
|
font-family: inherit;
|
|
font-size: var(--ui-heading-size);
|
|
}
|
|
.policy-analysis-summary small {
|
|
color: var(--muted);
|
|
font-size: var(--ui-small-size);
|
|
line-height: 1.4;
|
|
}
|
|
.policy-analysis-problems article {
|
|
min-height: 116px;
|
|
}
|
|
.policy-analysis-technical,
|
|
.policy-analysis-controls {
|
|
margin-top: var(--legacy-space-5);
|
|
border-top: var(--border-hair) solid var(--line);
|
|
}
|
|
.policy-analysis-technical > summary,
|
|
.policy-analysis-controls > summary {
|
|
width: fit-content;
|
|
padding: var(--legacy-space-3) 0;
|
|
cursor: pointer;
|
|
color: var(--heading);
|
|
font-size: var(--ui-control-size);
|
|
font-weight: var(--ui-strong-weight);
|
|
}
|
|
.policy-analysis-technical[open] > summary,
|
|
.policy-analysis-controls[open] > summary {
|
|
margin-bottom: var(--legacy-space-3);
|
|
}
|
|
.policy-analysis-columns {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
|
|
gap: var(--legacy-space-4);
|
|
align-items: start;
|
|
}
|
|
.policy-analysis-columns > section {
|
|
min-width: 0;
|
|
padding: var(--legacy-space-3);
|
|
border: var(--border-hair) solid var(--line);
|
|
background: var(--panel);
|
|
}
|
|
.policy-analysis-subheading {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--legacy-space-2);
|
|
margin-bottom: var(--legacy-space-2);
|
|
}
|
|
.policy-analysis-subheading h4 {
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--ui-body-size);
|
|
}
|
|
.policy-analysis-subheading span {
|
|
color: var(--muted);
|
|
font-family: var(--font-mono);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.policy-analysis-muted {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
font-size: var(--ui-control-size);
|
|
line-height: 1.5;
|
|
}
|
|
.policy-evaluation-list,
|
|
.policy-review-list {
|
|
display: grid;
|
|
gap: var(--legacy-space-2);
|
|
}
|
|
.policy-evaluation-list article {
|
|
padding: var(--legacy-space-3);
|
|
border: var(--border-hair) solid var(--line);
|
|
border-left: 3px solid var(--marking-color);
|
|
background: var(--panel-raised);
|
|
}
|
|
.policy-evaluation-list header,
|
|
.policy-evaluation-list footer {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: var(--legacy-space-2);
|
|
color: var(--muted);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.policy-evaluation-list header strong,
|
|
.policy-evaluation-list footer strong {
|
|
color: var(--heading);
|
|
}
|
|
.policy-evaluation-list article > div {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: var(--legacy-space-1) var(--legacy-space-3);
|
|
margin: var(--legacy-space-2) 0;
|
|
color: var(--muted);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.policy-review-item {
|
|
border: var(--border-hair) solid var(--line);
|
|
border-left: 3px solid var(--warning);
|
|
background: var(--panel-raised);
|
|
}
|
|
.policy-review-item summary {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: var(--legacy-space-3);
|
|
padding: var(--legacy-space-2) var(--legacy-space-3);
|
|
cursor: pointer;
|
|
}
|
|
.policy-review-item summary strong {
|
|
color: var(--heading);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.policy-review-item summary span {
|
|
color: var(--muted);
|
|
font-size: var(--ui-small-size);
|
|
text-align: right;
|
|
}
|
|
.policy-review-detail {
|
|
display: grid;
|
|
gap: var(--legacy-space-1);
|
|
padding: var(--legacy-space-2) var(--legacy-space-3) var(--legacy-space-3);
|
|
border-top: var(--border-hair) dashed var(--line);
|
|
color: var(--muted);
|
|
font-size: var(--ui-small-size);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.policy-review-detail code {
|
|
display: inline-block;
|
|
margin: 0 var(--legacy-space-1) var(--legacy-space-1) 0;
|
|
color: var(--heading);
|
|
}
|
|
@media (max-width: 900px) {
|
|
.policy-analysis-columns {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
|
|
/* src/styles/policy-analysis-actions.css */
|
|
.policy-orchestration {
|
|
margin-top: var(--legacy-space-6);
|
|
padding-top: var(--legacy-space-5);
|
|
border-top: var(--border-hair) solid var(--line);
|
|
}
|
|
.policy-profile-editor {
|
|
margin-top: var(--legacy-space-3);
|
|
border: var(--border-hair) solid var(--line);
|
|
background: var(--panel);
|
|
}
|
|
.policy-profile-editor > summary {
|
|
padding: var(--legacy-space-3);
|
|
color: var(--heading);
|
|
font-weight: var(--ui-strong-weight);
|
|
cursor: pointer;
|
|
}
|
|
.policy-profile-editor form {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: var(--legacy-space-3);
|
|
padding: var(--legacy-space-3);
|
|
border-top: var(--border-hair) solid var(--line);
|
|
}
|
|
.policy-profile-editor label {
|
|
display: grid;
|
|
gap: var(--legacy-space-1);
|
|
color: var(--heading);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.policy-profile-editor label > span {
|
|
color: var(--muted);
|
|
font-size: var(--ui-small-size);
|
|
}
|
|
.policy-profile-editor fieldset {
|
|
display: grid;
|
|
grid-column: 1 / -1;
|
|
grid-template-columns: repeat(4, minmax(0, 1fr));
|
|
gap: var(--legacy-space-3);
|
|
margin: 0;
|
|
padding: var(--legacy-space-3);
|
|
border: var(--border-hair) solid var(--line);
|
|
}
|
|
.policy-profile-editor legend {
|
|
padding-inline: var(--legacy-space-1);
|
|
color: var(--muted);
|
|
font-size: var(--ui-label-size);
|
|
font-weight: var(--ui-label-weight);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
}
|
|
.policy-profile-editor .policy-profile-product-toggle {
|
|
display: flex;
|
|
grid-column: 1 / -1;
|
|
grid-template-columns: auto 1fr;
|
|
align-items: center;
|
|
}
|
|
.policy-profile-editor footer {
|
|
display: flex;
|
|
grid-column: 1 / -1;
|
|
justify-content: flex-end;
|
|
}
|
|
.policy-action-stages {
|
|
display: grid;
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
gap: var(--segment-gap);
|
|
margin-top: var(--legacy-space-4);
|
|
padding: var(--segment-inset);
|
|
border: var(--border-hair) solid var(--segment-border);
|
|
border-radius: var(--segment-radius);
|
|
background: var(--segment-surface);
|
|
}
|
|
.policy-action-stages > section {
|
|
min-width: 0;
|
|
padding: var(--legacy-space-3);
|
|
overflow: hidden;
|
|
border: var(--border-hair) solid var(--tile-border);
|
|
border-radius: var(--tile-radius);
|
|
background: var(--tile-surface);
|
|
box-shadow: var(--tile-card-shadow);
|
|
}
|
|
.policy-action-stages h4 {
|
|
margin: 0 0 var(--legacy-space-2);
|
|
color: var(--heading);
|
|
font-size: var(--ui-body-size);
|
|
}
|
|
.policy-action-stages section > p {
|
|
margin: 0;
|
|
color: var(--muted);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.policy-action-stages article {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--legacy-space-3);
|
|
padding: var(--legacy-space-2) 0;
|
|
border-top: var(--border-hair) solid var(--line);
|
|
}
|
|
.policy-action-stages article > div {
|
|
display: grid;
|
|
gap: var(--legacy-space-1);
|
|
min-width: 0;
|
|
color: var(--muted);
|
|
font-size: var(--ui-small-size);
|
|
}
|
|
.policy-action-stages article strong {
|
|
color: var(--heading);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.policy-action-stages article code {
|
|
overflow: hidden;
|
|
color: var(--muted);
|
|
text-overflow: ellipsis;
|
|
white-space: nowrap;
|
|
}
|
|
.policy-action-reasons {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: var(--legacy-space-1);
|
|
}
|
|
.policy-action-reasons code {
|
|
color: var(--warning);
|
|
white-space: normal;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
@media (max-width: 1000px) {
|
|
.policy-action-stages {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.policy-profile-editor fieldset {
|
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
|
}
|
|
}
|
|
@media (max-width: 620px) {
|
|
.policy-profile-editor form,
|
|
.policy-profile-editor fieldset {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
|
|
/* src/styles/import-workflow.css */
|
|
.dialog-backdrop {
|
|
position: fixed;
|
|
inset: 0;
|
|
z-index: 1000;
|
|
display: grid;
|
|
place-items: center;
|
|
padding: 24px;
|
|
background: var(--surface-scrim);
|
|
-webkit-backdrop-filter: blur(8px);
|
|
backdrop-filter: blur(8px);
|
|
}
|
|
.dialog-window {
|
|
width: min(500px, 100%);
|
|
max-height: calc(100vh - 48px);
|
|
display: flex;
|
|
flex-direction: column;
|
|
border: 1px solid var(--line-strong);
|
|
border-radius: 14px;
|
|
background: var(--panel);
|
|
box-shadow: var(--shadow);
|
|
}
|
|
.dialog-window > header {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 16px;
|
|
padding: 16px 20px;
|
|
border-bottom: 1px solid var(--line);
|
|
}
|
|
.dialog-window > header h2 {
|
|
margin: 0;
|
|
font-size: var(--ui-heading-size);
|
|
}
|
|
.dialog-window > header button {
|
|
width: 24px;
|
|
height: 24px;
|
|
border: 1px solid var(--button-border);
|
|
border-radius: 0;
|
|
color: var(--button-text);
|
|
background: var(--button-bg);
|
|
font-size: var(--ui-heading-size);
|
|
cursor: pointer;
|
|
display: grid;
|
|
place-items: center;
|
|
}
|
|
.dialog-window > header button:hover {
|
|
color: var(--button-text);
|
|
background: var(--button-bg-hover);
|
|
border-color: var(--button-border);
|
|
}
|
|
.dialog-body {
|
|
min-height: 0;
|
|
overflow: auto;
|
|
padding: 20px;
|
|
}
|
|
.import-dialog-intro {
|
|
margin: 0 0 16px;
|
|
color: var(--muted);
|
|
}
|
|
.import-progress {
|
|
min-height: 180px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 12px;
|
|
color: var(--muted);
|
|
}
|
|
.import-spinner {
|
|
position: relative;
|
|
flex: 0 0 24px;
|
|
width: 24px;
|
|
height: 24px;
|
|
}
|
|
.import-spinner i {
|
|
position: absolute;
|
|
width: 5px;
|
|
height: 5px;
|
|
background: var(--line-strong);
|
|
opacity: .55;
|
|
animation: import-square-progress .8s steps(1, end) infinite;
|
|
}
|
|
.import-spinner i:nth-child(1) {
|
|
top: 0;
|
|
left: 9.5px;
|
|
animation-delay: 0s;
|
|
}
|
|
.import-spinner i:nth-child(2) {
|
|
top: 9.5px;
|
|
right: 0;
|
|
animation-delay: -.6s;
|
|
}
|
|
.import-spinner i:nth-child(3) {
|
|
bottom: 0;
|
|
left: 9.5px;
|
|
animation-delay: -.4s;
|
|
}
|
|
.import-spinner i:nth-child(4) {
|
|
top: 9.5px;
|
|
left: 0;
|
|
animation-delay: -.2s;
|
|
}
|
|
@keyframes import-square-progress {
|
|
0%, 24.999% {
|
|
background: var(--critical);
|
|
opacity: 1;
|
|
transform: scale(1.18);
|
|
}
|
|
25%, 100% {
|
|
background: var(--line-strong);
|
|
opacity: .55;
|
|
transform: scale(.82);
|
|
}
|
|
}
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.import-spinner i {
|
|
animation: none;
|
|
transform: scale(.82);
|
|
}
|
|
.import-spinner i:first-child {
|
|
background: var(--critical);
|
|
opacity: 1;
|
|
transform: scale(1.18);
|
|
}
|
|
}
|
|
.import-workflow-error {
|
|
padding: 10px 12px;
|
|
border: 1px solid var(--critical);
|
|
border-radius: 8px;
|
|
color: var(--critical);
|
|
background: color-mix(in srgb, var(--critical) 10%, transparent);
|
|
}
|
|
.import-preview-list {
|
|
display: grid;
|
|
max-height: min(58vh, 660px);
|
|
overflow-x: hidden;
|
|
overflow-y: auto;
|
|
}
|
|
.import-preview-entry {
|
|
display: grid;
|
|
grid-template-columns: 28px minmax(0, 1fr);
|
|
gap: 12px;
|
|
min-width: 0;
|
|
padding: 14px 0;
|
|
border-bottom: 1px solid var(--line);
|
|
}
|
|
.import-preview-entry:first-child {
|
|
padding-top: 0;
|
|
}
|
|
.import-preview-entry:last-child {
|
|
padding-bottom: 0;
|
|
border-bottom: 0;
|
|
}
|
|
.import-preview-selection {
|
|
padding-top: 2px;
|
|
}
|
|
.import-preview-heading {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 9px;
|
|
min-width: 0;
|
|
}
|
|
.import-preview-main {
|
|
min-width: 0;
|
|
}
|
|
.import-preview-heading strong {
|
|
min-width: 0;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.import-status {
|
|
flex: 0 0 auto;
|
|
font-size: var(--ui-label-size);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.import-status-ready {
|
|
color: var(--low);
|
|
}
|
|
.import-status-replacement {
|
|
color: var(--low);
|
|
}
|
|
.import-status-warning,
|
|
.import-status-duplicate {
|
|
color: var(--medium);
|
|
}
|
|
.import-status-error {
|
|
color: var(--critical);
|
|
}
|
|
.import-preview-meta {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 5px 12px;
|
|
margin-top: 7px;
|
|
color: var(--muted);
|
|
font-size: var(--ui-value-size);
|
|
}
|
|
.import-hash {
|
|
display: block;
|
|
margin-top: 7px;
|
|
color: var(--muted);
|
|
font-size: var(--ui-label-size);
|
|
overflow-wrap: anywhere;
|
|
white-space: normal;
|
|
}
|
|
.import-message {
|
|
margin: 7px 0 0;
|
|
color: var(--muted);
|
|
font-size: var(--ui-reading-size);
|
|
line-height: 1.45;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.import-duplicate-notice {
|
|
margin-top: 12px;
|
|
color: var(--muted);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.import-duplicate-notice h3 {
|
|
margin: 0 0 4px;
|
|
color: var(--text);
|
|
font-size: var(--ui-value-size);
|
|
}
|
|
.import-duplicate-notice p {
|
|
margin: 0;
|
|
font-size: var(--ui-reading-size);
|
|
line-height: 1.45;
|
|
}
|
|
.import-replacement-notice {
|
|
margin-top: 12px;
|
|
color: var(--muted);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.import-replacement-notice h3 {
|
|
margin: 0 0 4px;
|
|
color: var(--low);
|
|
font-size: var(--ui-value-size);
|
|
}
|
|
.import-replacement-notice p {
|
|
margin: 0;
|
|
font-size: var(--ui-reading-size);
|
|
line-height: 1.45;
|
|
}
|
|
.import-preview-action {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
.import-dialog-footer {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 16px;
|
|
margin-top: 16px;
|
|
padding-top: 14px;
|
|
border-top: 1px solid var(--line);
|
|
}
|
|
.import-dialog-footer > div {
|
|
display: flex;
|
|
gap: 8px;
|
|
}
|
|
.import-report-summary {
|
|
display: grid;
|
|
gap: 5px;
|
|
padding: 16px;
|
|
border-radius: 10px;
|
|
background: var(--panel-raised);
|
|
}
|
|
.import-report-summary span {
|
|
color: var(--muted);
|
|
}
|
|
.import-report-list {
|
|
display: grid;
|
|
gap: 8px;
|
|
margin-top: 12px;
|
|
max-height: 55vh;
|
|
overflow: auto;
|
|
}
|
|
.import-report-entry {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: 4px 12px;
|
|
padding: 11px 12px;
|
|
border: 1px solid var(--line);
|
|
border-radius: 8px;
|
|
}
|
|
.import-report-entry small {
|
|
grid-column: 1 / -1;
|
|
color: var(--muted);
|
|
}
|
|
.import-report-imported > span {
|
|
color: var(--low);
|
|
}
|
|
.import-report-failed > span {
|
|
color: var(--critical);
|
|
}
|
|
@media (max-width: 760px) {
|
|
.import-preview-entry {
|
|
grid-template-columns: 26px minmax(0, 1fr);
|
|
}
|
|
.import-preview-action {
|
|
grid-column: 2;
|
|
}
|
|
.import-dialog-footer {
|
|
align-items: stretch;
|
|
flex-direction: column;
|
|
}
|
|
.import-dialog-footer > div {
|
|
justify-content: flex-end;
|
|
}
|
|
}
|
|
|
|
/* src/styles/legacy-views.css */
|
|
body {
|
|
font-family: var(--font);
|
|
font-size: var(--ui-body-size);
|
|
line-height: 1.45;
|
|
font-weight: var(--ui-body-weight);
|
|
}
|
|
button,
|
|
input,
|
|
select,
|
|
textarea {
|
|
font-family: inherit;
|
|
}
|
|
.btn,
|
|
.icon-btn,
|
|
.select,
|
|
.input,
|
|
.tab-btn,
|
|
.bookmark-btn,
|
|
.results-btn {
|
|
font-size: var(--ui-control-size);
|
|
line-height: 1.35;
|
|
}
|
|
.viewer {
|
|
overflow: hidden;
|
|
background: var(--bg);
|
|
}
|
|
.viewer-scroll,
|
|
.table-scroll {
|
|
height: 100%;
|
|
min-height: 0;
|
|
overflow: auto;
|
|
scrollbar-width: thin;
|
|
scrollbar-color: var(--line-strong) var(--panel-soft);
|
|
}
|
|
.viewer-scroll::-webkit-scrollbar,
|
|
.table-scroll::-webkit-scrollbar {
|
|
width: 10px;
|
|
height: 10px;
|
|
}
|
|
.viewer-scroll::-webkit-scrollbar-track,
|
|
.table-scroll::-webkit-scrollbar-track {
|
|
background: var(--panel-soft);
|
|
}
|
|
.viewer-scroll::-webkit-scrollbar-thumb,
|
|
.table-scroll::-webkit-scrollbar-thumb {
|
|
border: 2px solid var(--panel-soft);
|
|
border-radius: var(--radius-pill);
|
|
background: var(--line-strong);
|
|
}
|
|
.records-layout {
|
|
display: grid;
|
|
grid-template-columns: clamp(380px, 24vw, 470px) minmax(0, 1fr);
|
|
height: 100%;
|
|
min-height: 0;
|
|
padding: var(--panel-inset);
|
|
background: var(--bg);
|
|
}
|
|
.record-list {
|
|
min-width: 0;
|
|
min-height: 0;
|
|
padding: 0;
|
|
border: 0;
|
|
border-right: var(--border-hair) solid var(--border-strong);
|
|
background: transparent;
|
|
overflow-y: auto;
|
|
scrollbar-gutter: stable;
|
|
scrollbar-width: thin;
|
|
scrollbar-color: var(--border-strong) transparent;
|
|
}
|
|
.record-list::-webkit-scrollbar {
|
|
width: 6px;
|
|
}
|
|
.record-list::-webkit-scrollbar-track {
|
|
background: transparent;
|
|
margin: 4px 2px 4px 0;
|
|
}
|
|
.record-list::-webkit-scrollbar-thumb {
|
|
background: var(--border-strong);
|
|
border-radius: var(--radius-pill);
|
|
min-height: 36px;
|
|
}
|
|
.record-list::-webkit-scrollbar-thumb:hover {
|
|
background: var(--text-muted);
|
|
}
|
|
.record-card {
|
|
position: relative;
|
|
display: grid;
|
|
grid-template-columns: 28px minmax(0, 1fr);
|
|
grid-template-rows: auto auto;
|
|
column-gap: var(--space-2);
|
|
row-gap: var(--legacy-space-2);
|
|
width: 100%;
|
|
min-height: 74px;
|
|
margin: 0;
|
|
padding: 11px 14px;
|
|
border: 0;
|
|
border-left: var(--marker-width) solid transparent;
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
border-radius: 0;
|
|
color: var(--text);
|
|
background: var(--panel-raised);
|
|
box-shadow: none;
|
|
font: inherit;
|
|
text-align: left;
|
|
cursor: pointer;
|
|
transition: background .12s ease, border-color .12s ease;
|
|
}
|
|
.record-card:first-child {
|
|
border-top-left-radius: var(--radius-sm);
|
|
border-top-right-radius: var(--radius-sm);
|
|
}
|
|
.record-card:last-child {
|
|
border-bottom-left-radius: var(--radius-sm);
|
|
border-bottom-right-radius: var(--radius-sm);
|
|
border-bottom: 0;
|
|
}
|
|
.record-card::before {
|
|
content: "";
|
|
grid-column: 1;
|
|
grid-row: 1 / 3;
|
|
align-self: center;
|
|
justify-self: center;
|
|
width: 24px;
|
|
height: 27px;
|
|
clip-path: polygon(50% 0, 94% 24%, 94% 76%, 50% 100%, 6% 76%, 6% 24%);
|
|
background: var(--muted);
|
|
}
|
|
.record-card::after {
|
|
content: "";
|
|
grid-column: 1;
|
|
grid-row: 1 / 3;
|
|
align-self: center;
|
|
justify-self: center;
|
|
width: 7px;
|
|
height: 4px;
|
|
border-left: 2px solid var(--sev-on);
|
|
border-bottom: 2px solid var(--sev-on);
|
|
transform: translate(-6.5px, 0.5px) rotate(-45deg);
|
|
pointer-events: none;
|
|
}
|
|
.record-card:hover {
|
|
border-color: var(--line);
|
|
background: var(--panel-hover);
|
|
box-shadow: none;
|
|
transform: none;
|
|
}
|
|
.record-card.active,
|
|
.record-card.active:hover {
|
|
z-index: 1;
|
|
border-color: var(--line);
|
|
border-left-color: var(--state-selected-flat-border);
|
|
color: var(--state-selected-flat-text);
|
|
background: var(--state-selected-flat);
|
|
box-shadow: none;
|
|
transform: none;
|
|
}
|
|
.record-card.severity-critical::before {
|
|
background: var(--critical);
|
|
}
|
|
.record-card.severity-high::before {
|
|
background: var(--high);
|
|
}
|
|
.record-card.severity-medium::before {
|
|
background: var(--medium);
|
|
}
|
|
.record-card.severity-low::before {
|
|
background: var(--low);
|
|
}
|
|
.record-card.severity-info::before {
|
|
background: var(--info);
|
|
}
|
|
.record-card.is-workspace {
|
|
outline: 2px solid var(--state-active);
|
|
outline-offset: -2px;
|
|
}
|
|
.record-title {
|
|
grid-column: 2;
|
|
grid-row: 1;
|
|
align-self: end;
|
|
min-width: 0;
|
|
color: var(--heading);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--fw-regular);
|
|
line-height: 1.28;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.record-meta {
|
|
min-width: 0;
|
|
color: var(--muted);
|
|
font-size: var(--ui-control-size);
|
|
font-weight: 400;
|
|
line-height: 1.3;
|
|
}
|
|
.record-meta-line {
|
|
grid-column: 2;
|
|
grid-row: 2;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
gap: var(--legacy-space-2);
|
|
min-width: 0;
|
|
}
|
|
.record-diagnostic-badge {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
min-height: 20px;
|
|
padding: 2px var(--legacy-space-2);
|
|
border: var(--border-hair) solid var(--line-strong);
|
|
border-radius: var(--legacy-radius-sm);
|
|
color: var(--text);
|
|
background: transparent;
|
|
font-size: var(--ui-badge-size);
|
|
font-weight: var(--ui-label-weight);
|
|
line-height: 1.18;
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
}
|
|
.record-card.active .record-title {
|
|
color: var(--state-selected-flat-text);
|
|
}
|
|
.record-card.active .record-meta {
|
|
color: var(--state-selected-flat-muted);
|
|
}
|
|
.record-card.active .record-diagnostic-badge {
|
|
border-color: var(--state-selected-flat-muted);
|
|
color: var(--state-selected-flat-text);
|
|
}
|
|
.action-pill {
|
|
display: inline-flex;
|
|
width: fit-content;
|
|
margin-left: var(--legacy-space-1);
|
|
padding: 1px var(--legacy-space-1);
|
|
border: var(--border-hair) solid var(--success);
|
|
border-radius: var(--legacy-radius-sm);
|
|
color: var(--sev-on);
|
|
background: var(--success);
|
|
font-size: var(--ui-small-size);
|
|
line-height: 1.4;
|
|
vertical-align: middle;
|
|
}
|
|
.finding-reader {
|
|
min-width: 0;
|
|
min-height: 0;
|
|
padding: var(--legacy-space-6) 0 var(--space-7);
|
|
color: var(--text);
|
|
background: var(--bg);
|
|
overflow-y: auto;
|
|
}
|
|
.finding-reader > * {
|
|
width: min(834px, calc(100% - var(--reader-inset) - var(--legacy-space-6)));
|
|
margin-left: var(--reader-inset);
|
|
margin-right: auto;
|
|
}
|
|
.reader-nav {
|
|
margin-bottom: var(--legacy-space-6);
|
|
color: var(--muted);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.reader-nav button {
|
|
color: var(--text);
|
|
}
|
|
.reader-heading {
|
|
padding-bottom: var(--legacy-space-5);
|
|
border-color: var(--line);
|
|
}
|
|
.reader-heading h2 {
|
|
min-width: 0;
|
|
color: var(--heading);
|
|
font-size: var(--type-detail-title-size);
|
|
font-weight: var(--ui-strong-weight);
|
|
line-height: 1.3;
|
|
letter-spacing: 0;
|
|
}
|
|
.reader-heading h2 .technical-path,
|
|
.reader-summary h3 .technical-path {
|
|
display: block;
|
|
box-sizing: border-box;
|
|
width: 100%;
|
|
margin-top: var(--space-1);
|
|
}
|
|
.reader-title-hex {
|
|
width: 26px;
|
|
height: 30px;
|
|
}
|
|
.finding-badges,
|
|
.mitre-line {
|
|
gap: var(--legacy-space-2);
|
|
margin-top: var(--legacy-space-3);
|
|
font-size: var(--ui-badge-size);
|
|
}
|
|
.status-badge,
|
|
.severity-badge,
|
|
.mitre-badge,
|
|
.reader-severity {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
min-height: 22px;
|
|
height: auto;
|
|
padding: 3px var(--legacy-space-2);
|
|
border: var(--border-hair) solid var(--line-strong);
|
|
border-radius: var(--legacy-radius-sm);
|
|
color: var(--text);
|
|
background: transparent;
|
|
font-size: var(--ui-badge-size);
|
|
font-weight: var(--ui-label-weight);
|
|
line-height: 1.18;
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
white-space: normal;
|
|
}
|
|
.severity-badge.severity-critical,
|
|
.reader-severity.severity-critical {
|
|
border-color: var(--critical-badge);
|
|
color: var(--severity-ink);
|
|
background: var(--critical-badge);
|
|
}
|
|
.severity-badge.severity-high,
|
|
.reader-severity.severity-high {
|
|
border-color: var(--high-badge);
|
|
color: var(--severity-ink);
|
|
background: var(--high-badge);
|
|
}
|
|
.severity-badge.severity-medium,
|
|
.reader-severity.severity-medium {
|
|
border-color: var(--medium-badge);
|
|
color: var(--severity-ink);
|
|
background: var(--medium-badge);
|
|
}
|
|
.severity-badge.severity-low,
|
|
.reader-severity.severity-low {
|
|
border-color: var(--low-badge);
|
|
color: var(--severity-ink);
|
|
background: var(--low-badge);
|
|
}
|
|
.severity-badge.severity-info,
|
|
.reader-severity.severity-info {
|
|
border-color: var(--info-badge);
|
|
color: var(--severity-ink);
|
|
background: var(--info-badge);
|
|
}
|
|
.reader-summary,
|
|
.review-grid,
|
|
.all-fields {
|
|
border-color: var(--line);
|
|
}
|
|
.reader-summary h3 {
|
|
color: var(--heading);
|
|
font-size: var(--type-h3-size);
|
|
font-weight: var(--ui-strong-weight);
|
|
line-height: 1.3;
|
|
letter-spacing: 0;
|
|
}
|
|
.reader-summary h4 {
|
|
color: var(--heading);
|
|
font-size: var(--ui-reading-size);
|
|
font-weight: var(--ui-label-weight);
|
|
line-height: 1.25;
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
}
|
|
.reader-summary p,
|
|
.reader-summary .rich-text-value {
|
|
color: var(--text);
|
|
font-size: var(--ui-reading-size);
|
|
font-weight: 400;
|
|
line-height: 1.55;
|
|
}
|
|
.dashboard-grid label,
|
|
.review-grid > label {
|
|
color: var(--heading);
|
|
font-size: var(--ui-control-size);
|
|
font-weight: var(--ui-label-weight);
|
|
letter-spacing: var(--ui-label-tracking);
|
|
}
|
|
.dashboard-grid input,
|
|
.dashboard-grid select,
|
|
.review-grid textarea {
|
|
border-color: var(--line);
|
|
background-color: var(--surface-inset);
|
|
color: var(--text);
|
|
}
|
|
.tile-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(0, var(--tile-content-width)));
|
|
align-items: stretch;
|
|
align-content: start;
|
|
justify-content: start;
|
|
gap: var(--segment-gap);
|
|
min-height: 100%;
|
|
padding: var(--segment-inset);
|
|
border: var(--border-hair) solid var(--segment-border);
|
|
border-radius: var(--segment-radius);
|
|
background: var(--segment-surface);
|
|
}
|
|
.data-tile {
|
|
position: relative;
|
|
display: grid;
|
|
grid-template-columns: 32px minmax(0, 1fr) 30px;
|
|
align-items: start;
|
|
gap: var(--legacy-space-3);
|
|
min-width: 0;
|
|
min-height: var(--tile-content-min-height);
|
|
padding: var(--legacy-space-4);
|
|
border: var(--border-hair) solid var(--tile-border);
|
|
border-radius: var(--tile-radius);
|
|
color: var(--text);
|
|
background: var(--tile-surface);
|
|
box-shadow: var(--tile-card-shadow);
|
|
cursor: pointer;
|
|
overflow: hidden;
|
|
text-align: left;
|
|
transition: background .12s ease, border-color .12s ease;
|
|
}
|
|
.data-tile:hover {
|
|
border-color: transparent;
|
|
border-radius: var(--tile-radius);
|
|
background: var(--tile-surface-hover);
|
|
box-shadow: var(--tile-card-shadow);
|
|
outline: 0;
|
|
}
|
|
.data-tile:focus-visible {
|
|
border-color: transparent;
|
|
border-radius: var(--tile-radius);
|
|
background: var(--tile-surface-hover);
|
|
box-shadow: var(--tile-card-shadow);
|
|
outline: var(--bw-emphasis) solid var(--focus-ring);
|
|
outline-offset: calc(-1 * var(--bw-emphasis));
|
|
}
|
|
.data-tile-hex {
|
|
position: relative;
|
|
width: 26px;
|
|
height: 30px;
|
|
margin-top: 1px;
|
|
clip-path: polygon(50% 0, 94% 24%, 94% 76%, 50% 100%, 6% 76%, 6% 24%);
|
|
background: var(--muted);
|
|
}
|
|
.data-tile-hex::after {
|
|
content: "";
|
|
position: absolute;
|
|
left: 2px;
|
|
top: 12px;
|
|
width: 7px;
|
|
height: 4px;
|
|
border-left: 2px solid var(--sev-on);
|
|
border-bottom: 2px solid var(--sev-on);
|
|
transform: rotate(-45deg);
|
|
pointer-events: none;
|
|
}
|
|
.data-tile.severity-critical .data-tile-hex {
|
|
background: var(--critical);
|
|
}
|
|
.data-tile.severity-high .data-tile-hex {
|
|
background: var(--high);
|
|
}
|
|
.data-tile.severity-medium .data-tile-hex {
|
|
background: var(--medium);
|
|
}
|
|
.data-tile.severity-low .data-tile-hex {
|
|
background: var(--low);
|
|
}
|
|
.data-tile.severity-info .data-tile-hex {
|
|
background: var(--info);
|
|
}
|
|
.data-tile-content {
|
|
min-width: 0;
|
|
}
|
|
.data-tile-content h3 {
|
|
margin: 0;
|
|
color: var(--heading);
|
|
font-size: var(--type-h4-size);
|
|
font-weight: var(--ui-strong-weight);
|
|
line-height: 1.35;
|
|
overflow-wrap: normal;
|
|
word-break: normal;
|
|
hyphens: manual;
|
|
}
|
|
.data-tile[data-tool=group-policy] .data-tile-content h3 {
|
|
max-width: 100%;
|
|
white-space: normal;
|
|
overflow-wrap: anywhere;
|
|
word-break: normal;
|
|
}
|
|
.data-tile-badges {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: var(--legacy-space-2);
|
|
margin-top: var(--legacy-space-4);
|
|
font-size: var(--ui-control-size);
|
|
}
|
|
.tile-grid > .data-tile .data-tile-badges {
|
|
display: grid;
|
|
grid-template-columns: max-content max-content;
|
|
align-items: start;
|
|
justify-content: start;
|
|
}
|
|
.tile-grid > .data-tile .data-tile-badges > * {
|
|
max-width: 100%;
|
|
overflow-wrap: normal;
|
|
word-break: normal;
|
|
}
|
|
.tile-grid > .data-tile [data-badge-role=status],
|
|
.tile-grid > .data-tile [data-badge-role=category],
|
|
.tile-grid > .data-tile [data-badge-role=score] {
|
|
grid-column: 1 / -1;
|
|
justify-self: start;
|
|
}
|
|
.data-tile-actions {
|
|
display: grid;
|
|
gap: var(--legacy-space-2);
|
|
align-content: start;
|
|
}
|
|
.tile-bookmark-btn,
|
|
.tile-results-btn {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 28px;
|
|
height: 28px;
|
|
padding: 0;
|
|
border: var(--border-hair) solid var(--line);
|
|
border-radius: var(--legacy-radius-sm);
|
|
color: var(--text);
|
|
background: var(--panel-raised);
|
|
font-size: var(--ui-control-size);
|
|
font-weight: var(--ui-label-weight);
|
|
cursor: pointer;
|
|
}
|
|
.tile-bookmark-btn[aria-pressed=true] {
|
|
border-color: var(--state-active);
|
|
color: var(--state-active-text);
|
|
background: var(--state-active);
|
|
}
|
|
.tile-results-btn,
|
|
.tile-results-btn:hover {
|
|
border-color: var(--border-results-action);
|
|
color: var(--text-results-action);
|
|
background: var(--surface-results-action);
|
|
}
|
|
.tile-results-btn.is-open,
|
|
.tile-results-btn.is-open:hover {
|
|
border-color: var(--result-color);
|
|
color: var(--button-accent-text);
|
|
background: var(--result-color);
|
|
}
|
|
.data-tile.is-bookmarked {
|
|
outline: 2px solid var(--state-active);
|
|
outline-offset: -2px;
|
|
}
|
|
.table-scroll {
|
|
padding: var(--panel-inset);
|
|
}
|
|
.view-table table {
|
|
width: max-content;
|
|
min-width: 100%;
|
|
border-color: var(--line);
|
|
background: var(--panel);
|
|
color: var(--text);
|
|
font-size: var(--type-table-body-size);
|
|
}
|
|
.view-table th,
|
|
.view-table td {
|
|
min-width: var(--table-col-min-w);
|
|
max-width: min(440px, 46vw);
|
|
padding: var(--legacy-space-1) var(--legacy-space-2);
|
|
border-color: var(--line);
|
|
white-space: normal;
|
|
overflow-wrap: break-word;
|
|
}
|
|
.view-table th {
|
|
color: var(--muted);
|
|
background: var(--panel-soft);
|
|
font-size: var(--type-table-head-size);
|
|
font-weight: var(--ui-label-weight);
|
|
line-height: 1.2;
|
|
letter-spacing: var(--ui-label-tracking);
|
|
text-transform: uppercase;
|
|
}
|
|
.view-table td {
|
|
color: var(--text);
|
|
background: var(--panel);
|
|
font-size: var(--type-table-body-size);
|
|
font-weight: 400;
|
|
line-height: 1.35;
|
|
}
|
|
.view-table tbody tr:nth-child(even) td {
|
|
background: var(--panel-soft);
|
|
}
|
|
.view-table tbody tr:hover td {
|
|
color: var(--heading);
|
|
background: var(--panel-hover);
|
|
}
|
|
.view-table .row-index {
|
|
width: 54px;
|
|
min-width: 54px;
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.raw-view {
|
|
min-height: 100%;
|
|
margin: 0;
|
|
padding: var(--panel-inset);
|
|
color: var(--text);
|
|
background: var(--panel);
|
|
font-family: var(--font-ui);
|
|
font-size: var(--type-table-body-size);
|
|
font-weight: var(--fw-regular);
|
|
line-height: 1.5;
|
|
white-space: pre-wrap;
|
|
overflow-wrap: anywhere;
|
|
}
|
|
@media (max-width: 1050px) {
|
|
:root {
|
|
--reader-inset: var(--legacy-space-6);
|
|
}
|
|
.records-layout {
|
|
grid-template-columns: minmax(300px, 42%) minmax(0, 1fr);
|
|
}
|
|
}
|
|
@media (max-width: 760px) {
|
|
:root {
|
|
--reader-inset: var(--legacy-space-4);
|
|
}
|
|
.records-layout {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.record-list {
|
|
max-height: 320px;
|
|
border-right: 0;
|
|
border-bottom: var(--border-hair) solid var(--line);
|
|
}
|
|
.tile-grid {
|
|
grid-template-columns: 1fr;
|
|
padding: var(--panel-inset);
|
|
}
|
|
}
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.data-tile,
|
|
.record-card {
|
|
transition: none;
|
|
}
|
|
.record-card:hover {
|
|
transform: none;
|
|
}
|
|
}
|
|
|
|
/* src/styles/obsidian-graph.css */
|
|
.app-area-graph {
|
|
overflow: hidden;
|
|
}
|
|
.obsidian-graph {
|
|
box-sizing: border-box;
|
|
position: relative;
|
|
width: 100%;
|
|
height: 100%;
|
|
min-width: 0;
|
|
min-height: 0;
|
|
padding: var(--panel-inset);
|
|
color: var(--text-primary);
|
|
background: transparent;
|
|
overflow: hidden;
|
|
}
|
|
.obsidian-graph-surface {
|
|
display: block;
|
|
width: 100%;
|
|
height: 100%;
|
|
min-height: 0;
|
|
touch-action: none;
|
|
cursor: grab;
|
|
user-select: none;
|
|
}
|
|
.obsidian-graph-surface:active {
|
|
cursor: grabbing;
|
|
}
|
|
.obsidian-graph-edges line {
|
|
stroke: var(--graph-edge);
|
|
stroke-width: 1;
|
|
vector-effect: non-scaling-stroke;
|
|
transition: stroke .12s ease, stroke-width .12s ease;
|
|
}
|
|
.obsidian-node {
|
|
color: var(--graph-technique);
|
|
cursor: pointer;
|
|
outline: none;
|
|
}
|
|
.obsidian-node-selection-ring {
|
|
fill: none;
|
|
stroke: var(--graph-selected);
|
|
stroke-width: 3;
|
|
opacity: 1;
|
|
vector-effect: non-scaling-stroke;
|
|
pointer-events: none;
|
|
filter: none;
|
|
}
|
|
.obsidian-node-branch-ring {
|
|
fill: none;
|
|
stroke: var(--graph-selected);
|
|
stroke-width: 2;
|
|
opacity: .82;
|
|
vector-effect: non-scaling-stroke;
|
|
pointer-events: none;
|
|
}
|
|
.obsidian-node.is-branch-muted {
|
|
opacity: .42;
|
|
}
|
|
.obsidian-graph-edges line.is-branch-path {
|
|
stroke: var(--graph-selected);
|
|
stroke-width: 2;
|
|
opacity: 1;
|
|
}
|
|
.obsidian-graph-edges line.is-branch-muted {
|
|
opacity: .2;
|
|
}
|
|
.obsidian-node.is-selection-muted {
|
|
opacity: .48;
|
|
transition: opacity .14s ease;
|
|
}
|
|
.obsidian-node.is-selection-muted:hover,
|
|
.obsidian-node.is-selection-muted:focus-visible {
|
|
opacity: 1;
|
|
}
|
|
.obsidian-graph-edges line.is-selection-muted {
|
|
opacity: .24;
|
|
}
|
|
.obsidian-node-role-ring {
|
|
fill: none;
|
|
stroke: currentColor;
|
|
stroke-width: 1.5;
|
|
opacity: .72;
|
|
vector-effect: non-scaling-stroke;
|
|
pointer-events: none;
|
|
}
|
|
.obsidian-node-core {
|
|
fill: currentColor;
|
|
stroke: var(--surface-app);
|
|
stroke-width: 1.5;
|
|
vector-effect: non-scaling-stroke;
|
|
transition: filter .12s ease, stroke .12s ease;
|
|
}
|
|
.obsidian-node-finding {
|
|
color: var(--graph-finding);
|
|
}
|
|
.obsidian-node-finding.severity-critical {
|
|
color: var(--critical);
|
|
}
|
|
.obsidian-node-finding.severity-high {
|
|
color: var(--high);
|
|
}
|
|
.obsidian-node-finding.severity-medium {
|
|
color: var(--medium);
|
|
}
|
|
.obsidian-node-finding.severity-low {
|
|
color: var(--low);
|
|
}
|
|
.obsidian-node-finding.severity-info {
|
|
color: var(--info);
|
|
}
|
|
.obsidian-node-finding.severity-unknown {
|
|
color: var(--graph-unknown);
|
|
}
|
|
.obsidian-node-category,
|
|
.obsidian-node-defense,
|
|
.obsidian-node-target,
|
|
.obsidian-node-technique,
|
|
.obsidian-node-tactic {
|
|
color: var(--graph-relation);
|
|
}
|
|
.obsidian-node:hover .obsidian-node-core,
|
|
.obsidian-node:focus-visible .obsidian-node-core {
|
|
filter: brightness(1.25);
|
|
stroke: var(--graph-selected);
|
|
}
|
|
.obsidian-node:hover .obsidian-node-role-ring,
|
|
.obsidian-node:focus-visible .obsidian-node-role-ring {
|
|
opacity: 1;
|
|
stroke-width: 2;
|
|
}
|
|
.obsidian-node.is-selected .obsidian-node-core {
|
|
stroke: var(--graph-selected);
|
|
stroke-width: 2.5;
|
|
}
|
|
.obsidian-node.is-selected .obsidian-node-role-ring {
|
|
opacity: 1;
|
|
stroke: var(--graph-selected);
|
|
stroke-width: 2;
|
|
}
|
|
.obsidian-graph-card-connectors {
|
|
pointer-events: none;
|
|
}
|
|
.obsidian-graph-card-connectors line {
|
|
vector-effect: non-scaling-stroke;
|
|
}
|
|
.obsidian-card-connector-backdrop {
|
|
stroke: color-mix(in srgb, var(--surface-app) 88%, var(--pathfinder-micro-connector-backdrop-mix));
|
|
stroke-width: 5;
|
|
opacity: .9;
|
|
}
|
|
.obsidian-card-connector {
|
|
stroke: var(--graph-selected);
|
|
stroke-width: 2;
|
|
}
|
|
.obsidian-card-connector-anchor {
|
|
fill: var(--graph-selected);
|
|
stroke: color-mix(in srgb, var(--surface-app) 88%, var(--pathfinder-micro-connector-backdrop-mix));
|
|
stroke-width: 1.5;
|
|
vector-effect: non-scaling-stroke;
|
|
}
|
|
.obsidian-node-inline-label {
|
|
fill: var(--text-secondary);
|
|
stroke: var(--surface-app);
|
|
stroke-width: 3px;
|
|
paint-order: stroke fill;
|
|
font-size: var(--fs-lg);
|
|
font-weight: var(--fw-medium);
|
|
letter-spacing: .01em;
|
|
pointer-events: none;
|
|
}
|
|
.obsidian-node-category .obsidian-node-inline-label,
|
|
.obsidian-node-defense .obsidian-node-inline-label,
|
|
.obsidian-node-target .obsidian-node-inline-label,
|
|
.obsidian-node-tactic .obsidian-node-inline-label {
|
|
fill: var(--text-primary);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.obsidian-node-card-wrap {
|
|
overflow: visible;
|
|
pointer-events: auto;
|
|
cursor: grab;
|
|
touch-action: none;
|
|
}
|
|
.obsidian-node-card-wrap:active {
|
|
cursor: grabbing;
|
|
}
|
|
.obsidian-node-matrix-card-wrap {
|
|
overflow: visible;
|
|
}
|
|
.obsidian-node-matrix-card {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
.obsidian-node-matrix-card .data-tile-content {
|
|
display: grid;
|
|
grid-template-rows: auto minmax(0, 1fr);
|
|
min-height: 0;
|
|
overflow: hidden;
|
|
}
|
|
.obsidian-node-matrix-card .data-tile {
|
|
box-sizing: border-box;
|
|
width: 100%;
|
|
height: 100%;
|
|
min-height: 0;
|
|
grid-template-columns: 18px minmax(0, 1fr) 18px;
|
|
gap: var(--space-2);
|
|
padding: var(--space-3);
|
|
overflow: hidden;
|
|
}
|
|
.obsidian-node-matrix-card .data-tile-hex {
|
|
width: 18px;
|
|
height: 20px;
|
|
}
|
|
.obsidian-node-matrix-card .data-tile-content h3 {
|
|
display: -webkit-box;
|
|
overflow: hidden;
|
|
font-size: var(--pathfinder-micro-title-size);
|
|
line-height: 1.2;
|
|
-webkit-box-orient: vertical;
|
|
-webkit-line-clamp: 5;
|
|
}
|
|
.obsidian-node-matrix-card .data-tile-badges {
|
|
flex-wrap: wrap;
|
|
gap: var(--space-1);
|
|
margin-top: var(--space-1);
|
|
min-height: 0;
|
|
max-height: none;
|
|
align-content: start;
|
|
overflow: hidden;
|
|
}
|
|
.obsidian-node-matrix-card .data-tile-badges > * {
|
|
flex: 0 1 auto;
|
|
min-width: 0;
|
|
max-width: 100%;
|
|
height: auto;
|
|
min-height: 20px;
|
|
padding: 0 3px;
|
|
overflow: visible;
|
|
font-size: var(--pathfinder-micro-badge-size);
|
|
line-height: 1.1;
|
|
overflow-wrap: anywhere;
|
|
white-space: normal;
|
|
}
|
|
.obsidian-node-matrix-card .tile-badge-overflow {
|
|
justify-content: center;
|
|
}
|
|
.obsidian-node-matrix-card .data-tile-actions {
|
|
align-self: start;
|
|
gap: 2px;
|
|
}
|
|
.obsidian-node-matrix-card .tile-bookmark-btn,
|
|
.obsidian-node-matrix-card .tile-results-btn {
|
|
width: 18px;
|
|
height: 18px;
|
|
}
|
|
.obsidian-node-card.data-tile {
|
|
box-sizing: border-box;
|
|
width: 100%;
|
|
height: 100%;
|
|
min-height: 0;
|
|
grid-template-columns: 26px minmax(0, 1fr);
|
|
gap: var(--legacy-space-3);
|
|
padding: var(--legacy-space-3);
|
|
overflow: hidden;
|
|
cursor: pointer;
|
|
}
|
|
.obsidian-node-card-technique .data-tile-hex,
|
|
.obsidian-node-card-category .data-tile-hex,
|
|
.obsidian-node-card-defense .data-tile-hex,
|
|
.obsidian-node-card-target .data-tile-hex,
|
|
.obsidian-node-card-tactic .data-tile-hex {
|
|
background: var(--graph-relation);
|
|
}
|
|
.obsidian-node-card .data-tile-content h3 {
|
|
display: -webkit-box;
|
|
overflow: hidden;
|
|
font-size: var(--pathfinder-micro-title-size);
|
|
line-height: 1.3;
|
|
overflow-wrap: normal;
|
|
word-break: normal;
|
|
-webkit-box-orient: vertical;
|
|
-webkit-line-clamp: 2;
|
|
}
|
|
.obsidian-node-card-technique .data-tile-content h3,
|
|
.obsidian-node-card-tactic .data-tile-content h3 {
|
|
-webkit-line-clamp: 3;
|
|
}
|
|
.obsidian-node-card .data-tile-badges {
|
|
gap: var(--legacy-space-1) var(--legacy-space-2);
|
|
margin-top: var(--legacy-space-2);
|
|
}
|
|
.obsidian-node-card .reader-severity {
|
|
min-height: 20px;
|
|
padding: 2px var(--legacy-space-1);
|
|
font-size: var(--pathfinder-micro-relation-badge-size);
|
|
}
|
|
.obsidian-node-card .outcome-mark {
|
|
flex-basis: 100%;
|
|
}
|
|
.obsidian-node.is-selected .obsidian-node-card {
|
|
border-color: var(--graph-selected);
|
|
outline: var(--bw-emphasis) solid var(--graph-selected);
|
|
outline-offset: -2px;
|
|
}
|
|
.obsidian-graph-card.is-selected .obsidian-node-card,
|
|
.obsidian-graph-card.is-selected .obsidian-node-matrix-card .data-tile {
|
|
border-color: var(--graph-selected);
|
|
outline: 3px solid var(--graph-selected);
|
|
outline-offset: -3px;
|
|
}
|
|
.obsidian-graph-toolbar,
|
|
.obsidian-graph-filters,
|
|
.obsidian-graph-inspector,
|
|
.obsidian-graph-zoom {
|
|
position: absolute;
|
|
z-index: 5;
|
|
border: var(--bw-hairline) solid var(--border-default);
|
|
border-radius: var(--radius-md);
|
|
color: var(--text-primary);
|
|
background: color-mix(in srgb, var(--surface-panel-raised) 94%, transparent);
|
|
backdrop-filter: blur(var(--space-2));
|
|
}
|
|
.obsidian-graph-toolbar {
|
|
top: var(--space-4);
|
|
left: 50%;
|
|
display: flex;
|
|
align-items: end;
|
|
gap: var(--space-2);
|
|
max-width: calc(100% - var(--space-8) * 2);
|
|
padding: var(--space-2);
|
|
transform: translateX(-50%);
|
|
}
|
|
.obsidian-graph-search {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
min-width: calc(var(--space-8) * 8);
|
|
color: var(--text-secondary);
|
|
font-size: var(--fs-sm);
|
|
}
|
|
.obsidian-graph-search input {
|
|
min-height: var(--control-h);
|
|
padding: 0 var(--space-2);
|
|
border: var(--bw-hairline) solid var(--border-strong);
|
|
border-radius: var(--radius-sm);
|
|
color: var(--text-primary);
|
|
background: var(--surface-input);
|
|
font-size: var(--fs-base);
|
|
}
|
|
.obsidian-graph-count {
|
|
align-self: center;
|
|
min-width: max-content;
|
|
padding-inline: var(--space-2);
|
|
color: var(--text-secondary);
|
|
font-size: var(--fs-sm);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.obsidian-graph-branch-actions {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
min-width: min(360px, 32vw);
|
|
padding-left: var(--space-3);
|
|
border-left: var(--bw-hairline) solid var(--border-default);
|
|
}
|
|
.obsidian-graph-branch-actions > span {
|
|
color: var(--text-secondary);
|
|
font-size: var(--fs-sm);
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: var(--ls-caps);
|
|
text-transform: uppercase;
|
|
}
|
|
.obsidian-graph-branch-actions .btn {
|
|
min-width: 84px;
|
|
}
|
|
.obsidian-graph-reset-view {
|
|
position: relative;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 6px;
|
|
border-color: var(--border-strong);
|
|
border-radius: 999px;
|
|
color: var(--text-primary);
|
|
background: var(--surface-input);
|
|
overflow: hidden;
|
|
}
|
|
.obsidian-graph-reset-view:hover,
|
|
.obsidian-graph-reset-view:focus-visible {
|
|
border-color: var(--text-secondary);
|
|
color: var(--text-primary);
|
|
background: var(--surface-hover);
|
|
}
|
|
.obsidian-graph-reset-view span {
|
|
font-size: 11px;
|
|
line-height: 1;
|
|
}
|
|
.obsidian-graph-filters {
|
|
top: calc(var(--space-8) * 2.7);
|
|
left: 50%;
|
|
display: grid;
|
|
grid-template-columns: repeat(3, minmax(calc(var(--space-8) * 5), 1fr));
|
|
gap: var(--space-3);
|
|
width: min(calc(var(--space-8) * 20), calc(100% - var(--space-8) * 2));
|
|
padding: var(--space-3);
|
|
transform: translateX(-50%);
|
|
}
|
|
.obsidian-graph-filters label {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
color: var(--text-secondary);
|
|
font-size: var(--fs-sm);
|
|
}
|
|
.obsidian-graph-filters select {
|
|
min-height: var(--control-h);
|
|
padding-inline: var(--space-2);
|
|
border: var(--bw-hairline) solid var(--border-strong);
|
|
border-radius: var(--radius-sm);
|
|
color: var(--text-primary);
|
|
background: var(--surface-input);
|
|
font-size: var(--fs-base);
|
|
}
|
|
.obsidian-graph-zoom {
|
|
top: var(--space-4);
|
|
right: var(--space-4);
|
|
display: grid;
|
|
overflow: hidden;
|
|
}
|
|
.obsidian-graph-zoom button {
|
|
display: grid;
|
|
place-items: center;
|
|
width: var(--space-8);
|
|
height: var(--space-8);
|
|
padding: 0;
|
|
border: 0;
|
|
border-bottom: var(--bw-hairline) solid var(--border-default);
|
|
color: var(--text-primary);
|
|
background: transparent;
|
|
font-size: var(--fs-lg);
|
|
cursor: pointer;
|
|
}
|
|
.obsidian-graph-zoom button:last-child {
|
|
border-bottom: 0;
|
|
}
|
|
.obsidian-graph-zoom button:hover {
|
|
background: var(--surface-hover);
|
|
}
|
|
.obsidian-graph-inspector {
|
|
right: var(--space-4);
|
|
bottom: var(--space-4);
|
|
display: grid;
|
|
gap: var(--space-2);
|
|
width: min(calc(var(--space-8) * 12), calc(100% - var(--space-8)));
|
|
padding: var(--space-4);
|
|
}
|
|
.obsidian-graph-inspector > small {
|
|
color: var(--text-secondary);
|
|
font-size: var(--fs-sm);
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: var(--ls-caps);
|
|
text-transform: uppercase;
|
|
}
|
|
.obsidian-graph-inspector > strong {
|
|
padding-right: var(--space-6);
|
|
color: var(--text-primary);
|
|
font-size: var(--fs-lg);
|
|
line-height: var(--lh-prose);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.obsidian-graph-inspector > span {
|
|
color: var(--text-secondary);
|
|
font-size: var(--fs-lg);
|
|
}
|
|
.obsidian-graph-inspector dl {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, 1fr);
|
|
gap: var(--space-2);
|
|
margin: var(--space-2) 0 0;
|
|
}
|
|
.obsidian-graph-inspector dl div {
|
|
display: grid;
|
|
gap: var(--space-1);
|
|
padding: var(--space-2);
|
|
border: var(--bw-hairline) solid var(--border-subtle);
|
|
background: var(--surface-panel);
|
|
}
|
|
.obsidian-graph-inspector dt {
|
|
color: var(--text-secondary);
|
|
font-size: var(--fs-sm);
|
|
}
|
|
.obsidian-graph-inspector dd {
|
|
margin: 0;
|
|
color: var(--text-primary);
|
|
font-size: var(--fs-lg);
|
|
font-weight: var(--fw-semibold);
|
|
}
|
|
.obsidian-graph-inspector-actions {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: var(--space-2);
|
|
margin-top: var(--space-2);
|
|
}
|
|
.obsidian-inspector-close {
|
|
position: absolute;
|
|
top: var(--space-2);
|
|
right: var(--space-2);
|
|
display: grid;
|
|
place-items: center;
|
|
width: var(--control-h);
|
|
height: var(--control-h);
|
|
padding: 0;
|
|
border: 0;
|
|
color: var(--text-secondary);
|
|
background: transparent;
|
|
font-size: var(--fs-lg);
|
|
cursor: pointer;
|
|
}
|
|
.obsidian-graph-empty {
|
|
position: absolute;
|
|
inset: 0;
|
|
display: grid;
|
|
place-content: center;
|
|
gap: var(--space-2);
|
|
color: var(--text-secondary);
|
|
text-align: center;
|
|
pointer-events: none;
|
|
}
|
|
.obsidian-graph-empty strong,
|
|
.obsidian-graph-empty span {
|
|
font-size: var(--fs-lg);
|
|
}
|
|
.obsidian-graph-card-zoom-hint {
|
|
position: absolute;
|
|
left: 50%;
|
|
bottom: var(--space-4);
|
|
z-index: 7;
|
|
min-height: var(--control-h);
|
|
padding: 0 var(--space-4);
|
|
border: var(--bw-hairline) solid var(--border-strong);
|
|
border-radius: var(--radius-sm);
|
|
color: var(--text-primary);
|
|
background: color-mix(in srgb, var(--surface-panel-raised) 94%, transparent);
|
|
font-size: var(--fs-sm);
|
|
cursor: pointer;
|
|
transform: translateX(-50%);
|
|
}
|
|
.obsidian-graph-card-zoom-hint:hover,
|
|
.obsidian-graph-card-zoom-hint:focus-visible {
|
|
background: var(--surface-hover);
|
|
outline: none;
|
|
}
|
|
@media (max-width: 900px) {
|
|
.obsidian-graph-toolbar {
|
|
left: var(--space-3);
|
|
right: calc(var(--space-8) + var(--space-5));
|
|
flex-wrap: wrap;
|
|
max-width: none;
|
|
transform: none;
|
|
}
|
|
.obsidian-graph-branch-actions {
|
|
flex: 1 1 100%;
|
|
min-width: 0;
|
|
padding-top: var(--space-2);
|
|
padding-left: 0;
|
|
border-top: var(--bw-hairline) solid var(--border-default);
|
|
border-left: 0;
|
|
}
|
|
.obsidian-graph-search {
|
|
flex: 1 1 100%;
|
|
min-width: 0;
|
|
}
|
|
.obsidian-graph-filters {
|
|
top: calc(var(--space-8) * 3.5);
|
|
grid-template-columns: 1fr;
|
|
}
|
|
.obsidian-graph-inspector {
|
|
left: var(--space-3);
|
|
right: var(--space-3);
|
|
width: auto;
|
|
}
|
|
}
|
|
@media (prefers-reduced-motion: reduce) {
|
|
.obsidian-node circle {
|
|
transition: none;
|
|
}
|
|
}
|
|
.obsidian-graph {
|
|
background: var(--surface-app);
|
|
}
|
|
.obsidian-graph-layout {
|
|
display: grid;
|
|
grid-template-columns: clamp(220px, 17vw, 280px) minmax(0, 1fr) clamp(270px, 21vw, 340px);
|
|
width: 100%;
|
|
height: 100%;
|
|
min-width: 0;
|
|
min-height: 0;
|
|
}
|
|
.obsidian-graph-filter-panel,
|
|
.obsidian-graph-inspector {
|
|
position: static;
|
|
display: flex;
|
|
flex-direction: column;
|
|
width: auto;
|
|
min-width: 0;
|
|
min-height: 0;
|
|
padding: 0;
|
|
border-radius: 0;
|
|
background: color-mix(in srgb, var(--surface-panel) 96%, var(--surface-app));
|
|
backdrop-filter: none;
|
|
}
|
|
.obsidian-graph-filter-panel {
|
|
border: 0;
|
|
border-right: var(--bw-hairline) solid var(--border-default);
|
|
}
|
|
.obsidian-graph-inspector {
|
|
border: 0;
|
|
border-left: var(--bw-hairline) solid var(--border-default);
|
|
}
|
|
.obsidian-graph-filter-panel > header,
|
|
.obsidian-graph-inspector > header {
|
|
display: flex;
|
|
flex: 0 0 auto;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: var(--space-3);
|
|
min-height: calc(var(--row-h) + var(--space-3));
|
|
padding: 0 var(--space-4);
|
|
border-bottom: var(--bw-hairline) solid var(--border-default);
|
|
}
|
|
.obsidian-graph-filter-panel > header strong,
|
|
.obsidian-graph-inspector > header strong {
|
|
color: var(--text-primary);
|
|
font-size: var(--fs-md);
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: var(--ls-caps);
|
|
text-transform: uppercase;
|
|
}
|
|
.obsidian-graph-filter-panel > header span {
|
|
color: var(--text-secondary);
|
|
font-size: var(--fs-sm);
|
|
font-variant-numeric: tabular-nums;
|
|
}
|
|
.obsidian-graph-filter-scroll {
|
|
display: grid;
|
|
align-content: start;
|
|
gap: var(--space-4);
|
|
min-height: 0;
|
|
padding: var(--space-4);
|
|
overflow-y: auto;
|
|
scrollbar-color: var(--border-strong) var(--surface-panel);
|
|
scrollbar-width: thin;
|
|
}
|
|
.obsidian-graph-filter-section {
|
|
display: grid;
|
|
gap: var(--space-2);
|
|
}
|
|
.obsidian-panel-label {
|
|
color: var(--text-secondary);
|
|
font-size: var(--fs-sm);
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: var(--ls-caps);
|
|
text-transform: uppercase;
|
|
}
|
|
.obsidian-graph-filter-panel .search-text-group,
|
|
.obsidian-graph-filter-panel .search-input-wrap,
|
|
.obsidian-graph-filter-panel .search-input,
|
|
.obsidian-graph-filter-panel .sheet-select {
|
|
width: 100%;
|
|
min-width: 0;
|
|
}
|
|
.obsidian-graph-filter-panel .search-tools,
|
|
.obsidian-graph-filter-panel .primary-filter-group {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr);
|
|
gap: var(--space-2);
|
|
min-width: 0;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
.obsidian-graph-filter-panel .primary-filter-group {
|
|
display: contents;
|
|
}
|
|
.obsidian-graph-filter-panel .standard-filter-btn,
|
|
.obsidian-graph-filter-panel .dynamic-facet-select,
|
|
.obsidian-graph-filter-panel .dynamic-range-filter {
|
|
width: 100%;
|
|
min-width: 0;
|
|
margin: 0;
|
|
}
|
|
.obsidian-graph-filter-panel .standard-filter-btn {
|
|
order: -1;
|
|
}
|
|
.obsidian-graph-filter-panel .dynamic-range-filter {
|
|
grid-template-columns: minmax(0, 1fr) minmax(0, .8fr) minmax(0, .8fr);
|
|
}
|
|
.obsidian-graph-workspace-tools {
|
|
display: grid;
|
|
gap: var(--space-3);
|
|
min-width: 0;
|
|
padding-top: var(--space-4);
|
|
border-top: var(--bw-hairline) solid var(--border-default);
|
|
}
|
|
.obsidian-graph-workspace-check {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: var(--space-2);
|
|
min-height: var(--control-h);
|
|
color: var(--text-primary);
|
|
font-size: var(--ui-label-size);
|
|
cursor: pointer;
|
|
}
|
|
.obsidian-graph-workspace-check input {
|
|
width: 14px;
|
|
height: 14px;
|
|
margin: 0;
|
|
accent-color: var(--marking-color);
|
|
}
|
|
.obsidian-graph-workspace-check:has(input:disabled) {
|
|
color: var(--text-muted);
|
|
cursor: not-allowed;
|
|
}
|
|
.obsidian-graph-workspace-tools .view-bookmark-bar,
|
|
.obsidian-graph-workspace-tools .view-bookmark-list {
|
|
align-items: stretch;
|
|
flex-direction: column;
|
|
width: 100%;
|
|
}
|
|
.obsidian-graph-workspace-tools .view-bookmark-create,
|
|
.obsidian-graph-workspace-tools .view-bookmark-item,
|
|
.obsidian-graph-workspace-tools .view-bookmark-entry {
|
|
width: 100%;
|
|
}
|
|
.obsidian-graph-workspace-tools .view-bookmark-item {
|
|
display: flex;
|
|
}
|
|
.obsidian-graph-workspace-tools .view-bookmark-entry {
|
|
flex: 1 1 auto;
|
|
}
|
|
.obsidian-graph-stage {
|
|
position: relative;
|
|
min-width: 0;
|
|
min-height: 0;
|
|
overflow: hidden;
|
|
background: color-mix(in srgb, var(--surface-app) 95%, var(--surface-panel));
|
|
}
|
|
.obsidian-graph-stage .obsidian-graph-surface {
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
.obsidian-graph-edges line {
|
|
stroke: var(--graph-edge);
|
|
stroke-width: 1;
|
|
}
|
|
.obsidian-graph-edges .obsidian-edge-category {
|
|
stroke: color-mix(in srgb, var(--graph-edge) 58%, var(--text-muted));
|
|
stroke-width: .8;
|
|
}
|
|
.obsidian-graph-edges .obsidian-edge-defense {
|
|
stroke: color-mix(in srgb, var(--graph-edge) 68%, var(--graph-defense));
|
|
stroke-width: .9;
|
|
}
|
|
.obsidian-graph-edges .obsidian-edge-technique {
|
|
stroke-width: 1.15;
|
|
}
|
|
.obsidian-graph-edges line.is-direct-path {
|
|
stroke: var(--graph-alert);
|
|
stroke-width: 2;
|
|
}
|
|
.obsidian-node-core {
|
|
fill: color-mix(in srgb, currentColor 88%, var(--surface-app));
|
|
}
|
|
.obsidian-node-card.data-tile {
|
|
grid-template-columns: 18px minmax(0, 1fr);
|
|
gap: var(--space-1);
|
|
padding: var(--space-1);
|
|
}
|
|
.obsidian-node-card .data-tile-hex {
|
|
width: 18px;
|
|
height: 20px;
|
|
}
|
|
.obsidian-node-card .data-tile-content h3 {
|
|
font-size: 16px;
|
|
line-height: 1.25;
|
|
}
|
|
.obsidian-node-card .data-tile-badges {
|
|
flex-wrap: nowrap;
|
|
gap: var(--space-1);
|
|
max-height: 18px;
|
|
margin-top: var(--space-1);
|
|
overflow: hidden;
|
|
}
|
|
.obsidian-node-card .reader-severity,
|
|
.obsidian-node-card .outcome-mark {
|
|
min-height: 18px;
|
|
padding: 1px var(--space-1);
|
|
font-size: var(--fs-sm);
|
|
white-space: nowrap;
|
|
}
|
|
.obsidian-node.is-selected .obsidian-node-card {
|
|
outline-width: var(--bw-hairline);
|
|
outline-offset: -1px;
|
|
}
|
|
.obsidian-graph-stage .obsidian-graph-toolbar {
|
|
top: var(--space-3);
|
|
left: var(--space-3);
|
|
align-items: center;
|
|
max-width: none;
|
|
padding: var(--space-1);
|
|
transform: none;
|
|
}
|
|
.obsidian-graph-stage .obsidian-graph-zoom {
|
|
top: var(--space-3);
|
|
right: var(--space-3);
|
|
}
|
|
.obsidian-graph-inspector-content,
|
|
.obsidian-graph-inspector-empty {
|
|
display: grid;
|
|
align-content: start;
|
|
gap: var(--space-3);
|
|
min-height: 0;
|
|
padding: var(--space-4);
|
|
overflow-y: auto;
|
|
}
|
|
.obsidian-graph-inspector-content > small {
|
|
color: var(--text-secondary);
|
|
font-size: var(--fs-sm);
|
|
font-weight: var(--fw-semibold);
|
|
letter-spacing: var(--ls-caps);
|
|
text-transform: uppercase;
|
|
}
|
|
.obsidian-graph-inspector-content > strong {
|
|
padding-right: var(--space-6);
|
|
color: var(--text-primary);
|
|
font-size: var(--fs-lg);
|
|
line-height: var(--lh-prose);
|
|
overflow-wrap: anywhere;
|
|
}
|
|
.obsidian-graph-inspector-content > span,
|
|
.obsidian-graph-inspector-empty span {
|
|
color: var(--text-secondary);
|
|
font-size: var(--fs-lg);
|
|
line-height: var(--lh-prose);
|
|
}
|
|
.obsidian-graph-inspector-empty strong {
|
|
color: var(--text-primary);
|
|
font-size: var(--fs-lg);
|
|
}
|
|
.obsidian-graph-inspector dl {
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
gap: 0;
|
|
margin: var(--space-2) 0 0;
|
|
}
|
|
.obsidian-graph-inspector dl div {
|
|
display: grid;
|
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
gap: var(--space-3);
|
|
padding: var(--space-3) 0;
|
|
border: 0;
|
|
border-bottom: var(--bw-hairline) solid var(--border-subtle);
|
|
background: transparent;
|
|
}
|
|
.obsidian-graph-inspector dt {
|
|
font-size: var(--fs-md);
|
|
}
|
|
.obsidian-graph-inspector-actions {
|
|
display: grid;
|
|
gap: var(--space-2);
|
|
margin-top: var(--space-3);
|
|
}
|
|
.obsidian-graph-inspector-actions .btn {
|
|
width: 100%;
|
|
}
|
|
.obsidian-inspector-close {
|
|
position: static;
|
|
flex: 0 0 auto;
|
|
}
|
|
@media (max-width: 1100px) {
|
|
.obsidian-graph-layout {
|
|
grid-template-columns: 220px minmax(0, 1fr) 270px;
|
|
}
|
|
}
|
|
@media (max-width: 850px) {
|
|
.obsidian-graph-layout {
|
|
grid-template-columns: 210px minmax(0, 1fr);
|
|
grid-template-rows: minmax(0, 1fr) 210px;
|
|
}
|
|
.obsidian-graph-inspector {
|
|
grid-column: 1 / -1;
|
|
border-top: var(--bw-hairline) solid var(--border-default);
|
|
border-left: 0;
|
|
}
|
|
.obsidian-graph-inspector-content {
|
|
grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
|
|
}
|
|
}
|
|
@media (max-width: 650px) {
|
|
.obsidian-graph-layout {
|
|
grid-template-columns: 1fr;
|
|
grid-template-rows: 220px minmax(360px, 1fr) 220px;
|
|
overflow-y: auto;
|
|
}
|
|
.obsidian-graph-filter-panel {
|
|
border-right: 0;
|
|
border-bottom: var(--bw-hairline) solid var(--border-default);
|
|
}
|
|
.obsidian-graph-inspector {
|
|
grid-column: 1;
|
|
}
|
|
}
|
|
|
|
/* src/styles/functional-icons.css */
|
|
.triangle-icon {
|
|
display: block;
|
|
flex: 0 0 auto;
|
|
width: 12px;
|
|
height: 12px;
|
|
fill: currentColor;
|
|
transform-origin: center;
|
|
}
|
|
.triangle-icon-right {
|
|
transform: rotate(180deg);
|
|
}
|
|
.triangle-icon-up {
|
|
transform: rotate(90deg);
|
|
}
|
|
.triangle-icon-down {
|
|
transform: rotate(-90deg);
|
|
}
|
|
.reader-nav button,
|
|
.sidebar-toggle-inline,
|
|
.sidebar-toggle,
|
|
.icon-btn,
|
|
.tenant-back,
|
|
.db-structure-card-toggle,
|
|
summary,
|
|
.results-browser-title {
|
|
color: var(--muted);
|
|
}
|
|
.reader-nav button,
|
|
.sidebar-toggle-inline,
|
|
.sidebar-toggle,
|
|
.icon-btn {
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
.reader-nav button .triangle-icon {
|
|
width: 18px;
|
|
height: 18px;
|
|
}
|
|
.sidebar-toggle-inline .triangle-icon,
|
|
.sidebar-toggle .triangle-icon {
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
.tenant-back {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
}
|
|
.tenant-back .triangle-icon {
|
|
width: 28px;
|
|
height: 28px;
|
|
fill: var(--band-surface);
|
|
}
|
|
.db-structure-card-toggle {
|
|
display: grid;
|
|
place-items: center;
|
|
width: 18px;
|
|
height: 18px;
|
|
}
|
|
.results-browser-title {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
}
|
|
summary {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 7px;
|
|
list-style: none;
|
|
}
|
|
summary::-webkit-details-marker {
|
|
display: none;
|
|
}
|
|
details[open] > summary > .triangle-icon-right {
|
|
transform: rotate(-90deg);
|
|
}
|
|
select:not([multiple]) {
|
|
appearance: none;
|
|
padding-right: 30px;
|
|
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath fill='%23888a92' d='M1.5 2.5 6 9.5l4.5-7z'/%3E%3C/svg%3E");
|
|
background-repeat: no-repeat;
|
|
background-position: right 9px center;
|
|
background-size: 12px 12px;
|
|
}
|
|
.results-parking-anchor {
|
|
position: absolute;
|
|
inset: 0 auto auto 0;
|
|
width: 0;
|
|
height: 0;
|
|
pointer-events: none;
|
|
}
|
|
|
|
/* src/styles/tile-contract.css */
|
|
.donut-metric-rack {
|
|
grid-template-columns: repeat(auto-fill, var(--tile-compact-width));
|
|
justify-content: start;
|
|
}
|
|
@media (min-width: 1101px) {
|
|
.datahub-reference-controls {
|
|
grid-template-columns: repeat(6, minmax(0, 1fr));
|
|
}
|
|
}
|
|
|
|
/* tests/fixtures/client-info-design/preview.css */
|
|
body {
|
|
overflow: auto;
|
|
}
|