.late-overlay{position:fixed;inset:0;background:#10231de6;z-index:120;padding:24px;overflow:auto}.late-modal{max-width:1180px;margin:auto;background:#f5f4ef;border-radius:18px;padding:28px}.late-head{display:flex;justify-content:space-between;gap:20px;align-items:start}.late-head h2{font:30px Georgia,"Songti SC",serif;margin:4px 0}.late-head p{color:#718078}.late-close{border:0;background:none;font-size:28px;cursor:pointer}.late-run{border:0;background:#176b4d;color:white;border-radius:8px;padding:13px 22px;cursor:pointer}.late-status{margin:18px 0;padding:12px 15px;border-radius:8px;background:#f4e9cf;color:#75551d}.late-status.live{background:#e8f2ed;color:#176b4d}.candidate-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.candidate{background:white;border:1px solid #dfe5e0;border-radius:13px;padding:20px;position:relative}.rank{position:absolute;right:18px;top:17px;font:32px Georgia,serif;color:#dfe5e0}.candidate h3{font-size:20px;margin:0}.candidate h3 small{font-size:11px;color:#718078}.candidate-price{display:flex;align-items:end;gap:8px;margin:12px 0}.candidate-price strong{font:29px Georgia,serif}.candidate-price span{color:#b54d45}.screen-score{height:5px;background:#edf0ed;border-radius:4px;overflow:hidden}.screen-score i{display:block;height:100%;background:#176b4d}.flow-grid,.trade-plan{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin:14px 0}.flow-grid div,.trade-plan div{background:#f7f8f5;border-radius:7px;padding:9px}.flow-grid small,.trade-plan small{display:block;color:#718078;font-size:10px}.flow-grid b,.trade-plan b{font-size:13px}.candidate ul{padding-left:17px;font-size:12px;min-height:94px}.candidate-risk{font-size:11px;color:#9a5e39;background:#fff7eb;padding:9px;border-radius:7px}.candidate-actions{display:flex;gap:7px;margin-top:12px}.candidate-actions button{flex:1;border:1px solid #176b4d;color:#176b4d;background:white;border-radius:7px;padding:9px;cursor:pointer}.candidate-actions .primary{background:#176b4d;color:white}.method-card{margin-top:18px;border:1px solid #dfe5e0;background:white;border-radius:12px;padding:18px}.method-card p{color:#718078}.method-card code{white-space:normal}.late-loading{text-align:center;padding:70px;color:#718078}.review-card{margin:18px 0;background:#fff;border:1px solid #dfe5e0;border-radius:12px;padding:18px}.review-card>p{color:#718078;margin-bottom:0}.review-head{display:flex;justify-content:space-between;align-items:end;gap:16px;margin-bottom:12px}.review-head h3{margin:3px 0 0}.review-head>div:last-child{text-align:right}.review-head>div:last-child b{display:block;font:28px Georgia,serif;color:#176b4d}.review-head small,.review-card td small{display:block;color:#718078}.review-table-wrap{overflow:auto}.review-card table{width:100%;border-collapse:collapse;font-size:12px}.review-card th,.review-card td{text-align:left;border-bottom:1px solid #edf0ed;padding:9px 8px;vertical-align:top}.review-card .up{color:#b54d45}.review-card .down{color:#176b4d}.strategy-update{margin-top:12px;padding:11px 13px;border-radius:8px;background:#f7f8f5}.strategy-update.changed{background:#fff4df;color:#75551d}.strategy-update ul{margin:5px 0 0;padding-left:18px}@media(max-width:900px){.candidate-grid{grid-template-columns:1fr}.candidate ul{min-height:0}.late-head{display:block}.review-head{align-items:start}.review-card table{min-width:700px}}
.late-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.market-filter{display:flex;align-items:center;gap:7px;padding:10px 12px;border:1px solid #9db8ab;border-radius:8px;background:#e8f2ed;color:#176b4d;font-weight:700;white-space:nowrap}.market-filter input{width:17px;height:17px;accent-color:#176b4d}

.portfolio-buy-context{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;margin:14px 0;background:#dfe5e0;border:1px solid #dfe5e0;border-radius:12px;overflow:hidden}.portfolio-buy-context>div{background:#fff;padding:13px 15px}.portfolio-buy-context small{display:block;color:#718078;font-size:11px}.portfolio-buy-context b{display:block;margin-top:4px;font-size:16px;color:#14261f}.portfolio-buy-context p{grid-column:1/-1;margin:0;padding:10px 15px;background:#edf5f1;color:#176b4d;font-size:12px}.portfolio-buy-advice{margin-top:14px;padding:13px;border:1px solid #d7e8df;border-radius:9px;background:#f2f8f5}.portfolio-buy-advice .portfolio-buy-kicker{display:block;color:#176b4d;font-size:10px;font-weight:700;letter-spacing:.08em}.portfolio-buy-advice>strong{display:block;margin-top:4px;color:#174c38}.portfolio-buy-advice>p{margin:7px 0 0;color:#53665d;font-size:12px;line-height:1.55}.portfolio-buy-advice.status-review,.portfolio-buy-advice.status-wait-price{border-color:#ead7ad;background:#fff8e9}.portfolio-buy-advice.status-review .portfolio-buy-kicker,.portfolio-buy-advice.status-wait-price .portfolio-buy-kicker,.portfolio-buy-advice.status-review>strong,.portfolio-buy-advice.status-wait-price>strong{color:#8a641e}.portfolio-buy-advice.status-position-limit,.portfolio-buy-advice.status-rank-limit,.portfolio-buy-advice.status-cash-limit{border-color:#e1e5e2;background:#f6f7f5}.portfolio-buy-advice.status-position-limit .portfolio-buy-kicker,.portfolio-buy-advice.status-rank-limit .portfolio-buy-kicker,.portfolio-buy-advice.status-cash-limit .portfolio-buy-kicker{color:#718078}.portfolio-buy-metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:6px;margin-top:10px}.portfolio-buy-metrics span{padding:8px;background:#fff;border-radius:6px}.portfolio-buy-metrics small{display:block;color:#718078;font-size:9px}.portfolio-buy-metrics b{display:block;margin-top:2px;font-size:12px;color:#14261f}@media(max-width:900px){.portfolio-buy-context{grid-template-columns:1fr 1fr}.portfolio-buy-metrics{grid-template-columns:repeat(2,1fr)}.portfolio-buy-advice{padding:12px}}
.portfolio-buy-context.historical p{background:#fff6e4;color:#8a641e}
.portfolio-buy-context{grid-template-columns:repeat(6,minmax(0,1fr))}.portfolio-buy-advice.status-today-bought,.portfolio-buy-advice.status-daily-limit,.portfolio-buy-advice.status-portfolio-limit{border-color:#e1e5e2;background:#f6f7f5}.portfolio-buy-advice.status-today-bought .portfolio-buy-kicker,.portfolio-buy-advice.status-daily-limit .portfolio-buy-kicker,.portfolio-buy-advice.status-portfolio-limit .portfolio-buy-kicker{color:#718078}@media(max-width:900px){.portfolio-buy-context{grid-template-columns:repeat(2,1fr)}}
.candidate-actions .late-record-fill{border-color:#b7862f;color:#7a5719;background:#fff8e8}
.portfolio-buy-advice.status-rolling-exit-required{border-color:#ead7ad;background:#fff8e9}.portfolio-buy-advice.status-rolling-exit-required .portfolio-buy-kicker,.portfolio-buy-advice.status-rolling-exit-required>strong{color:#8a641e}
.lock-panel{padding:0;overflow:hidden}.lock-summary{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;background:#edf5f1}.lock-summary small,.lock-gates small{display:block;color:#718078;font-size:10px;letter-spacing:.08em}.lock-summary h3{margin:2px 0 0}.lock-summary>b{padding:7px 11px;border-radius:999px;background:#176b4d;color:#fff;white-space:nowrap}.lock-gates{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#dfe5e0}.lock-gates>div{background:#fff;padding:15px 18px}.lock-gates>div>b{display:block;margin:3px 0 7px}.lock-gates p{margin:5px 0;font-size:12px}.index-lines span{display:block}.lock-note{margin:0!important;padding:11px 18px;background:#f7f8f5}.lock-single-lock .lock-summary{background:#fff4df}.lock-single-lock .lock-summary>b{background:#ad7a29}.lock-double-lock .lock-summary{background:#fff0ee}.lock-double-lock .lock-summary>b{background:#b54d45}.signal-kind{display:inline-block;margin-top:7px;padding:3px 8px;border-radius:999px;background:#e8f2ed;color:#176b4d;font-size:10px;font-style:normal;font-weight:700}.signal-kind.rebound{background:#fff1d6;color:#8a641e}.portfolio-buy-advice.status-double-lock{border-color:#efc7c2;background:#fff0ee}.portfolio-buy-advice.status-double-lock .portfolio-buy-kicker,.portfolio-buy-advice.status-double-lock>strong{color:#9e3e37}.portfolio-buy-advice.status-single-lock-score{border-color:#ead7ad;background:#fff8e9}.portfolio-buy-advice.status-single-lock-score .portfolio-buy-kicker,.portfolio-buy-advice.status-single-lock-score>strong{color:#8a641e}@media(max-width:900px){.lock-gates{grid-template-columns:1fr}.lock-summary{align-items:flex-start}.lock-summary>b{font-size:11px}}
.strat-mode{padding:11px 12px;border:1px solid #9db8ab;border-radius:8px;background:#e8f2ed;color:#176b4d;font-weight:700;cursor:pointer}
.strat-plan-note{margin:10px 0 0;font-size:11px;color:#718078;line-height:1.6}
.strat-modal{box-shadow:0 28px 80px #07171052}.strat-empty{margin:24px 0;padding:58px 24px;text-align:center;border:1px dashed #cfd9d3;border-radius:14px;background:#fafbf8;color:#718078}.strat-empty b{display:block;color:#263a31;font-size:16px}.strat-empty p{margin:7px 0 0}.strat-empty.compact{padding:30px}.strat-empty.loading{background:linear-gradient(110deg,#f7f8f5,#fff,#f7f8f5);background-size:240% 100%;animation:stratPulse 1.8s linear infinite}@keyframes stratPulse{to{background-position:-240% 0}}.strat-summary{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:22px 0 12px;padding:18px 20px;border-radius:13px;border:1px solid #dfe5e0;background:#fff}.strat-summary small,.strat-method small,.strat-section-title small{color:#176b4d;font-size:10px;font-weight:700;letter-spacing:.12em}.strat-summary h3{margin:3px 0;font-size:17px}.strat-summary p{margin:0;color:#718078;font-size:11px}.strat-summary>b{padding:7px 12px;border-radius:999px;background:#176b4d;color:#fff;white-space:nowrap}.strat-summary.waiting{background:#fff8e9;border-color:#ead7ad}.strat-summary.waiting>b{background:#ad7a29}.strat-summary.blocked{background:#fff0ee;border-color:#efc7c2}.strat-summary.blocked>b{background:#b54d45}.strat-index-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:18px}.strat-index-grid>div{padding:13px 15px;border:1px solid #dfe5e0;border-radius:10px;background:#fff}.strat-index-grid small,.strat-index-grid span{display:block;color:#718078;font-size:10px}.strat-index-grid b{display:block;margin:3px 0;color:#176b4d}.strat-index-grid .fail b{color:#b54d45}.strat-section-title{display:flex;justify-content:space-between;align-items:end;margin:22px 0 12px}.strat-section-title h3{margin:3px 0 0}.strat-section-title>span{color:#718078;font-size:11px}.strat-candidate{overflow:hidden}.strat-card-head{display:flex;justify-content:space-between;align-items:start;gap:12px;padding-right:42px}.strat-card-head>div>small{color:#718078;font-size:10px}.strat-card-head h3{margin:2px 0}.strat-card-head .signal-kind{margin:0;white-space:nowrap}.strat-method>div h3{margin:3px 0 12px}.strat-method p{margin:8px 0;font-size:12px;line-height:1.65}.strat-method .candidate-risk{margin-top:14px}.strat-candidate .flow-grid{grid-template-columns:repeat(3,1fr)}.strat-candidate .trade-plan{grid-template-columns:repeat(2,1fr)}
@media(max-width:900px){.strat-summary,.strat-section-title{align-items:flex-start;flex-direction:column}.strat-index-grid{grid-template-columns:1fr}.strat-card-head{display:block}.strat-card-head .signal-kind{margin-top:7px}.strat-candidate .flow-grid{grid-template-columns:1fr 1fr}}
.strat-cache-banner{display:flex;justify-content:space-between;align-items:center;gap:18px;margin:22px 0;padding:18px 20px;border-radius:13px;background:#153a2d;color:#fff}.strat-cache-banner small{color:#9fd0ba;font-size:10px;font-weight:700;letter-spacing:.12em}.strat-cache-banner h3{margin:3px 0}.strat-cache-banner p{margin:0;color:#bed3ca;font-size:11px}.strat-cache-banner>b{padding:7px 12px;border-radius:999px;background:#d4b06d;color:#17251f;white-space:nowrap}.strat-cache-banner.hit{background:#edf5f1;color:#174c38;border:1px solid #cfe3d9}.strat-cache-banner.hit small,.strat-cache-banner.hit p{color:#5d786b}.strat-cache-banner.hit>b{background:#176b4d;color:#fff}.strat-model-block{padding:8px 0 24px;border-bottom:1px solid #dfe5e0}.strat-model-block+.strat-model-block{padding-top:16px}.strat-section-title p{margin:3px 0 0;color:#718078;font-size:11px}.strat-points{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0}.strat-points>div{padding:11px;border-radius:8px}.strat-points small,.strat-points span{display:block}.strat-points small{font-size:10px;font-weight:700;letter-spacing:.06em}.strat-points b{display:block;margin:2px 0;font-size:15px}.strat-points span{font-size:10px;line-height:1.45}.strat-points .buy{background:#edf6f1;color:#176b4d}.strat-points .sell{background:#fff0ee;color:#9e3e37}.strat-exit-list{min-height:0!important;margin:10px 0!important;padding:10px 10px 10px 27px!important;border-radius:8px;background:#f7f8f5;color:#53665d;line-height:1.55}.strat-exit-list li+li{margin-top:4px}
@media(max-width:900px){.strat-cache-banner{align-items:flex-start;flex-direction:column}.strat-points{grid-template-columns:1fr}}
