:root{font-family:PingFang SC,Noto Sans SC,Microsoft YaHei UI,Microsoft YaHei,IBM Plex Sans,sans-serif;line-height:1.5;color:#1a2535;background:linear-gradient(155deg,#fef9f4,#faf5ec 35%,#f5f0ee 65%,#eff4fb)}*{box-sizing:border-box}body{margin:0;min-height:100vh;overflow-x:hidden;width:100%}html{overflow-x:hidden;width:100%}#root{width:100%;max-width:100vw;overflow-x:hidden}.page-wrap{width:min(100%,1800px);max-width:100vw;margin:0 auto;padding:24px 16px 36px;overflow-x:hidden}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid rgba(192,57,43,.12)}.page-header h1{font-size:1.55rem;font-weight:800;margin:0;letter-spacing:.03em;background:linear-gradient(120deg,#c0392b,#e67e22,#c0392b);background-size:200% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:shimmer 4s linear infinite}@keyframes shimmer{0%{background-position:0% center}to{background-position:200% center}}.page-header__right{display:flex;align-items:center;gap:12px}.auth-bar{display:flex;align-items:center;gap:6px;font-size:.82rem}.auth-bar--form{flex-wrap:wrap}.auth-bar__input{padding:4px 8px;border:1px solid #d5cec5;border-radius:4px;font-size:.8rem;width:130px;background:#fff}.auth-bar__input:focus{border-color:#c0392b;outline:none}.auth-bar__btn{padding:3px 10px;border:1px solid #d5cec5;border-radius:4px;background:#fff;cursor:pointer;font-size:.8rem;color:#5a4a3a;white-space:nowrap}.auth-bar__btn:hover{border-color:#c0392b;color:#c0392b}.auth-bar__btn--submit{background:#c0392b;color:#fff;border-color:#c0392b}.auth-bar__btn--submit:hover{background:#a5311f}.auth-bar__btn--register{background:#c0392b14}.auth-bar__btn--logout{font-size:.75rem;color:#999}.auth-bar__user{color:#c0392b;font-weight:600}.auth-bar__error{color:#c0392b;font-size:.75rem}.auth-gate{position:fixed;top:0;right:0;bottom:0;left:0;background:#140a058c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:grid;place-items:center;z-index:2000;padding:24px}.auth-gate__card{background:#fffdf8;border:1px solid #e4d4c4;border-radius:16px;padding:32px 36px;box-shadow:0 20px 60px #3c140540;text-align:center;max-width:400px;width:100%;animation:modalIn .25s ease both}.auth-gate__card h2{margin:0 0 8px;font-size:1.3rem;font-weight:800;background:linear-gradient(120deg,#c0392b,#e67e22);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.auth-gate__card h2:after{display:none}.auth-gate__card p{margin:0 0 20px;color:#7a6a5a;font-size:.9rem}.auth-gate__card .auth-bar,.auth-gate__card .auth-bar--form{justify-content:center}.auth-gate__card .auth-bar__input{width:100%;padding:8px 12px;font-size:.9rem}.auth-gate__card .auth-bar__btn{padding:8px 16px;font-size:.88rem}.auth-gate__card .auth-bar__btn--submit{width:100%}.auth-gate__card .auth-bar--form{display:grid;gap:10px}.status-pill{display:inline-block;padding:4px 12px;border-radius:999px;background:linear-gradient(120deg,#c0392b1a,#e67e221a);color:#b04400;font-size:.82rem;font-weight:600;border:1px solid rgba(192,57,43,.2);letter-spacing:.02em}.grid-layout{display:grid;gap:12px;grid-template-columns:minmax(220px,.46fr) minmax(0,1.54fr)}.grid-layout>*{min-width:0}.card{border-radius:14px;background:#fffffff7;border:1px solid #e6ddd0;box-shadow:0 1px 3px #0000000a,0 4px 16px #783c0a0f;padding:16px;min-width:0;overflow-x:visible;align-self:start;transition:box-shadow .22s ease}.card h2{margin-top:0;margin-bottom:14px;font-size:1.05rem;font-weight:700;color:#1a2535;display:flex;align-items:center;gap:9px;padding-left:0;letter-spacing:.01em}.card h2:after{content:"";flex:1;height:1.5px;background:linear-gradient(90deg,rgba(192,57,43,.22) 0%,transparent 100%);border-radius:1px}.section-num{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,#c0392b,#e67e22);color:#fff;font-size:12px;font-weight:800;flex-shrink:0;box-shadow:0 2px 8px #c0392b52;letter-spacing:0}textarea,pre{width:100%;border-radius:8px;border:1px solid #d8c8b8;background:#fdfaf6;padding:10px;font-family:JetBrains Mono,SFMono-Regular,Consolas,monospace;transition:border-color .18s ease,box-shadow .18s ease}textarea:focus{outline:none;border-color:#c0392b;box-shadow:0 0 0 3px #c0392b1a}input,select{border-radius:8px;border:1px solid #d8c8b8;background:#fdfaf6;color:#1a2535;padding:8px 10px;transition:border-color .18s ease,box-shadow .18s ease;font-family:inherit;font-size:.9rem}input:focus,select:focus{outline:none;border-color:#0e5ea8;box-shadow:0 0 0 3px #0e5ea81f}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23997766'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;background-color:#fdfaf6;padding-right:28px;cursor:pointer}select:disabled{opacity:.6;cursor:not-allowed;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23bbaa99'/%3E%3C/svg%3E")}pre{margin:0 0 10px;white-space:pre-wrap;word-break:break-word;min-height:108px}.guide-btn{width:28px;height:28px;border-radius:50%;border:1.5px solid #c0392b;background:transparent;color:#c0392b;font-weight:700;font-size:14px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:all .15s}.guide-btn:hover{background:#c0392b;color:#fff}button{border:none;border-radius:8px;background:linear-gradient(120deg,#0e5ea8,#0d7ab6);color:#fff;padding:9px 14px;font-weight:600;cursor:pointer;font-size:.9rem;font-family:inherit;transition:transform .15s ease,box-shadow .15s ease,background .15s ease}button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 4px 12px #0e5ea852}button:active:not(:disabled){transform:translateY(0);box-shadow:none}button:disabled{opacity:.42;cursor:not-allowed;transform:none;box-shadow:none}.btn-danger{background:linear-gradient(120deg,#c0392b,#e74c3c);padding:7px 12px;font-size:.85rem}.btn-danger:hover:not(:disabled){background:linear-gradient(120deg,#a93226,#c0392b);box-shadow:0 4px 12px #c0392b5c}.version-badge-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:10px;align-items:center}.version-badge{display:inline-flex;align-items:center;padding:2px 9px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.03em}.version-badge--draft{background:#e67e221f;color:#9a5000;border:1px solid rgba(230,126,34,.3)}.version-badge--confirmed{background:#27ae601c;color:#1a7a46;border:1px solid rgba(39,174,96,.28)}.version-badge--mode{background:#3498db1a;color:#1a5a8a;border:1px solid rgba(52,152,219,.25)}.row-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.row-inline{display:flex;align-items:center;gap:10px;margin-bottom:10px;flex-wrap:wrap;min-width:0}.row-inline input{min-width:0;width:min(100%,180px)}.allocation-box{border:1px solid #e4d4c0;background:linear-gradient(180deg,#fffbf5,#fdf7ef);border-radius:10px;padding:10px 12px;margin-bottom:10px}.allocation-box strong{font-size:.85rem;color:#6a4a2a;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.allocation-box .row-inline{margin:6px 0 0}.allocation-box input[type=number]{width:80px;min-width:80px}.meta-text{margin:0 0 10px;font-size:12px;color:#7a6a5a}.loading-inline{display:inline-flex;align-items:flex-start;gap:8px;margin-top:8px;color:#5a4a3a;font-size:13px;padding:10px 12px;border-radius:10px;width:100%;transition:background .18s ease,border-color .18s ease,box-shadow .18s ease}.loading-inline.is-pending{background:linear-gradient(120deg,#fef5e6f2,#fff9f0eb);border:1px solid rgba(230,126,34,.3);box-shadow:inset 0 1px #ffffffb3}.loading-inline.is-complete{background:#faf8f4d9;border:1px solid rgba(200,185,165,.7)}.spinner{width:14px;height:14px;border-radius:50%;border:2px solid #f0d8c0;border-top-color:#c0392b;animation:spin .85s linear infinite;flex-shrink:0;margin-top:2px}@keyframes spin{to{transform:rotate(360deg)}}.loading-summary-list{display:flex;flex-wrap:wrap;gap:4px}.loading-summary-list span{border-radius:999px;padding:2px 9px;background:#ffffffa6;border:1px solid rgba(200,175,140,.4);font-size:12px;font-weight:500}.loading-summary-list.is-pending span{animation:summaryPulse 1.4s ease-in-out infinite}.loading-summary-list.is-complete span{animation:summaryReveal .26s ease both;background:#27ae6014;border-color:#27ae6040;color:#1a6a3a}@keyframes summaryPulse{0%,to{opacity:.72;transform:translate(0)}50%{opacity:1;transform:translate(2px)}}@keyframes summaryReveal{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.editor-block{margin-bottom:12px;border:1px solid #e6ddd0;border-radius:10px;padding:10px;background:linear-gradient(180deg,#fffdf9,#fdf9f3);display:grid;gap:8px;min-width:0;overflow-x:auto}.indicator-tabs{margin-top:4px}.indicator-pool-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;max-height:220px;overflow:auto;padding-right:4px}.indicator-pool-item{text-align:left;border:1px solid #ddd4c8;border-radius:8px;background:#fff;color:#1a3050;padding:7px 9px;display:grid;gap:2px}.indicator-pool-item:hover{border-color:#c0392b;background:#fff5f3;box-shadow:0 2px 8px #c0392b1f}.indicator-pool-item small{color:#7a6a5a;font-size:11px}.editor-grid{display:grid;gap:8px;min-width:0;align-items:center}.editor-grid>*{min-width:0}.editor-grid-meta,.editor-grid-condition{grid-template-columns:repeat(auto-fit,minmax(160px,1fr))}.draft-index-selector{grid-column:1 / -1;border:1px solid #e4d4c4;border-radius:10px;padding:8px;background:#fdf9f3}.draft-index-selector button{width:auto}.draft-index-selector .row-inline button{flex:1;min-width:0}.condition-row-block{display:grid;gap:6px;overflow-x:auto;padding:8px;border-radius:8px;background:#fff9;border:1px solid #ede4d8;transition:border-color .18s ease}.condition-row-block:hover{border-color:#d4c4b0}.params-toggle{background:none;border:none;color:#9a8070;font-size:.85rem;cursor:pointer;padding:0 6px;border-radius:4px;transition:color .15s,transform .2s;line-height:1}.params-toggle:hover{color:#6a5040}.params-toggle.is-expanded{transform:rotate(180deg)}.params-subrow{background:#fdf8f3;border-radius:6px;border:1px solid #ede4d8;padding:6px 8px;margin-top:2px;align-items:start}.params-col{display:flex;flex-direction:column;gap:4px}.param-field{display:flex;align-items:center;gap:6px;white-space:nowrap}.param-label{font-size:.82rem;color:#7a6858;min-width:80px}.param-input{font-size:.82rem;width:70px;min-width:0;padding:2px 6px;border:1px solid #d4c4b0;border-radius:4px;background:#fffaf4;color:#3a2e24;text-align:right}.param-input:focus{outline:none;border-color:#9a8070}.param-input.param-modified{border-color:#c0392b;color:#c0392b}.param-label.param-modified{color:#c0392b;font-weight:600}input.field-modified,select.field-modified{border-color:#c0392b;color:#c0392b}.row-reset-btn{background:none;border:none;font-size:.8rem;color:#9a8070;cursor:pointer;padding:2px 4px;border-radius:3px;transition:color .15s;white-space:nowrap;width:auto}.row-reset-btn:hover{color:#c0392b}.params-reset-col{display:flex;align-items:flex-start;justify-content:flex-end}.params-reset-btn{background:none;border:none;font-size:.8rem;color:#9a8070;cursor:pointer;padding:2px 4px;border-radius:3px;transition:color .15s;white-space:nowrap;width:auto}.params-reset-btn:hover{color:#c0392b}.inline-indicator-picker{border:1px solid #ddd4c4;border-radius:10px;background:#fffaf4;padding:10px;display:grid;gap:8px}.inline-indicator-pool-list{max-height:240px}.indicator-picker-modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;background:#1408046b;display:grid;place-items:center;z-index:1200;padding:18px;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.indicator-picker-modal{width:min(980px,calc(100vw - 36px));max-height:calc(100vh - 56px);overflow:auto;border:1px solid #e4d4c4;border-radius:14px;background:#fffdf8;box-shadow:0 20px 56px #50140538;padding:14px;display:grid;gap:8px;animation:modalIn .2s ease both}@keyframes modalIn{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.editor-grid button{padding:8px 10px}.editor-grid input,.editor-grid select,.editor-grid button{width:100%;min-width:0}.editor-grid .btn-danger{background:linear-gradient(120deg,#c0392b,#e74c3c);width:100%}.picker-field-button{border:1px solid #ddd4c4;border-radius:8px;background:#fff;color:#1a3050;display:grid;gap:2px;text-align:left}.picker-field-button small{color:#7a6a5a;font-size:11px}.picker-field-button.is-locked{background:#f0ece8;border-color:#ccc4ba;color:#7a7068;cursor:not-allowed}.picker-field-button.is-locked small{color:#8a8078}.index-selector{display:grid;gap:8px;margin-bottom:10px}.index-selector-list{display:grid;gap:3px;max-height:170px;overflow:auto;border:1px solid #e4d4c4;border-radius:8px;padding:6px;background:#fffdf8}.index-selector-list::-webkit-scrollbar{width:6px}.index-selector-list::-webkit-scrollbar-thumb{background:#d4b8a0;border-radius:999px}.index-option{display:flex;align-items:center;gap:8px;font-size:.88rem;padding:3px 4px;border-radius:6px;cursor:pointer;transition:background .12s ease}.index-option:hover{background:#c0392b0f}.index-option input[type=checkbox]{flex-shrink:0;width:15px;height:15px;accent-color:#c0392b;cursor:pointer;padding:0;border-radius:3px}.result-block,.result-panel{display:grid;gap:10px}.result-card{grid-column:1 / -1}.tab-row{display:flex;gap:4px;flex-wrap:wrap;background:#00000009;border-radius:10px;padding:4px}.tab-row button{background:transparent;color:#5a4a3a;padding:7px 16px;border-radius:7px;font-size:.87rem;font-weight:600;transform:none;box-shadow:none;transition:background .15s ease,color .15s ease,box-shadow .15s ease}.tab-row button:hover:not(.is-active):not(:disabled){background:#c0392b12;color:#c0392b;transform:none;box-shadow:none}.tab-row button.is-active{background:linear-gradient(120deg,#0e5ea8,#0d7ab6);color:#fff;box-shadow:0 2px 8px #0e5ea847;transform:none}.metrics-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.metrics-grid--compact{grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;margin-bottom:10px}.metrics-grid--compact .metric-card{padding:6px 8px;border-radius:6px}.metrics-grid--compact .metric-card span{font-size:10.5px}.metrics-grid--compact .metric-card strong{font-size:13px}.metric-card{border:1px solid #e8ddd0;border-radius:10px;background:linear-gradient(180deg,#fffdf9,#fdf9f2);padding:10px 14px;display:grid;gap:3px;transition:transform .15s ease,box-shadow .15s ease;animation:metricFadeIn .35s ease both}.metric-card:hover{transform:translateY(-2px);box-shadow:0 6px 18px #783c0a1a}@keyframes metricFadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.metric-card span{font-size:11.5px;color:#7a6a5a;font-weight:600;text-transform:uppercase;letter-spacing:.04em}.metric-card span[title]{cursor:help;border-bottom:1px dotted #bba}.metric-card strong{font-size:17px;color:#1a2535;font-weight:700;letter-spacing:.01em}.metric-card.metric-up strong{color:#c0392b}.metric-card.metric-down strong{color:#1a9a52}.metric-card.metric-neutral strong{color:#507093}.strategy-flow-wrap{display:grid;gap:6px;overflow-x:hidden}.strategy-flow-scroll{width:100%;max-width:100%;overflow-x:scroll;overflow-y:hidden;padding-bottom:4px;position:relative;border-radius:10px;box-shadow:inset 20px 0 18px -18px #0b1f35d9,inset -20px 0 18px -18px #0b1f35d9}.strategy-flow-scroll::-webkit-scrollbar{height:8px}.strategy-flow-scroll::-webkit-scrollbar-thumb{background:#4a6a8a;border-radius:999px}.strategy-flow-scroll::-webkit-scrollbar-track{background:#0f2338;border-radius:999px}.strategy-flow-wrap h3{margin:4px 0 0;font-size:.95rem}.strategy-flow-hint{margin:0;font-size:12px;color:#7a6a5a}.strategy-flow-chart{width:100%;min-width:860px;display:block;border-radius:10px;border:1px solid #173047}.json-panel h3{margin:0;font-size:.95rem}.chart-wrap{display:grid;gap:8px;max-width:100%;overflow-x:hidden}.row-inline-backtest-window{margin:2px 0 4px}.row-inline-backtest-window label{min-width:30px;font-size:.85rem;color:#6a5a4a;font-weight:600}.row-inline-backtest-window input[type=date]{min-width:160px;flex:1 1 170px}.chart-stage{width:100%;max-width:100%;overflow:hidden;border-radius:10px}.chart-toolbar{display:flex;gap:8px;flex-wrap:wrap}.chart-toolbar button{padding:5px 10px;border-radius:8px;border:1px solid #d8c8b8;background:#fdfaf5;color:#4a3a2a;cursor:pointer;font-size:.83rem;box-shadow:none}.chart-toolbar button:hover:not(:disabled){background:#fff5ee;border-color:#c0392b;color:#c0392b;transform:none;box-shadow:none}.chart-wrap h3{margin:4px 0 0;font-size:.95rem}.simple-chart{width:100%;border-radius:8px;border:1px solid #1d3147;display:block}.enhanced-chart{border-color:#21374e}.chart-summary-text{margin:0}.chart-hover-panel{display:grid;gap:6px;border:1px solid #e4d4c4;border-radius:8px;background:#fffdf8;padding:8px 10px}.chart-hover-panel strong{color:#2a3a50;font-size:.86rem}.chart-hover-sections{display:grid;gap:8px;grid-template-columns:repeat(2,minmax(0,1fr))}.chart-hover-section{display:grid;gap:4px;border:1px solid #e4d4c4;border-radius:8px;padding:6px;background:#fff}.chart-hover-section em{font-style:normal;font-size:12px;font-weight:700;color:#3a5060}.chart-hover-values{display:flex;flex-wrap:wrap;gap:8px}.chart-hover-values span{font-size:12px;color:#4a6070}.chart-legend{display:flex;flex-wrap:wrap;gap:8px}.legend-item,.legend-static{display:inline-flex;align-items:center;gap:6px;font-size:.82rem;color:#4a6070}.legend-item{border:1px solid #e4d4c4;border-radius:999px;background:#fdfaf5;padding:3px 9px;cursor:pointer;transition:background .14s ease,border-color .14s ease}.legend-item:hover{background:#fff5ee;border-color:#c0392b}.legend-item.is-hidden{opacity:.42;text-decoration:line-through}.legend-item:focus-visible{outline:2px solid #c0392b;outline-offset:1px}.chart-legend i{width:10px;height:10px;border-radius:999px;display:inline-block}.legend-row-break{flex-basis:100%;height:0}.legend-item.is-active-toggle{background:#e8f4fd;border-color:#3ca8ff;color:#1a6ab3;font-weight:600}.chart-legend-sub,.chart-legend-pos{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;padding:4px 0;border-top:1px solid #e8ddd0}.panel-label{font-size:.78rem;font-weight:600;color:#2c3e50;margin-right:4px}.chart-toggle-label{display:inline-flex;align-items:center;gap:4px;font-size:.82rem;color:#4a6070;cursor:pointer;white-space:nowrap}.chart-toggle-label input[type=checkbox]{accent-color:#3ca8ff}.trade-table-wrap{overflow:auto;border:1px solid #e4d4c4;border-radius:10px;background:#fffdf8}.trade-table{width:100%;border-collapse:collapse;font-size:.84rem}.trade-table th{background:linear-gradient(180deg,#fdf5e8,#faecd8);color:#5a3a1a;font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.04em;padding:8px 10px;border-bottom:2px solid #e4c8a8;text-align:left;white-space:nowrap}.trade-table td{border-bottom:1px solid #f0e4d4;padding:6px 10px;text-align:left;color:#2a3540}.trade-table tbody tr:hover td{background:#c0392b0a}.trade-table tbody tr:nth-child(2n) td{background:#faf5ee99}.trade-table tbody tr:nth-child(2n):hover td{background:#c0392b0a}.strategies-page{max-width:1200px}.strategies-header{margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid rgba(192,57,43,.12)}.strategies-header h2{font-size:1.4rem;font-weight:800;margin:0;color:#1a2535}.strategies-count{font-size:.9rem;font-weight:500;color:#8a7a6a;margin-left:8px}.strategies-loading,.strategies-empty{text-align:center;color:#8a7a6a;padding:48px 16px;font-size:.95rem}.strategies-empty p{margin:6px 0}.strategies-error{text-align:center;color:#c0392b;padding:24px 16px;font-weight:500}.strategies-login-prompt{text-align:center;padding:64px 16px}.strategies-login-prompt h2{font-size:1.4rem;font-weight:800;color:#1a2535;margin-bottom:12px}.strategies-login-prompt p{color:#5a4a3a;margin:6px 0}.strategies-login-hint{font-size:.85rem;color:#8a7a6a}.strategy-table-wrap{overflow-x:auto;border:1px solid #e4d4c4;border-radius:10px;background:#fffdf8}.strategy-table{width:100%;border-collapse:collapse;font-size:.84rem}.strategy-table th{background:linear-gradient(180deg,#fdf5e8,#faecd8);color:#5a3a1a;font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.04em;padding:10px 12px;border-bottom:2px solid #e4c8a8;text-align:left;white-space:nowrap}.strategy-table th[title]{cursor:help;border-bottom:2px dotted #c8a878}.strategy-table td{border-bottom:1px solid #f0e4d4;padding:8px 12px;text-align:left;color:#2a3540;white-space:nowrap}.strategy-table tbody tr:hover td{background:#c0392b0a}.strategy-table tbody tr:nth-child(2n):not(.strategy-detail-row) td{background:#faf5ee99}.strategy-table tbody tr:nth-child(2n):not(.strategy-detail-row):hover td{background:#c0392b0a}.strategy-row--expanded td{border-bottom-color:transparent}.pct-positive{color:#16a34a;font-weight:600}.pct-negative{color:#dc2626;font-weight:600}.strategy-name-btn{background:none;border:none;cursor:pointer;color:#c0392b;font-weight:600;font-size:.84rem;padding:0;text-align:left;display:inline-flex;align-items:center;gap:6px}.strategy-name-btn:hover{text-decoration:underline}.strategy-expand-icon{font-size:.65rem;color:#8a7a6a;flex-shrink:0}.strategy-actions{display:flex;gap:6px}.strategy-btn{padding:4px 12px;border-radius:5px;font-size:.78rem;border:1px solid;cursor:pointer;font-weight:500;transition:background .15s,border-color .15s;white-space:nowrap}.strategy-btn--load{background:#f7f3ee;border-color:#c0a07a;color:#5a3a1a}.strategy-btn--load:hover{background:#f0e8d8;border-color:#a07848}.strategy-btn--delete{background:#fef2f2;border-color:#e8a8a8;color:#991b1b}.strategy-btn--delete:hover{background:#fde8e8;border-color:#dc6868}.strategy-btn--delete:disabled{opacity:.5;cursor:not-allowed}.strategy-detail-row td{background:#faf8f4;padding:0;border-bottom:2px solid #e4d4c4}.strategy-detail-content{padding:14px 18px}.strategy-detail-field{margin-bottom:8px;font-size:.84rem;color:#3a3530}.strategy-detail-label{font-weight:700;color:#5a3a1a}.strategy-detail-parent-id{font-family:SF Mono,Fira Code,monospace;font-size:.78rem;color:#8a7a6a;background:#f0ece4;padding:2px 6px;border-radius:3px}.strategy-detail-json{margin:6px 0 0;padding:12px 14px;background:#f5f0e8;border:1px solid #e4d4c4;border-radius:6px;font-family:SF Mono,Fira Code,monospace;font-size:.76rem;line-height:1.5;color:#2a3540;max-height:280px;overflow:auto;white-space:pre;word-wrap:normal}.error-text{margin-top:8px;color:#c0392b;font-weight:500}@media(max-width:860px){.grid-layout{grid-template-columns:1fr}.page-header{flex-direction:column;align-items:flex-start;gap:8px}.editor-grid{grid-template-columns:1fr}.metrics-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.metrics-grid--compact{grid-template-columns:repeat(4,minmax(0,1fr))}.chart-hover-sections{grid-template-columns:1fr}.strategy-flow-chart{width:100%;min-width:860px}}@media(max-width:1520px){.editor-grid-meta,.editor-grid-condition{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}}@media(max-width:1180px){.editor-grid-meta,.editor-grid-condition{grid-template-columns:repeat(2,minmax(0,1fr))}}.hint-icon-wrap{position:relative;display:inline-flex;vertical-align:middle;margin-left:4px}.hint-icon{width:18px;height:18px;border-radius:50%;border:1px solid #bbb;background:transparent;color:#999;font-size:11px;font-weight:700;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0}.hint-icon:hover{border-color:#c0392b;color:#c0392b}.hint-bubble{position:absolute;left:50%;top:calc(100% + 6px);transform:translate(-50%);background:#333;color:#fff;font-size:12px;line-height:1.5;padding:8px 12px;border-radius:6px;white-space:normal;width:max-content;max-width:240px;z-index:100;box-shadow:0 2px 8px #0003}.app-nav{display:flex;align-items:center;height:48px;padding:0 24px;background:#0d1b2a;border-bottom:1px solid #1b3a5c;position:sticky;top:0;z-index:100}.app-nav__brand{font-size:18px;font-weight:700;color:#4fc3f7;margin-right:32px}.app-nav__links{display:flex;gap:4px}.app-nav__links a{color:#8ab4d6;text-decoration:none;padding:6px 16px;border-radius:6px;font-size:14px;transition:background .15s}.app-nav__links a:hover{background:#162d45}.app-nav__links a.active{background:#1a3a5c;color:#e0f0ff}.app-nav__user{margin-left:auto;color:#8ab4d6;font-size:13px}.save-strategy-btn{margin-left:auto;background:linear-gradient(120deg,#2e7d32,#388e3c)!important;color:#fff!important;padding:7px 18px;border-radius:7px;font-size:.85rem;font-weight:600;cursor:pointer;border:none;transition:opacity .15s}.save-strategy-btn:hover{opacity:.88}.save-dialog{margin-top:10px;padding:14px 16px;background:#00000008;border:1px solid rgba(0,0,0,.08);border-radius:10px}.save-dialog__form{display:flex;flex-direction:column;gap:8px}.save-dialog__form label{font-size:.85rem;font-weight:600;color:#3a3a3a}.save-dialog__form input[type=text]{padding:8px 12px;border:1px solid #ccc;border-radius:6px;font-size:.9rem;outline:none;transition:border-color .15s}.save-dialog__form input[type=text]:focus{border-color:#0e5ea8}.save-dialog__parent-info{margin:0;font-size:.8rem;color:#888}.save-dialog__actions{display:flex;gap:8px;margin-top:4px}.save-dialog__actions button{padding:7px 18px;border:none;border-radius:6px;font-size:.85rem;font-weight:600;cursor:pointer;background:linear-gradient(120deg,#0e5ea8,#0d7ab6);color:#fff;transition:opacity .15s}.save-dialog__actions button:hover{opacity:.88}.save-dialog__actions button:disabled{opacity:.5;cursor:not-allowed}.save-dialog__actions button.btn-cancel{background:#e0e0e0;color:#555}.save-dialog__actions button.btn-cancel:hover{background:#d0d0d0}.compare-page{max-width:1600px}.compare-layout{display:grid;grid-template-columns:300px 1fr;gap:20px;align-items:start}.compare-selector{background:#fffffff7;border:1px solid #e6ddd0;border-radius:12px;padding:16px;position:sticky;top:68px}.compare-selector h2{font-size:1.1rem;font-weight:800;color:#1a2535;margin:0 0 10px}.compare-selector__hint{font-size:.8rem;color:#8a7a6a;margin:0 0 10px}.compare-selector__loading,.compare-selector__empty{text-align:center;color:#8a7a6a;padding:32px 8px;font-size:.9rem}.compare-selector__error{text-align:center;color:#c0392b;padding:16px 8px;font-size:.85rem}.compare-selector__list{display:flex;flex-direction:column;gap:4px;max-height:420px;overflow-y:auto}.compare-selector__item{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:6px;cursor:pointer;font-size:.84rem;transition:background .12s;border:1px solid transparent}.compare-selector__item:hover{background:#c0392b0a}.compare-selector__item--checked{background:#c0392b0f;border-color:#c0392b26}.compare-selector__item--disabled{opacity:.45;cursor:not-allowed}.compare-selector__item input[type=checkbox]{flex-shrink:0;accent-color:#c0392b}.compare-selector__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#2a3540;font-weight:500}.compare-selector__return{flex-shrink:0;font-size:.78rem;font-weight:600}.compare-selector__actions{display:flex;flex-direction:column;gap:8px;margin-top:14px}.compare-btn{padding:7px 16px;border:1px solid #d5cec5;border-radius:6px;font-size:.84rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,opacity .15s;white-space:nowrap}.compare-btn:disabled{opacity:.5;cursor:not-allowed}.compare-btn--primary{background:linear-gradient(120deg,#c0392b,#e67e22);color:#fff;border-color:transparent}.compare-btn--primary:hover:not(:disabled){opacity:.88}.compare-btn--lineage{background:#f7f3ee;border-color:#c0a07a;color:#5a3a1a}.compare-btn--lineage:hover:not(:disabled){background:#f0e8d8;border-color:#a07848}.compare-btn--unified{background:#0e5ea814;border-color:#0e5ea84d;color:#0e5ea8}.compare-btn--unified:hover:not(:disabled){background:#0e5ea824}.compare-results{min-width:0}.compare-results__placeholder{text-align:center;color:#8a7a6a;padding:64px 16px;font-size:.95rem;background:#fffffff7;border:1px solid #e6ddd0;border-radius:12px}.compare-results__error{text-align:center;color:#c0392b;padding:16px 8px;font-weight:500;font-size:.85rem}.compare-unified{margin-bottom:16px}.compare-unified__form{display:flex;align-items:flex-end;gap:12px;margin-top:10px;padding:12px 16px;background:#fffffff7;border:1px solid #e6ddd0;border-radius:10px;flex-wrap:wrap}.compare-unified__form label{display:flex;flex-direction:column;gap:4px;font-size:.8rem;font-weight:600;color:#5a3a1a}.compare-unified__form input[type=date]{padding:6px 10px;border:1px solid #d5cec5;border-radius:5px;font-size:.84rem;background:#fff;outline:none}.compare-unified__form input[type=date]:focus{border-color:#c0392b}.compare-chart-wrap{margin-bottom:16px;background:#fffffff7;border:1px solid #e6ddd0;border-radius:12px;padding:4px}.compare-metrics-wrap{background:#fffffff7;border:1px solid #e6ddd0;border-radius:12px;padding:16px}.compare-metrics-wrap h3{margin:0 0 12px;font-size:1rem;font-weight:700;color:#1a2535}.compare-metrics-scroll{overflow-x:auto}.compare-metrics-table{width:100%;border-collapse:collapse;font-size:.84rem}.compare-metrics-table th{background:linear-gradient(180deg,#fdf5e8,#faecd8);color:#5a3a1a;font-weight:700;font-size:.78rem;padding:9px 12px;border-bottom:2px solid #e4c8a8;text-align:center;white-space:nowrap}.compare-metrics-table th:first-child{text-align:left}.compare-metrics-table td{border-bottom:1px solid #f0e4d4;padding:8px 12px;text-align:center;color:#2a3540;white-space:nowrap}.compare-metrics-label{text-align:left!important;font-weight:600;color:#5a3a1a!important}.compare-metrics-label[title]{cursor:help}.compare-metrics-table tbody tr:hover td{background:#c0392b0a}.compare-metrics-table tbody tr:nth-child(2n) td{background:#faf5ee99}.compare-metrics-table tbody tr:nth-child(2n):hover td{background:#c0392b0a}.compare-metrics-color{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:6px;vertical-align:middle}@media(max-width:860px){.compare-layout{grid-template-columns:1fr}.compare-selector{position:static}.compare-unified__form{flex-direction:column;align-items:stretch}}:root{--brand: #c0392b;--brand-dark: #a5311f;--brand-light: rgba(192, 57, 43, .08);--blue: #0e5ea8;--blue-light: rgba(14, 94, 168, .1);--green: #1a7d4e;--green-light: rgba(26, 125, 78, .1);--amber: #b45309;--amber-light: rgba(180, 83, 9, .1);--surface: #fffdf8;--surface-2: #f7f3ee;--border: rgba(192, 57, 43, .13);--text-primary: #1a2535;--text-secondary: #6b5b4e;--text-muted: #a09080;--shadow-sm: 0 1px 4px rgba(0, 0, 0, .07);--shadow-md: 0 4px 16px rgba(0, 0, 0, .1);--shadow-lg: 0 8px 32px rgba(0, 0, 0, .13);--radius: 14px;--radius-sm: 8px;--radius-lg: 20px}#evomind-dashboard{max-width:1400px;margin:0 auto;padding:20px 16px 40px}.dash-title{display:flex;align-items:baseline;gap:14px;margin-bottom:20px}.dash-title h1{font-size:1.6rem;font-weight:800;margin:0;background:linear-gradient(120deg,#c0392b,#e67e22,#c0392b);background-size:200% auto;-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;animation:shimmer 4s linear infinite}.dash-title__date{font-size:.88rem;color:var(--text-muted);font-weight:500}.dash-main-grid{display:grid;grid-template-columns:1fr 340px;gap:18px;align-items:start}.dash-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden;transition:box-shadow .2s}.dash-card:hover{box-shadow:var(--shadow-md)}.dash-card-header{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;background:var(--surface-2);border-bottom:1px solid var(--border);-webkit-user-select:none;user-select:none}.dash-card-header__left{display:flex;align-items:center;gap:10px}.dash-card-header__right{display:flex;align-items:center;gap:8px}.dash-card-icon{font-size:1.3rem}.dash-card-title{font-size:1.05rem;font-weight:700;color:var(--text-primary);display:block;line-height:1.3}.dash-card-subtitle{font-size:.78rem;color:var(--text-muted);display:block;line-height:1.3}.dash-card-badge{display:inline-flex;align-items:center;gap:3px;padding:2px 10px;border-radius:12px;font-size:.75rem;font-weight:600}.dash-card-badge--buy{background:#c0392b1a;color:var(--brand);border:1px solid rgba(192,57,43,.25)}.dash-card-badge--hold{background:#2962cc1a;color:#2962cc;border:1px solid rgba(41,98,204,.25)}.dash-card-badge--sell{background:#1a7d4e1a;color:var(--green);border:1px solid rgba(26,125,78,.25)}.dash-card-collapse-icon{font-size:.7rem;color:var(--text-muted);margin-left:4px}.dash-card-body{padding:0}.signal-card{border-left:4px solid var(--brand)}.signal-tag{display:inline-flex;align-items:center;gap:4px;padding:3px 10px;border-radius:6px;font-size:.78rem;font-weight:600;white-space:nowrap}.signal-tag--buy{background:#c0392b1a;color:var(--brand);border:1px solid rgba(192,57,43,.25)}.signal-tag--hold{background:#2962cc1a;color:#2962cc;border:1px solid rgba(41,98,204,.25)}.signal-tag--sell{background:#1a7d4e1f;color:var(--green);border:1px solid rgba(26,125,78,.25)}.dash-signal-stats{display:flex;align-items:center;gap:16px;padding:6px 16px;font-size:.82rem;color:var(--text-secondary);border-bottom:1px solid var(--border)}.code-chip{font-family:SF Mono,Consolas,Liberation Mono,Menlo,monospace;font-size:.78rem;padding:2px 7px;border-radius:4px;background:var(--surface-2);color:var(--text-primary);border:1px solid var(--border);white-space:nowrap}.code-chip--lg{font-size:.88rem;padding:3px 10px;font-weight:600}.indicator-chip{display:inline-block;font-size:.75rem;padding:2px 8px;border-radius:4px;background:var(--blue-light);color:var(--blue);margin:1px 3px 1px 0;white-space:nowrap;cursor:help}.dash-table{width:100%;border-collapse:collapse;font-size:.84rem}.dash-table thead th{background:var(--surface-2);padding:8px 12px;text-align:left;font-weight:600;color:var(--text-secondary);font-size:.78rem;border-bottom:1px solid var(--border);white-space:nowrap}.dash-table tbody td{padding:8px 12px;border-bottom:1px solid rgba(192,57,43,.06);vertical-align:middle}.dash-table tbody tr:hover{background:#c0392b0a}.dash-table--compact{font-size:.8rem}.dash-table--compact thead th{padding:6px 8px;font-size:.74rem}.dash-table--compact tbody td{padding:6px 8px}.dash-empty{text-align:center;color:var(--text-muted);padding:20px 12px;font-size:.85rem}.dash-loading{text-align:center;color:var(--text-muted);padding:24px 12px;font-size:.85rem}.num-green{color:var(--green);font-weight:600}.num-blue{color:#2962cc;font-weight:600}.num-red{color:var(--brand);font-weight:600}.num-blue{color:var(--blue);font-weight:600}.dash-filter-bar{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--surface-2);border-bottom:1px solid var(--border)}.dash-filter-input{padding:5px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.82rem;background:#fff;flex:1;min-width:0;transition:border-color .15s}.dash-filter-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 2px #c0392b14}.indextop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px;padding:16px}.indextop-item{background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px;cursor:pointer;transition:box-shadow .2s,transform .2s}.indextop-item:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.indextop-item--expanded{box-shadow:var(--shadow-md);border-color:var(--brand)}.indextop-item__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.indextop-item__return{font-size:1.15rem;font-weight:700}.indextop-item__indicators{margin-bottom:10px;display:flex;flex-wrap:wrap;gap:4px}.indextop-item__footer{display:flex;flex-wrap:wrap;gap:10px;font-size:.76rem;color:var(--text-secondary);padding-top:8px;border-top:1px solid rgba(192,57,43,.08)}.indextop-item__footer strong{font-weight:600}.indextop-item__expanded{margin-top:12px;padding-top:10px;border-top:1px dashed var(--border)}.dash-card-scroll{max-height:none;overflow:visible}.dash-expand-btn{display:block;width:100%;padding:8px 0;background:var(--surface-2);border:none;border-top:1px solid var(--border);color:var(--brand);font-size:.82rem;font-weight:600;cursor:pointer;transition:background .15s}.dash-expand-btn:hover{background:#c0392b0f}.weeklytop-grid{display:flex;flex-direction:column;gap:8px;padding:12px 16px}.weeklytop-item{display:flex;align-items:flex-start;gap:12px;background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;transition:box-shadow .2s}.weeklytop-item:hover{box-shadow:var(--shadow-sm)}.weeklytop-item__rank{flex-shrink:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--surface-2);color:var(--brand);font-weight:700;font-size:.85rem}.weeklytop-item:nth-child(1) .weeklytop-item__rank{background:var(--brand);color:#fff}.weeklytop-item:nth-child(2) .weeklytop-item__rank{background:#e67e22;color:#fff}.weeklytop-item:nth-child(3) .weeklytop-item__rank{background:#f39c12;color:#fff}.weeklytop-item__body{flex:1;min-width:0}.weeklytop-item__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;gap:8px}.weeklytop-item__header .code-chip{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.weeklytop-item__return{font-size:.82rem;font-weight:600;white-space:nowrap}.weeklytop-item__indicators{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}.weeklytop-item__footer{display:flex;flex-wrap:wrap;gap:10px;font-size:.76rem;color:var(--text-secondary);padding-top:6px;border-top:1px solid rgba(192,57,43,.06)}.weeklytop-item__footer strong{font-weight:600}.template-dropdown{position:absolute;left:0;right:0;top:100%;z-index:100;background:#fff;border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);max-height:400px;overflow-y:auto}.template-dropdown__header{padding:8px 14px;font-size:.75rem;font-weight:600;color:var(--text-muted);background:var(--surface-2);border-bottom:1px solid var(--border)}.template-dropdown__item{display:flex;justify-content:space-between;align-items:center;padding:8px 14px;width:100%;border:none;background:none;cursor:pointer;font-size:.85rem;text-align:left;transition:background .12s;gap:12px}.template-dropdown__item:hover{background:var(--brand-light)}.template-dropdown__item+.template-dropdown__item{border-top:1px solid rgba(192,57,43,.06)}.template-dropdown__indicators{font-weight:600;color:var(--blue);font-size:.88rem;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.template-dropdown__metrics{font-size:.75rem;color:var(--text-muted);white-space:nowrap;flex-shrink:0}@media(max-width:900px){.dash-main-grid,.indextop-grid{grid-template-columns:1fr}}
