html,body{background:var(--ground);height:100%;color:var(--ink);margin:0;font:12px/1.3 ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;overflow:hidden}#yard{touch-action:none;cursor:grab;isolation:isolate;position:fixed;inset:0}#yard canvas{display:block}#labels{pointer-events:none;position:absolute;inset:0}.label{white-space:nowrap;letter-spacing:.01em;background:var(--pill);border-radius:9px;padding:1px 7px}.label.depot{border-radius:12px;padding:2px 10px;font-size:15px;font-weight:500}.label.flow{background:0 0;font-weight:500}.label.stage{font-size:11px}.label.stage.siding{font-style:italic}.label.group,.label.goods,.label.plan,.label.fuel,.label.now{font-size:10px}.label.count,.label.now{font-weight:600}.label.crew,.label.peer,.label.wire,.label.tower{font-weight:500}.label.plan:empty,.label.fuel:empty,.label.now{display:none}body.past .label.now{display:block}#yard.far .label.group,#yard.far .label.plan,#yard.far .label.fuel.plain{display:none}#tip{white-space:pre-line;pointer-events:none;background:var(--pill);border-radius:10px;max-width:340px;padding:7px 11px;display:none;position:fixed;box-shadow:0 1px 5px #00000029}#note{background:var(--pill);border-radius:9px;padding:2px 9px;font-size:11px;position:fixed;bottom:8px;left:10px}#star{position:fixed;top:10px;right:10px}#star[hidden]{display:none}#star a{color:#1f262d;background:#fff;border-radius:12px;grid-template-columns:auto auto;place-items:center;gap:2px 12px;width:max-content;padding:12px;text-decoration:none;display:grid;box-shadow:0 1px 6px #1f262d59}#star img.mark{width:52px;height:51px}#star img.qr{width:128px;height:128px;image-rendering:pixelated}#star span{text-align:center;grid-column:1/-1;font-size:13px;font-weight:600}body.replay #note{bottom:54px}#bar{background:var(--pill);align-items:center;gap:10px;padding:9px 12px;display:flex;position:fixed;bottom:0;left:0;right:0}#bar[hidden]{display:none}#bar button{border:1px solid color-mix(in srgb, var(--ink) 30%, transparent);font:inherit;color:inherit;cursor:pointer;background:0 0;border-radius:11px;padding:3px 10px}#bar button[aria-pressed=true]{border-color:var(--ink);color:var(--pill);background:var(--ink)}#play{min-width:56px}#demo{border:1px solid var(--ink);color:var(--pill);background:var(--ink);border-radius:11px;padding:3px 10px}#demo[hidden]{display:none}#speeds{gap:3px;display:flex}#scrub{min-width:80px;accent-color:var(--ink);flex:1}#clock{font-variant-numeric:tabular-nums;white-space:nowrap}#event{white-space:nowrap;text-overflow:ellipsis;flex:0 34%;overflow:hidden}@media (width<=640px){#bar{overflow-x:auto}#bar button,#demo,#clock{flex:none}}#card{box-sizing:border-box;overflow-wrap:anywhere;color:#1f262d;background:#fffffff2;border-radius:4px;width:min(360px,100vw - 20px);max-height:calc(100% - 20px);padding:10px 12px;position:fixed;top:10px;right:10px;overflow:auto;box-shadow:0 1px 6px #1f262d59}body.replay #card{max-height:calc(100% - 74px)}#card .id{color:#b4533c;font-weight:700}#card h2{margin:2px 0 8px;font-size:14px}#card dl{grid-template-columns:max-content 1fr;gap:2px 10px;margin:0;display:grid}#card dt{color:#4f5a66}#card dd{margin:0}#card h3{color:#4f5a66;border-top:1px solid #1f262d26;margin:10px 0 2px;padding-top:8px;font-size:11px}#card p{white-space:pre-wrap;margin:0}#card p.body{margin-top:10px}#card p.remark{color:#4f5a66;margin-top:10px;font-style:italic}#board{box-sizing:border-box;color:#fff;background:#16266b;border-radius:4px;width:min(1400px,92vw);max-height:calc(100% - 24px);font-family:Arial Narrow,ui-sans-serif,system-ui,sans-serif;font-stretch:75%;position:fixed;top:12px;left:50%;overflow:auto;transform:translate(-50%);box-shadow:0 2px 14px #00000073}#board[hidden]{display:none}body.replay #board{max-height:calc(100% - 74px)}#board .band{background:#eb0000;justify-content:space-between;align-items:center;gap:10px;padding:6px 12px;display:flex;position:sticky;top:0}#board h2{letter-spacing:.02em;margin:0;font-size:19px;font-weight:700}#board .band button{font:inherit;color:#fff;cursor:pointer;background:0 0;border:1px solid #fff;border-radius:11px;padding:2px 12px;font-size:13px}#board table{border-collapse:collapse;width:100%;font-size:14px}#board th,#board td{text-align:left;vertical-align:top;overflow-wrap:anywhere;padding:5px 8px}#board thead th{letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;color:#ffffffb8;font-size:11px;font-weight:400}#board tbody tr{background:linear-gradient(#0000 49%,#00000038 50%,#0000 51%);border-top:1px solid #ffffff38}#board td.time{white-space:nowrap;font-variant-numeric:tabular-nums;min-width:64px}#board td.badge{max-width:168px}#board td.badge span{white-space:nowrap;text-overflow:ellipsis;letter-spacing:.03em;text-transform:uppercase;color:#fff;background:#eb0000;border-radius:3px;max-width:100%;padding:1px 7px;font-weight:700;display:inline-block;overflow:hidden}#board td.dest{width:100%}#board td.dest .via{color:#ffffffb8;font-size:12px}#board td.platform{white-space:nowrap;min-width:88px}#board td.line{white-space:nowrap;min-width:72px}#board td.remarks{min-width:80px}#board td.remarks .amber{color:#ffb340}#board td.remarks .red{color:#fff;background:#eb0000;border-radius:3px;padding:1px 7px;font-weight:700;display:inline-block}@media (width<=640px){#board{font-size:13px}#board thead{display:none}#board table,#board tbody,#board tr,#board td{display:block}#board tbody tr{grid-template-columns:auto 1fr auto;grid-template-areas:"time badge platform""dest dest dest""line remarks remarks";gap:1px 8px;padding:6px 8px;display:grid}#board td{min-width:0;padding:0}#board td.time{grid-area:time;font-weight:700}#board td.badge{grid-area:badge;max-width:none}#board td.dest{grid-area:dest}#board td.platform{white-space:normal;text-align:right;grid-area:platform}#board td.line{white-space:normal;color:#ffffffb8;grid-area:line;font-size:12px}#board td.remarks{text-align:right;grid-area:remarks}#board td.remarks:empty{display:none}#board td.platform:before,#board td.line:before{letter-spacing:.06em;text-transform:uppercase;color:#ffffff8c;font-size:11px}#board td.platform:before{content:"Platform "}#board td.line:before{content:"Line "}}
