:root { --bg: #f5f5f5; --card: #ffffff; --text: #1a1a1a; --muted: #6b7280; --border: #d1d5db; --grey-light: #f3f4f6; --blue: #2563eb; --pink: #e84393; --purple: #7c6ff7; } * { box-sizing: border-box; margin: 0; padding: 0; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: var(--bg); color: var(--text); font-size: 14px; line-height: 1.5; } #app { display: flex; height: 100vh; } #main { flex: 1; padding: 16px; max-width: 740px; margin: 0 auto; overflow-y: auto; } /* Topbar как в ipwhitelist */ .topbar { display: flex; align-items: center; gap: 8px; padding: 10px 14px; background: var(--card); border: 1px solid var(--border); border-radius: 10px; margin-bottom: 12px; } .topbar-sep { color: var(--border); font-size: 18px; } .topbar-title { font-weight: 600; font-size: 15px; } .topbar-title #ver { font-weight: 400; color: var(--muted); font-size: 12px; } .topbar-right { margin-left: auto; color: var(--muted); font-size: 13px; } #models { display: flex; gap: 8px; justify-content: center; margin-bottom: 10px; } .model-tag { padding: 3px 10px; background: var(--grey-light); border: 1px solid var(--border); border-radius: 12px; font-size: 11px; color: var(--muted); } #visualizer { margin: 8px 0; text-align: center; } #meter { border-radius: 6px; background: var(--grey-light); display: block; margin: 0 auto; } #controls { display: flex; gap: 8px; justify-content: center; margin: 10px 0; } #controls button { padding: 8px 18px; border-radius: 8px; font-size: 14px; cursor: pointer; border: 1px solid var(--border); font-family: inherit; } #btnRecord { background: var(--pink); color: #fff; border-color: var(--pink); } #btnRecord:disabled { opacity: 0.5; } #btnPlay { background: #10b981; color: #fff; border-color: #10b981; } #btnPlay:disabled { opacity: 0.4; } #btnReset, #btnTheme { background: var(--grey-light); color: var(--text); } #status { text-align: center; color: var(--muted); font-size: 13px; min-height: 18px; margin: 4px 0; } #chat { border: 1px solid var(--border); border-radius: 10px; padding: 12px; min-height: 200px; max-height: 340px; overflow-y: auto; background: var(--card); line-height: 1.6; } .user { background: #ecfdf5; border-left: 3px solid #10b981; padding: 8px 12px; margin: 6px 0; border-radius: 0 6px 6px 0; color: #065f46; font-size: 14px; } .user p { margin: 0; } .bot { background: #f5f3ff; border-left: 3px solid var(--purple); padding: 10px 14px; margin: 6px 0 14px; border-radius: 0 6px 6px 0; color: var(--text); font-size: 14px; } .bot p { margin: 4px 0; } .bot h1, .bot h2, .bot h3 { color: var(--purple); margin: 8px 0 4px; font-size: 14px; } .bot b { color: #111; } .bot code { background: #e8e5f4; padding: 1px 5px; border-radius: 3px; font-size: 13px; color: #c62828; } .bot ul, .bot ol { margin: 4px 0; padding-left: 20px; } .bot li { margin: 2px 0; } .bot hr { border: none; border-top: 1px solid #ddd; margin: 10px 0; } #sidebar { width: 280px; background: var(--card); border-left: 1px solid var(--border); padding: 14px; overflow-y: auto; } #history-title { font-weight: 600; color: var(--text); margin-bottom: 10px; font-size: 14px; } .hitem { padding: 6px 8px; border-radius: 4px; cursor: pointer; margin-bottom: 3px; font-size: 12px; color: var(--muted); } .hitem:hover { background: var(--grey-light); } /* Тёмная тема */ body.dark { --bg: #0d0d1a; --card: #13132a; --text: #e0e0e0; --muted: #888; --border: #2a2a3e; --grey-light: #1a1a2e; } body.dark .user { background: #0d2d2d; color: #00cec9; } body.dark .bot { background: #1a1a3e; color: #d0d0f0; } body.dark .bot b { color: #fff; } body.dark .bot code { background: #2a2a4e; color: #f8c291; } body.dark .bot hr { border-color: #2a2a3e; }