*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0f1117;--surface: #1a1d27;--surface-hover: #22263a;--border: #2a2e3e;--text: #e4e6ed;--text-secondary: #9094a6;--accent: #6c63ff;--accent-hover: #5a52e0;--danger: #f04e59;--success: #34d399;--radius: 10px;--shadow: 0 2px 12px rgba(0, 0, 0, .35)}body{font-family:Inter,system-ui,-apple-system,sans-serif;background:var(--bg);color:var(--text);line-height:1.6;min-height:100vh}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.app{max-width:960px;margin:0 auto;padding:2rem 1.25rem 4rem}header{text-align:center;margin-bottom:2rem}header h1{font-size:1.75rem;font-weight:700;letter-spacing:-.5px}header h1 span{color:var(--accent)}header p{color:var(--text-secondary);font-size:.9rem;margin-top:.25rem}.search-bar{display:flex;gap:.5rem;margin-bottom:1rem}.combobox{flex:1;display:flex;flex-wrap:wrap;align-items:center;gap:.35rem;padding:.4rem .65rem;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);cursor:text;transition:border .2s;min-height:42px}.combobox:focus-within{border-color:var(--accent)}.combobox-input{flex:1;min-width:140px;border:none;outline:none;background:transparent;color:var(--text);font-size:.95rem;padding:.2rem 0}.combobox-input::placeholder{color:var(--text-secondary)}.keyword-chip{display:inline-flex;align-items:center;gap:.3rem;padding:.2rem .55rem;background:var(--accent);color:#fff;border-radius:999px;font-size:.8rem;font-weight:500;white-space:nowrap;-webkit-user-select:none;user-select:none;animation:chipIn .15s ease}@keyframes chipIn{0%{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}.chip-remove{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;border:none;background:#ffffff40;color:#fff;border-radius:50%;font-size:.7rem;line-height:1;cursor:pointer;padding:0;transition:background .15s}.chip-remove:hover{background:#ffffff73}.btn{padding:.65rem 1.25rem;border:none;border-radius:var(--radius);font-size:.9rem;font-weight:600;cursor:pointer;transition:background .2s}.btn-primary{background:var(--accent);color:#fff}.btn-primary:hover{background:var(--accent-hover)}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.sources{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:1.5rem}.source-chip{padding:.3rem .7rem;border:1px solid var(--border);border-radius:999px;font-size:.78rem;cursor:pointer;background:var(--surface);color:var(--text-secondary);transition:all .15s;-webkit-user-select:none;user-select:none}.source-chip.active{background:var(--accent);border-color:var(--accent);color:#fff}.meta-bar{display:flex;justify-content:space-between;align-items:center;font-size:.8rem;color:var(--text-secondary);margin-bottom:1rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}.articles{display:flex;flex-direction:column;gap:.75rem}.article-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;transition:border-color .2s,background .2s}.article-card:hover{border-color:var(--accent);background:var(--surface-hover)}.article-card .source{font-size:.72rem;text-transform:uppercase;letter-spacing:.5px;color:var(--accent);font-weight:600;margin-bottom:.25rem}.article-card h3{font-size:1rem;font-weight:600;margin-bottom:.35rem;line-height:1.35}.article-card h3 a{color:var(--text)}.article-card h3 a:hover{color:var(--accent);text-decoration:none}.article-card .snippet{font-size:.85rem;color:var(--text-secondary);line-height:1.5}.article-card .date{font-size:.72rem;color:var(--text-secondary);margin-top:.5rem}mark{background:#6c63ff4d;color:var(--text);border-radius:2px;padding:0 2px}.status-msg{text-align:center;padding:3rem 1rem;color:var(--text-secondary);font-size:.95rem}.status-msg.error{color:var(--danger)}.spinner{width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;margin:0 auto .75rem}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:600px){.app{padding:1.25rem .75rem 3rem}header h1{font-size:1.35rem}.search-bar{flex-direction:column}}
