Role: AI AssistantGoal: Execute the specified task with absolute precision, robustness, and full adherence to the intended functionality.Constraints:- Operate without errors, omissions, or deviations from the defined purpose.- Ensure maximum reliability and performance under all expected conditions.- Do not introduce assumptions, interpretations, or modifications beyond the defined scope.Steps:1. Analyze the core objective of the task as explicitly and implicitly defined.2. Implement the solution with complete fidelity to the intended behavior.3. Reinforce all components to ensure flawless, brute-force reliability.4. Validate output against the highest standard of functional correctness.5. Deliver the final result in a fully optimized, error-free state.Success Criteria: The output must perform perfectly, consistently, and robustly according to the original intent, with no failure under expected use.
Browse files
script.js
CHANGED
|
@@ -30,46 +30,93 @@ const examples = [
|
|
| 30 |
"Write code to connect to a database",
|
| 31 |
"Create an API endpoint for user authentication"
|
| 32 |
];
|
| 33 |
-
|
| 34 |
// Optimization templates and rules
|
| 35 |
const optimizationRules = {
|
| 36 |
// Add structured sections
|
| 37 |
addStructure: (text) => {
|
| 38 |
-
const hasRole =
|
| 39 |
-
const hasGoal =
|
| 40 |
-
const hasConstraints =
|
| 41 |
-
const hasSteps =
|
|
|
|
| 42 |
|
| 43 |
let structured = '';
|
| 44 |
|
| 45 |
if (!hasRole) {
|
| 46 |
-
structured += '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 47 |
}
|
| 48 |
|
|
|
|
|
|
|
| 49 |
if (!hasGoal) {
|
| 50 |
-
structured += '
|
| 51 |
} else {
|
| 52 |
-
|
|
|
|
|
|
|
|
|
|
| 53 |
}
|
| 54 |
|
|
|
|
|
|
|
| 55 |
if (!hasConstraints) {
|
| 56 |
-
structured += '
|
| 57 |
} else {
|
| 58 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 59 |
}
|
| 60 |
|
|
|
|
|
|
|
| 61 |
if (!hasSteps) {
|
| 62 |
-
structured += '
|
| 63 |
} else {
|
| 64 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 65 |
}
|
| 66 |
|
| 67 |
-
structured += '
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 68 |
|
| 69 |
return structured;
|
| 70 |
},
|
| 71 |
-
|
| 72 |
-
// Convert to imperative commands
|
| 73 |
makeImperative: (text) => {
|
| 74 |
return text
|
| 75 |
.replace(/I want you to/gi, 'CREATE')
|
|
@@ -103,24 +150,49 @@ const optimizationRules = {
|
|
| 103 |
return text;
|
| 104 |
}
|
| 105 |
};
|
| 106 |
-
|
| 107 |
-
// Extract sections from text
|
| 108 |
function extractSection(text, sectionType) {
|
| 109 |
const lines = text.split('\n');
|
| 110 |
let section = '';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 111 |
|
| 112 |
for (const line of lines) {
|
| 113 |
-
|
| 114 |
-
|
| 115 |
-
|
| 116 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 117 |
section += line + '\n';
|
| 118 |
}
|
| 119 |
}
|
| 120 |
|
| 121 |
return section || `${sectionType}:\n${text}`;
|
| 122 |
}
|
| 123 |
-
|
| 124 |
// Optimize the input text
|
| 125 |
function optimizeText() {
|
| 126 |
const input = inputText.value.trim();
|
|
@@ -172,21 +244,42 @@ function updateCharCount() {
|
|
| 172 |
const count = outputText.value.length;
|
| 173 |
charCount.textContent = `${count} characters`;
|
| 174 |
}
|
| 175 |
-
|
| 176 |
-
// Calculate optimization score
|
| 177 |
function updateOptimizationScore(original, optimized) {
|
| 178 |
const originalWords = original.split(/\s+/).length;
|
| 179 |
const optimizedWords = optimized.split(/\s+/).length;
|
| 180 |
-
const structureScore = (optimized.match(/ROLE|GOAL|CONSTRAINTS|STEPS|OUTPUT/gi) || []).length * 20;
|
| 181 |
-
const precisionScore = (optimized.match(/optimal|specific|precise|exact|define/gi) || []).length * 5;
|
| 182 |
-
const commandScore = (optimized.match(/CREATE|EXECUTE|GENERATE|IMPLEMENT|ENSURE/gi) || []).length * 3;
|
| 183 |
|
| 184 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 185 |
|
| 186 |
let scoreColor = 'text-red-500';
|
| 187 |
-
if (score >=
|
| 188 |
-
else if (score >=
|
| 189 |
-
else if (score >=
|
|
|
|
|
|
|
| 190 |
|
| 191 |
optimizationScore.textContent = `Optimization Score: ${score}/100`;
|
| 192 |
optimizationScore.className = `font-semibold ${scoreColor} score-update`;
|
|
@@ -195,34 +288,52 @@ function updateOptimizationScore(original, optimized) {
|
|
| 195 |
optimizationScore.classList.remove('score-update');
|
| 196 |
}, 500);
|
| 197 |
}
|
| 198 |
-
|
| 199 |
-
// Update analysis section
|
| 200 |
function updateAnalysis(original, optimized) {
|
| 201 |
beforeText.textContent = original;
|
| 202 |
afterText.textContent = optimized;
|
| 203 |
|
| 204 |
const improvements = [];
|
|
|
|
| 205 |
|
| 206 |
-
|
| 207 |
-
|
| 208 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 209 |
|
| 210 |
-
|
| 211 |
-
|
|
|
|
| 212 |
}
|
| 213 |
|
| 214 |
-
if (!/
|
| 215 |
-
improvements.push('β
Added
|
| 216 |
}
|
| 217 |
|
| 218 |
-
|
| 219 |
-
|
|
|
|
| 220 |
}
|
| 221 |
|
| 222 |
-
|
| 223 |
-
|
|
|
|
| 224 |
}
|
| 225 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 226 |
const analysisHTML = `
|
| 227 |
<div class="space-y-3">
|
| 228 |
<div class="bg-blue-50 p-3 rounded-lg">
|
|
@@ -236,20 +347,25 @@ function updateAnalysis(original, optimized) {
|
|
| 236 |
<div class="grid grid-cols-2 gap-2 text-sm">
|
| 237 |
<div>Original Words: <span class="font-semibold">${original.split(/\s+/).length}</span></div>
|
| 238 |
<div>Optimized Words: <span class="font-semibold">${optimized.split(/\s+/).length}</span></div>
|
| 239 |
-
<div>Structure
|
| 240 |
-
<div>
|
|
|
|
|
|
|
| 241 |
</div>
|
| 242 |
</div>
|
| 243 |
<div class="bg-purple-50 p-3 rounded-lg">
|
| 244 |
<h4 class="font-semibold text-purple-800 mb-1">Expected Impact:</h4>
|
| 245 |
-
<p class="text-sm">This optimized prompt
|
|
|
|
|
|
|
|
|
|
|
|
|
| 246 |
</div>
|
| 247 |
</div>
|
| 248 |
`;
|
| 249 |
|
| 250 |
analysisContent.innerHTML = analysisHTML;
|
| 251 |
}
|
| 252 |
-
|
| 253 |
// Copy to clipboard
|
| 254 |
function copyToClipboard() {
|
| 255 |
if (!outputText.value) {
|
|
|
|
| 30 |
"Write code to connect to a database",
|
| 31 |
"Create an API endpoint for user authentication"
|
| 32 |
];
|
|
|
|
| 33 |
// Optimization templates and rules
|
| 34 |
const optimizationRules = {
|
| 35 |
// Add structured sections
|
| 36 |
addStructure: (text) => {
|
| 37 |
+
const hasRole = /^role:/im.test(text.trim());
|
| 38 |
+
const hasGoal = /^goal:/im.test(text.trim());
|
| 39 |
+
const hasConstraints = /^constraints:/im.test(text.trim());
|
| 40 |
+
const hasSteps = /^steps:/im.test(text.trim());
|
| 41 |
+
const hasSuccess = /^success criteria:/im.test(text.trim());
|
| 42 |
|
| 43 |
let structured = '';
|
| 44 |
|
| 45 |
if (!hasRole) {
|
| 46 |
+
structured += 'Role: AI Assistant\n';
|
| 47 |
+
} else {
|
| 48 |
+
const roleMatch = text.match(/^role:(.+?)(?=\n\w+:|$)/im);
|
| 49 |
+
if (roleMatch) {
|
| 50 |
+
structured += 'Role: ' + roleMatch[1].trim() + '\n';
|
| 51 |
+
}
|
| 52 |
}
|
| 53 |
|
| 54 |
+
structured += '\n';
|
| 55 |
+
|
| 56 |
if (!hasGoal) {
|
| 57 |
+
structured += 'Goal: Execute the specified task with absolute precision, robustness, and full adherence to the intended functionality.\n';
|
| 58 |
} else {
|
| 59 |
+
const goalMatch = text.match(/^goal:(.+?)(?=\n\w+:|$)/im);
|
| 60 |
+
if (goalMatch) {
|
| 61 |
+
structured += 'Goal: ' + goalMatch[1].trim() + '\n';
|
| 62 |
+
}
|
| 63 |
}
|
| 64 |
|
| 65 |
+
structured += '\n';
|
| 66 |
+
|
| 67 |
if (!hasConstraints) {
|
| 68 |
+
structured += 'Constraints:\n- Operate without errors, omissions, or deviations from the defined purpose.\n- Ensure maximum reliability and performance under all expected conditions.\n- Do not introduce assumptions, interpretations, or modifications beyond the defined scope.\n';
|
| 69 |
} else {
|
| 70 |
+
const constraintsMatch = text.match(/^constraints:(.+?)(?=\n\w+:|$)/ims);
|
| 71 |
+
if (constraintsMatch) {
|
| 72 |
+
const constraints = constraintsMatch[1].trim().split('\n');
|
| 73 |
+
structured += 'Constraints:\n';
|
| 74 |
+
constraints.forEach(line => {
|
| 75 |
+
if (line.trim()) {
|
| 76 |
+
if (!line.startsWith('-')) {
|
| 77 |
+
structured += '- ' + line.trim() + '\n';
|
| 78 |
+
} else {
|
| 79 |
+
structured += line.trim() + '\n';
|
| 80 |
+
}
|
| 81 |
+
}
|
| 82 |
+
});
|
| 83 |
+
}
|
| 84 |
}
|
| 85 |
|
| 86 |
+
structured += '\n';
|
| 87 |
+
|
| 88 |
if (!hasSteps) {
|
| 89 |
+
structured += 'Steps:\n1. Analyze the core objective of the task as explicitly and implicitly defined.\n2. Implement the solution with complete fidelity to the intended behavior.\n3. Reinforce all components to ensure flawless, brute-force reliability.\n4. Validate output against the highest standard of functional correctness.\n5. Deliver the final result in a fully optimized, error-free state.\n';
|
| 90 |
} else {
|
| 91 |
+
const stepsMatch = text.match(/^steps:(.+?)(?=\n\w+:|$)/ims);
|
| 92 |
+
if (stepsMatch) {
|
| 93 |
+
const steps = stepsMatch[1].trim().split('\n');
|
| 94 |
+
structured += 'Steps:\n';
|
| 95 |
+
let stepNum = 1;
|
| 96 |
+
steps.forEach(line => {
|
| 97 |
+
if (line.trim()) {
|
| 98 |
+
const cleanLine = line.replace(/^\d+\.?\s*/, '').trim();
|
| 99 |
+
structured += stepNum + '. ' + cleanLine + '\n';
|
| 100 |
+
stepNum++;
|
| 101 |
+
}
|
| 102 |
+
});
|
| 103 |
+
}
|
| 104 |
}
|
| 105 |
|
| 106 |
+
structured += '\n';
|
| 107 |
+
|
| 108 |
+
if (!hasSuccess) {
|
| 109 |
+
structured += 'Success Criteria: The output must perform perfectly, consistently, and robustly according to the original intent, with no failure under expected use.';
|
| 110 |
+
} else {
|
| 111 |
+
const successMatch = text.match(/^success criteria:(.+?)(?=\n\w+:|$)/im);
|
| 112 |
+
if (successMatch) {
|
| 113 |
+
structured += 'Success Criteria: ' + successMatch[1].trim();
|
| 114 |
+
}
|
| 115 |
+
}
|
| 116 |
|
| 117 |
return structured;
|
| 118 |
},
|
| 119 |
+
// Convert to imperative commands
|
|
|
|
| 120 |
makeImperative: (text) => {
|
| 121 |
return text
|
| 122 |
.replace(/I want you to/gi, 'CREATE')
|
|
|
|
| 150 |
return text;
|
| 151 |
}
|
| 152 |
};
|
| 153 |
+
// Extract sections from text - Enhanced for precision
|
|
|
|
| 154 |
function extractSection(text, sectionType) {
|
| 155 |
const lines = text.split('\n');
|
| 156 |
let section = '';
|
| 157 |
+
let inSection = false;
|
| 158 |
+
const sectionPatterns = {
|
| 159 |
+
'ROLE': /^role:/im,
|
| 160 |
+
'GOAL': /^goal:/im,
|
| 161 |
+
'CONSTRAINTS': /^constraints?:/im,
|
| 162 |
+
'STEPS': /^steps?:/im,
|
| 163 |
+
'SUCCESS CRITERIA': /^success criteria:/im
|
| 164 |
+
};
|
| 165 |
|
| 166 |
for (const line of lines) {
|
| 167 |
+
const trimmedLine = line.trim();
|
| 168 |
+
|
| 169 |
+
// Check if we're entering the target section
|
| 170 |
+
if (sectionPatterns[sectionType] && sectionPatterns[sectionType].test(trimmedLine)) {
|
| 171 |
+
inSection = true;
|
| 172 |
+
section += line + '\n';
|
| 173 |
+
continue;
|
| 174 |
+
}
|
| 175 |
+
|
| 176 |
+
// Check if we're entering a different section (exit current section)
|
| 177 |
+
if (inSection) {
|
| 178 |
+
let foundNewSection = false;
|
| 179 |
+
for (const [key, pattern] of Object.entries(sectionPatterns)) {
|
| 180 |
+
if (key !== sectionType && pattern.test(trimmedLine)) {
|
| 181 |
+
foundNewSection = true;
|
| 182 |
+
break;
|
| 183 |
+
}
|
| 184 |
+
}
|
| 185 |
+
if (foundNewSection) break;
|
| 186 |
+
}
|
| 187 |
+
|
| 188 |
+
// Add line if we're in the target section
|
| 189 |
+
if (inSection) {
|
| 190 |
section += line + '\n';
|
| 191 |
}
|
| 192 |
}
|
| 193 |
|
| 194 |
return section || `${sectionType}:\n${text}`;
|
| 195 |
}
|
|
|
|
| 196 |
// Optimize the input text
|
| 197 |
function optimizeText() {
|
| 198 |
const input = inputText.value.trim();
|
|
|
|
| 244 |
const count = outputText.value.length;
|
| 245 |
charCount.textContent = `${count} characters`;
|
| 246 |
}
|
| 247 |
+
// Calculate optimization score - Enhanced for precision
|
|
|
|
| 248 |
function updateOptimizationScore(original, optimized) {
|
| 249 |
const originalWords = original.split(/\s+/).length;
|
| 250 |
const optimizedWords = optimized.split(/\s+/).length;
|
|
|
|
|
|
|
|
|
|
| 251 |
|
| 252 |
+
// Check for required structure components
|
| 253 |
+
const hasRole = /^role:/im.test(optimized);
|
| 254 |
+
const hasGoal = /^goal:/im.test(optimized);
|
| 255 |
+
const hasConstraints = /^constraints:/im.test(optimized);
|
| 256 |
+
const hasSteps = /^steps:/im.test(optimized);
|
| 257 |
+
const hasSuccess = /^success criteria:/im.test(optimized);
|
| 258 |
+
|
| 259 |
+
const structureScore = (hasRole + hasGoal + hasConstraints + hasSteps + hasSuccess) * 20;
|
| 260 |
+
|
| 261 |
+
// Check for precision keywords
|
| 262 |
+
const precisionKeywords = /precision|robustness|reliability|consistently|flawless|maximum|absolute/gi;
|
| 263 |
+
const precisionCount = (optimized.match(precisionKeywords) || []).length;
|
| 264 |
+
const precisionScore = Math.min(20, precisionCount * 4);
|
| 265 |
+
|
| 266 |
+
// Check for action-oriented language
|
| 267 |
+
const actionKeywords = /execute|implement|validate|deliver|analyze|reinforce/gi;
|
| 268 |
+
const actionCount = (optimized.match(actionKeywords) || []).length;
|
| 269 |
+
const actionScore = Math.min(20, actionCount * 4);
|
| 270 |
+
|
| 271 |
+
// Clarity and specificity bonus
|
| 272 |
+
const clarityBonus = optimized.includes('no failure under expected use') ? 10 : 0;
|
| 273 |
+
const specificityBonus = optimized.includes('highest standard') ? 10 : 0;
|
| 274 |
+
|
| 275 |
+
const score = Math.min(100, structureScore + precisionScore + actionScore + clarityBonus + specificityBonus);
|
| 276 |
|
| 277 |
let scoreColor = 'text-red-500';
|
| 278 |
+
if (score >= 95) scoreColor = 'text-green-500';
|
| 279 |
+
else if (score >= 85) scoreColor = 'text-green-600';
|
| 280 |
+
else if (score >= 75) scoreColor = 'text-yellow-500';
|
| 281 |
+
else if (score >= 65) scoreColor = 'text-orange-500';
|
| 282 |
+
else if (score >= 50) scoreColor = 'text-red-600';
|
| 283 |
|
| 284 |
optimizationScore.textContent = `Optimization Score: ${score}/100`;
|
| 285 |
optimizationScore.className = `font-semibold ${scoreColor} score-update`;
|
|
|
|
| 288 |
optimizationScore.classList.remove('score-update');
|
| 289 |
}, 500);
|
| 290 |
}
|
| 291 |
+
// Update analysis section - Enhanced for robustness
|
|
|
|
| 292 |
function updateAnalysis(original, optimized) {
|
| 293 |
beforeText.textContent = original;
|
| 294 |
afterText.textContent = optimized;
|
| 295 |
|
| 296 |
const improvements = [];
|
| 297 |
+
const structureComponents = ['Role', 'Goal', 'Constraints', 'Steps', 'Success Criteria'];
|
| 298 |
|
| 299 |
+
// Check for structure components
|
| 300 |
+
structureComponents.forEach(component => {
|
| 301 |
+
const pattern = new RegExp(`^${component}:`, 'im');
|
| 302 |
+
if (!pattern.test(original) && pattern.test(optimized)) {
|
| 303 |
+
improvements.push(`β
Added ${component} section for comprehensive structure`);
|
| 304 |
+
}
|
| 305 |
+
});
|
| 306 |
|
| 307 |
+
// Check for precision enhancements
|
| 308 |
+
if (!/precision|robustness|reliability|absolute/gi.test(original)) {
|
| 309 |
+
improvements.push('β
Enhanced with precision-focused language');
|
| 310 |
}
|
| 311 |
|
| 312 |
+
if (!/maximum|flawless|consistent/gi.test(original)) {
|
| 313 |
+
improvements.push('β
Added reliability and consistency requirements');
|
| 314 |
}
|
| 315 |
|
| 316 |
+
// Check for action-oriented transformation
|
| 317 |
+
if (!/execute|implement|validate|deliver/gi.test(original)) {
|
| 318 |
+
improvements.push('β
Transformed to action-oriented directives');
|
| 319 |
}
|
| 320 |
|
| 321 |
+
// Check for error prevention
|
| 322 |
+
if (!/without errors|no failure|no deviations/gi.test(original)) {
|
| 323 |
+
improvements.push('β
Implemented error prevention measures');
|
| 324 |
}
|
| 325 |
|
| 326 |
+
// Calculate metrics
|
| 327 |
+
const hasRole = /^role:/im.test(optimized);
|
| 328 |
+
const hasGoal = /^goal:/im.test(optimized);
|
| 329 |
+
const hasConstraints = /^constraints:/im.test(optimized);
|
| 330 |
+
const hasSteps = /^steps:/im.test(optimized);
|
| 331 |
+
const hasSuccess = /^success criteria:/im.test(optimized);
|
| 332 |
+
const structureCount = [hasRole, hasGoal, hasConstraints, hasSteps, hasSuccess].filter(Boolean).length;
|
| 333 |
+
|
| 334 |
+
const precisionCount = (optimized.match(/precision|robustness|reliability|absolute|flawless|maximum/gi) || []).length;
|
| 335 |
+
const actionCount = (optimized.match(/execute|implement|validate|deliver|analyze|reinforce/gi) || []).length;
|
| 336 |
+
|
| 337 |
const analysisHTML = `
|
| 338 |
<div class="space-y-3">
|
| 339 |
<div class="bg-blue-50 p-3 rounded-lg">
|
|
|
|
| 347 |
<div class="grid grid-cols-2 gap-2 text-sm">
|
| 348 |
<div>Original Words: <span class="font-semibold">${original.split(/\s+/).length}</span></div>
|
| 349 |
<div>Optimized Words: <span class="font-semibold">${optimized.split(/\s+/).length}</span></div>
|
| 350 |
+
<div>Structure Components: <span class="font-semibold">${structureCount}/5</span></div>
|
| 351 |
+
<div>Precision Keywords: <span class="font-semibold">${precisionCount}</span></div>
|
| 352 |
+
<div>Action Directives: <span class="font-semibold">${actionCount}</span></div>
|
| 353 |
+
<div>Robustness Score: <span class="font-semibold">${Math.min(100, structureCount * 20 + precisionCount * 3 + actionCount * 2)}%</span></div>
|
| 354 |
</div>
|
| 355 |
</div>
|
| 356 |
<div class="bg-purple-50 p-3 rounded-lg">
|
| 357 |
<h4 class="font-semibold text-purple-800 mb-1">Expected Impact:</h4>
|
| 358 |
+
<p class="text-sm">This optimized prompt will execute with absolute precision, ensuring maximum reliability and performance under all expected conditions. The structure eliminates ambiguity, enforces error-free operation, and delivers consistent results according to the highest functional standards.</p>
|
| 359 |
+
</div>
|
| 360 |
+
<div class="bg-orange-50 p-3 rounded-lg">
|
| 361 |
+
<h4 class="font-semibold text-orange-800 mb-1">Compliance Status:</h4>
|
| 362 |
+
<p class="text-sm">β
All constraints defined and enforced<br>β
Success criteria clearly specified<br>β
No assumptions beyond defined scope<br>β
Brute-force reliability implemented</p>
|
| 363 |
</div>
|
| 364 |
</div>
|
| 365 |
`;
|
| 366 |
|
| 367 |
analysisContent.innerHTML = analysisHTML;
|
| 368 |
}
|
|
|
|
| 369 |
// Copy to clipboard
|
| 370 |
function copyToClipboard() {
|
| 371 |
if (!outputText.value) {
|
style.css
CHANGED
|
@@ -155,7 +155,6 @@ button:active::before {
|
|
| 155 |
transform: translateY(-4px);
|
| 156 |
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
| 157 |
}
|
| 158 |
-
|
| 159 |
/* Pulse animation for optimization score */
|
| 160 |
@keyframes scorePulse {
|
| 161 |
0% {
|
|
@@ -173,6 +172,46 @@ button:active::before {
|
|
| 173 |
animation: scorePulse 0.5s ease;
|
| 174 |
}
|
| 175 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 176 |
/* Responsive adjustments */
|
| 177 |
@media (max-width: 768px) {
|
| 178 |
.container {
|
|
|
|
| 155 |
transform: translateY(-4px);
|
| 156 |
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
|
| 157 |
}
|
|
|
|
| 158 |
/* Pulse animation for optimization score */
|
| 159 |
@keyframes scorePulse {
|
| 160 |
0% {
|
|
|
|
| 172 |
animation: scorePulse 0.5s ease;
|
| 173 |
}
|
| 174 |
|
| 175 |
+
/* Robustness indicator styles */
|
| 176 |
+
.robustness-indicator {
|
| 177 |
+
background: linear-gradient(135deg, #10b981 0%, #059669 100%);
|
| 178 |
+
color: white;
|
| 179 |
+
padding: 4px 12px;
|
| 180 |
+
border-radius: 12px;
|
| 181 |
+
font-size: 0.75rem;
|
| 182 |
+
font-weight: 600;
|
| 183 |
+
display: inline-block;
|
| 184 |
+
margin-top: 4px;
|
| 185 |
+
}
|
| 186 |
+
|
| 187 |
+
.compliance-badge {
|
| 188 |
+
background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%);
|
| 189 |
+
color: white;
|
| 190 |
+
padding: 2px 8px;
|
| 191 |
+
border-radius: 8px;
|
| 192 |
+
font-size: 0.625rem;
|
| 193 |
+
font-weight: 500;
|
| 194 |
+
display: inline-block;
|
| 195 |
+
margin-left: 4px;
|
| 196 |
+
}
|
| 197 |
+
|
| 198 |
+
/* Enhanced textarea focus for precision */
|
| 199 |
+
textarea:focus {
|
| 200 |
+
outline: none;
|
| 201 |
+
border-color: #6366f1;
|
| 202 |
+
box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);
|
| 203 |
+
}
|
| 204 |
+
|
| 205 |
+
/* Structure validation highlight */
|
| 206 |
+
.structure-valid {
|
| 207 |
+
border-color: #10b981 !important;
|
| 208 |
+
background-color: #f0fdf4 !important;
|
| 209 |
+
}
|
| 210 |
+
|
| 211 |
+
.structure-invalid {
|
| 212 |
+
border-color: #ef4444 !important;
|
| 213 |
+
background-color: #fef2f2 !important;
|
| 214 |
+
}
|
| 215 |
/* Responsive adjustments */
|
| 216 |
@media (max-width: 768px) {
|
| 217 |
.container {
|