:root{--color-bg: #f5f5f5;--color-surface: white;--color-text: #2d3436;--color-text-secondary: #666;--color-text-muted: #888;--color-text-faint: #999;--color-positive: #16a34a;--color-negative: #dc2626;--color-border: #eee;--color-border-light: #f4f4f4;--color-hover: #fafcff;--color-thead-bg: #fafafa;--color-grid: #f0f0f0;--color-badge-bg: #dcfce7;--color-badge-text: #16a34a;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--space-page: 24px;--space-gap: 20px;--space-card-x: 24px;--space-card-y: 20px;--space-cell-x: 14px;--space-cell-y: 2px;--radius: 6px;--radius-badge: 3px;--font-family: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-mono: "SF Mono", Monaco, "Cascadia Code", monospace;--font-size-title: 18px;--font-size-base: 13px;--font-size-small: 12px;--font-size-xs: 11px;--font-size-badge: 9px;--font-weight-normal: 400;--font-weight-medium: 500;--font-weight-semi: 600;--font-weight-bold: 700;--chart-height: 220px;--chart-line-width: 2px;--chart-columns: 3;--shadow-card: 0 1px 3px rgba(0, 0, 0, .08);--shadow-tab: 0 1px 2px rgba(0, 0, 0, .06);--tab-border-width: 2.5px;--color-tab-border: #e0e0e0;--bp-lg: 1024px}@media (min-width: 1024px){:root{--chart-height: 320px}}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-family);font-size:var(--font-size-base);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}.app-shell{max-width:2000px;margin:0 auto;padding:0 var(--space-3);min-height:100vh}.app-content{padding:var(--space-4) 0}@media (max-width: 768px){.app-shell{padding:0 var(--space-3)}.app-content{padding:var(--space-3) 0}}.tab-nav{display:flex;gap:var(--space-1);border-bottom:1px solid var(--color-tab-border);overflow-x:auto;scrollbar-width:none;position:sticky;top:0;z-index:100;background:var(--color-bg)}.tab-nav::-webkit-scrollbar{display:none}.tab-nav a{white-space:nowrap;padding:8px 14px;font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--color-text-muted);border-bottom:var(--tab-border-width) solid transparent;margin-bottom:-1px;transition:color .15s ease}.tab-nav a:hover{color:var(--color-text-secondary)}.tab-nav a.active{color:var(--color-text);font-weight:var(--font-weight-semi);border-bottom-color:var(--color-text)}@media (max-width: 1023px){.tab-nav{display:none}}.mobile-header{display:none;position:sticky;top:0;z-index:40;background:var(--color-surface);border-bottom:1px solid var(--color-border);padding:var(--space-2) var(--space-3);align-items:center;gap:var(--space-2)}@media (max-width: 1023px){.mobile-header{display:flex}}.mobile-header-title{font-size:var(--font-size-base);font-weight:var(--font-weight-semi);color:var(--color-text)}.sidebar-toggle{background:none;border:none;cursor:pointer;padding:var(--space-1);color:var(--color-text);display:flex;align-items:center}.mobile-sidebar-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000004d;z-index:49;opacity:0;pointer-events:none;transition:opacity .2s ease}.mobile-sidebar-overlay.open{opacity:1;pointer-events:auto}.mobile-sidebar{position:fixed;top:0;left:0;bottom:0;width:260px;background:var(--color-surface);border-right:1px solid var(--color-border);transform:translate(-100%);transition:transform .2s ease;z-index:50;padding:var(--space-4);overflow-y:auto}.mobile-sidebar.open{transform:translate(0)}.mobile-sidebar a{display:block;padding:var(--space-2) var(--space-3);font-size:var(--font-size-base);color:var(--color-text-secondary);border-radius:var(--radius);transition:background .15s ease}.mobile-sidebar a:hover{background:var(--color-bg)}.mobile-sidebar a.active{color:var(--color-text);font-weight:var(--font-weight-semi);background:var(--color-bg)}.chart-grid{display:grid;gap:var(--space-gap);grid-template-columns:1fr;margin-bottom:var(--space-6)}@media (min-width: 1024px){.chart-grid{grid-template-columns:repeat(3,1fr)}}.ts-top-grid{display:grid;grid-template-columns:auto 1fr 1fr;gap:var(--space-4);align-items:stretch;margin-bottom:var(--space-6)}.ts-charts-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--space-gap)}.ts-pair-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-4)}@media (max-width: 1023px){.ts-top-grid,.ts-charts-grid,.ts-pair-grid{grid-template-columns:1fr}}.chart-card{background:var(--color-surface);border-radius:var(--radius);padding:var(--space-card-y) var(--space-card-x) 16px;box-shadow:var(--shadow-card);min-width:0}.chart-header{position:relative;display:flex;align-items:flex-start;margin-bottom:4px}.chart-title{font-size:var(--font-size-title);font-weight:var(--font-weight-bold);color:var(--color-text)}.chart-subtitle{font-size:var(--font-size-small);color:var(--color-text-secondary);padding:0 60px 0 8px;border-left:2px solid var(--color-positive)}.chart-source{font-size:var(--font-size-base);font-weight:var(--font-weight-normal);color:var(--color-text-muted);margin-left:8px}.chart-period{position:absolute;right:0;top:0;font-size:var(--font-size-base);color:var(--color-text-muted);font-weight:var(--font-weight-medium);white-space:nowrap;background:var(--color-surface);padding-left:6px}.chart-container{position:relative;height:var(--chart-height);width:100%}.chart-legend{display:flex;flex-wrap:wrap;gap:8px 12px;margin:8px 0 4px}.legend-item{display:flex;align-items:center;gap:5px;font-size:var(--font-size-small);font-weight:var(--font-weight-medium);color:#444}.legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.section-header{text-align:center;padding:var(--space-4) 0 var(--space-3)}.section-header h2{font-size:16px;font-weight:var(--font-weight-semi);color:var(--color-text);margin-bottom:var(--space-2)}.section-header hr{border:none;border-top:1px solid var(--color-border)}.data-table-card{background:var(--color-surface);border-radius:var(--radius);padding:0;box-shadow:var(--shadow-card);overflow:hidden;margin-bottom:var(--space-6)}.data-table-scroll{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:var(--font-size-base)}.data-table thead th{background:var(--color-thead-bg);padding:var(--space-cell-y) var(--space-cell-x);text-align:right;font-weight:var(--font-weight-bold);font-size:var(--font-size-xs);color:var(--color-text);text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid var(--color-border);white-space:nowrap}.data-table thead th:first-child{text-align:left}.data-table tbody td{padding:var(--space-cell-y) var(--space-cell-x);text-align:right;border-bottom:1px solid var(--color-border-light);white-space:nowrap;color:var(--color-text-secondary);font-variant-numeric:tabular-nums}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover{background:var(--color-hover)}.data-table tbody td:first-child{text-align:left;font-weight:var(--font-weight-bold);color:var(--color-text)}.data-table .val-pos{color:var(--color-positive);font-weight:var(--font-weight-medium)}.data-table .val-neg{color:var(--color-negative);font-weight:var(--font-weight-medium)}.data-table .val-warn{color:#d97706;font-weight:var(--font-weight-medium)}.data-table .totals-row td{font-weight:var(--font-weight-bold);border-top:2px solid var(--color-border);color:var(--color-text)}.data-table .totals-row td.val-pos{color:var(--color-positive)}.data-table .totals-row td.val-neg{color:var(--color-negative)}.data-table .totals-row td.val-warn{color:#d97706}.data-table .section-row td{background:var(--color-thead-bg);font-weight:var(--font-weight-bold);font-size:var(--font-size-xs);color:var(--color-text);text-transform:uppercase;letter-spacing:.04em;padding:var(--space-3) var(--space-cell-x) var(--space-1);text-align:left;border-bottom:1px solid var(--color-border);border-top:1px solid var(--color-border)}.data-table .symbol-link{color:var(--color-text);text-decoration:none}.data-table .symbol-link:hover{text-decoration:underline}.positions-layout .positions-table-card{margin-bottom:var(--space-3)}.positions-table-card .data-table{table-layout:fixed}.positions-table-card .data-table thead th{white-space:normal;line-height:1.3;vertical-align:bottom;padding:2px 6px}.positions-table-card .data-table tbody td{padding:2px 6px;white-space:nowrap;text-align:right;font-size:inherit;font-weight:inherit}.positions-table-card .data-table tbody td:first-child{text-align:left}.positions-table-card .data-table .totals-row td{font-weight:var(--font-weight-bold)}.positions-table-card .data-table thead th{text-align:right}.positions-table-card .data-table thead th[colspan]{text-align:left}.markets-layout .markets-table-card{margin-bottom:var(--space-3)}.markets-table-card .data-table{table-layout:fixed}.markets-table-card .data-table thead th{white-space:normal;line-height:1.3;vertical-align:bottom;padding:2px 6px;text-align:right}.markets-table-card .data-table thead th[colspan],.markets-table-card .data-table thead th:first-child,.markets-table-card .data-table thead th:nth-child(2){text-align:left}.markets-table-card .data-table tbody td{padding:2px 6px;white-space:nowrap;text-align:right;font-size:inherit;font-weight:inherit}.markets-table-card .data-table tbody td:first-child,.markets-table-card .data-table tbody td:nth-child(2){text-align:left}.annotations{display:flex;flex-direction:column;gap:4px;margin-top:var(--space-2);margin-bottom:var(--space-6);padding:0 var(--space-2)}.annotation-item{display:flex;align-items:baseline;gap:6px;font-size:var(--font-size-small);color:var(--color-text-muted)}.annotation-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;position:relative;top:-1px}.annotation-dot--info{background:#3b82f6}.annotation-dot--positive{background:var(--color-positive)}.annotation-dot--negative{background:var(--color-negative)}.annotation-dot--caution{background:#d97706}.annotation-date{font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap;color:var(--color-text-faint)}.annotation-text{color:var(--color-text-secondary);min-width:0;word-wrap:break-word}.badge-high{display:inline-block;background:var(--color-badge-bg);color:var(--color-badge-text);font-size:var(--font-size-badge);font-weight:var(--font-weight-bold);padding:1px 5px;border-radius:var(--radius-badge);margin-left:6px;vertical-align:middle;letter-spacing:.04em}.stat-pills{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 6px}.stat-pill{display:inline-block;color:#fff;font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);font-variant-numeric:tabular-nums;padding:1px 6px;border-radius:var(--radius-badge);white-space:nowrap}.stat-pill-neutral{background:#6b7280}.y-label{font-size:var(--font-size-xs);color:var(--color-text-faint);margin-bottom:2px}.table-section-title{font-size:15px;font-weight:var(--font-weight-bold);color:var(--color-text);margin-bottom:var(--space-3)}.table-section-title .source-label{font-size:var(--font-size-small);font-weight:var(--font-weight-normal);color:var(--color-text-muted);margin-left:var(--space-2)}.loading-container{display:flex;align-items:center;justify-content:center;gap:var(--space-3);padding:var(--space-6);color:var(--color-text-muted);font-size:var(--font-size-base)}.error-container{display:flex;align-items:center;justify-content:center;padding:var(--space-6);color:var(--color-negative);font-size:var(--font-size-small);text-align:center}.spinner{width:20px;height:20px;border:2px solid var(--color-border);border-top-color:var(--color-text-muted);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media (max-width: 1023px){.data-table{font-size:.75rem;min-width:900px}.data-table td:first-child,.data-table th:first-child{position:sticky;left:0;z-index:5;background:var(--color-surface)}.data-table thead th:first-child{background:var(--color-thead-bg)}.data-table tbody tr:hover td:first-child{background:var(--color-hover)}.markets-table-card .data-table{min-width:1000px}.markets-table-card .data-table tbody td:nth-child(2){max-width:140px;overflow:hidden;text-overflow:ellipsis}}::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#ccc;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#aaa}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
