: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[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}.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}.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;font-size:11px;line-height:1.2}.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}.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%)}
