:root{--color-bg:#f7f1dc;--color-bg-stripe:#74b85726;--color-sky:#bfe7ff;--color-grass:#74b857;--color-grass-light:#9bd874;--color-surface:#fffaf0;--color-surface-raised:#fff;--color-surface-inset:#fff4d7;--color-track:#d59b56;--color-lane:#ffffff57;--color-text:#2b2418;--color-text-strong:#171109;--color-text-soft:#3a2c16;--color-input-text:#171109;--color-muted:#655a46;--color-muted-strong:#5b4d32;--color-muted-dim:#8d7d61;--color-white:#fff;--color-accent:#f2b705;--color-accent-hover:#ffd447;--color-accent-contrast:#171109;--color-input-border:#caa66c;--color-danger:#dc3f31;--color-danger-soft:#b52e24;--color-danger-surface:#ffe4df;--color-danger-badge-text:#6e1812;--color-danger-badge-surface:#ffe4df;--color-danger-wash:#dc3f312e;--color-success:#2e8b57;--color-border:#caa66c;--color-border-strong:#986c2c;--color-border-muted:#dcc697;--color-border-soft:#bfa477;--color-track-border:#986c2c;--color-lane-border:#ffffff8f;--color-stat-divider:#dcc697;--color-cut-in:#fff6d7;--color-cut-in-major:#ffe6a6;--color-result-surface:#fff0b8;--color-log-text:#3a2c16;--radius-control:7px;color:var(--color-text);background:var(--color-bg);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-size:16px}*{box-sizing:border-box}html{background:var(--color-bg)}body{min-width:320px;min-height:100vh;color:var(--color-text);background:linear-gradient(180deg, var(--color-sky) 0 180px, transparent 181px), linear-gradient(90deg, var(--color-bg-stripe) 0 2px, transparent 2px 34px), var(--color-bg);margin:0}button,input,textarea,select{font:inherit}button{border:2px solid var(--color-border-strong);border-radius:var(--radius-control);min-width:0;min-height:46px;color:var(--color-text);background:var(--color-surface-raised);cursor:pointer;overflow-wrap:anywhere;text-align:center;padding:10px 14px;font-weight:800;line-height:1.2;box-shadow:inset 0 -3px #5b3f1829}button:hover:not(:disabled){border-color:var(--color-accent);color:var(--color-text-strong)}button:focus-visible,input:focus-visible{outline:3px solid var(--color-accent);outline-offset:2px}button:disabled{cursor:not-allowed;opacity:.48}input{border:2px solid var(--color-input-border);border-radius:var(--radius-control);width:100%;min-height:46px;color:var(--color-input-text);background:var(--color-surface-inset);padding:10px 12px}input::placeholder{color:var(--color-muted-dim)}.app-shell{min-height:100vh;padding:12px;display:flex}.screen{align-self:flex-start;width:min(100%,920px);margin:0 auto}.screen-header{flex-direction:column;gap:8px;margin-bottom:18px;padding:10px 0 0;display:flex}.race-header{grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:12px;display:grid}.race-header strong{border:2px solid var(--color-accent);border-radius:var(--radius-control);min-width:58px;color:var(--color-accent-contrast);background:var(--color-accent);text-align:center;padding:7px 8px;font-size:1rem}.race-header h1{overflow-wrap:normal;word-break:keep-all;font-size:2.1rem;line-height:1.02}.eyebrow{color:var(--color-accent);letter-spacing:0;text-transform:uppercase;margin:0;font-size:.84rem;font-weight:900}h1,h2,p,dl{margin-top:0}h1{max-width:100%;color:var(--color-text-strong);overflow-wrap:anywhere;margin-bottom:0;font-size:2.35rem;line-height:.98}h2{color:var(--color-text-soft);margin-bottom:10px;font-size:1.08rem;line-height:1.2}.lede,.small-note{color:var(--color-muted);overflow-wrap:anywhere;line-height:1.55}.setup-form,.heat-plan,.horse-card,.result-summary>section,.replay-log{border:2px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-surface);padding:14px}.name-list,.horse-grid,.race-track{gap:10px;display:grid}.name-row{grid-template-columns:28px minmax(0,1fr);align-items:center;gap:8px;display:grid}.name-row>span{border:2px solid var(--color-accent);width:28px;height:28px;color:var(--color-accent);place-items:center;font-weight:900;display:grid}.name-row button{grid-column:2}.button-row{grid-template-columns:1fr;gap:10px;margin-top:14px;display:grid}.primary-button{border-color:var(--color-accent);color:var(--color-accent-contrast);background:var(--color-accent)}.primary-button:hover:not(:disabled){color:var(--color-accent-contrast);background:var(--color-accent-hover)}.ghost-button{border-color:var(--color-border-soft);background:var(--color-surface-inset)}.error-message{color:var(--color-danger-soft);margin:12px 0 0;font-weight:800}.rule-panel{border-top:2px dashed var(--color-border-muted);margin-top:14px;padding-top:12px}.rule-panel h2{margin-bottom:8px}.rule-toggle{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;display:grid}.rank-chip-row{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.rank-chip{border-color:var(--color-border-soft);background:var(--color-surface-inset);min-height:38px;padding:6px 10px}.rank-chip.rank-chip-selected{border-color:var(--color-accent);color:var(--color-accent-contrast);background:var(--color-accent)}.rule-summary{color:var(--color-text-strong);margin-top:10px;font-weight:900;line-height:1.45}.heat-plan{margin-top:14px}.heat-line{border-top:2px dashed var(--color-border-muted);gap:4px;padding:10px 0;display:grid}.heat-line span{overflow-wrap:anywhere}.horse-grid{grid-template-columns:1fr}.horse-card{gap:14px;display:grid}.horse-card-header{grid-template-columns:5.8rem minmax(0,1fr);align-items:center;gap:12px;display:grid}.horse-card-header .horse-sprite{width:5.6rem;height:4.6rem}.participant-name{color:var(--color-accent);overflow-wrap:anywhere;margin-bottom:4px;font-weight:900}.badge{border:2px solid var(--color-danger);max-width:100%;color:var(--color-danger-badge-text);background:var(--color-danger-badge-surface);overflow-wrap:anywhere;border-radius:999px;padding:3px 8px;font-size:.82rem;font-weight:900;display:inline-block}.stat-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin-bottom:0;display:grid}.stat-grid div{border-left:2px solid var(--color-stat-divider);min-width:0;padding-left:6px}.stat-grid dt{color:var(--color-muted-strong);text-overflow:ellipsis;font-size:.76rem;font-weight:800;overflow:hidden}.stat-grid dd{color:var(--color-white);margin:0;font-weight:900}.horse-stat-radar{margin:0}.horse-stat-radar svg{width:100%;max-width:260px;margin:0 auto;display:block}.horse-outlook{overflow-wrap:anywhere;border-top:1px solid #794a1f33;gap:4px;min-width:0;padding-top:10px;display:grid}.horse-outlook p{color:var(--color-accent);margin:0;font-size:.78rem;font-weight:900}.horse-outlook span{color:var(--color-text);overflow-wrap:anywhere;font-size:.9rem;line-height:1.45}.radar-grid-shape{fill:#ffffff75;stroke:var(--color-border);stroke-width:2px}.radar-value-shape{fill:#f2b7056b;stroke:var(--color-accent);stroke-linejoin:round;stroke-width:3px}.radar-label text{fill:var(--color-muted);font-size:.58rem;font-weight:800}.radar-label .radar-label-value{fill:var(--color-text-strong);font-size:.68rem;font-weight:900}.cut-in{border:2px solid var(--color-border);border-radius:var(--radius-control);background:var(--color-cut-in);align-content:center;gap:3px;min-height:64px;max-height:92px;margin-bottom:10px;padding:10px 12px;display:grid;overflow:hidden}.cut-in strong,.cut-in span{overflow-wrap:anywhere;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.cut-in strong{color:var(--color-accent);-webkit-line-clamp:1}.cut-in span{color:var(--color-muted);-webkit-line-clamp:2}.cut-in-major{border-color:var(--color-accent);background:var(--color-cut-in-major)}.cut-in-rare{border-color:var(--color-danger);background:var(--color-danger-surface)}.race-track{isolation:isolate;border:2px solid var(--color-track-border);border-radius:var(--radius-control);background:radial-gradient(circle at 12% 8%, #ffffff57, transparent 24%), linear-gradient(90deg, transparent calc(100% - 24px), #17110924 calc(100% - 24px)), repeating-linear-gradient(0deg, transparent 0 60px, #ffffff61 60px 63px), linear-gradient(180deg, var(--color-grass-light), var(--color-grass));margin-bottom:14px;padding:16px 8px 10px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 6px #ffffff3d,inset 0 -18px 28px #2658243d,0 8px #54743033}.race-track[data-density=compact]{padding:12px 6px 8px}.race-track:after{background:repeating-linear-gradient(0deg, var(--color-white) 0 7px, #171109 7px 14px), var(--color-white);content:"";pointer-events:none;z-index:0;border-inline:1px solid #17110952;width:9px;position:absolute;inset:12px 14px 12px auto;box-shadow:-8px 0 #fff3,6px 0 #1711091f}.race-track:before{border-radius:var(--radius-control);background:repeating-linear-gradient(90deg, #ffffff1f 0 2px, transparent 2px 34px), linear-gradient(180deg, #ffffff38, transparent 32%), linear-gradient(180deg, #e3ad65, var(--color-track) 58%, #a96b2f);content:"";z-index:0;position:absolute;inset:20px 22px 18px 18px;box-shadow:inset 0 2px #ffffff47,inset 0 -7px #4c2b1129,inset 0 0 0 2px #895a2247}.race-lane{z-index:1;grid-template-rows:minmax(68px,auto) minmax(42px,auto);grid-template-columns:72px minmax(0,1fr);align-items:stretch;gap:4px 8px;min-height:112px;display:grid;position:relative}.race-track[data-density=compact] .race-lane{grid-template-rows:minmax(58px,auto) minmax(30px,auto);grid-template-columns:62px minmax(0,1fr);gap:2px 6px;min-height:92px}.lane-meta{border-right:3px solid #ffffffc2;align-content:center;gap:3px;min-width:0;padding-right:8px;display:grid}.lane-meta strong{color:var(--color-accent);font-size:1.18rem;line-height:1}.lane-meta span,.state-label,.horse-token small{overflow-wrap:anywhere;word-break:break-word;min-width:0}.lane-meta span{color:var(--color-text-strong);font-weight:900;line-height:1.18}.lane-track{border:2px solid var(--color-lane-border);border-radius:var(--radius-control);background:linear-gradient(90deg, transparent calc(100% - 24px), #1711092e calc(100% - 24px) calc(100% - 21px), #ffffff6b calc(100% - 21px)), repeating-linear-gradient(90deg, #fff3 0 1px, transparent 1px 28px), linear-gradient(180deg, #ffffff57, #ffffff1a), var(--color-lane);min-width:0;height:116px;position:relative;overflow:visible;box-shadow:inset 0 2px #ffffff57,inset 0 -9px #7345181a,0 2px #5232141a}.race-track[data-density=compact] .lane-track{height:88px}.horse-token{--horse-x-px:-32px;--horse-lane-shift:0px;--horse-progress-ratio:0;width:7rem;min-width:0;transform:translate3d(var(--horse-x-px), var(--horse-lane-shift), 0);justify-items:center;transition:transform .18s ease-out;display:grid;position:absolute;top:2px}.race-track[data-density=compact] .horse-token{width:5.8rem;top:0}.horse-token:before{width:calc(.8rem + (1.8rem * var(--horse-progress-ratio)));filter:blur(.4px);height:.42rem;opacity:calc(.18 + (.42 * var(--horse-progress-ratio)));content:"";pointer-events:none;background:radial-gradient(circle,#fff3d3d6 0 34%,#0000 36%),radial-gradient(circle at 78% 56%,#794a1f2e,#0000 52%);border-radius:999px;position:absolute;top:3.85rem;left:-.45rem;transform:translate(-54%)}.horse-token[data-interaction=attacking]{--horse-lane-shift:var(--attack-lane-offset,0px);z-index:4}.horse-token[data-interaction=defending]{z-index:3}.horse-token[data-interaction=countering]{z-index:5}.horse-token[data-interaction=stunned]{--horse-lane-shift:var(--attack-lane-offset,0px);z-index:2}.horse-token[data-flourish]:after{z-index:1;content:"";opacity:0;pointer-events:none;background:#ffffff7a;border:2px solid #fff1a6e6;border-radius:999px;width:1.15rem;height:1.15rem;position:absolute;top:.2rem;left:50%;transform:translate(-50%)scale(.8);box-shadow:0 0 #fff1a600}.horse-token[data-flourish=hop]:after{animation:finish-hop .56s ease-out var(--flourish-delay-ms,0s) 1}.horse-token[data-flourish=shimmy]:after{animation:finish-shimmy .56s ease-out var(--flourish-delay-ms,0s) 1}.horse-token[data-flourish=spark]:after{animation:finish-sparkle .56s ease-out var(--flourish-delay-ms,0s) 1}.finish-badge-stack{z-index:7;pointer-events:none;justify-items:end;gap:.24rem;min-width:3.4rem;display:grid;position:absolute;bottom:.55rem;right:.55rem}.finish-arrival-badge,.finish-rank-badge{border-radius:var(--radius-control);color:var(--color-text-strong);white-space:nowrap;background:#fffaf0eb;border:2px solid #171109d6;padding:.16rem .38rem;font-size:.72rem;font-weight:900;line-height:1.1;box-shadow:0 2px #1711092e}.finish-arrival-badge{background-color:#fff8df;background-image:linear-gradient(45deg,#1711091f 25%,#0000 25% 50%,#1711091f 50% 75%,#0000 75%),none;background-position:0 0,0 0;background-repeat:repeat,repeat;background-size:.5rem .5rem;background-attachment:scroll,scroll;background-origin:padding-box,padding-box;background-clip:border-box,border-box;animation:.64s ease-out finish-arrival-pop}.finish-rank-badge[data-risk=coffee]{border-color:var(--color-danger);color:var(--color-danger-badge-text);background:var(--color-danger-badge-surface);box-shadow:0 2px 0 #1711092e, 0 0 0 3px var(--color-danger-wash)}.race-track[data-density=compact] .finish-badge-stack{bottom:.4rem;right:.4rem}.race-track[data-density=compact] .finish-arrival-badge,.race-track[data-density=compact] .finish-rank-badge{font-size:.64rem}.horse-token small{max-width:5.7rem;color:var(--color-text-strong);text-align:center;text-overflow:ellipsis;text-shadow:none;white-space:nowrap;background:#fffaf0c7;border:1px solid #ffffff94;border-radius:999px;padding:1px 5px;font-size:.7rem;font-weight:800;line-height:1.12;overflow:hidden}.race-track[data-density=compact] .horse-token small{max-width:4.8rem;padding-inline:4px;font-size:.62rem}.horse-sprite{width:var(--horse-display-width,112px);height:var(--horse-display-height,92px);transform-origin:50% 78%;display:block;position:relative}.race-track[data-density=compact] .horse-sprite{width:var(--horse-display-width);height:var(--horse-display-height);--horse-display-width:88px!important;--horse-display-height:72px!important}.horse-sprite-frame{transform-origin:50%;background-position:0 100%;background-repeat:no-repeat;background-size:auto 100%;position:absolute;inset:0}.horse-sprite[data-animation-kind=pose] .horse-sprite-frame{background-position:bottom;background-size:contain}.horse-sprite:before{content:"";background:#2b241842;border-radius:999px;height:8%;position:absolute;bottom:7%;left:16%;right:12%;transform:translateY(.7rem)}.horse-sprite:after{opacity:0;content:"";pointer-events:none;position:absolute}.horse-sprite[data-facing=right] .horse-sprite-frame{transform:scaleX(-1)}.horse-sprite[data-animation-kind=sheet] .horse-sprite-frame{animation-duration:var(--horse-animation-duration,.52s);animation-name:horse-sheet-cycle-4;animation-timing-function:step-end;animation-iteration-count:infinite}.horse-sprite[data-animation-kind=sheet][data-frame-count="6"] .horse-sprite-frame{animation-name:horse-sheet-cycle-6}.horse-sprite[data-animation-kind=sheet][data-frame-count="8"] .horse-sprite-frame{animation-name:horse-sheet-cycle-8}.horse-sprite[data-animation=default-pose] .horse-sprite-frame{animation:horse-pose-idle var(--horse-animation-duration,.98s) ease-in-out infinite alternate}.horse-sprite[data-animation=sick-pose] .horse-sprite-frame{animation:horse-pose-sick var(--horse-animation-duration,.52s) ease-in-out infinite alternate}.horse-sprite[data-animation=run-pose] .horse-sprite-frame{animation:horse-pose-run var(--horse-animation-duration,.52s) step-end infinite}.horse-sprite[data-animation=attack-pose] .horse-sprite-frame{animation:horse-pose-attack var(--horse-animation-duration,.56s) ease-in-out infinite}.horse-sprite[data-animation=defend-pose] .horse-sprite-frame{animation:horse-pose-defend var(--horse-animation-duration,.48s) ease-in-out infinite}.horse-sprite[data-animation=counter-pose] .horse-sprite-frame{animation:horse-pose-counter var(--horse-animation-duration,.52s) ease-in-out infinite}.horse-sprite[data-animation=hit-pose] .horse-sprite-frame{animation:horse-pose-hit var(--horse-animation-duration,.42s) ease-out infinite}.horse-sprite[data-state=attacking]{animation:.56s ease-in-out infinite horse-lunge}.horse-sprite[data-state=defending]{animation:.48s ease-in-out infinite horse-defend}.horse-sprite[data-state=countering]{animation:.52s ease-in-out infinite horse-counter}.horse-sprite[data-state=reverse] .horse-sprite-frame{animation-direction:reverse}.horse-sprite[data-state=reverse]{animation:.56s ease-in-out infinite horse-reverse-retreat}.horse-sprite[data-state=offCourse]{animation:.68s ease-in-out infinite alternate horse-off-course}.horse-sprite[data-state=hit],.horse-sprite[data-state=stunned]{animation:.42s ease-out infinite horse-hit}.horse-sprite[data-state=vomiting]{animation:sick-sway var(--horse-animation-duration,.52s) ease-in-out infinite alternate}.horse-sprite[data-state=finishStall]{animation:finish-stall var(--horse-animation-duration,.52s) ease-in-out infinite alternate}@media (prefers-reduced-motion:reduce){.horse-sprite,.horse-sprite-frame{animation:none!important}.horse-sprite[data-animation-kind=sheet] .horse-sprite-frame{background-position-x:calc(-1 * var(--horse-reduced-frame-offset,0px))}.finish-arrival-badge{animation:none!important}}.horse-sprite[data-mode=race][data-state=vomiting]:after{opacity:1;background:#76c94e;border-radius:999px;width:1.1rem;height:.42rem;top:39%;right:-.32rem;transform:rotate(12deg)}.horse-sprite[data-mode=race][data-state=stunned]:after{clip-path:polygon(50% 0,61% 35%,98% 35%,68% 56%,79% 94%,50% 70%,21% 94%,32% 56%,2% 35%,39% 35%);opacity:1;background:#f7d154;width:.78rem;height:.78rem;top:4%;left:8%}.horse-sprite[data-mode=race][data-state=finishStall]:after{opacity:1;background:linear-gradient(90deg,#111 0 25%,#0000 25% 50%,#111 50% 75%,#0000 75%),#fff;border:1px solid #1711098c;width:1.35rem;height:.85rem;top:14%;left:-.25rem}.event-bubble{z-index:6;border-radius:var(--radius-control);max-width:min(50%,184px);max-height:42px;color:var(--color-accent-contrast);background:linear-gradient(180deg, #ffd95e, var(--color-accent));overflow-wrap:anywhere;word-break:break-word;border:2px solid #171109db;padding:4px 8px;font-size:.78rem;font-weight:900;line-height:1.15;position:absolute;top:6px;right:7px;overflow:hidden;box-shadow:0 2px #17110947,0 0 0 3px #ffffff2e}.event-bubble:after{background:var(--color-accent);content:"";border-bottom:2px solid #171109db;border-right:2px solid #171109db;width:.65rem;height:.65rem;position:absolute;bottom:-.38rem;right:1.2rem;transform:rotate(45deg)}.lane-status-row{grid-column:2;gap:4px;min-width:0;min-height:38px;display:grid}.race-track[data-density=compact] .lane-status-row{gap:2px;min-height:28px}.condition-meter{grid-template-columns:auto minmax(0,1fr) 34px;align-items:center;gap:6px;min-width:0;display:grid}.race-track[data-density=compact] .condition-meter{grid-template-columns:auto minmax(0,1fr) 28px;gap:4px}.condition-meter-label,.condition-meter strong{color:var(--color-muted);font-size:.72rem;font-weight:900;line-height:1}.race-track[data-density=compact] .condition-meter-label,.race-track[data-density=compact] .condition-meter strong{font-size:.62rem}.condition-meter-track{background:#fffaf0b8;border:1px solid #1711096b;border-radius:999px;min-width:0;height:.48rem;overflow:hidden;box-shadow:inset 0 1px 2px #17110929}.condition-meter-fill{width:var(--condition-value,100%);border-radius:inherit;background:#3f9f64;height:100%;transition:width .14s ease-out;display:block}.condition-meter[data-level=strained] .condition-meter-fill{background:#d69b2d}.condition-meter[data-level=shaken] .condition-meter-fill{background:#d95c4a}.state-label{min-height:18px;color:var(--color-muted);overflow-wrap:anywhere;word-break:break-word;font-size:.82rem;font-weight:700;line-height:1.2;display:block}.race-track[data-density=compact] .state-label{min-height:14px;font-size:.7rem}.loser-reveal{border:3px solid var(--color-accent);border-radius:var(--radius-control);min-width:0;max-width:100%;color:var(--color-text-strong);background:linear-gradient(90deg, var(--color-danger-wash), transparent 48%), var(--color-result-surface);gap:8px;margin-bottom:14px;padding:18px;display:grid;overflow:hidden}@keyframes sick-sway{0%{transform:translateY(1px)rotate(-2deg)}to{transform:translateY(4px)rotate(2deg)}}@keyframes horse-pose-bob{0%{translate:0 1px}to{translate:0 -2px}}@keyframes horse-pose-idle{0%{translate:0}to{translate:0 -1px}}@keyframes horse-pose-sick{0%{translate:0 1px}to{translate:0 3px}}@keyframes horse-pose-run{0%,to{translate:0 1px;rotate:-1deg}25%{translate:0 -4px;rotate:1deg}50%{translate:1px;rotate:-2deg}75%{translate:-1px -3px;rotate:2deg}}@keyframes horse-pose-attack{0%{translate:0;rotate:0deg}45%{translate:6px -3px;rotate:-3deg}to{translate:1px;rotate:0deg}}@keyframes horse-pose-defend{0%,to{translate:0;rotate:0deg}50%{translate:-3px 2px;rotate:-4deg}}@keyframes horse-pose-counter{0%{translate:0;rotate:0deg}50%{translate:-6px -2px;rotate:4deg}to{translate:1px;rotate:0deg}}@keyframes horse-pose-hit{0%{translate:0;rotate:0deg}38%{translate:-7px 4px;rotate:-7deg}to{translate:0;rotate:0deg}}@keyframes horse-sheet-cycle-4{0%,24.999%{background-position-x:0}25%,49.999%{background-position-x:calc(var(--horse-display-width,112px) * -1)}50%,74.999%{background-position-x:calc(var(--horse-display-width,112px) * -2)}75%,to{background-position-x:calc(var(--horse-display-width,112px) * -3)}}@keyframes horse-sheet-cycle-6{0%,16.665%{background-position-x:0}16.666%,33.332%{background-position-x:calc(var(--horse-display-width,112px) * -1)}33.333%,49.999%{background-position-x:calc(var(--horse-display-width,112px) * -2)}50%,66.665%{background-position-x:calc(var(--horse-display-width,112px) * -3)}66.666%,83.332%{background-position-x:calc(var(--horse-display-width,112px) * -4)}83.333%,to{background-position-x:calc(var(--horse-display-width,112px) * -5)}}@keyframes horse-sheet-cycle-8{0%,12.499%{background-position-x:0}12.5%,24.999%{background-position-x:calc(var(--horse-display-width,112px) * -1)}25%,37.499%{background-position-x:calc(var(--horse-display-width,112px) * -2)}37.5%,49.999%{background-position-x:calc(var(--horse-display-width,112px) * -3)}50%,62.499%{background-position-x:calc(var(--horse-display-width,112px) * -4)}62.5%,74.999%{background-position-x:calc(var(--horse-display-width,112px) * -5)}75%,87.499%{background-position-x:calc(var(--horse-display-width,112px) * -6)}87.5%,to{background-position-x:calc(var(--horse-display-width,112px) * -7)}}@keyframes horse-stunned{0%{transform:translateY(.18rem)rotate(-4deg)}to{transform:translateY(.45rem)rotate(-9deg)}}@keyframes finish-stall{0%{transform:translateY(0)rotate(0)}to{transform:translateY(-.12rem)rotate(3deg)}}@keyframes finish-hop{0%,to{opacity:0;transform:translate(-50%)scale(.8)}45%{opacity:.85;transform:translate(-50%,-8px)scale(1)}}@keyframes finish-arrival-pop{0%{opacity:0;transform:translateY(5px)scale(.86)}45%{opacity:1;transform:translateY(-2px)scale(1.05)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes finish-shimmy{0%,to{opacity:0;transform:translate(-50%)scale(.8)}35%{opacity:.85;transform:translate(calc(-50% - 5px),-2px)scale(.95)}70%{opacity:.7;transform:translate(calc(5px - 50%),-2px)scale(1)}}@keyframes finish-sparkle{0%{opacity:0;transform:translate(-50%)scale(.7);box-shadow:0 0 #fff1a600}45%{opacity:.9;transform:translate(-50%,-3px)scale(1.1);box-shadow:0 0 14px #fff1a6e0}to{opacity:0;transform:translate(-50%,-6px)scale(1.25);box-shadow:0 0 #fff1a600}}@keyframes horse-lunge{0%{transform:translate(0)rotate(0)}45%{transform:translate(7px)rotate(-2deg)}to{transform:translate(2px)rotate(0)}}@keyframes horse-counter{0%{transform:translate(0)rotate(0)}50%{transform:translate(-6px)rotate(3deg)}to{transform:translate(1px)rotate(0)}}@keyframes horse-reverse-retreat{0%{transform:translate(0)rotate(0)}50%{transform:translate(-6px)rotate(2deg)}to{transform:translate(-2px)rotate(0)}}@keyframes horse-off-course{0%{transform:translate(0)rotate(0)}55%{transform:translate(-5px,-7px)rotate(-4deg)}to{transform:translate(-8px,-9px)rotate(-6deg)}}@keyframes horse-hit{0%{transform:translate(0)rotate(0)}40%{transform:translate(-5px)rotate(-2deg)}to{transform:translate(0)rotate(0)}}@keyframes horse-defend{0%{transform:translate(0)rotate(0)}50%{transform:translate(-4px)rotate(-2deg)}to{transform:translate(0)rotate(0)}}.loser-reveal p,.loser-reveal strong,.loser-reveal span{overflow-wrap:anywhere;word-break:break-word;min-width:0;max-width:100%}.loser-reveal p{color:var(--color-muted);margin-bottom:0;font-weight:800}.loser-reveal strong{font-size:2.8rem;line-height:.98;display:block}.coffee-buyer-line{gap:2px;display:grid}.candidate-list{gap:8px;margin:0;padding-left:18px;display:grid}.candidate-list li{gap:2px;display:grid}.loser-reveal span{color:var(--color-accent);font-weight:900}.tournament-notice{border:2px solid var(--color-accent);border-radius:var(--radius-control);color:var(--color-text-strong);background:var(--color-cut-in-major);overflow-wrap:anywhere;margin-bottom:14px;padding:12px;font-weight:900;line-height:1.45}.result-summary{grid-template-columns:1fr;gap:10px;margin-bottom:14px;display:grid}.result-summary p,.replay-log li{color:var(--color-log-text);overflow-wrap:anywhere;line-height:1.5}.replay-log ol{gap:8px;margin:0;padding-left:22px;display:grid}.replay-log-actor{color:var(--color-text-strong);font-weight:800}@media (width>=480px){.app-shell{padding:18px}.button-row{grid-template-columns:repeat(3,minmax(0,1fr))}.setup-button-row{grid-template-columns:repeat(2,minmax(0,1fr))}.name-row{grid-template-columns:28px minmax(0,1fr) minmax(76px,auto)}.name-row button{grid-column:auto}.race-lane{grid-template-columns:92px minmax(0,1fr)}}@media (width>=720px){.app-shell{align-items:center;padding:28px}.screen-header{margin-bottom:22px}h1,.race-header h1{font-size:3.7rem}.horse-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.setup-button-row{grid-template-columns:repeat(4,minmax(0,1fr))}.result-summary{grid-template-columns:2fr 1fr}.race-track{padding:14px 10px 10px}.race-track[data-density=compact]{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 10px;padding:12px 10px 10px;display:grid}.race-lane{grid-template-columns:116px minmax(0,1fr);min-height:112px}.race-track[data-density=compact] .race-lane{grid-template-columns:88px minmax(0,1fr);min-height:98px}.lane-track{height:116px}.race-track[data-density=compact] .lane-track{height:92px}.race-track[data-density=compact] .horse-sprite{width:var(--horse-display-width);height:var(--horse-display-height);--horse-display-width:88px!important;--horse-display-height:72px!important}.loser-reveal strong{font-size:4.8rem}}
