/* Visual alignment with D:/项目/LLM_research.
 * The copied reference-tokens.css is the source palette; market colors remain
 * independent of brand/interaction colors. No styles in that project are edited.
 */
:root{
  --primary:var(--ui-primary);--primary-hover:var(--ui-primary-hover);--primary-soft:var(--ui-primary-soft);
  --ink:var(--ui-text);--muted:var(--ui-text-muted);--line:var(--ui-border);--bg:var(--ui-canvas);
  --font:var(--ui-font-sans);--mono:var(--ui-font-mono);--market-up:var(--ui-market-up);--market-down:var(--ui-market-down);
}
body{background:var(--ui-surface);color:var(--ui-text);font:13px/1.65 var(--ui-font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
::selection{color:var(--primary);background:var(--primary-soft)}
button:hover{color:var(--primary)}
button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--ui-focus-outline);outline-offset:2px}
.topbar{height:52px;margin-left:232px;padding:0 22px 0 14px;gap:12px;border-color:var(--line);background:white}
.nav-toggle{display:inline-grid}.sidebar-close{display:none}.mobile-brand{display:none}.topnav{margin-left:0;gap:4px;align-items:center;min-width:0;flex:1}
.topnav button{height:36px;padding:0 14px;min-width:104px;font-size:12px;color:var(--ui-text-muted);border:1px solid transparent;border-radius:9px;line-height:1.4}
.topnav button:hover{background:var(--ui-surface-hover);color:var(--primary)}
.topnav button.active{color:var(--primary);background:#fff;border:1px solid var(--ui-border);box-shadow:var(--ui-shadow-sm);font-weight:500}
.topnav button.active:after{bottom:0;left:12px;right:12px;height:2px;background:var(--primary)}
.topnav button span{background:var(--primary-soft);color:var(--primary);font-size:9px}
.top-actions{gap:12px}.prototype{border:0;background:var(--ui-warning-soft);color:var(--ui-warning);font-size:10px;border-radius:5px;padding:3px 7px}
.header-data{font:10px var(--mono);color:var(--ui-text-faint);white-space:nowrap}
.app-shell{display:block;margin-left:232px;min-height:calc(100vh - 52px)}.rail{display:none}
.watch-sidebar{position:fixed;top:0;left:0;bottom:0;width:232px;height:100dvh;padding:22px 13px 18px;background:#f7f8fa;border-right:1px solid var(--ui-sidebar-border);z-index:25}
.sidebar-brand{padding:0 11px;display:block}.sidebar-brand img{display:block;width:145px;height:auto}
.sidebar-product{font-size:11px;color:var(--ui-text-faint);margin:8px 11px 22px}
.sidebar-workspaces{display:flex;padding:3px;background:#eceff3;border-radius:10px;gap:3px;margin-bottom:14px}
.sidebar-workspaces button{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:7px 5px;font-size:12px;white-space:nowrap;border-radius:8px;color:var(--ui-text-muted)}
.sidebar-workspaces svg{width:15px;height:15px}.sidebar-workspaces button.active{color:var(--primary);background:white;box-shadow:var(--ui-shadow-sm)}
.sidebar-compare{width:100%;justify-content:flex-start;padding:9px 12px!important;margin-bottom:24px;font-size:12px!important;border-radius:9px!important}
.sidebar-heading{font-size:11px;font-weight:500;color:var(--ui-text-faint);margin:0 10px 12px}.pill{color:var(--ui-text-faint);background:var(--ui-surface-active)}
.search-box{border-color:var(--ui-border);background:#fff;border-radius:9px;padding:10px}.search-box input{font-size:12px;color:var(--ui-text)}
.search-box:focus-within{border-color:var(--primary);box-shadow:var(--ui-focus-shadow)}
.watch-tabs{margin-top:20px;gap:22px;padding:0 8px}.watch-tabs button{font-size:11px;color:var(--ui-text-faint)}
.watch-tabs button.active{color:var(--primary)}.watch-tabs button.active:after{background:var(--primary)}.list-caption{font-size:10px;color:var(--ui-text-faint);padding:12px 10px 6px}
.symbol-row{border-radius:8px;margin:3px 2px;width:calc(100% - 4px)}.symbol-row:hover{background:var(--ui-sidebar-hover)}.symbol-row.active{background:var(--ui-sidebar-active);border-color:var(--primary)}
.symbol-open{padding:11px 12px}.symbol-open b{font-size:13px;color:var(--ui-sidebar-text)}.symbol-open small{font-size:10px;margin-top:3px;color:var(--ui-sidebar-muted)}.symbol-row.active .symbol-open b{color:var(--primary);font-weight:500}
.sidebar-footer{padding:16px 8px 0;margin-top:12px;background:transparent}.sidebar-footer p{color:var(--ui-text-faint);font-size:10px}.source-indicator{font-size:11px;color:var(--ui-text-muted)}.subtle{color:var(--ui-text-faint)}
main{padding:24px 28px 0;background:#fff}.page-heading{margin-bottom:23px;align-items:center;min-height:66px}.eyebrow{font:11px var(--font);letter-spacing:0;color:var(--ui-text-faint);margin-bottom:7px}
h1{font-size:25px;letter-spacing:-.025em;font-weight:600;line-height:1.4;color:var(--ui-text)}.page-heading p{font-size:12px;color:var(--ui-text-muted);margin-top:6px}.heading-actions{gap:9px}
.button{border:1px solid var(--ui-border);background:var(--ui-surface);color:var(--ui-text);border-radius:9px;font-size:12px;padding:8px 13px;min-height:36px;box-shadow:none}
.button:hover{border-color:var(--ui-border-strong);background:var(--ui-surface-hover);box-shadow:none;color:var(--ui-text)}
.button.primary{background:var(--primary);border-color:var(--primary);color:var(--ui-on-primary)}.button.primary:hover{background:var(--primary-hover);border-color:var(--primary-hover);color:white}
.icon-button{color:var(--ui-text-faint);border-radius:8px}.icon-button:hover{color:var(--primary);background:var(--ui-surface-hover)}
.text-button{color:var(--ui-text-faint);font-size:11px}.text-button:hover{color:var(--primary)}
.research-layout{grid-template-columns:minmax(0,1fr) 286px;gap:20px}.card{box-shadow:none;border:1px solid var(--ui-border);border-radius:12px;background:white}
.quote-card{padding:18px 20px;margin-bottom:16px}.quote-title h2{font-size:18px;font-weight:600;color:var(--ui-text)}.quote-title .mono{font-size:12px;color:var(--ui-text-faint)}.exchange{background:var(--primary-soft);color:var(--primary);border-radius:4px;font-size:9px}.snapshot-badge{color:var(--ui-text-faint);font-size:10px}.favorite-button{color:#a6864c}
.quote-values{gap:23px}.main-quote{min-width:132px}.main-quote strong{font-size:34px;letter-spacing:-1px}.main-quote>span{font-size:12px}.quote-field{padding-left:20px;border-color:var(--ui-border-subtle)}.quote-field>span{font-size:11px;color:var(--ui-text-faint)}.quote-field>b{font-size:14px;color:var(--ui-text)}
.positive{color:var(--market-up)!important}.negative{color:var(--market-down)!important}.neutral{color:var(--ui-text-faint)!important}
.chart-toolbar{padding:12px 16px;border-color:var(--ui-border-subtle)}.period-group{gap:5px}.period-group button{font-size:11px;color:var(--ui-text-faint);padding:5px 8px;border-radius:6px}.period-group button.selected{background:var(--primary-soft);color:var(--primary);font-weight:500}
.chart-strategy-label{padding-top:16px;gap:8px}.chart-strategy-label b{font-size:12px;font-weight:600;color:var(--ui-text)}.chart-strategy-label>span:not(.strategy-dot){font-size:10px;color:var(--ui-text-faint)}.chart-strategy-label .price-basis{font-size:9px!important}
.chart-legend{font-size:10px;color:var(--ui-text-faint);padding:10px 20px 2px;gap:14px}.chart-footer{font-size:9px;color:var(--ui-text-faint);padding:10px 17px;border-color:var(--ui-border-subtle)}.signal-dot.buy{background:var(--market-up)}.signal-dot.sell{background:var(--market-down)}
#marketChart{height:458px}.strategy-config{padding:19px 18px}.panel-heading{font-size:14px;font-weight:600;margin-bottom:20px}.panel-heading .pill{font-size:9px;color:var(--ui-text-faint)}
.field-label{font-size:11px;color:var(--ui-text-muted)}select{border:1px solid var(--ui-border);border-radius:8px;font-size:12px;height:39px;padding:0 10px;background:#fff;color:var(--ui-text)}
.strategy-intro{background:var(--ui-surface-subtle);border:1px solid var(--ui-border-subtle);border-radius:9px;padding:14px;margin-top:13px}.strategy-intro p{font-size:11px;line-height:1.8;color:var(--ui-text-muted)}.strategy-intro .intro-en{font-size:9px;letter-spacing:.6px}.strategy-intro .intro-tag{font-size:10px;background:white;border:1px solid var(--ui-border-subtle);border-radius:5px}
.config-section{border-color:var(--ui-border);margin-top:19px;padding-top:17px}.config-title h3{font-size:12px;color:var(--ui-text);font-weight:600}.config-title>span{font-size:10px;color:var(--ui-text-faint)}.config-title .text-button{font-size:10px}
.param-field label{font-size:11px;color:var(--ui-text-muted)}.param-field input[type=number]{background:white;border-color:var(--ui-border);border-radius:6px;font-size:11px;color:var(--ui-text);padding:6px}.param-field input[type=range]{accent-color:var(--primary)}.param-bounds{font-size:9px;color:var(--ui-text-faint)}
.date-fields label{font-size:10px;color:var(--ui-text-faint)}.date-fields input{border-color:var(--ui-border);border-radius:6px;background:white;color:var(--ui-text);font-size:10px;padding:8px 5px}
.number-field span{font-size:11px;color:var(--ui-text-muted)}.number-field input{background:white;color:var(--ui-text);border-color:var(--ui-border);border-radius:6px;font-size:11px;min-height:34px}
.cost-details summary{font-size:10px;color:var(--ui-text-muted)}.cost-details p{font-size:10px;color:var(--ui-text-faint)}.cost-details summary span{color:var(--ui-text-faint)}.run-button{height:39px;letter-spacing:0;font-size:12px}.save-config{font-size:10px}
.insight-card{padding:17px 18px}.insight-header{color:var(--primary)}.insight-header h3{font-size:12px;color:var(--ui-text);font-weight:500}.insight-card p{font-size:11px;color:var(--ui-text-muted);line-height:1.8}.insight-card .state-badge{background:var(--primary-soft);color:var(--primary);font-size:10px;border-radius:6px}.insight-card .text-button{font-size:10px;color:var(--primary)}
.integration-note{color:var(--ui-text-faint);padding:4px 10px}.integration-note b{font-size:11px;color:var(--ui-text-muted)}.integration-note p{font-size:10px;color:var(--ui-text-faint)}.integration-note a{font-size:10px;color:var(--primary)}
.results-card{padding:19px 20px 0}.section-title h3{font-size:14px}.section-title h3 span{font-size:9px;color:var(--ui-text-faint)}.execution-label{color:var(--ui-text-faint);font-size:10px}
.metric span{font-size:11px;color:var(--ui-text-muted)}.metric b{font-size:22px;font-weight:500}.metric small{font-size:9px;color:var(--ui-text-faint)}.metrics-grid{margin:22px 0}.metric{border-color:var(--ui-border)}
.result-tabs button[data-result]{font-size:12px;color:var(--ui-text-muted)}.result-tabs button.active{color:var(--primary);font-weight:500}.result-tabs button.active:after{background:var(--primary)}.result-tabs>.text-button{font-size:11px}.equity-caption{font-size:10px;color:var(--ui-text-faint)}.result-note{font-size:9px;color:var(--ui-text-faint);border-color:var(--ui-border-subtle)}
table{font-size:11px}th{font-size:10px;color:var(--ui-text-faint);background:var(--ui-surface-subtle)}.side-tag.buy{color:var(--market-up);background:var(--ui-market-up-soft)}.side-tag.sell{color:var(--market-down);background:var(--ui-market-down-soft)}.logic-row{font-size:12px;grid-template-columns:65px 1fr}.logic-row b{color:var(--ui-text)}.logic-row p{color:var(--ui-text-muted)}
.app-footer{font-size:9px;color:var(--ui-text-faint);padding:23px 0}.app-footer>span:last-child{font-size:8px;color:var(--ui-text-faint);letter-spacing:.4px}.app-footer i{background:var(--ui-primary)}
.error-banner{color:var(--ui-danger);background:var(--ui-danger-soft);border-color:var(--ui-danger-border);border-radius:8px}.spinner{border-color:var(--ui-primary-border);border-top-color:var(--primary)}.loading-overlay b{color:var(--ui-text-muted)}.loading-overlay small{color:var(--ui-text-faint)}
.library-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.strategy-tile{border-color:var(--ui-border);border-radius:12px;padding:22px;box-shadow:none}.strategy-tile:hover{transform:translateY(-2px);border-color:var(--ui-border-strong);box-shadow:var(--ui-shadow-sm)}.strategy-tile h2{font-size:17px;color:var(--ui-text)}.strategy-tile>p{font-size:12px;color:var(--ui-text-muted);line-height:1.75;min-height:63px}.tile-top{font-size:10px;letter-spacing:.5px}.tile-visual{font-size:11px;color:var(--ui-text-faint)}.tile-footer>span{font-size:10px;border-radius:5px}.tile-footer button{font-size:11px}.library-count{color:var(--ui-primary-border)}.library-count small{color:var(--ui-text-faint)}.library-notice{font-size:11px;color:var(--ui-text-faint)}
.research-info{border-radius:12px}.research-info h2{font-size:16px}.research-info h2 span{color:var(--primary)}.research-info p,.research-info li{font-size:13px;line-height:1.9;color:var(--ui-text-muted)}.research-info code{font-size:11px;background:var(--ui-surface-subtle);color:var(--ui-text-muted)}.data-stats b{color:var(--primary)}.data-stats small{color:var(--ui-text-faint);font-size:11px}.process-step{border-radius:8px}.process-step strong{font-size:13px}.process-step small{color:var(--ui-text-faint);font-size:10px}.process-flow>span{color:var(--primary)}
dialog{border-color:var(--ui-border);border-radius:12px;box-shadow:var(--ui-shadow-overlay)}dialog::backdrop{background:var(--ui-overlay-backdrop);backdrop-filter:blur(2px)}.modal-heading h2{font-size:18px;color:var(--ui-text)}.modal-subtitle{font-size:12px;color:var(--ui-text-muted)}.comparison-row{font-size:11px;grid-template-columns:24px 160px minmax(90px,1fr) 77px 77px 67px}.comparison-row button{font-size:12px}.comparison-head{color:var(--ui-text-faint);font-size:10px}.compare-note{font-size:11px;color:var(--ui-text-faint)}.toast{background:#263c54}.preset-input{border-color:var(--ui-border);border-radius:8px}.preset-row b{font-size:13px}.preset-row small{font-size:11px;color:var(--ui-text-faint)}.code-block{border-radius:8px;color:var(--ui-text-muted)}
.replay-toolbar{background:var(--ui-surface-subtle);color:var(--ui-text-muted)}.replay-toolbar input{accent-color:var(--primary)}
body.nav-collapsed .watch-sidebar{display:none}body.nav-collapsed .topbar,body.nav-collapsed .app-shell{margin-left:0}
@media(max-width:1050px){body.nav-open .sidebar-close{display:inline-grid;position:absolute;right:12px;top:25px}}
.embed .app-shell{margin-left:0}.embed .watch-sidebar{display:none}.embed main{padding:12px}.embed #marketChart{height:calc(100vh - 307px);min-height:310px}
@media(min-width:1700px){.research-layout{grid-template-columns:minmax(0,1fr) 310px;gap:24px}main{padding:28px 36px 0}.quote-values{gap:35px}#marketChart{height:500px}.library-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1280px){.watch-sidebar{width:212px}.topbar,.app-shell{margin-left:212px}.research-layout{grid-template-columns:minmax(0,1fr) 266px;gap:16px}main{padding:22px 22px 0}.topbar{gap:8px}.topnav button{min-width:90px;padding:0 11px}.top-actions{gap:7px}.header-data{display:none}.quote-values{gap:19px}.quote-field{padding-left:16px}.main-quote{min-width:100px}.chart-toolbar{padding:10px 12px}.period-group{gap:2px}.period-group button{padding:5px 6px}.metric{padding-left:10px}.metric b{font-size:20px}.metric small{font-size:8px}.library-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.chart-strategy-label>span:not(.strategy-dot){font-size:9px}.date-fields input{font-size:9px}}
@media(max-width:1050px){.watch-sidebar{display:none}.topbar,.app-shell{margin-left:0}.research-layout{grid-template-columns:minmax(0,1fr) 272px}.topbar{padding-right:16px}.quote-field:last-child{display:none}body.nav-open .watch-sidebar{display:flex;width:232px;box-shadow:var(--ui-shadow-overlay)}body.nav-open:after{content:"";position:fixed;inset:52px 0 0 232px;background:#25384b2b;z-index:22}.nav-toggle{z-index:28;position:relative}.library-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:760px){.topbar{height:56px;padding:0 10px;gap:5px}.topnav{gap:2px}.topnav button{min-width:0;padding:0 10px;font-size:11px;height:35px}.topnav button span{display:none}.top-actions{display:none}.nav-toggle{width:29px;height:32px}.app-shell{min-height:calc(100vh - 56px)}main{padding:21px 14px 0}.page-heading{margin-bottom:19px;min-height:66px}.page-heading h1{font-size:23px}.page-heading p{font-size:10px}.eyebrow{font-size:10px}.heading-actions .button{border-radius:7px;min-height:30px;font-size:10px;padding:5px 9px}.research-layout{display:flex;gap:16px}.quote-title h2{font-size:16px}.quote-title .mono{font-size:10px}.quote-values{gap:14px}.quote-field{padding-left:12px}.quote-field>span{font-size:10px}.quote-field>b{font-size:12px}.quote-card{padding:16px}.snapshot-badge{font-size:9px}.chart-strategy-label b{font-size:11px}.chart-strategy-label>span:not(.strategy-dot){font-size:9px}.chart-legend{font-size:9px}.chart-footer{font-size:8px}.metric span{font-size:9px}.metric b{font-size:17px}.metrics-grid{gap:3px}.metric small{font-size:8px}.result-tabs button[data-result]{font-size:11px}.execution-label{font-size:9px}.strategy-panel{grid-template-columns:1fr 1fr}.strategy-config{padding:18px 16px}.panel-heading{font-size:13px}.library-grid,.research-grid{grid-template-columns:1fr}.comparison-row{grid-template-columns:20px 127px 1fr 65px;gap:7px}.comparison-row button{font-size:10px}.comparison-row>*:nth-child(5),.comparison-row>*:nth-child(6){display:none}.app-footer>span:last-child{font-size:7px}#marketChart{height:430px}.library-notice{font-size:10px}}
@media(max-width:480px){.strategy-panel{grid-template-columns:1fr}.quote-values{gap:11px}.main-quote{min-width:95px}.quote-field{padding-left:10px}.main-quote strong{font-size:30px}.chart-strategy-label>span:not(.strategy-dot){font-size:8px}.period-group button{font-size:10px;padding:5px}.chart-toolbar{padding:9px 10px}.chart-tools .icon-button{width:23px}.metric{padding-left:7px}.metric b{font-size:15px}.metric span{font-size:8px}.metric small{font-size:7px}.results-card{padding:16px 12px 0}.result-tabs>div{gap:13px}.result-tabs>.text-button{font-size:10px}.replay-toolbar{flex-wrap:wrap}.replay-toolbar input{min-width:100px}.snapshot-badge{font-size:8px}.chart-footer #barCount{max-width:160px;text-align:right}.library-count{font-size:38px}.section-title h3{font-size:13px}.section-title h3 span{display:none}}
