:root{--ink:#2b1840;--paper:#fff4ea;--card:#fffdf8;--pink:#ff4d8d;--sun:#ffd84a;--mint:#3ad68a;--sky:#45c8ff;--line:3px solid var(--ink);--shadow:6px 6px 0 var(--ink);--radius:24px;color:var(--ink);background:var(--paper);font-family:"M PLUS Rounded 1c",Hiragino Maru Gothic ProN,ui-rounded,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at 6% 8%, #ffd0e6 0 120px, transparent 122px), radial-gradient(circle at 96% 4%, #ffe7a3 0 110px, transparent 112px), radial-gradient(circle at 94% 92%, #c9f4ff 0 150px, transparent 152px), radial-gradient(circle at 4% 94%, #d4ffe4 0 120px, transparent 122px), var(--paper);min-width:320px;min-height:100vh;margin:0}button,input,select{font:inherit;color:inherit}button{cursor:pointer}button:focus-visible,select:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid var(--pink);outline-offset:3px}button,.home-actions a,.app-header nav a{border:var(--line);box-shadow:3px 3px 0 var(--ink);background:#fff;border-radius:999px;font-weight:800}button:hover,.home-actions a:hover,.app-header nav a:hover{box-shadow:4px 4px 0 var(--ink);transform:translate(-1px,-1px)}button:active,.home-actions a:active{box-shadow:0 0 0 var(--ink);transform:translate(2px,2px)}button:disabled{cursor:wait;opacity:.6;transform:none}.replay-app{width:min(1440px,100% - 40px);margin:0 auto;padding:28px 0 72px}.app-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:20px;margin-bottom:22px;display:flex}.brand{align-items:center;gap:14px;display:flex}.brand-mark{border:var(--line);background:var(--sun);width:58px;height:58px;box-shadow:4px 4px 0 var(--ink);border-radius:18px;place-items:center;font-size:28px;font-weight:800;display:grid}.app-header p{color:var(--pink);letter-spacing:.16em;margin:0;font-size:12px;font-weight:800}.app-header h1{letter-spacing:.01em;margin:0;font-size:clamp(22px,3vw,34px);font-weight:800}.app-header nav{flex-wrap:wrap;gap:8px;display:flex}.app-header nav a{color:var(--ink);padding:10px 16px;font-size:14px;text-decoration:none}.app-header nav a[aria-current=page]{background:var(--pink);color:#fff}.home-hero{border:4px solid var(--ink);color:#fff;min-height:420px;box-shadow:10px 10px 0 var(--ink);background:radial-gradient(circle at 88% 18%,#ffe56a 0 16%,#0000 17%),radial-gradient(circle at 12% 86%,#7dffc8 0 12%,#0000 13%),linear-gradient(135deg,#ff4d8d 0%,#ff7a59 46%,#7a5cff 100%);border-radius:36px;flex-direction:column;justify-content:center;align-items:flex-start;margin:8px 0 0;padding:clamp(28px,6vw,72px);display:flex;position:relative;overflow:hidden}.home-hero .eyebrow{color:var(--sun);letter-spacing:.08em;background:#2b1840cc;border:3px solid #fff;border-radius:999px;margin:0;padding:6px 12px;font-size:13px;font-weight:800}.home-hero h2{margin:16px 0 8px;font-size:clamp(34px,6vw,68px);font-weight:800;line-height:1.18}.hero-copy{max-width:34em;margin:0;font-size:16px;font-weight:700;line-height:1.7}.home-actions{flex-wrap:wrap;gap:12px;margin-top:26px;display:flex}.home-actions a{color:var(--ink);background:var(--sun);padding:14px 20px;text-decoration:none}.home-actions a+a{background:#fff}.home-points{grid-template-columns:repeat(3,1fr);gap:14px;margin:18px 0 0;padding:0;list-style:none;display:grid}.home-points li{border:var(--line);box-shadow:5px 5px 0 var(--ink);border-radius:22px;flex-direction:column;gap:6px;padding:18px;font-weight:700;line-height:1.5;display:flex}.home-points li:first-child{background:#ffe4f1}.home-points li:nth-child(2){background:#fff4c4}.home-points li:nth-child(3){background:#d9fff0}.home-points strong{font-size:22px}.import-panel,.course-editor,.formation-editor,.demo-intro,.saved-races{border:var(--line);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow);margin:8px 0 22px;padding:24px}.import-panel h2,.course-editor h2,.formation-editor h2,.demo-intro h2,.saved-races h2{margin:0 0 8px;font-size:26px;font-weight:800}.import-panel p,.course-editor p,.formation-editor p,.demo-intro p,.scene-help,.replay-notes{color:#5c4670;margin:8px 0;font-size:14px;font-weight:700;line-height:1.7}.import-form{margin-top:18px}.url-example{overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;margin-top:6px;font-size:.85em;display:block}.initial-settings .replay-mode-picker{margin-top:18px}.replay-mode-picker .mode-warning{color:#704508;background:#fff4c4;border:2px solid #c58418;border-radius:14px;padding:12px 14px}.race-url-settings{border-top:2px solid #f3e4d8;margin-top:18px;padding-top:8px}.import-form label,.course-editor label,.formation-editor label,.preset-save label,.replay-controls label{white-space:nowrap;align-items:center;gap:8px;margin:8px 12px 8px 0;font-size:14px;font-weight:800;display:inline-flex}.import-form>label{display:block}.import-input-row{flex-wrap:wrap;gap:10px;display:flex}input,select{border:var(--line);background:#fff;border-radius:14px;min-height:42px;padding:8px 12px}.import-input-row input{flex:380px;min-width:0}.import-input-row button,.course-editor button,.preset-save button,.preset-chip,.preset-delete{min-height:42px;padding:8px 16px}.import-input-row button[type=submit],.course-editor button,.preset-save button[type=submit],.replay-controls button:first-child{background:var(--sun)}.import-status:empty,[data-role=course-error]:empty{display:none}.import-status,[data-role=course-error]:not(:empty){border:var(--line);background:#e8fff4;border-radius:14px;margin-top:12px;padding:10px 14px}.import-panel .error,[data-role=course-error]:not(:empty){color:#9d1638;background:#ffe4ec}.import-result{border-top:3px dashed #efd3c4;margin-top:22px;padding-top:18px}.import-panel .notice{border:var(--line);background:#fff4c4;border-radius:14px;padding:12px 14px}.import-panel a{color:#c2185b;font-weight:800}.import-panel details,.import-result details{border:var(--line);background:#fff;border-radius:16px;margin:14px 0;padding:12px 14px;font-size:14px;line-height:1.7}.import-panel summary{cursor:pointer;font-weight:800}.import-panel ul{padding-left:22px}.table-scroll{border:var(--line);border-radius:16px;margin:12px 0;overflow-x:auto}.import-panel table{border-collapse:collapse;white-space:nowrap;text-align:left;width:100%;font-size:13px}.import-panel caption{text-align:left;background:#fff4c4;padding:12px;font-weight:800}.import-panel th,.import-panel td{border-bottom:2px solid #f3e4d8;padding:10px 12px}.import-panel th{background:#ffe4f1;font-weight:800}.import-panel tr:last-child td{border-bottom:0}.frame-badge{border:2px solid var(--ink);border-radius:8px;place-items:center;width:28px;height:28px;font-weight:800;display:inline-grid}.horse-link{box-shadow:none;color:#c2185b;text-underline-offset:3px;background:0 0;border:0;border-radius:999px;padding:4px 8px;font-weight:800;text-decoration:underline}.horse-link:hover{box-shadow:none;background:#ffe4f1;transform:none}.horse-link[aria-pressed=true]{background:var(--pink);color:#fff;text-decoration:none}.import-panel h3{margin:16px 0 8px;font-size:16px}.import-panel dl{grid-template-columns:max-content minmax(0,1fr);gap:8px 16px;font-size:14px;display:grid}.import-panel dt{font-weight:800}.import-panel dd{overflow-wrap:anywhere;margin:0}.course-editor input{width:96px}.formation-map{border:var(--line);touch-action:none;-webkit-user-select:none;user-select:none;background:#d8ffe8;border-radius:22px;width:100%;margin:8px auto 0;display:block}.formation-tools{flex-wrap:wrap;align-items:center;gap:10px 16px;display:flex}:is(.formation-tools label,.replay-controls label:has(input[type=range])){align-items:center;gap:8px;display:inline-flex}.formation-tools input[type=range],.replay-controls [data-role=camera-zoom]{width:110px}.formation-map text{fill:var(--ink);pointer-events:none;font:800 18px "M PLUS Rounded 1c",sans-serif}.formation-horse text{font-size:11px}.formation-horse{cursor:grab}.formation-horse:active{cursor:grabbing}.preset-save{flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;display:flex}.preset-save input{width:min(100%,280px)}.preset-save p{margin:0}.preset-list{flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;display:flex}.preset-chip-group{align-items:center;gap:8px;display:inline-flex}.preset-delete{background:var(--pink);color:#fff}.replay-section{max-width:1280px;margin:0 auto}.replay-stage{isolation:isolate;aspect-ratio:16/9;border:4px solid var(--ink);box-shadow:8px 8px 0 var(--ink);background:#bff6d4;border-radius:28px;position:relative;overflow:hidden}.replay-scene{position:absolute;inset:0;overflow:hidden}.replay-scene canvas{width:100%;height:100%;display:block}.stage-placeholder{color:var(--ink);text-align:center;place-items:center;margin:0;padding:20px;font-size:clamp(14px,2vw,22px);font-weight:800;display:grid;position:absolute;inset:0}.horse-labels{pointer-events:none;position:absolute;inset:0;overflow:hidden}.horse-label{box-sizing:border-box;color:#fff;text-align:center;white-space:nowrap;background:#2b1840e6;border:2px solid #fff;border-radius:50%;place-items:center;width:clamp(24px,2.3vw,32px);height:clamp(24px,2.3vw,32px);padding:0;font-size:clamp(11px,1.2vw,15px);font-weight:800;display:grid;position:absolute;transform:translate(-50%,-100%)}.horse-label.selected{z-index:2;color:#fff;background:#2b1840;border-width:4px;width:clamp(34px,3.2vw,44px);height:clamp(34px,3.2vw,44px);font-size:clamp(14px,1.6vw,20px);box-shadow:0 0 0 2px #2b1840,0 0 0 4px #fff,0 0 14px 5px #fffa}.position-wipe{z-index:5;color:#fff;background:#2b1840ed;border:2px solid #fff;border-radius:14px;width:clamp(190px,28%,330px);padding:7px 9px 3px;position:absolute;top:14px;right:14px;box-shadow:0 4px 16px #20102b66}.position-wipe-heading{justify-content:space-between;align-items:center;gap:6px;font-size:clamp(10px,1vw,13px);display:flex}.position-wipe-heading span{font-size:.85em}.position-wipe svg{width:100%;height:auto;display:block}.position-track{fill:#a7d8b0;stroke:#fff;stroke-width:2px}.position-track-center{fill:none;stroke:#fff9;stroke-width:1px;stroke-dasharray:5 5}.position-dot{cursor:pointer}.position-dot circle{fill:#fff;stroke-width:2.8px}.position-dot text{fill:#261b2d;pointer-events:none;font-size:11px;font-weight:900}.position-dot.selected circle{fill:#2b1840;stroke-width:4px;r:13;filter:drop-shadow(0 0 4px #fff)}.position-dot.selected text{fill:#fff;font-size:13px}.position-dot:focus-visible{outline:none}.position-dot:focus-visible circle{stroke:#ff4d8b;stroke-width:4px}.replay-controls{border:var(--line);box-shadow:var(--shadow);background:#fff;border-radius:22px;flex-wrap:wrap;align-items:center;gap:10px 12px;margin-top:16px;padding:14px;font-size:14px;font-weight:800;display:flex}.replay-controls button,.replay-controls select{min-height:40px;padding:6px 14px}.replay-controls label{align-items:center;gap:8px;display:flex}.horse-highlight{position:relative}.horse-highlight summary{cursor:pointer;padding:10px 12px;font-size:14px;font-weight:800}.horse-highlight-panel{z-index:10;border:var(--line);background:#fff;border-radius:14px;width:min(310px,75vw);padding:14px;position:absolute;bottom:calc(100% + 8px);left:0;box-shadow:0 4px 16px #20102b33}.horse-highlight-panel p{margin:0 0 10px;font-size:13px}[data-role=highlight-horses]{flex-wrap:wrap;gap:6px;margin-bottom:12px;display:flex}[data-role=highlight-horses] button[aria-pressed=true]{color:#fff;background:#2b1840}.replay-controls .timeline-label{flex:240px}.replay-controls input[type=range]{accent-color:var(--pink);flex:1}.replay-controls output{font-variant-numeric:tabular-nums;min-width:118px}[hidden]{display:none!important}@media (width<=760px){.home-points{grid-template-columns:1fr}}@media (width<=600px){.replay-app{width:calc(100% - 24px);padding-top:18px}.home-hero{border-radius:26px;min-height:0}.import-panel,.course-editor,.formation-editor,.demo-intro,.saved-races{padding:16px}.import-input-row input{flex-basis:100%}.position-wipe{width:185px;padding:4px 5px 0;top:8px;right:8px}.horse-label{width:22px;height:22px;font-size:10px}}
