:root{color-scheme:light;--ink:#183c36;--muted:#61776b;--paper:#f5f2e8;--line:#d3dbce;--mint:#e1e9dc;--gold:#ad672a;--red:#aa3e3e}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.55 system-ui,-apple-system,sans-serif}main{max-width:1120px;margin:auto;padding:26px 34px}header,footer,.journey,.readout{display:flex;justify-content:space-between;align-items:center;gap:15px}header{border-bottom:1px solid var(--line);padding-bottom:20px;font-size:11px;color:var(--muted)}.brand{font-size:22px;letter-spacing:2px;color:var(--ink);font-weight:800;text-decoration:none}.brand span{font-size:10px;letter-spacing:2px;margin-left:16px}h1{font:normal clamp(38px,5vw,64px)/1.06 Georgia,serif;margin:16px 0}h1 em{color:#407963;font-weight:normal}.intro{display:flex;align-items:center;justify-content:space-between;padding:32px 0 38px}.eyebrow{font-size:10px;font-weight:750;letter-spacing:2px;margin:0;color:var(--muted)}.lede{color:var(--muted);margin-bottom:0}.ticket{border:1px dashed #7a947d;border-radius:12px;padding:18px 32px;transform:rotate(5deg);background:#e6ebde;text-align:center}.ticket span{display:block;font-size:9px;letter-spacing:2px}.ticket strong{font:42px Georgia;display:block;padding:8px}.workspace{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(255px,1fr);gap:32px;align-items:start}.play{background:#fffdf7;border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:0 10px 40px #183c3608}.journey{padding:22px 24px;border-bottom:1px solid var(--line)}h2{font:25px Georgia;margin:4px 0 10px}.journey h2{margin:3px 0 0;font-size:23px}select,button{font:inherit;color:var(--ink);background:#fffdf7;border:1px solid #c4d0c1;border-radius:7px}select{font-size:12px;padding:9px;max-width:150px}button{cursor:pointer;touch-action:manipulation}button:hover{background:#e6eddf}button:focus-visible,select:focus-visible{outline:3px solid #467e67;outline-offset:3px}button:disabled{opacity:.45;cursor:default}.mapframe{padding:24px 20px 12px}#board{display:grid;max-width:480px;margin:auto;gap:2px;user-select:none}.clue{display:flex;align-items:center;justify-content:center;font-weight:750;font-size:14px;min-width:0;color:var(--muted)}.clue.match{color:#2c7758;background:#dcebd8;border-radius:6px}.clue.over{color:var(--red);background:#f7ded2;border-radius:6px}.station{background:var(--ink);color:#fff7d3;border-radius:50%;width:25px;height:25px;font:bold 12px system-ui;justify-self:center;align-self:center;display:grid;place-items:center}.cell{aspect-ratio:1;padding:0;border-radius:5px;background:#edf0e5;border:1px solid #dce3d4;position:relative;min-width:0}.cell svg{display:block;width:100%;height:100%;overflow:visible}.cell.selected{outline:3px solid #467e67;outline-offset:-3px;background:#d4e5cd}.cell.fixed{background:#f3e7cc}.cell.fixed.selected{outline-color:#ad672a}.cell.error{box-shadow:inset 0 0 0 2px #bd6d56}.cell .sleeper{stroke:#b5b8a5;stroke-width:4}.cell .rail{stroke:var(--ink);stroke-width:4.5;stroke-linejoin:round;fill:none}.cell.fixed .rail{stroke:var(--gold)}.cell .grass{fill:#73987b;font:18px system-ui}.cell .lock{fill:#9b692f;font:9px system-ui}.readout{padding:13px 24px 20px;align-items:start;font-size:12px}.readout #status{max-width:75%}#progress{white-space:nowrap;color:var(--muted)}aside{padding:10px 0}aside>p{color:var(--muted);font-size:13px}aside h2{font-size:30px;margin-top:8px}#palette{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin:20px 0 13px}#palette button{padding:5px 3px 3px;display:flex;align-items:center;flex-direction:column;background:#fffdf7}#palette button.active{background:var(--ink);color:white;border-color:var(--ink)}#palette svg{width:37px;height:37px}#palette small{font-size:9px;opacity:.65}.tools{display:flex;gap:6px}.tools button{flex:1;font-size:12px;padding:10px 4px}.tools small{opacity:.6}.rules{border-top:1px solid var(--line);margin-top:24px;padding-top:6px}h3{font-size:14px}ol{padding-left:20px;color:var(--muted);font-size:12px}li{padding:0 0 8px 3px}.keyboard{font-size:11px;color:var(--muted);line-height:1.8}details{font-size:11px;border-top:1px solid var(--line);padding-top:12px}summary{cursor:pointer}a{color:#31775b}footer{font-size:10px;letter-spacing:1px;color:var(--muted);padding:28px 0}#win{background:#dcebd8;border-top:1px solid #bed1b4;text-align:center;padding:20px}#win strong{font:27px Georgia}#win p{font-size:12px}#win button{background:var(--ink);color:white;padding:9px 24px}#win[hidden]{display:none}.train{fill:#e28142;stroke:#fff6db;stroke-width:1;filter:drop-shadow(0 1px 2px #183c3644)}@media(max-width:760px){main{padding:20px}.intro{padding:24px 0}.ticket{padding:12px 16px}.ticket strong{font-size:30px}.ticket span{font-size:7px}.workspace{grid-template-columns:1fr;gap:20px}.play{max-width:570px;width:100%;margin:auto}aside{max-width:570px;width:100%;margin:auto}.brand span{display:none}h1{font-size:40px}.journey{padding:17px}.mapframe{padding:18px 10px 10px}.readout{padding:12px 17px}#palette{grid-template-columns:repeat(8,1fr)}#palette svg{width:30px;height:30px}.tools button{padding:12px}.rules{margin-top:18px}header #saved{font-size:9px}aside h2{font-size:26px}}@media(max-width:420px){main{padding:16px}.ticket{display:none}.intro h1{font-size:43px}.journey h2{font-size:21px}.journey select{max-width:120px}#palette{gap:4px}#palette svg{width:26px;height:26px}}@media(prefers-reduced-motion:reduce){.train{display:none}}#palette .rail{stroke:currentColor;stroke-width:4.5;fill:none;stroke-linejoin:round}#palette .grass{fill:currentColor;font:24px system-ui}
