: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}.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-map text{fill:var(--ink);pointer-events:none;font:800 18px "M PLUS Rounded 1c",sans-serif}.formation-horse text{font-size:15px}.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{color:#fff;white-space:nowrap;background:#2b1840e6;border:2px solid #fff;border-radius:999px;padding:3px 8px;font-size:clamp(10px,1vw,13px);font-weight:800;position:absolute;transform:translate(-50%,-100%)}.horse-label.selected{z-index:2;border-color:var(--ink);background:var(--sun);color:var(--ink);padding:5px 10px}.replay-hud{z-index:3;pointer-events:none;color:#fff;position:absolute;inset:0}.hud-heading{justify-content:space-between;gap:10px;font-size:clamp(12px,1.25vw,16px);font-weight:800;display:flex;position:absolute;top:12px;left:12px;right:12px}.hud-heading span{background:#2b1840d9;border:2px solid #fff;border-radius:999px;padding:7px 12px}.hud-progress{background:#2b1840d9;border:2px solid #fff;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-size:clamp(12px,1.3vw,16px);font-weight:800;display:flex;position:absolute;bottom:46px;left:14px}.hud-timer{border:2px solid var(--ink);background:var(--sun);color:var(--ink);font-variant-numeric:tabular-nums;border-radius:999px;padding:4px 12px;font-size:clamp(16px,2vw,28px);font-weight:800;position:absolute;bottom:42px;right:14px}.hud-disclaimer{background:#2b1840e6;padding:8px 16px;font-size:clamp(10px,1vw,12px);font-weight:700;position:absolute;bottom:0;left:0;right:0}.finish-card{z-index:4;border:var(--line);max-width:min(50%,430px);max-height:62%;color:var(--ink);box-shadow:6px 6px 0 var(--ink);background:#fff8d4;border-radius:20px;padding:16px 20px;position:absolute;top:18%;right:4%;overflow:auto}.finish-card h2{margin:0 0 8px;font-size:clamp(16px,1.8vw,22px)}.finish-card ol{margin:0;padding-left:22px;font-size:clamp(12px,1.1vw,15px);font-weight:700;line-height:1.7}.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}.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%}.hud-heading{top:8px;left:8px;right:8px}.hud-heading span:last-child{display:none}.hud-progress{bottom:32px;left:8px}.hud-progress span{display:none}.hud-timer{bottom:30px;right:8px}.hud-disclaimer{padding:4px 8px}.horse-label:not(.selected){display:none}.finish-card{max-width:68%;padding:8px 10px;top:16%;right:2%}.finish-card li:nth-child(n+4){display:none}}
