rb1337's picture
Upload 50 files
2cc7f91 verified
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html, body {
scrollbar-width: none;
-ms-overflow-style: none;
}
html::-webkit-scrollbar,
body::-webkit-scrollbar {
display: none;
}
:root {
--bg: #ffffff;
--bg-secondary: #f5f5f5;
--text: #000000;
--text-secondary: #666666;
--border: #e0e0e0;
--safe: #00a86b;
--safe-bg: #e8f5e9;
--danger: #dc2626;
--danger-bg: #fef2f2;
--accent: #000000;
}
/*
* DESIGN SYSTEM REFERENCE
* ───────────────────────────────────────────────
*
* Typography:
* Label: 10px / 600 / 0.15em / uppercase / --text-secondary
* Button: 11px / 600 / 0.1em / uppercase
* Body: 12-13px / 400 / --text or --text-secondary
* Mono: 'SF Mono', 'Monaco', 'Inconsolata', monospace
* Heading: 16-28px / 700
*
* Spacing: 8, 12, 16, 20, 24, 32, 40, 48px
* Borders: 1px solid var(--border)
* Accents: border-left 3-4px solid var(--safe | --danger | --accent)
*
* Color modifiers (add to element):
* .safe → green state (--safe, --safe-bg)
* .danger → red state (--danger, --danger-bg)
*
* Reusable components:
* .btn filled button
* .btn-secondary ghost button (use with .btn)
* .btn-outline standalone outline link/button
* .tabs / .tab tab navigation (nest for sub-tabs)
* .tab-count badge inside .tab
* .tab-content tab panel (add .active)
* .section-title section header label with border
* .status-banner verdict banner (add .safe/.danger)
* .model-card prediction card (add .safe/.danger)
* .prob-bar/.prob-fill 4px progress bar (add .safe/.danger to fill)
* .feature-item key-value pair row
* .features-grid auto-fill grid for feature items
* .models-grid auto-fit grid for cards
* .error-notice error message block
*/
body {
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
background: var(--bg);
color: var(--text);
min-height: 100vh;
line-height: 1.4;
font-weight: 400;
-webkit-font-smoothing: antialiased;
}
.container {
max-width: 960px;
margin: 0 auto;
padding: 0 24px;
}
/* HEADER */
header {
padding: 48px 0 40px;
border-bottom: 1px solid var(--border);
}
.logo {
font-size: 11px;
font-weight: 700;
letter-spacing: 0.2em;
text-transform: uppercase;
margin-bottom: 4px;
}
.tagline {
font-size: 11px;
color: var(--text-secondary);
letter-spacing: 0.05em;
}
/* INPUT SECTION */
.input-section {
padding: 48px 0;
border-bottom: 1px solid var(--border);
}
.input-label {
font-size: 10px;
font-weight: 600;
letter-spacing: 0.15em;
text-transform: uppercase;
color: var(--text-secondary);
margin-bottom: 12px;
display: block;
}
.input-wrapper {
display: flex;
gap: 0;
margin-bottom: 16px;
}
input[type="text"] {
flex: 1;
padding: 16px 20px;
border: 1px solid var(--border);
border-right: none;
font-size: 14px;
font-family: inherit;
background: var(--bg);
color: var(--text);
outline: none;
transition: border-color 0.2s;
}
input[type="text"]:focus {
border-color: var(--text);
}
input[type="text"]::placeholder {
color: #999;
}
.btn {
padding: 16px 32px;
border: 1px solid var(--text);
background: var(--text);
color: var(--bg);
font-size: 11px;
font-weight: 600;
letter-spacing: 0.1em;
text-transform: uppercase;
cursor: pointer;
font-family: inherit;
transition: all 0.2s;
white-space: nowrap;
}
.btn:hover {
background: #333;
}
.btn:active {
transform: scale(0.98);
}
.btn-group {
display: flex;
gap: 8px;
}
.btn-secondary {
background: var(--bg);
color: var(--text);
}
.btn-secondary:hover {
background: var(--bg-secondary);
}
/* OUTLINE BUTTON — standalone outline link or button */
.btn-outline,
.learn-more-btn,
.show-more-btn,
.back-link {
display: inline-block;
padding: 10px 20px;
border: 1px solid var(--border);
background: transparent;
color: var(--text);
font-size: 11px;
font-weight: 600;
letter-spacing: 0.1em;
text-transform: uppercase;
text-decoration: none;
font-family: inherit;
cursor: pointer;
transition: all 0.2s;
}
.btn-outline:hover,
.learn-more-btn:hover,
.show-more-btn:hover,
.back-link:hover {
border-color: var(--text);
background: var(--bg-secondary);
}
/* LOADING */
.loading {
display: none;
padding: 80px 0;
text-align: center;
}
.loading-bar {
width: 48px;
height: 2px;
background: var(--border);
margin: 0 auto 16px;
position: relative;
overflow: hidden;
}
.loading-bar::after {
content: '';
position: absolute;
left: -50%;
width: 50%;
height: 100%;
background: var(--text);
animation: loading 1s ease-in-out infinite;
}
@keyframes loading {
0% { left: -50%; }
100% { left: 100%; }
}
.loading-text {
font-size: 10px;
letter-spacing: 0.15em;
text-transform: uppercase;
color: var(--text-secondary);
}
/* RESULTS */
.results {
display: none;
padding: 48px 0;
}
/* STATUS BANNER */
.status-banner {
padding: 32px;
margin-bottom: 32px;
text-align: center;
}
.status-banner.safe {
background: var(--safe-bg);
border-left: 4px solid var(--safe);
}
.status-banner.danger {
background: var(--danger-bg);
border-left: 4px solid var(--danger);
}
.status-icon {
font-size: 30px;
line-height: 1;
}
.status-banner.safe .status-icon {
color: var(--safe);
}
.status-banner.danger .status-icon {
color: var(--danger);
}
.status-title {
font-size: 28px;
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
}
.status-banner.safe .status-title {
color: var(--safe);
}
.status-banner.danger .status-title {
color: var(--danger);
}
.status-subtitle {
font-size: 11px;
color: var(--text-secondary);
letter-spacing: 0.08em;
text-transform: uppercase;
margin-top: 4px;
}
/* ENSEMBLE SCORE */
.ensemble-score {
display: flex;
align-items: baseline;
justify-content: center;
gap: 4px;
margin: 4px;
}
.status-banner.safe .model-confidence {
color: var(--safe);
}
.status-banner.danger .model-confidence {
color: var(--danger);
}
.ensemble-bar {
width: 100%;
max-width: 360px;
height: 4px;
background: var(--border);
margin: 10px auto 8px;
}
/* ensemble-bar uses .prob-fill for the fill element */
.status-kicker {
font-size: 10px;
font-weight: 600;
letter-spacing: 0.14em;
text-transform: uppercase;
color: var(--text-secondary);
margin-bottom: 10px;
}
.status-headline {
display: inline-flex;
align-items: center;
gap: 12px;
}
.status-headline > div:last-child {
text-align: left;
}
.banner-score-label {
font-size: 10px;
font-weight: 600;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--text-secondary);
}
.banner-score-value {
font-size: 10px;
font-weight: 700;
letter-spacing: 0.04em;
}
.status-banner.safe .banner-score-value {
color: var(--safe);
}
.status-banner.danger .banner-score-value {
color: var(--danger);
}
.banner-score-note {
font-size: 10px;
color: var(--text-secondary);
letter-spacing: 0.08em;
text-transform: uppercase;
margin-bottom: 10px;
}
.status-votes {
font-size: 10px;
color: var(--text-secondary);
letter-spacing: 0.08em;
text-transform: uppercase;
}
/* URL DISPLAY */
.url-display {
padding: 16px 20px;
background: var(--bg-secondary);
font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace;
font-size: 13px;
word-break: break-all;
margin-bottom: 32px;
border-left: 2px solid var(--border);
}
/* SECTION TITLES */
.section-title {
font-size: 10px;
font-weight: 600;
letter-spacing: 0.15em;
text-transform: uppercase;
color: var(--text-secondary);
margin-bottom: 16px;
padding-bottom: 8px;
border-bottom: 1px solid var(--border);
}
/* TABS */
.tabs {
display: flex;
gap: 0;
margin-bottom: 32px;
border-bottom: 1px solid var(--border);
}
.tab {
padding: 12px 24px;
font-size: 11px;
font-weight: 600;
letter-spacing: 0.1em;
text-transform: uppercase;
background: none;
border: none;
border-bottom: 2px solid transparent;
cursor: pointer;
color: var(--text-secondary);
transition: all 0.2s;
font-family: inherit;
margin-bottom: -1px;
}
.tab:hover {
color: var(--text);
}
.tab.active {
color: var(--text);
border-bottom-color: var(--text);
}
.tab-content {
display: none;
}
.tab-content.active {
display: block;
}
/* MODEL CARDS */
.models-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 16px;
margin-bottom: 40px;
}
.model-card {
padding: 24px;
border: 1px solid var(--border);
background: var(--bg);
}
.model-card.safe {
border-left: 3px solid var(--safe);
}
.model-card.danger {
border-left: 3px solid var(--danger);
}
.model-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 16px;
}
.model-name {
font-size: 11px;
font-weight: 600;
letter-spacing: 0.1em;
text-transform: uppercase;
}
.model-prediction {
font-size: 11px;
font-weight: 700;
letter-spacing: 0.05em;
text-transform: uppercase;
padding: 4px 8px;
}
.model-prediction.safe {
color: var(--safe);
background: var(--safe-bg);
}
.model-prediction.danger {
color: var(--danger);
background: var(--danger-bg);
}
.model-confidence {
font-size: 10px;
font-weight: 700;
margin-bottom: 8px;
}
.model-confidence-label {
font-size: 10px;
color: var(--text-secondary);
letter-spacing: 0.1em;
text-transform: uppercase;
}
/* PROBABILITY BAR */
.prob-container {
margin-top: 16px;
}
.prob-row {
display: flex;
align-items: center;
gap: 12px;
margin-bottom: 8px;
}
.prob-label {
font-size: 10px;
text-transform: uppercase;
letter-spacing: 0.05em;
width: 70px;
color: var(--text-secondary);
}
.prob-bar {
flex: 1;
height: 4px;
background: var(--bg-secondary);
position: relative;
}
.prob-fill {
height: 100%;
transition: width 0.5s ease;
}
.prob-fill.safe {
background: var(--safe);
}
.prob-fill.danger {
background: var(--danger);
}
.prob-value {
font-size: 11px;
font-weight: 600;
width: 45px;
text-align: right;
}
/* FEATURES GRID */
.features-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
gap: 8px;
margin-bottom: 32px;
}
.feature-item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 12px 16px;
background: var(--bg-secondary);
border-left: 2px solid var(--border);
font-size: 12px;
transition: border-color 0.2s;
}
.feature-item:hover {
border-left-color: var(--text);
}
.feature-item.highlight-safe {
border-left-color: var(--safe);
background: var(--safe-bg);
}
.feature-item.highlight-danger {
border-left-color: var(--danger);
background: var(--danger-bg);
}
.feature-label {
color: var(--text-secondary);
font-size: 11px;
}
.feature-value {
font-weight: 600;
font-family: 'SF Mono', 'Monaco', monospace;
font-size: 12px;
}
.feature-value.true {
color: var(--safe);
}
.feature-value.false {
color: var(--danger);
}
.show-more-btn { width: 100%; margin-top: 16px; }
[id^="hiddenFeatures-"] {
display: contents;
}
[id^="hiddenFeatures-"].features-hidden {
display: none;
}
/* FOOTER */
footer {
padding: 32px 0;
border-top: 1px solid var(--border);
text-align: center;
}
.footer-text {
font-size: 10px;
color: var(--text-secondary);
letter-spacing: 0.1em;
text-transform: uppercase;
}
.learn-more-btn { margin-top: 16px; padding: 12px 28px; }
/* TAB COUNT BADGE */
.tab-count {
display: inline-block;
background: var(--bg-secondary);
border: 1px solid var(--border);
font-size: 10px;
font-weight: 700;
padding: 1px 6px;
margin-left: 4px;
vertical-align: middle;
}
.tab.active .tab-count {
background: var(--text);
color: var(--bg);
border-color: var(--text);
}
/* FEATURE SPLIT BAR */
.feature-split {
margin-top: 16px;
}
.feature-split-bar {
display: flex;
height: 32px;
overflow: hidden;
border: 1px solid var(--border);
}
.split-url {
background: var(--bg-secondary);
display: flex;
align-items: center;
justify-content: center;
font-size: 10px;
font-weight: 600;
letter-spacing: 0.05em;
text-transform: uppercase;
border-right: 1px solid var(--border);
}
.split-html {
background: var(--text);
color: var(--bg);
display: flex;
align-items: center;
justify-content: center;
font-size: 10px;
font-weight: 600;
letter-spacing: 0.05em;
text-transform: uppercase;
}
/* COMBINED FEATURES TABS */
.combined-features-tabs {
margin-top: 32px;
}
/* ERROR NOTICE */
.error-notice {
font-size: 12px;
color: var(--danger);
padding: 16px 20px;
background: var(--danger-bg);
border-left: 2px solid var(--danger);
margin: 16px 0;
}
/* RESPONSIVE */
@media (max-width: 640px) {
header {
padding: 32px 0;
}
.input-section {
padding: 32px 0;
}
.input-wrapper {
flex-direction: column;
}
input[type="text"] {
border-right: 1px solid var(--border);
border-bottom: none;
}
.btn {
width: 100%;
}
.btn-group {
flex-direction: column;
}
.models-grid {
grid-template-columns: 1fr;
}
.status-title {
font-size: 22px;
}
.status-headline {
gap: 10px;
}
.status-icon {
font-size: 26px;
}
.banner-score-value {
font-size: 14px;
}
}
/* =============================================
MODELS PAGE
============================================= */
/* MODELS PAGE - HEADER */
.models-page header {
display: flex;
justify-content: space-between;
align-items: flex-end;
}
.header-left {
display: flex;
flex-direction: column;
}
.logo a {
color: var(--text);
text-decoration: none;
}
.logo a:hover {
opacity: 0.7;
}
.back-link { padding: 8px 16px; }
/* PAGE TITLE */
.page-title-section {
padding: 48px 0;
border-bottom: 1px solid var(--border);
}
.page-title {
font-size: 28px;
font-weight: 700;
letter-spacing: 0.02em;
margin-bottom: 8px;
}
.page-description {
font-size: 13px;
color: var(--text-secondary);
line-height: 1.6;
max-width: 640px;
}
/* SECTION */
.section {
padding: 40px 0;
border-bottom: 1px solid var(--border);
}
.section:last-child {
border-bottom: none;
}
.section-subtitle {
font-size: 13px;
color: var(--text-secondary);
margin-bottom: 24px;
line-height: 1.5;
}
/* COMPARISON TABLE */
.comparison-table {
width: 100%;
border-collapse: collapse;
font-size: 13px;
margin-bottom: 24px;
}
.comparison-table th {
text-align: left;
padding: 12px 16px;
font-size: 10px;
font-weight: 600;
letter-spacing: 0.12em;
text-transform: uppercase;
color: var(--text-secondary);
border-bottom: 2px solid var(--border);
white-space: nowrap;
}
.comparison-table td {
padding: 12px 16px;
border-bottom: 1px solid var(--border);
}
.comparison-table tr:hover td {
background: var(--bg-secondary);
}
.comparison-table .model-name-cell {
font-weight: 600;
font-size: 12px;
}
.comparison-table .best {
color: var(--safe);
font-weight: 700;
}
/* METRIC CARDS */
.metrics-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
gap: 16px;
margin-bottom: 32px;
}
.metric-card {
padding: 20px;
border: 1px solid var(--border);
text-align: center;
}
.metric-value {
font-size: 28px;
font-weight: 700;
margin-bottom: 4px;
}
.metric-label {
font-size: 10px;
color: var(--text-secondary);
letter-spacing: 0.1em;
text-transform: uppercase;
}
.metric-value.highlight {
color: var(--safe);
}
/* MODEL DETAIL CARDS */
.model-detail {
margin-bottom: 40px;
padding: 32px;
border: 1px solid var(--border);
border-left: 3px solid var(--accent);
}
.model-detail-header {
display: flex;
justify-content: space-between;
align-items: flex-start;
margin-bottom: 24px;
flex-wrap: wrap;
gap: 12px;
}
.model-detail-name {
font-size: 16px;
font-weight: 700;
letter-spacing: 0.02em;
}
.model-detail-type {
font-size: 10px;
font-weight: 600;
letter-spacing: 0.1em;
text-transform: uppercase;
color: var(--text-secondary);
padding: 4px 10px;
border: 1px solid var(--border);
}
/* CONFUSION MATRIX */
.confusion-matrix {
display: inline-grid;
grid-template-columns: auto auto auto;
gap: 0;
margin: 16px 0;
font-size: 13px;
}
.cm-header {
padding: 8px 20px;
font-size: 10px;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--text-secondary);
text-align: center;
}
.cm-cell {
padding: 16px 24px;
text-align: center;
font-weight: 700;
font-size: 14px;
font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace;
border: 1px solid var(--border);
}
.cm-tp { background: var(--safe-bg); color: var(--safe); }
.cm-tn { background: var(--safe-bg); color: var(--safe); }
.cm-fp { background: var(--danger-bg); color: var(--danger); }
.cm-fn { background: var(--danger-bg); color: var(--danger); }
.cm-label {
padding: 8px 16px;
font-size: 10px;
font-weight: 600;
letter-spacing: 0.08em;
text-transform: uppercase;
color: var(--text-secondary);
display: flex;
align-items: center;
justify-content: center;
}
/* FEATURES LIST */
.features-list {
display: grid;
grid-template-columns: 1fr;
gap: 4px;
margin-top: 16px;
}
.feature-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px 16px;
background: var(--bg-secondary);
font-size: 12px;
}
.feature-row:nth-child(even) {
background: var(--bg);
}
.feature-rank {
font-size: 10px;
color: var(--text-secondary);
font-weight: 600;
width: 24px;
flex-shrink: 0;
}
.feature-name {
flex: 1;
font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace;
font-size: 11px;
}
.feature-importance {
font-weight: 700;
font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace;
font-size: 11px;
text-align: right;
width: 70px;
flex-shrink: 0;
}
.importance-bar-bg {
flex: 1;
max-width: 120px;
height: 4px;
background: var(--border);
margin: 0 12px;
flex-shrink: 0;
}
.importance-bar-fill {
height: 100%;
background: var(--text);
}
/* HYPERPARAMS */
.params-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 8px;
}
.param-item {
display: flex;
justify-content: space-between;
padding: 10px 16px;
background: var(--bg-secondary);
font-size: 12px;
}
.param-key {
color: var(--text-secondary);
font-size: 11px;
}
.param-value {
font-weight: 600;
font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace;
font-size: 11px;
}
/* PIPELINE DIAGRAM */
.pipeline {
display: flex;
margin: 24px 0;
counter-reset: step;
}
.pipeline-step {
flex: 1;
display: flex;
align-items: center;
gap: 10px;
padding: 10px 12px;
border: 1px solid var(--border);
border-right: none;
font-size: 11px;
font-weight: 600;
letter-spacing: 0.05em;
text-transform: uppercase;
background: var(--bg);
position: relative;
}
.pipeline-step:last-child { border-right: 1px solid var(--border); }
/* Arrow connector between steps */
.pipeline-step:not(:last-child)::after {
content: '\2192';
position: absolute;
right: -4px;
top: 50%;
transform: translate(50%, -50%);
font-size: 11px;
color: var(--text-secondary);
background: var(--bg);
z-index: 1;
padding: 2px 0;
line-height: 1;
}
.pipeline-step .step-number {
width: 22px;
height: 22px;
display: flex;
align-items: center;
justify-content: center;
border-radius: 50%;
background: var(--text);
color: var(--bg);
font-size: 11px;
font-weight: 700;
flex-shrink: 0;
line-height: 1;
}
/* COLLAPSIBLE TOGGLE */
.collapsible-toggle {
cursor: pointer;
display: flex;
align-items: center;
user-select: none;
}
.collapsible-toggle:hover {
color: var(--text);
}
.toggle-icon {
margin-left: auto;
font-size: 16px;
font-weight: 400;
color: var(--text-secondary);
transition: transform 0.2s;
flex-shrink: 0;
width: 20px;
text-align: center;
line-height: 1;
}
.collapsible-content {
display: none;
padding-top: 8px;
}
.collapsible-content.open {
display: block;
}
/* FEATURE GRID */
.feature-count {
font-weight: 400;
color: var(--text-secondary);
letter-spacing: 0.05em;
margin-left: 8px;
}
.feature-category-label {
font-size: 12px;
font-weight: 700;
letter-spacing: 0.04em;
margin: 24px 0 10px;
color: var(--text);
}
.feature-category-label:first-of-type {
margin-top: 0;
}
.feature-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
gap: 6px;
}
.feature-chip {
position: relative;
padding: 8px 12px;
font-family: 'SF Mono', 'Monaco', 'Inconsolata', monospace;
font-size: 11px;
background: var(--bg-secondary);
border: 1px solid var(--border);
cursor: default;
transition: all 0.15s;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.feature-chip:hover {
border-color: var(--text);
background: var(--bg);
overflow: visible;
}
.feature-chip:hover::after {
content: attr(data-tip);
position: absolute;
bottom: calc(100% + 10px);
left: 50%;
transform: translateX(-50%);
padding: 12px 16px;
background: var(--text);
color: var(--bg);
font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
font-size: 12px;
line-height: 1.5;
white-space: normal;
width: max-content;
max-width: 300px;
z-index: 1000;
pointer-events: none;
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.2);
}
.feature-chip:hover::before {
content: '';
position: absolute;
bottom: calc(100% + 4px);
left: 50%;
transform: translateX(-50%);
border: 6px solid transparent;
border-top-color: var(--text);
z-index: 1000;
pointer-events: none;
}
/* SUBSECTION SPACER */
.subsection {
margin-top: 24px;
}
/* TABLE SCROLL WRAPPER */
.table-scroll {
overflow-x: auto;
margin-bottom: 32px;
}
/* INSIGHT CARDS (comparison tab) */
.insights-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
gap: 16px;
}
.insight-card {
padding: 20px;
border: 1px solid var(--border);
}
.insight-card.insight-safe { border-left: 3px solid var(--safe); }
.insight-card.insight-accent { border-left: 3px solid var(--accent); }
.insight-label {
font-size: 11px;
font-weight: 600;
letter-spacing: 0.1em;
text-transform: uppercase;
margin-bottom: 8px;
}
.insight-title {
font-size: 16px;
font-weight: 700;
margin-bottom: 4px;
}
.insight-desc {
font-size: 12px;
color: var(--text-secondary);
}
/* MODELS PAGE RESPONSIVE */
@media (max-width: 640px) {
.models-page header {
flex-direction: column;
align-items: flex-start;
gap: 16px;
}
.page-title {
font-size: 22px;
}
.comparison-table {
font-size: 11px;
}
.comparison-table th,
.comparison-table td {
padding: 8px 10px;
}
.metrics-grid {
grid-template-columns: repeat(2, 1fr);
}
.model-detail {
padding: 20px;
}
.pipeline {
flex-wrap: wrap;
}
.pipeline-step {
flex: 1 1 40%;
border-right: 1px solid var(--border);
margin: -0.5px;
}
.pipeline-step:not(:last-child)::after { display: none; }
.confusion-matrix {
font-size: 11px;
}
.cm-cell {
padding: 12px 16px;
font-size: 12px;
}
.feature-grid {
grid-template-columns: repeat(2, 1fr);
}
}