* { margin: 0; padding: 0; box-sizing: border-box; }
body { font-family: -apple-system, BlinkMacSystemFont, ‚Segoe UI‘, Roboto, sans-serif; background: #0f1117; color: #e2e8f0; min-height: 100vh; }
.header { background: linear-gradient(135deg, #1a1f35 0%, #0f1117 100%); border-bottom: 1px solid #2d3748; padding: 24px 32px; }
.header h1 { font-size: 24px; font-weight: 700; color: #7dd3fc; }
.header .subtitle { font-size: 13px; color: #94a3b8; margin-top: 4px; }
.container { max-width: 960px; margin: 0 auto; padding: 24px 32px; }
.priority-high { border-left: 4px solid #f87171; }
.priority-medium { border-left: 4px solid #fbbf24; }
.priority-low { border-left: 4px solid #4ade80; }
.rec-card { background: #1a1f2e; border: 1px solid #2d3748; border-radius: 8px; padding: 20px; margin-bottom: 16px; }
.rec-card h3 { font-size: 15px; font-weight: 600; margin-bottom: 8px; }
.rec-card p { font-size: 13px; color: #94a3b8; line-height: 1.6; }
.rec-card .impact { font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; margin-top: 8px; }
.badge-high { color: #f87171; }
.badge-medium { color: #fbbf24; }
.badge-low { color: #4ade80; }
.section { margin-bottom: 32px; }
.section h2 { font-size: 16px; font-weight: 600; color: #7dd3fc; margin-bottom: 16px; padding-bottom: 8px; border-bottom: 1px solid #2d3748; }
.summary-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 16px; margin-bottom: 32px; }
.card { background: #1a1f2e; border: 1px solid #2d3748; border-radius: 12px; padding: 20px; }
.card .label { font-size: 12px; text-transform: uppercase; letter-spacing: 0.5px; color: #94a3b8; margin-bottom: 8px; }
.card .value { font-size: 28px; font-weight: 700; }
.ok { color: #4ade80; }
.warn { color: #fbbf24; }
.err { color: #f87171; }
.footer { text-align: center; padding: 24px; color: #475569; font-size: 12px; border-top: 1px solid #1e293b; margin-top: 32px; }
a { color: #7dd3fc; }
table { width: 100%; border-collapse: collapse; }
th { text-align: left; font-size: 11px; text-transform: uppercase; letter-spacing: 0.5px; color: #64748b; padding: 10px 12px; border-bottom: 1px solid #2d3748; }
td { padding: 12px; font-size: 13px; border-bottom: 1px solid #1e293b; }
🎯 DataGate.ch — Optimization Recommendations
Reviewed: June 4, 2026
🔴 High Priority
1. Consolidate & Defer JavaScript (TTFB)
Homepage loads 11 separate script files. Bundle critical JS and defer non-critical scripts. This is the single biggest win — reducing render-blocking resources could cut TTFB by 200-300ms.
2. Fix Broken Image Links (404s)
3 image files in /uploads/2026/04/ return 404. While not affecting performance directly, 404s waste crawl budget and hurt SEO. Replace with valid images or remove references.
3. SSL Certificate Renewal
Certificate expires Aug 14, 2026 (79 days). Let’s Encrypt auto-renewal should be configured. Verify certbot or hosting auto-renewal is active to prevent downtime.
🟡 Medium Priority
4. Implement Image Optimization
9 images on homepage. Convert to WebP format (30% smaller), implement lazy loading for below-fold images, and add width/height attributes to prevent layout shift.
5. Strengthen Cache Headers
MasterDash loads in 77ms (excellent caching). Homepage at 558ms could benefit from stronger Cache-Control headers for static assets. Set max-age=31536000 for versioned assets.
6. Preload Critical Resources
Add <link rel=“preload“> for critical CSS and fonts. This tells the browser to fetch high-priority resources earlier in the page load cycle.
🟢 Low Priority
7. Consolidate CSS Files
4 CSS files on homepage. Combine into a single minified file to reduce HTTP requests. Consider critical CSS inlining for above-fold content.
8. Add Resource Hints
Add dns-prefetch and preconnect hints for third-party domains (fonts, analytics). Reduces DNS lookup time for external resources.
Quick Wins Checklist
| Action | Effort | Impact | Status |
|---|---|---|---|
| Renew SSL certificate verification | Low | Critical | ⏳ Pending |
| Fix 3 broken image links | Low | High | ⏳ Pending |
| Add cache headers to nginx config | Low | Medium | ⏳ Pending |
| Add resource hints (preconnect) | Low | Low | ⏳ Pending |
| Bundle & defer JS | Medium | High | ⏳ Pending |
| Convert images to WebP | Medium | Medium | ⏳ Pending |
