3 Commits
Author SHA1 Message Date
Lago ab41dd927e Remove public emoji UI and unify booking accent 2026-07-11 12:43:42 +02:00
Lago 70c0918ce6 Merge pull request 'feat: remove 24/7 support mention per Marco's request' (#6) from feature/remove-24-7-support into main
Reviewed-on: #6
2026-06-19 13:33:52 +02:00
Lago ff41ed120f feat: remove 24/7 support mention per Marco's request
- Removed '24/7 Support' stat from hero-stats section in frontend/index.html
- Updated SEO-IMPLEMENTATION-SUMMARY.md to drop 24/7 reference from Accessibility messaging
- Existing test (marco-changes.spec.js) already validates this change
2026-06-19 13:06:51 +02:00
13 changed files with 92 additions and 15 deletions
+1
View File
@@ -0,0 +1 @@
https://Lago:3aa251da1ae9baed184c38dacd54efc58c98cfa8@git.lago.dev
Binary file not shown.
Binary file not shown.
Binary file not shown.
+10
View File
@@ -2,6 +2,16 @@
A compact field guide for anyone (human or AI) making changes to this stack. Skim this first.
## 0. Operating mode for agents
When working in this repository, act as an orchestrator rather than a single-threaded implementer:
1. Always make a short plan before changing code or configuration.
2. Delegate both targeted exploration and targeted implementation work to local models when available; the current default is Qwen 3.6 27B.
3. Do not treat delegation as optional for substantive work: research, code changes, refactors, and test updates should be routed through an agent first, then reviewed by the orchestrator.
4. Review delegated output critically, then apply, refine, or reject the result yourself.
5. Keep final responsibility for correctness, verification, and repo consistency in the orchestrating agent.
---
## 1. The deployment model
+1 -1
View File
@@ -206,7 +206,7 @@ Before going live, verify:
1. **Premium Quality**: "Handverlesene Premium-Sportwagen"
2. **Transparency**: "Faire Kaution, transparent, sofort startklar"
3. **Accessibility**: "24/7 Support, Vollkasko, kein Überziehen"
3. **Accessibility**: "Vollkasko, kein Überziehen"
4. **Local Expertise**: "Die beste Sportwagenvermietung in der Steiermark"
These messages should be reinforced across:
+5 -1
View File
@@ -54,7 +54,11 @@
<img class="logo-icon" src="/images/MC-Cars-Logo.svg" alt="MC Cars Logo" onerror="this.style.display='none'" />
<span>MC Cars</span>
</a>
<button class="menu-toggle" aria-label="Menü"></button>
<button class="menu-toggle" type="button" aria-label="Menü">
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
</button>
<nav class="main-nav" aria-label="Hauptnavigation">
<a href="/#fahrzeuge" data-i18n="navCars">Fahrzeuge</a>
<a href="/#stimmen" data-i18n="navReviews">Stimmen</a>
+5 -1
View File
@@ -51,7 +51,11 @@
<img class="logo-icon" src="/images/MC-Cars-Logo.svg" alt="MC Cars Logo" onerror="this.style.display='none'" />
<span>MC Cars</span>
</a>
<button class="menu-toggle" aria-label="Menü"></button>
<button class="menu-toggle" type="button" aria-label="Menü">
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
</button>
<nav class="main-nav" aria-label="Hauptnavigation">
<a href="/#fahrzeuge" data-i18n="navCars">Fahrzeuge</a>
<a href="/#stimmen" data-i18n="navReviews">Stimmen</a>
+5 -1
View File
@@ -51,7 +51,11 @@
<img class="logo-icon" src="/images/MC-Cars-Logo.svg" alt="MC Cars Logo" onerror="this.style.display='none'" />
<span>MC Cars</span>
</a>
<button class="menu-toggle" aria-label="Menü"></button>
<button class="menu-toggle" type="button" aria-label="Menü">
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
</button>
<nav class="main-nav" aria-label="Hauptnavigation">
<a href="/#fahrzeuge" data-i18n="navCars">Fahrzeuge</a>
<a href="/#stimmen" data-i18n="navReviews">Stimmen</a>
+22 -7
View File
@@ -109,7 +109,11 @@
<span>MC Cars</span>
</a>
<button class="menu-toggle" aria-label="Menü"></button>
<button class="menu-toggle" type="button" aria-label="Menü">
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
</button>
<nav class="main-nav" aria-label="Hauptnavigation">
<a href="#fahrzeuge" data-i18n="navCars">Fahrzeuge</a>
@@ -136,7 +140,6 @@
<div class="hero-stats">
<div><strong data-i18n="statDeposit">Faire Kaution</strong><span>Fair Deposit</span></div>
<div><strong id="statCarsCount"></strong><span id="statCarsLabel" data-i18n="statCar">Fahrzeug</span></div>
<div><strong>24/7</strong><span data-i18n="statSupport">Support</span></div>
</div>
</div>
</section>
@@ -215,7 +218,7 @@
<div class="bpf-main">
<!-- Step 1: Vehicle & Time -->
<div class="bpf-panel" id="bpfStep1">
<h3 class="bpf-panel-title">🚗 <span data-i18n="stepVehicleTime">Fahrzeug & Zeitraum</span></h3>
<h3 class="bpf-panel-title"><span data-i18n="stepVehicleTime">Fahrzeug & Zeitraum</span></h3>
<div class="bpf-field">
<label for="bpfCar" id="bpfCarLabel" data-i18n="bpfVehicle">Fahrzeug</label>
@@ -283,7 +286,7 @@
<!-- Step 2: Contact -->
<div class="bpf-panel" id="bpfStep2" style="display:none;">
<h3 class="bpf-panel-title">📋 <span data-i18n="stepContact">Kontaktdaten</span></h3>
<h3 class="bpf-panel-title"><span data-i18n="stepContact">Kontaktdaten</span></h3>
<div class="bpf-field">
<label data-i18n="fieldName">Name</label>
@@ -312,13 +315,19 @@
<!-- Step 3: ID Verification -->
<div class="bpf-panel" id="bpfStep3" style="display:none;">
<h3 class="bpf-panel-title">🔐 <span data-i18n="stepVerification">ID-Verifizierung</span></h3>
<h3 class="bpf-panel-title"><span data-i18n="stepVerification">ID-Verifizierung</span></h3>
<p class="muted" style="margin-bottom:1.5rem;">Bitte laden Sie einen gültigen Ausweis sowie einen aktuellen Lohnzettel / Gehaltsnachweis hoch.</p>
<div class="bpf-field">
<label data-i18n="bpfIdUpload">Ausweis / Führerschein *</label>
<div class="bpf-upload-box" id="uploadId">
<span class="bpf-upload-icon"></span>
<span class="bpf-upload-icon" aria-hidden="true">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 17V5"></path>
<path d="M7 10l5-5 5 5"></path>
<path d="M5 19h14"></path>
</svg>
</span>
<span data-i18n="bpfClickUpload">Klicken zum Hochladen</span>
<span class="muted" data-i18n="bpfUploadHint">PDF, JPG, PNG (max. 10 MB)</span>
<input type="file" accept="image/*,.pdf" class="bpf-file-input" id="bpfFileId" />
@@ -329,7 +338,13 @@
<div class="bpf-field">
<label data-i18n="bpfIncomeUpload">Lohnzettel / Gehaltsnachweis (optional)</label>
<div class="bpf-upload-box" id="uploadIncome">
<span class="bpf-upload-icon"></span>
<span class="bpf-upload-icon" aria-hidden="true">
<svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M12 17V5"></path>
<path d="M7 10l5-5 5 5"></path>
<path d="M5 19h14"></path>
</svg>
</span>
<span data-i18n="bpfClickUpload">Klicken zum Hochladen</span>
<span class="muted" data-i18n="bpfUploadHint">PDF, JPG, PNG (max. 10 MB)</span>
<input type="file" accept="image/*,.pdf" class="bpf-file-input" id="bpfFileIncome" />
+5 -1
View File
@@ -54,7 +54,11 @@
<img class="logo-icon" src="/images/MC-Cars-Logo.svg" alt="MC Cars Logo" onerror="this.style.display='none'" />
<span>MC Cars</span>
</a>
<button class="menu-toggle" aria-label="Menü"></button>
<button class="menu-toggle" type="button" aria-label="Menü">
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
<span class="menu-toggle-bar" aria-hidden="true"></span>
</button>
<nav class="main-nav" aria-label="Hauptnavigation">
<a href="/#fahrzeuge" data-i18n="navCars">Fahrzeuge</a>
<a href="/#stimmen" data-i18n="navReviews">Stimmen</a>
+28 -3
View File
@@ -189,8 +189,20 @@ section { padding: 5rem 0; }
border: 1px solid var(--line);
color: var(--text);
border-radius: 8px;
padding: 0.4rem 0.75rem;
padding: 0.55rem 0.65rem;
cursor: pointer;
flex-direction: column;
align-items: center;
justify-content: center;
gap: 0.22rem;
}
.menu-toggle-bar {
display: block;
width: 1rem;
height: 2px;
border-radius: 999px;
background: currentColor;
}
/* ---------------- Buttons ---------------- */
@@ -806,12 +818,20 @@ select:focus, input:focus, textarea:focus {
background: var(--accent); color: #0b0c10; border-color: var(--accent);
font-weight: 600;
}
.bpf-step.done { border-color: var(--ok); color: var(--ok); }
.bpf-step.done {
border-color: rgba(196, 138, 66, 0.65);
background: rgba(196, 138, 66, 0.06);
color: var(--accent-strong);
}
.bpf-step-num {
display: inline-grid; place-items: center;
width: 1.5rem; height: 1.5rem; border-radius: 50%;
background: rgba(255,255,255,0.1); font-size: 0.75rem; font-weight: 700;
}
.bpf-step.done .bpf-step-num {
background: rgba(196, 138, 66, 0.16);
color: var(--accent-strong);
}
.bpf-step.active .bpf-step-num { background: rgba(0,0,0,0.2); color: #0b0c10; }
.bpf-step-arrow { color: var(--muted); font-size: 1.2rem; }
@@ -867,7 +887,12 @@ select:focus, input:focus, textarea:focus {
min-height: 120px;
}
.bpf-upload-box:hover { border-color: var(--accent); background: rgba(196,138,66,0.04); }
.bpf-upload-icon { font-size: 1.5rem; }
.bpf-upload-icon {
display: inline-flex;
align-items: center;
justify-content: center;
color: var(--accent-strong);
}
.bpf-file-input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.bpf-file-name { font-size: 0.82rem; color: var(--ok); margin-top: 0.3rem; min-height: 1.2rem; }
+10
View File
@@ -73,6 +73,10 @@ test.describe('Booking Flow End-to-End', () => {
await page.locator('#bpfNext1').click();
await page.waitForTimeout(300);
const completedStep = page.locator('.bpf-step[data-step="1"]');
await expect(completedStep).toHaveClass(/done/);
expect(await completedStep.evaluate((el) => getComputedStyle(el).color)).toBe('rgb(224, 165, 91)');
// Step 2: Fill contact info
await expect(page.locator('#bpfName')).toBeVisible();
await page.locator('#bpfName').fill(testNames[index]);
@@ -101,6 +105,12 @@ test.describe('Booking Flow End-to-End', () => {
await page.waitForLoadState('domcontentloaded');
await page.waitForTimeout(2000);
const panelTitles = await page.locator('.bpf-panel-title').allTextContents();
for (const title of panelTitles) {
expect(title).not.toMatch(/[🚗📋🔐⬆☰]/u);
}
await expect(page.locator('.bpf-upload-icon svg')).toHaveCount(2);
// Booking 1: 1 Tag
await submitBooking(page, 'day', 0);