:root{--primary:#1976d2;--success:#00c853;--danger:#e53935;--warning:#ff9800;--bg-color:#fff;--text-color:#000;--card-bg:#f8f9fa;--header-bg:#282c34;--input-bg:#fff;--input-border:#ddd;--input-text:#000}body.dark{--bg-color:#121212;--text-color:#fff;--card-bg:#1e1e1e;--header-bg:#1f1f1f;--input-bg:#2d2d2d;--input-border:#444;--input-text:#fff}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:var(--bg-color);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;overflow-x:hidden}*,:after,:before{box-sizing:border-box}button,input,select,textarea{font:inherit}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.login-container{align-items:center;background:#f5f7fb;display:flex;justify-content:center;min-height:100vh;padding:20px}.login-card{background:var(--card-bg);border-radius:18px;box-shadow:0 10px 30px #00000014;box-sizing:border-box;max-width:420px;padding:35px 25px;width:100%}.login-header{margin-bottom:35px;text-align:center}.login-header h2{margin:0}.login-subtitle{color:#777;font-size:14px;margin-top:10px}.login-input{background-color:var(--input-bg);border:1px solid var(--input-border);border-radius:10px;box-sizing:border-box;color:var(--input-text);font-size:16px;height:52px;margin-bottom:15px;padding:0 15px;width:100%}.login-input::placeholder{color:#888}.login-input.password{margin-bottom:20px}.login-button{background:#1976d2;border:none;border-radius:10px;color:#fff;cursor:pointer;font-size:17px;font-weight:700;height:54px;width:100%}.login-footer{margin-top:20px;text-align:center}.login-link{color:var(--primary);font-size:15px;text-decoration:none}.page{padding:24px clamp(16px,3vw,48px) calc(96px + env(safe-area-inset-bottom))}.mobile-layout,.page{box-sizing:border-box}.mobile-layout{margin:0 auto;width:min(100%,1180px)}.page-header{margin-bottom:clamp(20px,4vw,36px)}.page-title{font-size:clamp(24px,3vw,40px);font-weight:800;margin:0}.page-sub-title{color:#666;font-size:clamp(14px,1.8vw,20px);margin-top:8px}.header-top{align-items:flex-start;display:flex;gap:16px;justify-content:space-between}.header-right{align-items:center;display:flex;gap:10px}@media (min-width:600px){.page{padding-top:32px}}.dash-public-link{margin-top:4px;text-align:right}.dash-public-link a{background:var(--input-bg);border:1px solid var(--input-border);border-radius:8px;color:var(--input-text);display:inline-block;font-size:13px;padding:7px 14px;text-decoration:none}.dash-public-link a:hover{filter:brightness(1.15)}.page{background:var(--bg-color);display:flex;justify-content:center;min-height:100dvh}.card{background:var(--card-bg);border-radius:clamp(16px,2vw,26px);box-shadow:0 8px 20px #00000014;margin-bottom:clamp(14px,2vw,24px);padding:clamp(20px,2.5vw,34px)}.info-title{color:#777;font-size:clamp(14px,1.6vw,19px);margin-bottom:8px}.info-value{color:var(--text-color);font-size:clamp(24px,3vw,40px);font-weight:700;overflow-wrap:anywhere}.info-sub{color:#888;font-size:13px;margin-top:8px;overflow-x:auto}.holding-name{font-size:20px;font-weight:700}.holding-code{color:#777;margin-bottom:15px;margin-top:5px}.holding-grid,.holding-header,.operation-header,.operation-row{align-items:center;display:flex;gap:12px;justify-content:space-between}.holding-grid{margin-top:15px}.holding-label{color:#888;font-size:13px}.holding-value{font-weight:700;margin-top:5px}.profit-badge{border-radius:999px;font-size:13px;font-weight:700;padding:6px 9px}.positive-text,.profit-badge.positive{color:#b42318}.negative-text,.profit-badge.negative{color:#175cd3}.profit-badge.positive{background:#fef3f2}.profit-badge.negative{background:#eff8ff}.operation-state{font-size:22px;font-weight:700}.operation-row{border-top:1px solid #edf0f4;font-size:14px;padding:13px 0}.operation-alert{background:#fef3f2;border-radius:10px;color:#b42318;font-size:13px;margin-top:12px;padding:10px}.check-row,.empty-state{color:#667085;font-size:14px;line-height:1.5;margin-top:12px}.text-action{background:#0000;border:0;color:#155eef;cursor:pointer;font-weight:700;padding:0}@media (max-width:599px){.metric-grid{grid-template-columns:1fr}}@media (min-width:600px){.mobile-layout{grid-gap:0 clamp(14px,2vw,24px);display:grid;gap:0 clamp(14px,2vw,24px);grid-template-columns:repeat(2,minmax(0,1fr))}.mobile-layout>.page-header{grid-column:1/-1}}@media (min-width:980px){.mobile-layout{grid-template-columns:repeat(3,minmax(0,1fr))}.mobile-layout>.card:first-of-type{grid-column:1/-1}}.btn-primary{background:var(--primary)}.btn-danger,.btn-primary{border:none;border-radius:10px;color:#fff;cursor:pointer;font-size:17px;font-weight:700;height:54px;margin-top:15px;width:100%}.btn-danger{background:var(--danger)}.bottom-nav{background:var(--card-bg);border-radius:18px 18px 0 0;border-top:1px solid #ddd;bottom:0;box-shadow:0 -4px 15px #00000014;display:flex;height:clamp(68px,9vw,86px);left:50%;max-width:1180px;padding-bottom:env(safe-area-inset-bottom);position:fixed;transform:translateX(-50%);width:calc(100% - 32px);z-index:1000}.bottom-item{align-items:center;background:#0000;border:0;color:#777;cursor:pointer;display:flex;flex:1 1;flex-direction:column;font:inherit;justify-content:center}.bottom-item.active{color:#1976d2;font-weight:700}.bottom-icon{font-size:clamp(22px,3vw,30px);line-height:1}.bottom-text{font-size:clamp(12px,1.8vw,16px);margin-top:5px}.bottom-item:focus-visible{outline:2px solid #1976d2;outline-offset:-3px}.trade-log-panel{background:var(--card-bg);border-radius:clamp(16px,2vw,26px);box-shadow:0 8px 20px #00000014;box-sizing:border-box;color:var(--text-color);grid-column:1/-1;margin-bottom:0;min-height:calc(100dvh - 230px);padding:clamp(20px,2.5vw,34px)}.trade-log-heading{align-items:flex-start;display:flex;gap:16px;justify-content:space-between}.trade-log-actions{align-items:center;display:flex;flex:none;gap:8px}.trade-log-source{align-items:center;background:#f2f4f7;border-radius:999px;color:#667085;display:inline-flex;flex:none;font-size:12px;font-weight:700;gap:7px;padding:7px 10px}.trade-log-source.running{background:#ecfdf3;color:#027a48}.trade-log-source.stopped{background:#fef3f2;color:#b42318}.trade-log-dot{background:currentColor;border-radius:50%;height:7px;width:7px}.trade-log-refresh{background:#155eef;border:1px solid #155eef;border-radius:9px;color:#fff;cursor:pointer;font-size:12px;font-weight:700;padding:8px 11px}.trade-log-refresh:disabled{cursor:wait;opacity:.65}.trade-log-refresh-message{background:#f2f4f7;border-radius:9px;color:#475467;font-size:12px;margin-top:14px;padding:9px 12px}.trade-log-refresh-message.has-new{background:#eff4ff;color:#175cd3;font-weight:700}.trade-log-latest{grid-gap:10px;display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr));margin:18px 0}.trade-log-latest>div{background:#f9fafb;border:1px solid #e4e7ec;border-radius:12px;min-width:0;padding:12px}.trade-log-latest small,.trade-log-latest span{color:#667085;display:block;font-size:11px}.trade-log-latest strong{display:block;font-size:14px;margin:5px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trade-log-tabs{display:flex;gap:7px;overflow-x:auto;padding-bottom:10px}.trade-log-tabs button{background:#0000;border:1px solid #d0d5dd;border-radius:999px;color:var(--text-color);cursor:pointer;flex:none;font-size:12px;padding:7px 11px}.trade-log-tabs button.active{background:#eff4ff;border-color:#155eef;color:#155eef;font-weight:700}.trade-log-tabs button span{margin-left:5px;opacity:.7}.trade-log-list{border-top:1px solid #eaecf0}.trade-log-event{border-bottom:1px solid #eaecf0}.trade-log-event.new{background:linear-gradient(90deg,#eff8ff,#eff8ff00 72%)}.trade-log-event summary{grid-gap:8px;align-items:center;cursor:pointer;display:grid;gap:8px;grid-template-columns:62px 48px minmax(0,1fr) auto;list-style:none;padding:12px 2px}.trade-log-event summary::-webkit-details-marker{display:none}.trade-log-event time{font-feature-settings:"tnum";color:#667085;font-size:12px;font-variant-numeric:tabular-nums}.trade-log-category{background:#f2f4f7;border-radius:6px;color:#475467;font-size:11px;font-weight:700;justify-self:start;padding:4px 6px}.trade-log-event.buy .trade-log-category{background:#ecfdf3;color:#027a48}.trade-log-event.sell .trade-log-category{background:#fff4ed;color:#b93815}.trade-log-event.error .trade-log-category,.trade-log-event.risk .trade-log-category{background:#fef3f2;color:#b42318}.trade-log-event-title{align-items:flex-start;display:flex;flex-direction:column;gap:3px;min-width:0}.trade-log-event-title strong{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trade-log-event-title small{color:#667085;font-size:11px}.trade-log-event-title small em{font-feature-settings:"tnum";color:#98a2b3;font-style:normal;font-variant-numeric:tabular-nums;margin-left:4px}.trade-log-repeat{background:#f2f4f7;border-radius:999px;color:#475467;font-size:11px;font-weight:700;padding:3px 6px}.trade-log-new-badge{background:#1570ef;border-radius:999px;color:#fff;font-size:10px;font-weight:800;letter-spacing:.04em;padding:3px 7px}.trade-log-new-divider{align-items:center;color:#175cd3;display:flex;font-size:11px;font-weight:700;gap:10px;padding:9px 0}.trade-log-new-divider:after,.trade-log-new-divider:before{background:#84caff;content:"";flex:1 1;height:1px}.trade-log-detail{background:#f9fafb;border:1px solid #d0d5dd;border-radius:8px;color:#344054;font-size:12px;line-height:1.55;margin:0 0 12px 118px;overflow-wrap:anywhere;padding:12px}.trade-log-raw{margin-top:9px}.trade-log-raw>summary{color:#667085;display:block;font-size:11px;font-weight:700;padding:0}.trade-log-raw code{background:#101828;border-radius:7px;color:#d0d5dd;display:block;font:11px/1.5 Consolas,monospace;margin-top:7px;overflow-wrap:anywhere;padding:9px}.trade-log-empty{color:#667085;font-size:13px;padding:24px 0;text-align:center}.trade-log-footer{color:#98a2b3;font-size:11px;margin-top:10px;text-align:right}@media (max-width:599px){.trade-log-panel{border-radius:16px;min-height:calc(100dvh - 200px);padding:18px 16px}.trade-log-heading{align-items:stretch;flex-direction:column}.trade-log-actions{justify-content:space-between}.trade-log-latest{grid-template-columns:1fr}.trade-log-latest>div{grid-gap:8px;align-items:center;display:grid;gap:8px;grid-template-columns:72px minmax(0,1fr) auto}.trade-log-latest strong{margin:0}.trade-log-event summary{gap:6px;grid-template-columns:54px 42px minmax(0,1fr) auto}.trade-log-detail{margin-left:0}}.switch{display:inline-block;height:28px;position:relative;width:52px}.switch input{display:none}.slider{background:#ccc;border-radius:20px;cursor:pointer;inset:0}.slider,.slider:before{position:absolute;transition:.25s}.slider:before{background:#fff;border-radius:50%;content:"";height:22px;left:3px;top:3px;width:22px}.switch input:checked+.slider{background:#1976d2}.switch input:checked+.slider:before{transform:translateX(24px)}.ops-summary{display:flex;gap:24px}.ops-summary>div{display:flex;flex-direction:column;gap:4px}.ops-summary span{color:#8b93a3;font-size:12px}.ops-summary strong{font-size:18px}.ops-empty{color:#8b93a3;padding:8px 0}.ops-item>summary{align-items:center;cursor:pointer;display:flex;gap:10px;list-style:none}.ops-item>summary::-webkit-details-marker{display:none}.ops-badge{border-radius:999px;font-size:12px;padding:2px 8px;white-space:nowrap}.ops-badge.ok{background:#027a482e;color:#34d399}.ops-badge.fail{background:#b423182e;color:#f87171}.ops-item time{color:#c3c9d4;font-size:13px}.ops-trigger{color:#8b93a3;font-size:12px;margin-left:auto}.ops-detail{grid-gap:8px;border-top:1px solid var(--input-border);display:grid;gap:8px;margin-top:14px;padding-top:12px}.ops-row{display:flex;font-size:13px;justify-content:space-between}.ops-row span{color:#8b93a3}.ops-block{margin-top:6px}.ops-block-title{color:#c3c9d4;cursor:pointer;font-size:13px;font-weight:600;margin-bottom:6px}.ops-block code{background:#ffffff0a;border-radius:8px;color:#9ca3af;display:block;font-size:12px;line-height:1.6;max-height:260px;overflow:auto;padding:10px;white-space:pre-wrap;word-break:break-word}.trash-page{-webkit-tap-highlight-color:transparent;--can-w:90px;--can-h:calc(var(--can-w)*1.2054);--lid-w:calc(var(--can-w)*1.005);--lid-nudge:-1px;--lid-top:calc(var(--can-w)*0.0071 + var(--lid-nudge));--lid-shift:calc(var(--can-w)*-0.16);--lid-lift:calc(var(--can-w)*-0.347);--open-angle:-40deg;background:#1d2023;color:#d7d3cb;min-height:100dvh;overflow:hidden;position:relative}.trash-can{cursor:pointer;height:var(--can-h);left:50%;perspective:calc(var(--can-w)*3);position:absolute;top:50%;transform:translate(-50%,-50%);-webkit-user-select:none;user-select:none;width:var(--can-w)}.trash-can:focus{outline:none}.trash-can:focus-visible{border-radius:6px;outline:2px solid #6f7d86;outline-offset:10px}.trash-body{display:block;position:relative;width:var(--can-w);z-index:1}.trash-lid{display:block;left:50%;margin-left:calc(var(--lid-w)/-2);position:absolute;top:var(--lid-top);transform-origin:50% 30%;transition:transform .7s cubic-bezier(.4,0,.3,1);width:var(--lid-w);z-index:2}.trash-can-open .trash-lid{transform:translate3d(var(--lid-shift),var(--lid-lift),0) rotateX(var(--open-angle)) rotate(-13deg);transition:transform .9s cubic-bezier(.34,.02,.2,1)}.trash-floor{background:radial-gradient(ellipse at center,#06080ad9 0,#080a0c9e 26%,#0a0c0e52 48%,#0c0e101f 66%,#0e101200 80%);border-radius:50%;bottom:calc(var(--can-w)*-.09);height:calc(var(--can-w)*.42);left:50%;margin-left:calc(var(--can-w)*-1.05);position:absolute;transition:transform .7s ease,opacity .7s ease;width:calc(var(--can-w)*2.1);z-index:0}.trash-can-open .trash-floor{opacity:.84;transform:scale(1.06)}.trash-dock{align-items:flex-end;bottom:calc(22px + env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:8px;max-width:calc(100% - 32px);position:absolute;right:16px}.trash-note{border-radius:3px;box-shadow:0 2px 4px #00000073,0 14px 26px -12px #000000b3;max-width:100%;overflow:hidden;transform:rotate(-1.4deg);width:clamp(150px,44vw,230px)}.trash-note textarea{background:#fdf6cd;border:none;box-sizing:border-box;color:#4a4433;display:block;font-family:inherit;font-size:16px;line-height:1.65;padding:16px;resize:none;width:100%}.trash-note textarea:focus{outline:2px solid #d8c98a;outline-offset:-2px}.trash-note textarea::placeholder{color:#b3a982}.trash-ball{background:#fdf6cd;border-radius:52% 44% 58% 46%/48% 56% 44% 52%;box-shadow:inset -3px -4px 6px #786c4659,inset 2px 3px 5px #ffffff80,0 3px 6px #00000073;height:30px;left:0;margin:-15px 0 0 -15px;position:absolute;top:0;transition:opacity .16s linear;width:30px;will-change:transform;z-index:5}.trash-ball-idle{cursor:pointer}.trash-ball-idle:before{border-radius:50%;content:"";height:72px;left:50%;margin:-36px 0 0 -36px;position:absolute;top:50%;width:72px}.trash-ball-idle:focus-visible{outline:2px solid #6f7d86;outline-offset:4px}.trash-error{color:#e0937c;font-size:13px;margin:0}@media (prefers-reduced-motion:reduce){.trash-can-open .trash-lid,.trash-floor,.trash-lid{transition:none}}.trash-note-crumple{animation:trash-crumple .32s cubic-bezier(.42,0,.62,1) forwards;pointer-events:none}@keyframes trash-crumple{0%{border-radius:3px;opacity:1;transform:rotate(-1.4deg) scale(1)}45%{border-radius:26%;opacity:1;transform:rotate(-13deg) scale(.55)}78%{border-radius:42%;opacity:.9;transform:rotate(-24deg) scale(.24)}to{border-radius:50%;opacity:0;transform:rotate(-31deg) scale(.13)}}@media (prefers-reduced-motion:reduce){.trash-note-crumple{animation:none;opacity:0;pointer-events:none}}.blog-page{--accent:#3c4858;--accent-soft:#eef1f6;background:#f7f6f3;box-sizing:border-box;color:#2b3240;line-height:1.75;margin:0 auto;max-width:760px;min-height:100vh;padding:28px 20px 64px}.blog-page a{color:var(--accent);text-decoration:none}.blog-page a:hover{text-decoration:underline}.blog-head{border-bottom:1px solid #e6e2d9;margin-bottom:24px;padding-bottom:16px}.blog-head h1{font-size:22px;margin:0}.blog-intro{color:#7b8291;font-size:14px;margin:10px 0 0}.blog-retry{background:#fffefb;border:1px solid #ddd8cf;border-radius:6px;color:#444b5a;cursor:pointer;padding:6px 12px}.blog-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.blog-tabs button{background:#fffefb;border:1px solid #ddd8cf;border-radius:999px;color:#444b5a;cursor:pointer;font-size:14px;padding:6px 14px}.blog-tabs button.active{background:#3a4150;border-color:#3a4150;color:#fff}.blog-list{list-style:none;margin:0;padding:0}.blog-list li{border-bottom:1px solid #eeeae1;padding:16px 0}.blog-list .blog-title{color:#1f2430;font-size:17px;font-weight:600}.blog-list .blog-meta{color:#7b8291;font-size:13px;margin-top:6px}.blog-empty{color:#7b8291;padding:40px 0}.blog-back{display:inline-block;font-size:14px;margin-bottom:20px}.accent-slate{--accent:#3c4858;--accent-soft:#eef1f6}.accent-amber{--accent:#a86a12;--accent-soft:#fdf3e3}.accent-teal{--accent:#12736b;--accent-soft:#e4f4f2}.accent-rose{--accent:#a53d5c;--accent-soft:#fbecf0}.accent-indigo{--accent:#40479b;--accent-soft:#eeeffb}.accent-forest{--accent:#35682f;--accent-soft:#ecf4ea}.blog-article,.blog-list{background:#fffefb;border:1px solid #eae7e0;border-radius:12px;padding:26px 24px}.blog-article h1{font-size:25px;line-height:1.4;margin:0 0 8px;word-break:keep-all}.blog-article .blog-meta{border-bottom:2px solid var(--accent);color:#7b8291;font-size:13px;margin-bottom:26px;padding-bottom:18px}.blog-body h2{color:var(--accent);font-size:20px;margin:38px 0 12px;word-break:keep-all}.blog-body h3{font-size:16px;margin:26px 0 8px}.blog-body p{margin:14px 0;word-break:keep-all}.blog-body ol,.blog-body ul{padding-left:22px}.blog-body li{margin:8px 0}.blog-body strong{color:#111722}.blog-body blockquote{background:var(--accent-soft);border-left:3px solid var(--accent);border-radius:0 8px 8px 0;margin:22px 0;padding:14px 18px}.blog-body blockquote p{margin:0}.blog-body hr{border:0;border-top:1px solid #e6e2d9;margin:34px 0}.blog-body table{border-collapse:collapse;display:block;font-size:14px;margin:22px 0;overflow-x:auto;width:100%}.blog-body td,.blog-body th{border:1px solid #e4e0d7;padding:9px 11px;text-align:left}.blog-body th{background:var(--accent-soft);color:var(--accent);white-space:nowrap}.blog-body figure{margin:26px 0}.blog-body img{border-radius:10px;display:block;height:auto;width:100%}.blog-body figcaption{color:#8a919f;font-size:12px;margin-top:7px;text-align:right}.blog-body figcaption a{color:#8a919f}.layout-listicle .blog-body{counter-reset:section}.layout-listicle .blog-body h2{counter-increment:section;padding-left:42px;position:relative}.layout-listicle .blog-body h2:before{background:var(--accent);border-radius:50%;color:#fff;content:counter(section);font-size:15px;height:30px;left:0;line-height:30px;position:absolute;text-align:center;top:-2px;width:30px}.layout-qa .blog-body h2{background:var(--accent-soft);border-radius:10px;font-size:18px;padding:13px 16px}.layout-timeline .blog-body{border-left:2px solid var(--accent-soft);padding-left:22px}.layout-timeline .blog-body h2{position:relative}.layout-timeline .blog-body h2:before{background:var(--accent);border-radius:50%;content:"";height:11px;left:-29px;position:absolute;top:11px;width:11px}.layout-compare .blog-body table{font-size:15px}.layout-compare .blog-body tr:nth-child(2n) td{background:#faf8f4}.layout-essay .blog-body>p:first-of-type{color:#39414f;font-size:17px}.ad-slot{align-items:center;background:#f1efe9;border:1px solid #e0dcd3;border-radius:10px;color:#a8aeba;display:flex;flex-direction:column;gap:4px;justify-content:center;margin:30px 0}.ad-slot-label{font-size:12px;font-weight:500;letter-spacing:.08em}.ad-slot-size{font-size:11px}.blog-brand{align-items:baseline;border-bottom:1px solid #eeeae1;display:flex;gap:16px;margin-bottom:22px;padding-bottom:14px}.blog-brand-name{color:#1f2430;font-size:18px;font-weight:700}.blog-nav{display:flex;font-size:14px;gap:12px;margin-left:auto}.blog-footer{border-top:1px solid #eeeae1;color:#8a919f;font-size:13px;margin-top:56px;padding-top:20px}.blog-footer nav{display:flex;flex-wrap:wrap;gap:14px;margin-bottom:10px}.blog-footer p{margin:0}.App-logo{height:40vmin;pointer-events:none}@media (prefers-reduced-motion:no-preference){.App-logo{animation:App-logo-spin 20s linear infinite}}.App-link{color:#61dafb}@keyframes App-logo-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.App,body{background-color:var(--bg-color);color:var(--text-color);transition:background-color .3s ease,color .3s ease}.App{text-align:left}.App-header{align-items:center;background-color:var(--header-bg);display:flex;flex-direction:column;font-size:calc(10px + 2vmin);justify-content:center;min-height:100vh;transition:background-color .3s ease,color .3s ease}.App-header,.App>div{color:var(--text-color)}.App>div{background-color:var(--bg-color)}
/*# sourceMappingURL=main.f21ffb16.css.map*/