:root{--bg:#f5f6f8;--bg2:#fff;--bg3:#f0f1f4;--border:#e2e5ec;--border2:#cbd0dc;--text:#1a1d26;--text-mid:#4a5068;--text-muted:#8b91a8;--accent:#3b5bdb;--accent-bg:#eef1ff;--buy:#0f9c5a;--buy-bg:#edfaf4;--buy-border:#b3e8cf;--sell:#d63040;--sell-bg:#fff0f1;--sell-border:#f5b8bc;--up-fresh-bg:#e8f9f1;--up-fresh-text:#0a7a45;--up-fresh-border:#a8dfc0;--down-fresh-bg:#fdeef0;--down-fresh-text:#b02030;--down-fresh-border:#f0b8be;--up-stale-bg:#f4f7f4;--up-stale-text:#5a8a6a;--up-stale-border:#c8dece;--down-stale-bg:#faf4f4;--down-stale-text:#a06060;--down-stale-border:#e8c8c8;--shadow-sm:0 1px 3px #0000000f,0 1px 2px #0000000a;--shadow-md:0 4px 16px #0000001a,0 2px 6px #0000000f;--radius:10px;--font:"DM Sans","Segoe UI",sans-serif;--mono:"IBM Plex Mono","Fira Code",monospace}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;min-height:100vh}.app{max-width:980px;margin:0 auto;padding:28px 16px 80px}.app-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:24px;display:flex}.app-title{letter-spacing:-.03em;color:var(--text);font-size:1.9rem;font-weight:800;line-height:1}.title-accent{color:var(--accent)}.app-subtitle{color:var(--text-muted);letter-spacing:.06em;text-transform:uppercase;margin-top:4px;font-size:.75rem}.search-input{background:var(--bg2);border:1px solid var(--border);color:var(--text);font-family:var(--font);width:230px;box-shadow:var(--shadow-sm);border-radius:8px;outline:none;padding:9px 14px;font-size:.88rem;transition:border-color .15s,box-shadow .15s}.search-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px #3b5bdb1a}.search-input::placeholder{color:var(--text-muted)}.filter-bar{flex-wrap:wrap;gap:8px;margin-bottom:18px;display:flex}.filter-btn{border:1px solid var(--border);background:var(--bg2);color:var(--text-mid);font-size:.83rem;font-family:var(--font);cursor:pointer;box-shadow:var(--shadow-sm);border-radius:8px;align-items:center;gap:7px;padding:7px 14px;font-weight:500;transition:all .15s;display:inline-flex}.filter-btn:hover{border-color:var(--accent);color:var(--accent)}.filter-btn.active{background:var(--accent);border-color:var(--accent);color:#fff}.filter-btn.active .filter-count{color:#fff;background:#ffffff40}.filter-btn.buy.active{background:var(--buy);border-color:var(--buy);color:#fff}.filter-btn.sell.active{background:var(--sell);border-color:var(--sell);color:#fff}.filter-count{background:var(--bg3);color:var(--text-muted);font-size:.73rem;font-family:var(--mono);border-radius:10px;padding:1px 7px}.stock-list{flex-direction:column;gap:8px;display:flex}.empty-state{text-align:center;color:var(--text-muted);padding:60px 0;font-size:.9rem}.stock-row{background:var(--bg2);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:14px 16px;transition:border-color .15s,box-shadow .15s}.stock-row:hover{border-color:var(--border2);box-shadow:var(--shadow-md)}.stock-row.active{border-left:3px solid var(--accent);padding-left:14px}.stock-row-header{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.stock-identity{flex:1;min-width:120px}.stock-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:.95rem;font-weight:600;display:block;overflow:hidden}.stock-isin{font-family:var(--mono);color:var(--text-muted);margin-top:1px;font-size:.7rem}.trend-pills{flex-wrap:wrap;gap:6px;display:flex}.trend-pill{font-size:.76rem;font-family:var(--mono);cursor:pointer;border:1px solid #0000;border-radius:6px;align-items:center;gap:5px;padding:4px 10px 4px 9px;font-weight:600;transition:all .15s;display:inline-flex;position:relative}.trend-pill.up.fresh{background:var(--up-fresh-bg);border-color:var(--up-fresh-border);color:var(--up-fresh-text)}.trend-pill.up.fresh:hover{filter:brightness(.95)}.trend-pill.down.fresh{background:var(--down-fresh-bg);border-color:var(--down-fresh-border);color:var(--down-fresh-text)}.trend-pill.down.fresh:hover{filter:brightness(.95)}.trend-pill.up.stale{background:var(--up-stale-bg);border-color:var(--up-stale-border);color:var(--up-stale-text)}.trend-pill.down.stale{background:var(--down-stale-bg);border-color:var(--down-stale-border);color:var(--down-stale-text)}.trend-label{font-weight:700}.trend-arrow{font-size:.7rem}.trend-age{opacity:.75;font-size:.7rem;font-weight:400}.fresh-dot{background:currentColor;border-radius:50%;flex-shrink:0;width:6px;height:6px;animation:1.6s ease-in-out infinite blink}@keyframes blink{0%,to{opacity:1}50%{opacity:.2}}.stock-right{align-items:center;gap:10px;margin-left:auto;display:flex}.stock-price{font-family:var(--mono);color:var(--text);text-align:right;min-width:64px;font-size:.88rem}.price-loading{color:var(--text-muted);animation:1.2s infinite pulse}@keyframes pulse{0%,to{opacity:.3}50%{opacity:1}}.btn-chart{border:1px solid var(--border);background:var(--bg3);color:var(--text-mid);font-size:.8rem;font-family:var(--font);cursor:pointer;white-space:nowrap;border-radius:7px;padding:6px 13px;font-weight:500;transition:all .15s}.btn-chart:hover{background:var(--accent-bg);border-color:var(--accent);color:var(--accent)}.signals-row{border-top:1px solid var(--border);flex-wrap:wrap;gap:6px;margin-top:10px;padding-top:10px;display:flex}.signal-badge{font-size:.75rem;font-family:var(--mono);cursor:pointer;border:1px solid #0000;border-radius:6px;align-items:center;gap:4px;padding:4px 11px;font-weight:600;transition:all .15s;display:inline-flex}.signal-badge.buy{background:var(--buy-bg);border-color:var(--buy-border);color:var(--buy)}.signal-badge.buy:hover{background:#d4f3e5}.signal-badge.sell{background:var(--sell-bg);border-color:var(--sell-border);color:var(--sell)}.signal-badge.sell:hover{background:#fddde0}.modal-overlay{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:100;background:#14182873;justify-content:center;align-items:center;padding:16px;animation:.15s fadeIn;display:flex;position:fixed;inset:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-panel{background:var(--bg2);border:1px solid var(--border);border-radius:14px;flex-direction:column;width:100%;max-width:1100px;height:92vh;animation:.2s slideUp;display:flex;overflow:hidden;box-shadow:0 20px 60px #0000002e}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.modal-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:flex-start;padding:20px 24px 16px;display:flex}.modal-title{color:var(--text);font-size:1.15rem;font-weight:700}.modal-isin{font-family:var(--mono);color:var(--text-muted);margin-top:2px;font-size:.73rem;display:block}.modal-close{color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:4px 8px;font-size:1rem;transition:all .15s}.modal-close:hover{background:var(--bg3);color:var(--text)}.tab-bar{border-bottom:1px solid var(--border);scrollbar-width:none;background:var(--bg3);gap:4px;padding:12px 24px;display:flex;overflow-x:auto}.tab-bar::-webkit-scrollbar{display:none}.tab{color:var(--text-mid);font-size:.83rem;font-family:var(--font);cursor:pointer;white-space:nowrap;background:0 0;border:1px solid #0000;border-radius:7px;padding:6px 14px;font-weight:500;transition:all .15s}.tab:hover{background:var(--bg2);color:var(--text);border-color:var(--border)}.tab.active{background:var(--bg2);color:var(--accent);border-color:var(--accent);font-weight:600}.modal-chart{flex:1;padding:12px 8px 8px;overflow-y:auto}@media (max-width:640px){.app-header{flex-direction:column;align-items:stretch;gap:10px;margin-bottom:16px}.header-right{flex-direction:column;gap:8px}.search-input{box-sizing:border-box;width:100%}.modal-overlay{align-items:flex-end;padding:0}.modal-panel{border-radius:16px 16px 0 0;max-width:100%;height:95dvh}.modal-header{padding:14px 16px 12px}.modal-title{font-size:1rem}.tab-bar{gap:3px;padding:8px 12px}.tab{padding:5px 10px;font-size:.78rem}.modal-chart{padding:8px 4px 4px}}.legend-hint{color:var(--text-muted);flex-wrap:wrap;align-items:center;gap:16px;margin-bottom:14px;font-size:.72rem;display:flex}.legend-hint span{align-items:center;gap:4px;display:flex}
