: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}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}.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 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}.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}.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))}.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))}}
