:root{font-family:Inter,Segoe UI,Arial,sans-serif;color:#172033;background:#eef2f5;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh}button,input,select{font:inherit}button{cursor:pointer}#root{min-height:100vh}.dashboard-shell{min-height:100vh;padding:22px;background:linear-gradient(90deg,rgba(15,118,110,.07) 1px,transparent 1px),linear-gradient(180deg,rgba(15,118,110,.07) 1px,transparent 1px),#eef2f5;background-size:34px 34px}.dashboard-shell.loading{display:grid;place-items:center;color:#475569;font-weight:800}.hero-band,.metric-strip,.workspace-grid,.details-grid,.bottom-analysis{max-width:1520px;margin:0 auto}.hero-band{display:flex;justify-content:flex-end;padding:8px 0 14px}.eyebrow,.panel-kicker{margin:0;color:#64748b;font-size:.74rem;font-weight:850;letter-spacing:.12em;text-transform:uppercase}.github-link{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 12px;border:1px solid #cbd5e1;border-radius:8px;color:#334155;background:#ffffffeb;font-weight:800;text-decoration:none}.github-link.primary{color:#fff;border-color:#0f172a;background:#0f172a}.icon{width:18px;height:18px;flex:0 0 auto}.metric-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.metric-card,.leaderboard-panel,.comparison-panel,.heatmap-panel,.chart-panel{border:1px solid #cbd5e1;border-radius:8px;background:#ffffffed;box-shadow:0 14px 34px #0f172a12}.metric-card{min-width:0;padding:16px;border-left:5px solid #64748b}.metric-card.good{border-left-color:#0f766e}.metric-card.bad{border-left-color:#be123c}.metric-card span,.metric-card small{display:block;color:#64748b;font-weight:750}.metric-card strong{display:block;margin-top:6px;color:#0f172a;font-size:1.65rem;line-height:1.1}.metric-card small{margin-top:5px;font-size:.82rem}.workspace-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(330px,.75fr);gap:14px;margin-top:14px}.leaderboard-panel,.comparison-panel,.heatmap-panel,.chart-panel{min-width:0;padding:16px}.panel-head{display:flex;justify-content:space-between;gap:14px;align-items:start;margin-bottom:14px}.panel-head h2,.panel-head h3{margin:5px 0 0;color:#0f172a}.panel-head h2{font-size:1.25rem}.panel-head h3{font-size:1rem}.panel-head.compact{align-items:center}.panel-head.compact span,.row-count,.combo-subtitle{color:#64748b;font-size:.86rem;font-weight:800}.panel-head select{min-height:38px;padding:0 10px;border:1px solid #cbd5e1;border-radius:8px;color:#0f172a;background:#f8fafc;font-weight:800}.filters{display:grid;grid-template-columns:minmax(260px,1fr) minmax(220px,.55fr);gap:10px;margin-bottom:12px}.search-box,.range-filter{display:flex;align-items:center;gap:8px;min-height:42px;padding:0 10px;border:1px solid #cbd5e1;border-radius:8px;background:#f8fafc}.search-box input{width:100%;border:0;outline:0;color:#0f172a;background:transparent}.range-filter{display:grid;grid-template-columns:1fr;padding:8px 10px}.range-filter span{display:flex;align-items:center;gap:7px;color:#475569;font-size:.82rem;font-weight:800}.range-filter input{width:100%;accent-color:#0f766e}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse}th{padding:0 8px 8px;text-align:right}th:first-child,td:first-child{text-align:left}th button{display:inline-flex;align-items:center;justify-content:flex-end;gap:6px;min-height:30px;padding:0 8px;border:1px solid transparent;border-radius:8px;color:#475569;background:transparent;font-size:.78rem;font-weight:850;text-transform:uppercase}th button:hover{border-color:#99f6e4;color:#0f766e;background:#ecfeff}th button.active-sort{border-color:#0f766e;color:#fff;background:#0f766e}th button b{min-width:34px;padding:3px 5px;border-radius:6px;background:#0f172a14;font-size:.65rem;line-height:1}th button.active-sort b{background:#ffffff2e}td{padding:12px 8px;border-top:1px solid #e2e8f0;color:#334155;text-align:right;white-space:nowrap}tbody tr{transition:background .15s ease,box-shadow .15s ease}tbody tr:hover,tbody tr.selected{background:#ecfeff}td strong,td span{display:block}td strong{color:#0f172a}td span{margin-top:3px;color:#64748b;font-size:.78rem}.positive{color:#0f766e;font-weight:850}.negative{color:#be123c;font-weight:850}.heatmap-scroll{overflow-x:auto}.heatmap-grid{display:grid;gap:7px;align-items:stretch;min-width:max-content}.heatmap-axis,.heatmap-y{display:grid;place-items:center;min-height:42px;width:100%;height:100%;padding:6px;border-radius:8px;color:#475569;background:#f8fafc;font-size:.74rem;font-weight:850;text-align:center;overflow-wrap:anywhere;word-break:break-word}.heatmap-y{justify-content:center;color:#0f172a}.heat-cell{min-height:48px;border:1px solid #cbd5e1;border-radius:8px;color:#0f172a;background:linear-gradient(180deg,#ffffff38,#fff0),hsl(173 78% var(--heat));font-size:.82rem;font-weight:900}.heat-cell:hover,.heat-cell.selected{border-color:#0f172a;box-shadow:0 0 0 3px #0f172a1f}.heat-cell.selected{color:#fff;background:#0f172a}.heatmap-note{margin:12px 0 0;color:#64748b;font-size:.86rem;line-height:1.45}.details-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:14px}.chart-panel.wide{grid-column:span 3}.side-stack{display:grid;gap:12px}.trade-log{display:grid;gap:8px}.trade-row{display:grid;grid-template-columns:110px 70px minmax(120px,1fr) 120px;gap:10px;align-items:center;min-height:42px;padding:0 10px;border:1px solid #e2e8f0;border-radius:8px;background:#f8fafc}.trade-row span{color:#64748b;font-size:.88rem}.trade-row strong{color:#0f172a;text-transform:uppercase}.trade-row b{text-align:right}.bottom-analysis{margin-top:14px}.recharts-wrapper text{fill:#64748b}@media(max-width:1180px){.workspace-grid{grid-template-columns:1fr}.details-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.chart-panel.wide{grid-column:span 2}.side-stack{grid-column:span 2;grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:760px){.dashboard-shell{padding:14px}.metric-strip,.details-grid,.filters,.side-stack{grid-template-columns:1fr}.chart-panel.wide,.side-stack{grid-column:span 1}.panel-head{flex-direction:column}.trade-row{grid-template-columns:1fr 1fr}.trade-row b{text-align:left}}
