Mayank14's picture
Changed color theme
06767e3
Raw
History Blame Contribute Delete
15.1 kB
/* CSS Custom Properties for Consistent Design */
:root {
/* Color Palette - Soft, Calming Colors */
--primary-bg: #d9e7f5;
--secondary-bg: #ebeef1;
--card-bg: #ffffff;
--border-color: #e1e5e9;
--text-primary: #2c3e50;
--text-secondary: #5a6c7d;
--text-muted: #8b9dc3;
--accent-blue: #6c9bd1;
--accent-green: #7fb069;
--accent-soft: #b8d4f0;
--success-color: #27ae60;
--warning-color: #f39c12;
--error-color: #e74c3c;
--shadow-light: rgba(0, 0, 0, 0.05);
--shadow-medium: rgba(0, 0, 0, 0.1);
--shadow-strong: rgba(0, 0, 0, 0.15);
/* Typography */
--font-primary: 'Lexend Deca', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
--font-dyslexia: 'OpenDyslexic', 'Lexend Deca', sans-serif;
--font-size-base: 16px;
--font-size-large: 18px;
--font-size-small: 14px;
--line-height-base: 1.6;
--line-height-relaxed: 1.8;
/* Spacing */
--spacing-xs: 0.25rem;
--spacing-sm: 0.5rem;
--spacing-md: 1rem;
--spacing-lg: 1.5rem;
--spacing-xl: 2rem;
--spacing-xxl: 3rem;
/* Border Radius */
--radius-sm: 6px;
--radius-md: 12px;
--radius-lg: 16px;
--radius-xl: 20px;
/* Transitions */
--transition-fast: 0.2s ease;
--transition-normal: 0.3s ease;
--transition-slow: 0.5s ease;
}
/* Reset and Base Styles */
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
scroll-behavior: smooth;
}
body {
font-family: var(--font-primary);
font-size: var(--font-size-base);
line-height: var(--line-height-base);
color: var(--text-primary);
background-color: var(--primary-bg);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
/* Focus Styles for Accessibility */
*:focus {
outline: 2px solid var(--accent-blue);
outline-offset: 2px;
}
*:focus:not(:focus-visible) {
outline: none;
}
/* Navigation */
.navbar {
background: var(--card-bg);
border-bottom: 1px solid var(--border-color);
box-shadow: 0 2px 8px var(--shadow-light);
position: sticky;
top: 0;
z-index: 100;
}
.nav-container {
max-width: 1200px;
margin: 0 auto;
padding: var(--spacing-md) var(--spacing-lg);
display: flex;
justify-content: space-between;
align-items: center;
}
.nav-brand {
display: flex;
align-items: center;
gap: var(--spacing-sm);
}
.nav-brand i {
color: var(--accent-blue);
font-size: 1.5rem;
}
.nav-brand h1 {
font-size: 1.5rem;
font-weight: 600;
color: var(--text-primary);
}
.info-btn {
background: none;
border: none;
color: var(--text-secondary);
font-size: 1.2rem;
cursor: pointer;
padding: var(--spacing-sm);
border-radius: var(--radius-sm);
transition: all var(--transition-fast);
}
.info-btn:hover {
color: var(--accent-blue);
background-color: var(--accent-soft);
}
/* Info Tooltip */
.info-tooltip {
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%) scale(0);
background: var(--card-bg);
border: 1px solid var(--border-color);
border-radius: var(--radius-lg);
box-shadow: 0 10px 30px var(--shadow-strong);
padding: var(--spacing-xl);
max-width: 500px;
width: 90%;
z-index: 1000;
transition: transform var(--transition-normal);
}
.info-tooltip.show {
transform: translate(-50%, -50%) scale(1);
}
.tooltip-content h3 {
color: var(--text-primary);
margin-bottom: var(--spacing-md);
font-size: 1.25rem;
}
.tooltip-content p {
color: var(--text-secondary);
line-height: var(--line-height-relaxed);
margin-bottom: var(--spacing-lg);
}
.close-tooltip {
position: absolute;
top: var(--spacing-md);
right: var(--spacing-md);
background: none;
border: none;
color: var(--text-muted);
font-size: 1.2rem;
cursor: pointer;
padding: var(--spacing-xs);
border-radius: var(--radius-sm);
transition: color var(--transition-fast);
}
.close-tooltip:hover {
color: var(--text-primary);
}
/* Main Content */
.main-content {
min-height: calc(100vh - 140px);
padding: var(--spacing-xl) 0;
}
.container {
max-width: 1200px;
margin: 0 auto;
padding: 0 var(--spacing-lg);
}
/* App Header */
.app-header {
text-align: center;
margin-bottom: var(--spacing-xxl);
}
.app-header h2 {
font-size: 2.5rem;
font-weight: 600;
color: var(--text-primary);
margin-bottom: var(--spacing-md);
line-height: 1.3;
}
.subtitle {
font-size: var(--font-size-large);
color: var(--text-secondary);
max-width: 600px;
margin: 0 auto;
line-height: var(--line-height-relaxed);
}
/* Controls Section */
.controls-section {
margin-bottom: var(--spacing-xl);
}
.control-group {
display: flex;
gap: var(--spacing-md);
justify-content: center;
flex-wrap: wrap;
}
.control-btn {
display: flex;
align-items: center;
gap: var(--spacing-sm);
padding: var(--spacing-md) var(--spacing-lg);
background: var(--card-bg);
border: 2px solid var(--border-color);
border-radius: var(--radius-md);
color: var(--text-primary);
font-family: var(--font-primary);
font-size: var(--font-size-base);
font-weight: 500;
cursor: pointer;
transition: all var(--transition-fast);
box-shadow: 0 2px 4px var(--shadow-light);
}
.control-btn:hover {
border-color: var(--accent-blue);
background-color: var(--accent-soft);
transform: translateY(-1px);
box-shadow: 0 4px 8px var(--shadow-medium);
}
.control-btn:active {
transform: translateY(0);
}
.control-btn[aria-pressed="true"] {
background-color: var(--accent-blue);
border-color: var(--accent-blue);
color: white;
}
.tts-controls {
display: flex;
gap: var(--spacing-sm);
}
/* Text Section */
.text-section {
margin-bottom: var(--spacing-xl);
}
.text-container {
display: grid;
gap: var(--spacing-xl);
max-width: 1000px;
margin: 0 auto;
}
.text-box-container {
display: flex;
flex-direction: column;
gap: var(--spacing-sm);
}
.text-label {
display: flex;
align-items: center;
gap: var(--spacing-sm);
font-weight: 600;
color: var(--text-primary);
font-size: var(--font-size-large);
}
.text-label i {
color: var(--accent-blue);
}
.text-box-wrapper {
position: relative;
background: var(--card-bg);
border: 2px solid var(--border-color);
border-radius: var(--radius-lg);
box-shadow: 0 4px 12px var(--shadow-light);
transition: all var(--transition-fast);
}
.text-box-wrapper:focus-within {
border-color: var(--accent-blue);
box-shadow: 0 4px 20px var(--shadow-medium);
}
.text-box {
width: 100%;
padding: var(--spacing-lg);
border: none;
background: transparent;
font-family: var(--font-primary);
font-size: var(--font-size-base);
line-height: var(--line-height-relaxed);
color: var(--text-primary);
resize: vertical;
min-height: 200px;
border-radius: var(--radius-lg);
}
.text-box:focus {
outline: none;
}
.text-box::placeholder {
color: var(--text-muted);
font-style: italic;
}
.text-box-actions {
position: absolute;
top: var(--spacing-md);
right: var(--spacing-md);
display: flex;
gap: var(--spacing-xs);
opacity: 0;
transition: opacity var(--transition-fast);
}
.text-box-wrapper:hover .text-box-actions {
opacity: 1;
}
.action-btn {
background: var(--card-bg);
border: 1px solid var(--border-color);
border-radius: var(--radius-sm);
color: var(--text-secondary);
padding: var(--spacing-sm);
cursor: pointer;
transition: all var(--transition-fast);
box-shadow: 0 2px 4px var(--shadow-light);
}
.action-btn:hover {
background: var(--accent-soft);
color: var(--accent-blue);
transform: translateY(-1px);
}
/* Process Section */
.process-section {
display: flex;
flex-direction: column;
align-items: center;
gap: var(--spacing-sm);
}
.process-btn {
position: relative;
background: linear-gradient(135deg, var(--accent-blue), var(--accent-green));
border: none;
border-radius: var(--radius-xl);
color: white;
font-family: var(--font-primary);
font-size: var(--font-size-large);
font-weight: 600;
padding: var(--spacing-lg) var(--spacing-xxl);
cursor: pointer;
transition: all var(--transition-normal);
box-shadow: 0 6px 20px var(--shadow-medium);
overflow: hidden;
}
.process-btn:hover {
transform: translateY(-2px);
box-shadow: 0 8px 25px var(--shadow-strong);
}
.process-btn:active {
transform: translateY(0);
}
.process-btn:disabled {
opacity: 0.7;
cursor: not-allowed;
transform: none;
}
.btn-text {
display: flex;
align-items: center;
gap: var(--spacing-sm);
}
.loading-spinner {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
opacity: 0;
transition: opacity var(--transition-fast);
}
.process-btn.loading .btn-text {
opacity: 0;
}
.process-btn.loading .loading-spinner {
opacity: 1;
}
.spinner {
width: 24px;
height: 24px;
border: 3px solid rgba(255, 255, 255, 0.3);
border-top: 3px solid white;
border-radius: 50%;
animation: spin 1s linear infinite;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
/* Help Text */
.help-text {
font-size: var(--font-size-small);
color: var(--text-muted);
font-style: italic;
}
/* Status Messages */
.status-messages {
position: fixed;
top: var(--spacing-xl);
right: var(--spacing-xl);
z-index: 1000;
}
.status-message {
background: var(--card-bg);
border: 1px solid var(--border-color);
border-radius: var(--radius-md);
padding: var(--spacing-md) var(--spacing-lg);
box-shadow: 0 4px 12px var(--shadow-medium);
margin-bottom: var(--spacing-sm);
transform: translateX(100%);
transition: transform var(--transition-normal);
max-width: 300px;
}
.status-message.show {
transform: translateX(0);
}
.status-message.success {
border-left: 4px solid var(--success-color);
}
.status-message.error {
border-left: 4px solid var(--error-color);
}
.status-message.warning {
border-left: 4px solid var(--warning-color);
}
/* Footer */
.footer {
background: var(--card-bg);
border-top: 1px solid var(--border-color);
padding: var(--spacing-xl) 0;
text-align: center;
margin-top: var(--spacing-xxl);
}
.footer-content p {
color: var(--text-secondary);
margin-bottom: var(--spacing-xs);
}
.heart {
color: var(--error-color);
animation: heartbeat 2s ease-in-out infinite;
}
@keyframes heartbeat {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.1); }
}
.footer-subtitle {
font-size: var(--font-size-small);
color: var(--text-muted);
}
/* Dyslexia-Friendly Styles */
.dyslexia-friendly {
font-family: var(--font-dyslexia) !important;
letter-spacing: 0.1em !important;
word-spacing: 0.2em !important;
line-height: 1.8 !important;
}
.dyslexia-friendly .text-box {
font-family: var(--font-dyslexia) !important;
font-weight: 500 !important;
letter-spacing: 0.12em !important;
word-spacing: 0.25em !important;
line-height: 1.9 !important;
font-size: 1.1em !important;
color: var(--text-primary) !important;
background-color: #fefefe !important;
border: 2px solid var(--accent-blue) !important;
}
.dyslexia-friendly .text-box::first-letter {
font-weight: 700 !important;
font-size: 1.2em !important;
}
.dyslexia-friendly .text-box::placeholder {
font-family: var(--font-dyslexia) !important;
letter-spacing: 0.1em !important;
word-spacing: 0.2em !important;
}
/* Enhanced dyslexia-friendly text styling */
.dyslexia-friendly .text-box {
text-shadow: 0.5px 0.5px 0px rgba(0, 0, 0, 0.1) !important;
text-rendering: optimizeLegibility !important;
-webkit-font-smoothing: antialiased !important;
-moz-osx-font-smoothing: grayscale !important;
}
/* Apply dyslexia-friendly styles to all text elements */
.dyslexia-friendly .text-label,
.dyslexia-friendly .help-text,
.dyslexia-friendly .status-message,
.dyslexia-friendly h1,
.dyslexia-friendly h2,
.dyslexia-friendly h3,
.dyslexia-friendly p {
font-family: var(--font-dyslexia) !important;
letter-spacing: 0.08em !important;
word-spacing: 0.15em !important;
line-height: 1.7 !important;
}
/* Dyslexia-friendly button text */
.dyslexia-friendly .control-btn span,
.dyslexia-friendly .process-btn .btn-text {
font-family: var(--font-dyslexia) !important;
letter-spacing: 0.05em !important;
word-spacing: 0.1em !important;
}
/* Responsive Design */
@media (max-width: 768px) {
.container {
padding: 0 var(--spacing-md);
}
.nav-container {
padding: var(--spacing-md);
}
.nav-brand h1 {
font-size: 1.25rem;
}
.app-header h2 {
font-size: 2rem;
}
.subtitle {
font-size: var(--font-size-base);
}
.control-group {
flex-direction: column;
align-items: center;
}
.tts-controls {
width: 100%;
justify-content: center;
}
.text-box {
min-height: 150px;
font-size: var(--font-size-large);
}
.process-btn {
width: 100%;
max-width: 300px;
}
.status-messages {
top: var(--spacing-md);
right: var(--spacing-md);
left: var(--spacing-md);
}
.status-message {
max-width: none;
}
}
@media (max-width: 480px) {
.main-content {
padding: var(--spacing-lg) 0;
}
.app-header {
margin-bottom: var(--spacing-xl);
}
.app-header h2 {
font-size: 1.75rem;
}
.text-box {
padding: var(--spacing-md);
font-size: var(--font-size-large);
}
.text-box-actions {
position: static;
opacity: 1;
margin-top: var(--spacing-sm);
justify-content: center;
}
.info-tooltip {
width: 95%;
padding: var(--spacing-lg);
}
}
/* High Contrast Mode Support */
@media (prefers-contrast: high) {
:root {
--border-color: #000000;
--text-primary: #000000;
--text-secondary: #333333;
--shadow-light: rgba(0, 0, 0, 0.2);
--shadow-medium: rgba(0, 0, 0, 0.3);
}
}
/* Reduced Motion Support */
@media (prefers-reduced-motion: reduce) {
* {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
html {
scroll-behavior: auto;
}
}
/* Print Styles */
@media print {
.navbar,
.controls-section,
.text-box-actions,
.process-section,
.footer {
display: none;
}
.text-box {
border: 1px solid #000;
box-shadow: none;
}
}