:root{--bg:#f4f1ea;--grid:#e2dccf;--panel:#fff;--text:#2b2b2b;--muted:#7a7466;--accent:#f0a020;--rail:#2f7de1;--rail-groove:#1d5bb0;--rail-outline:#174a91;--rail-high:#5aa0f0;--rail-low:#1f5fa8;--selected:#ffd23f;--port-convex:#f0a020;--port-concave:#19a38a;--danger:#d64545;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#1c1d21;--grid:#2a2c31;--panel:#26282d;--text:#ececec;--muted:#9a9aa0;--rail-outline:#0d2a52}}*{box-sizing:border-box}html,body,#root{background:var(--bg);height:100%;color:var(--text);touch-action:manipulation;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;margin:0;font-family:system-ui,Hiragino Sans,Noto Sans JP,sans-serif;overflow:hidden}button{font:inherit;color:inherit;border:1px solid color-mix(in srgb, var(--text) 18%, transparent);background:var(--panel);cursor:pointer;white-space:nowrap;border-radius:10px;justify-content:center;align-items:center;gap:6px;min-height:44px;padding:0 14px;display:inline-flex}button svg{flex:none;width:22px;height:22px}button:disabled{opacity:.4;cursor:default}.app{grid-template-rows:auto 1fr auto;height:100dvh;display:grid}.toolbar{background:var(--panel);border-bottom:1px solid color-mix(in srgb, var(--text) 12%, transparent);align-items:center;gap:8px;padding:8px 12px;display:flex;overflow-x:auto}.title{white-space:nowrap;margin:0 8px 0 0;font-size:20px}.status{color:var(--muted);white-space:nowrap;margin-left:auto}.stage{min-height:0;position:relative}.plan-view{touch-action:none;width:100%;height:100%;display:block}.grid-line{fill:none;stroke:var(--grid);stroke-width:1px}.rail polyline{fill:none;stroke-linecap:butt;stroke-linejoin:round}.rail .rail-hit{stroke:#0000}.rail .rail-outline{stroke:var(--rail-outline)}.rail .rail-body{stroke:var(--rail)}.rail .rail-groove{stroke:var(--rail-groove)}.rail.level-1 .rail-body{stroke:var(--rail-high)}.rail.level--1 .rail-body{stroke:var(--rail-low)}.rail .switch-lever{pointer-events:none}.rail .switch-lever line{stroke:#ffd400;stroke-linecap:round}.rail .stop-lever .stopper{pointer-events:none}.rail .stop-lever .stop-bump{fill:var(--rail);stroke:var(--rail-outline);stroke-width:3px;stroke-linejoin:round}.rail .stop-lever line{stroke-linecap:round}.rail .stop-lever .stop-handle{stroke:#ffd400}.rail .stopper .stopper-edge{stroke:var(--rail-groove)}.rail .stopper .stopper-top{stroke:var(--rail)}.rail .stopper[data-raised] .stopper-edge{stroke:var(--rail-outline);stroke-width:21px}.rail .stopper[data-raised] .stopper-top{stroke:var(--rail-high)}.rail .switch-lever polygon{fill:#ffd400;stroke:#ffd400;stroke-width:3px;stroke-linejoin:round}.rail .switch-lever circle{fill:#ffd400;stroke:#b38f00;stroke-width:1.5px}.rail[data-overlap] .rail-outline{stroke:var(--danger);stroke-width:56px}.status .warning{color:var(--danger)}.rail[data-selected] .rail-outline{stroke:var(--selected);stroke-width:64px}.port .port-hit{fill:#0000}.port .port-mark{stroke-width:5px}.port-convex .port-mark{fill:var(--port-convex);stroke:var(--port-convex)}.port-concave .port-mark{fill:var(--bg);stroke:var(--port-concave)}.port .port-arrow{fill:none;stroke:var(--text);stroke-width:5px;stroke-linecap:round;stroke-linejoin:round;opacity:.6}.level-labels text{fill:var(--text);text-anchor:middle;pointer-events:none;font-size:13px;font-weight:700}.hint{text-align:center;color:var(--muted);pointer-events:none;margin:0;position:absolute;inset:auto 0 24px}.actions{background:color-mix(in srgb, var(--panel) 92%, transparent);border-radius:14px;flex-wrap:wrap;justify-content:center;gap:8px;width:max-content;max-width:calc(100% - 32px);padding:8px;display:flex;position:absolute;bottom:16px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #00000026}.actions button{min-width:64px}.stepper{align-items:center;gap:4px;display:flex}.actions .stepper button{min-width:44px;padding:0}.stepper output{text-align:center;font-variant-numeric:tabular-nums;min-width:4.5em}.plan-overlay{z-index:1;width:0;height:0;position:absolute}.actions.floating{--slot:44px;--shift:calc(-4px - (var(--fixed-count) * (var(--slot) + 4px) - 4px) / 2);flex-wrap:nowrap;gap:4px;max-width:none;padding:4px;top:0;bottom:auto;left:0}.actions.floating[data-captions]{--slot:56px}.plan-overlay[data-side=above] .actions.floating{transform:translate(var(--shift), -100%)}.plan-overlay[data-side=below] .actions.floating{transform:translate(var(--shift), 0)}.actions.floating button{width:var(--slot);flex-direction:column;flex:none;gap:0;min-width:0;min-height:44px;padding:4px 0}.actions.floating .caption{font-size:10px;line-height:1.3}.legal{-webkit-user-select:text;user-select:text;height:100dvh;padding:24px 20px 64px;overflow-y:auto}.legal nav,.legal article{max-width:720px;margin:0 auto}.legal article{line-height:1.8}.legal h1{margin:16px 0;font-size:24px}.legal h2{margin:32px 0 8px;font-size:18px}.legal a{color:var(--rail-groove)}.legal blockquote{border-left:4px solid var(--accent);background:color-mix(in srgb, var(--accent) 12%, transparent);margin:16px 0;padding:8px 16px}.legal blockquote p{margin:0}.legal table{border-collapse:collapse;width:100%}.legal th,.legal td{border:1px solid color-mix(in srgb, var(--text) 18%, transparent);text-align:left;vertical-align:top;padding:8px 10px}.legal th{background:color-mix(in srgb, var(--text) 6%, transparent)}.panel-note a{color:inherit;white-space:nowrap}.tweaks,.side-panel{z-index:10;background:var(--panel);border-radius:14px;gap:12px;width:min(320px,100vw - 24px);max-height:calc(100dvh - 92px);padding:12px;display:grid;position:fixed;top:68px;right:12px;overflow-y:auto;box-shadow:0 4px 24px #00000040}.tweaks header,.side-panel header{justify-content:space-between;align-items:center;display:flex}.tweaks h2,.side-panel h2{margin:0;font-size:16px}.side-panel{-webkit-user-select:text;user-select:text;width:min(360px,100vw - 24px);font-size:14px}.side-panel p{margin:0;line-height:1.6}.side-panel h3{margin:0;font-size:14px}.panel-note{color:var(--muted);font-size:12px}.panel-buttons{gap:8px;display:grid}.panel-buttons button{justify-content:flex-start;gap:10px;padding:0 16px}.panel-buttons .login-button{color:#1f1f1f;background:#fff;border:1px solid #747775;gap:10px;padding:0 12px 0 16px;font-family:Google Sans,Roboto,system-ui,sans-serif;font-size:14px;font-weight:500;line-height:20px}@media (prefers-color-scheme:dark){.panel-buttons .login-button{color:#e3e3e3;background:#131314;border-color:#8e918f}}.google-logo{flex:none;margin:0 1px;display:flex}.google-logo svg{width:20px;height:20px}.panel-user{justify-content:space-between;align-items:center;gap:8px;display:flex}.panel-user>div{min-width:0;display:grid}.panel-user strong{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.panel-section{border-top:1px solid color-mix(in srgb, var(--text) 12%, transparent);gap:8px;padding-top:12px;display:grid}.panel-field{gap:4px;display:grid}.panel-field input{font:inherit;border:1px solid color-mix(in srgb, var(--text) 25%, transparent);background:var(--bg);min-height:44px;color:inherit;border-radius:10px;padding:0 12px}.panel-check{align-items:center;gap:10px;min-height:44px;display:flex}.panel-check input{flex:none;width:24px;height:24px}.panel-url{background:var(--bg);border-radius:10px;grid-template-columns:1fr auto;align-items:center;gap:6px;padding:4px 4px 4px 10px;display:grid}.panel-url output{overflow-wrap:anywhere;font-size:13px}.saved-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.saved-list li{background:var(--bg);border-radius:10px;grid-template-columns:1fr auto auto;align-items:center;gap:6px;padding:6px 6px 6px 10px;display:grid}.saved-list li[data-current]{box-shadow:inset 0 0 0 2px var(--accent)}.saved-title{min-width:0;display:grid}.saved-title strong>span{display:inline-block}.saved-list .danger,.side-panel .panel-buttons .danger{color:var(--danger)}.tweaks-note{color:var(--muted);margin:0;font-size:12px}.tweak{gap:4px;font-size:14px;display:grid}.tweak[data-modified] .tweak-label:after{content:"（変更中）";color:var(--accent)}.tweak input[type=checkbox]{width:24px;height:24px}.tweak select{font:inherit;min-height:44px}.tweak-number{align-items:center;gap:8px;display:flex}.tweak-number input{flex:1;min-height:44px}.tweak-number output{text-align:right;font-variant-numeric:tabular-nums;min-width:3em}.actions .danger{color:var(--danger)}.palette{padding:8px 12px calc(8px + env(safe-area-inset-bottom));background:var(--panel);border-top:1px solid color-mix(in srgb, var(--text) 12%, transparent);gap:8px;display:flex;overflow-x:auto}.palette-item{flex:none;justify-items:center;gap:2px;width:96px;padding:6px 4px;display:grid}.run-tray{align-items:center}.run-tray .palette-icon{color:var(--rail)}.run-hint{color:var(--muted);margin:0 8px;font-size:14px}.palette-item[aria-pressed=true]{border-color:var(--accent);box-shadow:inset 0 0 0 2px var(--accent)}.palette-icon{width:56px;height:56px}.palette-code{color:var(--muted);font-size:11px}.palette-name{text-align:center;white-space:normal;max-width:100%;min-height:2.4em;font-size:11px;line-height:1.2}.palette-name>span{display:inline-block}.overlap-mark{pointer-events:none}.overlap-mark svg{color:#ff7a00;filter:drop-shadow(0 0 2px #fff)drop-shadow(0 1px 2px #0006);width:28px;height:28px;display:block}.segmented{display:flex}.segmented button{border-radius:0}.segmented button:first-child{border-radius:10px 0 0 10px}.segmented button:last-child{border-radius:0 10px 10px 0;margin-left:-1px}.segmented button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}.scene-view{touch-action:none;inset:0;position:absolute!important}.rail .rail-off{opacity:.45}.car rect{fill:#fafafa;stroke:#1d5bb0;stroke-width:5px}.car-head rect{stroke:#d62828}.plan-view[data-phase=build] .trains{pointer-events:none;opacity:.6}.trains [data-selected] rect{fill:var(--selected)}.car-light{fill:#ffd23f}.toolbar .play[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#fff}@media (width<=720px){.toolbar .status{display:none}}.toolbar button[aria-label]{min-width:44px;font-size:20px}.toast{background:color-mix(in srgb, var(--text) 88%, transparent);color:var(--bg);pointer-events:none;border-radius:10px;padding:10px 16px;position:fixed;top:72px;left:50%;transform:translate(-50%)}
