@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-g30qAdWV.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-400-normal-Dsrv2Tcn.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-cyrillic-400-normal-DZqxrq2p.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-400-normal-BTotfTJu.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-greek-400-normal-_efipK4i.woff2)format("woff2"),url(/assets/ibm-plex-sans-greek-400-normal-D9ESIMu3.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-vietnamese-400-normal-DG4YqDda.woff2)format("woff2"),url(/assets/ibm-plex-sans-vietnamese-400-normal-fK1oJ5dG.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-ext-400-normal-C5H60-Va.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-ext-400-normal-RBey6euL.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-sans-latin-400-normal-CDDApCn2.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-400-normal-CYLoc0-x.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-Cs5J6C77.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-500-normal-DB5PtV2g.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-cyrillic-500-normal-CocWQlwt.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-500-normal-ByOcLdNv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-greek-500-normal-JMMifIXV.woff2)format("woff2"),url(/assets/ibm-plex-sans-greek-500-normal-CuWXN6rf.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-vietnamese-500-normal-e4dixQRQ.woff2)format("woff2"),url(/assets/ibm-plex-sans-vietnamese-500-normal-BEb3_waV.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-ext-500-normal-DakdToA3.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-ext-500-normal-D0aIdm-b.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-sans-latin-500-normal-6ng42L7E.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-500-normal-BgVn5rGT.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-DUMzJB7m.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-ext-600-normal-Bz0x94Yp.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-cyrillic-600-normal-71GNu3SW.woff2)format("woff2"),url(/assets/ibm-plex-sans-cyrillic-600-normal-BGq0mW3O.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-greek-600-normal-DzTrcv_p.woff2)format("woff2"),url(/assets/ibm-plex-sans-greek-600-normal-D-CqTdkO.woff)format("woff");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-vietnamese-600-normal-DpPYBSTl.woff2)format("woff2"),url(/assets/ibm-plex-sans-vietnamese-600-normal-DgdngZtN.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-ext-600-normal-DOrvGEcy.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-ext-600-normal-DIrixKbi.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/ibm-plex-sans-latin-600-normal-CuJfVYMP.woff2)format("woff2"),url(/assets/ibm-plex-sans-latin-600-normal-Cu4Hd6ag.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-xuaO2J-f.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-400-normal-DMdlQ8Kv.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-cyrillic-400-normal-BSMlKf0J.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-400-normal-CEL4l2ZJ.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-vietnamese-400-normal-BulugwFq.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-400-normal-DDuiU_S-.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-ext-400-normal-BmRBH3aV.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-400-normal-D3D2R8hC.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-400-normal-CvHOgSBP.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BqneJy0T.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-ext-500-normal-BIfNGwUT.woff)format("woff");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-cyrillic-500-normal-Bq9vWWag.woff2)format("woff2"),url(/assets/ibm-plex-mono-cyrillic-500-normal-Ael50iVv.woff)format("woff");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-vietnamese-500-normal-DZ4AoWbu.woff2)format("woff2"),url(/assets/ibm-plex-mono-vietnamese-500-normal-C8zxqsMH.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-ext-500-normal-CAhNIIs5.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-ext-500-normal-CZ70TYgx.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(/assets/ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root{--bg:#0a0e15;--bg-raised:#0f1620;--bg-panel:#121a26b8;--bg-input:#0d1119;--border:#1d2a38;--border-bright:#2c3f52;--text:#c3d1e0;--text-dim:#63768c;--text-bright:#eef5fb;--accent:#4ce3d6;--accent-dim:#4ce3d61f;--accent-border:#4ce3d666;--accent-glow:0 0 24px #4ce3d62e;--success:#4ade80;--danger:#f76e6e;--warning:#f5b942;--font-sans:"IBM Plex Sans", system-ui, sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", monospace;--radius:6px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:14px;line-height:1.5}body:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(80% 50% at 50% -10%,#4ce3d61a,#0000);position:fixed;inset:0}body:after{content:"";transform-origin:bottom;-webkit-mask-composite:source-in;pointer-events:none;z-index:0;background-image:linear-gradient(#4ce3d659 1px,#0000 1px),linear-gradient(90deg,#4ce3d659 1px,#0000 1px);background-size:64px 64px;height:70vh;position:fixed;bottom:0;left:-50%;right:-50%;transform:perspective(380px)rotateX(72deg);-webkit-mask-image:linear-gradient(#0000 20%,#000 100%),linear-gradient(90deg,#0000 25%,#000 38% 62%,#0000 75%);mask-image:linear-gradient(#0000 20%,#000 100%),linear-gradient(90deg,#0000 25%,#000 38% 62%,#0000 75%);-webkit-mask-composite:source-in;mask-composite:intersect}h1,h2,h3,h4{font-family:var(--font-sans);color:var(--text-bright);letter-spacing:-.01em;text-wrap:balance;font-weight:600}h1{font-size:1.4rem}h2{margin-bottom:1rem;font-size:1.15rem}h3,h4{text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);margin:1.5rem 0 .6rem;font-size:.78rem;font-weight:500}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}.login-page{z-index:1;justify-content:center;align-items:center;height:100vh;padding:1.25rem;display:flex;position:relative}.login-page form{background:var(--bg-panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-bright);border-radius:var(--radius);width:100%;max-width:340px;box-shadow:var(--accent-glow), 0 20px 60px #00000080;flex-direction:column;gap:.9rem;padding:2rem;display:flex}.login-page h1{font-family:var(--font-mono);color:var(--accent);letter-spacing:.06em;align-items:center;gap:.5rem;margin-bottom:.4rem;font-size:1rem;display:flex}.login-logo{flex-shrink:0;width:24px;height:24px}.login-page input{font-family:var(--font-sans);border:1px solid var(--border);background:var(--bg-input);color:var(--text-bright);border-radius:4px;padding:.65rem .75rem}.login-page input:focus{border-color:var(--accent-border);box-shadow:0 0 0 3px var(--accent-dim);outline:none}.login-page button{border:1px solid var(--accent-border);background:var(--accent-dim);color:var(--accent);font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;border-radius:4px;margin-top:.4rem;padding:.7rem;font-size:.8rem;font-weight:500;transition:background .15s,box-shadow .15s}.login-page button:hover{box-shadow:var(--accent-glow);background:#4ce3d633}.layout{z-index:1;min-height:100vh;position:relative}.layout nav{border-bottom:1px solid var(--border);background:var(--bg);z-index:20;align-items:center;gap:1.75rem;min-height:56px;padding:0 1.75rem;display:flex;position:sticky;top:0;box-shadow:0 1px #4ce3d626}.layout nav .brand{font-family:var(--font-mono);letter-spacing:.1em;color:var(--accent);align-items:center;gap:.5rem;margin-right:.5rem;font-size:.75rem;font-weight:600;display:flex}.layout nav .brand:hover{color:var(--accent);text-decoration:none}.brand-icon{flex-shrink:0;width:22px;height:22px}.layout nav a,.layout nav .projects-menu-trigger{color:var(--text-dim);line-height:1.5;font-family:var(--font-sans);align-items:center;font-size:.85rem;font-weight:500;display:flex}.layout nav a:hover{color:var(--text-bright);text-decoration:none}.role-badge{border:1px solid var(--border-bright);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--accent);background:var(--accent-dim);border-radius:999px;margin-left:auto;padding:.2rem .7rem;font-size:.7rem}.layout nav button{border:1px solid var(--border-bright);color:var(--text-dim);font-family:var(--font-sans);cursor:pointer;background:0 0;border-radius:4px;padding:.4rem .9rem;font-size:.8rem}.layout nav button:hover{color:var(--text-bright);border-color:var(--text-dim)}.projects-menu{position:relative}.layout nav .projects-menu-trigger{cursor:pointer;background:0 0;border:none;gap:.3rem;padding:0}.layout nav .projects-menu-trigger:hover{color:var(--text-bright);border-color:#0000}.projects-menu-dropdown:before{content:"";height:11px;position:absolute;top:-11px;left:0;right:0}.projects-menu-dropdown{background:var(--bg-raised);border:1px solid var(--border-bright);border-radius:var(--radius);min-width:240px;max-width:calc(100vw - 2rem);max-height:320px;box-shadow:0 16px 40px #00000080, var(--accent-glow);z-index:50;flex-direction:column;gap:.15rem;padding:.4rem;display:flex;position:absolute;top:calc(100% + 10px);left:0;overflow-y:auto}.layout nav .projects-menu-item{text-align:left;width:100%;color:var(--text);font-family:var(--font-mono);cursor:pointer;background:0 0;border:none;border-radius:4px;padding:.5rem .6rem;font-size:.8rem}.layout nav .projects-menu-item:hover{background:var(--accent-dim);color:var(--text-bright)}.projects-menu-dropdown .note,.projects-menu-dropdown .error{margin:0;padding:.4rem .6rem}.layout main{padding:2rem clamp(1rem,4vw,3.5rem)}.workspace{align-items:flex-start;gap:1.5rem;display:flex}.workspace-project{flex:2;min-width:0}.workspace-chat{flex:1;min-width:0;height:calc(100vh - 96px);position:sticky;top:72px}.timeline-panel{background:var(--bg-panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:var(--radius);height:calc(100vh - 96px);overflow:hidden}.timeline-frame{border:none;width:100%;height:100%;display:block}.project-detail,.diff-preview,.backtest-progress,.results-panel,.backtest-run{background:var(--bg-panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1.25rem;padding:1.5rem}.project-detail-header{justify-content:space-between;align-items:center;gap:1rem;margin-bottom:.5rem;display:flex}.project-detail-header h2{margin:0}.reset-button{border-color:var(--border-bright);color:var(--text-dim);background:0 0}.reset-button.qc-modified{color:var(--warning);border-color:var(--warning);background:#f5b9421a;animation:2.4s ease-in-out infinite reset-pulse}.reset-button.qc-modified:hover:not(:disabled){color:var(--warning);border-color:var(--warning);background:#f5b94233;animation:none}@keyframes reset-pulse{0%,to{box-shadow:0 0 #f5b94252}50%{box-shadow:0 0 0 5px #f5b94200}}@media (prefers-reduced-motion:reduce){.reset-button.qc-modified{animation:none}}.reset-button:hover:not(:disabled){color:var(--danger);border-color:var(--danger);box-shadow:none;background:0 0}.backtest-run{border-color:var(--border-bright)}.backtest-run .backtest-progress,.backtest-run .results-panel{background:0 0;border:none;margin:.75rem 0 0;padding:0}.backtest-run-meta{flex-wrap:wrap;align-items:center;gap:.75rem 1.25rem;font-size:.85rem;display:flex}.backtest-run-period{font-family:var(--font-mono);color:var(--text)}.backtest-run-meta details{font-family:var(--font-mono);font-size:.8rem}.backtest-run-meta summary{cursor:pointer;color:var(--text-dim)}.backtest-run-meta summary:hover{color:var(--accent)}.backtest-run-meta ul{margin-top:.4rem;list-style:none}.backtest-run-meta li{padding:.2rem 0}.backtest-run-meta s{color:var(--danger);opacity:.7}.backtest-run-meta strong{color:var(--success)}.table-scroll{margin:.25rem 0 1rem;overflow-x:auto}.table-scroll table{margin:0}table{border-collapse:collapse;width:100%;min-width:420px}th{text-align:left;font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);border-bottom:1px solid var(--border-bright);padding:.5rem .75rem;font-size:.7rem}td{font-family:var(--font-mono);font-variant-numeric:tabular-nums;border-bottom:1px solid var(--border);color:var(--text);padding:.5rem .75rem;font-size:.82rem}tr:hover td{background:#4ce3d60a}input:not(.login-page input){font-family:var(--font-mono);background:var(--bg-input);border:1px solid var(--border);color:var(--text-bright);border-radius:4px;width:100%;padding:.4rem .6rem;font-size:.82rem}input:focus{border-color:var(--accent-border);box-shadow:0 0 0 3px var(--accent-dim);outline:none}input[type=date]{width:auto;margin-right:.6rem}.locked-input{cursor:not-allowed;opacity:.6;color:var(--text-dim)!important;background:var(--bg-raised)!important}.locked-input:focus{box-shadow:none!important;border-color:var(--border)!important}.project-description{color:var(--text-dim);margin:-.5rem 0 1.25rem;font-size:.85rem}button{font-family:var(--font-sans);border:1px solid var(--accent-border);background:var(--accent-dim);color:var(--accent);cursor:pointer;border-radius:4px;padding:.55rem 1.1rem;font-size:.82rem;font-weight:500;transition:background .15s,box-shadow .15s}button:hover:not(:disabled){box-shadow:var(--accent-glow);background:#4ce3d633}button:disabled{opacity:.4;cursor:not-allowed}.error{color:var(--danger);font-family:var(--font-mono);font-size:.85rem}.note{color:var(--text-dim);font-size:.8rem;font-style:italic}.diff-preview{border-color:var(--accent-border);box-shadow:var(--accent-glow)}.diff-preview .diff-period{font-family:var(--font-mono);border-bottom:1px dashed var(--border);margin-bottom:.75rem;padding-bottom:.75rem;font-size:.85rem}.diff-preview .diff-period strong{color:var(--text-bright)}.diff-preview .diff-period-note{color:var(--warning);font-family:var(--font-sans)}.diff-preview ul{font-family:var(--font-mono);font-size:.85rem;list-style:none}.diff-preview li{border-bottom:1px dashed var(--border);padding:.3rem 0}.diff-preview s{color:var(--danger);opacity:.7}.diff-preview strong{color:var(--success)}.progress-track{background:var(--bg-input);border:1px solid var(--border);border-radius:999px;height:8px;margin:.75rem 0 .5rem;overflow:hidden}.progress-fill{background:linear-gradient(90deg, var(--accent), #7ef3e8);height:100%;transition:width .6s;position:relative;overflow:hidden;box-shadow:0 0 12px #4ce3d699}.progress-fill:not(.done):not(.failed):after{content:"";background:linear-gradient(90deg,#0000,#ffffff80,#0000);animation:1.4s linear infinite scan;position:absolute;inset:0}.progress-fill.done{background:linear-gradient(90deg, var(--success), #a3f7bf);box-shadow:0 0 12px #4ade8080}.progress-fill.failed{background:var(--danger);box-shadow:none}@keyframes scan{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media (prefers-reduced-motion:reduce){.progress-fill:not(.done):not(.failed):after{animation:none}.progress-fill{transition:none}}.progress-label{font-family:var(--font-mono);color:var(--text-dim);text-transform:uppercase;letter-spacing:.06em;justify-content:space-between;font-size:.75rem;display:flex}.chatbot{background:var(--bg-panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;height:100%;margin-bottom:0;padding:1.25rem 1.5rem 0;display:flex;overflow:hidden}.chatbot h2{flex-shrink:0;margin-bottom:.75rem}.chat-messages{flex-direction:column;flex:1;gap:.9rem;min-height:0;padding-bottom:1rem;display:flex;overflow-y:auto}.chat-empty{color:var(--text-dim);text-align:center;margin:auto;font-size:.85rem}.chat-thread{flex-direction:column;gap:.5rem;display:flex}.chat-row{display:flex}.chat-row.user{justify-content:flex-end}.chat-row.assistant{justify-content:flex-start}.chat-bubble{border-radius:12px;max-width:72%;padding:.7rem .95rem;line-height:1.6}.chat-row.user .chat-bubble{background:var(--accent-dim);border:1px solid var(--accent-border);color:var(--text-bright);border-bottom-right-radius:3px}.chat-row.assistant .chat-bubble{background:var(--bg-raised);border:1px solid var(--border);max-width:92%;color:var(--text);border-bottom-left-radius:3px}.chat-bubble .error{margin:0}.chat-bubble .answer{white-space:pre-wrap}.chat-bubble .chat-detail{margin:.5rem 0 0}.chat-bubble .chat-table-scroll{max-height:280px;margin:.6rem 0 0;overflow-y:auto}.chat-bubble .chat-table-scroll table{min-width:320px}.chat-bubble .chat-table-scroll th{background:var(--bg-raised);position:sticky;top:0}.chat-bubble .chat-detail summary{cursor:pointer;color:var(--text-dim);font-size:.75rem;font-family:var(--font-mono);margin-bottom:.4rem}.chat-bubble .chat-detail summary:hover{color:var(--accent)}.chat-bubble .sql{font-family:var(--font-mono);background:var(--bg-input);border:1px solid var(--border);color:var(--text);white-space:pre-wrap;border-radius:4px;margin-bottom:.4rem;padding:.6rem;font-size:.75rem;overflow-x:auto}.poodle-stage{border-bottom:1px dashed var(--border);flex-shrink:0;height:34px;margin-bottom:.4rem;position:relative}.poodle-stage .poodle-walker{width:44px;animation:7s ease-in-out infinite poodle-walk;position:absolute;bottom:2px;left:0}.poodle-label{color:var(--text-dim);font-family:var(--font-mono);font-size:.75rem;position:absolute;top:50%;right:0;transform:translateY(-50%)}.poodle-fluff{fill:#f0c040}.poodle-ear{fill:#d9a62e}.poodle-eye,.poodle-nose{fill:var(--bg)}.poodle-legs rect{fill:#d9a62e}.poodle-leg-a{transform-origin:50% 0;animation:.42s ease-in-out infinite alternate poodle-leg-swing}.poodle-leg-b{transform-origin:50% 0;animation:.42s ease-in-out infinite alternate-reverse poodle-leg-swing}.poodle-body-group{animation:.42s ease-in-out infinite alternate poodle-bob}.poodle-tail-group{transform-origin:68% 55%;animation:.5s ease-in-out infinite alternate poodle-tail-wag}@keyframes poodle-walk{0%{left:0;transform:scaleX(1)}47%{left:calc(100% - 44px);transform:scaleX(1)}50%{left:calc(100% - 44px);transform:scaleX(-1)}97%{left:0;transform:scaleX(-1)}to{left:0;transform:scaleX(1)}}@keyframes poodle-leg-swing{0%{transform:rotate(-16deg)}to{transform:rotate(16deg)}}@keyframes poodle-bob{0%{transform:translateY(0)}to{transform:translateY(-1px)}}@keyframes poodle-tail-wag{0%{transform:rotate(-8deg)}to{transform:rotate(10deg)}}@media (prefers-reduced-motion:reduce){.poodle-stage .poodle-walker,.poodle-leg-a,.poodle-leg-b,.poodle-body-group,.poodle-tail-group{animation:none}}.chatbot form{flex-shrink:0;gap:.6rem;margin-bottom:1.25rem;display:flex}.chatbot form button{flex-shrink:0}.audit-log{background:var(--bg-panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:var(--radius);padding:1.5rem}.audit-search{max-width:360px;margin-bottom:1rem}.audit-log-header{align-items:center;gap:1rem;margin-bottom:.5rem;display:flex}.audit-log-header h2{margin:0}.back-button{border-color:var(--border-bright);color:var(--text-dim);background:0 0}.back-button:hover{color:var(--text-bright);box-shadow:none;background:0 0}.audit-detail{font-family:var(--font-mono);margin-top:.4rem;font-size:.78rem}.audit-detail summary{cursor:pointer;color:var(--text-dim)}.audit-detail summary:hover{color:var(--accent)}.audit-detail ul{margin-top:.3rem;list-style:none}.audit-detail li{padding:.15rem 0}.audit-detail s{color:var(--danger);opacity:.7}.audit-detail strong{color:var(--success)}.audit-detail .sql{background:var(--bg-input);border:1px solid var(--border);white-space:pre-wrap;border-radius:4px;margin:.3rem 0;padding:.5rem}.date-range{flex-wrap:wrap;gap:.6rem;margin-bottom:1rem;display:flex}.actions{margin-bottom:.5rem}.param-name{cursor:help;border-bottom:1px dashed var(--text-dim)}.param-tooltip{z-index:100;background:var(--bg-raised);border:1px solid var(--accent-border);border-radius:var(--radius);width:300px;box-shadow:var(--accent-glow), 0 16px 40px #0000008c;pointer-events:none;font-family:var(--font-sans);color:var(--text);flex-direction:column;gap:.4rem;padding:.85rem 1rem;font-size:.78rem;line-height:1.55;display:flex;position:fixed}.param-tooltip .tt-title{font-family:var(--font-mono);color:var(--accent);letter-spacing:.02em;font-size:.75rem;font-weight:600}.param-tooltip .tt-example{color:var(--text-dim)}.param-tooltip .tt-example:before{content:"示例："}@media (width<=720px){.param-tooltip{display:none}}.stock-pool{margin-bottom:1.25rem}.pool-grid{flex-wrap:wrap;gap:.5rem;margin-bottom:.85rem;display:flex}.pool-chip{border:1px solid var(--border-bright);background:var(--bg-raised);color:var(--text-dim);font-family:var(--font-mono);cursor:default;border-radius:999px;align-items:center;gap:.45rem;padding:.45rem .7rem;font-size:.78rem;transition:border-color .15s,background .15s,opacity .15s;display:flex}.pool-chip.active{color:var(--text-bright);border-color:var(--accent-border);background:var(--accent-dim)}.pool-chip.inactive{opacity:1;color:var(--text-dim);border-color:var(--border-bright);background:0 0;border-style:dashed;text-decoration:none}.pool-chip.inactive .pool-symbol{text-decoration:line-through}.pool-chip.inactive .pool-action{color:var(--text-dim)}.pool-chip.inactive:hover{color:var(--text-bright);border-color:var(--accent-border);border-style:solid}.pool-chip.inactive:hover .pool-action{color:var(--accent)}.pool-chip.locked{opacity:.4;background:var(--bg-raised)}.pool-chip.removable{cursor:pointer}.pool-chip.removable:hover{border-color:var(--accent-border);box-shadow:var(--accent-glow)}.pool-chip:disabled{cursor:default}.pool-symbol{letter-spacing:.02em;font-weight:600}.pool-reason{text-transform:uppercase;letter-spacing:.06em;color:var(--text-dim);font-size:.62rem}.pool-chip.active .pool-reason{color:var(--accent)}.pool-action{color:var(--accent);font-weight:700}.pool-add{gap:.6rem;max-width:320px;display:flex}.pool-add input{flex:1}.pool-tooltip{z-index:100;background:var(--bg-raised);border:1px solid var(--accent-border);border-radius:var(--radius);width:280px;box-shadow:var(--accent-glow), 0 16px 40px #0000008c;pointer-events:none;font-family:var(--font-sans);color:var(--text);white-space:normal;text-transform:none;letter-spacing:normal;flex-direction:column;gap:.4rem;padding:.85rem 1rem;font-size:.78rem;line-height:1.55;display:flex;position:fixed}.pool-tooltip .tt-title{font-family:var(--font-mono);color:var(--accent);letter-spacing:.02em;font-size:.75rem;font-weight:600}.pool-tooltip .tt-hint{color:var(--text-dim);font-size:.72rem}@media (width<=720px){.pool-tooltip{display:none}}.date-range-slider{margin-bottom:1rem}.drs-readout{font-family:var(--font-mono);color:var(--text-bright);font-variant-numeric:tabular-nums;justify-content:space-between;margin-bottom:.6rem;font-size:.78rem;display:flex}.drs-days{color:var(--accent)}.drs-track{height:32px;position:relative}.drs-track:before{content:"";background:var(--bg-input);border:1px solid var(--border);border-radius:999px;height:4px;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.drs-highlight{background:linear-gradient(90deg, var(--accent), #7ef3e8);border-radius:999px;height:4px;position:absolute;top:50%;transform:translateY(-50%);box-shadow:0 0 10px #4ce3d680}.drs-track input[type=range]{pointer-events:none;appearance:none;background:0 0;width:100%;height:18px;margin:0;position:absolute;top:50%;left:0;right:0;transform:translateY(-50%)}.drs-track input[type=range]::-webkit-slider-runnable-track{background:0 0;height:4px}.drs-track input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;pointer-events:auto;background:var(--text-bright);border:3px solid var(--accent);width:18px;height:18px;box-shadow:var(--accent-glow);cursor:pointer;border-radius:50%;margin-top:-7px}.drs-track input[type=range]::-moz-range-track{background:0 0}.drs-track input[type=range]::-moz-range-thumb{pointer-events:auto;background:var(--text-bright);border:3px solid var(--accent);width:18px;height:18px;box-shadow:var(--accent-glow);cursor:pointer;border-radius:50%}@media (width<=720px){body{background-size:32px 32px}.layout main{padding:1.25rem 1rem}.layout nav{flex-wrap:wrap;gap:1rem;padding:.75rem 1rem}.layout nav .brand{margin-right:0}.layout nav .brand-text{display:none}.role-badge{order:3;margin-left:0}.layout nav a{font-size:.8rem}.project-detail,.diff-preview,.backtest-progress,.results-panel{padding:1.1rem}.login-page form{padding:1.5rem}.date-range{flex-direction:column}.date-range input[type=date]{width:100%;margin-right:0}.workspace{flex-direction:column}.workspace-project,.workspace-chat{flex:none;width:100%}.workspace-chat{height:70vh;margin-top:1.25rem;position:static}.chatbot{padding:1rem 1rem 0}.chat-bubble{max-width:88%}.chatbot form{flex-direction:row}button,.login-page input,input:not(.login-page input){min-height:44px}.layout nav button{min-height:38px}}.manual-page{background:var(--bg-panel);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);border-radius:var(--radius);width:100%;padding:1.5rem}.manual-body{max-width:74ch}.manual-intro{margin-bottom:1.25rem}.manual-toc{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:.4rem;margin-bottom:.5rem;padding-bottom:1.1rem;display:flex}.manual-toc-item{background:var(--bg-raised);border:1px solid var(--border-bright);color:var(--text-dim);font-size:.75rem;font-family:var(--font-mono);cursor:pointer;border-radius:999px;padding:.35rem .8rem;transition:color .15s,border-color .15s,background .15s}.manual-toc-item:hover{color:var(--text-bright);border-color:var(--accent-border);box-shadow:none}.manual-toc-item.active{color:var(--accent);border-color:var(--accent-border);background:var(--accent-dim)}.manual-section{border-bottom:1px solid var(--border);padding:1.5rem 0;scroll-margin-top:84px}.manual-section:last-child{border-bottom:none}.manual-section h3{color:var(--accent);font-family:var(--font-mono);letter-spacing:.02em;margin:0 0 .9rem;font-size:.95rem}.manual-section h4{color:var(--text-bright);margin:1.2rem 0 .45rem;font-size:.85rem}.manual-section p{margin:0 0 .75rem;line-height:1.75}.manual-section ul{margin:0 0 .85rem;padding-left:1.3rem;line-height:1.75}.manual-section li{margin-bottom:.3rem}.manual-section strong{color:var(--text-bright)}.manual-section code{font-family:var(--font-mono);background:var(--bg-input);border:1px solid var(--border);color:var(--accent);border-radius:4px;padding:.1rem .35rem;font-size:.85em}.man-callout{background:var(--bg-raised);border:1px solid var(--border-bright);border-left:3px solid var(--accent);border-radius:var(--radius);margin:.9rem 0;padding:.8rem 1rem;font-size:.85rem;line-height:1.7}.man-callout.man-warn{border-left-color:var(--warning);background:#f5b94212}.man-table-wrap{margin:.9rem 0;overflow-x:auto}.man-table{border-collapse:collapse;width:100%;font-size:.82rem}.man-table th,.man-table td{border:1px solid var(--border);text-align:left;vertical-align:top;padding:.5rem .7rem;line-height:1.6}.man-table th{background:var(--bg-raised);color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;font-size:.7rem}@media (width<=720px){.manual-page{padding:1rem}.manual-toc-item{padding:.3rem .6rem;font-size:.7rem}}.layout nav .lang-toggle{min-width:40px;font-family:var(--font-mono);letter-spacing:.04em;color:var(--accent);border-color:var(--accent-border);background:var(--accent-dim);padding:.4rem .55rem;font-size:.75rem}.layout nav .lang-toggle:hover{color:var(--accent);border-color:var(--accent);background:#4ce3d633}.login-page .link-button{color:var(--text-dim);font-family:var(--font-sans);text-transform:none;letter-spacing:normal;cursor:pointer;background:0 0;border:none;margin-top:.1rem;padding:.35rem;font-size:.8rem}.login-page .link-button:hover{color:var(--accent);box-shadow:none;background:0 0}.login-page .note{color:var(--text-dim);margin:0;font-size:.8rem;line-height:1.65}.modal-backdrop{z-index:200;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#04080eb8;justify-content:center;align-items:center;padding:1.25rem;display:flex;position:fixed;inset:0}.modal{background:var(--bg-raised);border:1px solid var(--border-bright);border-radius:var(--radius);width:100%;max-width:460px;box-shadow:var(--accent-glow), 0 24px 70px #0009;padding:1.5rem}.modal h3{text-transform:none;letter-spacing:normal;color:var(--text-bright);margin:0 0 .75rem;font-size:.95rem}.modal p{margin:0 0 1.25rem;font-size:.86rem;line-height:1.7}.modal-note{color:var(--text-dim);margin:1rem 0 0;font-size:.75rem;line-height:1.6}.modal-actions{flex-direction:column;gap:.5rem;display:flex}.modal-actions button{width:100%;font-family:var(--font-sans);cursor:pointer;border:1px solid var(--border-bright);color:var(--text);background:0 0;border-radius:4px;padding:.6rem .9rem;font-size:.85rem;transition:border-color .15s,color .15s,background .15s}.modal-actions button:disabled{opacity:.55;cursor:default}.modal-keep:hover:not(:disabled){border-color:var(--accent-border);color:var(--accent);background:var(--accent-dim)}.modal-discard:hover:not(:disabled){border-color:var(--warning);color:var(--warning);background:#f5b9421f}.modal-cancel{color:var(--text-dim)}.modal-cancel:hover:not(:disabled){color:var(--text-bright);border-color:var(--text-dim)}.workspace-full{display:block}.workspace-full .workspace-project{flex:none;width:100%}.floating-panel{z-index:60;background:var(--bg-panel);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border-bright);border-radius:var(--radius);box-shadow:var(--accent-glow), 0 20px 60px #0000008c;flex-direction:column;transition:top .22s,left .22s,width .22s,height .22s;display:flex;position:fixed;overflow:hidden}.floating-panel.dragging{transition:none}@media (prefers-reduced-motion:reduce){.floating-panel{transition:none}}.fp-header{background:var(--bg-raised);border-bottom:1px solid var(--border);cursor:move;-webkit-user-select:none;user-select:none;touch-action:none;flex-shrink:0;justify-content:space-between;align-items:center;gap:.5rem;padding:.5rem .4rem .5rem .85rem;display:flex}.floating-panel.minimized .fp-header{border-bottom:none}.fp-title{font-family:var(--font-mono);letter-spacing:.04em;color:var(--accent);font-size:.78rem;font-weight:600}.fp-btn{border:1px solid var(--border-bright);width:26px;height:22px;color:var(--text-dim);cursor:pointer;background:0 0;border-radius:3px;padding:0;font-size:.7rem;line-height:1}.fp-btn:hover{color:var(--accent);border-color:var(--accent-border)}.fp-body{flex:1;min-height:0;display:flex}.fp-body[hidden]{display:none}.fp-body>*{flex:1;min-width:0}.fp-resize{cursor:nwse-resize;touch-action:none;background:linear-gradient(135deg, transparent 45%, var(--border-bright) 45%, var(--border-bright) 55%, transparent 55%), linear-gradient(135deg, transparent 70%, var(--border-bright) 70%, var(--border-bright) 80%, transparent 80%);width:16px;height:16px;position:absolute;bottom:0;right:0}.chatbot-embedded{-webkit-backdrop-filter:none;backdrop-filter:none;height:100%;box-shadow:none;background:0 0;border:none;border-radius:0;padding:.85rem}.role-avatar{border:1px solid var(--accent-border);background:var(--accent-dim);width:30px;height:30px;color:var(--accent);cursor:default;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;display:inline-flex}.role-avatar.role-viewer{border-color:var(--border-bright);background:var(--bg-raised);color:var(--text-dim)}.reports-frame-wrap{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-panel);height:calc(100vh - 120px);min-height:520px;overflow:hidden}.reports-frame{border:none;width:100%;height:100%;display:block}@media (width<=720px){.reports-frame-wrap{height:calc(100vh - 160px);min-height:420px}}.quarter-countdown{border:1px solid var(--border-bright);background:var(--bg-raised);cursor:default;white-space:nowrap;border-radius:999px;align-items:baseline;gap:.45rem;margin-left:auto;padding:.25rem .65rem;display:inline-flex}.qc-label{color:var(--text-dim);font-size:.68rem}.qc-time{font-family:var(--font-mono);font-variant-numeric:tabular-nums;color:var(--accent);letter-spacing:.02em;font-size:.78rem}.qc-time em{color:var(--text-dim);margin:0 .12rem;font-style:normal}@media (width<=900px){.quarter-countdown{display:none}}.timeline-panel{background:#06090f}
