.planning-route-editor { position:absolute;top:76px;right:20px;z-index:4;width:350px;max-height:calc(100dvh - 112px);overflow:auto;padding:18px 22px; }
.planning-route-editor > summary { cursor:pointer;font:800 20px 'Futura PT Heading',sans-serif;text-transform:uppercase; }
.planning-route-editor-body { padding-top:16px; }
.planning-route-editor-ports { display:grid;grid-template-columns:1fr 1fr;gap:10px; }
.planning-route-editor label { display:block;font-size:11px; }
.planning-route-editor input { width:100%;margin:5px 0 12px; }
.planning-route-editor-title { display:block;margin:0 0 14px;font:800 16px 'Futura PT Heading',sans-serif;overflow-wrap:anywhere; }
.planning-route-editor-actions { display:flex;flex-wrap:wrap;gap:6px; }
.planning-route-editor.chart-panel button { border-color:#96723d50;font-size:11px; }
.planning-route-editor.chart-panel button[data-action=new], .planning-route-editor.chart-panel button[data-action=finish], .planning-route-editor.chart-panel button[data-action=copy] { background:#0c0a09;color:#fff; }
.planning-route-editor-status { margin:12px 0 0;font-size:11px; }
.planning-route-editor-status:empty { display:none; }
.planning-route-editor-output { margin-top:12px; }
.planning-route-editor-output summary { cursor:pointer;font-size:11px; }
.planning-route-editor textarea { width:100%;height:120px;margin-top:8px;resize:vertical;font:11px/1.5 monospace; }
@media(max-width:940px) { .planning-route-editor { right:16px;width:310px; } }
@media(max-width:639px) { .planning-route-editor { top:70px;right:12px;left:12px;width:auto;max-height:42dvh;padding:16px 20px; } }
@media(max-height:500px) and (min-width:640px) { .planning-route-editor { top:70px;width:290px;max-height:calc(100dvh - 90px);padding:14px 18px; } }
.planning-route-editor-ports { grid-template-columns:1fr;gap:2px; }
.planning-route-editor-ports > label { font:800 11px 'Futura PT Heading',sans-serif;letter-spacing:.04em; }
.planning-route-editor-ports input { font:400 12px/1.5 'Inter',sans-serif;letter-spacing:0; }
.port-picker-shell { position:fixed;z-index:20; }
.port-picker-popover { overflow-y:auto;overscroll-behavior:contain;padding:16px 18px;scrollbar-gutter:stable; }
.port-picker-status { margin:0 0 7px;font-size:11px; }
.port-picker-status:empty { display:none; }
.port-picker-popover [role=option] { padding:9px 8px;cursor:pointer;border-radius:4px; }
.port-picker-popover [role=option] > span { display:block;font-size:12px;font-weight:500; }
.port-picker-popover [role=option] > small { display:block;font-size:10px;opacity:.8;margin-top:2px; }
.port-picker-popover [role=option]:hover,.port-picker-popover [aria-selected=true] { background:#96723d24; }
.port-picker-popover [aria-disabled=true] { opacity:.55;cursor:default; }
.port-picker-popover .port-picker-create { width:100%;text-align:left;margin-top:7px;border-top:1px solid #96723d50;border-radius:0;padding-top:12px;font-size:11px; }
.port-picker-form { display:grid;grid-template-columns:1fr 1fr;gap:10px; }
.port-picker-form[hidden] { display:none; }
.port-picker-form > label { font-size:11px;min-width:0; }
.port-picker-form > label:nth-child(-n+2) { grid-column:1/-1; }
.port-picker-form :is(input,select) { display:block;width:100%;margin-top:4px; }
.port-picker-form > button,.port-create-matches,.port-picker-actions { grid-column:1/-1; }
.port-picker-actions { display:flex;gap:5px;justify-content:space-between; }
.port-picker-actions button[type=submit] { color:#fff;background:#0c0a09; }
.port-picker-form button { font-size:11px; }
.port-create-matches { display:grid;gap:3px; }
.port-create-matches:empty { display:none; }
.port-create-matches > button { text-align:left; }
.passage-builder { width:370px; }
.passage-builder-workflow { padding-top:12px; }
.passage-builder h3,.passage-builder legend { font:800 12px 'Futura PT Heading',sans-serif;letter-spacing:.06em;margin:14px 0 8px; }
.passage-builder fieldset { border:0;border-top:1px solid #96723d40;padding:0;margin:14px 0;min-width:0; }
.passage-builder :is(input,select,textarea) { width:100%;font:12px/1.4 'Inter',sans-serif;padding:7px;border:1px solid #96723d60;background:#fff7e960;color:#332519;border-radius:3px; }
.passage-builder input[type=checkbox] { width:auto;margin-left:10px;vertical-align:middle; }
.passage-builder label { margin:6px 0; }
.passage-builder textarea { font:12px/1.5 'Inter',sans-serif;height:100px; }
.builder-search-results { max-height:220px;overflow:auto; }
.builder-search-results button { display:block;width:100%;text-align:left;margin:4px 0; }
.builder-search-results :is(strong,small) { display:block; }
/* Preview cards and their responsive layout come directly from passage-popup. */
.builder-preview-mode .map-modes { display:none; }
.builder-draft-review.map-controls { transform:none;z-index:5;top:16px;left:16px;bottom:auto;width:280px;max-height:30dvh;padding:14px 18px; }
.builder-draft-review[hidden] { display:none; }
.builder-draft-review strong { font:800 14px 'Futura PT Heading',sans-serif; }
.builder-draft-review p { font-size:11px;line-height:1.4;margin:5px 0; }
.builder-draft-review .builder-draft-note { font-size:10px; }
.builder-draft-review button { background:#0c0a09;color:white;margin-top:5px; }
@media(max-width:639px){.builder-draft-review.map-controls{left:12px;top:12px;width:230px;}.builder-draft-review .builder-draft-note{display:none;}}
.builder-search-results small { font-size:10px;margin-top:4px;opacity:.8; }
.builder-route-info,.builder-preview { display:block;white-space:pre-line;font-size:12px;line-height:1.6;margin:12px 0; }
.builder-status { font-size:11px;line-height:1.5; }
.builder-loading { position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:10px;margin:12px 0;padding:14px;background:#fff8e9;border:1px solid #96723d60;border-radius:5px;font:600 13px/1.5 'Inter',sans-serif;box-shadow:0 3px 12px #49362218; }
.builder-loading::before { content:'';flex:0 0 18px;height:18px;border:2px solid #96723d40;border-top-color:#493622;border-radius:50%;animation:builder-loading-spin .8s linear infinite; }
@keyframes builder-loading-spin { to { transform:rotate(360deg); } }
@media(prefers-reduced-motion:reduce){.builder-loading::before{animation:none;}}
.passage-builder button[type=submit] { width:100%;background:#17110c;color:#fff;margin:8px 0; }
.passage-builder [hidden] { display:none!important; }
@media(max-width:639px){.passage-builder{width:auto;max-height:55dvh;}}
.passage-builder .builder-field { display:block;font-size:11px;margin:8px 0; }
.builder-endpoints,.builder-calculated { display:grid;grid-template-columns:1fr 1fr;gap:7px 10px;margin:10px 0;font-size:11px;line-height:1.5; }
.builder-endpoints dt,.builder-calculated dt { color:#67553c; }
.builder-endpoints dd,.builder-calculated dd { margin:0;text-align:right;overflow-wrap:anywhere; }
.builder-calculated { background:#96723d0e;border-top:1px solid #96723d40;padding-top:10px; }
.builder-calculated-note { display:block;color:#67553c;font-size:10px;margin-top:14px; }
.builder-selected-links { display:flex;flex-wrap:wrap;gap:5px; }
.builder-link-chip { display:inline-flex;align-items:center;gap:6px;border:1px solid #96723d50;border-radius:4px;padding:4px 6px;font-size:11px;max-width:100%; }
.builder-link-chip span { overflow-wrap:anywhere; }
.builder-link-chip button { flex-shrink:0;padding:2px 5px; }
.builder-link-chip img,.builder-search-results img { width:48px;height:34px;object-fit:cover;border-radius:2px;margin-right:6px;vertical-align:middle; }

.builder-login{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:min(420px,calc(100% - 32px));padding:30px;}
.builder-login h1{font:800 24px 'Futura PT Heading',sans-serif;}
.builder-login p{font:14px/1.6 'Inter',sans-serif;}
.builder-login-button{display:block;margin-top:22px;padding:14px;background:#0c0a09;color:white;border-radius:6px;text-align:center;text-decoration:none;font:800 13px 'Futura PT Heading',sans-serif;}
.builder-account{position:absolute;z-index:7;top:12px;right:20px;display:flex;align-items:center;gap:10px;font:12px 'Inter',sans-serif;background:#fff;padding:8px 12px;border-radius:6px;}
.builder-account button{border:0;background:#0c0a09;color:white;padding:6px 10px;border-radius:4px;cursor:pointer;}
.builder-preview-mode .builder-account{display:none;}
