:root{--bg: #0f1419;--panel: #1a2129;--panel-2: #222b35;--border: #2c3640;--text: #e6edf3;--muted: #8b98a5;--accent: #3b82f6;--up: #f0434e;--down: #00b578;--flat: #8b98a5}*{box-sizing:border-box;margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}.app{max-width:1080px;margin:0 auto;padding:24px 20px 48px}.app-header{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:16px;margin-bottom:20px}.app-title{display:flex;align-items:center;gap:14px}.logo{display:flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:12px;background:linear-gradient(135deg,var(--accent),#8b5cf6);font-size:24px;font-weight:700;color:#fff}.app-title h1{font-size:22px;line-height:1.2}.subtitle{color:var(--muted);font-size:13px;margin-top:2px}.header-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.update-time{color:var(--muted);font-size:13px}.switch-label{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);cursor:pointer;-webkit-user-select:none;user-select:none}.switch-label input{accent-color:var(--accent)}.btn{padding:8px 16px;border-radius:8px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);font-size:14px;cursor:pointer;transition:all .15s ease}.btn:hover{border-color:var(--accent)}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover{filter:brightness(1.1)}.btn:disabled{opacity:.6;cursor:not-allowed}.btn.small{padding:4px 10px;font-size:12px;margin-right:6px}.btn.danger:hover{border-color:var(--up);color:var(--up)}.error-banner{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#f0434e1f;border:1px solid rgba(240,67,78,.4);color:#ff8b93;padding:10px 14px;border-radius:10px;margin-bottom:16px;font-size:14px}.offline-banner{background:#faa61a1f;border:1px solid rgba(250,166,26,.4);color:#f7b955;padding:10px 14px;border-radius:10px;margin-bottom:16px;font-size:14px}.summary-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:20px}.summary-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:8px}.summary-label{color:var(--muted);font-size:13px}.summary-value{font-size:22px;font-weight:700;font-variant-numeric:tabular-nums}.up{color:var(--up)}.down{color:var(--down)}.flat{color:var(--flat)}.position-form{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:20px;margin-bottom:20px}.position-form h3{font-size:16px;margin-bottom:16px}.form-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}.form-grid label{display:flex;flex-direction:column;gap:6px}.form-grid label span{font-size:13px;color:var(--muted)}.form-grid input{padding:9px 12px;border-radius:8px;border:1px solid var(--border);background:var(--panel-2);color:var(--text);font-size:14px;outline:none}.form-grid input:focus{border-color:var(--accent)}.form-error{color:#ff8b93;font-size:13px;margin-top:10px}.form-actions{margin-top:16px;display:flex;gap:10px}.table-wrap{background:var(--panel);border:1px solid var(--border);border-radius:12px;overflow:hidden}.position-table{width:100%;border-collapse:collapse;font-size:14px}.position-table th{background:var(--panel-2);color:var(--muted);font-weight:500;text-align:left;padding:12px 14px;font-size:13px;white-space:nowrap}.position-table td{padding:12px 14px;border-top:1px solid var(--border);vertical-align:middle}.position-table .num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.position-table .ops{text-align:right;white-space:nowrap}.stock-name{font-weight:600}.stock-code{color:var(--muted);font-size:12px;margin-top:2px}.empty-state{padding:48px 20px;text-align:center;color:var(--muted);background:var(--panel);border:1px dashed var(--border);border-radius:12px}@media (max-width: 640px){.app{padding:16px 12px 32px}.app-header{flex-direction:column;align-items:flex-start}}
