:root { --ink:#17251f; --muted:#6d7972; --surface:#fffdf8; --line:#e7e2d7; --accent:#1f6a4d; --red:#b83a3a; --black:#25312d; --gold:#c39234; --zero:#345d8e; }
* { box-sizing:border-box; }
body { margin:0; background:#f3f1ea; color:var(--ink); font-family:Inter,"Microsoft YaHei",system-ui,sans-serif; }
button,input { font:inherit; }
.app-shell { width:min(1180px,calc(100% - 32px)); margin:0 auto; padding:48px 0 70px; }
header { margin-bottom:28px; }
.eyebrow,.section-label { margin:0 0 6px; color:var(--accent); font-size:.72rem; font-weight:800; letter-spacing:.12em; text-transform:uppercase; }
h1,h2,p { margin-top:0; } h1 { margin-bottom:8px; font-size:clamp(2rem,5vw,3.4rem); letter-spacing:-.055em; } h2 { margin-bottom:0; font-size:1.1rem; }
.subtitle { margin-bottom:0; color:var(--muted); }
.dataset-card { display:flex; justify-content:space-between; align-items:center; gap:20px; margin-bottom:16px; padding:18px 22px; border:1px solid #cfe1d5; border-radius:15px; background:#f6fbf7; }.dataset-card h2 { margin-bottom:6px; }.dataset-card p:not(.section-label) { margin-bottom:0; color:var(--muted); font-size:.84rem; }.dataset-actions { display:flex; align-items:end; flex-wrap:wrap; gap:10px; }.dataset-actions label { display:grid; gap:5px; color:var(--muted); font-size:.72rem; font-weight:800; }.dataset-actions select { min-width:185px; padding:9px; border:1px solid #c8d6cc; border-radius:8px; background:#fff; color:var(--ink); }.dataset-actions button { padding:9px 11px; font-size:.8rem; }
.entry-card,.data-card,.panel,.summary-grid article { border:1px solid var(--line); background:var(--surface); box-shadow:0 10px 25px rgba(32,49,41,.04); }
.entry-card { display:flex; align-items:center; gap:28px; padding:22px 24px; border-radius:16px; margin-bottom:16px; flex-wrap:wrap; }
.synthetic-test-card { display:flex; align-items:center; justify-content:space-between; gap:18px; margin-bottom:16px; padding:18px 22px; border:1px solid #e2c879; border-radius:16px; background:#fff8e6; }.synthetic-test-card > div:first-child { flex:1; min-width:200px; }.synthetic-test-card h2 { margin-bottom:6px; }.synthetic-test-card p:not(.section-label) { margin-bottom:0; color:#705d29; font-size:.83rem; line-height:1.5; }.synthetic-test-actions { display:flex; flex-wrap:wrap; gap:8px; }.synthetic-test-actions button { padding:9px 11px; background:#86661d; font-size:.78rem; }.synthetic-test-actions .synthetic-clear { color:#8d342a; background:#f9e7df; }.synthetic-test-card .form-message { color:#705d29; }.synthetic-test-card .form-message.synthetic-error { color:#9b3428; }
.entry-card > div { flex:1; min-width:165px; } form { display:flex; gap:10px; } input { width:118px; border:1px solid #c8c5bb; border-radius:9px; padding:11px 14px; color:var(--ink); background:#fff; font-size:1.15rem; font-weight:700; } input:focus { outline:3px solid #bde1d2; border-color:var(--accent); }
button { border:0; border-radius:9px; padding:11px 16px; cursor:pointer; color:#fff; background:var(--accent); font-weight:750; } button:hover { filter:brightness(.94); } .form-message { width:100%; margin:0; color:var(--red); font-size:.88rem; min-height:1.2em; }
.data-card { display:flex; align-items:center; justify-content:space-between; gap:22px; padding:19px 24px; margin-bottom:16px; border-radius:16px; }.data-card h2 { margin-bottom:6px; }.data-card p { margin:0; color:var(--muted); font-size:.85rem; }.data-actions { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:8px; }.data-actions button,.restore-label { padding:9px 12px; border-radius:8px; color:var(--accent); background:#edf4ef; font-size:.8rem; font-weight:800; cursor:pointer; }.restore-label { color:#7d5520; background:#fbf2df; }.restore-label input { display:none; }
.summary-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:16px; margin-bottom:16px; } .summary-grid article { border-radius:14px; padding:19px 20px; } .summary-grid span { display:block; color:var(--muted); font-size:.82rem; } .summary-grid strong { display:block; margin-top:5px; font-size:1.65rem; letter-spacing:-.04em; }
.dashboard { display:grid; grid-template-columns:340px 1fr; gap:16px; }.panel { border-radius:16px; padding:22px; }.overview-panel { grid-row:span 2; }.panel-heading { display:flex; justify-content:space-between; align-items:start; gap:12px; margin-bottom:18px; }.category-grid { display:grid; gap:9px; }.category-item { display:grid; grid-template-columns:62px 1fr auto; align-items:center; gap:9px; font-size:.84rem; }.category-item span { color:var(--muted); }.category-item strong { font-size:.86rem; }.mini-bar { overflow:hidden; height:7px; border-radius:99px; background:#ebe8df; }.mini-bar i { display:block; height:100%; border-radius:inherit; background:var(--accent); }.number-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(105px,1fr)); gap:8px; }.number-tile { border:1px solid var(--line); border-radius:9px; padding:9px; background:#fff; }.number-tile-top,.number-meta { display:flex; justify-content:space-between; gap:5px; }.number-label { font-weight:800; }.number-count { color:var(--muted); font-size:.77rem; }.frequency-bar { margin:8px 0 7px; height:4px; border-radius:99px; overflow:hidden; background:#ece9e0; }.frequency-bar i { display:block; height:100%; background:var(--accent); }.number-meta { color:var(--muted); font-size:.68rem; }.window-controls { display:flex; gap:5px; }.window-button { padding:6px 8px; color:var(--muted); background:#eeeae1; font-size:.74rem; }.window-button.active { background:var(--ink); color:#fff; }.history-panel { grid-column:2; }.table-wrap { overflow:auto; } table { width:100%; border-collapse:collapse; font-size:.88rem; } th { color:var(--muted); font-size:.72rem; text-align:left; } th,td { padding:11px 8px; border-bottom:1px solid var(--line); white-space:nowrap; } tbody tr:last-child td { border-bottom:0; }.ball { display:inline-grid; place-items:center; min-width:30px; height:30px; border-radius:50%; color:#fff; font-weight:800; }.ball.red { background:var(--red); }.ball.black { background:var(--black); }.ball.zero { background:var(--zero); }.delete-button { padding:6px 9px; background:transparent; color:var(--red); border:1px solid #e7bbbb; font-size:.76rem; }.empty-state { color:var(--muted); text-align:center; padding:25px; }.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
.audit-panel { grid-column:1 / -1; }.record-id { max-width:230px; overflow:hidden; text-overflow:ellipsis; font-family:ui-monospace,SFMono-Regular,Consolas,monospace; font-size:.73rem; }
.backtest-section { margin-top:16px; }.backtest-intro { padding:8px 3px 15px; }.backtest-intro h2 { margin-bottom:7px; }.backtest-intro p:not(.section-label) { margin:0; color:var(--muted); font-size:.9rem; }.boundary-card,.backtest-results { border:1px solid var(--line); border-radius:16px; background:var(--surface); box-shadow:0 10px 25px rgba(32,49,41,.04); }.boundary-card { padding:18px 21px; }.boundary-controls { display:flex; align-items:end; flex-wrap:wrap; gap:12px; }.boundary-controls label { display:grid; gap:5px; color:var(--muted); font-size:.78rem; font-weight:750; }.boundary-controls input { width:85px; padding:8px 10px; font-size:.9rem; }.boundary-controls button { padding:9px 13px; }.boundary-message { margin:13px 0 0; color:var(--muted); font-size:.82rem; }.boundary-summary { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-top:15px; }.boundary-summary div { padding:10px; border-radius:8px; background:#f1f4ee; }.boundary-summary strong,.boundary-summary span { display:block; }.boundary-summary strong { font-size:.78rem; }.boundary-summary span { margin-top:3px; color:var(--muted); font-size:.7rem; }.backtest-results { padding:20px; margin-top:16px; }.result-heading h3,.betting-frame h3 { margin-bottom:7px; font-size:1rem; }.result-heading p,.betting-frame p { margin:0; color:var(--muted); font-size:.82rem; line-height:1.55; }.metric-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:10px; margin-top:15px; }.metric-card,.betting-frame { padding:14px; border:1px solid var(--line); border-radius:10px; background:#fff; }.metric-card h3 { margin-bottom:10px; font-size:.88rem; } dl { margin:0; }.metric-card dl,.betting-frame dl { display:grid; grid-template-columns:repeat(2,1fr); gap:8px; }.metric-card dl div,.betting-frame dl div { display:flex; justify-content:space-between; gap:8px; border-top:1px solid #efede7; padding-top:7px; }.metric-card dt,.betting-frame dt { color:var(--muted); font-size:.72rem; }.metric-card dd,.betting-frame dd { margin:0; font-size:.76rem; font-weight:800; }.betting-frame { margin-top:11px; }.betting-frame dl { margin-top:12px; grid-template-columns:repeat(4,1fr); }
.research-section { margin-top:28px; }.registry-card,.research-report { border:1px solid var(--line); border-radius:16px; background:var(--surface); box-shadow:0 10px 25px rgba(32,49,41,.04); }.registry-card { padding:19px 21px; }.registry-heading { display:flex; justify-content:space-between; align-items:start; gap:16px; margin-bottom:13px; }.registry-heading h3 { margin:0 0 5px; font-size:1rem; }.registry-heading p,.model-note,.report-title p,.report-parameters { margin:0; color:var(--muted); font-size:.78rem; line-height:1.45; }.registry-heading button { padding:9px 12px; white-space:nowrap; }.version-id { color:var(--accent); font-family:ui-monospace,SFMono-Regular,Consolas,monospace; font-size:.7rem; }.locked-status { display:inline-block; border-radius:99px; padding:3px 7px; color:#46614d; background:#e8f2ea; font-size:.7rem; font-weight:800; }.research-results { display:grid; gap:13px; margin-top:16px; }.research-report { padding:18px; }.report-title { display:flex; justify-content:space-between; gap:15px; }.report-title h3 { margin:4px 0 5px; font-size:1.05rem; }.report-title > span { flex:none; border-radius:8px; height:max-content; padding:6px 8px; color:#59655e; background:#eef0eb; font-size:.72rem; }.report-parameters { margin-top:11px; padding:9px 10px; border-radius:7px; background:#f4f3ee; }.research-splits { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-top:13px; }.research-metric { overflow:hidden; border:1px solid var(--line); border-radius:9px; }.research-metric h4 { margin:0; padding:10px; background:#f4f6f1; font-size:.8rem; }.research-metric table { font-size:.74rem; }.research-metric th,.research-metric td { padding:8px 7px; white-space:normal; }.research-metric th { font-size:.67rem; }
.wheel-order { overflow-wrap:anywhere; margin:0 0 14px; padding:10px; border-radius:8px; color:#48534c; background:#f1f4ee; font-family:ui-monospace,SFMono-Regular,Consolas,monospace; font-size:.72rem; line-height:1.7; }
.zone-map { display:grid; gap:6px; margin:-4px 0 14px; }.zone-map div { padding:8px 10px; border-left:3px solid #aac7b1; background:#fbfcf9; }.zone-map strong,.zone-map span { display:block; }.zone-map strong { margin-bottom:3px; font-size:.74rem; }.zone-map span { overflow-wrap:anywhere; color:var(--muted); font-family:ui-monospace,SFMono-Regular,Consolas,monospace; font-size:.68rem; line-height:1.55; }
.trigger-outcome-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-top:12px; }.trigger-outcomes { overflow:hidden; border:1px solid var(--line); border-radius:9px; }.trigger-outcomes h4 { margin:0; padding:10px; background:#fff4df; font-size:.8rem; }.trigger-outcomes table { font-size:.7rem; }.trigger-outcomes th,.trigger-outcomes td { padding:7px 6px; white-space:normal; }.trigger-outcomes th { font-size:.63rem; }.trigger-outcomes p { margin:0; padding:9px; color:#7b5d26; background:#fffbf2; font-size:.7rem; line-height:1.45; }
.ensemble-current { display:grid; gap:12px; margin-top:16px; }.current-estimate,.ensemble-metrics { border:1px solid var(--line); border-radius:12px; background:var(--surface); box-shadow:0 8px 20px rgba(32,49,41,.035); }.current-estimate { padding:17px; }.category-estimates { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin:12px 0; }.category-estimates p,.agreement-line { margin:0; padding:9px; border-radius:7px; color:#526058; background:#f1f4ee; font-size:.76rem; line-height:1.5; }.agreement-line { overflow-wrap:anywhere; background:#fff9ee; }.top-candidates { display:grid; grid-template-columns:repeat(5,1fr); gap:7px; margin-top:11px; }.top-candidates div { padding:8px; border:1px solid var(--line); border-radius:7px; }.top-candidates strong,.top-candidates span { display:block; }.top-candidates strong { margin-bottom:3px; color:var(--accent); font-size:.73rem; }.top-candidates span { font-size:.7rem; line-height:1.45; }.ensemble-diagnostics { margin-top:12px; padding:9px; border-radius:7px; color:var(--muted); background:#f4f3ee; font-size:.76rem; line-height:1.5; }.ensemble-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; margin-top:13px; }.ensemble-metrics { overflow:hidden; }.ensemble-metrics h4 { margin:0; padding:10px; background:#eef4ef; font-size:.8rem; }.ensemble-metrics table { font-size:.73rem; }.ensemble-metrics th,.ensemble-metrics td { padding:8px 7px; white-space:normal; }.ensemble-metrics dl { display:grid; gap:6px; padding:10px; }.ensemble-metrics dl div { display:flex; justify-content:space-between; gap:8px; border-top:1px solid var(--line); padding-top:6px; }.ensemble-metrics dt { color:var(--muted); font-size:.72rem; }.ensemble-metrics dd { margin:0; text-align:right; font-size:.72rem; }
.all-number-estimates { margin-top:12px; border:1px solid var(--line); border-radius:7px; overflow:hidden; }.all-number-estimates summary { padding:9px; cursor:pointer; color:var(--accent); background:#f8faf6; font-size:.78rem; font-weight:800; }.all-number-estimates > div { display:grid; grid-template-columns:repeat(auto-fill,minmax(72px,1fr)); gap:5px; padding:8px; }.all-number-estimates span { display:flex; justify-content:space-between; gap:4px; padding:5px; border-radius:4px; background:#f3f2ed; font-size:.68rem; }.all-number-estimates b { color:var(--ink); }
.decision-buttons { display:flex; flex-wrap:wrap; gap:8px; }.decision-buttons button { padding:9px 11px; font-size:.78rem; }.decision-facts { display:grid; grid-template-columns:repeat(3,1fr); gap:7px; margin:12px 0; }.decision-facts div { padding:8px; border-radius:7px; background:#f3f4ee; }.decision-facts strong,.decision-facts span { display:block; }.decision-facts strong { color:var(--muted); font-size:.66rem; }.decision-facts span { margin-top:3px; font-size:.82rem; font-weight:800; }.decision-audit-card,.prospective-session-card,.prospective-comparison { margin-top:12px; }.prospective-banner { border-color:#c5dccd; background:#fbfffb; }.prospective-top { grid-template-columns:repeat(5,minmax(145px,1fr)); }.prospective-top span { min-height:64px; }.top-performance { display:grid; grid-template-columns:repeat(5,1fr); gap:7px; margin-top:12px; }.top-performance div { padding:8px; border:1px solid var(--line); border-radius:7px; }.top-performance strong,.top-performance span { display:block; }.top-performance strong { color:var(--accent); font-size:.72rem; }.top-performance span { margin-top:3px; color:var(--muted); font-size:.69rem; line-height:1.4; }.decision-performance-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:14px; }.decision-performance { overflow:hidden; border:1px solid var(--line); border-radius:12px; background:var(--surface); }.decision-performance h4 { margin:0; padding:10px; background:#eef4ef; font-size:.84rem; }.decision-performance dl { display:grid; grid-template-columns:repeat(2,1fr); gap:7px; padding:10px; }.decision-performance dl div { display:flex; justify-content:space-between; gap:6px; border-top:1px solid var(--line); padding-top:6px; }.decision-performance dt { color:var(--muted); font-size:.7rem; }.decision-performance dd { margin:0; text-align:right; font-size:.72rem; font-weight:800; }
.live-mode { display:none; max-width:620px; margin:0 auto; padding-bottom:30px; }.live-header { display:flex; justify-content:space-between; align-items:flex-start; gap:14px; margin-bottom:14px; }.live-header h1 { margin-bottom:5px; font-size:clamp(1.8rem,8vw,2.7rem); }.live-subtitle { margin:0; color:var(--muted); font-size:.84rem; }.live-exit { flex:none; padding:9px 10px; color:var(--accent); background:#eaf4ed; font-size:.78rem; }.live-test-banner { margin-bottom:12px; padding:10px; border:1px solid #e2ba66; border-radius:10px; color:#765013; background:#fff5d9; font-size:.78rem; font-weight:850; text-align:center; letter-spacing:.05em; }.live-status-card,.live-prediction-card,.live-entry-card,.live-recent-card { margin-bottom:12px; padding:16px; border:1px solid var(--line); border-radius:14px; background:var(--surface); box-shadow:0 8px 22px rgba(32,49,41,.05); }.live-status-card > div { display:flex; align-items:center; justify-content:space-between; gap:10px; }.live-status-card strong { color:var(--accent); font-size:.78rem; letter-spacing:.03em; }.live-status-card > div span { padding:4px 7px; border-radius:99px; color:#376247; background:#e8f4eb; font-size:.65rem; font-weight:850; }.live-status-card dl { display:grid; grid-template-columns:repeat(2,1fr); gap:8px; margin-top:13px; }.live-status-card dl div { padding-top:6px; border-top:1px solid var(--line); }.live-status-card dt { color:var(--muted); font-size:.66rem; }.live-status-card dd { margin:3px 0 0; overflow-wrap:anywhere; font-size:.76rem; font-weight:800; }.live-card-heading { display:flex; justify-content:space-between; align-items:flex-start; gap:10px; }.live-card-heading h2 { margin:0; font-size:1.1rem; }.live-lock-badge { padding:5px 7px; border-radius:7px; color:#316142; background:#e7f5e9; font-size:.62rem; font-weight:900; white-space:nowrap; }.live-top-numbers { display:grid; grid-template-columns:repeat(5,1fr); gap:6px; margin:14px 0; }.live-top-numbers span { display:grid; place-items:center; min-height:56px; border-radius:9px; color:#fff; background:var(--black); font-size:1.18rem; font-weight:900; }.live-top-numbers small { margin-top:2px; color:#d6e4dc; font-size:.56rem; }.live-no-bet { margin:15px 0 10px; padding:14px; border-radius:10px; color:#862d2d; background:#fff0ed; font-size:1.35rem; font-weight:900; text-align:center; }.live-no-bet small { color:#7e625b; font-size:.68rem; font-weight:700; }.live-facts { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; margin-top:10px; }.live-facts div { padding:7px; border-radius:7px; background:#f1f4ee; }.live-facts strong,.live-facts span { display:block; }.live-facts strong { color:var(--muted); font-size:.59rem; }.live-facts span { margin-top:3px; font-size:.75rem; font-weight:850; }.live-decision-note { margin:10px 0 0; color:var(--muted); font-size:.72rem; line-height:1.5; }.live-selected { min-height:1.5em; margin:0 0 12px; padding:9px; border-radius:8px; color:#4f5e54; background:#f2f4ef; font-weight:800; text-align:center; }.live-keypad { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }.live-number { min-height:54px; padding:6px; border:2px solid transparent; border-radius:11px; font-size:1.2rem; font-weight:900; touch-action:manipulation; }.live-number.red { background:var(--red); }.live-number.black { background:var(--black); }.live-number.zero { grid-column:1 / -1; background:var(--zero); }.live-number.selected { border-color:#f4cf6a; outline:3px solid rgba(195,146,52,.3); transform:scale(.98); }.live-number:disabled { opacity:.5; }.live-confirm-row { display:grid; grid-template-columns:1fr 2fr; gap:8px; margin-top:12px; }.live-confirm-row button { min-height:48px; touch-action:manipulation; }.live-confirm-row #live-cancel { color:#7b402f; background:#f7e7e0; }.live-confirm-row #live-confirm { background:#1f6a4d; }.live-confirm-row button:disabled { cursor:not-allowed; opacity:.45; }.live-recent-card { margin-bottom:12px; }.live-recent-card h2 { margin:0; }.live-recent { display:flex; flex-wrap:wrap; gap:7px; margin-top:12px; }.live-recent .ball { min-width:34px; height:34px; }.live-muted,.live-backup { color:var(--muted); font-size:.72rem; }.live-backup { margin:12px 0 0; }.live-controls { display:grid; grid-template-columns:1fr 1fr; gap:8px; }.live-controls button { min-height:44px; }.live-controls #live-close-session { color:#85392d; background:#f9e9e3; }.live-controls button:disabled { opacity:.45; cursor:not-allowed; }
body.live-mode-open { background:#eef1eb; } body.live-mode-open .app-shell { width:min(100% - 24px,620px); padding:22px 0; } body.live-mode-open .app-shell > :not(.live-mode) { display:none; } body.live-mode-open .live-mode { display:block; }
.deployment-result { margin-top:14px; padding:14px; border:1px solid var(--line); border-radius:10px; background:#f8faf6; font-size:.82rem; line-height:1.55; }.deployment-result p { margin:0; }.deployment-result ul { margin:10px 0 0; padding-left:19px; }.deployment-result li { margin:8px 0; }.check-pass,.ready-pass { color:#217147; }.check-fail,.ready-fail,.restore-error { color:#9b3428; }.check-info { color:#76621c; }.origin-warning { margin:14px 0 0; padding:11px; border-left:4px solid #bd7927; border-radius:6px; background:#fff5df; color:#6b4a1e; font-size:.8rem; line-height:1.55; }
@media (max-width:780px) { .app-shell { width:min(100% - 22px,1180px); padding-top:28px; }.dashboard { display:block; }.panel { margin-bottom:16px; }.overview-panel { min-height:0; }.history-panel,.audit-panel { grid-column:auto; }.summary-grid { gap:9px; }.summary-grid article { padding:14px; }.summary-grid strong { font-size:1.25rem; }.entry-card,.data-card,.dataset-card { align-items:stretch; gap:14px; padding:18px; } form { width:100%; } form input { flex:1; }.data-actions,.dataset-actions { justify-content:flex-start; }.dataset-actions label,.dataset-actions select,.dataset-actions button { width:100%; }.number-grid { grid-template-columns:repeat(3,1fr); }.panel { padding:18px 14px; }.boundary-card,.backtest-results,.registry-card,.research-report { padding:16px; }.boundary-summary,.metric-grid,.betting-frame dl,.research-splits,.trigger-outcome-grid,.category-estimates,.top-candidates,.ensemble-grid,.decision-facts,.top-performance,.prospective-top,.decision-performance-grid,.decision-performance dl { grid-template-columns:1fr; }.boundary-controls { align-items:stretch; }.boundary-controls label { flex:1; }.boundary-controls button,.registry-heading button,.decision-buttons button { width:100%; }.registry-heading,.report-title { display:block; }.registry-heading button { margin-top:12px; }.report-title > span { display:inline-block; margin-top:9px; } }
