:root{--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", "Noto Sans SC", "Microsoft YaHei", system-ui, sans-serif;--canvas: oklch(96.5% .008 238);--canvas-top: oklch(98.4% .004 230);--canvas-quiet: oklch(94.8% .012 238);--surface: oklch(98.6% .004 230);--surface-raised: oklch(99.6% .002 230);--surface-alt: oklch(96.9% .008 230);--surface-selected: oklch(94.5% .03 198);--ink: oklch(22% .028 242);--ink-strong: oklch(15% .03 242);--muted: oklch(46% .026 244);--muted-strong: oklch(36% .028 244);--border: oklch(86% .014 238);--border-strong: oklch(78% .02 238);--primary: oklch(45% .115 198);--primary-strong: oklch(36% .12 198);--primary-soft: oklch(92.8% .035 198);--gold: oklch(66% .13 78);--gold-soft: oklch(94% .05 78);--color-positive: oklch(47% .13 158);--color-positive-soft: oklch(92.4% .042 158);--color-negative: oklch(51% .165 28);--color-negative-soft: oklch(93.4% .04 28);--color-warning: oklch(57% .12 62);--color-warning-soft: oklch(94.6% .05 62);--chart-ink: oklch(23% .03 242);--chart-muted: oklch(44% .026 244);--chart-grid: oklch(90% .012 238);--chart-axis: oklch(68% .026 238);--chart-negative-grid: oklch(91% .025 28);--chart-negative-axis: oklch(78% .045 28);--chart-negative-wash: oklch(97% .022 28);--chart-negative-fill: oklch(84% .088 28);--chart-tooltip-bg: oklch(20% .03 242);--series-rotation: oklch(47% .13 198);--series-strategy: oklch(48% .12 286);--series-bitx: oklch(45% .12 158);--series-btc: oklch(59% .15 58);--series-iau: oklch(53% .11 84);--series-ma: oklch(47% .13 235);--series-upper: oklch(53% .12 138);--series-lower: oklch(58% .15 24);--series-buy: oklch(47% .13 235);--series-sell: oklch(52% .14 315);--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--radius-sm: 4px;--radius-md: 8px;--shadow-soft: 0 10px 24px color-mix(in oklch, var(--ink) 9%, transparent);--shadow-hover: 0 14px 34px color-mix(in oklch, var(--ink) 12%, transparent);--focus-ring: 0 0 0 3px color-mix(in oklch, var(--primary) 22%, transparent);--ease-standard: cubic-bezier(.22, 1, .36, 1);color:var(--ink);background:var(--canvas);font-family:var(--font-sans);font-synthesis:none;text-rendering:optimizeLegibility;font-kerning:normal}*{box-sizing:border-box}body{margin:0;min-width:320px;background:linear-gradient(180deg,var(--canvas-top),var(--canvas) 340px,var(--canvas-quiet)),var(--canvas);color:var(--ink);font-family:var(--font-sans);font-variant-numeric:tabular-nums}body.chart-expanded-body{overflow:hidden}button,a{font:inherit}button{-webkit-tap-highlight-color:transparent}a{color:inherit}button:focus-visible,a:focus-visible,svg[role=img]:focus-visible{outline:0;box-shadow:var(--focus-ring)}.app-shell{width:min(2240px,calc(100% - 40px));margin:0 auto;padding:var(--space-6) 0 40px}.topbar{display:grid;grid-template-columns:minmax(360px,1fr) minmax(620px,auto);align-items:center;gap:var(--space-6);margin-bottom:var(--space-5);padding:var(--space-5);border:1px solid var(--border);border-radius:var(--radius-md);background:linear-gradient(180deg,var(--surface-raised),var(--surface));box-shadow:var(--shadow-soft)}.title-block{display:grid;gap:var(--space-2);min-width:0}.brand-pill,.empty-brand{display:inline-flex;width:fit-content;min-height:28px;align-items:center;padding:0 10px;border:1px solid color-mix(in oklch,var(--primary) 28%,var(--border));border-radius:999px;color:var(--primary-strong);background:var(--primary-soft);font-size:.75rem;font-weight:800}.section-kicker{margin:0 0 var(--space-1);color:var(--muted-strong);font-size:.78rem;font-weight:760;letter-spacing:0}h1,h2{margin:0;color:var(--ink-strong);letter-spacing:0;text-wrap:balance}h1{font-size:2rem;line-height:1.12;font-weight:820}.title-subline{max-width:62ch;margin:0;color:var(--muted);font-size:.95rem;line-height:1.55;overflow-wrap:anywhere;text-wrap:pretty}h2{font-size:1.08rem;line-height:1.28;font-weight:760}.status-strip{display:grid;grid-template-columns:repeat(4,minmax(136px,1fr)) auto;gap:var(--space-2);align-items:stretch}.status-item{display:grid;grid-template-columns:18px minmax(0,1fr);column-gap:var(--space-2);row-gap:1px;align-items:center;min-height:50px;padding:9px 11px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-alt)}.status-item svg{grid-row:span 2;width:18px;height:18px}.status-item span{min-width:0;overflow:hidden;color:var(--muted);font-size:.75rem;text-overflow:ellipsis;white-space:nowrap}.status-item strong{min-width:0;overflow:hidden;color:var(--ink-strong);font-size:.82rem;font-weight:760;text-overflow:ellipsis;white-space:nowrap}.status-item.blue svg{color:var(--primary)}.status-item.green svg{color:var(--color-positive)}.status-item.gray svg{color:var(--muted)}.refresh-command,.data-link{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);min-height:44px;border:1px solid var(--border-strong);border-radius:var(--radius-md);color:var(--ink);background:var(--surface-raised);font-size:.83rem;font-weight:760;cursor:pointer;transition:border-color .18s var(--ease-standard),background-color .18s var(--ease-standard),color .18s var(--ease-standard),box-shadow .18s var(--ease-standard)}.refresh-command{padding:0 14px;white-space:nowrap}.refresh-command:hover,.data-link:hover,.icon-command:hover,.segmented button:hover{border-color:color-mix(in oklch,var(--primary) 42%,var(--border));background:var(--surface-selected)}.refresh-command svg,.data-link svg{width:16px;height:16px}.refresh-command:disabled{cursor:progress;opacity:.72}.refresh-command:disabled svg{animation:refresh-spin 1s linear infinite}.kpi-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--space-3);margin-bottom:var(--space-4)}.metric-card,.panel,.method-panel{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-raised);box-shadow:var(--shadow-soft)}.metric-card{display:flex;gap:var(--space-4);min-height:112px;padding:var(--space-4);transition:border-color .18s var(--ease-standard),box-shadow .18s var(--ease-standard)}.metric-card:hover{border-color:var(--border-strong);box-shadow:var(--shadow-hover)}.metric-icon{display:grid;flex:0 0 42px;width:42px;height:42px;place-items:center;border-radius:var(--radius-md)}.metric-icon svg{width:21px;height:21px}.metric-card p,.metric-card span{margin:0;color:var(--muted);font-size:.82rem;line-height:1.35}.metric-card strong{display:block;margin:7px 0 8px;color:var(--ink-strong);font-size:1.95rem;line-height:1;font-weight:820}.metric-card.blue .metric-icon{color:var(--primary);background:var(--primary-soft)}.metric-card.green .metric-icon{color:var(--color-positive);background:var(--color-positive-soft)}.metric-card.amber .metric-icon{color:var(--color-warning);background:var(--color-warning-soft)}.metric-card.red .metric-icon{color:var(--color-negative);background:var(--color-negative-soft)}.workspace-grid{display:grid;grid-template-columns:minmax(0,2.55fr) minmax(340px,.78fr);gap:var(--space-4);margin-bottom:var(--space-4)}.rotation-backtest-panel,.price-panel{margin-bottom:var(--space-4)}.panel{min-width:0;padding:var(--space-5)}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-4)}.panel-head>div:first-child{min-width:0}.rotation-backtest-actions,.price-panel-actions,.chart-actions{display:flex;align-items:center;gap:var(--space-2)}.price-panel-actions{justify-content:flex-end}.rotation-backtest-actions,.chart-actions{flex-wrap:wrap}.rotation-backtest-wrap{width:100%;height:560px}.price-chart-wrap{width:100%;height:680px}.chart-wrap{width:100%;height:520px}.rotation-backtest-panel.expanded,.price-panel.expanded,.chart-panel.expanded{position:fixed;inset:16px;z-index:30;display:flex;flex-direction:column;height:calc(100dvh - 32px);overflow:hidden;padding:var(--space-5);background:var(--surface-raised)}.price-panel.expanded{z-index:32}.rotation-backtest-panel.expanded{z-index:31}.rotation-backtest-panel.expanded .rotation-backtest-wrap,.price-panel.expanded .price-chart-wrap,.chart-panel.expanded .chart-wrap{flex:1;height:auto;min-height:0}.rotation-backtest-shell,.candlestick-shell{position:relative;width:100%;height:100%;min-height:420px;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-raised)}.rotation-backtest-shell svg,.candlestick-shell svg{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.rotation-backtest-shell.dragging svg,.candlestick-shell.dragging svg{cursor:grabbing}.trading-chart-header{position:absolute;top:14px;left:16px;z-index:2;display:grid;gap:7px;max-width:calc(100% - 108px);color:var(--ink);font-size:.82rem;pointer-events:none}.rotation-backtest-header{max-width:calc(100% - 116px)}.instrument-row{display:flex;flex-wrap:wrap;align-items:center;gap:9px}.instrument-badge{display:inline-grid;width:22px;height:22px;place-items:center;border-radius:999px;color:var(--surface-raised);background:var(--chart-ink);font-size:.62rem;font-weight:800}.rotation-badge{background:var(--primary)}.ohlc-line,.change-line,.indicator-row{display:inline-flex;flex-wrap:wrap;gap:9px;font-size:.75rem;font-weight:760}.indicator-row{color:var(--muted-strong)}.price-summary{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:var(--space-2)}.price-summary span{min-height:32px;max-width:100%;padding:7px 10px;border:1px solid var(--border);border-radius:var(--radius-md);color:var(--muted-strong);background:var(--surface-alt);font-size:.82rem;font-weight:720;white-space:nowrap}.segmented{display:inline-flex;gap:var(--space-1);min-width:0;padding:var(--space-1);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-alt)}.segmented button{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-width:42px;min-height:36px;padding:0 11px;border:1px solid transparent;border-radius:6px;color:var(--muted-strong);background:transparent;cursor:pointer;transition:background-color .18s var(--ease-standard),border-color .18s var(--ease-standard),color .18s var(--ease-standard),box-shadow .18s var(--ease-standard)}.segmented svg{width:16px;height:16px}.segmented button.active{border-color:color-mix(in oklch,var(--primary) 34%,var(--border));color:var(--primary-strong);background:var(--surface-raised);box-shadow:0 1px 3px color-mix(in oklch,var(--ink) 12%,transparent)}.icon-command{display:inline-grid;width:44px;height:44px;flex:0 0 44px;place-items:center;border:1px solid var(--border);border-radius:var(--radius-md);color:var(--ink);background:var(--surface-raised);cursor:pointer;transition:border-color .18s var(--ease-standard),background-color .18s var(--ease-standard),box-shadow .18s var(--ease-standard)}.icon-command svg{width:18px;height:18px}.snapshot-list{display:grid;gap:0;margin:0}.snapshot-row{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);padding:10px 0;border-bottom:1px solid var(--border)}.snapshot-row:first-child{padding-top:0}.snapshot-row dt{min-width:0;color:var(--muted);font-size:.82rem}.snapshot-row dd{margin:0;color:var(--ink-strong);font-size:.98rem;font-weight:780;text-align:right}.download-row{display:grid;gap:var(--space-2);margin-top:var(--space-5)}.data-link{min-height:40px;padding:8px 10px;text-decoration:none}.table-grid{display:grid;grid-template-columns:minmax(0,1.18fr) minmax(0,.82fr);gap:var(--space-4)}.table-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-raised)}.trade-scroll{max-height:460px;overflow:auto}table{width:100%;border-collapse:separate;border-spacing:0}.annual-table{min-width:980px}.trade-table{min-width:560px}th,td{padding:10px 12px;border-bottom:1px solid var(--border);text-align:right;white-space:nowrap}th:first-child,td:first-child{text-align:left}th{position:sticky;top:0;z-index:1;color:var(--muted);background:var(--surface);font-size:.76rem;font-weight:780}td{color:var(--ink);font-size:.82rem}tbody tr{transition:background-color .16s var(--ease-standard)}tbody tr:hover{background:var(--surface-alt)}tbody tr:last-child td{border-bottom:0}.positive{color:var(--color-positive)}.negative{color:var(--color-negative)}.method-panel{margin-top:var(--space-4);padding:var(--space-4) var(--space-5);color:var(--muted);font-size:.82rem;line-height:1.75}.method-panel p{margin:0;text-wrap:pretty}.method-panel p+p{margin-top:var(--space-1)}.refresh-note{color:var(--color-warning)}.chart-tooltip{min-width:176px;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius-md);background:color-mix(in oklch,var(--surface-raised) 96%,transparent);box-shadow:var(--shadow-hover)}.chart-tooltip strong{display:block;margin-bottom:var(--space-2);color:var(--ink-strong);font-size:.82rem}.chart-tooltip div{display:flex;align-items:center;justify-content:space-between;gap:18px;font-size:.76rem}.chart-tooltip b{color:inherit}.empty-state{display:grid;width:min(560px,100%);min-height:280px;margin:16vh auto 0;place-items:center;gap:var(--space-3);padding:var(--space-8);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-raised);box-shadow:var(--shadow-soft);text-align:center}.empty-state svg{width:38px;height:38px;color:var(--primary)}.empty-state p{margin:0;color:var(--muted);line-height:1.55}.empty-state h1{font-size:1.55rem}@keyframes refresh-spin{to{transform:rotate(360deg)}}@media(min-width:1600px){.app-shell{width:min(2320px,calc(100% - 72px))}.topbar{grid-template-columns:minmax(420px,.92fr) minmax(760px,1.08fr)}.kpi-grid{gap:var(--space-4);margin-bottom:var(--space-5)}.metric-card{min-height:116px;padding:18px}.price-panel,.rotation-backtest-panel,.workspace-grid{margin-bottom:var(--space-5)}.price-chart-wrap{height:740px}.rotation-backtest-wrap{height:620px}.workspace-grid{grid-template-columns:minmax(0,2.85fr) minmax(360px,.68fr);gap:var(--space-5)}.chart-wrap{height:560px}.table-grid{gap:var(--space-5)}}@media(max-width:1320px){.topbar{grid-template-columns:1fr;align-items:start}.status-strip{grid-template-columns:repeat(2,minmax(160px,1fr)) auto}}@media(max-width:1120px){.workspace-grid,.table-grid{grid-template-columns:1fr}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.snapshot-panel{order:2}}@media(max-width:760px){.app-shell{width:min(1440px,calc(100% - 24px));padding-top:var(--space-5)}.topbar,.panel,.metric-card,.method-panel{padding:var(--space-4)}h1{font-size:1.55rem}h2{font-size:1rem}.status-strip{grid-template-columns:1fr}.refresh-command{width:100%}.kpi-grid{grid-template-columns:1fr}.metric-card{min-height:108px}.panel-head{align-items:flex-start;flex-direction:column}.price-panel-actions,.rotation-backtest-actions,.chart-actions{width:100%;min-width:0;align-items:flex-start;justify-content:flex-start;flex-wrap:wrap}.price-summary{justify-content:flex-start}.price-chart-wrap{height:420px}.rotation-backtest-wrap{height:440px}.chart-wrap{height:360px}.trading-chart-header{max-width:calc(100% - 84px);font-size:.76rem}.indicator-row{display:none}}@media(max-width:520px){.app-shell{width:min(1440px,calc(100% - 16px))}.topbar{gap:var(--space-4)}.brand-pill,.empty-brand{min-height:26px}.metric-card{gap:var(--space-3)}.metric-card strong{font-size:1.65rem}.segmented{width:100%}.segmented button{flex:1;min-width:0;min-height:44px}.rotation-backtest-actions .segmented,.chart-actions .segmented{display:grid;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column}.rotation-backtest-actions .segmented:first-child{grid-template-columns:repeat(3,minmax(0,1fr));grid-auto-flow:initial}.rotation-backtest-actions .segmented:nth-child(2),.chart-actions .segmented{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:initial}.price-summary span{flex:1 1 calc(50% - var(--space-2));min-height:38px;white-space:normal}.rotation-backtest-panel.expanded,.price-panel.expanded,.chart-panel.expanded{inset:8px;height:calc(100dvh - 16px)}.rotation-backtest-shell,.candlestick-shell{min-height:340px}th,td{padding:9px 10px}.method-panel{line-height:1.65}}@media(pointer:coarse){.refresh-command,.data-link,.icon-command,.segmented button{min-height:44px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:1ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:1ms!important}}
