:root { --bg-dark: #2c3e50; --bg-sidebar: #1e272e; --border-color: #3d4f5d; --workspace-bg: #f8f9fa; --text-light: #f5f6fa; --text-muted: #a4b0be; --primary: #3498db; --primary-hover: #2980b9; --shadow: 0 4px 15px rgba(0, 0, 0, 0.3); /* PSE Category Colors */ --color-alkalimetall: #ff7675; --color-erdalkali: #e17055; --color-uebergang: #b2bec3; --color-metalloid: #fdcb6e; --color-nichtmetall: #74b9ff; --color-halogen: #55efc4; --color-edelgas: #e84393; --color-metall: #ffeaa7; } * { box-sizing: border-box; margin: 0; padding: 0; } body { display: flex; height: 100vh; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background-color: var(--bg-dark); color: var(--text-light); overflow: hidden; } /* Sidebar Layout */ #sidebar { width: 320px; background-color: var(--bg-sidebar); border-right: 1px solid var(--border-color); display: flex; flex-direction: column; height: 100%; } .sidebar-header { padding: 20px; padding-bottom: 12px; } .sidebar-header h2 { font-size: 1.5rem; margin-bottom: 5px; color: #fff; } .sidebar-header p { font-size: 0.85rem; color: var(--text-muted); } /* Sidebar Mode Tabs */ .sidebar-tabs { display: flex; background-color: rgba(0,0,0,0.25); border-bottom: 1px solid var(--border-color); padding: 0 10px; } .tab-btn { flex: 1; background: none; border: none; color: var(--text-muted); font-weight: bold; font-size: 0.9rem; padding: 12px; cursor: pointer; transition: color 0.2s; position: relative; } .tab-btn:hover { color: #fff; } .tab-btn.active { color: var(--primary); } .tab-btn.active::after { content: ''; position: absolute; bottom: -1px; left: 10%; width: 80%; height: 3px; background-color: var(--primary); border-radius: 3px; } .tab-content { display: flex; flex-direction: column; flex-grow: 1; overflow-y: auto; } /* Elements Selector */ #elements-section, #story-elements-section { padding: 20px; border-bottom: 1px solid var(--border-color); } #elements-section h3, #book-section h3, #story-elements-section h3 { font-size: 0.9rem; text-transform: uppercase; letter-spacing: 1px; color: var(--text-muted); margin-bottom: 15px; } .elements-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; } .spawn-btn { height: 50px; width: 50px; border-radius: 50%; display: flex; justify-content: center; align-items: center; font-weight: bold; font-size: 1.1rem; cursor: pointer; user-select: none; color: #333; border: 2px solid rgba(0,0,0,0.15); box-shadow: 0 4px 6px rgba(0,0,0,0.2); background-image: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.4) 0%, rgba(0, 0, 0, 0.3) 100%); transition: transform 0.1s, box-shadow 0.1s; } .spawn-btn:hover { transform: scale(1.1); box-shadow: 0 6px 10px rgba(0,0,0,0.3); } .spawn-btn:active { transform: scale(0.95); } .spawn-btn[data-element="C"] { color: #fff; } /* Discovery Book (Lexikon) */ #book-section { padding: 20px; flex-grow: 1; display: flex; flex-direction: column; overflow: hidden; } .book-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; } #discovery-progress { background-color: var(--primary); padding: 3px 8px; border-radius: 12px; font-size: 0.8rem; font-weight: bold; } #discovery-book { flex-grow: 1; overflow-y: auto; display: flex; flex-direction: column; gap: 8px; padding-right: 5px; } #discovery-book::-webkit-scrollbar, .tab-content::-webkit-scrollbar { width: 6px; } #discovery-book::-webkit-scrollbar-track, .tab-content::-webkit-scrollbar-track { background: transparent; } #discovery-book::-webkit-scrollbar-thumb, .tab-content::-webkit-scrollbar-thumb { background: var(--border-color); border-radius: 3px; } .book-item { display: flex; align-items: center; justify-content: space-between; padding: 10px 15px; background-color: rgba(255, 255, 255, 0.03); border: 1px solid rgba(255, 255, 255, 0.05); border-radius: 8px; font-size: 0.9rem; transition: background-color 0.2s, border-color 0.2s; user-select: none; } .book-item.locked { color: var(--text-muted); opacity: 0.6; } .book-item.unlocked { background-color: rgba(52, 152, 219, 0.1); border-color: rgba(52, 152, 219, 0.2); cursor: pointer; } .book-item.unlocked:hover { background-color: rgba(52, 152, 219, 0.2); border-color: rgba(52, 152, 219, 0.4); } .book-formula { font-weight: bold; } .book-name { font-size: 0.85rem; } /* ========================================= */ /* STORY MODE DESIGN SPECIFICS */ /* ========================================= */ #story-level-selector { padding: 15px 20px; background-color: rgba(0,0,0,0.15); border-bottom: 1px solid var(--border-color); } .level-selector-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 12px; } .level-selector-header h3 { font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.5px; color: var(--text-muted); } #story-overall-progress { background-color: #2ed573; padding: 2px 8px; border-radius: 12px; font-size: 0.75rem; font-weight: bold; color: white; } .level-dots-grid { display: flex; gap: 8px; justify-content: space-between; } .level-dot { width: 38px; height: 38px; border-radius: 50%; border: 2px solid var(--border-color); background-color: rgba(255, 255, 255, 0.03); color: var(--text-muted); font-weight: bold; font-size: 0.95rem; display: flex; justify-content: center; align-items: center; cursor: pointer; transition: background-color 0.2s, border-color 0.2s, color 0.2s, transform 0.1s; user-select: none; } .level-dot.locked { opacity: 0.35; cursor: not-allowed; } .level-dot.active { border-color: var(--primary); background-color: rgba(52, 152, 219, 0.15); color: #fff; transform: scale(1.05); box-shadow: 0 0 10px rgba(52, 152, 219, 0.3); } .level-dot.completed { border-color: #2ed573; background-color: rgba(46, 213, 115, 0.15); color: #2ed573; } .level-dot:hover:not(.locked) { transform: scale(1.1); } /* Quest Card and Dialog Bubble */ #story-quest-panel { padding: 20px; border-bottom: 1px solid var(--border-color); } .quest-card { background-color: rgba(255, 255, 255, 0.03); border: 1px solid var(--border-color); border-radius: 10px; padding: 15px; display: flex; flex-direction: column; gap: 12px; } .quest-header { border-bottom: 1px solid var(--border-color); padding-bottom: 8px; } #quest-level-title { font-weight: bold; font-size: 1.05rem; color: #ffeaa7; } .professor-dialog-box { display: flex; gap: 12px; align-items: flex-start; } .professor-avatar { font-size: 2.2rem; background-color: rgba(0,0,0,0.25); width: 50px; height: 50px; border-radius: 50%; display: flex; justify-content: center; align-items: center; box-shadow: 0 2px 5px rgba(0,0,0,0.3); border: 1px solid var(--border-color); flex-shrink: 0; } .professor-bubble { background-color: rgba(0,0,0,0.2); border: 1px solid var(--border-color); border-radius: 8px; padding: 10px 12px; position: relative; } .professor-bubble::before { content: ''; position: absolute; left: -6px; top: 15px; width: 0; height: 0; border-top: 6px solid transparent; border-bottom: 6px solid transparent; border-right: 6px solid var(--border-color); } .professor-bubble p { font-size: 0.8rem; line-height: 1.4; color: #dfe6e9; text-align: left; } .quest-objective-box h4 { font-size: 0.75rem; text-transform: uppercase; color: var(--text-muted); letter-spacing: 0.5px; margin-bottom: 6px; } .objective-item { display: flex; align-items: center; gap: 8px; font-size: 0.85rem; font-weight: bold; background-color: rgba(0,0,0,0.15); padding: 8px; border-radius: 6px; border: 1px solid rgba(255,255,255,0.02); } .objective-checkbox { font-size: 0.9rem; } .objective-item.completed { color: #2ed573; text-decoration: line-through; } /* Large Avatar in Modal */ .professor-avatarlarge { font-size: 3.5rem; background-color: rgba(0,0,0,0.15); width: 80px; height: 80px; border-radius: 50%; display: flex; justify-content: center; align-items: center; box-shadow: 0 4px 10px rgba(0,0,0,0.3); border: 2px solid var(--border-color); margin-bottom: 15px; } /* ========================================= */ /* Labor Tisch Layout */ /* ========================================= */ #lab-desk { flex-grow: 1; display: flex; flex-direction: column; height: 100%; background-color: var(--bg-dark); } .desk-header { padding: 20px; display: flex; justify-content: space-between; align-items: center; background-color: rgba(0, 0, 0, 0.1); border-bottom: 1px solid var(--border-color); } .desk-header h2 { font-size: 1.4rem; color: #fff; } .desk-header p { font-size: 0.85rem; color: var(--text-muted); } .desk-controls { display: flex; align-items: center; gap: 12px; } #stats { font-size: 0.9rem; color: var(--text-muted); background-color: rgba(0,0,0,0.2); padding: 8px 12px; border-radius: 6px; border: 1px solid rgba(255,255,255,0.05); } .control-btn { border: none; padding: 8px 15px; border-radius: 6px; cursor: pointer; font-weight: bold; font-size: 0.9rem; transition: background-color 0.2s, transform 0.1s; box-shadow: 0 2px 5px rgba(0,0,0,0.2); } #pse-toggle-btn { background-color: #0984e3; color: white; } #pse-toggle-btn:hover { background-color: #00cec9; } .control-btn.danger { background-color: #e74c3c; color: white; } .control-btn.danger:hover { background-color: #c0392b; } .control-btn:active { transform: scale(0.95); } /* Workspace Canvas */ #workspace { flex-grow: 1; background-color: var(--workspace-bg); background-image: linear-gradient(rgba(0, 0, 0, 0.05) 1px, transparent 1px), linear-gradient(90deg, rgba(0, 0, 0, 0.05) 1px, transparent 1px); background-size: 30px 30px; margin: 20px; border-radius: 12px; position: relative; overflow: hidden; box-shadow: inset 0 2px 10px rgba(0, 0, 0, 0.15); border: 1px solid var(--border-color); } /* Atoms and Molecules inside workspace */ .atom { width: 55px; height: 55px; border-radius: 50%; display: flex; justify-content: center; align-items: center; position: absolute; font-weight: bold; font-size: 1.15rem; cursor: grab; box-shadow: 0 4px 10px rgba(0,0,0,0.3); user-select: none; border: 2px solid rgba(0,0,0,0.2); background-image: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.4) 0%, rgba(0, 0, 0, 0.45) 100%); transition: transform 0.1s; } .atom:active { cursor: grabbing; transform: scale(1.05); } .molecule { padding: 12px 24px; border-radius: 30px; display: flex; justify-content: center; align-items: center; position: absolute; font-weight: bold; font-size: 1.05rem; cursor: grab; box-shadow: 0 5px 12px rgba(0,0,0,0.3); color: white; user-select: none; border: 2px solid rgba(0,0,0,0.25); background-image: linear-gradient(135deg, rgba(255,255,255,0.2) 0%, rgba(0,0,0,0.2) 100%); transition: transform 0.1s; text-shadow: 0 1px 2px rgba(0,0,0,0.5); } .molecule:active { cursor: grabbing; transform: scale(1.05); } /* Particle Explosion Sparks */ .particle { position: absolute; width: 8px; height: 8px; border-radius: 50%; pointer-events: none; z-index: 100; } /* Modals */ .modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; display: flex; justify-content: center; align-items: center; z-index: 2000; transition: opacity 0.3s ease; } .modal.hidden { opacity: 0; pointer-events: none; } .modal-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.6); backdrop-filter: blur(5px); } .modal-content { position: relative; background-color: #2c3e50; border: 2px solid var(--border-color); border-radius: 16px; width: 450px; max-width: 90%; box-shadow: 0 10px 30px rgba(0,0,0,0.5); overflow: hidden; transform: scale(0.8); transition: transform 0.3s cubic-bezier(0.175, 0.885, 0.32, 1.275); color: white; } .modal:not(.hidden) .modal-content { transform: scale(1); } .modal-header { background-color: rgba(0, 0, 0, 0.2); padding: 20px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--border-color); } .modal-close-icon { background: none; border: none; color: var(--text-muted); font-size: 1.8rem; cursor: pointer; transition: color 0.2s; } .modal-close-icon:hover { color: #e74c3c; } .modal-emoji { font-size: 2rem; margin-right: 10px; } .modal-header h2 { font-size: 1.3rem; flex-grow: 1; } .modal-body { padding: 30px 20px; display: flex; flex-direction: column; align-items: center; text-align: center; } #modal-formula-badge { background-color: var(--primary); font-weight: bold; font-size: 1.8rem; padding: 10px 25px; border-radius: 50px; box-shadow: 0 4px 10px rgba(0,0,0,0.3); margin-bottom: 15px; border: 2px solid rgba(255,255,255,0.1); } #modal-molecule-name { font-size: 1.4rem; margin-bottom: 20px; color: #ffeaa7; } #modal-description { font-size: 0.95rem; line-height: 1.5; color: #dfe6e9; } .modal-footer { padding: 15px 20px; background-color: rgba(0, 0, 0, 0.1); border-top: 1px solid var(--border-color); display: flex; justify-content: center; } #modal-close-btn, #story-next-level-btn { background-color: #2ed573; color: white; border: none; padding: 10px 30px; border-radius: 8px; font-size: 1rem; font-weight: bold; cursor: pointer; transition: background-color 0.2s, transform 0.1s; box-shadow: 0 4px 6px rgba(0,0,0,0.2); } #modal-close-btn:hover, #story-next-level-btn:hover { background-color: #26af5a; } #modal-close-btn:active, #story-next-level-btn:active { transform: scale(0.95); } /* ========================================= */ /* INTERAKTIVES PERIODENSYSTEM (PSE) STYLES */ /* ========================================= */ .pse-modal-content { width: 1100px; max-width: 95%; height: 650px; display: flex; flex-direction: column; } .pse-modal-body { flex-grow: 1; display: flex; padding: 20px; gap: 20px; overflow: hidden; } /* Linke Spalte - PSE Gitter */ .pse-grid-container { flex-grow: 1; display: flex; flex-direction: column; justify-content: space-between; } #pse-grid { display: grid; grid-template-columns: repeat(18, 1fr); grid-template-rows: repeat(7, 1fr); gap: 6px; padding: 10px; background-color: rgba(0, 0, 0, 0.15); border-radius: 12px; border: 1px solid var(--border-color); } /* Einzelnes Element-Kästchen im PSE */ .pse-el { aspect-ratio: 1; border-radius: 6px; border: 1px solid rgba(255, 255, 255, 0.05); display: flex; flex-direction: column; justify-content: space-between; padding: 4px; font-size: 0.65rem; user-select: none; cursor: default; transition: transform 0.15s, box-shadow 0.15s, border-color 0.15s; box-shadow: 0 2px 4px rgba(0,0,0,0.15); } .pse-el.active-el { cursor: pointer; border: 2px solid transparent; } .pse-el.active-el:hover { transform: scale(1.15); z-index: 10; box-shadow: 0 5px 15px rgba(0,0,0,0.4); } .pse-el.locked-el { opacity: 0.15; background-color: rgba(255, 255, 255, 0.02); } .pse-el.locked-el:hover { opacity: 0.3; } .pse-el-number { font-size: 0.55rem; color: var(--text-muted); } .pse-el-symbol { font-size: 1.1rem; font-weight: bold; text-align: center; line-height: 1; } .pse-el-name { font-size: 0.5rem; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--text-muted); } .pse-el.active-el .pse-el-name, .pse-el.active-el .pse-el-number { color: #333; } .pse-el.active-el[data-symbol="C"] .pse-el-name, .pse-el.active-el[data-symbol="C"] .pse-el-number { color: var(--text-muted); } /* Category Color Highlights for active elements */ .alkalimetall { background-color: var(--color-alkalimetall); color: #333; border-color: rgba(0,0,0,0.15); } .erdalkali { background-color: var(--color-erdalkali); color: #333; border-color: rgba(0,0,0,0.15); } .uebergang { background-color: var(--color-uebergang); color: #333; border-color: rgba(0,0,0,0.15); } .metalloid { background-color: var(--color-metalloid); color: #333; border-color: rgba(0,0,0,0.15); } .nichtmetall { background-color: var(--color-nichtmetall); color: #333; border-color: rgba(0,0,0,0.15); } .halogen { background-color: var(--color-halogen); color: #333; border-color: rgba(0,0,0,0.15); } .edelgas { background-color: var(--color-edelgas); color: #333; border-color: rgba(0,0,0,0.15); } .metall { background-color: var(--color-metall); color: #333; border-color: rgba(0,0,0,0.15); } .pse-el.active-el[data-symbol="C"] { color: #fff; } /* Legend */ .pse-legend { display: flex; flex-wrap: wrap; gap: 15px; padding: 10px; font-size: 0.75rem; } .legend-item { display: flex; align-items: center; gap: 6px; color: var(--text-muted); } .legend-color { width: 12px; height: 12px; border-radius: 3px; display: inline-block; } /* Rechte Spalte: Steckbrief */ #pse-steckbrief { width: 320px; background-color: rgba(0, 0, 0, 0.2); border: 1px solid var(--border-color); border-radius: 12px; padding: 20px; display: flex; flex-direction: column; justify-content: center; align-items: center; overflow-y: auto; } .steckbrief-empty { text-align: center; color: var(--text-muted); font-size: 0.9rem; line-height: 1.5; } .steckbrief-card { width: 100%; height: 100%; display: flex; flex-direction: column; gap: 15px; } .steckbrief-header { display: flex; align-items: center; gap: 15px; border-bottom: 1px solid var(--border-color); padding-bottom: 12px; } #steckbrief-box { width: 55px; height: 55px; border-radius: 8px; display: flex; justify-content: center; align-items: center; font-weight: bold; font-size: 1.6rem; color: #333; box-shadow: 0 4px 6px rgba(0,0,0,0.3); } #steckbrief-name { font-size: 1.25rem; color: #fff; } #steckbrief-category { font-size: 0.75rem; color: #ffeaa7; background-color: rgba(255, 234, 167, 0.1); padding: 2px 8px; border-radius: 20px; border: 1px solid rgba(255, 234, 167, 0.2); } .steckbrief-stats { display: flex; gap: 12px; } .steckbrief-stat-box { flex: 1; background-color: rgba(0, 0, 0, 0.15); border: 1px solid var(--border-color); border-radius: 8px; padding: 8px; text-align: center; } .stat-label { font-size: 0.65rem; color: var(--text-muted); text-transform: uppercase; display: block; margin-bottom: 2px; } .stat-value { font-size: 1rem; font-weight: bold; color: #fff; } #steckbrief-desc { font-size: 0.85rem; line-height: 1.4; color: #dfe6e9; flex-grow: 1; } #pse-spawn-btn { background-color: #2ed573; color: white; border: none; padding: 10px; border-radius: 8px; cursor: pointer; font-weight: bold; font-size: 0.95rem; transition: background-color 0.2s, transform 0.1s; box-shadow: 0 4px 6px rgba(0,0,0,0.2); width: 100%; } #pse-spawn-btn:hover { background-color: #26af5a; } #pse-spawn-btn:active { transform: scale(0.95); } /* Bohr Model (Atomschalen-Visualisierung) */ .bohr-model-container { height: 140px; width: 100%; position: relative; display: flex; justify-content: center; align-items: center; background-color: rgba(0, 0, 0, 0.25); border-radius: 10px; border: 1px solid rgba(255, 255, 255, 0.03); overflow: hidden; } .bohr-nucleus { width: 16px; height: 16px; border-radius: 50%; background-color: #ff7675; position: absolute; box-shadow: 0 0 10px #ff7675; z-index: 5; } .bohr-shell { position: absolute; border: 1px dashed rgba(255,255,255,0.15); border-radius: 50%; display: flex; justify-content: center; align-items: center; animation: rotate-shell 20s linear infinite; } .bohr-shell:nth-child(1) { width: 50px; height: 50px; animation-duration: 8s; } .bohr-shell:nth-child(2) { width: 90px; height: 90px; animation-duration: 15s; } .bohr-shell:nth-child(3) { width: 130px; height: 130px; animation-duration: 25s; } .bohr-electron { width: 6px; height: 6px; border-radius: 50%; background-color: #54a0ff; position: absolute; box-shadow: 0 0 5px #54a0ff; } @keyframes rotate-shell { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } .hidden { display: none !important; } /* REAKTOR-BOX STYLES */ #reactor-box { position: absolute; bottom: 20px; right: 20px; width: 320px; background: rgba(30, 39, 46, 0.95); border: 2px dashed #3498db; border-radius: 12px; padding: 15px; box-shadow: var(--shadow); z-index: 50; display: flex; flex-direction: column; gap: 10px; transition: border-color 0.2s, background-color 0.2s, transform 0.2s; backdrop-filter: blur(8px); } #reactor-box.drag-over { border-color: #2ecc71; background: rgba(46, 204, 113, 0.2); transform: scale(1.02); } .reactor-header h3 { font-size: 1.05rem; color: #fff; margin: 0; text-align: center; letter-spacing: 0.5px; } .reactor-body { display: flex; flex-direction: column; gap: 12px; } #reactor-contents-summary { background: rgba(0, 0, 0, 0.4); border: 1px solid var(--border-color); border-radius: 8px; padding: 10px; min-height: 80px; font-size: 0.85rem; color: var(--text-muted); display: flex; flex-wrap: wrap; gap: 8px; align-content: flex-start; } .reactor-buttons { display: flex; gap: 10px; } .reactor-btn { flex: 1; background: #3498db; color: white; border: none; border-radius: 6px; padding: 10px 14px; font-weight: bold; cursor: pointer; transition: background 0.15s, transform 0.1s; font-size: 0.85rem; box-shadow: 0 2px 4px rgba(0,0,0,0.15); } .reactor-btn:hover { background: #2980b9; } .reactor-btn:active { transform: scale(0.95); } .reactor-btn.secondary { background: #7f8c8d; } .reactor-btn.secondary:hover { background: #95a5a6; } .reactor-badge { display: inline-flex; align-items: center; padding: 6px 10px; border-radius: 6px; font-size: 0.8rem; font-weight: bold; cursor: pointer; user-select: none; box-shadow: 0 2px 4px rgba(0,0,0,0.2); border: 1px solid rgba(0,0,0,0.15); transition: transform 0.1s, box-shadow 0.1s; background-image: radial-gradient(circle at 30% 30%, rgba(255, 255, 255, 0.15) 0%, rgba(0, 0, 0, 0.1) 100%); } .reactor-badge:hover { transform: scale(1.05); box-shadow: 0 4px 8px rgba(0,0,0,0.3); } .atom-badge { border-radius: 6px; } .molecule-badge { border-radius: 6px; } .badge-count { margin-right: 6px; opacity: 0.75; background: rgba(0, 0, 0, 0.1); padding: 1px 4px; border-radius: 4px; } .empty-text { width: 100%; text-align: center; line-height: 60px; font-style: italic; color: #7f8c8d; }