:root{--bg: #f7f8fa;--fg: #1a1d21;--muted: #6b7280;--border: #e5e7eb;--up: #047857;--down: #b91c1c;--accent: #2563eb}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--fg);background:var(--bg);font-size:14px}.center{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:60vh}.login h1{margin-bottom:0}.error{color:var(--down)}button{cursor:pointer;border:1px solid var(--border);background:#fff;border-radius:6px;padding:6px 12px;font-size:13px}button.active{background:var(--accent);color:#fff;border-color:var(--accent)}button.danger{color:var(--down);border-color:#f3c2c2}.app>header{display:flex;align-items:center;gap:16px;padding:12px 20px;background:#fff;border-bottom:1px solid var(--border);position:sticky;top:0;z-index:5}header h1{font-size:16px;margin:0}header nav{display:flex;gap:8px}header .user{margin-left:auto;display:flex;align-items:center;gap:10px;color:var(--muted)}main{padding:20px}.toolbar{display:flex;gap:8px;align-items:center;margin-bottom:14px}.toolbar .count{margin-left:auto;color:var(--muted)}table.symbols{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--border);border-radius:8px;overflow:hidden}table.symbols th,table.symbols td{padding:7px 10px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}table.symbols th{background:#fafafa;cursor:pointer;-webkit-user-select:none;user-select:none;font-weight:600}table.symbols td.r,table.symbols th.r{text-align:right}table.symbols tbody tr:hover{background:#f0f6ff;cursor:pointer}table.symbols tr.sel{background:#e6efff}table.symbols tr.inactive{color:var(--muted)}td.sym{font-weight:600}td.name{color:var(--muted);max-width:240px;overflow:hidden;text-overflow:ellipsis}td.cat{color:var(--muted);font-size:12px}.up{color:var(--up)}.down{color:var(--down)}.badge{font-size:12px;padding:2px 7px;border-radius:999px;border:1px solid transparent}.badge-bullish{background:#e7f6ef;color:var(--up);border-color:#b7e4cd}.badge-bearish{background:#fdeaea;color:var(--down);border-color:#f3c2c2}.badge-neutral{background:#eef0f2;color:var(--muted)}.badge-unknown{background:#f3f4f6;color:#9aa0a6}.detail{margin-top:18px;background:#fff;border:1px solid var(--border);border-radius:8px;padding:14px}.detail-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.detail-head h2{font-size:15px;margin:0}.symbol-form{background:#fff;border:1px solid var(--border);border-radius:8px;padding:16px;max-width:460px;margin-bottom:16px;display:flex;flex-direction:column;gap:10px}.symbol-form h3{margin:0 0 4px}.symbol-form label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}.symbol-form label.check{flex-direction:row;align-items:center;gap:8px}.symbol-form input,.symbol-form select{padding:7px 8px;border:1px solid var(--border);border-radius:6px;font-size:14px}.symbol-form .actions{display:flex;gap:8px;margin-top:6px}.row-actions{display:flex;gap:6px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:#fff;border:1px solid var(--border);border-radius:10px;padding:20px;width:320px;max-width:calc(100vw - 32px);display:flex;flex-direction:column;gap:12px;box-shadow:0 10px 30px #0003}.modal h2{margin:0;font-size:18px}.modal label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}.modal input{padding:7px 8px;border:1px solid var(--border);border-radius:6px;font-size:14px}.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:4px}.status{margin:0;font-size:13px}.status.ok{color:var(--up, #1a7f37)}.status.error{color:var(--down)}
