wash-dev-site / style.css
A634579's picture
Here’s the exact UI spec you can screenshot and throw straight to your dev/design team right now. It’s deliberately minimal, developer-first, and converts like crazy.
f49d1e7 verified
/* Global styles */
* {
box-sizing: border-box;
}
body {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
line-height: 1.6;
}
/* Smooth scrolling */
html {
scroll-behavior: smooth;
}
/* Custom animations */
@keyframes fadeInUp {
from {
opacity: 0;
transform: translateY(20px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
.animate-fade-in-up {
animation: fadeInUp 0.6s ease-out;
}
/* Live feed animation */
@keyframes pulse {
0%, 100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}
.live-indicator {
animation: pulse 2s infinite;
}
/* Custom scrollbar */
::-webkit-scrollbar {
width: 6px;
}
::-webkit-scrollbar-track {
background: #f1f1f1;
}
::-webkit-scrollbar-thumb {
background: #c1c1c1;
border-radius: 3px;
}
::-webkit-scrollbar-thumb:hover {
background: #a8a8a8;
}
/* Loading spinner */
.spinner {
border: 2px solid #f3f3f3;
border-top: 2px solid #3b82f6;
border-radius: 50%;
width: 20px;
height: 20px;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* File drop zone styles */
.drop-zone {
border: 2px dashed #d1d5db;
transition: all 0.3s ease;
}
.drop-zone.dragover {
border-color: #3b82f6;
background-color: #eff6ff;
}
.drop-zone.processing {
border-color: #10b981;
background-color: #ecfdf5;
}
/* Status indicators */
.status-completed {
color: #10b981;
}
.status-processing {
color: #f59e0b;
}
.status-failed {
color: #ef4444;
}
/* Threat highlighting */
.threat-zero-width {
background-color: #fee2e2;
color: #dc2626;
padding: 1px 2px;
border-radius: 2px;
}
.threat-js {
background-color: #fef3c7;
color: #d97706;
padding: 1px 2px;
border-radius: 2px;
}
.threat-stego {
background-color: #e0e7ff;
color: #6366f1;
padding: 1px 2px;
border-radius: 2px;
}
/* Sparkline styles */
.sparkline {
width: 100%;
height: 40px;
}
/* Responsive adjustments */
@media (max-width: 768px) {
.hero h1 {
font-size: 2.5rem;
}
.pricing-grid {
grid-template-columns: 1fr;
}
.dashboard-layout {
flex-direction: column;
}
.sidebar {
width: 100%;
order: 2;
}
.main-panel {
order: 1;
}
}
/* Print styles */
@media print {
.no-print {
display: none !important;
}
}
/* Focus styles for accessibility */
button:focus,
a:focus,
input:focus,
textarea:focus {
outline: 2px solid #3b82f6;
outline-offset: 2px;
}
/* Custom button hover effects */
.btn-primary {
background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%);
transition: all 0.3s ease;
}
.btn-primary:hover {
transform: translateY(-1px);
box-shadow: 0 10px 25px rgba(59, 130, 246, 0.3);
}
/* Table row hover effects */
.table-row:hover {
background-color: #f9fafb;
}
/* Modal styles */
.modal-overlay {
background-color: rgba(0, 0, 0, 0.5);
backdrop-filter: blur(4px);
}
.modal-content {
max-height: 90vh;
overflow-y: auto;
}
/* Notification styles */
.notification {
animation: slideInRight 0.3s ease-out;
}
@keyframes slideInRight {
from {
transform: translateX(100%);
opacity: 0;
}
to {
transform: translateX(0);
opacity: 1;
}
}
/* Loading state styles */
.skeleton {
background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
background-size: 200% 100%;
animation: loading 1.5s infinite;
}
@keyframes loading {
0% {
background-position: 200% 0;
}
100% {
background-position: -200% 0;
}
}