:root{color-scheme:light;--bg: #f6f5f2;--surface: #ffffff;--ink: #1d2528;--muted: #667176;--line: #d8dedb;--accent: #0f766e;--accent-strong: #134e4a;--warn: #9a3412}*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font-family:Segoe UI,Microsoft JhengHei,Arial,sans-serif;font-size:15px;line-height:1.45}a{color:var(--accent-strong);text-decoration:none}a:hover{text-decoration:underline}button,input{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}.shell{width:100%;max-width:none;margin:0;padding:16px}.topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px}h1{margin:0;font-size:28px;line-height:1.15}.meta{color:var(--muted);margin-top:6px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:16px 0;flex-wrap:wrap}.toolbar-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.race-nav{display:flex;flex-wrap:wrap;gap:8px}.race-nav a{display:inline-flex;align-items:center;justify-content:center;min-width:48px;height:36px;padding:0 12px;border:1px solid var(--line);background:var(--surface);border-radius:6px;font-weight:650}.race-nav a.active{color:#fff;background:var(--accent);border-color:var(--accent)}input[type=search]{width:min(420px,100%);height:38px;border:1px solid var(--line);border-radius:6px;padding:0 12px;font:inherit;background:var(--surface)}.recent-bulk-toggle{height:38px;border:1px solid var(--line);background:#f8faf9;border-radius:6px;color:var(--accent-strong);font:inherit;font-weight:650;cursor:pointer;padding:0 12px;white-space:nowrap}.recent-bulk-controls{display:inline-flex;flex-wrap:wrap;gap:6px}.recent-bulk-toggle[aria-expanded=true]{color:#fff;background:var(--accent);border-color:var(--accent)}.recent-bulk-toggle:disabled{color:var(--muted);cursor:not-allowed;background:#f4f6f5}.odds-refresh-controls{display:inline-flex;align-items:center;flex-wrap:wrap;gap:8px}.odds-refresh-button{height:38px;border:1px solid var(--accent);background:var(--accent);border-radius:6px;color:#fff;font:inherit;font-weight:700;cursor:pointer;padding:0 12px;white-space:nowrap}.odds-refresh-button:disabled{border-color:var(--line);background:#f4f6f5;color:var(--muted);cursor:wait}.odds-status{color:var(--muted);font-size:13px;min-height:18px}.odds-status[data-state=error]{color:var(--warn);font-weight:650}.table-wrap{max-width:100%;overflow-x:auto;border:1px solid var(--line);background:var(--surface);border-radius:8px}table{border-collapse:separate;border-spacing:0}table.race-table{width:max-content;min-width:100%}th,td{padding:7px 8px;border-bottom:1px solid var(--line);border-right:1px solid #edf0ee;text-align:left;white-space:nowrap;vertical-align:middle}th{position:sticky;top:0;z-index:1;background:#e8f3ef;color:#143532;font-size:13px;cursor:pointer;-webkit-user-select:none;user-select:none}td.prominent,th.prominent{background-color:#fbf8ec}th.prominent{background-color:#dff0ea}tr:hover td{background:#f1f7f5}.sort-mark{display:inline-block;min-width:12px;margin-left:4px;color:var(--accent)}.live-win-odds-cell{color:var(--muted);min-width:92px;font-weight:650}.live-win-odds-cell.has-odds{color:var(--ink)}.live-win-odds-cell.hot-favourite{background:#fff7ed;color:#9a3412;font-weight:800}.horse-name-cell{display:inline-flex;align-items:center;flex-wrap:wrap;gap:8px;min-width:0}.detail-toggle-group{display:inline-flex;flex-wrap:wrap;gap:4px}.recent-toggle{height:24px;border:1px solid var(--line);background:#f8faf9;border-radius:6px;color:var(--accent-strong);font:inherit;font-size:12px;font-weight:650;cursor:pointer;white-space:nowrap}.recent-toggle[aria-expanded=true]{color:#fff;background:var(--accent);border-color:var(--accent)}.recent-toggle .fast-result-place{color:#b91c1c;font-weight:800}.recent-toggle[aria-expanded=true] .fast-result-place{color:#fecaca}.recent-empty{color:var(--muted);font-size:12px;white-space:nowrap}.recent-results-row>td{padding:0;background:#fbfcfb;max-width:0}.recent-results-panel{padding:10px;border-left:3px solid var(--accent);overflow-x:auto;max-width:100%}.recent-panel-section+.recent-panel-section{margin-top:12px}.recent-panel-section h3{margin:0 0 8px;color:#143532;font-size:14px;line-height:1.2}.recent-results-table{width:max-content;min-width:min(760px,100%);font-size:13px}.recent-results-table th{position:static;background:#f2f7f5;cursor:default}.recent-results-table th,.recent-results-table td{padding:6px 7px;white-space:nowrap}.recent-results-table .incident,.recent-results-table .comment{max-width:360px;overflow:hidden;text-overflow:ellipsis}.fast-final-400m,.recent-results-table .fast-final-400m{background:#fff176;color:#7c2d12;font-weight:800;box-shadow:inset 0 0 0 2px #f97316}.number{text-align:right;font-variant-numeric:tabular-nums}.empty,.not-found{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:24px}.not-found h1{color:var(--warn)}.groups{display:grid;gap:14px}.group{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:16px}.group h2{margin:0 0 12px;font-size:18px}.race-section{margin-top:22px}.race-section h2{margin:0 0 10px;font-size:20px}.race-section .meta{margin-bottom:10px}.race-table-section{margin-top:0}.race-facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin:16px 0}.race-fact{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:10px 12px;min-width:0}.race-fact dt{margin:0 0 4px;color:var(--muted);font-size:12px;line-height:1.2}.race-fact dd{margin:0;overflow-wrap:anywhere;font-weight:700;line-height:1.25}.column-panel{margin:16px 0;border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:12px}.column-panel summary{cursor:pointer;font-weight:700;color:#143532}.column-actions{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0}.column-actions button,.column-move button{height:30px;border:1px solid var(--line);background:#f8faf9;border-radius:6px;color:var(--accent-strong);font:inherit;font-weight:650;cursor:pointer}.column-actions button{padding:0 10px}.column-actions button:disabled,.column-move button:disabled{color:var(--muted);cursor:not-allowed;background:#f4f6f5}.column-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px;margin:0;padding:0;list-style:none}.column-item{display:grid;grid-template-columns:24px minmax(0,1fr) auto;align-items:center;gap:8px;min-height:38px;border:1px solid var(--line);border-radius:6px;padding:5px 6px;background:#fcfdfc}.column-item.dragging{opacity:.55}.column-drag{height:26px;padding:0;border:0;color:var(--muted);background:transparent;cursor:grab;text-align:center;font-weight:700}.column-label{display:flex;align-items:center;gap:6px;min-width:0}.column-label span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.column-move{display:flex;gap:4px}.column-move button{width:30px;padding:0}.column-item.is-hidden{color:var(--muted);background:#f4f6f5}.preset-panel{margin:0 0 16px;border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:12px}.preset-panel summary{cursor:pointer;font-weight:700;color:#143532}.preset-body{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin-top:12px}.preset-panel:not([open])>.preset-body{display:none}.preset-section h2{margin:0 0 8px;color:#143532;font-size:14px;line-height:1.2}.preset-list{display:flex;flex-wrap:wrap;gap:8px;min-height:30px}.preset-form{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}.preset-name{width:min(220px,100%);height:30px;border:1px solid var(--line);border-radius:6px;padding:0 10px;font:inherit;background:var(--surface)}.preset-chip,.preset-delete,#preset-save{height:30px;border:1px solid var(--line);background:#f8faf9;border-radius:6px;color:var(--accent-strong);font:inherit;font-weight:650;cursor:pointer}.preset-chip{max-width:100%;padding:0 10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.local-preset{display:inline-flex;max-width:100%}.local-preset .preset-chip{border-radius:6px 0 0 6px}.preset-delete{width:30px;padding:0;border-left:0;border-radius:0 6px 6px 0;color:var(--warn)}#preset-save{padding:0 10px}.empty-presets{margin:4px 0 0;color:var(--muted);font-size:13px}.empty-row{height:70px;color:var(--muted);text-align:center!important}@media(max-width:760px){.shell{padding:12px}.topbar{align-items:flex-start;flex-direction:column}h1{font-size:22px}.column-list,.preset-body{grid-template-columns:1fr}}
