diff --git a/api/wevia-gemini-ux-apply.sh b/api/wevia-gemini-ux-apply.sh index 00a9a553b..a2e69ed6d 100755 --- a/api/wevia-gemini-ux-apply.sh +++ b/api/wevia-gemini-ux-apply.sh @@ -36,7 +36,7 @@ python3 /var/www/html/api/wgux-parse.py "$OUT/gemini-raw.json" "$OUT/plan.json" # 5) Apply if mode=apply APPLIED="false" if [ "$MODE" = "apply" ] && [ -f "$OUT/plan.json" ]; then - python3 /var/www/html/api/wgux-apply.py "$OUT/plan.json" "$TARGET" "$TS" > "$OUT/apply.log" 2>&1 + sudo python3 /var/www/html/api/wgux-apply.py "$OUT/plan.json" "$TARGET" "$TS" > "$OUT/apply.log" 2>&1 if grep -q "APPLIED" "$OUT/apply.log"; then APPLIED="true" fi diff --git a/api/wgux-apply.py b/api/wgux-apply.py index 4732c90d3..117781581 100755 --- a/api/wgux-apply.py +++ b/api/wgux-apply.py @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -"""Apply Gemini CSS patch with GOLD backup + idempotent marker""" +"""Apply Gemini CSS patch v2 - sudo chattr + verify post-apply""" import sys, json, os, shutil, subprocess, time plan_path = sys.argv[1] @@ -24,8 +24,11 @@ if not css or not safe: marker_start = f"" marker_end = "" -with open(target) as f: - html = f.read() +try: + with open(target) as f: html = f.read() +except PermissionError: + print(f"PERM_READ_FAIL {target}") + sys.exit(1) if 'DOCTRINE-201-GEMINI-APPLY' in html: print("ALREADY") @@ -40,19 +43,46 @@ page = os.path.basename(target).replace('.html', '') backup = f"/var/www/html/vault-gold/opus/{page}.html.doctrine201-apply-{ts}.bak" os.makedirs('/var/www/html/vault-gold/opus', exist_ok=True) shutil.copyfile(target, backup) +size_before = os.path.getsize(target) -# Clean CSS - ensure starts with ' full = f"\n{marker_start}\n{css}\n{marker_end}\n" new_html = html.replace('', full + '', 1) -# Unlock / write / relock -subprocess.run(['chattr', '-i', target], capture_output=True) -with open(target, 'w') as f: - f.write(new_html) -subprocess.run(['chattr', '+i', target], capture_output=True) +# Unlock with SUDO (critical fix) +r1 = subprocess.run(['sudo', 'chattr', '-i', target], capture_output=True, text=True) +unlocked = (r1.returncode == 0) -size = os.path.getsize(target) -print(f"APPLIED size:{size} backup:{backup}") +# Write via sudo tee if direct write fails +try: + with open(target, 'w') as f: + f.write(new_html) + write_ok = True +except PermissionError: + # Fallback via sudo tee + p = subprocess.run(['sudo', 'tee', target], input=new_html, capture_output=True, text=True) + write_ok = (p.returncode == 0) + +# Relock with SUDO +r2 = subprocess.run(['sudo', 'chattr', '+i', target], capture_output=True, text=True) + +# VERIFY post-apply +size_after = os.path.getsize(target) +with open(target) as f: final_html = f.read() +marker_present = 'DOCTRINE-201-GEMINI-APPLY' in final_html + +if marker_present and size_after > size_before: + print(f"APPLIED size_before:{size_before} size_after:{size_after} delta:+{size_after - size_before} backup:{backup}") + sys.exit(0) +else: + print(f"APPLY_FAIL marker:{marker_present} size_before:{size_before} size_after:{size_after} unlocked:{unlocked} write_ok:{write_ok}") + # Restore from backup if corrupted + if not marker_present and size_after != size_before: + subprocess.run(['sudo', 'chattr', '-i', target], capture_output=True) + shutil.copyfile(backup, target) + subprocess.run(['sudo', 'chattr', '+i', target], capture_output=True) + print(f"RESTORED_FROM_BACKUP") + sys.exit(1) diff --git a/api/wgux-parse.py b/api/wgux-parse.py index b8d76e420..a5f453d81 100755 --- a/api/wgux-parse.py +++ b/api/wgux-parse.py @@ -29,8 +29,12 @@ try: # Try to extract css field directly css_m = re.search(r'"css"\s*:\s*"( + + + + diff --git a/products/auditai.html b/products/auditai.html index 445dfebfb..b63bdb611 100644 --- a/products/auditai.html +++ b/products/auditai.html @@ -86,6 +86,354 @@ input,select,textarea{background:#0b0d14!important;color:#e2e8f0!important;borde @media (max-width:768px){#weval-bot-widget{bottom:100px !important;right:16px !important;z-index:10001 !important}#weval-bot-btn{width:48px !important;height:48px !important}#weval-bot-btn svg{width:22px !important;height:22px !important}#footer_banner,.footer-banner,[class*="footer-bandeau"]{z-index:9990 !important}} + + + +
Audit IA — Qualité données temps réel

AuditAI — Audit Qualité Données IA

Auditez la qualité de vos bases de données en temps réel. Scoring, détection d'anomalies, nettoyage et conformité RGPD automatisés.

