:root{color-scheme:light dark;--bg:#f5f5f5;--card:#fff;--text:#333;--line:#ddd;--muted:#666}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.5 'Segoe UI',sans-serif}main{max-width:1150px;margin:24px auto;padding:0 18px}header{background:#ff6d00;color:white;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:24px;border-radius:20px}h1{margin:5px 0;font-size:28px}header a{color:white}small{font-size:11px;letter-spacing:.06em}p{color:var(--muted)}section,article{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:18px}.toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.toolbar input{flex:1;min-width:180px}button,input,select{font:inherit;padding:11px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--text);min-height:44px}button{cursor:pointer}button.primary,button[aria-pressed=true]{background:#ff6d00;color:white;border-color:#ff6d00}button:disabled{opacity:.45;cursor:default}#results{display:grid;gap:10px}article{display:flex;align-items:center;justify-content:space-between;gap:15px;overflow-wrap:anywhere}article p{margin:3px 0;font-size:13px}dialog{margin:auto;background:var(--card);color:var(--text);border:1px solid var(--line);border-top:4px solid #ff6d00;border-radius:15px;width:min(680px,calc(100vw - 24px));max-height:90dvh;overflow:auto;padding:24px}dialog::backdrop{background:#0009}#fields{display:grid;grid-template-columns:1fr 1fr;gap:16px}label{font-size:13px}label input{display:block;width:100%;margin-top:5px}footer{display:flex;gap:12px;margin-top:20px}#error{color:#d54324}button:focus-visible,input:focus-visible{outline:2px solid #ff6d00;outline-offset:2px}@media(prefers-color-scheme:dark){:root{--bg:#12161c;--card:#1f2329;--text:#f1f3f5;--line:#38414c;--muted:#b6bec8}}@media(max-width:600px){h1{font-size:23px}header{flex-wrap:wrap}#fields{grid-template-columns:1fr}input{font-size:16px}.toolbar input{flex-basis:100%}article{padding:12px}section{padding:12px}}
dialog{width:min(1120px,calc(100vw - 24px))}#rail-map{height:420px;border:1px solid var(--line);border-radius:12px;background:#e2e8ed;color:#182536;margin-top:12px}#map-tools{margin-bottom:22px}#map-tools p{font-size:13px}#connections{display:grid;grid-template-columns:1fr 1fr;gap:14px}#connections select{display:block;width:100%;margin-top:5px}.leaflet-container button{min-height:0}.leaflet-control a{color:#17232f}.leaflet-tooltip{color:#17232f}.leaflet-container{font-family:inherit}#map-status{min-height:24px}#route-tools[hidden],#connections[hidden]{display:none!important}@media(max-width:600px){#rail-map{height:340px}#connections{grid-template-columns:1fr}}
/* Persistent map and side editor, including touch layouts. */
html,body{height:100%;overflow:hidden}main{max-width:none;margin:0;padding:0;height:100dvh;display:flex;flex-direction:column}header{flex:none;border-radius:0;padding:12px 22px}header h1{font-size:22px;margin:2px 0}header small{font-size:10px}.split-workspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,430px);flex:1;min-height:0}.map-pane{position:relative;min-width:0;min-height:0;border:0;border-radius:0;padding:0;overflow:hidden}#rail-map{height:100%;width:100%;margin:0;border:0;border-radius:0}#map-status{position:absolute;bottom:25px;left:12px;right:12px;z-index:500;pointer-events:none;background:var(--card);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-size:12px;margin:0;box-shadow:0 2px 10px #0002}#map-status:empty{display:none}.side-pane{overflow-y:auto;min-width:0;background:var(--card);border-left:1px solid var(--line);padding:16px;overscroll-behavior:contain}.mode-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;position:sticky;top:-16px;background:var(--card);padding:8px 0;z-index:2}#status{font-size:12px;margin:8px 0 14px}#catalog,#editor{border:0;padding:0;background:transparent}#catalog .toolbar input{min-width:0;flex-basis:100%}#catalog #create{width:100%}#results article{padding:12px;align-items:start}#results article>div{min-width:0}#results article strong{font-size:14px}#results article button{font-size:12px;padding:10px}#results article p{font-size:11px}.pagination{margin-top:16px;justify-content:space-between;font-size:12px}.editor-heading{display:flex;align-items:center;justify-content:space-between;gap:8px}.editor-heading h2{font-size:19px;margin:8px 0}.editor-heading button{font-size:12px;white-space:nowrap}#map-help{font-size:12px}#route-tools{gap:8px;margin-bottom:18px}#draw-mode{width:100%}#fields{grid-template-columns:minmax(0,1fr);gap:12px}#connections{grid-template-columns:minmax(0,1fr);margin-top:18px}#connections select{max-width:100%}#editor footer{position:sticky;bottom:-16px;padding:12px 0;background:var(--card);border-top:1px solid var(--line)}#save{width:100%}[hidden]{display:none!important}@media(max-width:760px){header{padding:9px 14px}header h1{font-size:17px}header small{font-size:9px}header a{font-size:13px}.split-workspace{grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(180px,38%) minmax(0,1fr)}.side-pane{border-left:0;border-top:1px solid var(--line);padding:12px}.mode-tabs{top:-12px}#rail-map{height:100%}#map-status{left:8px;right:8px;bottom:22px;font-size:11px;padding:6px 8px}#editor footer{bottom:-12px}#route-tools button{flex:1}#fields input,#connections select,#draw-mode{font-size:16px}}@media(max-height:500px) and (orientation:landscape){.split-workspace{grid-template-columns:minmax(0,1fr) minmax(290px,42%);grid-template-rows:minmax(0,1fr)}header{padding:5px 12px}header small{display:none}}
.endpoint-control{position:absolute;top:10px;right:10px;z-index:650;display:flex;align-items:center;gap:7px;background:var(--card);padding:8px 10px;border-radius:9px;border:1px solid var(--line);font-size:12px;box-shadow:0 2px 8px #0002}.endpoint-control input{width:18px;min-height:18px;margin:0}.leaflet-endpoints-pane{pointer-events:none}.leaflet-endpoints-pane path{pointer-events:auto;cursor:pointer}@media(max-width:760px){.endpoint-control{font-size:11px;padding:6px;top:8px;right:8px}}
.leaflet-endpoints-pane canvas{pointer-events:auto}

#route-tools button{flex:1 1 calc(50% - 8px)}
