*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:#f3f4f6;color:#111827}header{position:sticky;top:0;z-index:5;background:#111827;color:white;padding:14px 16px;display:flex;justify-content:space-between;align-items:center}header b{display:block;font-size:18px}header span{font-size:11px;color:#d1d5db}.head-actions{display:flex;gap:6px;align-items:center}.head-actions #notifications{font-size:11px;padding:7px 9px}.head-actions #notifications.alert-on{background:#14532d;border:1px solid #22c55e;color:#dcfce7}button{border:0;border-radius:10px;padding:11px 14px;font-weight:700;background:#111827;color:white}header button{font-size:16px;padding:6px 10px}.card{background:white;margin:12px;border-radius:16px;padding:16px;box-shadow:0 2px 8px #0001;scroll-margin-top:80px}input{width:100%;padding:12px;margin:6px 0;border:1px solid #d1d5db;border-radius:10px}.racehead{display:flex;justify-content:space-between;align-items:center;gap:8px}.race-meta{display:flex;align-items:center;gap:6px}.post-time{white-space:nowrap;color:#b45309;font-size:12px}.badge{font-size:11px;font-weight:800;padding:5px 8px;border-radius:99px;background:#dcfce7;color:#166534}.low{background:#fee2e2;color:#991b1b}.horse{display:grid;grid-template-columns:28px 1fr auto;gap:8px;padding:8px 0;border-bottom:1px solid #eee}.horse.scratched{opacity:.55;text-decoration:line-through}.num{font-weight:900}.score{font-weight:800}.wager{margin-top:10px;padding:10px;border-radius:10px;background:#ecfdf5;color:#065f46;font-weight:800}.wager.pass{background:#fff7ed;color:#9a3412}.scratch{margin-top:10px;background:#991b1b;width:100%}.muted{color:#6b7280;font-size:12px}#day{padding:12px 16px 0;font-weight:800;font-size:18px}.best{margin:12px;background:#111827;color:#fff;border-radius:16px;padding:16px}.best small{display:block;color:#d1d5db;font-weight:700}.best strong{display:block;font-size:22px;margin-top:4px}.filters{display:flex;gap:7px;padding:0 12px 2px;overflow:auto}.filter{white-space:nowrap;background:#e5e7eb;color:#374151;padding:8px 11px}.filter.active{background:#111827;color:#fff}.changed{border:2px solid #f59e0b}.change-note{font-size:11px;font-weight:800;color:#92400e;margin-top:8px}.secondary{background:#e5e7eb;color:#111827;margin-left:6px}.empty{margin:18px;color:#6b7280;text-align:center}

