Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/cookies.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--color-primary: #3B7DD8;
--color-primary: #2D63B0;
--color-navy: #1A2D50;
--color-navy-dark: #0F1A30;
--color-bg: #F4F7FA;
Expand Down
2 changes: 1 addition & 1 deletion docs/datenschutz.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--color-primary: #3B7DD8;
--color-primary: #2D63B0;
--color-navy: #1A2D50;
--color-navy-dark: #0F1A30;
--color-bg: #F4F7FA;
Expand Down
2 changes: 1 addition & 1 deletion docs/impressum.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
<style>
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
:root {
--color-primary: #3B7DD8;
--color-primary: #2D63B0;
--color-navy: #1A2D50;
--color-navy-dark: #0F1A30;
--color-bg: #F4F7FA;
Expand Down
32 changes: 16 additions & 16 deletions docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
--color-primary: #3B7DD8;
--color-primary-hover: #2E6BC0;
--color-primary: #2D63B0;
--color-primary-hover: #1F4E8C;
--color-accent: #D4883E;
--color-navy: #1A2D50;
--color-navy-dark: #0F1A30;
Expand Down Expand Up @@ -183,15 +183,15 @@
position: absolute;
inset: 0;
background-image:
linear-gradient(rgba(59, 125, 216, 0.03) 1px, transparent 1px),
linear-gradient(90deg, rgba(59, 125, 216, 0.03) 1px, transparent 1px);
linear-gradient(rgba(45, 99, 176, 0.03) 1px, transparent 1px),
linear-gradient(90deg, rgba(45, 99, 176, 0.03) 1px, transparent 1px);
background-size: 48px 48px;
pointer-events: none;
}
.hero-orb { position: absolute; border-radius: 50%; pointer-events: none; }
.hero-orb-1 {
width: 600px; height: 600px;
background: radial-gradient(circle, rgba(59, 125, 216, 0.08) 0%, transparent 70%);
background: radial-gradient(circle, rgba(45, 99, 176, 0.08) 0%, transparent 70%);
top: -200px; right: -150px;
animation: floatOrb 20s ease-in-out infinite;
}
Expand All @@ -203,7 +203,7 @@
}
.hero-orb-3 {
width: 250px; height: 250px;
background: radial-gradient(circle, rgba(59, 125, 216, 0.06) 0%, transparent 70%);
background: radial-gradient(circle, rgba(45, 99, 176, 0.06) 0%, transparent 70%);
top: 40%; left: 15%;
animation: pulse 8s ease-in-out infinite;
}
Expand All @@ -223,7 +223,7 @@
height: 80px;
width: auto;
margin-bottom: 24px;
filter: drop-shadow(0 4px 16px rgba(59, 125, 216, 0.3));
filter: drop-shadow(0 4px 16px rgba(45, 99, 176, 0.3));
animation: heroFadeIn 0.8s ease-out both;
}
.hero h1 {
Expand Down Expand Up @@ -277,9 +277,9 @@
.btn-primary {
background: var(--color-primary);
color: #fff;
box-shadow: 0 4px 14px rgba(59, 125, 216, 0.35);
box-shadow: 0 4px 14px rgba(45, 99, 176, 0.35);
}
.btn-primary:hover { background: var(--color-primary-hover); text-decoration: none; transform: translateY(-2px); box-shadow: 0 6px 20px rgba(59, 125, 216, 0.4); }
.btn-primary:hover { background: var(--color-primary-hover); text-decoration: none; transform: translateY(-2px); box-shadow: 0 6px 20px rgba(45, 99, 176, 0.4); }
.btn-ghost {
background: transparent;
color: #fff;
Expand Down Expand Up @@ -367,7 +367,7 @@
display: flex;
align-items: center;
justify-content: center;
background: rgba(59, 125, 216, 0.08);
background: rgba(45, 99, 176, 0.08);
border-radius: 10px;
}
.why-card h4 { font-size: 0.95rem; font-weight: 700; margin-bottom: 4px; }
Expand All @@ -387,9 +387,9 @@
transition: box-shadow 0.3s, transform 0.3s, border-color 0.3s;
}
.feature-card:hover {
box-shadow: 0 8px 30px rgba(59, 125, 216, 0.12);
box-shadow: 0 8px 30px rgba(45, 99, 176, 0.12);
transform: translateY(-4px);
border-color: rgba(59, 125, 216, 0.2);
border-color: rgba(45, 99, 176, 0.2);
}
.feature-icon {
width: 48px; height: 48px;
Expand All @@ -400,7 +400,7 @@
font-size: 1.5rem;
margin-bottom: 14px;
}
.feature-icon-blue { background: rgba(59, 125, 216, 0.1); }
.feature-icon-blue { background: rgba(45, 99, 176, 0.1); }
.feature-icon-amber { background: rgba(212, 136, 62, 0.1); }
.feature-icon-green { background: rgba(34, 197, 94, 0.1); }
.feature-icon-purple { background: rgba(139, 92, 246, 0.1); }
Expand Down Expand Up @@ -455,7 +455,7 @@
transition: all 0.25s;
}
.tab-btn:hover { background: rgba(255,255,255,0.12); color: #fff; }
.tab-btn.active { background: var(--color-primary); color: #fff; box-shadow: 0 2px 10px rgba(59, 125, 216, 0.3); }
.tab-btn.active { background: var(--color-primary); color: #fff; box-shadow: 0 2px 10px rgba(45, 99, 176, 0.3); }

.tab-panels { position: relative; }
.tab-panel {
Expand Down Expand Up @@ -583,7 +583,7 @@
background: var(--color-primary);
color: #fff;
border-color: var(--color-primary);
box-shadow: 0 2px 10px rgba(59, 125, 216, 0.3);
box-shadow: 0 2px 10px rgba(45, 99, 176, 0.3);
}
.install-tab-btn .tab-badge {
font-size: 0.65rem;
Expand All @@ -594,7 +594,7 @@
letter-spacing: 0.3px;
}
.install-tab-btn.active .tab-badge { background: rgba(255,255,255,0.25); color: #fff; }
.install-tab-btn:not(.active) .tab-badge { background: rgba(59, 125, 216, 0.1); color: var(--color-primary); }
.install-tab-btn:not(.active) .tab-badge { background: rgba(45, 99, 176, 0.1); color: var(--color-primary); }
.install-panel {
display: none;
max-width: 600px;
Expand Down
30 changes: 0 additions & 30 deletions e2e/tests/phase4-accessibility.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,18 +55,8 @@ test.describe('Phase 4 accessibility (axe-core)', () => {
);
await page.goto('/login');

// The brand `--color-primary: #3B7DD8` on light backgrounds
// (and white-on-primary in CTAs) sits at ~3.8 / 4.1 contrast
// ratios — close to but below the WCAG-AA 4.5 threshold for
// text. Tightening the brand palette is a design pass scoped
// for after 0.9.0; tracked in #38. Disable just the
// `color-contrast` rule so the gate still catches the
// structurally-critical violations (missing labels, broken
// ARIA, broken keyboard nav, …) which is what this gate is
// really for.
const results = await new AxeBuilder({ page })
.withTags(['wcag2a', 'wcag2aa'])
.disableRules(['color-contrast'])
.analyze();
const blocking = results.violations.filter(
(v) => v.impact === 'critical' || v.impact === 'serious',
Expand All @@ -87,18 +77,8 @@ test.describe('Phase 4 accessibility (axe-core)', () => {
);
await page.goto('/sso-error?code=idp.unreachable');

// The brand `--color-primary: #3B7DD8` on light backgrounds
// (and white-on-primary in CTAs) sits at ~3.8 / 4.1 contrast
// ratios — close to but below the WCAG-AA 4.5 threshold for
// text. Tightening the brand palette is a design pass scoped
// for after 0.9.0; tracked in #38. Disable just the
// `color-contrast` rule so the gate still catches the
// structurally-critical violations (missing labels, broken
// ARIA, broken keyboard nav, …) which is what this gate is
// really for.
const results = await new AxeBuilder({ page })
.withTags(['wcag2a', 'wcag2aa'])
.disableRules(['color-contrast'])
.analyze();
const blocking = results.violations.filter(
(v) => v.impact === 'critical' || v.impact === 'serious',
Expand Down Expand Up @@ -140,18 +120,8 @@ test.describe('Phase 4 accessibility (axe-core)', () => {
await page.goto('/welcome');
await page.waitForLoadState('networkidle');

// The brand `--color-primary: #3B7DD8` on light backgrounds
// (and white-on-primary in CTAs) sits at ~3.8 / 4.1 contrast
// ratios — close to but below the WCAG-AA 4.5 threshold for
// text. Tightening the brand palette is a design pass scoped
// for after 0.9.0; tracked in #38. Disable just the
// `color-contrast` rule so the gate still catches the
// structurally-critical violations (missing labels, broken
// ARIA, broken keyboard nav, …) which is what this gate is
// really for.
const results = await new AxeBuilder({ page })
.withTags(['wcag2a', 'wcag2aa'])
.disableRules(['color-contrast'])
.analyze();
const blocking = results.violations.filter(
(v) => v.impact === 'critical' || v.impact === 'serious',
Expand Down
6 changes: 3 additions & 3 deletions frontend/src/assets/styles/main.css
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
/* RoboScope Global Styles */
:root {
/* Primary: Steel Blue (RoboScope brand) */
--color-primary: #3B7DD8;
--color-primary-dark: #2A5FA8;
--color-primary: #2D63B0;
--color-primary-dark: #1F4E8C;
--color-primary-light: #7BABEA;
--color-primary-lighter: #B3D1F5;
--color-primary-bg: #EBF3FD;
Expand All @@ -24,7 +24,7 @@
--color-warning-bg: #FEF3C7;
--color-danger: #DC3545;
--color-danger-bg: #FEE2E2;
--color-info: #3B7DD8;
--color-info: #2D63B0;
--color-info-bg: #EBF3FD;

/* Backgrounds */
Expand Down
10 changes: 5 additions & 5 deletions frontend/src/components/ai/SpecEditor.vue
Original file line number Diff line number Diff line change
Expand Up @@ -1389,7 +1389,7 @@ watch(() => props.content, (newContent) => {

.tab-btn:hover {
color: var(--color-text);
background: rgba(59, 125, 216, 0.05);
background: rgba(45, 99, 176, 0.05);
}

.tab-btn.active {
Expand Down Expand Up @@ -1556,7 +1556,7 @@ watch(() => props.content, (newContent) => {
.form-input:focus {
outline: none;
border-color: var(--color-primary);
box-shadow: 0 0 0 2px rgba(59, 125, 216, 0.15);
box-shadow: 0 0 0 2px rgba(45, 99, 176, 0.15);
}

.form-textarea {
Expand Down Expand Up @@ -1675,7 +1675,7 @@ watch(() => props.content, (newContent) => {
font-size: 11px;
color: var(--color-text-muted);
padding: 1px 8px;
background: rgba(59, 125, 216, 0.1);
background: rgba(45, 99, 176, 0.1);
border-radius: 8px;
}

Expand Down Expand Up @@ -1876,7 +1876,7 @@ watch(() => props.content, (newContent) => {
}

.step-btn.active {
background: rgba(59, 125, 216, 0.1);
background: rgba(45, 99, 176, 0.1);
border-color: var(--color-primary);
color: var(--color-primary);
}
Expand Down Expand Up @@ -1948,7 +1948,7 @@ watch(() => props.content, (newContent) => {

.library-dropdown-item:hover,
.library-dropdown-item.active {
background: rgba(59, 125, 216, 0.08);
background: rgba(45, 99, 176, 0.08);
}

.library-name {
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/components/debug/DebugPanel.vue
Original file line number Diff line number Diff line change
Expand Up @@ -313,7 +313,7 @@ function truncate(s: string, max = 200): string {
gap: 14px;
padding: 10px 14px;
background: var(--color-primary-bg, #dbeafe);
border: 1px solid var(--color-primary, #3B7DD8);
border: 1px solid var(--color-primary, #2D63B0);
border-radius: 8px;
}
.debug-panel__line-number {
Expand All @@ -334,7 +334,7 @@ function truncate(s: string, max = 200): string {
.debug-panel__line-value {
font-size: 32px;
font-weight: 700;
color: var(--color-primary, #3B7DD8);
color: var(--color-primary, #2D63B0);
font-variant-numeric: tabular-nums;
}
.debug-panel__line-meta {
Expand Down
Loading