-
Notifications
You must be signed in to change notification settings - Fork 119
Open
Description
Error code
ERRW:1.0:K1:PRMSO.11:AS
Were you logged in?
Yes
Your username (if logged in)
99blakeD99
Your HTML
<!-- Header -->
<header class="header">
<div class="logo">FSCompliance</div>
<div class="header-right">
<input type="search" class="search-box" placeholder="🔍 Search regulations, requirements...">
<div class="alert-badge">🔔 Alerts: 3</div>
<div class="user-info">
👤 S.Chen
<span style="margin-left: 0.5rem;">⚙️</span>
</div>
</div>
</header>
<!-- Main Container -->
<div class="main-container">
<!-- Sidebar Navigation -->
<nav class="sidebar">
<a href="#" class="nav-item active" onclick="showLanding()">🏠 Home</a>
<a href="#" class="nav-item" onclick="showDashboard()">📊 Dashboard</a>
<a href="#" class="nav-item" onclick="showAnalysis()">🔍 Analysis Tools</a>
<a href="#" class="nav-item" onclick="showMCPTools()">🤖 MCP Integration</a>
<a href="#" class="nav-item">📈 Monitoring</a>
<a href="#" class="nav-item">📋 Reports</a>
<a href="#" class="nav-item">⚙️ Settings</a>
<a href="#" class="nav-item">❓ Help & Support</a>
</nav>
<!-- Main Content -->
<main class="content">
<!-- Landing Page View -->
<div id="landing-view">
<div style="text-align: center; max-width: 800px; margin: 3rem auto;">
<h1 style="font-size: 3rem; color: var(--primary-blue); margin-bottom: 1rem; font-weight: 700;">
AI-Native Compliance Intelligence
</h1>
<p style="font-size: 1.25rem; color: var(--text-gray); margin-bottom: 3rem; line-height: 1.5;">
Ask any compliance question and get instant, expert-backed analysis powered by the FCA Handbook
</p>
<!-- Compliance Question Interface -->
<div style="background: var(--white); border-radius: 12px; padding: 2rem; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1); margin-bottom: 3rem;">
<div style="display: flex; align-items: center; margin-bottom: 1.5rem;">
<div style="background: var(--light-blue); color: white; border-radius: 50%; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; margin-right: 1rem; font-size: 1.5rem;">
🤖
</div>
<h3 style="color: var(--primary-blue); margin: 0;">Ask FSCompliance</h3>
</div>
<div style="position: relative;">
<textarea
id="compliance-question"
placeholder="Ask me anything about FCA compliance...
For example:
• Does our customer onboarding process comply with COBS 2.1.1?
• What are the key requirements for Consumer Duty implementation?
• How should we handle professional client categorization?
• What documentation is needed for regulatory examinations?"
style="width: 100%; min-height: 150px; padding: 1.5rem; border: 2px solid var(--border-gray); border-radius: 8px; font-size: 1rem; resize: vertical; line-height: 1.5;"
onfocus="this.style.borderColor='var(--light-blue)'"
onblur="this.style.borderColor='var(--border-gray)'"
></textarea>
<div style="position: absolute; bottom: 1rem; right: 1rem; background: var(--light-gray); padding: 0.25rem 0.5rem; border-radius: 4px; font-size: 0.75rem; color: var(--text-gray);">
Powered by FSCompliance AI
</div>
</div>
<div style="display: flex; justify-content: space-between; align-items: center; margin-top: 1.5rem;">
<div style="display: flex; gap: 1rem; align-items: center;">
<label style="display: flex; align-items: center; gap: 0.5rem; color: var(--text-gray);">
<input type="checkbox" checked> Include regulatory citations
</label>
<label style="display: flex; align-items: center; gap: 0.5rem; color: var(--text-gray);">
<input type="checkbox" checked> Show confidence scores
</label>
</div>
<button
class="btn btn-primary"
onclick="askComplianceQuestion()"
style="padding: 1rem 2rem; font-size: 1rem; font-weight: 600;"
>
🔍 Ask Question
</button>
</div>
</div>
<!-- Quick Action Cards -->
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1.5rem; margin-bottom: 3rem;">
<div class="status-card" style="cursor: pointer;" onclick="showAnalysis()">
<div style="text-align: center;">
<div style="font-size: 2rem; margin-bottom: 0.5rem;">📄</div>
<h3 style="color: var(--primary-blue); margin-bottom: 0.5rem;">Analyze Document</h3>
<p style="color: var(--text-gray); font-size: 0.9rem;">Upload policies for comprehensive compliance analysis</p>
</div>
</div>
<div class="status-card" style="cursor: pointer;" onclick="showDashboard()">
<div style="text-align: center;">
<div style="font-size: 2rem; margin-bottom: 0.5rem;">📊</div>
<h3 style="color: var(--primary-blue); margin-bottom: 0.5rem;">View Dashboard</h3>
<p style="color: var(--text-gray); font-size: 0.9rem;">Monitor compliance status and regulatory changes</p>
</div>
</div>
<div class="status-card" style="cursor: pointer;" onclick="showMCPTools()">
<div style="text-align: center;">
<div style="font-size: 2rem; margin-bottom: 0.5rem;">🤖</div>
<h3 style="color: var(--primary-blue); margin-bottom: 0.5rem;">AI Integration</h3>
<p style="color: var(--text-gray); font-size: 0.9rem;">Connect AI agents to compliance intelligence</p>
</div>
</div>
</div>
<!-- Trust Indicators -->
<div style="display: flex; justify-content: center; gap: 2rem; flex-wrap: wrap; color: var(--text-gray); font-size: 0.9rem;">
<div style="display: flex; align-items: center; gap: 0.5rem;">
<span style="color: var(--success-green);">✅</span>
FCA Handbook Trained
</div>
<div style="display: flex; align-items: center; gap: 0.5rem;">
<span style="color: var(--success-green);">✅</span>
Open Source & Transparent
</div>
<div style="display: flex; align-items: center; gap: 0.5rem;">
<span style="color: var(--success-green);">✅</span>
Enterprise Ready
</div>
<div style="display: flex; align-items: center; gap: 0.5rem;">
<span style="color: var(--success-green);">✅</span>
MCP Compatible
</div>
</div>
</div>
<!-- Response Area -->
<div id="question-response" style="display: none; max-width: 800px; margin: 2rem auto; background: var(--white); border-radius: 12px; padding: 2rem; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);">
<div style="display: flex; align-items: center; margin-bottom: 1.5rem;">
<div style="background: var(--success-green); color: white; border-radius: 50%; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; margin-right: 1rem;">
✅
</div>
<h3 style="color: var(--primary-blue); margin: 0;">Compliance Analysis</h3>
<span style="margin-left: auto; color: var(--text-gray); font-size: 0.9rem;">Response time: 2.3s | Confidence: 94%</span>
</div>
<div id="response-content">
<!-- Response will be inserted here -->
</div>
<div style="margin-top: 1.5rem; padding-top: 1.5rem; border-top: 1px solid var(--border-gray);">
<div style="display: flex; gap: 1rem;">
<button class="btn btn-secondary" onclick="showDashboard()">View Full Dashboard</button>
<button class="btn btn-secondary" onclick="askAnotherQuestion()">Ask Another Question</button>
</div>
</div>
</div>
</div>
<!-- Dashboard View -->
<div id="dashboard-view" style="display: none;">
<h1 style="margin-bottom: 2rem; color: var(--primary-blue);">Compliance Dashboard</h1>
<!-- Status Cards -->
<div class="status-cards">
<div class="status-card">
<h3>Compliance Score</h3>
<div class="status-value" style="color: var(--warning-orange);">87%</div>
<div class="status-label status-good">🟢 Good</div>
</div>
<div class="status-card">
<h3>Active Alerts</h3>
<div class="status-value" style="color: var(--warning-orange);">3</div>
<div class="status-label status-warning">🟡 Review</div>
</div>
<div class="status-card">
<h3>Regulatory Changes</h3>
<div class="status-value" style="color: var(--light-blue);">2</div>
<div class="status-label status-info">🔵 New</div>
</div>
<div class="status-card">
<h3>Last Analysis</h3>
<div class="status-value" style="color: var(--success-green); font-size: 1.25rem;">2 hours ago</div>
<div class="status-label status-complete">✅ Complete</div>
</div>
</div>
<!-- Main Content Grid -->
<div class="content-grid">
<!-- Recent Regulatory Changes -->
<div class="content-panel">
<div class="panel-header">Recent Regulatory Changes</div>
<div class="panel-content">
<div class="change-item">
<div class="change-title">FCA PS23/8: Consumer Duty Implementation</div>
<div class="change-meta">
<span>Impact: <strong>Medium</strong></span>
<span>Status: <strong>Review Required</strong></span>
</div>
<p style="font-size: 0.875rem; color: var(--text-gray);">New guidance on consumer duty implementation affecting client communication requirements.</p>
</div>
<div class="change-item">
<div class="change-title">FCA CP23/20: SMCR Updates</div>
<div class="change-meta">
<span>Impact: <strong>Low</strong></span>
<span>Status: <strong>Auto-Monitored</strong></span>
</div>
<p style="font-size: 0.875rem; color: var(--text-gray);">Consultation on Senior Managers and Certification Regime updates.</p>
</div>
<div class="btn-group">
<a href="#" class="btn btn-primary">View All Changes</a>
</div>
</div>
</div>
<!-- Compliance Gaps -->
<div class="content-panel">
<div class="panel-header">Compliance Gaps Requiring Action</div>
<div class="panel-content">
<div class="gap-item">
<div class="risk-indicator risk-high"></div>
<div class="gap-content">
<div class="gap-title">High: COBS 2.1.1 - Client Information</div>
<div class="gap-reference">Missing enhanced due diligence procedures</div>
</div>
</div>
<div class="gap-item">
<div class="risk-indicator risk-medium"></div>
<div class="gap-content">
<div class="gap-title">Medium: SYSC 3.1 - Risk Management</div>
<div class="gap-reference">Incomplete risk framework documentation</div>
</div>
</div>
<div class="gap-item">
<div class="risk-indicator risk-low"></div>
<div class="gap-content">
<div class="gap-title">Low: PRIN 6 - Customer Care</div>
<div class="gap-reference">Minor process documentation updates needed</div>
</div>
</div>
<div class="btn-group">
<a href="#" class="btn btn-primary">View All Gaps</a>
<a href="#" class="btn btn-secondary">Generate Report</a>
</div>
</div>
</div>
</div>
</div>
<!-- Analysis Tools View -->
<div id="analysis-view" class="analysis-interface">
<div class="panel-header">Policy Document Analysis</div>
<div class="panel-content">
<div class="upload-area">
<div style="font-size: 1.5rem; margin-bottom: 1rem; color: var(--text-gray);">📁</div>
<h3 style="margin-bottom: 1rem;">Upload Document for Analysis</h3>
<p style="color: var(--text-gray); margin-bottom: 1rem;">Drag and drop your policy document here, or click to browse</p>
<button class="btn btn-primary">Choose File</button>
</div>
<div class="analysis-options">
<div class="form-group">
<label>Analysis Type</label>
<select>
<option>Comprehensive Analysis</option>
<option>Gap Detection Only</option>
<option>Risk Assessment Only</option>
</select>
</div>
<div class="form-group">
<label>Regulatory Focus</label>
<select>
<option>FCA Handbook (All)</option>
<option>COBS - Conduct of Business</option>
<option>SYSC - Senior Management</option>
<option>PRIN - Principles</option>
</select>
</div>
<div class="form-group">
<label>Priority Level</label>
<select>
<option>All Requirements</option>
<option>High Priority Only</option>
<option>Critical Requirements</option>
</select>
</div>
</div>
<div class="btn-group">
<button class="btn btn-primary" onclick="showResults()">🔍 Analyze Document</button>
<button class="btn btn-secondary">⚙️ Advanced Options</button>
</div>
<!-- Results Panel -->
<div id="results-panel" class="results-panel">
<div style="display: flex; justify-content: between; align-items: center; margin-bottom: 1.5rem;">
<h3>Analysis Results: Customer_Onboarding_Policy_v2.3.pdf</h3>
<span style="color: var(--text-gray);">Analyzed: 2024-12-25 14:30 | Confidence: 94% | Processing: 2.3s</span>
</div>
<div class="score-display">
<div class="score-value">78/100</div>
<div class="score-label">Overall Compliance Score</div>
<div class="progress-bar">
<div class="progress-fill" style="width: 78%;"></div>
</div>
</div>
<div class="findings-grid">
<div class="finding-card">
<div class="finding-number finding-met">23</div>
<div>Requirements Met</div>
</div>
<div class="finding-card">
<div class="finding-number finding-partial">8</div>
<div>Partial Compliance</div>
</div>
<div class="finding-card">
<div class="finding-number finding-critical">4</div>
<div>Gaps Identified</div>
</div>
<div class="finding-card">
<div class="finding-number finding-recommendations">12</div>
<div>Recommendations</div>
</div>
</div>
<div class="btn-group">
<button class="btn btn-primary">📊 Detailed Report</button>
<button class="btn btn-secondary">📋 Gap Analysis</button>
<button class="btn btn-secondary">📈 Risk Assessment</button>
</div>
</div>
</div>
</div>
<!-- MCP Tools Panel -->
<div id="mcp-panel" class="mcp-panel">
<div class="panel-header">
AI Agent Integration
<span class="mcp-status" style="float: right;">🤖 MCP Status: ✅</span>
</div>
<div class="mcp-tools-grid">
<div class="mcp-tool">
<div class="mcp-tool-name">🔧 analyze_compliance</div>
<div class="mcp-tool-desc">Analyze documents for FCA compliance requirements and generate detailed compliance reports</div>
</div>
<div class="mcp-tool">
<div class="mcp-tool-name">🔍 detect_gaps</div>
<div class="mcp-tool-desc">Identify compliance gaps in policies and procedures with risk-based prioritization</div>
</div>
<div class="mcp-tool">
<div class="mcp-tool-name">📋 extract_requirements</div>
<div class="mcp-tool-desc">Extract relevant regulatory requirements from FCA Handbook based on query context</div>
</div>
<div class="mcp-tool">
<div class="mcp-tool-name">📊 score_compliance_risk</div>
<div class="mcp-tool-desc">Calculate compliance risk scores with confidence intervals and explanations</div>
</div>
<div class="mcp-tool">
<div class="mcp-tool-name">🔔 monitor_reg_changes</div>
<div class="mcp-tool-desc">Track FCA regulatory updates and analyze impact on existing compliance frameworks</div>
</div>
<div class="mcp-tool">
<div class="mcp-tool-name">📑 track_audit_evidence</div>
<div class="mcp-tool-desc">Organize and track audit evidence with regulatory citation mapping for examinations</div>
</div>
<div class="mcp-tool">
<div class="mcp-tool-name">🗺️ map_relationships</div>
<div class="mcp-tool-desc">Map relationships between regulatory requirements using knowledge graph analysis</div>
</div>
<div class="mcp-tool">
<div class="mcp-tool-name">✅ validate_scenarios</div>
<div class="mcp-tool-desc">Validate customer scenarios against compliance requirements with go/no-go decisions</div>
</div>
</div>
<div style="padding: 1.5rem; background: var(--light-gray); margin: 1.5rem; border-radius: 8px;">
<h4 style="margin-bottom: 1rem; color: var(--primary-blue);">Recent AI Agent Activity</h4>
<ul style="list-style: none;">
<li style="margin-bottom: 0.5rem;">• Claude analyzed customer_policy.pdf (2 min ago)</li>
<li style="margin-bottom: 0.5rem;">• ChatGPT requested FCA COBS requirements (15 min ago)</li>
<li>• Custom agent ran compliance check (1 hour ago)</li>
</ul>
<div class="btn-group" style="margin-top: 1rem;">
<button class="btn btn-secondary">View API Logs</button>
<button class="btn btn-secondary">Tool Documentation</button>
<button class="btn btn-secondary">Integration Guide</button>
</div>
</div>
</div>
</main>
</div>
Your JavaScript
// Navigation functionality
function showLanding() {
document.getElementById('landing-view').style.display = 'block';
document.getElementById('dashboard-view').style.display = 'none';
document.getElementById('analysis-view').style.display = 'none';
document.getElementById('mcp-panel').style.display = 'none';
updateActiveNav(0);
}
function showDashboard() {
document.getElementById('landing-view').style.display = 'none';
document.getElementById('dashboard-view').style.display = 'block';
document.getElementById('analysis-view').style.display = 'none';
document.getElementById('mcp-panel').style.display = 'none';
updateActiveNav(1);
}
function showAnalysis() {
document.getElementById('landing-view').style.display = 'none';
document.getElementById('dashboard-view').style.display = 'none';
document.getElementById('analysis-view').style.display = 'block';
document.getElementById('mcp-panel').style.display = 'none';
updateActiveNav(2);
}
function showMCPTools() {
document.getElementById('landing-view').style.display = 'none';
document.getElementById('dashboard-view').style.display = 'none';
document.getElementById('analysis-view').style.display = 'none';
document.getElementById('mcp-panel').style.display = 'block';
updateActiveNav(3);
}
function showResults() {
document.getElementById('results-panel').style.display = 'block';
}
function updateActiveNav(index) {
const navItems = document.querySelectorAll('.nav-item');
navItems.forEach((item, i) => {
if (i === index) {
item.classList.add('active');
} else {
item.classList.remove('active');
}
});
}
// Compliance Question functionality
function askComplianceQuestion() {
const question = document.getElementById('compliance-question').value.trim();
if (!question) {
alert('Please enter a compliance question first.');
return;
}
// Show loading state
const responseArea = document.getElementById('question-response');
const responseContent = document.getElementById('response-content');
responseArea.style.display = 'block';
responseContent.innerHTML = `
<div style="text-align: center; padding: 2rem; color: var(--text-gray);">
<div style="font-size: 2rem; margin-bottom: 1rem;">🔄</div>
<p>Analyzing your compliance question...</p>
<p style="font-size: 0.9rem; margin-top: 0.5rem;">Searching FCA Handbook and regulatory requirements</p>
</div>
`;
// Simulate AI response after 2 seconds
setTimeout(() => {
generateMockResponse(question);
}, 2000);
// Scroll to response
responseArea.scrollIntoView({ behavior: 'smooth' });
}
function generateMockResponse(question) {
const responseContent = document.getElementById('response-content');
// Generate a realistic response based on the question
let response = '';
if (question.toLowerCase().includes('cobs') || question.toLowerCase().includes('client') || question.toLowerCase().includes('customer')) {
response = `
<div style="line-height: 1.6;">
<h4 style="color: var(--primary-blue); margin-bottom: 1rem;">COBS 2.1.1 Client Categorization Analysis</h4>
<div style="background: var(--success-green-bg); border-left: 4px solid var(--success-green); padding: 1rem; margin-bottom: 1.5rem; border-radius: 4px;">
<strong>✅ Compliance Assessment: GENERALLY COMPLIANT</strong>
<p style="margin: 0.5rem 0 0 0; color: var(--neutral-gray);">Your customer onboarding process addresses most COBS 2.1.1 requirements with minor gaps identified.</p>
</div>
<h5 style="color: var(--primary-blue); margin: 1.5rem 0 0.75rem 0;">Key Requirements (COBS 2.1.1R):</h5>
<ul style="margin-left: 1.5rem; margin-bottom: 1.5rem;">
<li><strong>Client categorization</strong> must be performed before providing services</li>
<li><strong>Professional client assessment</strong> requires specific knowledge and experience criteria</li>
<li><strong>Opt-down procedures</strong> must be clearly documented and communicated</li>
<li><strong>Record keeping</strong> of categorization decisions and evidence</li>
</ul>
<div style="background: var(--warning-orange-bg); border-left: 4px solid var(--warning-orange); padding: 1rem; margin-bottom: 1.5rem; border-radius: 4px;">
<strong>⚠️ Gap Identified:</strong>
<p style="margin: 0.5rem 0 0 0;">Enhanced due diligence procedures for high-risk professional clients may need strengthening per COBS 2.1.1R(2)(b).</p>
</div>
<h5 style="color: var(--primary-blue); margin: 1.5rem 0 0.75rem 0;">Recommendations:</h5>
<ol style="margin-left: 1.5rem;">
<li>Review and enhance professional client assessment criteria</li>
<li>Implement additional monitoring for opted-down clients</li>
<li>Document client categorization rationale more comprehensively</li>
</ol>
</div>
`;
} else if (question.toLowerCase().includes('consumer duty')) {
response = `
<div style="line-height: 1.6;">
<h4 style="color: var(--primary-blue); margin-bottom: 1rem;">Consumer Duty Implementation Requirements</h4>
<div style="background: var(--light-gray); border-left: 4px solid var(--light-blue); padding: 1rem; margin-bottom: 1.5rem; border-radius: 4px;">
<strong>📋 Implementation Status:</strong>
<p style="margin: 0.5rem 0 0 0; color: var(--neutral-gray);">Consumer Duty came into effect 31 July 2023 for new and existing products, with closed products deadline of 31 July 2024.</p>
</div>
<h5 style="color: var(--primary-blue); margin: 1.5rem 0 0.75rem 0;">Four Key Outcomes (PRIN 2A.5.4R):</h5>
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 1rem; margin-bottom: 1.5rem;">
<div style="background: var(--light-gray); padding: 1rem; border-radius: 6px;">
<strong>Products & Services</strong>
<p style="font-size: 0.9rem; margin: 0.5rem 0 0 0;">Designed to meet customer needs</p>
</div>
<div style="background: var(--light-gray); padding: 1rem; border-radius: 6px;">
<strong>Price & Value</strong>
<p style="font-size: 0.9rem; margin: 0.5rem 0 0 0;">Fair value for customers</p>
</div>
<div style="background: var(--light-gray); padding: 1rem; border-radius: 6px;">
<strong>Consumer Understanding</strong>
<p style="font-size: 0.9rem; margin: 0.5rem 0 0 0;">Clear information and support</p>
</div>
<div style="background: var(--light-gray); padding: 1rem; border-radius: 6px;">
<strong>Consumer Support</strong>
<p style="font-size: 0.9rem; margin: 0.5rem 0 0 0;">Effective customer service</p>
</div>
</div>
<h5 style="color: var(--primary-blue); margin: 1.5rem 0 0.75rem 0;">Implementation Requirements:</h5>
<ul style="margin-left: 1.5rem;">
<li>Governance framework with clear accountability</li>
<li>Regular monitoring and review processes</li>
<li>Management information and reporting systems</li>
<li>Staff training and culture alignment</li>
</ul>
</div>
`;
} else {
response = `
<div style="line-height: 1.6;">
<h4 style="color: var(--primary-blue); margin-bottom: 1rem;">Compliance Analysis</h4>
<div style="background: var(--light-gray); border-left: 4px solid var(--light-blue); padding: 1rem; margin-bottom: 1.5rem; border-radius: 4px;">
<strong>📋 Analysis Complete:</strong>
<p style="margin: 0.5rem 0 0 0; color: var(--neutral-gray);">Based on your question, I've analyzed relevant FCA requirements and provide the following guidance.</p>
</div>
<p style="margin-bottom: 1.5rem;">Your compliance question has been processed against the FCA Handbook. Here are the key regulatory considerations:</p>
<h5 style="color: var(--primary-blue); margin: 1.5rem 0 0.75rem 0;">Relevant Regulations:</h5>
<ul style="margin-left: 1.5rem; margin-bottom: 1.5rem;">
<li>FCA Principles for Businesses (PRIN)</li>
<li>Conduct of Business Sourcebook (COBS)</li>
<li>Senior Management Arrangements (SYSC)</li>
</ul>
<h5 style="color: var(--primary-blue); margin: 1.5rem 0 0.75rem 0;">Next Steps:</h5>
<ol style="margin-left: 1.5rem;">
<li>Review specific regulatory requirements</li>
<li>Assess current compliance status</li>
<li>Implement any necessary changes</li>
<li>Monitor ongoing compliance</li>
</ol>
</div>
`;
}
responseContent.innerHTML = response;
}
function askAnotherQuestion() {
document.getElementById('compliance-question').value = '';
document.getElementById('question-response').style.display = 'none';
document.getElementById('compliance-question').focus();
}
// Initialize landing page view
showLanding();
Your CSS
/* Brand Colors from Brand.md */
:root {
--primary-blue: #1E3A8A;
--light-blue: #3B82F6;
--success-green: #059669;
--success-green-bg: #F0FDF4;
--warning-orange: #EA580C;
--warning-orange-bg: #FFF7ED;
--error-red: #DC2626;
--error-red-bg: #FEF2F2;
--neutral-gray: #374151;
--light-gray: #F9FAFB;
--border-gray: #E5E7EB;
--text-gray: #6B7280;
--white: #FFFFFF;
}
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', sans-serif;
background-color: var(--light-gray);
color: var(--neutral-gray);
line-height: 1.6;
}
/* Header */
.header {
background: var(--white);
border-bottom: 1px solid var(--border-gray);
padding: 1rem 2rem;
display: flex;
justify-content: space-between;
align-items: center;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
.logo {
font-size: 1.5rem;
font-weight: 700;
color: var(--primary-blue);
}
.header-right {
display: flex;
align-items: center;
gap: 1rem;
}
.search-box {
padding: 0.5rem;
border: 1px solid var(--border-gray);
border-radius: 6px;
width: 300px;
}
.alert-badge {
background: var(--warning-orange);
color: white;
padding: 0.25rem 0.5rem;
border-radius: 12px;
font-size: 0.875rem;
font-weight: 500;
}
.user-info {
display: flex;
align-items: center;
gap: 0.5rem;
color: var(--neutral-gray);
}
/* Main Layout */
.main-container {
display: flex;
min-height: calc(100vh - 80px);
}
.sidebar {
width: 250px;
background: var(--white);
border-right: 1px solid var(--border-gray);
padding: 1.5rem;
}
.nav-item {
display: block;
padding: 0.75rem;
color: var(--neutral-gray);
text-decoration: none;
border-radius: 6px;
margin-bottom: 0.5rem;
transition: background-color 0.2s;
}
.nav-item:hover, .nav-item.active {
background: var(--light-gray);
color: var(--primary-blue);
}
.content {
flex: 1;
padding: 2rem;
}
/* Status Cards */
.status-cards {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
gap: 1.5rem;
margin-bottom: 2rem;
}
.status-card {
background: var(--white);
border: 1px solid var(--border-gray);
border-radius: 8px;
padding: 1.5rem;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
.status-card h3 {
font-size: 0.875rem;
font-weight: 500;
color: var(--text-gray);
margin-bottom: 0.5rem;
text-transform: uppercase;
letter-spacing: 0.05em;
}
.status-value {
font-size: 2rem;
font-weight: 700;
margin-bottom: 0.25rem;
}
.status-label {
font-size: 0.875rem;
font-weight: 500;
padding: 0.25rem 0.5rem;
border-radius: 4px;
display: inline-block;
}
.status-good {
color: var(--success-green);
background: var(--success-green-bg);
}
.status-warning {
color: var(--warning-orange);
background: var(--warning-orange-bg);
}
.status-info {
color: var(--light-blue);
background: #EFF6FF;
}
.status-complete {
color: var(--success-green);
background: var(--success-green-bg);
}
/* Main Content Grid */
.content-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 2rem;
}
.content-panel {
background: var(--white);
border: 1px solid var(--border-gray);
border-radius: 8px;
box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}
.panel-header {
padding: 1.5rem;
border-bottom: 1px solid var(--border-gray);
font-weight: 600;
color: var(--primary-blue);
}
.panel-content {
padding: 1.5rem;
}
/* Regulatory Changes Panel */
.change-item {
margin-bottom: 1.5rem;
padding-bottom: 1.5rem;
border-bottom: 1px solid var(--border-gray);
}
.change-item:last-child {
margin-bottom: 0;
padding-bottom: 0;
border-bottom: none;
}
.change-title {
font-weight: 600;
color: var(--primary-blue);
margin-bottom: 0.5rem;
}
.change-meta {
display: flex;
gap: 1rem;
font-size: 0.875rem;
color: var(--text-gray);
margin-bottom: 0.5rem;
}
/* Compliance Gaps Panel */
.gap-item {
display: flex;
align-items: center;
gap: 1rem;
padding: 1rem;
margin-bottom: 0.75rem;
border-radius: 6px;
background: var(--light-gray);
}
.risk-indicator {
width: 12px;
height: 12px;
border-radius: 50%;
flex-shrink: 0;
}
.risk-high { background: var(--error-red); }
.risk-medium { background: var(--warning-orange); }
.risk-low { background: var(--success-green); }
.gap-content {
flex: 1;
}
.gap-title {
font-weight: 500;
color: var(--neutral-gray);
}
.gap-reference {
font-size: 0.875rem;
color: var(--text-gray);
}
/* Buttons */
.btn {
padding: 0.75rem 1.5rem;
border-radius: 6px;
font-weight: 500;
text-decoration: none;
display: inline-block;
transition: all 0.2s;
border: none;
cursor: pointer;
}
.btn-primary {
background: var(--light-blue);
color: white;
}
.btn-primary:hover {
background: var(--primary-blue);
}
.btn-secondary {
background: white;
color: var(--neutral-gray);
border: 1px solid var(--border-gray);
}
.btn-secondary:hover {
background: var(--light-gray);
}
.btn-group {
display: flex;
gap: 1rem;
margin-top: 1rem;
}
/* Progress Bar */
.progress-bar {
width: 100%;
height: 8px;
background: var(--border-gray);
border-radius: 4px;
overflow: hidden;
margin: 0.5rem 0;
}
.progress-fill {
height: 100%;
background: var(--success-green);
transition: width 0.3s ease;
}
/* MCP Tools Panel (Hidden by default, shown when clicked) */
.mcp-panel {
display: none;
grid-column: 1 / -1;
background: var(--white);
border: 1px solid var(--border-gray);
border-radius: 8px;
margin-top: 2rem;
}
.mcp-tools-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
gap: 1rem;
padding: 1.5rem;
}
.mcp-tool {
padding: 1rem;
border: 1px solid var(--border-gray);
border-radius: 6px;
background: var(--light-gray);
}
.mcp-tool-name {
font-weight: 600;
color: var(--primary-blue);
margin-bottom: 0.5rem;
}
.mcp-tool-desc {
font-size: 0.875rem;
color: var(--text-gray);
}
.mcp-status {
color: var(--success-green);
font-weight: 500;
}
/* Analysis Interface (Hidden by default) */
.analysis-interface {
display: none;
grid-column: 1 / -1;
background: var(--white);
border: 1px solid var(--border-gray);
border-radius: 8px;
margin-top: 2rem;
}
.upload-area {
border: 2px dashed var(--border-gray);
border-radius: 8px;
padding: 3rem;
text-align: center;
margin-bottom: 1.5rem;
background: var(--light-gray);
}
.analysis-options {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 1rem;
margin-bottom: 1.5rem;
}
.form-group {
display: flex;
flex-direction: column;
gap: 0.5rem;
}
.form-group label {
font-weight: 500;
color: var(--neutral-gray);
}
.form-group select, .form-group input {
padding: 0.75rem;
border: 1px solid var(--border-gray);
border-radius: 6px;
}
/* Results Panel */
.results-panel {
display: none;
margin-top: 1.5rem;
padding: 1.5rem;
background: var(--light-gray);
border-radius: 8px;
}
.score-display {
text-align: center;
margin-bottom: 2rem;
}
.score-value {
font-size: 3rem;
font-weight: 700;
color: var(--warning-orange);
}
.score-label {
font-size: 1.25rem;
color: var(--neutral-gray);
}
.findings-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
gap: 1rem;
margin: 1.5rem 0;
}
.finding-card {
background: var(--white);
padding: 1rem;
border-radius: 6px;
text-align: center;
}
.finding-number {
font-size: 1.5rem;
font-weight: 700;
margin-bottom: 0.25rem;
}
.finding-critical { color: var(--error-red); }
.finding-partial { color: var(--warning-orange); }
.finding-met { color: var(--success-green); }
.finding-recommendations { color: var(--light-blue); }
/* Responsive Design */
@media (max-width: 768px) {
.main-container {
flex-direction: column;
}
.sidebar {
width: 100%;
}
.content-grid {
grid-template-columns: 1fr;
}
.status-cards {
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
}
}
Metadata
Metadata
Assignees
Labels
No labels