.modal{position:fixed;inset:0;z-index:20;background:#0009;display:flex;align-items:flex-end;justify-content:center}.modal[hidden]{display:none}.modal-card{background:#fff;width:100%;max-width:620px;max-height:85vh;overflow:auto;border-radius:20px 20px 0 0;padding:16px;padding-bottom:calc(18px + env(safe-area-inset-bottom))}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.modal-head h2{margin:0;font-size:19px}.modal-head button{background:#e5e7eb;color:#111827;font-size:22px;padding:5px 11px}.scratch-row{width:100%;display:flex;justify-content:space-between;align-items:center;text-align:left;gap:10px;margin:8px 0;padding:13px;background:#f3f4f6;color:#111827;border:2px solid transparent}.scratch-row strong{font-size:10px;color:#166534;text-align:right}.scratch-row.is-scratched{background:#fee2e2;border-color:#fecaca}.scratch-row.is-scratched strong{color:#991b1b}.scratch-row:disabled{opacity:.55}#scratchMsg{font-size:13px;min-height:18px}

.dashboard-actions{padding:0 12px 10px;display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.dashboard-actions button{background:#111827;font-size:13px;padding:10px 6px}.resource-links{display:flex;gap:7px;padding:0 12px 10px;overflow:auto}.resource-links a,.resource-links button{white-space:nowrap;text-decoration:none;background:#fff;color:#111827;border:1px solid #d1d5db;border-radius:9px;padding:8px 10px;font-size:12px;font-weight:800}.scope-tabs{display:flex;gap:7px;margin:12px 0}.scope{flex:1;background:#e5e7eb;color:#374151;padding:8px}.scope.active{background:#111827;color:#fff}.matrix-card{max-height:90vh}.matrix-row{display:grid;grid-template-columns:1fr auto 72px;align-items:center;gap:10px;padding:14px 4px;border-bottom:1px solid #e5e7eb}.matrix-row strong{font-size:15px}.matrix-row span{font-variant-numeric:tabular-nums;color:#4b5563}.matrix-row b{text-align:right;font-size:17px}.matrix-row:nth-last-child(2),.matrix-row:last-child{background:#f9fafb}

.track-picker{display:flex;align-items:center;gap:10px;padding:12px 16px 0}.track-picker label{font-size:12px;font-weight:800;color:#6b7280}.track-picker select{flex:1;max-width:360px;padding:10px 12px;border:1px solid #d1d5db;border-radius:10px;background:#fff;color:#111827;font-weight:800}
.stage{display:flex;gap:5px;overflow:auto;margin:10px 0}.stage span{white-space:nowrap;font-size:9px;font-weight:800;padding:5px 7px;border-radius:99px;background:#e5e7eb;color:#6b7280}.stage span.done{background:#dcfce7;color:#166534}.stage span.current{background:#fef3c7;color:#92400e}.review{width:100%;margin-top:7px;background:#374151}.finish-grid{display:grid;grid-template-columns:42px 1fr 58px 54px;gap:8px;padding:9px 0;border-bottom:1px solid #e5e7eb;align-items:center}.finish-grid.header{font-size:10px;font-weight:900;color:#6b7280}.hit{color:#166534}.miss{color:#991b1b}.ticket{padding:12px;margin:8px 0;border:1px solid #d1d5db;border-radius:12px}.ticket h3{margin:0 0 7px}.ticket-legs{display:flex;gap:6px;overflow:auto}.ticket-legs span{white-space:nowrap;background:#f3f4f6;border-radius:8px;padding:7px;font-size:12px}.factor-row{display:grid;grid-template-columns:1fr 70px 60px;gap:8px;padding:10px 0;border-bottom:1px solid #eee}.detail-card{max-height:92vh}.status-official{background:#dbeafe;color:#1e40af}.status-partial{background:#fef3c7;color:#92400e}

.result-upload{width:100%;margin-top:7px;background:#1d4ed8}.result-upload:disabled{opacity:.55}.result-upload-action{width:100%;margin-top:8px;background:#1d4ed8}.upload-state{margin-top:8px;padding:8px 10px;border-radius:9px;background:#eff6ff;color:#1e40af;font-size:11px;font-weight:800}.upload-state.needs_review{background:#fff7ed;color:#9a3412}.upload-state.failed{background:#fee2e2;color:#991b1b}.upload-state.official{background:#dcfce7;color:#166534}#resultMsg{min-height:18px;font-size:13px}details{margin-top:12px}summary{font-size:12px;font-weight:800;cursor:pointer}

.race-grade{margin:10px 0;padding:10px 12px;border-radius:12px;background:#f3f4f6;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:2px 10px}.race-grade span{font-size:10px;font-weight:900;letter-spacing:.08em;color:#6b7280}.race-grade strong{font-size:20px;text-align:right}.race-grade small{grid-column:1/-1;color:#4b5563;margin-top:3px}.card-grade{margin:12px;border-radius:16px;padding:14px 16px;background:#e0f2fe;color:#0c4a6e}.card-grade.final{background:#dcfce7;color:#14532d}.card-grade small{display:block;font-weight:900;letter-spacing:.06em}.card-grade strong{display:block;font-size:24px;margin:2px 0}.card-grade span{font-size:12px;font-weight:700}

.decision-panel{margin:10px 0;padding:11px 12px;border-radius:12px;display:grid;grid-template-columns:1fr 1fr;gap:8px;background:#f3f4f6}.decision-panel.bet{background:#ecfdf5;color:#065f46}.decision-panel.pass{background:#fff7ed;color:#9a3412}.decision-panel small{display:block;font-size:9px;font-weight:900;letter-spacing:.08em}.decision-panel strong{font-size:16px}.decision-panel p{grid-column:1/-1;margin:0;font-size:11px;font-weight:700}.model-label{margin-top:10px;font-size:10px;font-weight:900;letter-spacing:.08em;color:#6b7280}


/* v7 historical card grades */
.history-row{border:1px solid var(--line,#d7dbe0);border-radius:12px;padding:12px;margin:10px 0;background:var(--card,#fff)}
.history-main{display:flex;align-items:center;justify-content:space-between;gap:12px}.history-main>div:first-child{display:flex;flex-direction:column;gap:2px}.history-main span,.history-meta{font-size:.82rem;color:var(--muted,#667085)}
.history-grade{text-align:right}.history-grade strong{font-size:1.35rem;display:block}.history-grade span{font-weight:700}
.history-meta{display:flex;flex-wrap:wrap;gap:8px 12px;margin-top:8px;align-items:center}.history-status{font-size:.72rem;font-weight:800;padding:3px 7px;border-radius:999px;border:1px solid currentColor}.history-status.final{color:#157347}.history-status.partial{color:#9a6700}.history-status.incomplete{color:#667085}

/* v9 wager optimizer */
.optimizer{margin:12px 0;padding:12px 14px;border:1px solid #334155;border-radius:12px;background:#111827}
.optimizer-head{display:flex;justify-content:space-between;gap:12px;align-items:center}
.optimizer-head small{font-size:.7rem;letter-spacing:.08em;color:#94a3b8}
.optimizer-head strong{font-size:1rem}
.optimizer.win{border-color:#22c55e;background:#0d2017}.optimizer.win .optimizer-head strong{color:#4ade80}
.optimizer.track{border-color:#f59e0b;background:#211a0c}.optimizer.track .optimizer-head strong{color:#fbbf24}
.optimizer.pass{border-color:#64748b;background:#151923}.optimizer.pass .optimizer-head strong{color:#cbd5e1}
.optimizer-bet{font-size:1.15rem;font-weight:800;margin-top:8px;color:#f8fafc;letter-spacing:.01em}.optimizer p{margin:7px 0 4px;font-size:.84rem;line-height:1.35}.optimizer span{font-size:.76rem;color:#94a3b8}

/* v14 expanded wager value board */
.optimizer-board{margin-top:10px;border-top:1px solid #334155;padding-top:8px;display:grid;gap:6px}.optimizer-option{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;padding:7px 8px;border-radius:8px;background:#ffffff0d}.optimizer-option b{font-size:.75rem;color:#86efac}.optimizer-option span{font-size:.74rem;color:#e2e8f0}.optimizer-option small{font-size:.68rem;color:#fbbf24;white-space:nowrap}
.wager-confidence{display:block;font-weight:800;font-size:.82rem;margin-top:.3rem;color:#f8fafc!important}.wager-confidence.main{font-size:.95rem;letter-spacing:.04em;margin:.55rem 0;color:#fbbf24!important}.optimizer-option .wager-confidence{opacity:.9}

.market-panel{margin-top:1rem;padding:.85rem;border:1px solid rgba(251,191,36,.35);border-radius:.75rem;background:rgba(251,191,36,.06)}
.market-panel.frozen{border-color:rgba(52,211,153,.4);background:rgba(52,211,153,.06)}
.market-head{display:flex;justify-content:space-between;gap:.75rem;align-items:center;margin-bottom:.55rem}.market-head small{font-weight:900;letter-spacing:.05em}.market-head strong{font-size:.8rem}
.market-panel p{font-size:.86rem;margin:.4rem 0 .7rem}.market-input{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin:.45rem 0}.market-input span{font-weight:700}.market-input em{font-style:normal;font-weight:500;opacity:.7}.market-input input{width:6.5rem;padding:.55rem;border-radius:.5rem;border:1px solid #475569;background:#0f172a;color:#fff;text-align:right}.market-submit{width:100%;margin-top:.6rem}.market-result{display:flex;justify-content:space-between;gap:.75rem;padding:.4rem 0;border-bottom:1px solid rgba(148,163,184,.15)}.market-result span{font-size:.8rem;text-align:right}

.fractional-odds-input{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:.45rem}.fractional-odds-input b{font-size:1.25rem;text-align:center}.fractional-odds-input input{width:100%;min-width:0}

.market-horse{padding:.45rem .4rem .55rem;border-top:1px solid rgba(148,163,184,.12)}.market-horse-top{background:rgba(251,191,36,.07);border-left:3px solid #fbbf24;padding-left:.55rem}.top-tag{font-size:.62rem;letter-spacing:.05em;padding:.15rem .3rem;border-radius:.3rem;background:rgba(251,191,36,.18);color:#fbbf24}.market-quick{display:flex;gap:.3rem;overflow-x:auto;padding:.15rem 0 .2rem}.market-quick button{flex:0 0 auto;padding:.3rem .45rem;border:1px solid #475569;border-radius:.4rem;background:#111827;color:#e5e7eb;font-size:.72rem}.market-quick button:active{transform:scale(.96)}.market-result.market-top3{background:rgba(52,211,153,.06);padding-left:.35rem;border-left:3px solid #34d399}@media(max-width:600px){.market-input{align-items:flex-start;flex-direction:column}.fractional-odds-input{align-self:flex-end}.market-quick{width:100%}}

/* Consolidated mobile race accordion */
.race-nav{display:flex;gap:7px;align-items:center;flex-wrap:wrap;padding:12px}.race-nav label{font-size:12px;font-weight:800}.race-nav select{width:auto;min-width:125px;max-width:190px;margin:0;padding:9px}.race-nav button{padding:9px 10px;font-size:12px}.race-card{padding:0;overflow:hidden}.race-toggle{width:100%;display:flex;justify-content:space-between;align-items:center;gap:10px;text-align:left;border-radius:16px;background:white;color:#111827;padding:17px 16px;font-size:18px}.race-toggle small{display:block;color:#92400e;font-size:11px;margin-top:5px}.race-toggle-state{font-size:11px;text-transform:uppercase;color:#475569;white-space:nowrap}.race-toggle-state b{display:inline-block;font-size:22px;vertical-align:middle;margin-left:6px;transition:transform .2s}.race-open .race-toggle-state b{transform:rotate(180deg)}.race-content{display:none;padding:0 16px 16px}.race-open .race-content{display:block}.race-toggle:focus-visible{outline:3px solid #2563eb;outline-offset:-3px}
/* Multi-horse scratch workflow — v36. Accessible on narrow/mobile screens. */
.scratch-toolbar{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0 6px}
.scratch-toolbar button{margin:0;min-height:40px;padding:9px 11px;font-size:12px}
.scratch-count{font-size:12px;font-weight:800;color:#475569;margin:5px 0 10px}
.scratch-selection-list{max-height:min(49vh,450px);overflow-y:auto;padding:2px}
.scratch-selection-list .scratch-row{cursor:pointer;border-radius:10px;display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:10px;align-items:center;min-height:56px;margin:6px 0;padding:10px 12px;user-select:none}
.scratch-selection-list .scratch-row input[type="checkbox"]{cursor:pointer;width:20px;height:20px;padding:0;margin:0;accent-color:#1d4ed8}
.scratch-selection-list .scratch-row.is-selected{outline:3px solid #2563eb;outline-offset:-2px;background:#eff6ff}
.scratch-selection-list .scratch-row.is-selected.is-scratched{background:#fef2f2}
.scratch-selection-list .scratch-row .scratch-horse{font-size:14px;line-height:1.4;min-width:0;overflow-wrap:anywhere}
.scratch-selection-list .scratch-row strong{font-size:10px;max-width:90px}
.scratch-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:12px;position:sticky;bottom:0;background:white;padding-top:10px;padding-bottom:4px;border-top:1px solid #e5e7eb}
.scratch-actions button{min-height:49px;padding:11px 8px;font-size:13px}
.scratch-apply{background:#991b1b;color:white}
.reinstate-apply{background:#166534;color:white}
.scratch-actions button:disabled,.scratch-toolbar button:disabled{opacity:.45;cursor:not-allowed}
@media(max-width:360px){.scratch-actions{grid-template-columns:1fr}.scratch-toolbar button{flex:1 1 33%;padding:9px 6px;font-size:11px}}

/* v37: official grades visible on minimized race cards */
.race-toggle-state{display:flex;align-items:center;justify-content:flex-end;gap:9px;flex-wrap:nowrap}
.collapsed-race-grade{display:inline-flex;align-items:center;gap:5px;padding:4px 8px;border-radius:8px;background:#dcfce7;color:#14532d;border:1px solid #86efac;white-space:nowrap}
.collapsed-race-grade small{font-size:9px;font-weight:800;letter-spacing:.04em}
.collapsed-race-grade strong{font-size:17px;font-weight:900;line-height:1}
.race-toggle-status{font-size:11px;text-transform:uppercase;white-space:nowrap}
@media(max-width:430px){.race-toggle-state{gap:5px}.collapsed-race-grade{padding:4px 6px}.collapsed-race-grade small{font-size:8px}.collapsed-race-grade strong{font-size:16px}.race-toggle-status{font-size:10px}}

.ubuntu-viewer{margin:16px 0;padding:16px;border:2px solid #35bdb2;border-radius:12px}.ubuntu-viewer[hidden]{display:none}.ubuntu-viewer button{margin:6px}.ubuntu-race{margin-top:18px;padding:12px;border:1px solid #607080;border-radius:8px}.ubuntu-table{overflow-x:auto}.ubuntu-table table{width:100%;border-collapse:collapse}.ubuntu-table th,.ubuntu-table td{padding:8px;text-align:left;border-bottom:1px solid #607080;white-space:nowrap}

.ubuntu-model{padding:12px;margin:12px 0;background:#fff8e1;color:#392f16;border:1px solid #b98a20;border-radius:8px}.ubuntu-model p{font-size:13px}
