/* ============================================ CHEMQUEST - CBSE Class 10 Chemistry Acids, Bases & Salts Interactive Learning Platform Modern Dark Theme with Glassmorphism ============================================ */ /* CSS Variables */ :root { /* Primary Colors - Blue, Green, Orange Palette */ --color-primary: #3b82f6; --color-primary-light: #60a5fa; --color-primary-dark: #1d4ed8; --color-secondary: #10b981; --color-secondary-light: #34d399; --color-secondary-dark: #059669; --color-accent: #f97316; --color-accent-light: #fb923c; --color-accent-dark: #ea580c; /* Acid/Base/Salt Colors */ --color-acid: #ef4444; --color-acid-light: #f87171; --color-base: #3b82f6; --color-base-light: #60a5fa; --color-salt: #a855f7; --color-salt-light: #c084fc; /* Dark Theme Colors */ --bg-primary: #0f172a; --bg-secondary: #1e293b; --bg-tertiary: #334155; --bg-card: rgba(30, 41, 59, 0.7); /* Text Colors */ --text-primary: #f8fafc; --text-secondary: #cbd5e1; --text-muted: #94a3b8; /* Glassmorphism */ --glass-bg: rgba(30, 41, 59, 0.6); --glass-border: rgba(255, 255, 255, 0.1); --glass-shadow: 0 8px 32px rgba(0, 0, 0, 0.3); /* Gradients */ --gradient-primary: linear-gradient(135deg, #3b82f6 0%, #10b981 100%); --gradient-accent: linear-gradient(135deg, #f97316 0%, #fbbf24 100%); --gradient-acid: linear-gradient(135deg, #ef4444 0%, #f97316 100%); --gradient-base: linear-gradient(135deg, #3b82f6 0%, #06b6d4 100%); --gradient-salt: linear-gradient(135deg, #a855f7 0%, #ec4899 100%); /* Spacing */ --space-xs: 0.25rem; --space-sm: 0.5rem; --space-md: 1rem; --space-lg: 1.5rem; --space-xl: 2rem; --space-2xl: 3rem; /* Border Radius */ --radius-sm: 0.375rem; --radius-md: 0.75rem; --radius-lg: 1rem; --radius-xl: 1.5rem; --radius-full: 9999px; /* Transitions */ --transition-fast: 0.15s ease; --transition-normal: 0.3s ease; --transition-slow: 0.5s ease; /* Typography */ --font-display: 'Outfit', sans-serif; --font-body: 'Space Grotesk', sans-serif; } /* Light Theme Variables */ [data-theme="light"] { --bg-primary: #f8fafc; --bg-secondary: #f1f5f9; --bg-tertiary: #e2e8f0; --bg-card: rgba(255, 255, 255, 0.8); --text-primary: #0f172a; --text-secondary: #334155; --text-muted: #64748b; --glass-bg: rgba(255, 255, 255, 0.7); --glass-border: rgba(0, 0, 0, 0.1); --glass-shadow: 0 8px 32px rgba(0, 0, 0, 0.1); } /* Reset & Base */ *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; } html { scroll-behavior: smooth; font-size: 16px; } body { font-family: var(--font-body); background: var(--bg-primary); color: var(--text-primary); line-height: 1.6; min-height: 100vh; overflow-x: hidden; } /* Typography */ h1, h2, h3, h4, h5, h6 { font-family: var(--font-display); font-weight: 700; line-height: 1.2; } /* Glassmorphism Utility */ .glass { background: var(--glass-bg); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border: 1px solid var(--glass-border); border-radius: var(--radius-lg); box-shadow: var(--glass-shadow); } /* Loading Screen */ .loading-screen { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: var(--bg-primary); display: flex; align-items: center; justify-content: center; z-index: 10000; transition: opacity 0.5s ease, visibility 0.5s ease; } .loading-screen.hidden { opacity: 0; visibility: hidden; } .loading-content { text-align: center; } .chemistry-loader { width: 150px; height: 150px; margin: 0 auto var(--space-lg); position: relative; } .atom { width: 100%; height: 100%; position: relative; animation: rotate 10s linear infinite; } .nucleus { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 30px; height: 30px; background: var(--gradient-primary); border-radius: 50%; box-shadow: 0 0 20px var(--color-primary); } .orbit { position: absolute; top: 50%; left: 50%; border: 2px solid rgba(59, 130, 246, 0.3); border-radius: 50%; transform: translate(-50%, -50%); } .orbit-1 { width: 80px; height: 80px; animation: rotate 3s linear infinite reverse; } .orbit-2 { width: 110px; height: 110px; animation: rotate 4s linear infinite; } .orbit-3 { width: 140px; height: 140px; animation: rotate 5s linear infinite reverse; } .electron { position: absolute; width: 12px; height: 12px; background: var(--color-accent); border-radius: 50%; box-shadow: 0 0 10px var(--color-accent); } .electron-1 { top: 10%; left: 50%; transform: translateX(-50%); animation: orbit1 3s linear infinite; } .electron-2 { top: 50%; right: 5%; transform: translateY(-50%); animation: orbit2 4s linear infinite; } .electron-3 { bottom: 10%; left: 50%; transform: translateX(-50%); animation: orbit3 5s linear infinite; } @keyframes rotate { from { transform: translate(-50%, -50%) rotate(0deg); } to { transform: translate(-50%, -50%) rotate(360deg); } } @keyframes orbit1 { 0% { transform: translateX(-50%) rotate(0deg) translateX(40px) rotate(0deg); } 100% { transform: translateX(-50%) rotate(360deg) translateX(40px) rotate(-360deg); } } @keyframes orbit2 { 0% { transform: translateY(-50%) rotate(0deg) translateX(55px) rotate(0deg); } 100% { transform: translateY(-50%) rotate(360deg) translateX(55px) rotate(-360deg); } } @keyframes orbit3 { 0% { transform: translateX(-50%) rotate(0deg) translateX(70px) rotate(0deg); } 100% { transform: translateX(-50%) rotate(360deg) translateX(70px) rotate(-360deg); } } .loading-text { font-size: 1.5rem; font-weight: 600; margin-bottom: var(--space-md); background: var(--gradient-primary); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .loading-bar { width: 200px; height: 6px; background: var(--bg-tertiary); border-radius: var(--radius-full); overflow: hidden; margin: 0 auto; } .loading-progress { height: 100%; background: var(--gradient-primary); border-radius: var(--radius-full); width: 0%; animation: loading 2s ease-in-out forwards; } @keyframes loading { 0% { width: 0%; } 100% { width: 100%; } } /* Navigation */ .main-nav { position: fixed; top: 0; left: 0; right: 0; height: 70px; background: var(--glass-bg); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border-bottom: 1px solid var(--glass-border); display: flex; align-items: center; justify-content: space-between; padding: 0 var(--space-xl); z-index: 1000; transition: var(--transition-normal); } .nav-brand .logo { display: flex; align-items: center; gap: var(--space-sm); font-family: var(--font-display); font-size: 1.5rem; font-weight: 700; color: var(--text-primary); } .nav-brand .logo i { color: var(--color-primary); font-size: 1.75rem; } .nav-center { display: flex; align-items: center; gap: var(--space-lg); } .level-badge { display: flex; align-items: center; gap: var(--space-xs); background: var(--gradient-accent); padding: var(--space-xs) var(--space-md); border-radius: var(--radius-full); font-weight: 600; font-size: 0.875rem; } .xp-bar { position: relative; width: 150px; height: 8px; background: var(--bg-tertiary); border-radius: var(--radius-full); overflow: hidden; } .xp-fill { height: 100%; background: var(--gradient-primary); border-radius: var(--radius-full); width: 0%; transition: width var(--transition-slow); } .xp-text { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 0.625rem; font-weight: 600; color: var(--text-primary); text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); } .nav-actions { display: flex; align-items: center; gap: var(--space-sm); } .nav-btn { width: 40px; height: 40px; border-radius: var(--radius-md); border: 1px solid var(--glass-border); background: var(--glass-bg); color: var(--text-secondary); cursor: pointer; transition: var(--transition-fast); display: flex; align-items: center; justify-content: center; } .nav-btn:hover { background: var(--color-primary); color: white; transform: translateY(-2px); } /* Mobile Menu */ .mobile-menu { position: fixed; top: 0; right: -100%; width: 300px; height: 100vh; background: var(--bg-secondary); z-index: 1001; transition: right var(--transition-normal); overflow-y: auto; } .mobile-menu.open { right: 0; } .menu-header { display: flex; align-items: center; justify-content: space-between; padding: var(--space-lg); border-bottom: 1px solid var(--glass-border); } .menu-header h3 { font-size: 1.25rem; } .close-menu { width: 36px; height: 36px; border-radius: var(--radius-md); border: none; background: var(--bg-tertiary); color: var(--text-primary); cursor: pointer; transition: var(--transition-fast); } .close-menu:hover { background: var(--color-accent); } .menu-links { padding: var(--space-md); } .menu-link { display: flex; align-items: center; gap: var(--space-md); padding: var(--space-md); color: var(--text-secondary); text-decoration: none; border-radius: var(--radius-md); transition: var(--transition-fast); margin-bottom: var(--space-xs); } .menu-link:hover, .menu-link.active { background: var(--color-primary); color: white; } .menu-link i { width: 20px; text-align: center; } /* Main Content */ .main-content { padding-top: 70px; min-height: 100vh; } /* Sections */ .section { display: none; padding: var(--space-2xl); max-width: 1400px; margin: 0 auto; animation: fadeIn 0.5s ease; } .section.active { display: block; } @keyframes fadeIn { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } } .section-header { text-align: center; margin-bottom: var(--space-2xl); } .section-icon { width: 80px; height: 80px; margin: 0 auto var(--space-lg); background: var(--gradient-primary); border-radius: var(--radius-xl); display: flex; align-items: center; justify-content: center; font-size: 2.5rem; color: white; box-shadow: 0 10px 40px rgba(59, 130, 246, 0.3); } .section-title { font-size: 2.5rem; margin-bottom: var(--space-md); background: var(--gradient-primary); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .section-subtitle { font-size: 1.125rem; color: var(--text-muted); max-width: 600px; margin: 0 auto; } /* Home Section */ .home-section { padding: 0; max-width: none; } .hero { min-height: calc(100vh - 70px); display: flex; align-items: center; justify-content: center; padding: var(--space-2xl); position: relative; overflow: hidden; } .hero-bg { position: absolute; top: 0; left: 0; right: 0; bottom: 0; overflow: hidden; } .floating-shape { position: absolute; border-radius: 50%; filter: blur(60px); opacity: 0.5; animation: float 20s ease-in-out infinite; } .shape-1 { width: 400px; height: 400px; background: var(--color-primary); top: -100px; left: -100px; animation-delay: 0s; } .shape-2 { width: 300px; height: 300px; background: var(--color-secondary); bottom: -50px; right: -50px; animation-delay: -5s; } .shape-3 { width: 250px; height: 250px; background: var(--color-accent); top: 50%; left: 50%; animation-delay: -10s; } .shape-4 { width: 200px; height: 200px; background: var(--color-salt); bottom: 20%; left: 20%; animation-delay: -15s; } @keyframes float { 0%, 100% { transform: translate(0, 0) scale(1); } 25% { transform: translate(50px, -50px) scale(1.1); } 50% { transform: translate(-30px, 30px) scale(0.9); } 75% { transform: translate(30px, 50px) scale(1.05); } } .hero-content { text-align: center; z-index: 1; max-width: 800px; } .hero-badge { display: inline-flex; align-items: center; gap: var(--space-sm); background: var(--glass-bg); padding: var(--space-sm) var(--space-lg); border-radius: var(--radius-full); margin-bottom: var(--space-lg); font-size: 0.875rem; color: var(--text-secondary); } .hero-badge i { color: var(--color-primary); } .hero-title { font-size: clamp(2.5rem, 6vw, 4.5rem); margin-bottom: var(--space-lg); line-height: 1.1; } .gradient-text { background: var(--gradient-acid); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .gradient-text-alt { background: var(--gradient-base); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .hero-subtitle { font-size: 1.25rem; color: var(--text-secondary); margin-bottom: var(--space-xl); max-width: 600px; margin-left: auto; margin-right: auto; } .hero-stats { display: flex; justify-content: center; gap: var(--space-lg); margin-bottom: var(--space-xl); flex-wrap: wrap; } .stat-card { padding: var(--space-lg); text-align: center; min-width: 140px; } .stat-card i { font-size: 2rem; color: var(--color-primary); margin-bottom: var(--space-sm); } .stat-value { display: block; font-family: var(--font-display); font-size: 1.75rem; font-weight: 700; color: var(--text-primary); } .stat-label { font-size: 0.875rem; color: var(--text-muted); } .hero-actions { display: flex; justify-content: center; gap: var(--space-md); margin-bottom: var(--space-xl); flex-wrap: wrap; } /* Buttons */ .btn { display: inline-flex; align-items: center; gap: var(--space-sm); padding: var(--space-md) var(--space-lg); border-radius: var(--radius-lg); font-family: var(--font-display); font-weight: 600; font-size: 1rem; cursor: pointer; transition: var(--transition-fast); border: none; text-decoration: none; } .btn-primary { background: var(--gradient-primary); color: white; box-shadow: 0 4px 15px rgba(59, 130, 246, 0.4); } .btn-primary:hover { transform: translateY(-3px); box-shadow: 0 8px 25px rgba(59, 130, 246, 0.5); } .btn-secondary { background: var(--glass-bg); color: var(--text-primary); border: 1px solid var(--glass-border); } .btn-secondary:hover { background: var(--bg-tertiary); transform: translateY(-3px); } .btn-large { padding: var(--space-md) var(--space-xl); font-size: 1.125rem; } .motivation-quote { max-width: 600px; margin: 0 auto; padding: var(--space-lg); position: relative; } .motivation-quote i { font-size: 1.5rem; color: var(--color-accent); margin-bottom: var(--space-sm); } .motivation-quote p { font-size: 1.125rem; font-style: italic; color: var(--text-secondary); margin-bottom: var(--space-sm); } .quote-author { font-size: 0.875rem; color: var(--text-muted); } /* Hero Visual */ .hero-visual { position: absolute; right: 5%; top: 50%; transform: translateY(-50%); opacity: 0.3; pointer-events: none; } .chemistry-scene { position: relative; width: 300px; height: 400px; } .beaker { position: absolute; width: 60px; height: 80px; border: 3px solid var(--text-muted); border-top: none; border-radius: 0 0 var(--radius-md) var(--radius-md); overflow: hidden; } .beaker-1 { left: 0; top: 50px; } .beaker-2 { left: 100px; top: 80px; } .beaker-3 { left: 200px; top: 40px; } .liquid { position: absolute; bottom: 0; left: 0; right: 0; height: 60%; animation: wave 3s ease-in-out infinite; } .acid-liquid { background: var(--gradient-acid); } .base-liquid { background: var(--gradient-base); } .salt-liquid { background: var(--gradient-salt); } @keyframes wave { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-5px); } } .bubbles { position: absolute; bottom: 10px; left: 50%; transform: translateX(-50%); } .bubbles::before, .bubbles::after { content: ''; position: absolute; width: 8px; height: 8px; background: rgba(255, 255, 255, 0.5); border-radius: 50%; animation: bubble-rise 2s ease-in-out infinite; } .bubbles::after { left: 15px; animation-delay: 0.5s; } @keyframes bubble-rise { 0% { transform: translateY(0) scale(1); opacity: 1; } 100% { transform: translateY(-40px) scale(0.5); opacity: 0; } } .molecule { position: absolute; font-size: 1.5rem; font-weight: 700; animation: float-molecule 4s ease-in-out infinite; } .molecule-1 { left: 30px; top: 200px; color: var(--color-acid); animation-delay: 0s; } .molecule-2 { left: 150px; top: 250px; color: var(--color-base); animation-delay: -1s; } .molecule-3 { left: 250px; top: 180px; color: var(--color-salt); animation-delay: -2s; } .molecule-4 { left: 80px; top: 300px; color: var(--color-secondary); animation-delay: -3s; } @keyframes float-molecule { 0%, 100% { transform: translate(0, 0); } 25% { transform: translate(10px, -10px); } 50% { transform: translate(-5px, 5px); } 75% { transform: translate(5px, 10px); } } /* Progress Overview */ .progress-overview { margin: var(--space-2xl); padding: var(--space-xl); } .progress-overview h3 { text-align: center; margin-bottom: var(--space-xl); font-size: 1.5rem; } .progress-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: var(--space-lg); } .progress-item { text-align: center; } .progress-ring { position: relative; width: 100px; height: 100px; margin: 0 auto var(--space-sm); } .progress-ring svg { transform: rotate(-90deg); } .progress-bg { fill: none; stroke: var(--bg-tertiary); stroke-width: 8; } .progress-fill { fill: none; stroke: url(#progress-gradient); stroke-width: 8; stroke-linecap: round; stroke-dasharray: 283; stroke-dashoffset: 283; transition: stroke-dashoffset var(--transition-slow); } .progress-ring i { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-size: 1.5rem; color: var(--color-primary); } .progress-item span { font-size: 0.875rem; color: var(--text-secondary); } /* Overview Section */ .overview-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: var(--space-xl); margin-bottom: var(--space-2xl); } .concept-card { padding: var(--space-xl); transition: var(--transition-normal); } .concept-card:hover { transform: translateY(-5px); } .concept-header { display: flex; align-items: center; gap: var(--space-md); margin-bottom: var(--space-lg); } .concept-icon { width: 60px; height: 60px; border-radius: var(--radius-lg); display: flex; align-items: center; justify-content: center; font-size: 1.75rem; } .acid-icon { background: var(--gradient-acid); } .base-icon { background: var(--gradient-base); } .salt-icon { background: var(--gradient-salt); } .concept-header h3 { font-size: 1.5rem; } .simple-def { background: rgba(59, 130, 246, 0.1); padding: var(--space-md); border-radius: var(--radius-md); margin-bottom: var(--space-md); border-left: 4px solid var(--color-primary); } .simple-def .highlight { color: var(--color-primary); font-weight: 600; } .analogy-box { background: rgba(249, 115, 22, 0.1); padding: var(--space-md); border-radius: var(--radius-md); margin-bottom: var(--space-md); display: flex; gap: var(--space-md); align-items: flex-start; } .analogy-box i { color: var(--color-accent); font-size: 1.25rem; margin-top: 2px; } .key-points { margin-bottom: var(--space-md); } .key-points h4 { display: flex; align-items: center; gap: var(--space-sm); margin-bottom: var(--space-sm); color: var(--color-secondary); } .key-points ul { list-style: none; } .key-points li { display: flex; align-items: center; gap: var(--space-sm); padding: var(--space-xs) 0; color: var(--text-secondary); } .key-points li i { color: var(--color-secondary); font-size: 0.75rem; } .examples-box { margin-bottom: var(--space-md); } .examples-box h4 { margin-bottom: var(--space-sm); color: var(--text-primary); } .example-tags { display: flex; flex-wrap: wrap; gap: var(--space-sm); } .tag { background: var(--bg-tertiary); padding: var(--space-xs) var(--space-sm); border-radius: var(--radius-full); font-size: 0.875rem; color: var(--text-secondary); transition: var(--transition-fast); } .tag:hover { background: var(--color-primary); color: white; } .memory-trick { background: rgba(168, 85, 247, 0.1); padding: var(--space-md); border-radius: var(--radius-md); display: flex; gap: var(--space-md); align-items: flex-start; } .memory-trick i { color: var(--color-salt); } .mark-complete-btn { width: 100%; margin-top: var(--space-lg); padding: var(--space-md); background: var(--bg-tertiary); border: 2px dashed var(--glass-border); border-radius: var(--radius-md); color: var(--text-secondary); cursor: pointer; transition: var(--transition-fast); display: flex; align-items: center; justify-content: center; gap: var(--space-sm); } .mark-complete-btn:hover, .mark-complete-btn.completed { background: var(--color-secondary); border-color: var(--color-secondary); color: white; } /* Quick Recap */ .quick-recap { padding: var(--space-xl); } .quick-recap h3 { text-align: center; margin-bottom: var(--space-lg); } .recap-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--space-lg); } .recap-item { display: flex; align-items: center; gap: var(--space-md); padding: var(--space-md); background: var(--bg-tertiary); border-radius: var(--radius-lg); } .recap-icon { width: 50px; height: 50px; border-radius: var(--radius-lg); display: flex; align-items: center; justify-content: center; font-size: 1.5rem; font-weight: 700; } .recap-icon.acid { background: var(--gradient-acid); } .recap-icon.base { background: var(--gradient-base); } .recap-icon.salt { background: var(--gradient-salt); } .recap-item strong { display: block; color: var(--text-primary); } .recap-item p { font-size: 0.875rem; color: var(--text-muted); } /* Lab Section */ .lab-container { padding: var(--space-xl); } .lab-workspace { display: grid; grid-template-columns: 1fr 350px; gap: var(--space-xl); margin-bottom: var(--space-xl); } .lab-table { background: var(--bg-tertiary); border-radius: var(--radius-lg); padding: var(--space-xl); display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 400px; } .beaker-container { position: relative; margin-bottom: var(--space-lg); } .beaker-main { width: 120px; height: 150px; border: 4px solid var(--text-muted); border-top: none; border-radius: 0 0 var(--radius-lg) var(--radius-lg); position: relative; overflow: hidden; background: rgba(255, 255, 255, 0.05); } .beaker-liquid { position: absolute; bottom: 0; left: 0; right: 0; height: 0%; transition: var(--transition-slow); border-radius: 0 0 var(--radius-md) var(--radius-md); } .beaker-liquid.acid { background: var(--gradient-acid); height: 60%; } .beaker-liquid.base { background: var(--gradient-base); height: 60%; } .beaker-liquid.salt { background: var(--gradient-salt); height: 60%; } .beaker-liquid.mixed { background: var(--gradient-primary); height: 70%; } .beaker-label { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); font-weight: 600; color: var(--text-primary); text-shadow: 0 2px 4px rgba(0, 0, 0, 0.5); } .beaker-stand { width: 140px; height: 10px; background: var(--text-muted); border-radius: var(--radius-full); margin-top: var(--space-xs); } .reaction-effects { position: absolute; top: 0; left: 0; right: 0; bottom: 0; pointer-events: none; } .reaction-info { text-align: center; } .reaction-info h4 { margin-bottom: var(--space-sm); color: var(--text-primary); } .chemicals-panel { background: var(--bg-tertiary); border-radius: var(--radius-lg); padding: var(--space-lg); } .chemicals-panel h4 { margin-bottom: var(--space-md); display: flex; align-items: center; gap: var(--space-sm); } .chemical-category { margin-bottom: var(--space-lg); } .chemical-category h5 { font-size: 0.875rem; color: var(--text-muted); margin-bottom: var(--space-sm); text-transform: uppercase; letter-spacing: 1px; } .chemical-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(100px, 1fr)); gap: var(--space-sm); } .chemical-btn { padding: var(--space-sm); background: var(--bg-secondary); border: 2px solid transparent; border-radius: var(--radius-md); cursor: pointer; transition: var(--transition-fast); text-align: center; } .chemical-btn:hover { border-color: var(--color-primary); transform: translateY(-2px); } .chemical-btn.selected { border-color: var(--color-primary); background: rgba(59, 130, 246, 0.2); } .chemical-btn.acid-btn:hover, .chemical-btn.acid-btn.selected { border-color: var(--color-acid); background: rgba(239, 68, 68, 0.2); } .chemical-btn.base-btn:hover, .chemical-btn.base-btn.selected { border-color: var(--color-base); background: rgba(59, 130, 246, 0.2); } .chemical-formula { display: block; font-weight: 700; font-size: 1rem; color: var(--text-primary); } .chemical-name { font-size: 0.625rem; color: var(--text-muted); } .lab-actions { display: flex; justify-content: center; gap: var(--space-md); margin-bottom: var(--space-xl); } .reaction-history { padding: var(--space-lg); } .reaction-history h4 { margin-bottom: var(--space-md); display: flex; align-items: center; gap: var(--space-sm); } .history-list { max-height: 200px; overflow-y: auto; } .empty-history { text-align: center; color: var(--text-muted); padding: var(--space-lg); } /* Examples Section */ .examples-tabs { display: flex; justify-content: center; gap: var(--space-sm); margin-bottom: var(--space-xl); } .tab-btn { padding: var(--space-md) var(--space-xl); background: var(--bg-tertiary); border: none; border-radius: var(--radius-full); color: var(--text-secondary); cursor: pointer; transition: var(--transition-fast); font-weight: 600; } .tab-btn:hover { background: var(--bg-secondary); color: var(--text-primary); } .tab-btn.active { background: var(--gradient-primary); color: white; } .tab-panel { display: none; } .tab-panel.active { display: block; animation: fadeIn 0.3s ease; } .examples-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--space-lg); } .example-card { padding: var(--space-lg); transition: var(--transition-normal); } .example-card:hover { transform: translateY(-5px); } .example-image { width: 100%; height: 150px; background: var(--bg-tertiary); border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; margin-bottom: var(--space-md); } .emoji-display { font-size: 4rem; } .example-card h4 { margin-bottom: var(--space-xs); color: var(--text-primary); } .chemical-name { color: var(--color-primary); font-size: 0.875rem; margin-bottom: var(--space-md); } .example-details { font-size: 0.875rem; color: var(--text-secondary); } .example-details p { margin-bottom: var(--space-xs); } /* Story Section */ .characters-intro { display: flex; justify-content: center; gap: var(--space-xl); margin-bottom: var(--space-2xl); flex-wrap: wrap; } .character-card { text-align: center; padding: var(--space-xl); min-width: 200px; cursor: pointer; transition: var(--transition-normal); } .character-card:hover { transform: scale(1.05); } .character-avatar { font-size: 4rem; margin-bottom: var(--space-md); } .character-card h3 { margin-bottom: var(--space-xs); } .character-card p { color: var(--text-muted); margin-bottom: var(--space-sm); } .character-trait { display: inline-block; background: var(--bg-tertiary); padding: var(--space-xs) var(--space-md); border-radius: var(--radius-full); font-size: 0.75rem; color: var(--text-secondary); } .story-container { max-width: 800px; margin: 0 auto; padding: var(--space-xl); } .story-chat { margin-bottom: var(--space-xl); max-height: 500px; overflow-y: auto; } .chat-message { display: flex; gap: var(--space-md); margin-bottom: var(--space-lg); animation: slideIn 0.3s ease; } @keyframes slideIn { from { opacity: 0; transform: translateX(-20px); } to { opacity: 1; transform: translateX(0); } } .chat-message.character-base { flex-direction: row-reverse; } .chat-avatar { width: 50px; height: 50px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 1.5rem; flex-shrink: 0; } .character-acid .chat-avatar { background: var(--gradient-acid); } .character-base .chat-avatar { background: var(--gradient-base); } .character-salt .chat-avatar { background: var(--gradient-salt); } .chat-bubble { background: var(--bg-tertiary); padding: var(--space-md); border-radius: var(--radius-lg); max-width: 70%; } .character-acid .chat-bubble { border-bottom-left-radius: var(--radius-xs); } .character-base .chat-bubble { border-bottom-right-radius: var(--radius-xs); } .chat-bubble p { margin-bottom: var(--space-xs); } .chat-bubble p:last-child { margin-bottom: 0; } .story-controls { display: flex; justify-content: space-between; align-items: center; } /* Games Section */ .games-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: var(--space-xl); } .game-card { padding: var(--space-xl); text-align: center; transition: var(--transition-normal); } .game-card:hover { transform: translateY(-5px); } .game-icon { width: 80px; height: 80px; margin: 0 auto var(--space-lg); background: var(--gradient-primary); border-radius: var(--radius-xl); display: flex; align-items: center; justify-content: center; font-size: 2.5rem; color: white; } .game-card h3 { margin-bottom: var(--space-sm); } .game-card > p { color: var(--text-muted); margin-bottom: var(--space-md); } .game-stats { display: flex; justify-content: center; gap: var(--space-lg); margin-bottom: var(--space-md); font-size: 0.875rem; } .game-stats span { display: flex; align-items: center; gap: var(--space-xs); } .game-stats i { color: var(--color-accent); } /* Indicators Section */ .indicators-intro { max-width: 600px; margin: 0 auto var(--space-2xl); padding: var(--space-lg); text-align: center; } .indicators-intro h3 { margin-bottom: var(--space-sm); display: flex; align-items: center; justify-content: center; gap: var(--space-sm); } .indicators-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: var(--space-xl); margin-bottom: var(--space-2xl); } .indicator-card { padding: var(--space-xl); } .indicator-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-lg); } .indicator-header h3 { font-size: 1.25rem; } .indicator-type { background: var(--bg-tertiary); padding: var(--space-xs) var(--space-sm); border-radius: var(--radius-full); font-size: 0.75rem; color: var(--text-muted); } .indicator-colors { display: flex; gap: var(--space-sm); margin-bottom: var(--space-lg); } .color-box { flex: 1; text-align: center; } .color { width: 100%; height: 60px; border-radius: var(--radius-md); margin-bottom: var(--space-xs); } .color-box span { font-size: 0.75rem; color: var(--text-muted); } .indicator-demo { display: flex; gap: var(--space-sm); margin-bottom: var(--space-md); } .demo-btn { flex: 1; padding: var(--space-sm); background: var(--bg-tertiary); border: none; border-radius: var(--radius-md); color: var(--text-secondary); cursor: pointer; transition: var(--transition-fast); } .demo-btn:hover { background: var(--color-primary); color: white; } .indicator-source, .memory-tip { font-size: 0.875rem; color: var(--text-muted); } .memory-tip i { color: var(--color-salt); } .universal-colors { margin-bottom: var(--space-lg); } .ph-scale-mini { display: flex; height: 40px; border-radius: var(--radius-md); overflow: hidden; margin-bottom: var(--space-sm); } .ph-item { flex: 1; display: flex; align-items: center; justify-content: center; font-size: 0.75rem; font-weight: 600; color: white; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); } .indicators-summary { padding: var(--space-xl); } .indicators-summary h3 { margin-bottom: var(--space-lg); display: flex; align-items: center; gap: var(--space-sm); } .data-table { width: 100%; border-collapse: collapse; } .data-table th, .data-table td { padding: var(--space-md); text-align: left; border-bottom: 1px solid var(--glass-border); } .data-table th { background: var(--bg-tertiary); font-weight: 600; color: var(--text-primary); } .data-table td { color: var(--text-secondary); } .data-table tr:hover td { background: rgba(59, 130, 246, 0.05); } /* pH Scale Section */ .ph-container { padding: var(--space-xl); margin-bottom: var(--space-2xl); } .ph-scale-visual { margin-bottom: var(--space-xl); } .ph-bar { display: flex; height: 80px; border-radius: var(--radius-lg); overflow: hidden; } .ph-segment { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; cursor: pointer; transition: var(--transition-fast); position: relative; } .ph-segment:hover { transform: scaleY(1.1); z-index: 1; } .ph-number { font-size: 1.25rem; font-weight: 700; color: white; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); } .ph-label { font-size: 0.625rem; color: white; text-align: center; padding: 0 var(--space-xs); opacity: 0.8; } .ph-info-panel { background: var(--bg-tertiary); border-radius: var(--radius-lg); padding: var(--space-xl); text-align: center; } .ph-info-content h3 { margin-bottom: var(--space-md); } .ph-facts { padding: var(--space-xl); } .ph-facts h3 { text-align: center; margin-bottom: var(--space-xl); display: flex; align-items: center; justify-content: center; gap: var(--space-sm); } .facts-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: var(--space-lg); } .fact-card { background: var(--bg-tertiary); padding: var(--space-lg); border-radius: var(--radius-lg); text-align: center; transition: var(--transition-fast); } .fact-card:hover { transform: translateY(-3px); } .fact-card i { font-size: 2rem; color: var(--color-primary); margin-bottom: var(--space-sm); } /* Reactions Section */ .reactions-nav { display: flex; flex-wrap: wrap; justify-content: center; gap: var(--space-sm); margin-bottom: var(--space-xl); } .reaction-tab { padding: var(--space-md) var(--space-lg); background: var(--bg-tertiary); border: none; border-radius: var(--radius-full); color: var(--text-secondary); cursor: pointer; transition: var(--transition-fast); font-weight: 600; } .reaction-tab:hover { background: var(--bg-secondary); color: var(--text-primary); } .reaction-tab.active { background: var(--gradient-primary); color: white; } .reaction-viewer { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-xl); padding: var(--space-xl); } .reaction-animation { background: var(--bg-tertiary); border-radius: var(--radius-lg); min-height: 400px; display: flex; align-items: center; justify-content: center; } .reaction-scene { width: 100%; padding: var(--space-xl); } .reaction-visual { display: flex; align-items: center; justify-content: center; gap: var(--space-md); flex-wrap: wrap; } .reactants, .products { display: flex; align-items: center; gap: var(--space-md); } .chemical-bottle { width: 80px; height: 100px; border: 3px solid var(--text-muted); border-top: none; border-radius: 0 0 var(--radius-md) var(--radius-md); position: relative; overflow: hidden; display: flex; align-items: flex-end; justify-content: center; padding-bottom: var(--space-sm); } .chemical-bottle .liquid { position: absolute; bottom: 0; left: 0; right: 0; height: 60%; } .chemical-bottle .liquid.acid { background: var(--gradient-acid); } .chemical-bottle .liquid.salt { background: var(--gradient-salt); } .chemical-bottle span { position: relative; z-index: 1; font-weight: 700; color: white; text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5); } .metal-piece { width: 60px; height: 60px; background: linear-gradient(135deg, #9ca3af, #6b7280); border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; font-weight: 700; color: white; } .gas-bubbles { width: 60px; height: 60px; background: rgba(255, 255, 255, 0.2); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 700; color: var(--text-primary); border: 2px dashed var(--text-muted); } .plus { font-size: 1.5rem; color: var(--text-muted); } .reaction-arrow { font-size: 2rem; color: var(--color-primary); } .reaction-details { padding: var(--space-lg); } .reaction-info h3 { margin-bottom: var(--space-lg); color: var(--text-primary); } .equation-box { background: var(--bg-tertiary); padding: var(--space-lg); border-radius: var(--radius-lg); margin-bottom: var(--space-lg); text-align: center; } .chemical-equation { font-size: 1.25rem; font-family: 'Courier New', monospace; color: var(--color-primary); } .reaction-explanation h4 { margin-bottom: var(--space-sm); margin-top: var(--space-lg); display: flex; align-items: center; gap: var(--space-sm); color: var(--color-secondary); } .reaction-explanation p { color: var(--text-secondary); margin-bottom: var(--space-md); } .important-points { margin-top: var(--space-xl); padding: var(--space-lg); background: rgba(249, 115, 22, 0.1); border-radius: var(--radius-lg); border-left: 4px solid var(--color-accent); } .important-points h4 { color: var(--color-accent); margin-bottom: var(--space-sm); } .important-points ul { list-style: none; } .important-points li { padding: var(--space-xs) 0; color: var(--text-secondary); position: relative; padding-left: var(--space-md); } .important-points li::before { content: '•'; color: var(--color-accent); position: absolute; left: 0; } /* Manufacturing Section */ .manufacturing-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: var(--space-xl); } .salt-card { padding: var(--space-xl); transition: var(--transition-normal); } .salt-card:hover { transform: translateY(-5px); } .salt-header { text-align: center; margin-bottom: var(--space-lg); } .salt-icon { font-size: 3rem; margin-bottom: var(--space-sm); } .salt-header h3 { margin-bottom: var(--space-xs); } .salt-header .chemical-formula { display: inline-block; background: var(--bg-tertiary); padding: var(--space-xs) var(--space-md); border-radius: var(--radius-full); font-family: 'Courier New', monospace; color: var(--color-primary); } .salt-content h4 { display: flex; align-items: center; gap: var(--space-sm); margin-bottom: var(--space-sm); color: var(--text-primary); } .prep-method { margin-bottom: var(--space-lg); } .prep-method .equation { background: var(--bg-tertiary); padding: var(--space-md); border-radius: var(--radius-md); font-family: 'Courier New', monospace; color: var(--color-secondary); margin-bottom: var(--space-sm); overflow-x: auto; } .uses-list { margin-bottom: var(--space-lg); } .uses-list ul { list-style: none; } .uses-list li { padding: var(--space-xs) 0; color: var(--text-secondary); display: flex; align-items: center; gap: var(--space-sm); } .uses-list li::before { content: '✓'; color: var(--color-secondary); font-weight: 700; } .memory-trick-box { background: rgba(168, 85, 247, 0.1); padding: var(--space-md); border-radius: var(--radius-md); display: flex; align-items: center; gap: var(--space-md); } .memory-trick-box i { color: var(--color-salt); font-size: 1.25rem; } /* Memory Section */ .memory-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(350px, 1fr)); gap: var(--space-xl); } .memory-card { padding: var(--space-xl); transition: var(--transition-normal); } .memory-card:hover { transform: translateY(-5px); } .memory-icon { font-size: 3rem; text-align: center; margin-bottom: var(--space-lg); } .memory-card h3 { text-align: center; margin-bottom: var(--space-lg); } .memory-content h4 { display: flex; align-items: center; gap: var(--space-sm); margin-bottom: var(--space-sm); color: var(--color-primary); } .mnemonic { background: var(--bg-tertiary); padding: var(--space-md); border-radius: var(--radius-md); margin-bottom: var(--space-md); } .mnemonic p { font-style: italic; color: var(--text-secondary); line-height: 1.8; } .visual-trick { padding: var(--space-md); border-left: 4px solid var(--color-accent); background: rgba(249, 115, 22, 0.05); } .visual-trick p { color: var(--text-secondary); } /* Responsive Design */ @media (max-width: 1024px) { .hero-visual { display: none; } .lab-workspace { grid-template-columns: 1fr; } .reaction-viewer { grid-template-columns: 1fr; } } @media (max-width: 768px) { .main-nav { padding: 0 var(--space-md); } .nav-center { display: none; } .hero { padding: var(--space-xl) var(--space-md); } .hero-stats { flex-direction: column; align-items: center; } .section { padding: var(--space-xl) var(--space-md); } .overview-grid, .memory-grid { grid-template-columns: 1fr; } .characters-intro { flex-direction: column; align-items: center; } .ph-bar { flex-direction: column; height: auto; } .ph-segment { padding: var(--space-sm); } .reactions-nav { flex-direction: column; } .reaction-tab { width: 100%; } } @media (max-width: 480px) { .hero-title { font-size: 2rem; } .section-title { font-size: 1.75rem; } .games-grid, .manufacturing-grid { grid-template-columns: 1fr; } } /* Scrollbar Styling */ ::-webkit-scrollbar { width: 8px; height: 8px; } ::-webkit-scrollbar-track { background: var(--bg-secondary); } ::-webkit-scrollbar-thumb { background: var(--bg-tertiary); border-radius: var(--radius-full); } ::-webkit-scrollbar-thumb:hover { background: var(--color-primary); } /* Selection */ ::selection { background: var(--color-primary); color: white; } /* Focus Styles */ button:focus, a:focus { outline: 2px solid var(--color-primary); outline-offset: 2px; } /* Print Styles */ @media print { .main-nav, .mobile-menu, .loading-screen { display: none !important; } .section { display: block !important; page-break-after: always; } }