5M+
Enregistrements audités
99.4%
Précision scoring
< 2 min
Temps d'audit
diff --git a/products/ecosysteme-ia-maroc.html b/products/ecosysteme-ia-maroc.html index e00c8588c..4a9bbdc7f 100644 --- a/products/ecosysteme-ia-maroc.html +++ b/products/ecosysteme-ia-maroc.html @@ -55,33 +55,14 @@ footer{text-align:center;padding:2rem;color:var(--dim);font-size:.8rem;border-to footer a{color:var(--accent)} @media(max-width:768px){.hero h1{font-size:1.8rem}.card-grid{grid-template-columns:1fr}} - - - + + +
-
Ecosysteme IA Maroc 2026
+
Écosystème IA Maroc 2026

Le Maroc, hub IA souverain pour l'EMEA

500 MW de GPU Naver-NVIDIA, Mistral AI en partenariat national, Digital Morocco 2030 — le Maroc attire les géants de l'IA. WEVAL Consulting est positionné au coeur de cette transformation.

@@ -147,13 +128,13 @@ footer a{color:var(--accent)}

WEVAL Consulting — Votre partenaire IA souverain

-

Depuis Casablanca, nous déploiement des solutions IA sur infrastructure GPU dediee. Voici ce qui nous differencie :

+

Depuis Casablanca, nous déployons des solutions IA sur infrastructure GPU dediee. Voici ce qui nous differencie :

@@ -161,10 +142,72 @@ footer a{color:var(--accent)}

Evaluez votre maturite IA

Obtenez un diagnostic gratuit de votre readiness IA souveraine. 15 minutes, zero engagement.

- Demander un diagnostic gratuit → + Demander un diagnostic gratuit →
+ + + + + + + + \ No newline at end of file diff --git a/products/linkedin-manager.html b/products/linkedin-manager.html index ddf13cf6a..d44fb37d1 100644 --- a/products/linkedin-manager.html +++ b/products/linkedin-manager.html @@ -61,6 +61,474 @@ input,select,textarea{background:#0b0d14!important;color:#e2e8f0!important;borde @media (max-width:768px){#weval-bot-widget{bottom:100px !important;right:16px !important;z-index:10001 !important}#weval-bot-btn{width:48px !important;height:48px !important}#weval-bot-btn svg{width:22px !important;height:22px !important}#footer_banner,.footer-banner,[class*="footer-bandeau"]{z-index:9990 !important}} + + + +

📰 LinkedIn Posts Manager

diff --git a/products/roi-calculator.html b/products/roi-calculator.html index f8182e59f..57d5c3134 100644 --- a/products/roi-calculator.html +++ b/products/roi-calculator.html @@ -70,6 +70,451 @@ input,select,textarea{background:#0b0d14!important;color:#e2e8f0!important;borde @media (max-width:768px){#weval-bot-widget{bottom:100px !important;right:16px !important;z-index:10001 !important}#weval-bot-btn{width:48px !important;height:48px !important}#weval-bot-btn svg{width:22px !important;height:22px !important}#footer_banner,.footer-banner,[class*="footer-bandeau"]{z-index:9990 !important}} + + + + diff --git a/proofs/wevia-gemini-apply-v2-20260424-173301/apply.log b/proofs/wevia-gemini-apply-v2-20260424-173301/apply.log new file mode 100644 index 000000000..125315f8c --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173301/apply.log @@ -0,0 +1 @@ +NOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-173301/before.png b/proofs/wevia-gemini-apply-v2-20260424-173301/before.png new file mode 100644 index 000000000..508fc7897 Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-173301/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-173301/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-173301/gemini-raw.json new file mode 100644 index 000000000..6431f27ca --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173301/gemini-raw.json @@ -0,0 +1,34 @@ +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "{\"css\":\"\u003cstyle\u003e\\n:root {\\n --wtp-bg: #0D0D2B; /* Deep dark blue-purple from the background */\\n --wtp-card: #1A1A3F; /* Slightly lighter, for card backgrounds */\\n --wtp-primary: #00E6B8; /* Vibrant teal/green from \\\"WEVAL Arena\\\" and \\\"Connecte\\\" */\\n --wtp-accent: #A060FF; /* Soft purple/pink from \\\"WEVAL Arena\\\" and \\\"Think+Search\\\" */\\n --wtp-text-light: #E0E0E0; /* Light text for contrast */\\n --wtp-text-muted: #A0A0C0; /* Muted text for secondary info */\\n --wtp-border: rgba(255, 255, 255, 0.1); /* Subtle border color */\\n --wtp-shadow-dark: rgba(0, 0, 0, 0.4);\\n --wtp-primary-rgb: 0, 230, 184; /* RGB for primary color, for rgba shadows */\\n --wtp-accent-rgb: 160, 96, 255; /* RGB for accent color */\\n}\\n\\nbody {\\n font-family: 'Inter', sans-serif; /* Assuming Inter or similar modern sans-serif */\\n background-color: var(--wtp-bg);\\n color: var(--wtp-text-light);\\n margin: 0;\\n padding: 0;\\n line-height: 1.6;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n overflow-x: hidden; /* Prevent horizontal scroll */\\n}\\n\\n/* General premium enhancements */\\n* {\\n box-sizing: border-box;\\n}\\n\\nh1, h2, h3, h4, h5, h6 {\\n color: var(--wtp-text-light);\\n font-weight: 600;\\n margin-top: 1.5em;\\n margin-bottom: 0.5em;\\n}\\n\\np {\\n color: var(--wtp-text-muted);\\n}\\n\\na {\\n color: var(--wtp-primary);\\n text-decoration: none;\\n transition: color 0.2s ease;\\n}\\n\\na:hover {\\n color: var(--wtp-accent);\\n}\\n\\n/* Base card style for consistency */\\n.wtp-card-base {\\n background-color: var(--wtp-card);\\n border-radius: 12px;\\n padding: 20px;\\n box-shadow: 0 4px 15px var(--wtp-shadow-dark);\\n border: 1px solid var(--wtp-border);\\n transition: all 0.3s ease;\\n}\\n\\n.wtp-card-base:hover {\\n transform: translateY(-2px);\\n box-shadow: 0 6px 20px var(--wtp-shadow-dark);\\n}\\n\\n/* Specific elements */\\n.wtp-hero-premium {\\n position: relative;\\n padding: 80px 40px;\\n text-align: center;\\n background: linear-gradient(135deg, var(--wtp-bg) 0%, #150F3A 50%, var(--wtp-card) 100%);\\n border-bottom: 1px solid var(--wtp-border);\\n overflow: hidden;\\n z-index: 1;\\n}\\n\\n.wtp-hero-premium::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background: rgba(26, 26, 63, 0.4); /* Semi-transparent overlay for backdrop-filter */\\n backdrop-filter: blur(15px) saturate(150%);\\n -webkit-backdrop-filter: blur(15px) saturate(150%);\\n z-index: -1;\\n}\\n\\n.wtp-hero-premium h1 {\\n font-size: 3.5em;\\n font-weight: 700;\\n background: linear-gradient(90deg, var(--wtp-primary), var(--wtp-accent));\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n margin-bottom: 15px;\\n}\\n\\n.wtp-hero-premium p {\\n font-size: 1.2em;\\n color: var(--wtp-text-muted);\\n max-width: 800px;\\n margin: 0 auto 30px auto;\\n}\\n\\n.wtp-kpi-card {\\n background-color: var(--wtp-card);\\n border-radius: 12px;\\n padding: 20px;\\n box-shadow: 0 4px 15px var(--wtp-shadow-dark);\\n border: 1px solid var(--wtp-border);\\n transition: all 0.3s ease;\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n align-items: flex-start;\\n min-height: 120px;\\n position: relative;\\n overflow: hidden;\\n}\\n\\n.wtp-kpi-card:hover {\\n transform: translateY(-2px);\\n box-shadow: 0 6px 20px var(--wtp-shadow-dark);\\n}\\n\\n.wtp-kpi-card .kpi-value {\\n font-size: 2em;\\n font-weight: 700;\\n color: var(--wtp-primary);\\n margin-bottom: 5px;\\n}\\n\\n.wtp-kpi-card .kpi-label {\\n font-size: 0.9em;\\n color: var(--wtp-text-muted);\\n margin-bottom: 10px;\\n}\\n\\n.wtp-kpi-card .sparkline-svg {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n height: 50px; /* Area for the sparkline */\\n opacity: 0.7;\\n background: linear-gradient(to right, rgba(var(--wtp-primary-rgb),0.3), rgba(var(--wtp-accent-rgb),0.3));\\n /* A simple placeholder for the sparkline visual */\\n clip-path: polygon(0% 80%, 10% 60%, 20% 70%, 30% 50%, 40% 65%, 50% 40%, 60% 55%, 70% 30%, 80% 45%, 90% 20%, 100% 0%, 100% 100%, 0% 100%);\\n}\\n\\n\\n@keyframes pulse {\\n 0% {\\n transform: scale(0.9);\\n box-shadow: 0 0 0 0 rgba(var(--wtp-primary-rgb), 0.7);\\n }\\n 70% {\\n transform: scale(1.1);\\n box-shadow: 0 0 0 15px rgba(var(--wtp-primary-rgb), 0);\\n }\\n 100% {\\n transform: scale(0.9);\\n box-shadow: 0 0 0 0 rgba(var(--wtp-primary-rgb), 0);\\n }\\n}\\n\\n.wtp-status-led {\\n display: inline-block;\\n width: 12px;\\n height: 12px;\\n background-color: var(--wtp-primary);\\n border-radius: 50%;\\n position: relative;\\n animation: pulse 2s infinite;\\n margin-right: 8px;\\n vertical-align: middle;\\n}\\n\\n.wtp-action-btn {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n padding: 12px 25px;\\n border: none;\\n border-radius: 8px;\\n font-size: 1em;\\n font-weight: 600;\\n color: white;\\n cursor: pointer;\\n background: linear-gradient(90deg, var(--wtp-primary) 0%, var(--wtp-accent) 100%);\\n background-size: 200% 100%; /* For gradient shift on hover */\\n transition: all 0.3s ease-in-out;\\n box-shadow: 0 4px 10px rgba(0, 0, 0, 0.3);\\n text-transform: uppercase;\\n letter-spacing: 0.5px;\\n}\\n\\n.wtp-action-btn:hover {\\n background-position: 100% 0; /* Shift gradient */\\n transform: translateY(-3px);\\n box-shadow: 0 8px 20px var(--wtp-shadow-dark);\\n}\\n\\n/* Media Query for mobile */\\n@media (max-width: 768px) {\\n .bot-widget {\\n position: fixed; /* Assuming it's fixed */\\n bottom: 100px !important; /* Adjust for mobile keyboard or bottom navigation */\\n left: 10px;\\n right: 10px;\\n width: auto;\\n z-index: 1000; /* Ensure it's above other content */\\n }\\n\\n .wtp-hero-premium {\\n padding: 60px 20px;\\n }\\n\\n .wtp-hero-premium h1 {\\n font-size: 2.5em;\\n }\\n\\n .wtp-kpi-card {\\n padding: 15px;\\n min-height: 100px;\\n }\\n\\n .wtp-kpi-card .kpi-value {\\n font-size: 1.5em;\\n }\\n\\n .wtp-action-btn {\\n padding: 10px 20px;\\n font-size: 0.9em;\\n }\\n}\\n\\n/* Additional premium touches for general elements */\\n.input-field {\\n background-color: #2A2A50; /* Slightly different background for input */\\n border: 1px solid var(--wtp-border);\\n border-radius: 8px;\\n padding: 10px 15px;\\n color: var(--wtp-text-light);\\n transition: border-color 0.2s ease, box-shadow 0.2s ease;\\n width: 100%; /* Ensure it takes full width of its container */\\n}\\n\\n.input-field:focus {\\n border-color: var(--wtp-primary);\\n outline: none;\\n box-shadow: 0 0 0 3px rgba(var(--wtp-primary-rgb), 0.3);\\n}\\n\\n.sidebar-nav-item {\\n padding: 10px 15px;\\n margin-bottom: 5px;\\n border-radius: 8px;\\n color: var(--wtp-text-muted);\\n transition: background-color 0.2s ease, color 0.2s ease;\\n display: flex;\\n align-items: center;\\n cursor: pointer;\\n}\\n\\n.sidebar-nav-item:hover {\\n background-color: rgba(var(--wtp-primary-rgb), 0.1);\\n color: var(--wtp-text-light);\\n}\\n\\n.sidebar-nav-item.active {\\n background-color: rgba(var(--wtp-primary-rgb), 0.2);\\n color: var(--wtp-primary);\\n font-weight: 600;\\n}\\n\\n.sidebar-nav-item svg {\\n margin-right: 10px;\\n color: var(--wtp-text-muted);\\n transition: color 0.2s ease;\\n}\\n\\n.sidebar-nav-item:hover svg,\\n.sidebar-nav-item.active svg {\\n color: var(--wtp-primary);\\n}\\n\\n/* Example for the top navigation buttons like \\\"Chat\\\", \\\"Master\\\" */\\n.top-nav-btn {\\n background-color: var(--wtp-card);\\n border: 1px solid var(--wtp-border);\\n border-radius: 8px;\\n padding: 8px 15px;\\n color: var(--wtp-text-light);\\n font-weight: 500;\\n transition: all 0.2s ease;\\n cursor: pointer;\\n display: inline-flex;\\n align-items: center;\\n margin-left: 5px;\\n white-space: nowrap; /* Prevent text wrapping */\\n}\\n\\n.top-nav-btn:hover {\\n background-color: rgba(var(--wtp-primary-rgb), 0.2);\\n border-color: var(--wtp-primary);\\n color: var(--wtp-primary);\\n transform: translateY(-1px);\\n}\\n\\n.top-nav-btn.active {\\n background: linear-gradient(45deg, var(--wtp-primary), var(--wtp-accent));\\n border-color: var(--wtp-primary);\\n color: white;\\n box-shadow: 0 2px 8px rgba(var(--wtp-primary-rgb), 0.4);\\n}\\n\\n/* For the \\\"WEVAL Arena\\\" title in the center */\\n.main-title {\\n font-size: 3em;\\n font-weight: 800;\\n background: linear-gradient(90deg, var(--wtp-primary), var(--wtp-accent));\\n -webkit-background-clip: text;\\n -webkit-text-fill-color: transparent;\\n margin-bottom: 10px;\\n text-align: center;\\n}\\n\\n/* For the description text below the title */\\n.main-description {\\n font-size: 1.1em;\\n color: var(--wtp-text-muted);\\n text-align: center;\\n margin-bottom: 40px;\\n max-width: 900px;\\n margin-left: auto;\\n margin-right: auto;\\n}\\n\\n/* For the grid of cards (SWOT, Python, Docker, etc.) */\\n.wtp-grid-card {\\n background-color: var(--wtp-card);\\n border-radius: 12px;\\n padding: 20px;\\n box-shadow: 0 4px 15px var(--wtp-shadow-dark);\\n border: 1px solid var(--wtp-border);\\n transition: all 0.3s ease;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: center;\\n text-align: center;\\n min-height: 120px;\\n padding: 15px;\\n gap: 10px;\\n}\\n\\n.wtp-grid-card:hover {\\n transform: translateY(-2px);\\n box-shadow: 0 6px 20px var(--wtp-shadow-dark);\\n}\\n\\n.wtp-grid-card svg, .wtp-grid-card img {\\n width: 40px;\\n height: 40px;\\n color: var(--wtp-primary); /* Assuming icons are SVG and can inherit color */\\n margin-bottom: 5px;\\n filter: drop-shadow(0 2px 5px rgba(var(--wtp-primary-rgb), 0.3)); /* Subtle icon shadow */\\n}\\n\\n.wtp-grid-card span {\\n font-weight: 500;\\n color: var(--wtp-text-light);\\n}\\n\\n/* For the \\\"SYSTEM LIVE\\\" and \\\"CASCADE PROVIDERS\\\" sections on the right */\\n." + } + ], + "role": "model" + }, + "finishReason": "MAX_TOKENS", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 443, + "candidatesTokenCount": 4000, + "totalTokenCount": 16429, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 185 + }, + { + "modality": "IMAGE", + "tokenCount": 258 + } + ], + "thoughtsTokenCount": 11986 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "OI3rafedH7-wnsEP9baZsAc" +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-173301/parse.log b/proofs/wevia-gemini-apply-v2-20260424-173301/parse.log new file mode 100644 index 000000000..b9692d57b --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173301/parse.log @@ -0,0 +1 @@ +PARSE_ERR 'unicodeescape' codec can't decode byte 0x5c in position 216: \ at end of string diff --git a/proofs/wevia-gemini-apply-v2-20260424-173301/plan.json b/proofs/wevia-gemini-apply-v2-20260424-173301/plan.json new file mode 100644 index 000000000..84ff88adc --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173301/plan.json @@ -0,0 +1 @@ +{"ok": false, "err": "'unicodeescape' codec can't decode byte 0x5c in position 216: \\ at end of string"} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-173301/shot.log b/proofs/wevia-gemini-apply-v2-20260424-173301/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173301/shot.log @@ -0,0 +1 @@ +SHOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-173709/apply.log b/proofs/wevia-gemini-apply-v2-20260424-173709/apply.log new file mode 100644 index 000000000..125315f8c --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173709/apply.log @@ -0,0 +1 @@ +NOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-173709/before.png b/proofs/wevia-gemini-apply-v2-20260424-173709/before.png new file mode 100644 index 000000000..9575857e0 Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-173709/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-173709/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-173709/gemini-raw.json new file mode 100644 index 000000000..1c3ffd105 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173709/gemini-raw.json @@ -0,0 +1,7 @@ +{ + "error": { + "code": 503, + "message": "This model is currently experiencing high demand. Spikes in demand are usually temporary. Please try again later.", + "status": "UNAVAILABLE" + } +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-173709/parse.log b/proofs/wevia-gemini-apply-v2-20260424-173709/parse.log new file mode 100644 index 000000000..5bf09a0b1 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173709/parse.log @@ -0,0 +1 @@ +PARSE_OK False diff --git a/proofs/wevia-gemini-apply-v2-20260424-173709/plan.json b/proofs/wevia-gemini-apply-v2-20260424-173709/plan.json new file mode 100644 index 000000000..c99d00610 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173709/plan.json @@ -0,0 +1,8 @@ +{ + "ok": false, + "err": { + "code": 503, + "message": "This model is currently experiencing high demand. Spikes in demand are usually temporary. Please try again later.", + "status": "UNAVAILABLE" + } +} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-173709/shot.log b/proofs/wevia-gemini-apply-v2-20260424-173709/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173709/shot.log @@ -0,0 +1 @@ +SHOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-173809/apply.log b/proofs/wevia-gemini-apply-v2-20260424-173809/apply.log new file mode 100644 index 000000000..664e893ff --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173809/apply.log @@ -0,0 +1 @@ +APPLIED size:37500 backup:/var/www/html/vault-gold/opus/auditai.html.doctrine201-apply-20260424-173809.bak diff --git a/proofs/wevia-gemini-apply-v2-20260424-173809/before.png b/proofs/wevia-gemini-apply-v2-20260424-173809/before.png new file mode 100644 index 000000000..4995bff94 Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-173809/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-173809/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-173809/gemini-raw.json new file mode 100644 index 000000000..c6e50f37e --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173809/gemini-raw.json @@ -0,0 +1,34 @@ +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "{\"css\":\"\u003cstyle\u003e\\n:root {\\n --wtp-bg: #0A0A0F; /* Very dark blue/black, slightly softer than pure black */\\n --wtp-card: #1A1A22; /* Slightly lighter than bg for cards */\\n --wtp-primary: #E0E0E0; /* Off-white for main text */\\n --wtp-secondary: #A0A0A0; /* Lighter grey for secondary text */\\n --wtp-accent: #FFB74D; /* Orange/gold from the logo/title */\\n --wtp-accent-dark: #FFA000; /* Darker accent for gradients/hover */\\n --wtp-gradient-start: #FFB74D;\\n --wtp-gradient-end: #FF8F00;\\n --wtp-text-shadow: 0 0 10px rgba(255, 183, 77, 0.3); /* Subtle glow for accent text */\\n}\\n\\n/* General body/base styles */\\nbody {\\n font-family: 'Inter', sans-serif; /* A modern sans-serif font */\\n background-color: var(--wtp-bg);\\n color: var(--wtp-primary);\\n margin: 0;\\n padding: 0;\\n line-height: 1.6;\\n overflow-x: hidden; /* Prevent horizontal scroll */\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n/* Typography */\\nh1, h2, h3, h4, h5, h6 {\\n color: var(--wtp-primary);\\n margin-top: 0;\\n margin-bottom: 0.5em;\\n letter-spacing: -0.02em;\\n}\\n\\nh1 {\\n font-size: 3.5em;\\n font-weight: 700;\\n line-height: 1.1;\\n}\\n\\nh1 .accent {\\n color: var(--wtp-accent);\\n text-shadow: var(--wtp-text-shadow);\\n}\\n\\np {\\n margin-bottom: 1em;\\n color: var(--wtp-secondary);\\n}\\n\\n/* Header/Navigation (based on image) */\\n.wtp-header {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n padding: 1.5em 4em;\\n background-color: rgba(10, 10, 15, 0.8); /* Slightly transparent for depth */\\n backdrop-filter: blur(5px);\\n position: sticky;\\n top: 0;\\n z-index: 1000;\\n border-bottom: 1px solid rgba(255, 183, 77, 0.1); /* Subtle accent line */\\n}\\n\\n.wtp-logo {\\n font-size: 1.8em;\\n font-weight: 800;\\n color: var(--wtp-primary);\\n text-decoration: none;\\n}\\n\\n.wtp-logo span {\\n color: var(--wtp-accent);\\n}\\n\\n.wtp-nav ul {\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n display: flex;\\n gap: 2.5em;\\n}\\n\\n.wtp-nav a {\\n color: var(--wtp-secondary);\\n text-decoration: none;\\n font-weight: 500;\\n transition: color 0.3s ease, text-shadow 0.3s ease;\\n}\\n\\n.wtp-nav a:hover {\\n color: var(--wtp-primary);\\n text-shadow: 0 0 5px rgba(255, 255, 255, 0.2);\\n}\\n\\n.wtp-nav .wtp-button {\\n background: linear-gradient(90deg, var(--wtp-gradient-start) 0%, var(--wtp-gradient-end) 100%);\\n color: var(--wtp-bg); /* Dark text on accent button */\\n padding: 0.7em 1.5em;\\n border-radius: 8px;\\n font-weight: 600;\\n transition: transform 0.3s ease, box-shadow 0.3s ease;\\n border: none;\\n cursor: pointer;\\n text-decoration: none;\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n}\\n\\n.wtp-nav .wtp-button:hover {\\n transform: translateY(-2px);\\n box-shadow: 0 8px 20px rgba(255, 183, 77, 0.3);\\n}\\n\\n/* .wtp-hero-premium */\\n.wtp-hero-premium {\\n position: relative;\\n min-height: 80vh;\\n display: flex;\\n flex-direction: column;\\n justify-content: center;\\n align-items: center;\\n text-align: center;\\n padding: 4em 2em;\\n overflow: hidden;\\n background: radial-gradient(circle at center, rgba(10, 10, 15, 0.9) 0%, rgba(0, 0, 0, 0.95) 70%, rgba(0, 0, 0, 1) 100%);\\n}\\n\\n.wtp-hero-premium::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background: url('data:image/svg+xml;utf8,\u003csvg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 100 100\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"\u003e\u003cdefs\u003e\u003cpattern id=\\\"grid\\\" width=\\\"10\\\" height=\\\"10\\\" patternUnits=\\\"userSpaceOnUse\\\"\u003e\u003cpath d=\\\"M 10 0 L 0 0 L 0 10\\\" fill=\\\"none\\\" stroke=\\\"rgba(255, 183, 77, 0.05)\\\" stroke-width=\\\"0.5\\\"/\u003e\u003c/pattern\u003e\u003c/defs\u003e\u003crect width=\\\"100%\\\" height=\\\"100%\\\" fill=\\\"url(%23grid)\\\"/\u003e\u003c/svg\u003e') repeat;\\n opacity: 0.1;\\n z-index: -1;\\n pointer-events: none;\\n backdrop-filter: blur(2px) brightness(0.8); /* Backdrop filter for the hero content */\\n}\\n\\n.wtp-hero-premium h1 {\\n font-size: 4.5em;\\n margin-bottom: 0.3em;\\n line-height: 1.1;\\n text-shadow: 0 0 20px rgba(255, 183, 77, 0.4);\\n}\\n\\n.wtp-hero-premium .subtitle {\\n font-size: 1.2em;\\n color: var(--wtp-secondary);\\n margin-bottom: 2em;\\n}\\n\\n.wtp-hero-premium .tagline {\\n display: inline-block;\\n background: linear-gradient(90deg, var(--wtp-accent-dark) 0%, var(--wtp-accent) 100%);\\n color: var(--wtp-bg);\\n padding: 0.5em 1.5em;\\n border-radius: 25px;\\n font-weight: 600;\\n font-size: 0.9em;\\n margin-bottom: 1.5em;\\n box-shadow: 0 4px 15px rgba(255, 183, 77, 0.4);\\n}\\n\\n/* .wtp-kpi-card */\\n.wtp-kpi-card {\\n background-color: var(--wtp-card);\\n border-radius: 12px;\\n padding: 1.5em;\\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);\\n border: 1px solid rgba(255, 183, 77, 0.1);\\n display: flex;\\n flex-direction: column;\\n gap: 1em;\\n transition: transform 0.3s ease, box-shadow 0.3s ease;\\n}\\n\\n.wtp-kpi-card:hover {\\n transform: translateY(-5px);\\n box-shadow: 0 15px 40px rgba(0, 0, 0, 0.4), 0 0 15px rgba(255, 183, 77, 0.2);\\n}\\n\\n.wtp-kpi-card .kpi-title {\\n font-size: 1.1em;\\n font-weight: 600;\\n color: var(--wtp-primary);\\n}\\n\\n.wtp-kpi-card .kpi-value {\\n font-size: 2.2em;\\n font-weight: 700;\\n color: var(--wtp-accent);\\n text-shadow: var(--wtp-text-shadow);\\n}\\n\\n.wtp-kpi-card .kpi-sparkline {\\n width: 100%;\\n height: 60px; /* Placeholder for SVG sparkline */\\n background: repeating-linear-gradient(\\n 45deg,\\n rgba(255, 183, 77, 0.1),\\n rgba(255, 183, 77, 0.1) 10px,\\n transparent 10px,\\n transparent 20px\\n ); /* Example placeholder pattern */\\n border-radius: 4px;\\n opacity: 0.7;\\n}\\n\\n.wtp-kpi-card .kpi-footer {\\n font-size: 0.9em;\\n color: var(--wtp-secondary);\\n}\\n\\n/* .wtp-status-led */\\n@keyframes pulse {\\n 0% {\\n box-shadow: 0 0 0 0 rgba(255, 183, 77, 0.7);\\n }\\n 70% {\\n box-shadow: 0 0 0 10px rgba(255, 183, 77, 0);\\n }\\n 100% {\\n box-shadow: 0 0 0 0 rgba(255, 183, 77, 0);\\n }\\n}\\n\\n.wtp-status-led {\\n display: inline-block;\\n width: 12px;\\n height: 12px;\\n background-color: var(--wtp-accent);\\n border-radius: 50%;\\n position: relative;\\n animation: pulse 1.5s infinite;\\n vertical-align: middle;\\n margin-right: 8px;\\n}\\n\\n.wtp-status-led.is-offline {\\n background-color: #E74C3C; /* Red for offline */\\n animation: none;\\n}\\n\\n/* .wtp-action-btn */\\n.wtp-action-btn {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n padding: 1em 2.5em;\\n border-radius: 8px;\\n font-size: 1.1em;\\n font-weight: 600;\\n text-decoration: none;\\n color: var(--wtp-bg); /* Dark text on accent button */\\n background: linear-gradient(135deg, var(--wtp-gradient-start) 0%, var(--wtp-gradient-end) 100%);\\n border: none;\\n cursor: pointer;\\n transition: transform 0.3s ease, box-shadow 0.3s ease, background 0.3s ease;\\n position: relative;\\n overflow: hidden;\\n z-index: 1;\\n}\\n\\n.wtp-action-btn::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background: linear-gradient(135deg, var(--wtp-gradient-end) 0%, var(--wtp-gradient-start) 100%);\\n opacity: 0;\\n transition: opacity 0.3s ease;\\n z-index: -1;\\n}\\n\\n.wtp-action-btn:hover {\\n transform: translateY(-5px);\\n box-shadow: 0 12px 25px rgba(255, 183, 77, 0.4);\\n}\\n\\n.wtp-action-btn:hover::before {\\n opacity: 1;\\n}\\n\\n/* Media Query for mobile */\\n@media (max-width: 768px) {\\n .wtp-header {\\n padding: 1em 1.5em;\\n flex-direction: column;\\n gap: 1em;\\n }\\n\\n .wtp-nav ul {\\n flex-direction: column;\\n gap: 1em;\\n text-align: center;\\n }\\n\\n .wtp-hero-premium {\\n min-height: 60vh;\\n padding: 3em 1em;\\n }\\n\\n .wtp-hero-premium h1 {\\n font-size: 2.5em;\\n }\\n\\n .wtp-hero-premium .tagline {\\n font-size: 0.8em;\\n padding: 0.4em 1em;\\n }\\n\\n .wtp-action-btn {\\n padding: 0.8em 2em;\\n font-size: 1em;\\n }\\n\\n /* Anti-overlap for bot-widget */\\n .bot-widget { /* Assuming a class name for the bottom widget */\\n bottom: 100px !important; /* Important to override potential inline styles or other rules */\\n /* Add other positioning if needed, e.g., position: fixed; right: 20px; */\\n }\\n\\n .wtp-kpi-card {\\n padding: 1em;\\n }\\n .wtp-kpi-card .kpi-value {\\n font-size: 1.8em;\\n }\\n}\\n\\n/* General utility classes (optional but good practice) */\\n.text-center {\\n text-align: center;\\n}\\n.mb-4 {\\n margin-bottom: 1.5em;\\n}\\n\u003c/style\u003e\",\"score_before\":70,\"score_after\":95,\"safe\":true}" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 443, + "candidatesTokenCount": 3716, + "totalTokenCount": 8893, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 185 + }, + { + "modality": "IMAGE", + "tokenCount": 258 + } + ], + "thoughtsTokenCount": 4734 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "Zo7raeqcBISznsEP36GS2A0" +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-173809/parse.log b/proofs/wevia-gemini-apply-v2-20260424-173809/parse.log new file mode 100644 index 000000000..927054466 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173809/parse.log @@ -0,0 +1 @@ +PARSE_OK True STOP diff --git a/proofs/wevia-gemini-apply-v2-20260424-173809/plan.json b/proofs/wevia-gemini-apply-v2-20260424-173809/plan.json new file mode 100644 index 000000000..e9346c267 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173809/plan.json @@ -0,0 +1,10 @@ +{ + "ok": true, + "plan": { + "css": "", + "score_before": 70, + "score_after": 95, + "safe": true + }, + "finishReason": "STOP" +} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-173809/shot.log b/proofs/wevia-gemini-apply-v2-20260424-173809/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173809/shot.log @@ -0,0 +1 @@ +SHOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-173928/apply.log b/proofs/wevia-gemini-apply-v2-20260424-173928/apply.log new file mode 100644 index 000000000..04785acdb --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173928/apply.log @@ -0,0 +1 @@ +APPLIED size:20999 backup:/var/www/html/vault-gold/opus/academy-elearning.html.doctrine201-apply-20260424-173928.bak diff --git a/proofs/wevia-gemini-apply-v2-20260424-173928/before.png b/proofs/wevia-gemini-apply-v2-20260424-173928/before.png new file mode 100644 index 000000000..97a300459 Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-173928/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-173928/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-173928/gemini-raw.json new file mode 100644 index 000000000..c4fde7f48 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173928/gemini-raw.json @@ -0,0 +1,34 @@ +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "{\"css\":\"\u003cstyle\u003e\\n /* Premium WEVAL CSS */\\n\\n :root {\\n --wtp-bg: #161625; /* Darker, richer background */\\n --wtp-card: #212135; /* Dark card background */\\n --wtp-primary: #ff4081; /* WEVAL pink/magenta */\\n --wtp-accent: #d81b60; /* Deeper accent pink */\\n --wtp-text-light: #e0e0e0;\\n --wtp-text-muted: #a0a0b0;\\n --wtp-border: rgba(255, 255, 255, 0.08);\\n --wtp-shadow-light: rgba(0, 0, 0, 0.2);\\n --wtp-shadow-strong: rgba(0, 0, 0, 0.4);\\n }\\n\\n /* Global Body & Typography */\\n body {\\n font-family: 'Inter', sans-serif; /* Modern sans-serif font */\\n background-color: var(--wtp-bg);\\n color: var(--wtp-text-light);\\n margin: 0;\\n padding: 0;\\n line-height: 1.6;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n }\\n\\n h1, h2, h3, h4, h5, h6 {\\n color: var(--wtp-text-light);\\n margin-top: 1.5em;\\n margin-bottom: 0.8em;\\n font-weight: 700;\\n }\\n\\n h1 { font-size: 2.8em; }\\n h2 { font-size: 2.2em; }\\n h3 { font-size: 1.8em; }\\n p {\\n font-size: 1.1em;\\n color: var(--wtp-text-muted);\\n }\\n\\n a {\\n color: var(--wtp-primary);\\n text-decoration: none;\\n transition: color 0.3s ease;\\n }\\n a:hover {\\n color: var(--wtp-accent);\\n }\\n\\n /* Layout & Structure */\\n .container {\\n max-width: 1200px;\\n margin: 0 auto;\\n padding: 0 20px;\\n }\\n\\n /* Header & Navigation */\\n header {\\n background-color: var(--wtp-bg);\\n padding: 15px 0;\\n border-bottom: 1px solid var(--wtp-border);\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n position: sticky;\\n top: 0;\\n z-index: 1000;\\n box-shadow: 0 2px 10px var(--wtp-shadow-light);\\n }\\n\\n .weval-logo {\\n font-size: 1.8em;\\n font-weight: 800;\\n color: var(--wtp-text-light);\\n display: flex;\\n align-items: center;\\n }\\n .weval-logo span {\\n color: var(--wtp-primary);\\n margin-left: 5px;\\n }\\n\\n nav ul {\\n list-style: none;\\n margin: 0;\\n padding: 0;\\n display: flex;\\n }\\n nav ul li {\\n margin-left: 30px;\\n }\\n nav ul li a {\\n color: var(--wtp-text-muted);\\n font-weight: 500;\\n font-size: 1.05em;\\n position: relative;\\n }\\n nav ul li a::after {\\n content: '';\\n position: absolute;\\n left: 0;\\n bottom: -5px;\\n width: 0;\\n height: 2px;\\n background-color: var(--wtp-primary);\\n transition: width 0.3s ease;\\n }\\n nav ul li a:hover::after {\\n width: 100%;\\n }\\n nav ul li a.active {\\n color: var(--wtp-primary);\\n }\\n nav ul li a.active::after {\\n width: 100%;\\n }\\n\\n /* .wtp-hero-premium */\\n .wtp-hero-premium {\\n text-align: center;\\n padding: 80px 20px 60px;\\n background: linear-gradient(135deg, var(--wtp-bg) 0%, #2a1a3a 100%); /* Deep purple-ish gradient */\\n position: relative;\\n overflow: hidden;\\n border-bottom: 1px solid var(--wtp-border);\\n }\\n .wtp-hero-premium::before { /* Backdrop effect */\\n content: '';\\n position: absolute;\\n top: -50px;\\n left: -50px;\\n right: -50px;\\n bottom: -50px;\\n background: radial-gradient(circle at 50% 0%, rgba(255, 64, 129, 0.1) 0%, transparent 70%);\\n filter: blur(80px);\\n z-index: 0;\\n opacity: 0.6;\\n }\\n .wtp-hero-premium \u003e * {\\n position: relative;\\n z-index: 1;\\n }\\n\\n .wtp-hero-premium h1 {\\n font-size: 3.5em;\\n color: var(--wtp-primary);\\n margin-bottom: 0.3em;\\n text-shadow: 0 0 15px rgba(255, 64, 129, 0.4);\\n }\\n .wtp-hero-premium h1 .icon {\\n margin-right: 15px;\\n color: var(--wtp-primary);\\n }\\n .wtp-hero-premium p {\\n max-width: 700px;\\n margin: 0.5em auto 2em;\\n font-size: 1.2em;\\n color: var(--wtp-text-muted);\\n }\\n\\n /* KPI Section */\\n .kpi-section {\\n display: flex;\\n justify-content: center;\\n gap: 50px;\\n margin-top: 40px;\\n margin-bottom: 60px;\\n }\\n .kpi-item {\\n text-align: center;\\n }\\n .kpi-item .number {\\n font-size: 3.5em;\\n font-weight: 800;\\n color: var(--wtp-primary);\\n line-height: 1;\\n }\\n .kpi-item .label {\\n font-size: 1em;\\n color: var(--wtp-text-muted);\\n text-transform: uppercase;\\n letter-spacing: 1px;\\n margin-top: 5px;\\n }\\n\\n /* .wtp-kpi-card */\\n .wtp-kpi-card {\\n background-color: var(--wtp-card);\\n border-radius: 12px;\\n padding: 25px;\\n box-shadow: 0 8px 25px var(--wtp-shadow-strong);\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n text-align: center;\\n border: 1px solid var(--wtp-border);\\n transition: transform 0.3s ease, box-shadow 0.3s ease;\\n }\\n .wtp-kpi-card:hover {\\n transform: translateY(-5px);\\n box-shadow: 0 12px 35px var(--wtp-shadow-strong);\\n }\\n .wtp-kpi-card .card-title {\\n font-size: 1.4em;\\n font-weight: 600;\\n color: var(--wtp-text-light);\\n margin-bottom: 15px;\\n }\\n .wtp-kpi-card .card-value {\\n font-size: 2.5em;\\n font-weight: 800;\\n color: var(--wtp-primary);\\n margin-bottom: 10px;\\n }\\n .wtp-kpi-card .sparkline-svg { /* Placeholder for sparkline SVG */\\n width: 100%;\\n height: 60px;\\n margin-top: 15px;\\n background: rgba(255, 255, 255, 0.05);\\n border-radius: 5px;\\n }\\n .wtp-kpi-card .sparkline-svg svg {\\n width: 100%;\\n height: 100%;\\n }\\n\\n /* Catalogue Section */\\n .catalogue-section {\\n background-color: var(--wtp-card);\\n border-radius: 12px;\\n padding: 40px;\\n margin-top: 60px;\\n box-shadow: 0 8px 25px var(--wtp-shadow-strong);\\n border: 1px solid var(--wtp-border);\\n }\\n .catalogue-section h2 {\\n font-size: 2.2em;\\n color: var(--wtp-text-light);\\n display: flex;\\n align-items: center;\\n margin-top: 0;\\n margin-bottom: 15px;\\n }\\n .catalogue-section h2 .icon {\\n margin-right: 15px;\\n color: var(--wtp-primary);\\n }\\n .catalogue-section p {\\n margin-bottom: 30px;\\n font-size: 1.05em;\\n }\\n\\n .module-card {\\n background-color: #2a2a40; /* Slightly different dark background for module */\\n border-radius: 10px;\\n padding: 25px;\\n margin-bottom: 25px;\\n border-left: 5px solid var(--wtp-primary);\\n box-shadow: 0 4px 15px var(--wtp-shadow-light);\\n }\\n .module-card .status {\\n display: flex;\\n align-items: center;\\n font-weight: 600;\\n color: #4CAF50; /* Green for available */\\n margin-bottom: 15px;\\n }\\n .module-card .status .icon {\\n margin-right: 10px;\\n font-size: 1.2em;\\n }\\n .module-card p {\\n font-size: 1em;\\n margin-bottom: 20px;\\n color: var(--wtp-text-muted);\\n }\\n .module-card ul {\\n list-style: none;\\n padding: 0;\\n margin: 0;\\n }\\n .module-card ul li {\\n position: relative;\\n padding-left: 25px;\\n margin-bottom: 10px;\\n color: var(--wtp-text-light);\\n }\\n .module-card ul li::before {\\n content: '•'; /* Custom bullet point */\\n position: absolute;\\n left: 0;\\n color: var(--wtp-primary);\\n font-size: 1.2em;\\n line-height: 1;\\n }\\n\\n /* .wtp-status-led */\\n @keyframes pulse {\\n 0% {\\n transform: scale(0.8);\\n box-shadow: 0 0 0 0 rgba(255, 64, 129, 0.7);\\n }\\n 70% {\\n transform: scale(1);\\n box-shadow: 0 0 0 15px rgba(255, 64, 129, 0);\\n }\\n 100% {\\n transform: scale(0.8);\\n box-shadow: 0 0 0 0 rgba(255, 64, 129, 0);\\n }\\n }\\n .wtp-status-led {\\n display: inline-block;\\n width: 12px;\\n height: 12px;\\n background-color: var(--wtp-primary);\\n border-radius: 50%;\\n animation: pulse 2s infinite;\\n margin-left: 10px; /* Example usage */\\n }\\n\\n /* .wtp-action-btn */\\n .wtp-action-btn {\\n display: inline-block;\\n padding: 14px 30px;\\n border-radius: 8px;\\n font-size: 1.1em;\\n font-weight: 600;\\n color: var(--wtp-text-light);\\n background-image: linear-gradient(45deg, var(--wtp-primary) 0%, var(--wtp-accent) 100%);\\n border: none;\\n cursor: pointer;\\n transition: all 0.3s ease;\\n box-shadow: 0 5px 15px rgba(255, 64, 129, 0.4);\\n text-transform: uppercase;\\n letter-spacing: 0.5px;\\n }\\n .wtp-action-btn:hover {\\n background-image: linear-gradient(45deg, var(--wtp-accent) 0%, var(--wtp-primary) 100%); /* Shift gradient */\\n transform: translateY(-3px);\\n box-shadow: 0 8px 20px rgba(255, 64, 129, 0.6);\\n }\\n .wtp-action-btn:active {\\n transform: translateY(0);\\n box-shadow: 0 3px 10px rgba(255, 64, 129, 0.3);\\n }\\n\\n /* Media Query for Mobile */\\n @media (max-width: 768px) {\\n .container {\\n padding: 0 15px;\\n }\\n\\n header {\\n flex-direction: column;\\n align-items: flex-start;\\n padding-bottom: 10px;\\n }\\n nav ul {\\n margin-top: 15px;\\n flex-wrap: wrap;\\n justify-content: center;\\n }\\n nav ul li {\\n margin: 0 10px 10px 0;\\n }\\n\\n .wtp-hero-premium {\\n padding: 60px 15px 40px;\\n }\\n .wtp-hero-premium h1 {\\n font-size: 2.5em;\\n }\\n .wtp-hero-premium p {\\n font-size: 1em;\\n }\\n\\n .kpi-section {\\n flex-direction: column;\\n gap: 30px;\\n margin-top: 30px;\\n margin-bottom: 40px;\\n }\\n .kpi-item .number {\\n font-size: 2.8em;\\n }\\n\\n .catalogue-section {\\n padding: 30px 20px;\\n margin-top: 40px;\\n }\\n .catalogue-section h2 {\\n font-size: 1.8em;\\n flex-direction: column;\\n align-items: flex-start;\\n }\\n .catalogue-section h2 .icon {\\n margin-bottom: 10px;\\n }\\n\\n .module-card {\\n padding: 20px;\\n }\\n\\n /* Anti-overlap for bot-widget */\\n .bot-widget { /* Assuming a class for a fixed bot widget */\\n bottom: 100px !important; /* Important to override other styles */\\n left: 15px;\\n right: 15px;\\n width: auto;\\n }\\n }\\n\\n /* General elements from the image that need styling */\\n /* Assuming the main title is an h1 in .wtp-hero-premium */\\n /* Assuming the numbers are within .kpi-section .kpi-item */\\n /* Assuming the catalogue is .catalogue-section */\\n /* Assuming the module is .module-card */\\n\\n /* Icons (if using font-awesome or similar) */\\n .fa-graduation-cap, .fa-book, .fa-check-circle {\\n /* Basic styling for icons */\\n font-family: 'Font Awesome 5 Free'; /* Example, adjust as needed */\\n font-weight: 900;\\n }\\n\u003c/style\u003e\",\"score_before\":50,\"score_after\":95,\"safe\":true}" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 443, + "candidatesTokenCount": 4252, + "totalTokenCount": 10453, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 185 + }, + { + "modality": "IMAGE", + "tokenCount": 258 + } + ], + "thoughtsTokenCount": 5758 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "tI7rac3HKcup28oP4f-ryQI" +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-173928/parse.log b/proofs/wevia-gemini-apply-v2-20260424-173928/parse.log new file mode 100644 index 000000000..927054466 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173928/parse.log @@ -0,0 +1 @@ +PARSE_OK True STOP diff --git a/proofs/wevia-gemini-apply-v2-20260424-173928/plan.json b/proofs/wevia-gemini-apply-v2-20260424-173928/plan.json new file mode 100644 index 000000000..17d8c041b --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173928/plan.json @@ -0,0 +1,10 @@ +{ + "ok": true, + "plan": { + "css": "", + "score_before": 50, + "score_after": 95, + "safe": true + }, + "finishReason": "STOP" +} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-173928/shot.log b/proofs/wevia-gemini-apply-v2-20260424-173928/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173928/shot.log @@ -0,0 +1 @@ +SHOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-173943/apply.log b/proofs/wevia-gemini-apply-v2-20260424-173943/apply.log new file mode 100644 index 000000000..8ea84808e --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173943/apply.log @@ -0,0 +1 @@ +APPLIED size:88982 backup:/var/www/html/vault-gold/opus/weval-arena.html.doctrine201-apply-20260424-173943.bak diff --git a/proofs/wevia-gemini-apply-v2-20260424-173943/before.png b/proofs/wevia-gemini-apply-v2-20260424-173943/before.png new file mode 100644 index 000000000..d8d6bf56f Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-173943/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-173943/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-173943/gemini-raw.json new file mode 100644 index 000000000..91cd1fad1 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173943/gemini-raw.json @@ -0,0 +1,34 @@ +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "{\"css\":\"\u003cstyle\u003e\\n /* Base styles for a dark premium theme */\\n :root {\\n --wtp-bg: #0A0A1F; /* Deep dark blue/purple for main background */\\n --wtp-card: #181230; /* Slightly lighter dark purple for cards */\\n --wtp-primary: #00E0C7; /* Teal/Green accent */\\n --wtp-accent: #9C27B0; /* Purple accent */\\n --wtp-text-light: #E0E0E0;\\n --wtp-text-dark: #A0A0A0;\\n --wtp-border: rgba(255, 255, 255, 0.1);\\n --wtp-shadow: rgba(0, 0, 0, 0.3);\\n --wtp-gradient-start: #100C2A;\\n --wtp-gradient-end: #181230;\\n }\\n\\n body {\\n font-family: 'Inter', sans-serif; /* A modern, clean font */\\n background-color: var(--wtp-bg);\\n color: var(--wtp-text-light);\\n margin: 0;\\n padding: 0;\\n line-height: 1.6;\\n overflow-x: hidden; /* Prevent horizontal scroll */\\n }\\n\\n /* Typography for strong hierarchy */\\n h1, h2, h3, h4, h5, h6 {\\n color: var(--wtp-text-light);\\n margin-top: 0;\\n margin-bottom: 0.5em;\\n font-weight: 600;\\n }\\n\\n h1 { font-size: 2.5em; }\\n h2 { font-size: 2em; }\\n h3 { font-size: 1.5em; }\\n p {\\n color: var(--wtp-text-dark);\\n margin-bottom: 1em;\\n }\\n\\n a {\\n color: var(--wtp-primary);\\n text-decoration: none;\\n transition: color 0.3s ease;\\n }\\n a:hover {\\n color: var(--wtp-accent);\\n }\\n\\n /* .wtp-hero-premium */\\n .wtp-hero-premium {\\n position: relative;\\n padding: 80px 40px;\\n text-align: center;\\n background: linear-gradient(135deg, var(--wtp-gradient-start) 0%, var(--wtp-gradient-end) 100%);\\n border-bottom: 1px solid var(--wtp-border);\\n overflow: hidden;\\n z-index: 1;\\n }\\n\\n .wtp-hero-premium::before {\\n content: '';\\n position: absolute;\\n top: -50px;\\n left: -50px;\\n right: -50px;\\n bottom: -50px;\\n background: url('data:image/svg+xml;utf8,\u003csvg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 100 100\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"\u003e\u003cdefs\u003e\u003cpattern id=\\\"grid\\\" width=\\\"10\\\" height=\\\"10\\\" patternUnits=\\\"userSpaceOnUse\\\"\u003e\u003cpath d=\\\"M 10 0 L 0 0 L 0 10\\\" fill=\\\"none\\\" stroke=\\\"rgba(255,255,255,0.05)\\\" stroke-width=\\\"0.5\\\"/\u003e\u003c/pattern\u003e\u003c/defs\u003e\u003crect width=\\\"100%\\\" height=\\\"100%\\\" fill=\\\"url(#grid)\\\"/\u003e\u003c/svg\u003e') repeat;\\n opacity: 0.1;\\n z-index: -1;\\n filter: blur(2px); /* Subtle blur for the grid pattern */\\n }\\n\\n .wtp-hero-premium::after {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n backdrop-filter: blur(5px); /* Premium backdrop blur effect */\\n -webkit-backdrop-filter: blur(5px);\\n z-index: 0;\\n background-color: rgba(0, 0, 0, 0.2); /* Slight overlay for blur visibility */\\n }\\n\\n .wtp-hero-premium \u003e * {\\n position: relative;\\n z-index: 2; /* Ensure content is above backdrop */\\n }\\n\\n /* .wtp-kpi-card */\\n .wtp-kpi-card {\\n background-color: var(--wtp-card);\\n border-radius: 12px;\\n padding: 20px;\\n margin: 15px;\\n box-shadow: 0 8px 20px var(--wtp-shadow);\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n min-height: 120px;\\n border: 1px solid var(--wtp-border);\\n transition: transform 0.3s ease, box-shadow 0.3s ease;\\n }\\n\\n .wtp-kpi-card:hover {\\n transform: translateY(-5px);\\n box-shadow: 0 12px 25px rgba(0, 0, 0, 0.5);\\n }\\n\\n .wtp-kpi-card .kpi-title {\\n font-size: 1.1em;\\n font-weight: 500;\\n color: var(--wtp-text-light);\\n margin-bottom: 10px;\\n }\\n\\n .wtp-kpi-card .kpi-value {\\n font-size: 2em;\\n font-weight: 700;\\n color: var(--wtp-primary);\\n margin-bottom: 5px;\\n }\\n\\n .wtp-kpi-card .kpi-sparkline {\\n width: 100%;\\n height: 40px;\\n /* Placeholder for SVG sparkline */\\n background: linear-gradient(to right, var(--wtp-primary) 0%, var(--wtp-accent) 100%);\\n mask-image: url('data:image/svg+xml;utf8,\u003csvg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 100 20\\\"\u003e\u003cpath fill=\\\"none\\\" stroke=\\\"black\\\" stroke-width=\\\"2\\\" d=\\\"M0 15 Q 25 5, 50 15 T 100 5\\\"/\u003e\u003c/svg\u003e'); /* Example mask for a line graph shape */\\n -webkit-mask-image: url('data:image/svg+xml;utf8,\u003csvg xmlns=\\\"http://www.w3.org/2000/svg\\\" viewBox=\\\"0 0 100 20\\\"\u003e\u003cpath fill=\\\"none\\\" stroke=\\\"black\\\" stroke-width=\\\"2\\\" d=\\\"M0 15 Q 25 5, 50 15 T 100 5\\\"/\u003e\u003c/svg\u003e');\\n mask-size: 100% 100%;\\n -webkit-mask-size: 100% 100%;\\n mask-repeat: no-repeat;\\n -webkit-mask-repeat: no-repeat;\\n }\\n\\n /* .wtp-status-led */\\n @keyframes pulse {\\n 0% {\\n transform: scale(0.8);\\n opacity: 0.7;\\n }\\n 50% {\\n transform: scale(1.1);\\n opacity: 1;\\n }\\n 100% {\\n transform: scale(0.8);\\n opacity: 0.7;\\n }\\n }\\n\\n .wtp-status-led {\\n display: inline-block;\\n width: 12px;\\n height: 12px;\\n border-radius: 50%;\\n background-color: var(--wtp-primary); /* Default to primary, can be overridden */\\n box-shadow: 0 0 0 0 rgba(0, 224, 199, 0.7); /* Shadow for pulse effect */\\n animation: pulse 1.5s infinite ease-in-out;\\n margin-right: 8px;\\n vertical-align: middle;\\n }\\n\\n .wtp-status-led.offline {\\n background-color: #FF4D4D; /* Red for offline */\\n box-shadow: 0 0 0 0 rgba(255, 77, 77, 0.7);\\n }\\n\\n .wtp-status-led.warning {\\n background-color: #FFD700; /* Yellow for warning */\\n box-shadow: 0 0 0 0 rgba(255, 215, 0, 0.7);\\n }\\n\\n /* .wtp-action-btn */\\n .wtp-action-btn {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n padding: 12px 25px;\\n border: none;\\n border-radius: 8px;\\n font-size: 1em;\\n font-weight: 600;\\n cursor: pointer;\\n color: var(--wtp-text-light);\\n background: linear-gradient(45deg, var(--wtp-primary) 0%, var(--wtp-accent) 100%);\\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);\\n transition: all 0.3s ease;\\n text-transform: uppercase;\\n letter-spacing: 0.5px;\\n position: relative;\\n overflow: hidden;\\n }\\n\\n .wtp-action-btn:hover {\\n transform: translateY(-3px);\\n box-shadow: 0 8px 20px rgba(0, 0, 0, 0.4);\\n background: linear-gradient(45deg, var(--wtp-accent) 0%, var(--wtp-primary) 100%); /* Invert gradient on hover */\\n }\\n\\n .wtp-action-btn:active {\\n transform: translateY(0);\\n box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);\\n }\\n\\n .wtp-action-btn::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: -100%;\\n width: 100%;\\n height: 100%;\\n background: rgba(255, 255, 255, 0.1);\\n transition: all 0.4s ease;\\n transform: skewX(-20deg);\\n }\\n\\n .wtp-action-btn:hover::before {\\n left: 100%;\\n }\\n\\n /* General card/panel styling for consistency */\\n .wtp-panel {\\n background-color: var(--wtp-card);\\n border-radius: 12px;\\n padding: 20px;\\n margin-bottom: 20px;\\n box-shadow: 0 4px 15px var(--wtp-shadow);\\n border: 1px solid var(--wtp-border);\\n }\\n\\n .wtp-panel-header {\\n font-size: 1.2em;\\n font-weight: 600;\\n color: var(--wtp-text-light);\\n margin-bottom: 15px;\\n display: flex;\\n align-items: center;\\n gap: 10px;\\n }\\n\\n /* Specific elements from the image */\\n .sidebar {\\n background-color: var(--wtp-card);\\n border-right: 1px solid var(--wtp-border);\\n padding: 20px;\\n min-width: 250px;\\n height: 100vh;\\n position: sticky;\\n top: 0;\\n left: 0;\\n overflow-y: auto;\\n }\\n\\n .sidebar-item {\\n padding: 10px 15px;\\n margin-bottom: 5px;\\n border-radius: 8px;\\n color: var(--wtp-text-dark);\\n display: flex;\\n align-items: center;\\n gap: 10px;\\n transition: background-color 0.3s ease, color 0.3s ease;\\n }\\n\\n .sidebar-item:hover, .sidebar-item.active {\\n background-color: rgba(0, 224, 199, 0.1); /* Using rgba from --wtp-primary */\\n color: var(--wtp-primary);\\n }\\n\\n .sidebar-item.active {\\n border-left: 3px solid var(--wtp-primary);\\n padding-left: 12px; /* Adjust padding for border */\\n }\\n\\n .top-nav {\\n background-color: var(--wtp-card);\\n border-bottom: 1px solid var(--wtp-border);\\n padding: 10px 20px;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n }\\n\\n .top-nav-item {\\n padding: 8px 15px;\\n border-radius: 6px;\\n color: var(--wtp-text-dark);\\n transition: background-color 0.3s ease, color 0.3s ease;\\n }\\n\\n .top-nav-item:hover, .top-nav-item.active {\\n background-color: rgba(0, 224, 199, 0.15); /* Using rgba from --wtp-primary */\\n color: var(--wtp-primary);\\n }\\n\\n .search-input {\\n background-color: rgba(255, 255, 255, 0.05);\\n border: 1px solid var(--wtp-border);\\n border-radius: 8px;\\n padding: 10px 15px;\\n color: var(--wtp-text-light);\\n width: 100%;\\n box-sizing: border-box;\\n transition: border-color 0.3s ease;\\n }\\n\\n .search-input::placeholder {\\n color: var(--wtp-text-dark);\\n }\\n\\n .search-input:focus {\\n outline: none;\\n border-color: var(--wtp-primary);\\n box-shadow: 0 0 0 2px rgba(0, 224, 199, 0.3); /* Using rgba from --wtp-primary */\\n }\\n\\n /* Chat input at the bottom */\\n .chat-input-container {\\n background-color: var(--wtp-card);\\n border-top: 1px solid var(--wtp-border);\\n padding: 15px 20px;\\n display: flex;\\n align-items: center;\\n gap: 10px;\\n position: sticky;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n z-index: 100;\\n }\\n\\n .chat-input {\\n flex-grow: 1;\\n background-color: rgba(255, 255, 255, 0.05);\\n border: 1px solid var(--wtp-border);\\n border-radius: 25px;\\n padding: 10px 20px;\\n color: var(--wtp-text-light);\\n font-size: 1em;\\n }\\n\\n .chat-input:focus {\\n outline: none;\\n border-color: var(--wtp-primary);\\n }\\n\\n .send-button {\\n background: linear-gradient(45deg, var(--wtp-primary), var(--wtp-accent));\\n border: none;\\n border-radius: 50%;\\n width: 40px;\\n height: 40px;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n cursor: pointer;\\n transition: transform 0.2s ease, box-shadow 0.2s ease;\\n }\\n\\n .send-button:hover {\\n transform: scale(1.05);\\n box-shadow: 0 0 10px rgba(0, 224, 199, 0.5); /* Using rgba from --wtp-primary */\\n }\\n\\n .send-button:active {\\n transform: scale(0.95);\\n }\\n\\n .send-button svg {\\n fill: var(--wtp-text-light);\\n width: 20px;\\n height: 20px;\\n }\\n\\n /* Media Query for mobile 768px */\\n @media (max-width: 768px) {\\n .wtp-hero-premium {\\n padding: 60px 20px;\\n }\\n\\n .wtp-kpi-card {\\n margin: 10px;\\n padding: 15px;\\n }\\n\\n /* Assuming .bot-widget is the chat-input-container or similar bottom bar */\\n .chat-input-container {\\n bottom: 100px; /* Anti-overlap for mobile navigation/system UI */\\n padding: 10px 15px;\\n }\\n\\n .sidebar {\\n width: 100%;\\n height: auto;\\n position: relative;\\n border-right: none;\\n border-bottom: 1px solid var(--wtp-border);\\n }\\n\\n .top-nav {\\n flex-wrap: wrap;\\n justify-content: center;\\n }\\n\\n .top-nav-item {\\n margin: 5px;\\n }\\n }\\n\u003c/style\u003e\",\"score_before\":75,\"score_after\":92,\"safe\":true}" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 443, + "candidatesTokenCount": 4562, + "totalTokenCount": 15537, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 185 + }, + { + "modality": "IMAGE", + "tokenCount": 258 + } + ], + "thoughtsTokenCount": 10532 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "xI7rae_cJtTikdUP8cuXqA8" +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-173943/parse.log b/proofs/wevia-gemini-apply-v2-20260424-173943/parse.log new file mode 100644 index 000000000..927054466 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173943/parse.log @@ -0,0 +1 @@ +PARSE_OK True STOP diff --git a/proofs/wevia-gemini-apply-v2-20260424-173943/plan.json b/proofs/wevia-gemini-apply-v2-20260424-173943/plan.json new file mode 100644 index 000000000..fde155b49 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173943/plan.json @@ -0,0 +1,10 @@ +{ + "ok": true, + "plan": { + "css": "", + "score_before": 75, + "score_after": 92, + "safe": true + }, + "finishReason": "STOP" +} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-173943/shot.log b/proofs/wevia-gemini-apply-v2-20260424-173943/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-173943/shot.log @@ -0,0 +1 @@ +SHOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-174047/apply.log b/proofs/wevia-gemini-apply-v2-20260424-174047/apply.log new file mode 100644 index 000000000..269f3d7bc --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-174047/apply.log @@ -0,0 +1 @@ +APPLIED size:23505 backup:/var/www/html/vault-gold/opus/ecosysteme-ia-maroc.html.doctrine201-apply-20260424-174047.bak diff --git a/proofs/wevia-gemini-apply-v2-20260424-174047/before.png b/proofs/wevia-gemini-apply-v2-20260424-174047/before.png new file mode 100644 index 000000000..25f467bf4 Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-174047/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-174047/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-174047/gemini-raw.json new file mode 100644 index 000000000..de0e7d45a --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-174047/gemini-raw.json @@ -0,0 +1,34 @@ +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "{\"css\":\"\u003cstyle\u003e\\n/* WEVAL Premium CSS */\\n\\n/* Root Variables */\\n:root {\\n --wtp-bg: #0A0B11; /* Very dark blue background */\\n --wtp-card: #1A1B22; /* Slightly lighter dark for cards */\\n --wtp-primary: #E0E0E0; /* Off-white for main text */\\n --wtp-secondary: #A0A0A0; /* Secondary text color */\\n --wtp-accent: #00FF80; /* Vibrant green accent */\\n --wtp-gradient-start: #00FF80;\\n --wtp-gradient-end: #00C060;\\n --wtp-border-radius: 12px;\\n --wtp-transition-speed: 0.3s ease;\\n}\\n\\n/* Base Styles */\\nbody {\\n font-family: 'Inter', sans-serif; /* Modern sans-serif font */\\n background-color: var(--wtp-bg);\\n color: var(--wtp-primary);\\n margin: 0;\\n padding: 0;\\n line-height: 1.6;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\nh1, h2, h3, h4, h5, h6 {\\n color: var(--wtp-primary);\\n margin-top: 0;\\n margin-bottom: 0.5em;\\n font-weight: 700;\\n}\\n\\np {\\n color: var(--wtp-secondary);\\n margin-bottom: 1em;\\n}\\n\\na {\\n color: var(--wtp-accent);\\n text-decoration: none;\\n transition: color var(--wtp-transition-speed);\\n}\\n\\na:hover {\\n color: var(--wtp-gradient-end);\\n}\\n\\n/* Premium Hero Section */\\n.wtp-hero-premium {\\n position: relative;\\n padding: 100px 20px;\\n text-align: center;\\n overflow: hidden;\\n background: radial-gradient(circle at top center, rgba(0, 255, 128, 0.1) 0%, rgba(10, 11, 17, 0) 50%),\\n linear-gradient(180deg, rgba(10, 11, 17, 0.8) 0%, var(--wtp-bg) 100%);\\n z-index: 1;\\n}\\n\\n.wtp-hero-premium::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background: url('data:image/svg+xml;utf8,\u003csvg width=\\\"100%\\\" height=\\\"100%\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"\u003e\u003cdefs\u003e\u003cpattern id=\\\"grid\\\" width=\\\"40\\\" height=\\\"40\\\" patternUnits=\\\"userSpaceOnUse\\\"\u003e\u003cpath d=\\\"M 40 0 L 0 0 0 40\\\" fill=\\\"none\\\" stroke=\\\"%231A1B22\\\" stroke-width=\\\"0.5\\\"/\u003e\u003c/pattern\u003e\u003c/defs\u003e\u003crect width=\\\"100%\\\" height=\\\"100%\\\" fill=\\\"url(%23grid)\\\"/\u003e\u003c/svg\u003e') repeat;\\n opacity: 0.1; /* Subtle grid pattern */\\n z-index: -1;\\n}\\n\\n.wtp-hero-premium h1 {\\n font-size: 3.5em;\\n margin-bottom: 0.3em;\\n line-height: 1.1;\\n font-weight: 800;\\n}\\n\\n.wtp-hero-premium p {\\n font-size: 1.2em;\\n max-width: 800px;\\n margin: 0 auto 40px auto;\\n color: var(--wtp-secondary);\\n}\\n\\n/* KPI Card */\\n.wtp-kpi-card {\\n background-color: var(--wtp-card);\\n border: 1px solid rgba(255, 255, 255, 0.08);\\n border-radius: var(--wtp-border-radius);\\n padding: 25px;\\n text-align: center;\\n box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2);\\n transition: transform var(--wtp-transition-speed), box-shadow var(--wtp-transition-speed);\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n min-height: 150px; /* Ensure consistent height */\\n}\\n\\n.wtp-kpi-card:hover {\\n transform: translateY(-5px);\\n box-shadow: 0 12px 25px rgba(0, 0, 0, 0.3), 0 0 15px rgba(0, 255, 128, 0.2);\\n}\\n\\n.wtp-kpi-card .kpi-value {\\n font-size: 2.5em;\\n font-weight: 700;\\n color: var(--wtp-primary);\\n margin-bottom: 10px;\\n}\\n\\n.wtp-kpi-card .kpi-label {\\n font-size: 0.9em;\\n color: var(--wtp-secondary);\\n text-transform: uppercase;\\n letter-spacing: 0.05em;\\n}\\n\\n/* Sparkline SVG Placeholder - as actual data is not provided */\\n.wtp-kpi-card .sparkline-placeholder {\\n width: 100%;\\n height: 40px;\\n margin-top: 15px;\\n background: linear-gradient(90deg, var(--wtp-accent) 0%, rgba(0, 255, 128, 0.3) 100%);\\n border-radius: 4px;\\n opacity: 0.7;\\n position: relative;\\n overflow: hidden;\\n}\\n\\n.wtp-kpi-card .sparkline-placeholder::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0.2) 50%, transparent 100%);\\n transform: translateX(-100%);\\n animation: sparkline-shine 2s infinite linear;\\n}\\n\\n@keyframes sparkline-shine {\\n 0% { transform: translateX(-100%); }\\n 100% { transform: translateX(100%); }\\n}\\n\\n\\n/* Status LED */\\n.wtp-status-led {\\n display: inline-block;\\n width: 12px;\\n height: 12px;\\n background-color: var(--wtp-accent);\\n border-radius: 50%;\\n position: relative;\\n margin-right: 8px;\\n vertical-align: middle;\\n box-shadow: 0 0 0 0 rgba(0, 255, 128, 0.7);\\n animation: wtp-pulse 1.5s infinite cubic-bezier(0.66, 0, 0, 1);\\n}\\n\\n@keyframes wtp-pulse {\\n to {\\n box-shadow: 0 0 0 10px rgba(0, 255, 128, 0);\\n }\\n}\\n\\n/* Action Button */\\n.wtp-action-btn {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n padding: 14px 30px;\\n border-radius: 8px;\\n font-size: 1.1em;\\n font-weight: 600;\\n color: var(--wtp-bg); /* Text color contrasting with green */\\n background: linear-gradient(45deg, var(--wtp-gradient-start), var(--wtp-gradient-end));\\n border: none;\\n cursor: pointer;\\n text-decoration: none;\\n transition: all var(--wtp-transition-speed);\\n box-shadow: 0 5px 15px rgba(0, 255, 128, 0.3);\\n position: relative;\\n overflow: hidden;\\n z-index: 1;\\n}\\n\\n.wtp-action-btn::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background: linear-gradient(45deg, var(--wtp-gradient-end), var(--wtp-gradient-start));\\n opacity: 0;\\n transition: opacity var(--wtp-transition-speed);\\n z-index: -1;\\n}\\n\\n.wtp-action-btn:hover {\\n transform: translateY(-3px);\\n box-shadow: 0 8px 20px rgba(0, 255, 128, 0.5);\\n}\\n\\n.wtp-action-btn:hover::before {\\n opacity: 1;\\n}\\n\\n/* General Layout / Section Styling */\\n.wtp-section-title {\\n font-size: 2.5em;\\n font-weight: 700;\\n text-align: center;\\n margin-bottom: 60px;\\n position: relative;\\n}\\n\\n.wtp-section-title::after {\\n content: '';\\n display: block;\\n width: 80px;\\n height: 4px;\\n background: var(--wtp-accent);\\n margin: 15px auto 0;\\n border-radius: 2px;\\n}\\n\\n.wtp-grid-4-cols {\\n display: grid;\\n grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));\\n gap: 30px;\\n max-width: 1200px;\\n margin: 60px auto;\\n padding: 0 20px;\\n}\\n\\n.wtp-grid-3-cols {\\n display: grid;\\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\\n gap: 30px;\\n max-width: 1200px;\\n margin: 60px auto;\\n padding: 0 20px;\\n}\\n\\n.wtp-card-detail {\\n background-color: var(--wtp-card);\\n border: 1px solid rgba(255, 255, 255, 0.08);\\n border-radius: var(--wtp-border-radius);\\n padding: 30px;\\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.15);\\n transition: transform var(--wtp-transition-speed), box-shadow var(--wtp-transition-speed);\\n}\\n\\n.wtp-card-detail:hover {\\n transform: translateY(-5px);\\n box-shadow: 0 10px 25px rgba(0, 0, 0, 0.25);\\n}\\n\\n.wtp-card-detail .category-tag {\\n display: inline-block;\\n background-color: rgba(0, 255, 128, 0.15);\\n color: var(--wtp-accent);\\n padding: 6px 12px;\\n border-radius: 5px;\\n font-size: 0.8em;\\n font-weight: 600;\\n margin-bottom: 15px;\\n}\\n\\n.wtp-card-detail h3 {\\n font-size: 1.5em;\\n margin-bottom: 10px;\\n}\\n\\n.wtp-card-detail p {\\n font-size: 0.95em;\\n color: var(--wtp-secondary);\\n}\\n\\n/* Specific styling for the 'hub IA souverain' part */\\n.wtp-hero-premium h1 .highlight {\\n color: var(--wtp-accent);\\n}\\n\\n.wtp-section-title .highlight {\\n color: var(--wtp-accent);\\n}\\n\\n/* Media Query for Mobile (768px) */\\n@media (max-width: 768px) {\\n .wtp-hero-premium {\\n padding: 80px 15px;\\n }\\n\\n .wtp-hero-premium h1 {\\n font-size: 2.5em;\\n }\\n\\n .wtp-hero-premium p {\\n font-size: 1em;\\n }\\n\\n .wtp-grid-4-cols, .wtp-grid-3-cols {\\n grid-template-columns: 1fr;\\n padding: 0 15px;\\n }\\n\\n .wtp-kpi-card {\\n padding: 20px;\\n }\\n\\n .wtp-kpi-card .kpi-value {\\n font-size: 2em;\\n }\\n\\n .wtp-action-btn {\\n padding: 12px 25px;\\n font-size: 1em;\\n }\\n\\n /* Anti-overlap for a hypothetical bottom widget */\\n .bot-widget { /* Assuming a class for a bottom fixed widget */\\n bottom: 100px !important; /* Important to override other styles */\\n position: fixed;\\n left: 0;\\n right: 0;\\n width: 100%;\\n background-color: var(--wtp-card);\\n padding: 15px;\\n box-shadow: 0 -5px 15px rgba(0,0,0,0.2);\\n z-index: 1000;\\n }\\n}\\n\\n/* Keyframe for the pulse animation */\\n@keyframes wtp-pulse {\\n 0% {\\n box-shadow: 0 0 0 0 rgba(0, 255, 128, 0.7);\\n }\\n 70% {\\n box-shadow: 0 0 0 10px rgba(0, 255, 128, 0);\\n }\\n 100% {\\n box-shadow: 0 0 0 0 rgba(0, 255, 128, 0);\\n }\\n}\\n\\n\u003c/style\u003e\",\"score_before\":50,\"score_after\":95,\"safe\":true}" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 443, + "candidatesTokenCount": 3721, + "totalTokenCount": 9324, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 185 + }, + { + "modality": "IMAGE", + "tokenCount": 258 + } + ], + "thoughtsTokenCount": 5160 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "CY_rabygEqWH28oPzZPGgQk" +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-174047/parse.log b/proofs/wevia-gemini-apply-v2-20260424-174047/parse.log new file mode 100644 index 000000000..927054466 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-174047/parse.log @@ -0,0 +1 @@ +PARSE_OK True STOP diff --git a/proofs/wevia-gemini-apply-v2-20260424-174047/plan.json b/proofs/wevia-gemini-apply-v2-20260424-174047/plan.json new file mode 100644 index 000000000..b0b2aa1c4 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-174047/plan.json @@ -0,0 +1,10 @@ +{ + "ok": true, + "plan": { + "css": "", + "score_before": 50, + "score_after": 95, + "safe": true + }, + "finishReason": "STOP" +} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-174047/shot.log b/proofs/wevia-gemini-apply-v2-20260424-174047/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-174047/shot.log @@ -0,0 +1 @@ +SHOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-174214/apply.log b/proofs/wevia-gemini-apply-v2-20260424-174214/apply.log new file mode 100644 index 000000000..125315f8c --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-174214/apply.log @@ -0,0 +1 @@ +NOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-174214/before.png b/proofs/wevia-gemini-apply-v2-20260424-174214/before.png new file mode 100644 index 000000000..3b03713df Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-174214/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-174214/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-174214/gemini-raw.json new file mode 100644 index 000000000..1c3ffd105 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-174214/gemini-raw.json @@ -0,0 +1,7 @@ +{ + "error": { + "code": 503, + "message": "This model is currently experiencing high demand. Spikes in demand are usually temporary. Please try again later.", + "status": "UNAVAILABLE" + } +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-174214/parse.log b/proofs/wevia-gemini-apply-v2-20260424-174214/parse.log new file mode 100644 index 000000000..5bf09a0b1 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-174214/parse.log @@ -0,0 +1 @@ +PARSE_OK False diff --git a/proofs/wevia-gemini-apply-v2-20260424-174214/plan.json b/proofs/wevia-gemini-apply-v2-20260424-174214/plan.json new file mode 100644 index 000000000..c99d00610 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-174214/plan.json @@ -0,0 +1,8 @@ +{ + "ok": false, + "err": { + "code": 503, + "message": "This model is currently experiencing high demand. Spikes in demand are usually temporary. Please try again later.", + "status": "UNAVAILABLE" + } +} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-174214/shot.log b/proofs/wevia-gemini-apply-v2-20260424-174214/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-174214/shot.log @@ -0,0 +1 @@ +SHOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-174257/apply.log b/proofs/wevia-gemini-apply-v2-20260424-174257/apply.log new file mode 100644 index 000000000..125315f8c --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-174257/apply.log @@ -0,0 +1 @@ +NOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-174257/before.png b/proofs/wevia-gemini-apply-v2-20260424-174257/before.png new file mode 100644 index 000000000..f10bc4aa8 Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-174257/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-174257/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-174257/gemini-raw.json new file mode 100644 index 000000000..1c3ffd105 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-174257/gemini-raw.json @@ -0,0 +1,7 @@ +{ + "error": { + "code": 503, + "message": "This model is currently experiencing high demand. Spikes in demand are usually temporary. Please try again later.", + "status": "UNAVAILABLE" + } +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-174257/parse.log b/proofs/wevia-gemini-apply-v2-20260424-174257/parse.log new file mode 100644 index 000000000..5bf09a0b1 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-174257/parse.log @@ -0,0 +1 @@ +PARSE_OK False diff --git a/proofs/wevia-gemini-apply-v2-20260424-174257/plan.json b/proofs/wevia-gemini-apply-v2-20260424-174257/plan.json new file mode 100644 index 000000000..c99d00610 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-174257/plan.json @@ -0,0 +1,8 @@ +{ + "ok": false, + "err": { + "code": 503, + "message": "This model is currently experiencing high demand. Spikes in demand are usually temporary. Please try again later.", + "status": "UNAVAILABLE" + } +} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-174257/shot.log b/proofs/wevia-gemini-apply-v2-20260424-174257/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-174257/shot.log @@ -0,0 +1 @@ +SHOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-175348/apply.log b/proofs/wevia-gemini-apply-v2-20260424-175348/apply.log new file mode 100644 index 000000000..68be2ac96 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-175348/apply.log @@ -0,0 +1 @@ +ALREADY diff --git a/proofs/wevia-gemini-apply-v2-20260424-175348/before.png b/proofs/wevia-gemini-apply-v2-20260424-175348/before.png new file mode 100644 index 000000000..c9f4bc869 Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-175348/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-175348/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-175348/gemini-raw.json new file mode 100644 index 000000000..5d34fb0a4 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-175348/gemini-raw.json @@ -0,0 +1,34 @@ +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "{\n \"css\": \"\u003cstyle\u003e\\n :root {\\n --wtp-bg: #0A0B10; /* Very dark background */\\n --wtp-card: #1A1C23; /* Darker grey for cards */\\n --wtp-primary: #F0F0F0; /* Off-white for main text */\\n --wtp-accent: #00E676; /* Vibrant green accent */\\n --wtp-secondary-text: #B0B0B0; /* Lighter grey for secondary text */\\n --wtp-border-color: #2A2D35; /* Subtle border for elements */\\n }\\n\\n body {\\n font-family: 'Inter', sans-serif; /* A modern sans-serif font for premium feel */\\n background-color: var(--wtp-bg);\\n color: var(--wtp-primary);\\n margin: 0;\\n padding: 0;\\n line-height: 1.6;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n }\\n\\n h1, h2, h3, h4, h5, h6 {\\n color: var(--wtp-primary);\\n margin-top: 0;\\n margin-bottom: 0.5em;\\n font-weight: 700;\\n }\\n\\n p {\\n color: var(--wtp-secondary-text);\\n }\\n\\n /* General card styling, matching the image */\\n .wtp-card {\\n background-color: var(--wtp-card);\\n border-radius: 12px;\\n padding: 24px;\\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);\\n border: 1px solid var(--wtp-border-color);\\n transition: transform 0.3s ease, box-shadow 0.3s ease;\\n }\\n\\n .wtp-card:hover {\\n transform: translateY(-5px);\\n box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3);\\n }\\n\\n /* Specific components */\\n .wtp-hero-premium {\\n position: relative;\\n padding: 100px 20px;\\n text-align: center;\\n overflow: hidden;\\n background: radial-gradient(circle at top center, rgba(26, 28, 35, 0.8) 0%, var(--wtp-bg) 70%);\\n }\\n\\n .wtp-hero-premium::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background: linear-gradient(135deg, rgba(0, 230, 118, 0.05) 0%, rgba(0, 0, 0, 0) 50%, rgba(0, 230, 118, 0.05) 100%);\\n pointer-events: none;\\n z-index: 0;\\n backdrop-filter: blur(2px); /* Subtle backdrop filter for a premium feel */\\n -webkit-backdrop-filter: blur(2px);\\n }\\n\\n .wtp-hero-premium \u003e * {\\n position: relative;\\n z-index: 1;\\n }\\n\\n .wtp-hero-premium h1 {\\n font-size: 3.5em;\\n font-weight: 800;\\n margin-bottom: 20px;\\n letter-spacing: -0.03em;\\n }\\n\\n .wtp-hero-premium h1 .highlight {\\n color: var(--wtp-accent);\\n }\\n\\n .wtp-hero-premium p {\\n font-size: 1.2em;\\n max-width: 800px;\\n margin: 0 auto 40px auto;\\n color: var(--wtp-secondary-text);\\n }\\n\\n .wtp-kpi-card {\\n /* Inherits base card styles */\\n background-color: var(--wtp-card);\\n border-radius: 12px;\\n padding: 24px;\\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);\\n border: 1px solid var(--wtp-border-color);\\n transition: transform 0.3s ease, box-shadow 0.3s ease;\\n /* Specific styles */\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n align-items: flex-start;\\n min-height: 120px;\\n }\\n\\n .wtp-kpi-card:hover {\\n transform: translateY(-5px);\\n box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3);\\n }\\n\\n .wtp-kpi-card .kpi-value {\\n font-size: 2.5em;\\n font-weight: 700;\\n color: var(--wtp-primary);\\n margin-bottom: 8px;\\n }\\n\\n .wtp-kpi-card .kpi-label {\\n font-size: 0.9em;\\n color: var(--wtp-secondary-text);\\n }\\n\\n .wtp-kpi-card .sparkline-svg {\\n width: 100%;\\n height: 40px;\\n background: linear-gradient(to right, var(--wtp-accent) 0%, rgba(0, 230, 118, 0.3) 100%); /* Visual placeholder for sparkline SVG */\\n border-radius: 4px;\\n margin-top: 15px;\\n opacity: 0.7;\\n }\\n\\n @keyframes pulse {\\n 0% { transform: scale(0.9); opacity: 0.7; }\\n 50% { transform: scale(1.1); opacity: 1; }\\n 100% { transform: scale(0.9); opacity: 0.7; }\\n }\\n\\n .wtp-status-led {\\n display: inline-block;\\n width: 12px;\\n height: 12px;\\n background-color: var(--wtp-accent);\\n border-radius: 50%;\\n box-shadow: 0 0 0 0 rgba(0, 230, 118, 0.7);\\n animation: pulse 1.5s infinite ease-in-out;\\n margin-right: 8px;\\n vertical-align: middle;\\n }\\n\\n .wtp-action-btn {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n padding: 14px 28px;\\n border-radius: 8px;\\n background: linear-gradient(45deg, var(--wtp-accent) 0%, #00C853 100%); /* Green gradient */\\n color: var(--wtp-bg); /* Dark text on green button */\\n font-size: 1.1em;\\n font-weight: 600;\\n text-decoration: none;\\n border: none;\\n cursor: pointer;\\n transition: all 0.3s ease;\\n box-shadow: 0 5px 15px rgba(0, 230, 118, 0.4);\\n }\\n\\n .wtp-action-btn:hover {\\n transform: translateY(-3px);\\n box-shadow: 0 8px 20px rgba(0, 230, 118, 0.6);\\n background: linear-gradient(45deg, #00C853 0%, var(--wtp-accent) 100%); /* Shift gradient on hover */\\n }\\n\\n /* Example for the 'ÉCOSYSTÈME IA MAROC 2026' badge */\\n .wtp-badge {\\n display: inline-block;\\n background-color: rgba(0, 230, 118, 0.15); /* Light green background */\\n color: var(--wtp-accent);\\n padding: 8px 16px;\\n border-radius: 20px;\\n font-size: 0.85em;\\n font-weight: 600;\\n text-transform: uppercase;\\n letter-spacing: 0.05em;\\n margin-bottom: 20px;\\n border: 1px solid rgba(0, 230, 118, 0.3);\\n }\\n\\n /* Media query for mobile */\\n @media (max-width: 768px) {\\n .wtp-hero-premium {\\n padding: 80px 15px;\\n }\\n\\n .wtp-hero-premium h1 {\\n font-size: 2.5em;\\n }\\n\\n .wtp-hero-premium p {\\n font-size: 1em;\\n }\\n\\n /* Assuming a floating bottom widget */\\n .wtp-bot-widget {\\n position: fixed;\\n bottom: 100px; /* Anti-overlap with potential mobile browser UI */\\n left: 50%;\\n transform: translateX(-50%);\\n width: calc(100% - 40px);\\n max-width: 350px;\\n z-index: 1000;\\n background-color: var(--wtp-card);\\n border-radius: 12px;\\n padding: 15px;\\n box-shadow: 0 -5px 15px rgba(0, 0, 0, 0.3);\\n }\\n }\\n\\n /* Additional styling for elements seen in the image */\\n .wtp-section-title {\\n font-size: 2.5em;\\n font-weight: 700;\\n text-align: left;\\n margin-top: 60px;\\n margin-bottom: 30px;\\n padding-left: 20px;\\n }\\n\\n .wtp-section-title .highlight {\\n color: var(--wtp-accent);\\n }\\n\\n .wtp-grid-container {\\n display: grid;\\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\\n gap: 20px;\\n padding: 0 20px;\\n }\\n\\n .wtp-grid-item {\\n /* Inherits base card styles */\\n background-color: var(--wtp-card);\\n border-radius: 12px;\\n padding: 24px;\\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2);\\n border: 1px solid var(--wtp-border-color);\\n transition: transform 0.3s ease, box-shadow 0.3s ease;\\n }\\n\\n .wtp-grid-item:hover {\\n transform: translateY(-5px);\\n box-shadow: 0 8px 25px rgba(0, 0, 0, 0.3);\\n }\\n\\n .wtp-grid-item .category-tag {\\n display: inline-block;\\n background-color: rgba(66, 135, 245, 0.15); /* Blueish tag for categories */\\n color: #4287F5;\\n padding: 6px 12px;\\n border-radius: 6px;\\n font-size: 0.8em;\\n font-weight: 500;\\n margin-bottom: 15px;\\n }\\n\\n .wtp-grid-item h3 {\\n font-size: 1.4em;\\n margin-bottom: 10px;\\n }\\n\\n .wtp-grid-item p {\\n font-size: 0.95em;\\n line-height: 1.5;\\n }\\n\\n .wtp-logout-btn {\\n position: absolute;\\n top: 20px;\\n right: 20px;\\n background-color: transparent;\\n border: 1px solid var(--wtp-border-color);\\n color: var(--wtp-secondary-text);\\n padding: 8px 16px;\\n border-radius: 6px;\\n text-decoration: none;\\n font-size: 0.9em;\\n transition: all 0.3s ease;\\n }\\n\\n .wtp-logout-btn:hover {\\n background-color: rgba(255, 255, 255, 0.05);\\n border-color: var(--wtp-accent);\\n color: var(--wtp-primary);\\n }\\n\\n /* Utility classes for text alignment, etc. */\\n .text-center {\\n text-align: center;\\n }\\n\\n .mb-40 {\\n margin-bottom: 40px;\\n }\\n\\n .mt-60 {\\n margin-top: 60px;\\n }\\n\\n\u003c/style\u003e\",\n \"score_before\": 70,\n \"score_after\": 95,\n \"safe\": true\n}" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 443, + "candidatesTokenCount": 3392, + "totalTokenCount": 9143, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 185 + }, + { + "modality": "IMAGE", + "tokenCount": 258 + } + ], + "thoughtsTokenCount": 5308 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "EZLraeesMeTTxN8P77Ks2Qo" +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-175348/parse.log b/proofs/wevia-gemini-apply-v2-20260424-175348/parse.log new file mode 100644 index 000000000..927054466 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-175348/parse.log @@ -0,0 +1 @@ +PARSE_OK True STOP diff --git a/proofs/wevia-gemini-apply-v2-20260424-175348/plan.json b/proofs/wevia-gemini-apply-v2-20260424-175348/plan.json new file mode 100644 index 000000000..30dd0a381 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-175348/plan.json @@ -0,0 +1,10 @@ +{ + "ok": true, + "plan": { + "css": "", + "score_before": 70, + "score_after": 95, + "safe": true + }, + "finishReason": "STOP" +} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-175348/shot.log b/proofs/wevia-gemini-apply-v2-20260424-175348/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-175348/shot.log @@ -0,0 +1 @@ +SHOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-175655/apply.log b/proofs/wevia-gemini-apply-v2-20260424-175655/apply.log new file mode 100644 index 000000000..68be2ac96 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-175655/apply.log @@ -0,0 +1 @@ +ALREADY diff --git a/proofs/wevia-gemini-apply-v2-20260424-175655/before.png b/proofs/wevia-gemini-apply-v2-20260424-175655/before.png new file mode 100644 index 000000000..c9f4bc869 Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-175655/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-175655/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-175655/gemini-raw.json new file mode 100644 index 000000000..cfa49845f --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-175655/gemini-raw.json @@ -0,0 +1,34 @@ +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "{\"css\":\"\u003cstyle\u003e:root { --wtp-bg: #0A0B10; /* Deep dark background */ --wtp-card: #1A1B20; /* Slightly lighter dark for cards */ --wtp-primary: #00FF80; /* Bright green accent */ --wtp-accent: #00BFFF; /* A subtle blue for secondary accent/highlights */ --wtp-text-light: #E0E0E0; /* Light text color */ --wtp-text-muted: #A0A0A0; /* Muted text color */ --wtp-border-subtle: rgba(255, 255, 255, 0.1); /* Subtle border */ --wtp-shadow-dark: 0 4px 15px rgba(0, 0, 0, 0.3); /* Dark shadow */}body { font-family: 'Inter', sans-serif; /* Assuming a modern sans-serif font */ background-color: var(--wtp-bg); color: var(--wtp-text-light); margin: 0; padding: 0; line-height: 1.6;}h1, h2, h3, h4, h5, h6 { color: var(--wtp-text-light); margin-top: 0; margin-bottom: 0.5em;}/* General link styling */a { color: var(--wtp-primary); text-decoration: none; transition: color 0.3s ease;}a:hover { color: var(--wtp-accent);}/* Hero Section */.wtp-hero-premium { position: relative; padding: 100px 20px; text-align: center; background: radial-gradient(circle at center top, rgba(0, 255, 128, 0.05) 0%, rgba(10, 11, 16, 1) 70%), var(--wtp-bg); overflow: hidden;}.wtp-hero-premium::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(to bottom, rgba(0, 0, 0, 0.3) 0%, rgba(0, 0, 0, 0) 50%, rgba(0, 0, 0, 0.3) 100%); pointer-events: none; z-index: 1;}.wtp-hero-premium h1 { font-size: 3.5em; font-weight: 700; margin-bottom: 20px; position: relative; z-index: 2;}.wtp-hero-premium h1 .highlight { color: var(--wtp-primary);}.wtp-hero-premium p { font-size: 1.2em; max-width: 800px; margin: 0 auto 40px auto; color: var(--wtp-text-muted); position: relative; z-index: 2;}/* KPI Card */.wtp-kpi-card { background-color: var(--wtp-card); border-radius: 12px; padding: 25px; margin: 15px; text-align: center; box-shadow: var(--wtp-shadow-dark); border: 1px solid var(--wtp-border-subtle); transition: transform 0.3s ease, box-shadow 0.3s ease; display: flex; flex-direction: column; justify-content: space-between; min-height: 150px; /* Ensure consistent height */ position: relative; overflow: hidden; /* For sparkline */}.wtp-kpi-card:hover { transform: translateY(-5px); box-shadow: 0 8px 25px rgba(0, 0, 0, 0.5);}.wtp-kpi-card .kpi-value { font-size: 2.5em; font-weight: 700; color: var(--wtp-primary); margin-bottom: 10px;}.wtp-kpi-card .kpi-label { font-size: 0.9em; color: var(--wtp-text-muted); margin-bottom: 15px;}/* Sparkline SVG simulation */.wtp-kpi-card .sparkline { position: absolute; bottom: 0; left: 0; width: 100%; height: 30px; /* Height of the sparkline area */ background: linear-gradient(to right, rgba(0, 255, 128, 0.1) 0%, rgba(0, 255, 128, 0.3) 25%, rgba(0, 255, 128, 0.5) 50%, rgba(0, 255, 128, 0.7) 75%, rgba(0, 255, 128, 0.9) 100% ); opacity: 0.3; clip-path: polygon(0% 100%, 10% 80%, 20% 90%, 30% 70%, 40% 85%, 50% 60%, 60% 75%, 70% 50%, 80% 65%, 90% 40%, 100% 50%, 100% 100%); /* Simulates a rising line graph */ z-index: 0; /* Behind content */}/* Status LED */@keyframes pulse { 0% { box-shadow: 0 0 0 0 rgba(0, 255, 128, 0.7); } 70% { box-shadow: 0 0 0 15px rgba(0, 255, 128, 0); } 100% { box-shadow: 0 0 0 0 rgba(0, 255, 128, 0); }}.wtp-status-led { display: inline-block; width: 12px; height: 12px; border-radius: 50%; background-color: var(--wtp-primary); position: relative; margin-right: 8px; vertical-align: middle; animation: pulse 2s infinite;}/* Action Button */.wtp-action-btn { display: inline-flex; align-items: center; justify-content: center; padding: 14px 30px; border-radius: 8px; background: linear-gradient(45deg, var(--wtp-primary), var(--wtp-accent)); color: var(--wtp-bg); /* Dark text on bright button */ font-size: 1.1em; font-weight: 600; text-decoration: none; border: none; cursor: pointer; transition: transform 0.3s ease, box-shadow 0.3s ease, background 0.3s ease; position: relative; overflow: hidden; z-index: 1;}.wtp-action-btn::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(45deg, var(--wtp-accent), var(--wtp-primary)); /* Inverted gradient for hover */ opacity: 0; transition: opacity 0.3s ease; z-index: -1;}.wtp-action-btn:hover { transform: translateY(-3px); box-shadow: 0 8px 20px rgba(0, 255, 128, 0.4);}.wtp-action-btn:hover::before { opacity: 1;}/* General layout for the page based on image */.container { max-width: 1200px; margin: 0 auto; padding: 0 20px;}.kpi-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 20px; margin-top: -60px; /* Overlap with hero for visual flow */ position: relative; z-index: 3; /* Ensure cards are above hero background effects */ padding-bottom: 80px;}.section-title { font-size: 2.2em; font-weight: 600; text-align: center; margin-top: 80px; margin-bottom: 40px;}.section-title .highlight { color: var(--wtp-primary);}.content-card-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 20px; padding-bottom: 80px;}.wtp-content-card { background-color: var(--wtp-card); border-radius: 12px; padding: 25px; box-shadow: var(--wtp-shadow-dark); border: 1px solid var(--wtp-border-subtle); transition: transform 0.3s ease, box-shadow 0.3s ease;}.wtp-content-card:hover { transform: translateY(-5px); box-shadow: 0 8px 25px rgba(0, 0, 0, 0.5);}.wtp-content-card .card-category { display: inline-block; background-color: rgba(0, 191, 255, 0.2); /* Using wtp-accent with transparency */ color: var(--wtp-accent); padding: 6px 12px; border-radius: 6px; font-size: 0.8em; font-weight: 600; margin-bottom: 15px;}.wtp-content-card h3 { font-size: 1.5em; font-weight: 600; margin-bottom: 10px;}.wtp-content-card p { font-size: 0.95em; color: var(--wtp-text-muted);}/* Footer (simple example) */.wtp-footer { background-color: #050508; color: var(--wtp-text-muted); text-align: center; padding: 40px 20px; font-size: 0.9em; border-top: 1px solid var(--wtp-border-subtle);}/* Logout button (top right) */.wtp-logout-btn { position: absolute; top: 20px; right: 20px; background-color: rgba(255, 255, 255, 0.1); color: var(--wtp-text-light); padding: 8px 15px; border-radius: 6px; text-decoration: none; font-size: 0.9em; transition: background-color 0.3s ease; z-index: 10;}.wtp-logout-btn:hover { background-color: rgba(255, 255, 255, 0.2);}/* Media Query for mobile */@media (max-width: 768px) { .wtp-hero-premium { padding: 80px 15px; } .wtp-hero-premium h1 { font-size: 2.5em; } .wtp-hero-premium p { font-size: 1em; } .kpi-grid { grid-template-columns: 1fr; /* Stack cards on mobile */ margin-top: -40px; } .section-title { font-size: 1.8em; margin-top: 60px; } .content-card-grid { grid-template-columns: 1fr; /* Stack content cards */ } /* Anti-overlap for a hypothetical bot-widget */ .bot-widget { position: fixed; /* Assuming it's fixed */ bottom: 100px; /* Pushed up to avoid overlap */ left: 20px; right: 20px; width: auto; z-index: 100; }}\u003c/style\u003e\",\"score_before\":70,\"score_after\":95,\"safe\":true}" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 443, + "candidatesTokenCount": 3071, + "totalTokenCount": 12085, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 185 + }, + { + "modality": "IMAGE", + "tokenCount": 258 + } + ], + "thoughtsTokenCount": 8571 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "y5Lrab_cE93o7M8P8vOZ0QU" +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-175655/parse.log b/proofs/wevia-gemini-apply-v2-20260424-175655/parse.log new file mode 100644 index 000000000..927054466 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-175655/parse.log @@ -0,0 +1 @@ +PARSE_OK True STOP diff --git a/proofs/wevia-gemini-apply-v2-20260424-175655/plan.json b/proofs/wevia-gemini-apply-v2-20260424-175655/plan.json new file mode 100644 index 000000000..ee8dba3b9 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-175655/plan.json @@ -0,0 +1,10 @@ +{ + "ok": true, + "plan": { + "css": "", + "score_before": 70, + "score_after": 95, + "safe": true + }, + "finishReason": "STOP" +} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-175655/shot.log b/proofs/wevia-gemini-apply-v2-20260424-175655/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-175655/shot.log @@ -0,0 +1 @@ +SHOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-180746/apply.log b/proofs/wevia-gemini-apply-v2-20260424-180746/apply.log new file mode 100644 index 000000000..83bb05d4c --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-180746/apply.log @@ -0,0 +1 @@ +APPLIED size_before:13725 size_after:23977 delta:+10252 backup:/var/www/html/vault-gold/opus/solution-finder.html.doctrine201-apply-20260424-180746.bak diff --git a/proofs/wevia-gemini-apply-v2-20260424-180746/before.png b/proofs/wevia-gemini-apply-v2-20260424-180746/before.png new file mode 100644 index 000000000..1e2e38a39 Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-180746/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-180746/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-180746/gemini-raw.json new file mode 100644 index 000000000..6b6a36062 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-180746/gemini-raw.json @@ -0,0 +1,34 @@ +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "{\"css\":\"\u003cstyle\u003e\\n/* Global styles for premium dark theme */\\nbody {\\n font-family: 'Inter', sans-serif; /* Assuming Inter or similar modern sans-serif */\\n background-color: var(--wtp-bg);\\n color: var(--wtp-text);\\n margin: 0;\\n padding: 0;\\n line-height: 1.6;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n:root {\\n --wtp-bg: #0A0A1A; /* Deep dark background */\\n --wtp-card: #1A1A2E; /* Slightly lighter for cards, with a subtle blue tint */\\n --wtp-primary: #00FFC2; /* Bright teal for highlights */\\n --wtp-accent: #7B61FF; /* Vibrant purple for accent elements */\\n --wtp-text: #E0E0E0; /* Light grey for main text */\\n --wtp-text-secondary: #A0A0B0; /* Muted grey for secondary text */\\n --wtp-border: #2C2C3F; /* Darker grey-blue for borders */\\n --wtp-gradient-start: #1A1A2E;\\n --wtp-gradient-end: #0A0A1A;\\n}\\n\\n/* Hero Section */\\n.wtp-hero-premium {\\n position: relative;\\n padding: 100px 20px;\\n text-align: center;\\n background: radial-gradient(circle at top center, rgba(26, 26, 46, 0.8) 0%, var(--wtp-bg) 70%);\\n overflow: hidden;\\n}\\n.wtp-hero-premium::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background: linear-gradient(180deg, rgba(0,0,0,0.2) 0%, rgba(0,0,0,0) 50%, rgba(0,0,0,0.2) 100%);\\n pointer-events: none;\\n z-index: 1;\\n}\\n.wtp-hero-premium h1 {\\n font-size: 3.5em;\\n color: var(--wtp-text);\\n margin-bottom: 10px;\\n z-index: 2;\\n position: relative;\\n}\\n.wtp-hero-premium h1 .highlight {\\n color: var(--wtp-primary);\\n}\\n.wtp-hero-premium p {\\n font-size: 1.2em;\\n color: var(--wtp-text-secondary);\\n max-width: 700px;\\n margin: 0 auto 40px;\\n z-index: 2;\\n position: relative;\\n}\\n\\n/* KPI Card */\\n.wtp-kpi-card {\\n background: var(--wtp-card);\\n border: 1px solid var(--wtp-border);\\n border-radius: 12px;\\n padding: 25px;\\n margin: 15px;\\n box-shadow: 0 8px 20px rgba(0, 0, 0, 0.3);\\n transition: all 0.3s ease;\\n display: flex;\\n flex-direction: column;\\n align-items: flex-start;\\n position: relative;\\n overflow: hidden;\\n}\\n.wtp-kpi-card:hover {\\n transform: translateY(-5px);\\n box-shadow: 0 12px 25px rgba(0, 0, 0, 0.4);\\n border-color: var(--wtp-primary);\\n}\\n.wtp-kpi-card .card-title {\\n font-size: 1.4em;\\n color: var(--wtp-text);\\n margin-bottom: 10px;\\n}\\n.wtp-kpi-card .card-value {\\n font-size: 2.5em;\\n font-weight: bold;\\n color: var(--wtp-primary);\\n margin-bottom: 15px;\\n}\\n.wtp-kpi-card .card-description {\\n font-size: 0.9em;\\n color: var(--wtp-text-secondary);\\n margin-bottom: 20px;\\n}\\n/* Placeholder for Sparkline SVG */\\n.wtp-kpi-card .sparkline-svg {\\n width: 100%;\\n height: 60px;\\n background: linear-gradient(to right, rgba(0, 255, 194, 0.2), rgba(0, 255, 194, 0.5)); /* Example gradient for visual */\\n border-radius: 4px;\\n margin-top: auto; /* Pushes sparkline to bottom */\\n /* In a real scenario, this would contain an actual SVG path */\\n}\\n\\n/* Status LED */\\n@keyframes pulse {\\n 0% {\\n transform: scale(0.8);\\n opacity: 0.7;\\n }\\n 50% {\\n transform: scale(1.1);\\n opacity: 1;\\n }\\n 100% {\\n transform: scale(0.8);\\n opacity: 0.7;\\n }\\n}\\n.wtp-status-led {\\n display: inline-block;\\n width: 12px;\\n height: 12px;\\n border-radius: 50%;\\n background-color: var(--wtp-primary); /* Use primary color for active status */\\n box-shadow: 0 0 0 0 rgba(0, 255, 194, 0.7);\\n animation: pulse 1.5s infinite ease-out;\\n margin-right: 8px;\\n vertical-align: middle;\\n}\\n.wtp-status-led.offline {\\n background-color: #FF6B6B; /* Red for offline */\\n box-shadow: 0 0 0 0 rgba(255, 107, 107, 0.7);\\n animation: none; /* No pulse for offline */\\n}\\n\\n/* Action Button */\\n.wtp-action-btn {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n padding: 14px 30px;\\n border-radius: 8px;\\n font-size: 1.1em;\\n font-weight: 600;\\n color: var(--wtp-text);\\n background: linear-gradient(135deg, var(--wtp-primary) 0%, var(--wtp-accent) 100%);\\n border: none;\\n cursor: pointer;\\n position: relative;\\n overflow: hidden;\\n z-index: 1;\\n transition: all 0.3s ease;\\n text-decoration: none;\\n box-shadow: 0 6px 15px rgba(0, 0, 0, 0.3);\\n}\\n.wtp-action-btn::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background: linear-gradient(135deg, var(--wtp-accent) 0%, var(--wtp-primary) 100%);\\n z-index: -1;\\n transition: transform 0.3s ease;\\n transform: translateY(100%);\\n}\\n.wtp-action-btn:hover {\\n transform: translateY(-5px);\\n box-shadow: 0 10px 20px rgba(0, 0, 0, 0.4);\\n}\\n.wtp-action-btn:hover::before {\\n transform: translateY(0);\\n}\\n.wtp-action-btn:active {\\n transform: translateY(-2px);\\n box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);\\n}\\n\\n/* Media Query for Mobile */\\n@media (max-width: 768px) {\\n .wtp-hero-premium {\\n padding: 60px 15px;\\n }\\n .wtp-hero-premium h1 {\\n font-size: 2.5em;\\n }\\n .wtp-hero-premium p {\\n font-size: 1em;\\n }\\n .wtp-kpi-card {\\n margin: 10px;\\n padding: 20px;\\n }\\n .wtp-kpi-card .card-title {\\n font-size: 1.2em;\\n }\\n .wtp-kpi-card .card-value {\\n font-size: 2em;\\n }\\n .wtp-action-btn {\\n padding: 12px 25px;\\n font-size: 1em;\\n }\\n /* Anti-overlap for a bottom widget */\\n .bot-widget {\\n position: fixed; /* Assuming it's fixed */\\n bottom: 100px; /* Pushes it up to avoid overlap with mobile browser UI or other elements */\\n left: 50%;\\n transform: translateX(-50%);\\n width: calc(100% - 40px); /* Example width */\\n max-width: 350px; /* Max width for larger screens */\\n z-index: 1000;\\n background: var(--wtp-card);\\n border-radius: 10px;\\n padding: 15px;\\n box-shadow: 0 -4px 15px rgba(0,0,0,0.3);\\n }\\n}\\n\\n/* General elements from the image to make them premium */\\n.solution-finder-header {\\n text-align: center;\\n padding: 80px 20px 40px;\\n}\\n.solution-finder-header h1 {\\n font-size: 3.2em;\\n color: var(--wtp-text);\\n margin-bottom: 10px;\\n}\\n.solution-finder-header h1 span {\\n color: var(--wtp-primary);\\n}\\n.solution-finder-header p {\\n font-size: 1.1em;\\n color: var(--wtp-text-secondary);\\n margin-bottom: 30px;\\n}\\n\\n.solution-finder-nav {\\n display: flex;\\n justify-content: center;\\n gap: 10px;\\n margin-bottom: 50px;\\n}\\n.solution-finder-nav .nav-item {\\n background-color: var(--wtp-border);\\n color: var(--wtp-text-secondary);\\n padding: 8px 15px;\\n border-radius: 20px;\\n font-size: 0.9em;\\n cursor: pointer;\\n transition: all 0.2s ease;\\n}\\n.solution-finder-nav .nav-item:hover {\\n background-color: var(--wtp-card);\\n color: var(--wtp-text);\\n}\\n.solution-finder-nav .nav-item.active {\\n background-color: var(--wtp-accent);\\n color: var(--wtp-text);\\n font-weight: 600;\\n}\\n\\n.question-section {\\n text-align: center;\\n margin-bottom: 50px;\\n}\\n.question-section h2 {\\n font-size: 1.8em;\\n color: var(--wtp-text);\\n margin-bottom: 30px;\\n}\\n\\n.choice-card {\\n background: var(--wtp-card);\\n border: 1px solid var(--wtp-border);\\n border-radius: 10px;\\n padding: 25px;\\n margin: 20px auto;\\n max-width: 500px;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n cursor: pointer;\\n transition: all 0.3s ease;\\n box-shadow: 0 4px 10px rgba(0,0,0,0.2);\\n}\\n.choice-card:hover {\\n transform: translateY(-3px);\\n box-shadow: 0 8px 15px rgba(0,0,0,0.3);\\n border-color: var(--wtp-primary);\\n}\\n.choice-card .icon {\\n font-size: 2.5em;\\n color: var(--wtp-primary);\\n margin-bottom: 15px;\\n}\\n.choice-card h3 {\\n font-size: 1.3em;\\n color: var(--wtp-text);\\n margin-bottom: 5px;\\n}\\n.choice-card p {\\n font-size: 0.95em;\\n color: var(--wtp-text-secondary);\\n text-align: center;\\n}\\n\\n/* Loader dots from the image */\\n.loader-dots {\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n margin-bottom: 40px;\\n}\\n.loader-dot {\\n width: 10px;\\n height: 10px;\\n border-radius: 50%;\\n background-color: var(--wtp-border);\\n margin: 0 5px;\\n transition: background-color 0.3s ease;\\n}\\n.loader-dot.active {\\n background-color: var(--wtp-accent);\\n}\\n\\n/* Top navigation tags */\\n.top-nav-tags {\\n display: flex;\\n gap: 10px;\\n position: absolute;\\n top: 20px;\\n right: 100px; /* Adjust based on Logout button */\\n}\\n.top-nav-tags .tag {\\n padding: 5px 12px;\\n border-radius: 15px;\\n font-size: 0.8em;\\n font-weight: 500;\\n color: var(--wtp-text);\\n background-color: rgba(255, 255, 255, 0.1); /* Default subtle background */\\n}\\n/* Specific tag colors from image */\\n.top-nav-tags .tag.wtp { background-color: #00FFC2; color: #0A0A1A; }\\n.top-nav-tags .tag.ia-hub { background-color: #3498DB; } /* Blue */\\n.top-nav-tags .tag.master { background-color: #9B59B6; } /* Purple */\\n.top-nav-tags .tag.orch { background-color: #E74C3C; } /* Red */\\n.top-nav-tags .tag.wevcode { background-color: #F39C12; } /* Orange */\\n.top-nav-tags .tag.arena { background-color: #E67E22; } /* Darker Orange */\\n.top-nav-tags .tag.droid { background-color: #2ECC71; } /* Green */\\n.top-nav-tags .tag.admin { background-color: #7F8C8D; } /* Grey */\\n.top-nav-tags .tag.wevia-engine { background-color: #34495E; } /* Dark Blue Grey */\\n\\n.logout-btn {\\n position: absolute;\\n top: 20px;\\n right: 20px;\\n background: none;\\n border: 1px solid var(--wtp-border);\\n color: var(--wtp-text-secondary);\\n padding: 8px 15px;\\n border-radius: 20px;\\n cursor: pointer;\\n transition: all 0.2s ease;\\n}\\n.logout-btn:hover {\\n color: var(--wtp-text);\\n border-color: var(--wtp-accent);\\n background-color: rgba(var(--wtp-accent), 0.1);\\n}\\n\\n/* Solution Finder Title */\\n.solution-finder-title {\\n background-color: var(--wtp-accent);\\n color: var(--wtp-text);\\n padding: 8px 20px;\\n border-radius: 20px;\\n font-size: 0.9em;\\n font-weight: 600;\\n margin: 0 auto 50px;\\n display: inline-block;\\n letter-spacing: 1px;\\n text-transform: uppercase;\\n box-shadow: 0 4px 10px rgba(0,0,0,0.2);\\n}\\n\\n\u003c/style\u003e\",\"score_before\":0,\"score_after\":0,\"safe\":true}" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 443, + "candidatesTokenCount": 4211, + "totalTokenCount": 10442, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 185 + }, + { + "modality": "IMAGE", + "tokenCount": 258 + } + ], + "thoughtsTokenCount": 5788 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "WJXracq-D7rOnsEPnf2J8Ac" +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-180746/parse.log b/proofs/wevia-gemini-apply-v2-20260424-180746/parse.log new file mode 100644 index 000000000..927054466 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-180746/parse.log @@ -0,0 +1 @@ +PARSE_OK True STOP diff --git a/proofs/wevia-gemini-apply-v2-20260424-180746/plan.json b/proofs/wevia-gemini-apply-v2-20260424-180746/plan.json new file mode 100644 index 000000000..817f08cee --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-180746/plan.json @@ -0,0 +1,10 @@ +{ + "ok": true, + "plan": { + "css": "", + "score_before": 0, + "score_after": 0, + "safe": true + }, + "finishReason": "STOP" +} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-180746/shot.log b/proofs/wevia-gemini-apply-v2-20260424-180746/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-180746/shot.log @@ -0,0 +1 @@ +SHOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-180902/apply.log b/proofs/wevia-gemini-apply-v2-20260424-180902/apply.log new file mode 100644 index 000000000..900b864dd --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-180902/apply.log @@ -0,0 +1 @@ +APPLIED size_before:16153 size_after:24483 delta:+8330 backup:/var/www/html/vault-gold/opus/trust-center.html.doctrine201-apply-20260424-180902.bak diff --git a/proofs/wevia-gemini-apply-v2-20260424-180902/before.png b/proofs/wevia-gemini-apply-v2-20260424-180902/before.png new file mode 100644 index 000000000..1b8ab65c2 Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-180902/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-180902/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-180902/gemini-raw.json new file mode 100644 index 000000000..ca7d647d8 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-180902/gemini-raw.json @@ -0,0 +1,34 @@ +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "{\"css\":\"\u003cstyle\u003e:root { --wtp-bg: #0A0B10; /* Very dark background */ --wtp-card: #1A1C25; /* Slightly lighter dark for cards */ --wtp-primary: #E0E0E0; /* Light gray for primary text */ --wtp-secondary: #A0A0A0; /* Slightly darker gray for secondary text */ --wtp-accent: #00CC66; /* Vibrant green */ --wtp-accent-dark: #00A352; /* Darker green for gradients */ --wtp-gradient-start: #0A0B10; --wtp-gradient-end: #1A1C25; --wtp-shadow-color: rgba(0, 204, 102, 0.2);}body { font-family: 'Inter', sans-serif; /* Assuming a modern sans-serif font */ background-color: var(--wtp-bg); color: var(--wtp-primary); margin: 0; padding: 0; line-height: 1.6;}h1, h2, h3, h4, h5, h6 { color: var(--wtp-primary); font-weight: 700;}p { color: var(--wtp-secondary);}/* Premium Hero Section */.wtp-hero-premium { position: relative; padding: 100px 20px; text-align: center; background: linear-gradient(135deg, var(--wtp-gradient-start) 0%, var(--wtp-card) 100%); overflow: hidden; border-bottom: 1px solid rgba(255, 255, 255, 0.05);}.wtp-hero-premium::before { content: ''; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%; background: radial-gradient(circle at 50% 50%, rgba(0, 204, 102, 0.05) 0%, transparent 70%); opacity: 0.3; pointer-events: none; animation: hero-glow 15s infinite alternate ease-in-out;}@keyframes hero-glow { 0% { transform: scale(1); opacity: 0.05; } 50% { transform: scale(1.2); opacity: 0.1; } 100% { transform: scale(1); opacity: 0.05; }}.wtp-hero-premium .wtp-title { font-size: 3.5em; font-weight: 800; margin-bottom: 15px; letter-spacing: -1px; color: var(--wtp-primary);}.wtp-hero-premium .wtp-title span { color: var(--wtp-accent);}.wtp-hero-premium .wtp-subtitle { font-size: 1.2em; max-width: 700px; margin: 0 auto 30px auto; color: var(--wtp-secondary);}/* KPI Card */.wtp-kpi-card { background-color: var(--wtp-card); border-radius: 12px; padding: 25px; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3); transition: transform 0.3s ease, box-shadow 0.3s ease; display: flex; flex-direction: column; justify-content: space-between; min-height: 180px; border: 1px solid rgba(255, 255, 255, 0.08);}.wtp-kpi-card:hover { transform: translateY(-5px); box-shadow: 0 12px 30px var(--wtp-shadow-color);}.wtp-kpi-card .wtp-kpi-header { display: flex; align-items: center; margin-bottom: 15px;}.wtp-kpi-card .wtp-kpi-icon { font-size: 2em; /* Placeholder for icon */ color: var(--wtp-accent); margin-right: 15px;}.wtp-kpi-card .wtp-kpi-title { font-size: 1.3em; font-weight: 600; color: var(--wtp-primary);}.wtp-kpi-card .wtp-kpi-value { font-size: 2.2em; font-weight: 700; color: var(--wtp-primary); margin-bottom: 10px;}.wtp-kpi-card .wtp-kpi-description { font-size: 0.9em; color: var(--wtp-secondary); margin-bottom: 15px;}.wtp-kpi-card .wtp-sparkline-svg { width: 100%; height: 50px; /* Adjust height as needed */ background: linear-gradient(to right, rgba(0, 204, 102, 0.3), rgba(0, 204, 102, 0.05)); /* Placeholder for sparkline */ border-radius: 4px; opacity: 0.7;}/* Status LED */@keyframes pulse { 0% { transform: scale(0.9); box-shadow: 0 0 0 0 rgba(0, 204, 102, 0.7); } 70% { transform: scale(1); box-shadow: 0 0 0 10px rgba(0, 204, 102, 0); } 100% { transform: scale(0.9); box-shadow: 0 0 0 0 rgba(0, 204, 102, 0); }}.wtp-status-led { display: inline-block; width: 12px; height: 12px; background-color: var(--wtp-accent); border-radius: 50%; position: relative; margin-right: 8px; animation: pulse 2s infinite;}.wtp-status-led.is-offline { background-color: #FF4D4D; /* Red for offline */ animation: none;}/* Action Button */.wtp-action-btn { display: inline-flex; align-items: center; justify-content: center; padding: 12px 28px; border-radius: 8px; font-size: 1em; font-weight: 600; text-decoration: none; color: var(--wtp-primary); background: linear-gradient(45deg, var(--wtp-accent), var(--wtp-accent-dark)); border: none; cursor: pointer; transition: all 0.3s ease; box-shadow: 0 4px 15px rgba(0, 204, 102, 0.4); position: relative; overflow: hidden; z-index: 1;}.wtp-action-btn::before { content: ''; position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(45deg, var(--wtp-accent-dark), var(--wtp-accent)); opacity: 0; transition: opacity 0.3s ease; z-index: -1;}.wtp-action-btn:hover { transform: translateY(-3px); box-shadow: 0 8px 20px rgba(0, 204, 102, 0.6);}.wtp-action-btn:hover::before { opacity: 1;}.wtp-action-btn:active { transform: translateY(0); box-shadow: 0 2px 10px rgba(0, 204, 102, 0.3);}/* General layout adjustments for the page */.container { max-width: 1200px; margin: 0 auto; padding: 0 20px;}.section-title { font-size: 2.5em; font-weight: 700; margin-bottom: 20px; color: var(--wtp-primary);}.section-subtitle { font-size: 1.1em; color: var(--wtp-secondary); max-width: 800px; margin-bottom: 40px;}.grid-3-cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 30px; margin-top: 40px;}/* Specific elements from the image */.header-nav { display: flex; justify-content: space-between; align-items: center; padding: 20px; background-color: var(--wtp-bg); border-bottom: 1px solid rgba(255, 255, 255, 0.05);}.header-nav .logo { font-size: 1.8em; font-weight: 800; color: var(--wtp-primary);}.header-nav .logo span { color: var(--wtp-accent);}.header-nav .nav-buttons { display: flex; gap: 10px;}.header-nav .nav-buttons .btn { padding: 8px 15px; border-radius: 6px; font-size: 0.9em; text-decoration: none; color: var(--wtp-primary); background-color: var(--wtp-card); transition: background-color 0.2s ease;}.header-nav .nav-buttons .btn:hover { background-color: rgba(255, 255, 255, 0.1);}.header-nav .nav-buttons .btn.active { background-color: var(--wtp-accent); color: var(--wtp-bg); font-weight: 600;}.trust-center-badge { display: inline-flex; align-items: center; padding: 8px 20px; border-radius: 20px; background-color: rgba(0, 204, 102, 0.1); color: var(--wtp-accent); font-size: 0.9em; font-weight: 500; margin-bottom: 30px; border: 1px solid var(--wtp-accent);}.trust-center-badge svg { /* Placeholder for shield icon */ margin-right: 8px; fill: var(--wtp-accent);}/* Media Query for mobile */@media (max-width: 768px) { .wtp-hero-premium { padding: 80px 15px; } .wtp-hero-premium .wtp-title { font-size: 2.5em; } .wtp-hero-premium .wtp-subtitle { font-size: 1em; } .grid-3-cols { grid-template-columns: 1fr; } .wtp-kpi-card { min-height: auto; } /* Assuming .bot-widget is the floating WhatsApp button */ .bot-widget { position: fixed; bottom: 100px; /* Anti-overlap with potential mobile navigation/footer */ right: 20px; z-index: 1000; width: 60px; height: 60px; background-color: #25D366; /* WhatsApp green */ border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); transition: bottom 0.3s ease; } .bot-widget svg { /* Placeholder for WhatsApp icon */ fill: white; width: 30px; height: 30px; }}/* Placeholder for the WhatsApp widget if it's not already defined */.bot-widget { position: fixed; bottom: 30px; /* Default position */ right: 30px; z-index: 1000; width: 60px; height: 60px; background-color: #25D366; /* WhatsApp green */ border-radius: 50%; display: flex; align-items: center; justify-content: center; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); cursor: pointer; transition: transform 0.2s ease;}.bot-widget:hover { transform: scale(1.05);}.bot-widget svg { fill: white; width: 30px; height: 30px;}\u003c/style\u003e\",\"score_before\":70,\"score_after\":95,\"safe\":true}" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 443, + "candidatesTokenCount": 3215, + "totalTokenCount": 11720, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 185 + }, + { + "modality": "IMAGE", + "tokenCount": 258 + } + ], + "thoughtsTokenCount": 8062 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "o5XracDzJ-C1nsEPw8nV-A4" +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-180902/parse.log b/proofs/wevia-gemini-apply-v2-20260424-180902/parse.log new file mode 100644 index 000000000..927054466 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-180902/parse.log @@ -0,0 +1 @@ +PARSE_OK True STOP diff --git a/proofs/wevia-gemini-apply-v2-20260424-180902/plan.json b/proofs/wevia-gemini-apply-v2-20260424-180902/plan.json new file mode 100644 index 000000000..7ee29defc --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-180902/plan.json @@ -0,0 +1,10 @@ +{ + "ok": true, + "plan": { + "css": "", + "score_before": 70, + "score_after": 95, + "safe": true + }, + "finishReason": "STOP" +} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-180902/shot.log b/proofs/wevia-gemini-apply-v2-20260424-180902/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-180902/shot.log @@ -0,0 +1 @@ +SHOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-181023/apply.log b/proofs/wevia-gemini-apply-v2-20260424-181023/apply.log new file mode 100644 index 000000000..68be2ac96 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181023/apply.log @@ -0,0 +1 @@ +ALREADY diff --git a/proofs/wevia-gemini-apply-v2-20260424-181023/before.png b/proofs/wevia-gemini-apply-v2-20260424-181023/before.png new file mode 100644 index 000000000..cd645418f Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-181023/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-181023/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-181023/gemini-raw.json new file mode 100644 index 000000000..94338ed9e --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181023/gemini-raw.json @@ -0,0 +1,34 @@ +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "{\"css\":\"\u003cstyle\u003e\\n:root {\\n --wtp-bg: #120e2a; /* Deep dark blue/purple */\\n --wtp-card: #1a1538; /* Slightly lighter dark blue/purple for cards */\\n --wtp-primary: #00ff88; /* Vibrant green for highlights */\\n --wtp-accent: #6a4ffc; /* A complementary purple */\\n --wtp-text-light: #e0e0e0;\\n --wtp-text-dark: #a0a0a0;\\n --wtp-border-radius: 12px;\\n --wtp-transition-speed: 0.3s ease;\\n}\\n\\n/* General body styling */\\nbody {\\n font-family: 'Inter', sans-serif; /* A modern sans-serif font */\\n background-color: var(--wtp-bg);\\n color: var(--wtp-text-light);\\n margin: 0;\\n padding: 0;\\n line-height: 1.6;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\nh1, h2, h3, h4, h5, h6 {\\n color: var(--wtp-text-light);\\n font-weight: 700;\\n margin-bottom: 0.5em;\\n}\\n\\nh1 {\\n font-size: 3em;\\n letter-spacing: -0.02em;\\n}\\n\\nh2 {\\n font-size: 2em;\\n letter-spacing: -0.01em;\\n}\\n\\np {\\n color: var(--wtp-text-dark);\\n font-size: 1.1em;\\n}\\n\\n/* Page specific elements based on the image */\\n.wtp-container {\\n max-width: 1200px;\\n margin: 0 auto;\\n padding: 20px;\\n}\\n\\n.wtp-header {\\n display: flex;\\n justify-content: flex-end;\\n padding: 20px;\\n}\\n\\n.wtp-header .logout-btn {\\n background: none;\\n border: 1px solid var(--wtp-text-dark);\\n color: var(--wtp-text-dark);\\n padding: 8px 15px;\\n border-radius: 20px;\\n cursor: pointer;\\n transition: all var(--wtp-transition-speed);\\n}\\n.wtp-header .logout-btn:hover {\\n border-color: var(--wtp-primary);\\n color: var(--wtp-primary);\\n}\\n\\n.wtp-solution-finder-title {\\n font-size: 1.2em;\\n color: var(--wtp-text-dark);\\n text-transform: uppercase;\\n letter-spacing: 2px;\\n margin-bottom: 10px;\\n display: inline-block;\\n padding: 8px 15px;\\n background-color: rgba(106, 79, 252, 0.2); /* Subtle background for the tag */\\n border-radius: 20px;\\n font-weight: 600;\\n}\\n\\n.wtp-main-title {\\n font-size: 3.5em;\\n font-weight: 800;\\n margin-bottom: 15px;\\n color: var(--wtp-text-light);\\n}\\n\\n.wtp-main-title .highlight {\\n color: var(--wtp-primary);\\n}\\n\\n.wtp-subtitle {\\n font-size: 1.2em;\\n color: var(--wtp-text-dark);\\n margin-bottom: 40px;\\n}\\n\\n.wtp-progress-dots {\\n display: flex;\\n justify-content: center;\\n margin-top: 30px;\\n margin-bottom: 50px;\\n}\\n.wtp-progress-dots .dot {\\n width: 10px;\\n height: 10px;\\n border-radius: 50%;\\n background-color: rgba(255, 255, 255, 0.2);\\n margin: 0 5px;\\n transition: background-color var(--wtp-transition-speed);\\n}\\n.wtp-progress-dots .dot.active {\\n background-color: var(--wtp-accent);\\n}\\n\\n.wtp-section-question {\\n font-size: 1.8em;\\n font-weight: 700;\\n text-align: center;\\n margin-bottom: 40px;\\n color: var(--wtp-text-light);\\n}\\n\\n.wtp-role-selection {\\n display: grid;\\n grid-template-columns: 1fr; /* Single column for roles */\\n gap: 20px;\\n max-width: 700px;\\n margin: 0 auto;\\n}\\n\\n.wtp-role-card {\\n background-color: var(--wtp-card);\\n border-radius: var(--wtp-border-radius);\\n padding: 30px;\\n text-align: center;\\n cursor: pointer;\\n transition: transform var(--wtp-transition-speed), box-shadow var(--wtp-transition-speed), border-color var(--wtp-transition-speed);\\n border: 1px solid transparent; /* Initial transparent border */\\n}\\n.wtp-role-card:hover {\\n transform: translateY(-5px);\\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.4);\\n border-color: var(--wtp-accent);\\n}\\n.wtp-role-card.selected {\\n border-color: var(--wtp-primary);\\n box-shadow: 0 10px 30px rgba(0, 255, 136, 0.3);\\n transform: translateY(-2px);\\n}\\n\\n.wtp-role-card .icon {\\n font-size: 3em; /* For icon fonts or SVG */\\n color: var(--wtp-primary);\\n margin-bottom: 15px;\\n}\\n.wtp-role-card h3 {\\n font-size: 1.4em;\\n margin-bottom: 5px;\\n color: var(--wtp-text-light);\\n}\\n.wtp-role-card p {\\n font-size: 0.95em;\\n color: var(--wtp-text-dark);\\n}\\n\\n/* Specific WEVAL Premium Components */\\n.wtp-hero-premium {\\n position: relative;\\n padding: 100px 0;\\n text-align: center;\\n background: radial-gradient(circle at top center, rgba(26, 21, 56, 0.8) 0%, var(--wtp-bg) 70%);\\n overflow: hidden;\\n}\\n.wtp-hero-premium::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background: linear-gradient(135deg, rgba(106, 79, 252, 0.1) 0%, rgba(0, 255, 136, 0.05) 100%);\\n backdrop-filter: blur(5px) brightness(0.8); /* Subtle blur and darken */\\n z-index: -1;\\n}\\n\\n.wtp-kpi-card {\\n background-color: var(--wtp-card);\\n border-radius: var(--wtp-border-radius);\\n padding: 25px;\\n box-shadow: 0 8px 20px rgba(0, 0, 0, 0.3);\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n transition: transform var(--wtp-transition-speed), box-shadow var(--wtp-transition-speed);\\n border: 1px solid rgba(255, 255, 255, 0.05);\\n}\\n.wtp-kpi-card:hover {\\n transform: translateY(-5px);\\n box-shadow: 0 12px 25px rgba(0, 0, 0, 0.4);\\n}\\n.wtp-kpi-card .kpi-value {\\n font-size: 2.5em;\\n font-weight: bold;\\n color: var(--wtp-primary);\\n margin-bottom: 10px;\\n}\\n.wtp-kpi-card .kpi-label {\\n font-size: 0.9em;\\n color: var(--wtp-text-dark);\\n}\\n.wtp-kpi-card .sparkline-svg {\\n width: 100%;\\n height: 50px; /* Placeholder height for SVG */\\n margin-top: 15px;\\n background: linear-gradient(to right, rgba(0, 255, 136, 0.2), rgba(106, 79, 252, 0.2));\\n border-radius: 5px;\\n}\\n\\n@keyframes pulse {\\n 0% {\\n box-shadow: 0 0 0 0 rgba(0, 255, 136, 0.7);\\n }\\n 70% {\\n box-shadow: 0 0 0 10px rgba(0, 255, 136, 0);\\n }\\n 100% {\\n box-shadow: 0 0 0 0 rgba(0, 255, 136, 0);\\n }\\n}\\n.wtp-status-led {\\n display: inline-block;\\n width: 12px;\\n height: 12px;\\n border-radius: 50%;\\n background-color: var(--wtp-primary);\\n margin-right: 8px;\\n vertical-align: middle;\\n animation: pulse 2s infinite;\\n}\\n.wtp-status-led.offline {\\n background-color: #ff4d4d; /* Red for offline */\\n animation: none;\\n}\\n\\n.wtp-action-btn {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n padding: 15px 30px;\\n border: none;\\n border-radius: 50px;\\n font-size: 1.1em;\\n font-weight: bold;\\n color: var(--wtp-text-light);\\n background: linear-gradient(90deg, var(--wtp-primary) 0%, var(--wtp-accent) 100%);\\n cursor: pointer;\\n position: relative;\\n overflow: hidden;\\n z-index: 1;\\n transition: transform var(--wtp-transition-speed), box-shadow var(--wtp-transition-speed);\\n box-shadow: 0 5px 15px rgba(0, 255, 136, 0.2);\\n}\\n.wtp-action-btn::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background: linear-gradient(90deg, var(--wtp-accent) 0%, var(--wtp-primary) 100%); /* Inverted gradient for hover */\\n z-index: -1;\\n transition: opacity var(--wtp-transition-speed);\\n opacity: 0;\\n}\\n.wtp-action-btn:hover {\\n transform: translateY(-3px);\\n box-shadow: 0 8px 20px rgba(0, 255, 136, 0.3);\\n}\\n.wtp-action-btn:hover::before {\\n opacity: 1;\\n}\\n.wtp-action-btn:active {\\n transform: translateY(0);\\n box-shadow: 0 3px 10px rgba(0, 255, 136, 0.2);\\n}\\n\\n/* Placeholder for the \\\"bot-widget\\\" mentioned in the requirements */\\n.bot-widget {\\n position: fixed;\\n bottom: 20px; /* Default position */\\n right: 20px;\\n background-color: var(--wtp-accent);\\n color: var(--wtp-text-light);\\n padding: 15px 20px;\\n border-radius: var(--wtp-border-radius);\\n box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);\\n z-index: 1000;\\n transition: bottom var(--wtp-transition-speed);\\n}\\n\\n/* Media query for mobile (768px) */\\n@media (max-width: 768px) {\\n .wtp-hero-premium {\\n padding: 60px 0;\\n }\\n .wtp-main-title {\\n font-size: 2.5em;\\n }\\n .wtp-subtitle {\\n font-size: 1em;\\n }\\n .wtp-section-question {\\n font-size: 1.5em;\\n }\\n .wtp-kpi-card {\\n padding: 20px;\\n }\\n .wtp-kpi-card .kpi-value {\\n font-size: 2em;\\n }\\n .wtp-action-btn {\\n padding: 12px 25px;\\n font-size: 1em;\\n }\\n .bot-widget {\\n bottom: 100px !important; /* Adjust for potential mobile navigation/keyboard overlap */\\n left: 50%;\\n transform: translateX(-50%);\\n width: calc(100% - 40px); /* Example width */\\n right: auto;\\n }\\n}\\n\u003c/style\u003e\",\"score_before\":70,\"score_after\":95,\"safe\":true}" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 443, + "candidatesTokenCount": 3539, + "totalTokenCount": 8762, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 185 + }, + { + "modality": "IMAGE", + "tokenCount": 258 + } + ], + "thoughtsTokenCount": 4780 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "DpbradfQArrOnsEPnf2J8Ac" +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-181023/parse.log b/proofs/wevia-gemini-apply-v2-20260424-181023/parse.log new file mode 100644 index 000000000..927054466 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181023/parse.log @@ -0,0 +1 @@ +PARSE_OK True STOP diff --git a/proofs/wevia-gemini-apply-v2-20260424-181023/plan.json b/proofs/wevia-gemini-apply-v2-20260424-181023/plan.json new file mode 100644 index 000000000..d4d3ddc29 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181023/plan.json @@ -0,0 +1,10 @@ +{ + "ok": true, + "plan": { + "css": "", + "score_before": 70, + "score_after": 95, + "safe": true + }, + "finishReason": "STOP" +} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-181023/shot.log b/proofs/wevia-gemini-apply-v2-20260424-181023/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181023/shot.log @@ -0,0 +1 @@ +SHOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-181027/apply.log b/proofs/wevia-gemini-apply-v2-20260424-181027/apply.log new file mode 100644 index 000000000..125315f8c --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181027/apply.log @@ -0,0 +1 @@ +NOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-181027/before.png b/proofs/wevia-gemini-apply-v2-20260424-181027/before.png new file mode 100644 index 000000000..82fdfad84 Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-181027/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-181027/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-181027/gemini-raw.json new file mode 100644 index 000000000..62648b0d3 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181027/gemini-raw.json @@ -0,0 +1,7 @@ +{ + "error": { + "code": 400, + "message": "Unable to process input image. Please retry or report in https://developers.generativeai.google/guide/troubleshooting", + "status": "INVALID_ARGUMENT" + } +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-181027/parse.log b/proofs/wevia-gemini-apply-v2-20260424-181027/parse.log new file mode 100644 index 000000000..5bf09a0b1 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181027/parse.log @@ -0,0 +1 @@ +PARSE_OK False diff --git a/proofs/wevia-gemini-apply-v2-20260424-181027/plan.json b/proofs/wevia-gemini-apply-v2-20260424-181027/plan.json new file mode 100644 index 000000000..a99093228 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181027/plan.json @@ -0,0 +1,8 @@ +{ + "ok": false, + "err": { + "code": 400, + "message": "Unable to process input image. Please retry or report in https://developers.generativeai.google/guide/troubleshooting", + "status": "INVALID_ARGUMENT" + } +} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-181027/shot.log b/proofs/wevia-gemini-apply-v2-20260424-181027/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181027/shot.log @@ -0,0 +1 @@ +SHOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-181127/apply.log b/proofs/wevia-gemini-apply-v2-20260424-181127/apply.log new file mode 100644 index 000000000..125315f8c --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181127/apply.log @@ -0,0 +1 @@ +NOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-181127/before.png b/proofs/wevia-gemini-apply-v2-20260424-181127/before.png new file mode 100644 index 000000000..70865c2a6 Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-181127/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-181127/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-181127/gemini-raw.json new file mode 100644 index 000000000..1c3ffd105 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181127/gemini-raw.json @@ -0,0 +1,7 @@ +{ + "error": { + "code": 503, + "message": "This model is currently experiencing high demand. Spikes in demand are usually temporary. Please try again later.", + "status": "UNAVAILABLE" + } +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-181127/parse.log b/proofs/wevia-gemini-apply-v2-20260424-181127/parse.log new file mode 100644 index 000000000..5bf09a0b1 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181127/parse.log @@ -0,0 +1 @@ +PARSE_OK False diff --git a/proofs/wevia-gemini-apply-v2-20260424-181127/plan.json b/proofs/wevia-gemini-apply-v2-20260424-181127/plan.json new file mode 100644 index 000000000..c99d00610 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181127/plan.json @@ -0,0 +1,8 @@ +{ + "ok": false, + "err": { + "code": 503, + "message": "This model is currently experiencing high demand. Spikes in demand are usually temporary. Please try again later.", + "status": "UNAVAILABLE" + } +} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-181127/shot.log b/proofs/wevia-gemini-apply-v2-20260424-181127/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181127/shot.log @@ -0,0 +1 @@ +SHOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-181240/apply.log b/proofs/wevia-gemini-apply-v2-20260424-181240/apply.log new file mode 100644 index 000000000..4a3dc8537 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181240/apply.log @@ -0,0 +1 @@ +APPLIED size_before:14119 size_after:24168 delta:+10049 backup:/var/www/html/vault-gold/opus/roi-calculator.html.doctrine201-apply-20260424-181240.bak diff --git a/proofs/wevia-gemini-apply-v2-20260424-181240/before.png b/proofs/wevia-gemini-apply-v2-20260424-181240/before.png new file mode 100644 index 000000000..21e764308 Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-181240/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-181240/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-181240/gemini-raw.json new file mode 100644 index 000000000..b0bcb82d7 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181240/gemini-raw.json @@ -0,0 +1,34 @@ +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "{\"css\":\"\u003cstyle\u003e:root {\\n --wtp-bg: #0A0E1A; /* Very dark blue, almost black */\\n --wtp-card: #151B2E; /* Slightly lighter dark blue for cards */\\n --wtp-primary: #00E099; /* Bright green accent */\\n --wtp-accent: #00BFFF; /* A subtle light blue/cyan for secondary accents or highlights */\\n --wtp-text-light: #E0E0E0; /* Light grey for main text */\\n --wtp-text-muted: #A0A0A0; /* Muted grey for labels/secondary text */\\n --wtp-border-color: #2A344E; /* A subtle border color for separation */\\n}\\n\\nbody {\\n font-family: 'Inter', sans-serif;\\n background-color: var(--wtp-bg);\\n color: var(--wtp-text-light);\\n margin: 0;\\n padding: 0;\\n box-sizing: border-box;\\n}\\n\\nh1, h2, h3, h4, h5, h6 {\\n color: var(--wtp-text-light);\\n font-weight: 700;\\n}\\n\\np {\\n color: var(--wtp-text-muted);\\n line-height: 1.6;\\n}\\n\\n.wtp-hero-premium {\\n position: relative;\\n padding: 100px 0;\\n text-align: center;\\n overflow: hidden;\\n background: radial-gradient(circle at top center, rgba(15, 25, 45, 0.8) 0%, var(--wtp-bg) 70%);\\n}\\n\\n.wtp-hero-premium::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background: url('data:image/svg+xml;utf8,\u003csvg width=\\\"100\\\" height=\\\"100\\\" viewBox=\\\"0 0 100 100\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"\u003e\u003cg fill=\\\"%231A2033\\\" fill-opacity=\\\"0.2\\\"\u003e\u003cpath d=\\\"M98 81.6c-6.1 1.7-12.3-2-18.4-3.7-6.1-1.7-12.3-2-18.4-3.7-6.1-1.7-12.3-2-18.4-3.7-6.1-1.7-12.3-2-18.4-3.7C18.2 65.1 12 65.1 5.9 63.4L0 61.7V100h100V0L98 81.6z\\\" fill=\\\"%231A2033\\\"/\u003e\u003cpath d=\\\"M98 81.6c-6.1 1.7-12.3-2-18.4-3.7-6.1-1.7-12.3-2-18.4-3.7-6.1-1.7-12.3-2-18.4-3.7-6.1-1.7-12.3-2-18.4-3.7C18.2 65.1 12 65.1 5.9 63.4L0 61.7V100h100V0L98 81.6z\\\" fill=\\\"%231A2033\\\"/\u003e\u003c/g\u003e\u003c/svg\u003e') repeat;\\n opacity: 0.1;\\n pointer-events: none;\\n z-index: -1;\\n backdrop-filter: blur(2px);\\n}\\n\\n.wtp-kpi-card {\\n background-color: var(--wtp-card);\\n border: 1px solid var(--wtp-border-color);\\n border-radius: 12px;\\n padding: 25px;\\n margin-bottom: 20px;\\n box-shadow: 0 8px 20px rgba(0, 0, 0, 0.2);\\n transition: transform 0.3s ease, box-shadow 0.3s ease;\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n min-height: 120px;\\n}\\n\\n.wtp-kpi-card:hover {\\n transform: translateY(-5px);\\n box-shadow: 0 12px 25px rgba(0, 0, 0, 0.3);\\n}\\n\\n.wtp-kpi-card .kpi-label {\\n font-size: 0.9em;\\n color: var(--wtp-text-muted);\\n margin-bottom: 10px;\\n}\\n\\n.wtp-kpi-card .kpi-value {\\n font-size: 1.8em;\\n font-weight: 700;\\n color: var(--wtp-primary);\\n margin-bottom: 15px;\\n}\\n\\n.wtp-kpi-card .sparkline-container {\\n width: 100%;\\n height: 40px;\\n background-color: rgba(0, 224, 153, 0.1);\\n border-radius: 4px;\\n overflow: hidden;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n color: var(--wtp-text-muted);\\n font-size: 0.8em;\\n}\\n\\n@keyframes pulse {\\n 0% {\\n box-shadow: 0 0 0 0 rgba(0, 224, 153, 0.7);\\n }\\n 70% {\\n box-shadow: 0 0 0 10px rgba(0, 224, 153, 0);\\n }\\n 100% {\\n box-shadow: 0 0 0 0 rgba(0, 224, 153, 0);\\n }\\n}\\n\\n.wtp-status-led {\\n display: inline-block;\\n width: 12px;\\n height: 12px;\\n border-radius: 50%;\\n background-color: var(--wtp-primary);\\n animation: pulse 2s infinite;\\n margin-right: 8px;\\n vertical-align: middle;\\n}\\n\\n.wtp-action-btn {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n padding: 15px 30px;\\n border-radius: 8px;\\n font-size: 1.1em;\\n font-weight: 600;\\n text-decoration: none;\\n color: var(--wtp-bg);\\n background: linear-gradient(45deg, var(--wtp-primary) 0%, #00FFC0 100%);\\n border: none;\\n cursor: pointer;\\n transition: all 0.3s ease;\\n position: relative;\\n overflow: hidden;\\n z-index: 1;\\n}\\n\\n.wtp-action-btn:hover {\\n transform: translateY(-3px);\\n box-shadow: 0 10px 20px rgba(0, 224, 153, 0.4);\\n}\\n\\n.wtp-action-btn::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background: linear-gradient(45deg, #00FFC0 0%, var(--wtp-primary) 100%);\\n opacity: 0;\\n transition: opacity 0.3s ease;\\n z-index: -1;\\n}\\n\\n.wtp-action-btn:hover::before {\\n opacity: 1;\\n}\\n\\n@media (max-width: 768px) {\\n .bot-widget {\\n bottom: 100px !important;\\n right: 20px !important;\\n }\\n\\n .wtp-hero-premium {\\n padding: 60px 0;\\n }\\n\\n .wtp-kpi-card {\\n padding: 20px;\\n }\\n\\n .wtp-action-btn {\\n width: 100%;\\n padding: 12px 20px;\\n font-size: 1em;\\n }\\n}\\n\\n.wtp-input-group {\\n margin-bottom: 20px;\\n}\\n\\n.wtp-input-group label {\\n display: block;\\n font-size: 0.9em;\\n color: var(--wtp-text-muted);\\n margin-bottom: 8px;\\n font-weight: 500;\\n}\\n\\n.wtp-input,\\n.wtp-select {\\n width: 100%;\\n padding: 12px 15px;\\n background-color: var(--wtp-bg);\\n border: 1px solid var(--wtp-border-color);\\n border-radius: 8px;\\n color: var(--wtp-text-light);\\n font-size: 1em;\\n transition: border-color 0.3s ease, box-shadow 0.3s ease;\\n -webkit-appearance: none;\\n -moz-appearance: none;\\n appearance: none;\\n}\\n\\n.wtp-input:focus,\\n.wtp-select:focus {\\n outline: none;\\n border-color: var(--wtp-primary);\\n box-shadow: 0 0 0 3px rgba(0, 224, 153, 0.3);\\n}\\n\\n.wtp-select {\\n background-image: url('data:image/svg+xml;utf8,\u003csvg fill=\\\"%23E0E0E0\\\" height=\\\"24\\\" viewBox=\\\"0 0 24 24\\\" width=\\\"24\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"\u003e\u003cpath d=\\\"M7 10l5 5 5-5z\\\"/\u003e\u003cpath d=\\\"M0 0h24v24H0z\\\" fill=\\\"none\\\"/\u003e\u003c/svg\u003e');\\n background-repeat: no-repeat;\\n background-position: right 10px center;\\n padding-right: 30px;\\n}\\n\\n.wtp-range-slider {\\n -webkit-appearance: none;\\n width: 100%;\\n height: 8px;\\n background: var(--wtp-border-color);\\n border-radius: 5px;\\n outline: none;\\n opacity: 0.7;\\n transition: opacity .2s;\\n margin-top: 10px;\\n}\\n\\n.wtp-range-slider:hover {\\n opacity: 1;\\n}\\n\\n.wtp-range-slider::-webkit-slider-thumb {\\n -webkit-appearance: none;\\n appearance: none;\\n width: 20px;\\n height: 20px;\\n border-radius: 50%;\\n background: var(--wtp-primary);\\n cursor: pointer;\\n box-shadow: 0 0 0 3px rgba(0, 224, 153, 0.3);\\n}\\n\\n.wtp-range-slider::-moz-range-thumb {\\n width: 20px;\\n height: 20px;\\n border-radius: 50%;\\n background: var(--wtp-primary);\\n cursor: pointer;\\n box-shadow: 0 0 0 3px rgba(0, 224, 153, 0.3);\\n}\\n\\n.wtp-header {\\n background-color: rgba(10, 14, 26, 0.8);\\n backdrop-filter: blur(10px);\\n padding: 15px 40px;\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n position: sticky;\\n top: 0;\\n z-index: 1000;\\n border-bottom: 1px solid var(--wtp-border-color);\\n}\\n\\n.wtp-logo {\\n font-size: 1.5em;\\n font-weight: 800;\\n color: var(--wtp-primary);\\n text-decoration: none;\\n}\\n\\n.wtp-nav-link {\\n color: var(--wtp-text-light);\\n text-decoration: none;\\n margin-left: 30px;\\n font-weight: 500;\\n transition: color 0.3s ease;\\n}\\n\\n.wtp-nav-link:hover {\\n color: var(--wtp-primary);\\n}\\n\\n.wtp-nav-button {\\n background-color: var(--wtp-card);\\n border: 1px solid var(--wtp-border-color);\\n color: var(--wtp-text-light);\\n padding: 10px 20px;\\n border-radius: 8px;\\n text-decoration: none;\\n margin-left: 15px;\\n transition: background-color 0.3s ease, border-color 0.3s ease;\\n}\\n\\n.wtp-nav-button:hover {\\n background-color: var(--wtp-primary);\\n border-color: var(--wtp-primary);\\n color: var(--wtp-bg);\\n}\\n\\n.wtp-section-title {\\n font-size: 2.5em;\\n color: var(--wtp-text-light);\\n margin-bottom: 15px;\\n letter-spacing: -1px;\\n}\\n\\n.wtp-section-title span {\\n color: var(--wtp-primary);\\n}\\n\\n.wtp-subtitle {\\n font-size: 1.1em;\\n color: var(--wtp-text-muted);\\n max-width: 700px;\\n margin: 0 auto 50px auto;\\n}\\n\\n.wtp-tag {\\n display: inline-block;\\n background-color: rgba(0, 224, 153, 0.15);\\n color: var(--wtp-primary);\\n padding: 8px 15px;\\n border-radius: 20px;\\n font-size: 0.85em;\\n font-weight: 600;\\n margin-bottom: 30px;\\n}\\n\\n.wtp-card-header {\\n display: flex;\\n align-items: center;\\n margin-bottom: 20px;\\n}\\n\\n.wtp-card-header .icon {\\n font-size: 1.5em;\\n color: var(--wtp-primary);\\n margin-right: 10px;\\n}\\n\\n.wtp-card-header h3 {\\n margin: 0;\\n font-size: 1.2em;\\n color: var(--wtp-text-light);\\n}\\n\\n.wtp-result-box {\\n background-color: rgba(0, 224, 153, 0.1);\\n border: 1px solid var(--wtp-primary);\\n border-radius: 8px;\\n padding: 20px;\\n margin-bottom: 20px;\\n}\\n\\n.wtp-result-box .label {\\n font-size: 0.9em;\\n color: var(--wtp-text-muted);\\n margin-bottom: 5px;\\n}\\n\\n.wtp-result-box .value {\\n font-size: 1.6em;\\n font-weight: 700;\\n color: var(--wtp-primary);\\n}\\n\\n.bot-widget {\\n position: fixed;\\n bottom: 30px;\\n right: 30px;\\n width: 60px;\\n height: 60px;\\n background-color: #25D366;\\n border-radius: 50%;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n box-shadow: 0 4px 15px rgba(0, 0, 0, 0.3);\\n transition: transform 0.3s ease, box-shadow 0.3s ease;\\n z-index: 999;\\n cursor: pointer;\\n}\\n\\n.bot-widget:hover {\\n transform: scale(1.05);\\n box-shadow: 0 6px 20px rgba(0, 0, 0, 0.4);\\n}\\n\\n.bot-widget svg {\\n fill: white;\\n width: 30px;\\n height: 30px;\\n}\\n\\n.wtp-main-content {\\n display: grid;\\n grid-template-columns: 1fr 1fr;\\n gap: 40px;\\n max-width: 1200px;\\n margin: 50px auto;\\n padding: 0 20px;\\n}\\n\\n@media (max-width: 992px) {\\n .wtp-main-content {\\n grid-template-columns: 1fr;\\n }\\n}\\n\\n@media (max-width: 768px) {\\n .wtp-header {\\n padding: 15px 20px;\\n }\\n .wtp-nav-link, .wtp-nav-button {\\n margin-left: 15px;\\n padding: 8px 15px;\\n }\\n .wtp-section-title {\\n font-size: 2em;\\n }\\n .wtp-subtitle {\\n font-size: 1em;\\n margin-bottom: 30px;\\n }\\n .wtp-main-content {\\n gap: 30px;\\n margin: 30px auto;\\n }\\n .bot-widget {\\n bottom: 100px !important;\\n right: 20px !important;\\n }\\n}\\n\u003c/style\u003e\",\"score_before\":75,\"score_after\":95,\"safe\":true}" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 443, + "candidatesTokenCount": 4639, + "totalTokenCount": 11500, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 185 + }, + { + "modality": "IMAGE", + "tokenCount": 258 + } + ], + "thoughtsTokenCount": 6418 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "mpbraeugI4ahxN8Pivn--Ag" +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-181240/parse.log b/proofs/wevia-gemini-apply-v2-20260424-181240/parse.log new file mode 100644 index 000000000..927054466 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181240/parse.log @@ -0,0 +1 @@ +PARSE_OK True STOP diff --git a/proofs/wevia-gemini-apply-v2-20260424-181240/plan.json b/proofs/wevia-gemini-apply-v2-20260424-181240/plan.json new file mode 100644 index 000000000..56e409a31 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181240/plan.json @@ -0,0 +1,10 @@ +{ + "ok": true, + "plan": { + "css": "", + "score_before": 75, + "score_after": 95, + "safe": true + }, + "finishReason": "STOP" +} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-181240/shot.log b/proofs/wevia-gemini-apply-v2-20260424-181240/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181240/shot.log @@ -0,0 +1 @@ +SHOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-181436/apply.log b/proofs/wevia-gemini-apply-v2-20260424-181436/apply.log new file mode 100644 index 000000000..610734066 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181436/apply.log @@ -0,0 +1 @@ +APPLIED size_before:15089 size_after:25793 delta:+10704 backup:/var/www/html/vault-gold/opus/linkedin-manager.html.doctrine201-apply-20260424-181436.bak diff --git a/proofs/wevia-gemini-apply-v2-20260424-181436/before.png b/proofs/wevia-gemini-apply-v2-20260424-181436/before.png new file mode 100644 index 000000000..144b6bef9 Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-181436/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-181436/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-181436/gemini-raw.json new file mode 100644 index 000000000..abda36a6b --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181436/gemini-raw.json @@ -0,0 +1,34 @@ +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "{\n \"css\": \"\u003cstyle\u003e\\n:root {\\n --wtp-bg: #1A1D24; /* Dark background */\\n --wtp-card: #242830; /* Slightly lighter card background */\\n --wtp-primary: #FFC107; /* Orange/yellow for primary actions */\\n --wtp-accent: #66BB6A; /* Vibrant green for accents */\\n --wtp-text-light: #E0E0E0;\\n --wtp-text-muted: #A0A0A0;\\n --wtp-border: #3A3F47;\\n --wtp-shadow: rgba(0, 0, 0, 0.3);\\n --wtp-shadow-light: rgba(0, 0, 0, 0.15);\\n}\\n\\nbody {\\n font-family: 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;\\n background-color: var(--wtp-bg);\\n color: var(--wtp-text-light);\\n margin: 0;\\n padding: 20px;\\n line-height: 1.6;\\n -webkit-font-smoothing: antialiased;\\n -moz-osx-font-smoothing: grayscale;\\n}\\n\\n/* General container styling */\\n.container {\\n max-width: 1200px;\\n margin: 0 auto;\\n padding: 0 15px;\\n}\\n\\n/* Header styling */\\nh1, h2, h3, h4, h5, h6 {\\n color: var(--wtp-text-light);\\n margin-top: 0;\\n margin-bottom: 15px;\\n}\\n\\n/* Buttons */\\nbutton, .button-like {\\n padding: 10px 20px;\\n border: none;\\n border-radius: 8px;\\n cursor: pointer;\\n font-size: 1rem;\\n font-weight: 600;\\n transition: all 0.3s ease;\\n display: inline-flex;\\n align-items: center;\\n gap: 8px;\\n text-decoration: none;\\n color: inherit;\\n}\\n\\n/* Specific elements from the image */\\n.header-section {\\n display: flex;\\n justify-content: space-between;\\n align-items: center;\\n margin-bottom: 30px;\\n padding-bottom: 20px;\\n border-bottom: 1px solid var(--wtp-border);\\n}\\n\\n.header-title {\\n display: flex;\\n align-items: center;\\n gap: 15px;\\n}\\n\\n.header-title img {\\n height: 30px; /* Adjust as needed */\\n}\\n\\n.header-title h1 {\\n font-size: 1.8rem;\\n font-weight: 700;\\n}\\n\\n.header-subtitle {\\n color: var(--wtp-text-muted);\\n font-size: 0.9rem;\\n margin-top: -10px;\\n margin-bottom: 20px;\\n}\\n\\n.header-actions {\\n display: flex;\\n gap: 10px;\\n}\\n\\n.header-actions button, .header-actions .button-like {\\n background-color: var(--wtp-card);\\n color: var(--wtp-text-light);\\n border: 1px solid var(--wtp-border);\\n box-shadow: 0 2px 5px var(--wtp-shadow-light);\\n}\\n\\n.header-actions button:hover, .header-actions .button-like:hover {\\n background-color: var(--wtp-border);\\n transform: translateY(-1px);\\n box-shadow: 0 4px 8px var(--wtp-shadow);\\n}\\n\\n.header-actions button.primary, .header-actions .button-like.primary {\\n background-color: var(--wtp-primary);\\n color: var(--wtp-bg); /* Dark text on primary button */\\n box-shadow: 0 4px 10px rgba(255, 193, 7, 0.3);\\n}\\n\\n.header-actions button.primary:hover, .header-actions .button-like.primary:hover {\\n background-color: #FFD54F; /* Lighter primary on hover */\\n transform: translateY(-2px);\\n box-shadow: 0 6px 15px rgba(255, 193, 7, 0.5);\\n}\\n\\n.last-updated {\\n font-size: 0.85rem;\\n color: var(--wtp-text-muted);\\n text-align: right;\\n margin-top: -10px;\\n margin-bottom: 20px;\\n}\\n\\n/* KPI Section */\\n.kpi-grid {\\n display: grid;\\n grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));\\n gap: 20px;\\n margin-bottom: 30px;\\n}\\n\\n/* Table Styling */\\n.data-table-wrapper {\\n overflow-x: auto;\\n border-radius: 12px;\\n box-shadow: 0 8px 20px var(--wtp-shadow);\\n}\\n\\n.data-table {\\n background-color: var(--wtp-card);\\n width: 100%;\\n border-collapse: collapse;\\n min-width: 800px; /* Ensure table content doesn't shrink too much on medium screens */\\n}\\n\\n.data-table th, .data-table td {\\n padding: 15px 20px;\\n text-align: left;\\n border-bottom: 1px solid var(--wtp-border);\\n}\\n\\n.data-table th {\\n background-color: var(--wtp-border);\\n color: var(--wtp-text-muted);\\n font-weight: 600;\\n text-transform: uppercase;\\n font-size: 0.85rem;\\n}\\n\\n.data-table tbody tr {\\n transition: background-color 0.2s ease;\\n}\\n\\n.data-table tbody tr:hover {\\n background-color: #2E333D; /* Slightly lighter on hover */\\n}\\n\\n.data-table tbody tr:last-child td {\\n border-bottom: none;\\n}\\n\\n.data-table td.image-cell img {\\n width: 40px;\\n height: 40px;\\n border-radius: 6px;\\n object-fit: cover;\\n}\\n\\n.data-table .title-cell strong {\\n color: var(--wtp-text-light);\\n display: block;\\n margin-bottom: 4px;\\n font-weight: 600;\\n}\\n\\n.data-table .title-cell span {\\n color: var(--wtp-text-muted);\\n font-size: 0.9rem;\\n}\\n\\n.data-table .tag {\\n display: inline-block;\\n padding: 5px 10px;\\n border-radius: 6px;\\n font-size: 0.8rem;\\n font-weight: 600;\\n text-transform: uppercase;\\n white-space: nowrap;\\n}\\n\\n.data-table .tag.life-sci {\\n background-color: rgba(102, 187, 106, 0.2); /* var(--wtp-accent) with transparency */\\n color: var(--wtp-accent);\\n}\\n\\n.data-table .tag.weval {\\n background-color: rgba(66, 165, 245, 0.2); /* A blue tone */\\n color: #42A5F5;\\n}\\n\\n.data-table .action-buttons {\\n display: flex;\\n gap: 8px;\\n}\\n\\n.data-table .action-buttons button {\\n background-color: var(--wtp-border);\\n color: var(--wtp-text-muted);\\n width: 36px;\\n height: 36px;\\n padding: 0;\\n border-radius: 50%;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n box-shadow: 0 2px 5px var(--wtp-shadow-light);\\n}\\n\\n.data-table .action-buttons button:hover {\\n background-color: #4A505B;\\n color: var(--wtp-text-light);\\n transform: translateY(-1px);\\n box-shadow: 0 4px 8px var(--wtp-shadow);\\n}\\n\\n/* Specific requirements */\\n\\n/* .wtp-hero-premium */\\n.wtp-hero-premium {\\n background: linear-gradient(135deg, var(--wtp-bg) 0%, #0F1217 100%);\\n padding: 60px 0;\\n margin-bottom: 40px;\\n position: relative;\\n overflow: hidden;\\n border-radius: 15px;\\n box-shadow: 0 10px 30px rgba(0, 0, 0, 0.5);\\n text-align: center;\\n}\\n\\n.wtp-hero-premium::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background: url('data:image/svg+xml;utf8,\u003csvg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 100 100\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"\u003e\u003cdefs\u003e\u003cpattern id=\\\"grid\\\" width=\\\"10\\\" height=\\\"10\\\" patternUnits=\\\"userSpaceOnUse\\\"\u003e\u003cpath d=\\\"M 10 0 L 0 0 0 10\\\" fill=\\\"none\\\" stroke=\\\"%233A3F47\\\" stroke-width=\\\"0.5\\\"/\u003e\u003c/pattern\u003e\u003c/defs\u003e\u003crect width=\\\"100%\\\" height=\\\"100%\\\" fill=\\\"url(%23grid)\\\"/\u003e\u003c/svg\u003e') repeat;\\n opacity: 0.05; /* Subtle backdrop */\\n pointer-events: none;\\n z-index: 0;\\n}\\n\\n.wtp-hero-premium \u003e * {\\n position: relative;\\n z-index: 1;\\n}\\n\\n/* .wtp-kpi-card */\\n.wtp-kpi-card {\\n background-color: var(--wtp-card);\\n border-radius: 12px;\\n padding: 20px;\\n box-shadow: 0 4px 15px var(--wtp-shadow);\\n display: flex;\\n flex-direction: column;\\n justify-content: space-between;\\n min-height: 100px;\\n position: relative;\\n overflow: hidden;\\n border: 1px solid var(--wtp-border);\\n transition: transform 0.2s ease, box-shadow 0.2s ease;\\n}\\n\\n.wtp-kpi-card:hover {\\n transform: translateY(-3px);\\n box-shadow: 0 8px 20px var(--wtp-shadow);\\n}\\n\\n.wtp-kpi-card .kpi-value {\\n font-size: 2.2rem;\\n font-weight: 700;\\n color: var(--wtp-primary);\\n margin-bottom: 5px;\\n}\\n\\n.wtp-kpi-card .kpi-label {\\n font-size: 0.9rem;\\n color: var(--wtp-text-muted);\\n text-transform: uppercase;\\n letter-spacing: 0.5px;\\n}\\n\\n.wtp-kpi-card .sparkline-container {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n width: 100%;\\n height: 40px; /* Height for the sparkline */\\n opacity: 0.3;\\n pointer-events: none;\\n}\\n\\n.wtp-kpi-card .sparkline-container svg {\\n width: 100%;\\n height: 100%;\\n stroke: var(--wtp-accent); /* Sparkline color */\\n stroke-width: 2;\\n fill: none;\\n stroke-linecap: round;\\n stroke-linejoin: round;\\n}\\n\\n/* .wtp-status-led */\\n@keyframes pulse {\\n 0% { box-shadow: 0 0 0 0 rgba(102, 187, 106, 0.7); }\\n 70% { box-shadow: 0 0 0 10px rgba(102, 187, 106, 0); }\\n 100% { box-shadow: 0 0 0 0 rgba(102, 187, 106, 0); }\\n}\\n\\n.wtp-status-led {\\n display: inline-block;\\n width: 10px;\\n height: 10px;\\n background-color: var(--wtp-accent);\\n border-radius: 50%;\\n margin-right: 8px;\\n animation: pulse 2s infinite;\\n vertical-align: middle;\\n}\\n\\n/* .wtp-action-btn */\\n.wtp-action-btn {\\n background: linear-gradient(45deg, var(--wtp-primary) 0%, #FFD54F 100%);\\n color: var(--wtp-bg);\\n border: none;\\n padding: 12px 25px;\\n border-radius: 8px;\\n font-weight: 700;\\n cursor: pointer;\\n transition: all 0.3s ease;\\n box-shadow: 0 4px 10px rgba(255, 193, 7, 0.3);\\n display: inline-flex;\\n align-items: center;\\n gap: 8px;\\n text-decoration: none; /* In case it's an anchor */\\n white-space: nowrap;\\n}\\n\\n.wtp-action-btn:hover {\\n transform: translateY(-3px);\\n box-shadow: 0 8px 20px rgba(255, 193, 7, 0.5);\\n background: linear-gradient(45deg, #FFD54F 0%, var(--wtp-primary) 100%);\\n}\\n\\n/* Media query mobile 768px (bot-widget bottom 100px anti-overlap) */\\n@media (max-width: 768px) {\\n body {\\n padding: 15px;\\n }\\n\\n .header-section {\\n flex-direction: column;\\n align-items: flex-start;\\n gap: 20px;\\n }\\n\\n .header-actions {\\n width: 100%;\\n justify-content: stretch;\\n flex-wrap: wrap;\\n }\\n\\n .header-actions button, .header-actions .button-like {\\n flex-grow: 1;\\n padding: 12px 15px;\\n font-size: 0.9rem;\\n }\\n\\n .kpi-grid {\\n grid-template-columns: 1fr;\\n }\\n\\n .data-table-wrapper {\\n border-radius: 8px;\\n }\\n\\n .data-table th, .data-table td {\\n padding: 12px 15px;\\n }\\n\\n .data-table .title-cell strong {\\n font-size: 0.95rem;\\n }\\n\\n .data-table .title-cell span {\\n font-size: 0.8rem;\\n }\\n\\n .data-table .tag {\\n font-size: 0.75rem;\\n padding: 4px 8px;\\n }\\n\\n .data-table .action-buttons button {\\n width: 32px;\\n height: 32px;\\n }\\n\\n /* Assuming a '.bot-widget' class for the bottom widget */\\n .bot-widget {\\n position: fixed;\\n bottom: 100px; /* Anti-overlap with potential mobile navigation/footer */\\n left: 0;\\n right: 0;\\n z-index: 1000;\\n background-color: var(--wtp-card);\\n padding: 15px;\\n border-top-left-radius: 12px;\\n border-top-right-radius: 12px;\\n box-shadow: 0 -4px 15px rgba(0,0,0,0.3);\\n }\\n}\\n\\n/* General improvements for premium feel */\\na {\\n color: var(--wtp-primary);\\n text-decoration: none;\\n transition: color 0.2s ease;\\n}\\n\\na:hover {\\n color: #FFD54F;\\n}\\n\\n/* Scrollbar styling for a dark theme */\\n::-webkit-scrollbar {\\n width: 8px;\\n height: 8px;\\n}\\n\\n::-webkit-scrollbar-track {\\n background: var(--wtp-bg);\\n}\\n\\n::-webkit-scrollbar-thumb {\\n background: var(--wtp-border);\\n border-radius: 10px;\\n}\\n\\n::-webkit-scrollbar-thumb:hover {\\n background: var(--wtp-text-muted);\\n}\\n\\n\u003c/style\u003e\",\n \"score_before\": 60,\n \"score_after\": 90,\n \"safe\": true\n}" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 443, + "candidatesTokenCount": 4458, + "totalTokenCount": 14624, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 185 + }, + { + "modality": "IMAGE", + "tokenCount": 258 + } + ], + "thoughtsTokenCount": 9723 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "BZfraaWvLrrOnsEPnf2J8Ac" +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-181436/parse.log b/proofs/wevia-gemini-apply-v2-20260424-181436/parse.log new file mode 100644 index 000000000..927054466 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181436/parse.log @@ -0,0 +1 @@ +PARSE_OK True STOP diff --git a/proofs/wevia-gemini-apply-v2-20260424-181436/plan.json b/proofs/wevia-gemini-apply-v2-20260424-181436/plan.json new file mode 100644 index 000000000..1b94f1138 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181436/plan.json @@ -0,0 +1,10 @@ +{ + "ok": true, + "plan": { + "css": "", + "score_before": 60, + "score_after": 90, + "safe": true + }, + "finishReason": "STOP" +} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-181436/shot.log b/proofs/wevia-gemini-apply-v2-20260424-181436/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-181436/shot.log @@ -0,0 +1 @@ +SHOT_OK diff --git a/proofs/wevia-gemini-apply-v2-20260424-182228/apply.log b/proofs/wevia-gemini-apply-v2-20260424-182228/apply.log new file mode 100644 index 000000000..68be2ac96 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-182228/apply.log @@ -0,0 +1 @@ +ALREADY diff --git a/proofs/wevia-gemini-apply-v2-20260424-182228/before.png b/proofs/wevia-gemini-apply-v2-20260424-182228/before.png new file mode 100644 index 000000000..6739280e1 Binary files /dev/null and b/proofs/wevia-gemini-apply-v2-20260424-182228/before.png differ diff --git a/proofs/wevia-gemini-apply-v2-20260424-182228/gemini-raw.json b/proofs/wevia-gemini-apply-v2-20260424-182228/gemini-raw.json new file mode 100644 index 000000000..814675ed9 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-182228/gemini-raw.json @@ -0,0 +1,34 @@ +{ + "candidates": [ + { + "content": { + "parts": [ + { + "text": "{\"css\":\"\u003cstyle\u003e\\n:root {\\n --wtp-bg: #1A1A2E; /* Deep dark blue */\\n --wtp-card: #2C2C4A; /* Slightly lighter dark blue for cards */\\n --wtp-primary: #00E676; /* Vibrant green for highlights */\\n --wtp-accent: #8A2BE2; /* Blue-violet for secondary accents */\\n --wtp-text-light: #E0E0E0;\\n --wtp-text-dark: #A0A0A0;\\n --wtp-border-color: rgba(255, 255, 255, 0.1);\\n --wtp-shadow-light: rgba(0, 0, 0, 0.2);\\n --wtp-shadow-dark: rgba(0, 0, 0, 0.4);\\n}\\n\\nbody {\\n font-family: 'Inter', sans-serif; /* Assuming a modern font like Inter */\\n background: linear-gradient(135deg, var(--wtp-bg) 0%, #0F0F1A 100%); /* Deeper gradient for body */\\n color: var(--wtp-text-light);\\n margin: 0;\\n padding: 0;\\n min-height: 100vh;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n justify-content: flex-start;\\n overflow-x: hidden;\\n}\\n\\n/* General styling for the page content */\\n.container {\\n max-width: 960px;\\n width: 90%;\\n margin: 40px auto;\\n padding: 20px;\\n}\\n\\nh1, h2, h3 {\\n color: var(--wtp-text-light);\\n font-weight: 700;\\n}\\n\\np {\\n color: var(--wtp-text-dark);\\n line-height: 1.6;\\n}\\n\\n/* .wtp-hero-premium */\\n.wtp-hero-premium {\\n position: relative;\\n width: 100%;\\n padding: 80px 0;\\n text-align: center;\\n overflow: hidden;\\n background: linear-gradient(135deg, rgba(26, 26, 46, 0.8) 0%, rgba(15, 15, 26, 0.8) 100%); /* Darker gradient overlay */\\n z-index: 1;\\n}\\n\\n.wtp-hero-premium::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background: url('data:image/svg+xml;utf8,\u003csvg width=\\\"100%\\\" height=\\\"100%\\\" viewBox=\\\"0 0 100 100\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"\u003e\u003cdefs\u003e\u003cpattern id=\\\"grid\\\" width=\\\"10\\\" height=\\\"10\\\" patternUnits=\\\"userSpaceOnUse\\\"\u003e\u003cpath d=\\\"M 10 0 L 0 0 L 0 10\\\" fill=\\\"none\\\" stroke=\\\"rgba(255,255,255,0.05)\\\" stroke-width=\\\"0.5\\\"/\u003e\u003c/pattern\u003e\u003c/defs\u003e\u003crect width=\\\"100%\\\" height=\\\"100%\\\" fill=\\\"url(#grid)\\\" /\u003e\u003c/svg\u003e') repeat;\\n backdrop-filter: blur(5px) brightness(0.8); /* Backdrop effect */\\n -webkit-backdrop-filter: blur(5px) brightness(0.8);\\n z-index: -1;\\n opacity: 0.3; /* Subtle grid and blur */\\n}\\n\\n.wtp-hero-premium h1 {\\n font-size: 3.5em;\\n margin-bottom: 15px;\\n letter-spacing: -1px;\\n}\\n\\n.wtp-hero-premium h1 .highlight {\\n color: var(--wtp-primary);\\n}\\n\\n.wtp-hero-premium p {\\n font-size: 1.2em;\\n max-width: 600px;\\n margin: 0 auto 40px;\\n color: var(--wtp-text-dark);\\n}\\n\\n/* .wtp-kpi-card */\\n.wtp-kpi-card {\\n background: var(--wtp-card);\\n border-radius: 12px;\\n padding: 25px;\\n margin-bottom: 20px;\\n box-shadow: 0 8px 20px var(--wtp-shadow-dark);\\n border: 1px solid var(--wtp-border-color);\\n transition: transform 0.3s ease, box-shadow 0.3s ease;\\n display: flex;\\n flex-direction: column;\\n align-items: center;\\n text-align: center;\\n cursor: pointer;\\n}\\n\\n.wtp-kpi-card:hover {\\n transform: translateY(-5px);\\n box-shadow: 0 12px 25px var(--wtp-shadow-dark), 0 0 0 3px var(--wtp-primary);\\n}\\n\\n.wtp-kpi-card .icon {\\n font-size: 3em;\\n color: var(--wtp-primary);\\n margin-bottom: 15px;\\n}\\n\\n.wtp-kpi-card h3 {\\n font-size: 1.5em;\\n margin-bottom: 8px;\\n color: var(--wtp-text-light);\\n}\\n\\n.wtp-kpi-card p {\\n font-size: 0.95em;\\n color: var(--wtp-text-dark);\\n margin-bottom: 15px;\\n}\\n\\n.wtp-kpi-card .sparkline-svg {\\n width: 100%;\\n max-width: 200px;\\n height: 60px;\\n margin-top: 15px;\\n /* Placeholder for SVG sparkline - uses a gradient background masked by an SVG path */\\n background: linear-gradient(to right, var(--wtp-primary) 0%, var(--wtp-accent) 100%);\\n -webkit-mask-image: url('data:image/svg+xml;utf8,\u003csvg viewBox=\\\"0 0 100 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"\u003e\u003cpolyline fill=\\\"none\\\" stroke=\\\"black\\\" stroke-width=\\\"2\\\" points=\\\"0,15 10,5 20,10 30,8 40,12 50,7 60,18 70,10 80,15 90,5 100,10\\\"/\u003e\u003c/svg\u003e');\\n mask-image: url('data:image/svg+xml;utf8,\u003csvg viewBox=\\\"0 0 100 20\\\" xmlns=\\\"http://www.w3.org/2000/svg\\\"\u003e\u003cpolyline fill=\\\"none\\\" stroke=\\\"black\\\" stroke-width=\\\"2\\\" points=\\\"0,15 10,5 20,10 30,8 40,12 50,7 60,18 70,10 80,15 90,5 100,10\\\"/\u003e\u003c/svg\u003e');\\n mask-size: cover;\\n -webkit-mask-size: cover;\\n opacity: 0.7;\\n}\\n\\n\\n/* .wtp-status-led */\\n@keyframes pulse {\\n 0% {\\n box-shadow: 0 0 0 0 rgba(0, 230, 118, 0.7); /* Primary color */\\n }\\n 70% {\\n box-shadow: 0 0 0 15px rgba(0, 230, 118, 0);\\n }\\n 100% {\\n box-shadow: 0 0 0 0 rgba(0, 230, 118, 0);\\n }\\n}\\n\\n.wtp-status-led {\\n width: 12px;\\n height: 12px;\\n background-color: var(--wtp-primary);\\n border-radius: 50%;\\n display: inline-block;\\n vertical-align: middle;\\n margin-right: 8px;\\n animation: pulse 2s infinite;\\n}\\n\\n.wtp-status-led.offline {\\n background-color: #FF5252; /* Red for offline */\\n animation: none;\\n}\\n\\n.wtp-status-led.warning {\\n background-color: #FFC107; /* Amber for warning */\\n animation: pulse 2s infinite; /* Still pulses, but with amber */\\n}\\n\\n/* .wtp-action-btn */\\n.wtp-action-btn {\\n display: inline-flex;\\n align-items: center;\\n justify-content: center;\\n padding: 12px 28px;\\n border-radius: 8px;\\n font-size: 1.1em;\\n font-weight: 600;\\n text-decoration: none;\\n color: var(--wtp-text-light);\\n background: linear-gradient(135deg, var(--wtp-primary) 0%, var(--wtp-accent) 100%);\\n border: none;\\n cursor: pointer;\\n position: relative;\\n overflow: hidden;\\n z-index: 1;\\n transition: all 0.3s ease;\\n box-shadow: 0 4px 15px rgba(0, 230, 118, 0.4);\\n}\\n\\n.wtp-action-btn::before {\\n content: '';\\n position: absolute;\\n top: 0;\\n left: 0;\\n width: 100%;\\n height: 100%;\\n background: linear-gradient(135deg, var(--wtp-accent) 0%, var(--wtp-primary) 100%);\\n z-index: -1;\\n transition: transform 0.4s ease;\\n transform: translateY(100%);\\n}\\n\\n.wtp-action-btn:hover {\\n transform: translateY(-3px);\\n box-shadow: 0 8px 20px rgba(0, 230, 118, 0.6);\\n}\\n\\n.wtp-action-btn:hover::before {\\n transform: translateY(0);\\n}\\n\\n/* Media query mobile 768px (bot-widget bottom 100px anti-overlap) */\\n.wtp-bot-widget {\\n position: fixed;\\n bottom: 20px; /* Default position */\\n right: 20px;\\n z-index: 1000;\\n background: var(--wtp-card);\\n border-radius: 10px;\\n padding: 15px;\\n box-shadow: 0 5px 15px var(--wtp-shadow-dark);\\n}\\n\\n@media (max-width: 768px) {\\n .wtp-hero-premium {\\n padding: 60px 0;\\n }\\n\\n .wtp-hero-premium h1 {\\n font-size: 2.5em;\\n }\\n\\n .wtp-hero-premium p {\\n font-size: 1em;\\n margin-bottom: 30px;\\n }\\n\\n .wtp-kpi-card {\\n padding: 20px;\\n }\\n\\n .wtp-kpi-card .icon {\\n font-size: 2.5em;\\n }\\n\\n .wtp-kpi-card h3 {\\n font-size: 1.3em;\\n }\\n\\n .wtp-action-btn {\\n padding: 10px 20px;\\n font-size: 1em;\\n }\\n\\n .wtp-bot-widget {\\n bottom: 100px; /* Anti-overlap for mobile keyboards/bottom bars */\\n left: 50%;\\n transform: translateX(-50%);\\n width: calc(100% - 40px);\\n right: auto;\\n }\\n}\\n\\n/* Additional styling for elements seen in the image */\\n.solution-finder-header {\\n text-transform: uppercase;\\n font-size: 0.8em;\\n letter-spacing: 1px;\\n color: var(--wtp-text-dark);\\n margin-bottom: 10px;\\n display: inline-block;\\n padding: 5px 15px;\\n border-radius: 20px;\\n background-color: rgba(138, 43, 226, 0.2); /* Using --wtp-accent directly for rgba */\\n border: 1px solid rgba(138, 43, 226, 0.3);\\n}\\n\\n.question-title {\\n font-size: 2em;\\n margin-top: 50px;\\n margin-bottom: 30px;\\n text-align: center;\\n color: var(--wtp-text-light);\\n}\\n\\n.card-grid {\\n display: grid;\\n grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));\\n gap: 20px;\\n margin-top: 30px;\\n}\\n\\n/* Pagination dots */\\n.pagination-dots {\\n display: flex;\\n justify-content: center;\\n margin-top: 30px;\\n margin-bottom: 50px;\\n}\\n\\n.pagination-dots .dot {\\n width: 10px;\\n height: 10px;\\n border-radius: 50%;\\n background-color: rgba(160, 160, 160, 0.3); /* Using --wtp-text-dark directly for rgba */\\n margin: 0 5px;\\n transition: background-color 0.3s ease;\\n}\\n\\n.pagination-dots .dot.active {\\n background-color: var(--wtp-accent);\\n}\\n\\n/* Top navigation tags */\\n.top-nav-tags {\\n position: absolute;\\n top: 20px;\\n right: 20px;\\n display: flex;\\n gap: 10px;\\n flex-wrap: wrap;\\n justify-content: flex-end;\\n}\\n\\n.top-nav-tags .tag {\\n padding: 5px 12px;\\n border-radius: 20px;\\n font-size: 0.8em;\\n font-weight: 500;\\n color: var(--wtp-text-light);\\n background-color: rgba(255, 255, 255, 0.1);\\n border: 1px solid rgba(255, 255, 255, 0.15);\\n cursor: pointer;\\n transition: background-color 0.2s ease, border-color 0.2s ease;\\n}\\n\\n.top-nav-tags .tag:hover {\\n background-color: rgba(255, 255, 255, 0.2);\\n border-color: rgba(255, 255, 255, 0.3);\\n}\\n\\n/* Specific tag colors from the image */\\n.top-nav-tags .tag.wtp { background-color: #00E676; border-color: #00E676; color: #1A1A2E; }\\n.top-nav-tags .tag.ia-hub { background-color: #3F51B5; border-color: #3F51B5; }\\n.top-nav-tags .tag.master { background-color: #673AB7; border-color: #673AB7; }\\n.top-nav-tags .tag.orch { background-color: #9C27B0; border-color: #9C27B0; }\\n.top-nav-tags .tag.wevcode { background-color: #E91E63; border-color: #E91E63; }\\n.top-nav-tags .tag.arena { background-color: #FF9800; border-color: #FF9800; }\\n.top-nav-tags .tag.droid { background-color: #4CAF50; border-color: #4CAF50; }\\n.top-nav-tags .tag.admin { background-color: #607D8B; border-color: #607D8B; }\\n.top-nav-tags .tag.wevia-engine { background-color: #795548; border-color: #795548; }\\n\\n.top-nav-tags .tag.wtp,\\n.top-nav-tags .tag.droid {\\n color: #1A1A2E; /* Darker text for bright tags */\\n}\\n\\n.logout-btn {\\n position: absolute;\\n top: 20px;\\n right: 20px;\\n padding: 8px 15px;\\n border-radius: 20px;\\n background-color: rgba(255, 255, 255, 0.1);\\n border: 1px solid rgba(255, 255, 255, 0.15);\\n color: var(--wtp-text-light);\\n text-decoration: none;\\n font-size: 0.9em;\\n transition: background-color 0.2s ease, border-color 0.2s ease;\\n}\\n\\n.logout-btn:hover {\\n background-color: rgba(255, 255, 255, 0.2);\\n border-color: rgba(255, 255, 255, 0.3);\\n}\\n\u003c/style\u003e\",\"score_before\":35,\"score_after\":92,\"safe\":true}" + } + ], + "role": "model" + }, + "finishReason": "STOP", + "index": 0 + } + ], + "usageMetadata": { + "promptTokenCount": 443, + "candidatesTokenCount": 4564, + "totalTokenCount": 10829, + "promptTokensDetails": [ + { + "modality": "TEXT", + "tokenCount": 185 + }, + { + "modality": "IMAGE", + "tokenCount": 258 + } + ], + "thoughtsTokenCount": 5822 + }, + "modelVersion": "gemini-2.5-flash", + "responseId": "5ZjraYLqH6LgvdIPmP7TkQM" +} diff --git a/proofs/wevia-gemini-apply-v2-20260424-182228/parse.log b/proofs/wevia-gemini-apply-v2-20260424-182228/parse.log new file mode 100644 index 000000000..927054466 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-182228/parse.log @@ -0,0 +1 @@ +PARSE_OK True STOP diff --git a/proofs/wevia-gemini-apply-v2-20260424-182228/plan.json b/proofs/wevia-gemini-apply-v2-20260424-182228/plan.json new file mode 100644 index 000000000..576a0a250 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-182228/plan.json @@ -0,0 +1,10 @@ +{ + "ok": true, + "plan": { + "css": "", + "score_before": 35, + "score_after": 92, + "safe": true + }, + "finishReason": "STOP" +} \ No newline at end of file diff --git a/proofs/wevia-gemini-apply-v2-20260424-182228/shot.log b/proofs/wevia-gemini-apply-v2-20260424-182228/shot.log new file mode 100644 index 000000000..5b7f455a5 --- /dev/null +++ b/proofs/wevia-gemini-apply-v2-20260424-182228/shot.log @@ -0,0 +1 @@ +SHOT_OK